From 91c408a200c7def78707191dc9a5e900940814f3 Mon Sep 17 00:00:00 2001 From: Flone-dnb Date: Sun, 20 Oct 2024 18:52:39 +0000 Subject: [PATCH] deploy: 225b3298bc75f9e557865e1637f4be580055d67f --- .nojekyll | 0 AABB_8h_source.html | 136 + CameraManager_8h_source.html | 154 + CameraNode_8h_source.html | 174 + CameraProperties_8h_source.html | 289 ++ ComputeShaderInterface_8h_source.html | 254 + Cone_8h_source.html | 139 + ConfigManager_8h_source.html | 234 + DescriptorConstants_8hpp_source.html | 119 + DescriptorSetLayoutGenerator_8h_source.html | 206 + DesktopNotification_8h_source.html | 127 + DirectXDescriptorHeap_8h_source.html | 379 ++ DirectXDescriptorType_8hpp_source.html | 121 + DirectXDescriptor_8h_source.html | 181 + DirectXFrameResource_8h_source.html | 153 + DirectXPso_8h_source.html | 238 + DirectXRenderer_8h_source.html | 453 ++ DirectXResourceManager_8h_source.html | 270 + DirectXResource_8h_source.html | 239 + ...XShadowMapArrayIndexManager_8h_source.html | 183 + DirectionalLightNode_8h_source.html | 233 + ...eShaderResourceArrayManager_8h_source.html | 172 + ...CpuWriteShaderResourceArray_8h_source.html | 298 ++ EditorCameraNode_8h_source.html | 164 + EditorGameInstance_8h_source.html | 164 + EditorInputEventIds_8hpp_source.html | 128 + EditorNodeCreationHelpers_8hpp_source.html | 133 + EngineShaderConstantMacros_8hpp_source.html | 139 + EngineShaderNames_8hpp_source.html | 154 + EngineShaders_8hpp_source.html | 223 + EnvironmentNode_8h_source.html | 147 + Error_8h_source.html | 185 + FieldSerializerManager_8h_source.html | 148 + FileDialog_8h_source.html | 139 + FrameResourceManager_8h_source.html | 209 + FrameResource_8h_source.html | 138 + Frustum_8h_source.html | 152 + GLFW_8hpp_source.html | 172 + GLMath_8hpp_source.html | 125 + GameInstance_8h_source.html | 291 ++ GameManager_8h_source.html | 334 ++ GlmVecFieldSerializer_8h_source.html | 182 + ...haderResourceBindingManager_8h_source.html | 178 + GlobalShaderResourceBinding_8h_source.html | 183 + Globals_8h_source.html | 170 + GlslComputeShaderInterface_8h_source.html | 161 + ...GlobalShaderResourceBinding_8h_source.html | 149 + GlslShaderCacheManager_8h_source.html | 144 + ...haderTextureResourceBinding_8h_source.html | 241 + GlslShader_8h_source.html | 200 + GlslVertexFormatDescription_8h_source.html | 149 + GpuResourceManager_8h_source.html | 262 + GpuResource_8h_source.html | 172 + GuidProperty_8h_source.html | 142 + HlslComputeShaderInterface_8h_source.html | 215 + ...GlobalShaderResourceBinding_8h_source.html | 149 + HlslShaderCacheManager_8h_source.html | 162 + ...haderTextureResourceBinding_8h_source.html | 238 + HlslShader_8h_source.html | 267 + HlslVertexFormatDescription_8h_source.html | 138 + IBinaryFieldSerializer_8hpp_source.html | 149 + IFieldSerializer_8hpp_source.html | 171 + InputManager_8h_source.html | 270 + KeyboardKey_8hpp_source.html | 375 ++ KtxLoadingCallbackManager_8h_source.html | 171 + LightingShaderResourceManager_8h_source.html | 779 +++ Logger_8h_source.html | 184 + Material_8h_source.html | 399 ++ MathHelpers_8hpp_source.html | 296 ++ MeshDataBinaryFieldSerializer_8h_source.html | 143 + MeshData_8h_source.html | 215 + MeshImporter_8h_source.html | 132 + ...GlslVertexFormatDescription_8h_source.html | 131 + ...HlslVertexFormatDescription_8h_source.html | 131 + MeshNode_8h_source.html | 290 ++ MessageBox_8h_source.html | 158 + MouseButton_8hpp_source.html | 124 + NodeFunction_8hpp_source.html | 183 + NodeNotificationBroadcaster_8hpp_source.html | 407 ++ Node_8h_source.html | 448 ++ OpenLinkInBrowser_8h_source.html | 121 + PipelineConfiguration_8h_source.html | 253 + PipelineManager_8h_source.html | 335 ++ PipelineRegistry_8hpp_source.html | 141 + ...ineShaderConstantsManager_8hpp_source.html | 208 + PipelineSharedPtr_8h_source.html | 176 + PipelineType_8hpp_source.html | 127 + Pipeline_8h_source.html | 253 + Plane_8h_source.html | 131 + PointLightNode_8h_source.html | 248 + PrimitiveFieldSerializer_8h_source.html | 160 + PrimitiveMeshGenerator_8h_source.html | 124 + Profiler_8hpp_source.html | 154 + ProjectPaths_8h_source.html | 177 + RenderSettings_8h_source.html | 262 + RenderStatistics_8h_source.html | 235 + Renderer_8h_source.html | 569 +++ RootSignatureGenerator_8h_source.html | 293 ++ ...izableObjectFieldSerializer_8h_source.html | 224 + Serializable_8h_source.html | 859 ++++ SerializeProperty_8h_source.html | 143 + ShaderArrayIndexManager_8h_source.html | 192 + ShaderCacheManager_8h_source.html | 181 + ...WriteResourceBindingManager_8h_source.html | 197 + ...iteResourceBindingUniquePtr_8h_source.html | 152 + ShaderCpuWriteResourceBinding_8h_source.html | 236 + ShaderDescription_8h_source.html | 279 ++ ShaderFilesystemPaths_8hpp_source.html | 143 + ShaderLightArray_8h_source.html | 286 ++ ...LightsInFrustumSingleType_8hpp_source.html | 138 + ShaderMacro_8h_source.html | 212 + ShaderManager_8h_source.html | 229 + ShaderPack_8h_source.html | 206 + ShaderResourceBinding_8h_source.html | 166 + ...xtureResourceBindingManager_8h_source.html | 177 + ...ureResourceBindingUniquePtr_8h_source.html | 149 + ShaderUser_8h_source.html | 152 + Shader_8h_source.html | 245 + ShadowMapArrayIndexManager_8h_source.html | 186 + ShadowMapHandle_8h_source.html | 207 + ShadowMapManager_8h_source.html | 262 + ShadowMapType_8hpp_source.html | 155 + SpatialNode_8h_source.html | 256 + SpecialRootParameterSlot_8hpp_source.html | 132 + Sphere_8h_source.html | 133 + SpotlightNode_8h_source.html | 277 ++ StdHashes_8hpp_source.html | 131 + StringFieldSerializer_8h_source.html | 164 + TextureHandle_8h_source.html | 158 + TextureImporter_8h_source.html | 151 + TextureManager_8h_source.html | 187 + ThreadPool_8h_source.html | 157 + Timer_8h_source.html | 227 + UniqueValueGenerator_8h_source.html | 135 + UnorderedMapFieldSerializer_8h_source.html | 160 + UploadBuffer_8h_source.html | 158 + VectorFieldSerializer_8h_source.html | 167 + VertexFormat_8h_source.html | 132 + VulkanAlignmentConstants_8hpp_source.html | 122 + VulkanFrameResource_8h_source.html | 143 + VulkanPipeline_8h_source.html | 249 + VulkanRenderer_8h_source.html | 661 +++ VulkanResourceManager_8h_source.html | 245 + VulkanResource_8h_source.html | 268 + ...nShadowMapArrayIndexManager_8h_source.html | 185 + Window_8h_source.html | 448 ++ World_8h_source.html | 258 + annotated.html | 375 ++ annotated_dup.js | 175 + bc_s.png | Bin 0 -> 676 bytes bc_sd.png | Bin 0 -> 635 bytes bdwn.png | Bin 0 -> 147 bytes classes.html | 173 + classne_1_1ActionState-members.html | 114 + classne_1_1ActionState.html | 197 + classne_1_1ActionState.js | 6 + classne_1_1AxisState-members.html | 116 + classne_1_1AxisState.html | 242 + classne_1_1AxisState.js | 8 + classne_1_1CameraManager-members.html | 119 + classne_1_1CameraManager.html | 327 ++ classne_1_1CameraManager.js | 10 + classne_1_1CameraNode-members.html | 258 + classne_1_1CameraNode.html | 818 ++++ classne_1_1CameraNode.js | 20 + classne_1_1CameraNode.png | Bin 0 -> 1604 bytes classne_1_1CameraProperties-members.html | 131 + classne_1_1CameraProperties.html | 619 +++ classne_1_1CameraProperties.js | 22 + ...1_1ColorPipelineConfiguration-members.html | 130 + classne_1_1ColorPipelineConfiguration.html | 427 ++ classne_1_1ColorPipelineConfiguration.js | 11 + classne_1_1ColorPipelineConfiguration.png | Bin 0 -> 761 bytes ...ne_1_1CompressonatorSingleton-members.html | 115 + classne_1_1CompressonatorSingleton.html | 192 + classne_1_1CompressonatorSingleton.js | 5 + ...1ComputePipelineConfiguration-members.html | 128 + classne_1_1ComputePipelineConfiguration.html | 283 ++ classne_1_1ComputePipelineConfiguration.js | 7 + classne_1_1ComputePipelineConfiguration.png | Bin 0 -> 790 bytes ...sne_1_1ComputeShaderInterface-members.html | 137 + classne_1_1ComputeShaderInterface.html | 942 ++++ classne_1_1ComputeShaderInterface.js | 26 + classne_1_1ComputeShaderInterface.png | Bin 0 -> 1064 bytes classne_1_1ConfigManager-members.html | 134 + classne_1_1ConfigManager.html | 965 ++++ classne_1_1ConfigManager.js | 25 + ...tinuousDirectXDescriptorRange-members.html | 131 + ...e_1_1ContinuousDirectXDescriptorRange.html | 566 +++ ...sne_1_1ContinuousDirectXDescriptorRange.js | 18 + ...ayedPipelineResourcesCreation-members.html | 120 + ...e_1_1DelayedPipelineResourcesCreation.html | 263 + ...sne_1_1DelayedPipelineResourcesCreation.js | 7 + ...1_1DepthPipelineConfiguration-members.html | 128 + classne_1_1DepthPipelineConfiguration.html | 363 ++ classne_1_1DepthPipelineConfiguration.js | 9 + classne_1_1DepthPipelineConfiguration.png | Bin 0 -> 783 bytes ...1DescriptorSetLayoutGenerator-members.html | 117 + classne_1_1DescriptorSetLayoutGenerator.html | 350 ++ classne_1_1DescriptorSetLayoutGenerator.js | 9 + classne_1_1DesktopNotification-members.html | 113 + classne_1_1DesktopNotification.html | 262 + classne_1_1DesktopNotification.js | 6 + classne_1_1DirectXDescriptor-members.html | 127 + classne_1_1DirectXDescriptor.html | 476 ++ classne_1_1DirectXDescriptor.js | 14 + classne_1_1DirectXDescriptorHeap-members.html | 146 + classne_1_1DirectXDescriptorHeap.html | 1200 +++++ classne_1_1DirectXDescriptorHeap.js | 34 + classne_1_1DirectXPso-members.html | 164 + classne_1_1DirectXPso.html | 637 +++ classne_1_1DirectXPso.js | 15 + classne_1_1DirectXPso.png | Bin 0 -> 732 bytes classne_1_1DirectXRenderer-members.html | 272 ++ classne_1_1DirectXRenderer.html | 2823 +++++++++++ classne_1_1DirectXRenderer.js | 84 + classne_1_1DirectXRenderer.png | Bin 0 -> 529 bytes classne_1_1DirectXResource-members.html | 143 + classne_1_1DirectXResource.html | 704 +++ classne_1_1DirectXResource.js | 17 + classne_1_1DirectXResource.png | Bin 0 -> 557 bytes ...sne_1_1DirectXResourceManager-members.html | 153 + classne_1_1DirectXResourceManager.html | 1211 +++++ classne_1_1DirectXResourceManager.js | 26 + classne_1_1DirectXResourceManager.png | Bin 0 -> 784 bytes ...ctXShadowMapArrayIndexManager-members.html | 138 + ..._1_1DirectXShadowMapArrayIndexManager.html | 583 +++ ...ne_1_1DirectXShadowMapArrayIndexManager.js | 14 + ...e_1_1DirectXShadowMapArrayIndexManager.png | Bin 0 -> 946 bytes classne_1_1DirectionalLightNode-members.html | 262 + classne_1_1DirectionalLightNode.html | 1016 ++++ classne_1_1DirectionalLightNode.js | 28 + classne_1_1DirectionalLightNode.png | Bin 0 -> 1386 bytes ...icCpuWriteShaderResourceArray-members.html | 137 + ...1_1DynamicCpuWriteShaderResourceArray.html | 845 ++++ ...e_1_1DynamicCpuWriteShaderResourceArray.js | 26 + ...iteShaderResourceArrayManager-members.html | 122 + ...micCpuWriteShaderResourceArrayManager.html | 359 ++ ...namicCpuWriteShaderResourceArrayManager.js | 10 + ...uWriteShaderResourceArraySlot-members.html | 122 + ...ynamicCpuWriteShaderResourceArraySlot.html | 371 ++ ...1DynamicCpuWriteShaderResourceArraySlot.js | 10 + classne_1_1EditorCameraNode-members.html | 269 + classne_1_1EditorCameraNode.html | 756 +++ classne_1_1EditorCameraNode.js | 16 + classne_1_1EditorCameraNode.png | Bin 0 -> 1593 bytes classne_1_1EditorGameInstance-members.html | 161 + classne_1_1EditorGameInstance.html | 476 ++ classne_1_1EditorGameInstance.js | 12 + classne_1_1EditorGameInstance.png | Bin 0 -> 643 bytes ..._1_1EditorNodeCreationHelpers-members.html | 112 + classne_1_1EditorNodeCreationHelpers.html | 164 + classne_1_1EditorNodeCreationHelpers.js | 4 + ...1_1EngineShaderConstantMacros-members.html | 111 + classne_1_1EngineShaderConstantMacros.html | 124 + classne_1_1EngineShaderConstantMacros.js | 4 + classne_1_1EngineShaderNames-members.html | 111 + classne_1_1EngineShaderNames.html | 128 + classne_1_1EngineShaderNames.js | 6 + classne_1_1EngineShaders-members.html | 112 + classne_1_1EngineShaders.html | 180 + classne_1_1EngineShaders.js | 7 + classne_1_1EnvironmentNode-members.html | 214 + classne_1_1EnvironmentNode.html | 464 ++ classne_1_1EnvironmentNode.js | 9 + classne_1_1EnvironmentNode.png | Bin 0 -> 969 bytes classne_1_1Error-members.html | 124 + classne_1_1Error.html | 489 ++ classne_1_1Error.js | 15 + ...sne_1_1FieldSerializerManager-members.html | 118 + classne_1_1FieldSerializerManager.html | 337 ++ classne_1_1FieldSerializerManager.js | 10 + classne_1_1FileDialog-members.html | 113 + classne_1_1FileDialog.html | 302 ++ classne_1_1FileDialog.js | 6 + classne_1_1FrameResourceManager-members.html | 126 + classne_1_1FrameResourceManager.html | 481 ++ classne_1_1FrameResourceManager.js | 15 + classne_1_1GLFW-members.html | 115 + classne_1_1GLFW.html | 223 + classne_1_1GLFW.js | 6 + classne_1_1GameInstance-members.html | 155 + classne_1_1GameInstance.html | 1506 ++++++ classne_1_1GameInstance.js | 43 + classne_1_1GameInstance.png | Bin 0 -> 647 bytes classne_1_1GameManager-members.html | 168 + classne_1_1GameManager.html | 1830 +++++++ classne_1_1GameManager.js | 57 + classne_1_1GlmVecFieldSerializer-members.html | 126 + classne_1_1GlmVecFieldSerializer.html | 655 +++ classne_1_1GlmVecFieldSerializer.js | 15 + classne_1_1GlmVecFieldSerializer.png | Bin 0 -> 696 bytes ..._1GlobalShaderResourceBinding-members.html | 126 + classne_1_1GlobalShaderResourceBinding.html | 486 ++ classne_1_1GlobalShaderResourceBinding.js | 12 + classne_1_1GlobalShaderResourceBinding.png | Bin 0 -> 1140 bytes ...lShaderResourceBindingManager-members.html | 124 + ...1_1GlobalShaderResourceBindingManager.html | 471 ++ ...e_1_1GlobalShaderResourceBindingManager.js | 13 + classne_1_1Globals-members.html | 122 + classne_1_1Globals.html | 452 ++ classne_1_1Globals.js | 15 + ...1_1GlslComputeShaderInterface-members.html | 143 + classne_1_1GlslComputeShaderInterface.html | 354 ++ classne_1_1GlslComputeShaderInterface.js | 6 + classne_1_1GlslComputeShaderInterface.png | Bin 0 -> 790 bytes ...slGlobalShaderResourceBinding-members.html | 128 + ...ne_1_1GlslGlobalShaderResourceBinding.html | 262 + classne_1_1GlslGlobalShaderResourceBinding.js | 5 + ...sne_1_1GlslGlobalShaderResourceBinding.png | Bin 0 -> 858 bytes classne_1_1GlslShader-members.html | 151 + classne_1_1GlslShader.html | 666 +++ classne_1_1GlslShader.js | 16 + classne_1_1GlslShader.png | Bin 0 -> 493 bytes ...sne_1_1GlslShaderCacheManager-members.html | 127 + classne_1_1GlslShaderCacheManager.html | 282 ++ classne_1_1GlslShaderCacheManager.js | 6 + classne_1_1GlslShaderCacheManager.png | Bin 0 -> 782 bytes ...lShaderTextureResourceBinding-members.html | 129 + ...e_1_1GlslShaderTextureResourceBinding.html | 619 +++ ...sne_1_1GlslShaderTextureResourceBinding.js | 15 + ...ne_1_1GlslShaderTextureResourceBinding.png | Bin 0 -> 1281 bytes ..._1GlslVertexFormatDescription-members.html | 121 + classne_1_1GlslVertexFormatDescription.html | 333 ++ classne_1_1GlslVertexFormatDescription.js | 9 + classne_1_1GlslVertexFormatDescription.png | Bin 0 -> 1262 bytes classne_1_1GpuResource-members.html | 125 + classne_1_1GpuResource.html | 417 ++ classne_1_1GpuResource.js | 13 + classne_1_1GpuResource.png | Bin 0 -> 825 bytes classne_1_1GpuResourceManager-members.html | 138 + classne_1_1GpuResourceManager.html | 1021 ++++ classne_1_1GpuResourceManager.js | 26 + classne_1_1GpuResourceManager.png | Bin 0 -> 1086 bytes classne_1_1Guid-members.html | 116 + classne_1_1Guid.html | 243 + classne_1_1Guid.js | 7 + classne_1_1Guid.png | Bin 0 -> 444 bytes ...1_1HlslComputeShaderInterface-members.html | 149 + classne_1_1HlslComputeShaderInterface.html | 509 ++ classne_1_1HlslComputeShaderInterface.js | 12 + classne_1_1HlslComputeShaderInterface.png | Bin 0 -> 792 bytes ...slGlobalShaderResourceBinding-members.html | 128 + ...ne_1_1HlslGlobalShaderResourceBinding.html | 262 + classne_1_1HlslGlobalShaderResourceBinding.js | 5 + ...sne_1_1HlslGlobalShaderResourceBinding.png | Bin 0 -> 855 bytes classne_1_1HlslShader-members.html | 168 + classne_1_1HlslShader.html | 1143 +++++ classne_1_1HlslShader.js | 33 + classne_1_1HlslShader.png | Bin 0 -> 490 bytes ...sne_1_1HlslShaderCacheManager-members.html | 128 + classne_1_1HlslShaderCacheManager.html | 318 ++ classne_1_1HlslShaderCacheManager.js | 8 + classne_1_1HlslShaderCacheManager.png | Bin 0 -> 778 bytes ...lShaderTextureResourceBinding-members.html | 128 + ...e_1_1HlslShaderTextureResourceBinding.html | 561 +++ ...sne_1_1HlslShaderTextureResourceBinding.js | 13 + ...ne_1_1HlslShaderTextureResourceBinding.png | Bin 0 -> 1274 bytes ..._1HlslVertexFormatDescription-members.html | 118 + classne_1_1HlslVertexFormatDescription.html | 239 + classne_1_1HlslVertexFormatDescription.js | 6 + classne_1_1HlslVertexFormatDescription.png | Bin 0 -> 1239 bytes ...sne_1_1IBinaryFieldSerializer-members.html | 115 + classne_1_1IBinaryFieldSerializer.html | 290 ++ classne_1_1IBinaryFieldSerializer.js | 6 + classne_1_1IBinaryFieldSerializer.png | Bin 0 -> 839 bytes classne_1_1IFieldSerializer-members.html | 117 + classne_1_1IFieldSerializer.html | 470 ++ classne_1_1IFieldSerializer.js | 8 + classne_1_1IFieldSerializer.png | Bin 0 -> 2153 bytes classne_1_1InputManager-members.html | 139 + classne_1_1InputManager.html | 953 ++++ classne_1_1InputManager.js | 28 + classne_1_1KeyboardModifiers-members.html | 119 + classne_1_1KeyboardModifiers.html | 363 ++ classne_1_1KeyboardModifiers.js | 11 + ..._1_1KtxLoadingCallbackManager-members.html | 121 + classne_1_1KtxLoadingCallbackManager.html | 570 +++ classne_1_1KtxLoadingCallbackManager.js | 15 + ...LightingShaderResourceManager-members.html | 157 + classne_1_1LightingShaderResourceManager.html | 1445 ++++++ classne_1_1LightingShaderResourceManager.js | 51 + classne_1_1Logger-members.html | 130 + classne_1_1Logger.html | 606 +++ classne_1_1Logger.js | 19 + classne_1_1Material-members.html | 200 + classne_1_1Material.html | 2114 ++++++++ classne_1_1Material.js | 69 + classne_1_1Material.png | Bin 0 -> 706 bytes classne_1_1MathHelpers-members.html | 120 + classne_1_1MathHelpers.html | 506 ++ classne_1_1MathHelpers.js | 12 + classne_1_1MeshData-members.html | 145 + classne_1_1MeshData.html | 416 ++ classne_1_1MeshData.js | 12 + classne_1_1MeshData.png | Bin 0 -> 706 bytes ...MeshDataBinaryFieldSerializer-members.html | 118 + classne_1_1MeshDataBinaryFieldSerializer.html | 326 ++ classne_1_1MeshDataBinaryFieldSerializer.js | 7 + classne_1_1MeshDataBinaryFieldSerializer.png | Bin 0 -> 827 bytes classne_1_1MeshImporter-members.html | 112 + classne_1_1MeshImporter.html | 185 + classne_1_1MeshImporter.js | 4 + classne_1_1MeshNode-members.html | 277 ++ classne_1_1MeshNode.html | 1518 ++++++ classne_1_1MeshNode.js | 43 + classne_1_1MeshNode.png | Bin 0 -> 1114 bytes ...deGlslVertexFormatDescription-members.html | 123 + ..._1MeshNodeGlslVertexFormatDescription.html | 245 + ..._1_1MeshNodeGlslVertexFormatDescription.js | 6 + ...1_1MeshNodeGlslVertexFormatDescription.png | Bin 0 -> 1253 bytes ...deHlslVertexFormatDescription-members.html | 120 + ..._1MeshNodeHlslVertexFormatDescription.html | 209 + ..._1_1MeshNodeHlslVertexFormatDescription.js | 5 + ...1_1MeshNodeHlslVertexFormatDescription.png | Bin 0 -> 1224 bytes classne_1_1MessageBox-members.html | 114 + classne_1_1MessageBox.html | 344 ++ classne_1_1MessageBox.js | 7 + classne_1_1Node-members.html | 210 + classne_1_1Node.html | 2448 ++++++++++ classne_1_1Node.js | 78 + classne_1_1Node.png | Bin 0 -> 3819 bytes classne_1_1NodeFunction.html | 111 + ...ype_07FunctionArgs_8_8_8_08_4-members.html | 120 + ...nReturnType_07FunctionArgs_8_8_8_08_4.html | 456 ++ ...ionReturnType_07FunctionArgs_8_8_8_08_4.js | 12 + classne_1_1NodeNotificationBroadcaster.html | 111 + ...deNotificationBroadcasterBase-members.html | 117 + ...ne_1_1NodeNotificationBroadcasterBase.html | 223 + classne_1_1NodeNotificationBroadcasterBase.js | 5 + ...sne_1_1NodeNotificationBroadcasterBase.png | Bin 0 -> 1270 bytes ...ype_07FunctionArgs_8_8_8_08_4-members.html | 132 + ...nReturnType_07FunctionArgs_8_8_8_08_4.html | 588 +++ ...ionReturnType_07FunctionArgs_8_8_8_08_4.js | 16 + ...onReturnType_07FunctionArgs_8_8_8_08_4.png | Bin 0 -> 1267 bytes classne_1_1OpenLinkInBrowser-members.html | 111 + classne_1_1OpenLinkInBrowser.html | 159 + classne_1_1OpenLinkInBrowser.js | 4 + classne_1_1Pipeline-members.html | 152 + classne_1_1Pipeline.html | 1042 ++++ classne_1_1Pipeline.js | 30 + classne_1_1Pipeline.png | Bin 0 -> 1069 bytes classne_1_1PipelineConfiguration-members.html | 124 + classne_1_1PipelineConfiguration.html | 517 ++ classne_1_1PipelineConfiguration.js | 15 + classne_1_1PipelineConfiguration.png | Bin 0 -> 1377 bytes classne_1_1PipelineManager-members.html | 136 + classne_1_1PipelineManager.html | 860 ++++ classne_1_1PipelineManager.js | 24 + ...ipelineShaderConstantsManager-members.html | 122 + ...sne_1_1PipelineShaderConstantsManager.html | 421 ++ classne_1_1PipelineShaderConstantsManager.js | 13 + classne_1_1PipelineSharedPtr-members.html | 129 + classne_1_1PipelineSharedPtr.html | 658 +++ classne_1_1PipelineSharedPtr.js | 19 + classne_1_1PointLightNode-members.html | 268 + classne_1_1PointLightNode.html | 1184 +++++ classne_1_1PointLightNode.js | 34 + classne_1_1PointLightNode.png | Bin 0 -> 1193 bytes ...e_1_1PrimitiveFieldSerializer-members.html | 119 + classne_1_1PrimitiveFieldSerializer.html | 475 ++ classne_1_1PrimitiveFieldSerializer.js | 8 + classne_1_1PrimitiveFieldSerializer.png | Bin 0 -> 688 bytes ...sne_1_1PrimitiveMeshGenerator-members.html | 112 + classne_1_1PrimitiveMeshGenerator.html | 160 + classne_1_1PrimitiveMeshGenerator.js | 4 + classne_1_1ProjectPaths-members.html | 129 + classne_1_1ProjectPaths.html | 588 +++ classne_1_1ProjectPaths.js | 19 + classne_1_1RenderSettings-members.html | 178 + classne_1_1RenderSettings.html | 1302 +++++ classne_1_1RenderSettings.js | 45 + classne_1_1RenderSettings.png | Bin 0 -> 784 bytes classne_1_1RenderStatistics-members.html | 127 + classne_1_1RenderStatistics.html | 461 ++ classne_1_1RenderStatistics.js | 21 + classne_1_1Renderer-members.html | 211 + classne_1_1Renderer.html | 3142 ++++++++++++ classne_1_1Renderer.js | 97 + classne_1_1Renderer.png | Bin 0 -> 788 bytes ...sne_1_1RootSignatureGenerator-members.html | 125 + classne_1_1RootSignatureGenerator.html | 769 +++ classne_1_1RootSignatureGenerator.js | 18 + ...ureGenerator_1_1RootParameter-members.html | 123 + ...otSignatureGenerator_1_1RootParameter.html | 487 ++ ...RootSignatureGenerator_1_1RootParameter.js | 21 + classne_1_1Serializable-members.html | 135 + classne_1_1Serializable.html | 1161 +++++ classne_1_1Serializable.js | 25 + classne_1_1Serializable.png | Bin 0 -> 4585 bytes ...alizableObjectFieldSerializer-members.html | 129 + ..._1_1SerializableObjectFieldSerializer.html | 946 ++++ ...ne_1_1SerializableObjectFieldSerializer.js | 17 + ...e_1_1SerializableObjectFieldSerializer.png | Bin 0 -> 760 bytes classne_1_1Serialize-members.html | 115 + classne_1_1Serialize.html | 212 + classne_1_1Serialize.js | 6 + classne_1_1Serialize.png | Bin 0 -> 476 bytes classne_1_1Shader-members.html | 138 + classne_1_1Shader.html | 1028 ++++ classne_1_1Shader.js | 27 + classne_1_1Shader.png | Bin 0 -> 676 bytes classne_1_1ShaderArrayIndex-members.html | 121 + classne_1_1ShaderArrayIndex.html | 313 ++ classne_1_1ShaderArrayIndex.js | 9 + ...ne_1_1ShaderArrayIndexManager-members.html | 119 + classne_1_1ShaderArrayIndexManager.html | 337 ++ classne_1_1ShaderArrayIndexManager.js | 11 + classne_1_1ShaderCacheManager-members.html | 124 + classne_1_1ShaderCacheManager.html | 460 ++ classne_1_1ShaderCacheManager.js | 13 + classne_1_1ShaderCacheManager.png | Bin 0 -> 1040 bytes classne_1_1ShaderConfiguration-members.html | 116 + classne_1_1ShaderConfiguration.html | 249 + classne_1_1ShaderConfiguration.js | 8 + ...ShaderCpuWriteResourceBinding-members.html | 129 + classne_1_1ShaderCpuWriteResourceBinding.html | 678 +++ classne_1_1ShaderCpuWriteResourceBinding.js | 16 + classne_1_1ShaderCpuWriteResourceBinding.png | Bin 0 -> 869 bytes ...puWriteResourceBindingManager-members.html | 125 + ...1ShaderCpuWriteResourceBindingManager.html | 474 ++ ...1_1ShaderCpuWriteResourceBindingManager.js | 14 + ...WriteResourceBindingUniquePtr-members.html | 122 + ...haderCpuWriteResourceBindingUniquePtr.html | 364 ++ ...1ShaderCpuWriteResourceBindingUniquePtr.js | 10 + classne_1_1ShaderFilesystemPaths-members.html | 116 + classne_1_1ShaderFilesystemPaths.html | 221 + classne_1_1ShaderFilesystemPaths.js | 6 + classne_1_1ShaderLightArray-members.html | 133 + classne_1_1ShaderLightArray.html | 801 +++ classne_1_1ShaderLightArray.js | 23 + classne_1_1ShaderLightArraySlot-members.html | 123 + classne_1_1ShaderLightArraySlot.html | 390 ++ classne_1_1ShaderLightArraySlot.js | 11 + classne_1_1ShaderManager-members.html | 133 + classne_1_1ShaderManager.html | 741 +++ classne_1_1ShaderManager.js | 21 + classne_1_1ShaderPack-members.html | 128 + classne_1_1ShaderPack.html | 600 +++ classne_1_1ShaderPack.js | 17 + ..._1_1ShaderResourceBindingBase-members.html | 117 + classne_1_1ShaderResourceBindingBase.html | 306 ++ classne_1_1ShaderResourceBindingBase.js | 8 + classne_1_1ShaderResourceBindingBase.png | Bin 0 -> 2089 bytes ...1ShaderTextureResourceBinding-members.html | 119 + classne_1_1ShaderTextureResourceBinding.html | 224 + classne_1_1ShaderTextureResourceBinding.js | 5 + classne_1_1ShaderTextureResourceBinding.png | Bin 0 -> 1682 bytes ...TextureResourceBindingManager-members.html | 123 + ..._1ShaderTextureResourceBindingManager.html | 403 ++ ..._1_1ShaderTextureResourceBindingManager.js | 11 + ...xtureResourceBindingUniquePtr-members.html | 121 + ...ShaderTextureResourceBindingUniquePtr.html | 344 ++ ..._1ShaderTextureResourceBindingUniquePtr.js | 9 + classne_1_1ShaderUser-members.html | 120 + classne_1_1ShaderUser.html | 380 ++ classne_1_1ShaderUser.js | 10 + classne_1_1ShaderUser.png | Bin 0 -> 1073 bytes ...1_1ShadowMapArrayIndexManager-members.html | 128 + classne_1_1ShadowMapArrayIndexManager.html | 576 +++ classne_1_1ShadowMapArrayIndexManager.js | 14 + classne_1_1ShadowMapArrayIndexManager.png | Bin 0 -> 1372 bytes classne_1_1ShadowMapHandle-members.html | 130 + classne_1_1ShadowMapHandle.html | 567 +++ classne_1_1ShadowMapHandle.js | 16 + classne_1_1ShadowMapManager-members.html | 140 + classne_1_1ShadowMapManager.html | 910 ++++ classne_1_1ShadowMapManager.js | 29 + classne_1_1SpatialNode-members.html | 241 + classne_1_1SpatialNode.html | 1278 +++++ classne_1_1SpatialNode.js | 39 + classne_1_1SpatialNode.png | Bin 0 -> 3538 bytes classne_1_1SpotlightNode-members.html | 276 ++ classne_1_1SpotlightNode.html | 1377 ++++++ classne_1_1SpotlightNode.js | 42 + classne_1_1SpotlightNode.png | Bin 0 -> 1170 bytes classne_1_1StringFieldSerializer-members.html | 120 + classne_1_1StringFieldSerializer.html | 505 ++ classne_1_1StringFieldSerializer.js | 9 + classne_1_1StringFieldSerializer.png | Bin 0 -> 693 bytes classne_1_1TextureHandle-members.html | 123 + classne_1_1TextureHandle.html | 344 ++ classne_1_1TextureHandle.js | 10 + classne_1_1TextureImporter-members.html | 114 + classne_1_1TextureImporter.html | 244 + classne_1_1TextureImporter.js | 6 + classne_1_1TextureManager-members.html | 125 + classne_1_1TextureManager.html | 461 ++ classne_1_1TextureManager.js | 15 + classne_1_1ThreadPool-members.html | 122 + classne_1_1ThreadPool.html | 380 ++ classne_1_1ThreadPool.js | 13 + classne_1_1Timer-members.html | 144 + classne_1_1Timer.html | 928 ++++ classne_1_1Timer.js | 31 + classne_1_1UniqueValueGenerator-members.html | 117 + classne_1_1UniqueValueGenerator.html | 214 + classne_1_1UniqueValueGenerator.js | 6 + ..._1UnorderedMapFieldSerializer-members.html | 119 + classne_1_1UnorderedMapFieldSerializer.html | 475 ++ classne_1_1UnorderedMapFieldSerializer.js | 8 + classne_1_1UnorderedMapFieldSerializer.png | Bin 0 -> 751 bytes classne_1_1UploadBuffer-members.html | 123 + classne_1_1UploadBuffer.html | 400 ++ classne_1_1UploadBuffer.js | 12 + classne_1_1VectorFieldSerializer-members.html | 121 + classne_1_1VectorFieldSerializer.html | 545 +++ classne_1_1VectorFieldSerializer.js | 10 + classne_1_1VectorFieldSerializer.png | Bin 0 -> 674 bytes ...ne_1_1VertexFormatDescription-members.html | 113 + classne_1_1VertexFormatDescription.html | 183 + classne_1_1VertexFormatDescription.js | 4 + classne_1_1VertexFormatDescription.png | Bin 0 -> 1765 bytes classne_1_1VulkanPipeline-members.html | 165 + classne_1_1VulkanPipeline.html | 855 ++++ classne_1_1VulkanPipeline.js | 19 + classne_1_1VulkanPipeline.png | Bin 0 -> 762 bytes classne_1_1VulkanRenderer-members.html | 320 ++ classne_1_1VulkanRenderer.html | 4352 +++++++++++++++++ classne_1_1VulkanRenderer.js | 137 + classne_1_1VulkanRenderer.png | Bin 0 -> 533 bytes classne_1_1VulkanResource-members.html | 149 + classne_1_1VulkanResource.html | 953 ++++ classne_1_1VulkanResource.js | 23 + classne_1_1VulkanResource.png | Bin 0 -> 571 bytes classne_1_1VulkanResourceManager-members.html | 150 + classne_1_1VulkanResourceManager.html | 1110 +++++ classne_1_1VulkanResourceManager.js | 20 + classne_1_1VulkanResourceManager.png | Bin 0 -> 762 bytes ...kanShadowMapArrayIndexManager-members.html | 138 + ...e_1_1VulkanShadowMapArrayIndexManager.html | 548 +++ ...sne_1_1VulkanShadowMapArrayIndexManager.js | 13 + ...ne_1_1VulkanShadowMapArrayIndexManager.png | Bin 0 -> 945 bytes classne_1_1Window-members.html | 162 + classne_1_1Window.html | 1627 ++++++ classne_1_1Window.js | 50 + classne_1_1WindowBuilder-members.html | 120 + classne_1_1WindowBuilder.html | 384 ++ classne_1_1WindowBuilder.js | 12 + classne_1_1WindowCursor-members.html | 120 + classne_1_1WindowCursor.html | 331 ++ classne_1_1WindowCursor.js | 9 + classne_1_1World-members.html | 146 + classne_1_1World.html | 1036 ++++ classne_1_1World.js | 33 + closed.png | Bin 0 -> 132 bytes custom.css | 20 + dir_07e92ae10043998556fc49d19f6eb779.html | 118 + dir_07e92ae10043998556fc49d19f6eb779.js | 6 + dir_0fc3f353271683a562ec0901a6675197.html | 122 + dir_0fc3f353271683a562ec0901a6675197.js | 8 + dir_10962f3d170d90e2caa01fd1efc295ff.html | 116 + dir_10962f3d170d90e2caa01fd1efc295ff.js | 5 + dir_113b11c13d7c2895bdf358ae18b66592.html | 116 + dir_1577dd4cf38e07853f65fbc968373ce6.html | 128 + dir_1577dd4cf38e07853f65fbc968373ce6.js | 11 + dir_1685b704a22d6357ace52e466cd1ac5e.html | 125 + dir_1685b704a22d6357ace52e466cd1ac5e.js | 8 + dir_1ca65e8ba1b22a57f2a4eac3d8fc7099.html | 127 + dir_1ca65e8ba1b22a57f2a4eac3d8fc7099.js | 10 + dir_1e31920b674df49ea57e2c48ffba7d7d.html | 114 + dir_1e31920b674df49ea57e2c48ffba7d7d.js | 4 + dir_1f0460a148d1831e983b3b7b327a0af3.html | 131 + dir_1f0460a148d1831e983b3b7b327a0af3.js | 11 + dir_254f03e947bc6dd91a4d72413cbda2cf.html | 118 + dir_254f03e947bc6dd91a4d72413cbda2cf.js | 6 + dir_268c75e817f67fac7f36dfc234371da8.html | 123 + dir_268c75e817f67fac7f36dfc234371da8.js | 7 + dir_27b5ac4886c1ddd324edea10c5af45aa.html | 118 + dir_27b5ac4886c1ddd324edea10c5af45aa.js | 6 + dir_27d45686a9f223c6629a96f41f581c7d.html | 114 + dir_27d45686a9f223c6629a96f41f581c7d.js | 4 + dir_2fdaddfc182c018af5626a1f94c56ef3.html | 123 + dir_2fdaddfc182c018af5626a1f94c56ef3.js | 7 + dir_3637dc7ee2eaf270386a69dd8cc5f74f.html | 124 + dir_3637dc7ee2eaf270386a69dd8cc5f74f.js | 8 + dir_3a41e4df855d3e9cc882e016b42358a0.html | 126 + dir_3a41e4df855d3e9cc882e016b42358a0.js | 10 + dir_4122cc0a79b2f084b533d6511440ed47.html | 118 + dir_4122cc0a79b2f084b533d6511440ed47.js | 6 + dir_4202ed4c8873735aa34386ac67eb4c07.html | 108 + dir_472db985af960b653afc2ffb34fa906a.html | 139 + dir_472db985af960b653afc2ffb34fa906a.js | 15 + dir_474da58556258c39342071afd2e59e13.html | 108 + dir_474da58556258c39342071afd2e59e13.js | 5 + dir_48d37b1060bbd18046e66bc0f50da0ee.html | 114 + dir_48d37b1060bbd18046e66bc0f50da0ee.js | 4 + dir_491e7905d57d55c9ff8056a9680da626.html | 108 + dir_491e7905d57d55c9ff8056a9680da626.js | 4 + dir_49e56c817e5e54854c35e136979f97ca.html | 108 + dir_4ac42a0337879a0a51720acbf248d4f7.html | 116 + dir_4ac42a0337879a0a51720acbf248d4f7.js | 5 + dir_5629d5967789ab2fdc7d763df656ba36.html | 116 + dir_5629d5967789ab2fdc7d763df656ba36.js | 5 + dir_58f2be8f45582f1aa2376bfaadba951b.html | 114 + dir_58f2be8f45582f1aa2376bfaadba951b.js | 4 + dir_5f3dbef217b2af2946a4f0e420be2c99.html | 116 + dir_5f3dbef217b2af2946a4f0e420be2c99.js | 5 + dir_6117afdc5a20ea9077509ff9fd27d059.html | 114 + dir_6117afdc5a20ea9077509ff9fd27d059.js | 4 + dir_65368207119fe98db5a81ed315acb55e.html | 116 + dir_65368207119fe98db5a81ed315acb55e.js | 4 + dir_664997ef76fe448862ddc76e051db805.html | 108 + dir_68267d1309a1af8e8297ef4c3efbcdba.html | 108 + dir_68267d1309a1af8e8297ef4c3efbcdba.js | 5 + dir_686065da544ae8f94faa03fd2fe61e8a.html | 116 + dir_686065da544ae8f94faa03fd2fe61e8a.js | 5 + dir_69c7518f7154b66a1a05ca106a54e74e.html | 108 + dir_69f422428c9f384758bc93d042c887eb.html | 114 + dir_69f422428c9f384758bc93d042c887eb.js | 4 + dir_6a551b77301a46f3dc885530853d0ddf.html | 108 + dir_6df993e62015e5d469b47adf27edd027.html | 114 + dir_6df993e62015e5d469b47adf27edd027.js | 4 + dir_73177b06cfc33904a08e21f2dd6c1106.html | 114 + dir_75df76df1d9a742bd9021c942e21561b.html | 114 + dir_75df76df1d9a742bd9021c942e21561b.js | 4 + dir_79034dbb0e84398f48ec2875b099469c.html | 123 + dir_79034dbb0e84398f48ec2875b099469c.js | 6 + dir_794f9c279fc5de1609e6866cc905aba2.html | 114 + dir_794f9c279fc5de1609e6866cc905aba2.js | 4 + dir_809dd9de87663f5e5f88b07868b7c61b.html | 123 + dir_809dd9de87663f5e5f88b07868b7c61b.js | 7 + dir_82184aefe48efcedc6cef53e43e0328a.html | 108 + dir_8265353e9896f9a7f783d85d71af854a.html | 118 + dir_8265353e9896f9a7f783d85d71af854a.js | 6 + dir_872dd2b71ff204ef25963c741e258f22.html | 114 + dir_872dd2b71ff204ef25963c741e258f22.js | 4 + dir_88854e741e94c5d731b598d414654b2c.html | 121 + dir_88854e741e94c5d731b598d414654b2c.js | 6 + dir_899bc9390cb8cbf630ecd7670efe3f13.html | 127 + dir_899bc9390cb8cbf630ecd7670efe3f13.js | 9 + dir_8aa75ad3c315dba50bd46cd5118d21c0.html | 116 + dir_8aa75ad3c315dba50bd46cd5118d21c0.js | 5 + dir_a111cc5adb4103d3d8e4addddf74297e.html | 114 + dir_a111cc5adb4103d3d8e4addddf74297e.js | 4 + dir_a31afd56823c6335224242a3eb4525db.html | 114 + dir_a42664758e28241c1ef480f153ce712b.html | 108 + dir_a42664758e28241c1ef480f153ce712b.js | 4 + dir_a440d772fec9b9b9c755744f14b33a1c.html | 114 + dir_a440d772fec9b9b9c755744f14b33a1c.js | 4 + dir_abb9b715da83eecf3aed00df03772ecf.html | 114 + dir_b84637558657fd1a99c6ba53f2f33845.html | 118 + dir_b84637558657fd1a99c6ba53f2f33845.js | 6 + dir_b8a391f29ba7282a16f1b58f19ec24d1.html | 127 + dir_b8a391f29ba7282a16f1b58f19ec24d1.js | 9 + dir_ba00f76f55d57e13c6522c91ec0c9bfd.html | 114 + dir_ba00f76f55d57e13c6522c91ec0c9bfd.js | 4 + dir_c3f04a05024532293f5c1665789673df.html | 114 + dir_c3f04a05024532293f5c1665789673df.js | 4 + dir_c40557993b8c8d997518bc2cf6aac1c9.html | 116 + dir_c40557993b8c8d997518bc2cf6aac1c9.js | 5 + dir_c437eb56d4fc569e4849da05f836e8b8.html | 116 + dir_c437eb56d4fc569e4849da05f836e8b8.js | 5 + dir_c5c2ba609f94206dc7ea1dd6e60097e3.html | 108 + dir_c5c5dc0e5e7e3e2711eaa3da8c0c58fb.html | 116 + dir_c5c5dc0e5e7e3e2711eaa3da8c0c58fb.js | 5 + dir_c7b5f78f238c0a868ed56c456d2e83ea.html | 116 + dir_c7b5f78f238c0a868ed56c456d2e83ea.js | 5 + dir_cb25f7e6d432bdb42797faefca2c4977.html | 120 + dir_cb25f7e6d432bdb42797faefca2c4977.js | 7 + dir_cc5ba1c7dc8b43cad375ec8b58587329.html | 127 + dir_cc5ba1c7dc8b43cad375ec8b58587329.js | 9 + dir_d055b31d289f737cf1fc8c64643d4a6d.html | 137 + dir_d055b31d289f737cf1fc8c64643d4a6d.js | 14 + dir_d4a5a65e74d9bde42699a2d4df034ecd.html | 108 + dir_d8e757402d5e38851e01e59a45b84433.html | 116 + dir_d8e757402d5e38851e01e59a45b84433.js | 5 + dir_dcf71d98cc04d2129765dfad3817fc25.html | 125 + dir_dcf71d98cc04d2129765dfad3817fc25.js | 9 + dir_e0ace713be3475131e60a0ca9af54636.html | 114 + dir_e0ace713be3475131e60a0ca9af54636.js | 4 + dir_e0ef9ebe84488d81f54422963e9a9498.html | 123 + dir_e0ef9ebe84488d81f54422963e9a9498.js | 7 + dir_e593aed00f615f2bbf73ee8f88768802.html | 116 + dir_e593aed00f615f2bbf73ee8f88768802.js | 5 + dir_e61267bc081b3537f87c78de395feba9.html | 130 + dir_e61267bc081b3537f87c78de395feba9.js | 12 + dir_e645ce746b7fd7f7b30b25fe28e254d0.html | 108 + dir_e8d81150375a7914f8572cbe301f32ad.html | 118 + dir_e8d81150375a7914f8572cbe301f32ad.js | 6 + dir_eaabbd148ec41e8fc7203d13b7c328e9.html | 116 + dir_eaabbd148ec41e8fc7203d13b7c328e9.js | 5 + dir_f25fd6cd84e5c1c4cb0c849643e32043.html | 114 + dir_f25fd6cd84e5c1c4cb0c849643e32043.js | 4 + dir_f4ad63450b3df83649e5cc02f94caeb5.html | 108 + dir_f898229b977448ec8cdf46a8044476c7.html | 118 + dir_f898229b977448ec8cdf46a8044476c7.js | 6 + dir_f903bb129e9c7c874074031c600663f8.html | 120 + dir_f903bb129e9c7c874074031c600663f8.js | 7 + dir_f9d3efab589c496b9fbceccb86028cc6.html | 123 + dir_f9d3efab589c496b9fbceccb86028cc6.js | 5 + dir_fdaa52d7ef8aea442f65134e0f91915a.html | 125 + dir_fdaa52d7ef8aea442f65134e0f91915a.js | 8 + doc.png | Bin 0 -> 746 bytes docd.png | Bin 0 -> 756 bytes doxygen-awesome-sidebar-only.css | 108 + doxygen-awesome.css | 2669 ++++++++++ doxygen.css | 1973 ++++++++ doxygen.svg | 26 + dynsections.js | 123 + files.html | 323 ++ files_dup.js | 4 + folderclosed.png | Bin 0 -> 616 bytes folderopen.png | Bin 0 -> 597 bytes functions.html | 149 + functions_b.html | 173 + functions_c.html | 253 + functions_d.html | 163 + functions_dup.js | 26 + functions_e.html | 126 + functions_enum.html | 110 + functions_f.html | 134 + functions_func.html | 134 + functions_func.js | 26 + functions_func_b.html | 128 + functions_func_c.html | 227 + functions_func_d.html | 148 + functions_func_e.html | 122 + functions_func_f.html | 120 + functions_func_g.html | 525 ++ functions_func_h.html | 115 + functions_func_i.html | 172 + functions_func_k.html | 109 + functions_func_l.html | 116 + functions_func_m.html | 134 + functions_func_n.html | 117 + functions_func_o.html | 182 + functions_func_p.html | 126 + functions_func_q.html | 115 + functions_func_r.html | 164 + functions_func_s.html | 236 + functions_func_t.html | 117 + functions_func_u.html | 134 + functions_func_v.html | 113 + functions_func_w.html | 125 + functions_func_~.html | 127 + functions_g.html | 529 ++ functions_h.html | 117 + functions_i.html | 292 ++ functions_k.html | 110 + functions_l.html | 126 + functions_m.html | 223 + functions_n.html | 126 + functions_o.html | 195 + functions_p.html | 281 ++ functions_q.html | 116 + functions_r.html | 186 + functions_rela.html | 107 + functions_s.html | 364 ++ functions_t.html | 136 + functions_type.html | 109 + functions_u.html | 141 + functions_v.html | 167 + functions_vars.html | 120 + functions_vars.js | 25 + functions_vars_b.html | 153 + functions_vars_c.html | 134 + functions_vars_d.html | 123 + functions_vars_e.html | 112 + functions_vars_f.html | 122 + functions_vars_g.html | 112 + functions_vars_h.html | 110 + functions_vars_i.html | 227 + functions_vars_k.html | 109 + functions_vars_l.html | 118 + functions_vars_m.html | 196 + functions_vars_n.html | 117 + functions_vars_o.html | 121 + functions_vars_p.html | 263 + functions_vars_q.html | 109 + functions_vars_r.html | 130 + functions_vars_s.html | 236 + functions_vars_t.html | 126 + functions_vars_u.html | 115 + functions_vars_v.html | 161 + functions_vars_w.html | 117 + functions_w.html | 134 + functions_~.html | 127 + hierarchy.html | 376 ++ hierarchy.js | 296 ++ index.html | 2537 ++++++++++ jquery.js | 34 + menu.js | 136 + menudata.js | 107 + nav_f.png | Bin 0 -> 153 bytes nav_fd.png | Bin 0 -> 169 bytes nav_g.png | Bin 0 -> 95 bytes nav_h.png | Bin 0 -> 98 bytes nav_hd.png | Bin 0 -> 114 bytes navtree.css | 150 + navtree.js | 549 +++ navtreedata.js | 174 + navtreeindex0.js | 253 + navtreeindex1.js | 253 + navtreeindex10.js | 253 + navtreeindex11.js | 253 + navtreeindex12.js | 163 + navtreeindex2.js | 253 + navtreeindex3.js | 253 + navtreeindex4.js | 253 + navtreeindex5.js | 253 + navtreeindex6.js | 253 + navtreeindex7.js | 253 + navtreeindex8.js | 253 + navtreeindex9.js | 253 + open.png | Bin 0 -> 123 bytes resize.js | 155 + search/all_0.js | 45 + search/all_1.js | 68 + search/all_10.js | 85 + search/all_11.js | 282 ++ search/all_12.js | 36 + search/all_13.js | 38 + search/all_14.js | 66 + search/all_15.js | 33 + search/all_16.js | 22 + search/all_2.js | 158 + search/all_3.js | 66 + search/all_4.js | 29 + search/all_5.js | 39 + search/all_6.js | 434 ++ search/all_7.js | 13 + search/all_8.js | 192 + search/all_9.js | 6 + search/all_a.js | 26 + search/all_b.js | 133 + search/all_c.js | 25 + search/all_d.js | 92 + search/all_e.js | 183 + search/all_f.js | 13 + search/classes_0.js | 6 + search/classes_1.js | 22 + search/classes_10.js | 52 + search/classes_11.js | 11 + search/classes_12.js | 6 + search/classes_13.js | 12 + search/classes_14.js | 10 + search/classes_2.js | 25 + search/classes_3.js | 13 + search/classes_4.js | 14 + search/classes_5.js | 26 + search/classes_6.js | 9 + search/classes_7.js | 8 + search/classes_8.js | 5 + search/classes_9.js | 9 + search/classes_a.js | 21 + search/classes_b.js | 9 + search/classes_c.js | 5 + search/classes_d.js | 18 + search/classes_e.js | 5 + search/classes_f.js | 9 + search/close.svg | 31 + search/enums_0.js | 6 + search/enums_1.js | 4 + search/functions_0.js | 29 + search/functions_1.js | 23 + search/functions_10.js | 59 + search/functions_11.js | 131 + search/functions_12.js | 12 + search/functions_13.js | 29 + search/functions_14.js | 8 + search/functions_15.js | 20 + search/functions_16.js | 22 + search/functions_2.js | 122 + search/functions_3.js | 43 + search/functions_4.js | 16 + search/functions_5.js | 15 + search/functions_6.js | 420 ++ search/functions_7.js | 10 + search/functions_8.js | 67 + search/functions_9.js | 4 + search/functions_a.js | 11 + search/functions_b.js | 29 + search/functions_c.js | 12 + search/functions_d.js | 77 + search/functions_e.js | 21 + search/functions_f.js | 10 + search/mag.svg | 37 + search/mag_d.svg | 37 + search/mag_sel.svg | 74 + search/mag_seld.svg | 74 + search/pages_0.js | 4 + search/related_0.js | 4 + search/search.css | 291 ++ search/search.js | 816 ++++ search/searchdata.js | 36 + search/typedefs_0.js | 4 + search/typedefs_1.js | 4 + search/typedefs_2.js | 4 + search/variables_0.js | 15 + search/variables_1.js | 48 + search/variables_10.js | 25 + search/variables_11.js | 131 + search/variables_12.js | 21 + search/variables_13.js | 10 + search/variables_14.js | 56 + search/variables_15.js | 12 + search/variables_2.js | 29 + search/variables_3.js | 18 + search/variables_4.js | 7 + search/variables_5.js | 17 + search/variables_6.js | 7 + search/variables_7.js | 5 + search/variables_8.js | 122 + search/variables_9.js | 4 + search/variables_a.js | 13 + search/variables_b.js | 91 + search/variables_c.js | 12 + search/variables_d.js | 16 + search/variables_e.js | 158 + search/variables_f.js | 4 + splitbar.png | Bin 0 -> 314 bytes splitbard.png | Bin 0 -> 282 bytes structne_1_1AABB-members.html | 114 + structne_1_1AABB.html | 231 + structne_1_1AABB.js | 7 + ...ctne_1_1CalledEveryFrameNodes-members.html | 115 + structne_1_1CalledEveryFrameNodes.html | 167 + structne_1_1CalledEveryFrameNodes.js | 5 + ...e_1_1CameraProperties_1_1Data-members.html | 117 + structne_1_1CameraProperties_1_1Data.html | 249 + structne_1_1CameraProperties_1_1Data.js | 12 + ...es_1_1Data_1_1OrbitalModeData-members.html | 114 + ...Properties_1_1Data_1_1OrbitalModeData.html | 174 + ...raProperties_1_1Data_1_1OrbitalModeData.js | 6 + ...ies_1_1Data_1_1ProjectionData-members.html | 121 + ...aProperties_1_1Data_1_1ProjectionData.html | 294 ++ ...eraProperties_1_1Data_1_1ProjectionData.js | 13 + ...roperties_1_1Data_1_1ViewData-members.html | 116 + ...1CameraProperties_1_1Data_1_1ViewData.html | 208 + ...1_1CameraProperties_1_1Data_1_1ViewData.js | 8 + structne_1_1Cone-members.html | 117 + structne_1_1Cone.html | 306 ++ structne_1_1Cone.js | 10 + ...scriptorRange_1_1InternalData-members.html | 115 + ...irectXDescriptorRange_1_1InternalData.html | 211 + ...sDirectXDescriptorRange_1_1InternalData.js | 8 + structne_1_1DescriptorConstants-members.html | 112 + structne_1_1DescriptorConstants.html | 149 + structne_1_1DescriptorConstants.js | 4 + ...tLayoutGenerator_1_1Collected-members.html | 112 + ...riptorSetLayoutGenerator_1_1Collected.html | 166 + ...scriptorSetLayoutGenerator_1_1Collected.js | 6 + ...escriptorSetLayoutBindingInfo-members.html | 112 + ...ted_1_1DescriptorSetLayoutBindingInfo.html | 157 + ...ected_1_1DescriptorSetLayoutBindingInfo.js | 5 + ...tLayoutGenerator_1_1Generated-members.html | 115 + ...riptorSetLayoutGenerator_1_1Generated.html | 214 + ...scriptorSetLayoutGenerator_1_1Generated.js | 8 + ...DeserializedObjectInformation-members.html | 115 + ...ctne_1_1DeserializedObjectInformation.html | 242 + structne_1_1DeserializedObjectInformation.js | 7 + ...escriptorHeap_1_1InternalData-members.html | 117 + ...DirectXDescriptorHeap_1_1InternalData.html | 246 + ..._1DirectXDescriptorHeap_1_1InternalData.js | 10 + structne_1_1DirectXFrameResource-members.html | 116 + structne_1_1DirectXFrameResource.html | 213 + structne_1_1DirectXFrameResource.js | 6 + structne_1_1DirectXFrameResource.png | Bin 0 -> 688 bytes ...rectXPso_1_1InternalResources-members.html | 117 + ...ne_1_1DirectXPso_1_1InternalResources.html | 248 + ...ctne_1_1DirectXPso_1_1InternalResources.js | 10 + ...source_1_1DescriptorsSameType-members.html | 112 + ...irectXResource_1_1DescriptorsSameType.html | 155 + ...1DirectXResource_1_1DescriptorsSameType.js | 5 + ..._1_1DirecionalLightShaderData-members.html | 116 + ...ightNode_1_1DirecionalLightShaderData.html | 206 + ...lLightNode_1_1DirecionalLightShaderData.js | 8 + ...tionalLightNode_1_1ShaderData-members.html | 114 + ...1_1DirectionalLightNode_1_1ShaderData.html | 178 + ...e_1_1DirectionalLightNode_1_1ShaderData.js | 7 + ...erData_1_1ShadowPassDataGroup-members.html | 113 + ..._1_1ShaderData_1_1ShadowPassDataGroup.html | 157 + ...de_1_1ShaderData_1_1ShadowPassDataGroup.js | 5 + ...rceArray_1_1InternalResources-members.html | 116 + ...derResourceArray_1_1InternalResources.html | 209 + ...haderResourceArray_1_1InternalResources.js | 8 + ...eInstance_1_1EditorGcPointers-members.html | 111 + ...ditorGameInstance_1_1EditorGcPointers.html | 138 + ...1EditorGameInstance_1_1EditorGcPointers.js | 4 + structne_1_1EditorInputEventIds-members.html | 112 + structne_1_1EditorInputEventIds.html | 179 + structne_1_1EditorInputEventIds.js | 13 + ...ConstantMacros_1_1ForwardPlus-members.html | 113 + ...neShaderConstantMacros_1_1ForwardPlus.html | 213 + ...gineShaderConstantMacros_1_1ForwardPlus.js | 6 + ...ineShaderNames_1_1ForwardPlus-members.html | 113 + ...e_1_1EngineShaderNames_1_1ForwardPlus.html | 210 + ...tne_1_1EngineShaderNames_1_1ForwardPlus.js | 6 + ...EngineShaderNames_1_1MeshNode-members.html | 112 + ...ctne_1_1EngineShaderNames_1_1MeshNode.html | 181 + structne_1_1EngineShaderNames_1_1MeshNode.js | 5 + ...gineShaderNames_1_1PointLight-members.html | 111 + ...ne_1_1EngineShaderNames_1_1PointLight.html | 152 + ...ctne_1_1EngineShaderNames_1_1PointLight.js | 4 + ...1EngineShaders_1_1ForwardPlus-members.html | 113 + structne_1_1EngineShaders_1_1ForwardPlus.html | 231 + structne_1_1EngineShaders_1_1ForwardPlus.js | 6 + ..._1_1EngineShaders_1_1MeshNode-members.html | 112 + structne_1_1EngineShaders_1_1MeshNode.html | 195 + structne_1_1EngineShaders_1_1MeshNode.js | 5 + ..._1EngineShaders_1_1PointLight-members.html | 111 + structne_1_1EngineShaders_1_1PointLight.html | 159 + structne_1_1EngineShaders_1_1PointLight.js | 4 + structne_1_1FrameConstants-members.html | 115 + structne_1_1FrameConstants.html | 208 + structne_1_1FrameConstants.js | 8 + structne_1_1FrameResource-members.html | 114 + structne_1_1FrameResource.html | 200 + structne_1_1FrameResource.js | 5 + structne_1_1FrameResource.png | Bin 0 -> 966 bytes ...nager_1_1CurrentFrameResource-members.html | 113 + ...sourceManager_1_1CurrentFrameResource.html | 157 + ...ResourceManager_1_1CurrentFrameResource.js | 5 + structne_1_1Frustum-members.html | 119 + structne_1_1Frustum.html | 329 ++ structne_1_1Frustum.js | 12 + ..._1_1Globals_1_1WorldDirection-members.html | 113 + structne_1_1Globals_1_1WorldDirection.html | 198 + structne_1_1Globals_1_1WorldDirection.js | 6 + ...inding_1_1PushConstantIndices-members.html | 116 + ...esourceBinding_1_1PushConstantIndices.html | 294 ++ ...eResourceBinding_1_1PushConstantIndices.js | 9 + ...e_1_1GraphicsPipelineRegistry-members.html | 111 + structne_1_1GraphicsPipelineRegistry.html | 140 + structne_1_1GraphicsPipelineRegistry.js | 4 + ...obalShaderCacheParameterNames-members.html | 114 + ...er_1_1GlobalShaderCacheParameterNames.html | 221 + ...ager_1_1GlobalShaderCacheParameterNames.js | 7 + ...oadingCallbackManager_1_1Data-members.html | 112 + ..._1_1KtxLoadingCallbackManager_1_1Data.html | 155 + ...ne_1_1KtxLoadingCallbackManager_1_1Data.js | 5 + ...rResourceManager_1_1ComputeShaderData.html | 127 + ...derResourceManager_1_1ComputeShaderData.js | 7 + ...1ComputeShaderData_1_1Frustum-members.html | 111 + ...nager_1_1ComputeShaderData_1_1Frustum.html | 141 + ...Manager_1_1ComputeShaderData_1_1Frustum.js | 4 + ...haderData_1_1FrustumGridComputeShader.html | 129 + ...eShaderData_1_1FrustumGridComputeShader.js | 7 + ...dComputeShader_1_1ComputeInfo-members.html | 114 + ...ustumGridComputeShader_1_1ComputeInfo.html | 191 + ...FrustumGridComputeShader_1_1ComputeInfo.js | 7 + ...omputeShader_1_1ComputeShader-members.html | 120 + ...tumGridComputeShader_1_1ComputeShader.html | 367 ++ ...ustumGridComputeShader_1_1ComputeShader.js | 13 + ...uteShader_1_1ScreenToViewData-members.html | 113 + ...GridComputeShader_1_1ScreenToViewData.html | 174 + ...umGridComputeShader_1_1ScreenToViewData.js | 6 + ...puteShader_1_1ShaderResources-members.html | 113 + ...mGridComputeShader_1_1ShaderResources.html | 174 + ...tumGridComputeShader_1_1ShaderResources.js | 6 + ...aderData_1_1LightCullingComputeShader.html | 129 + ...ShaderData_1_1LightCullingComputeShader.js | 7 + ...omputeShader_1_1ComputeShader-members.html | 120 + ...CullingComputeShader_1_1ComputeShader.html | 446 ++ ...htCullingComputeShader_1_1ComputeShader.js | 13 + ..._1_1G0eb5a52f5b2e76a800149c80dc2ffffb.html | 114 + ...r_1_1GlobalCountersIntoLightIndexList.html | 191 + ...der_1_1GlobalCountersIntoLightIndexList.js | 7 + ...puteShader_1_1ShaderResources-members.html | 122 + ...llingComputeShader_1_1ShaderResources.html | 327 ++ ...CullingComputeShader_1_1ShaderResources.js | 15 + ...uteShader_1_1ThreadGroupCount-members.html | 112 + ...lingComputeShader_1_1ThreadGroupCount.html | 157 + ...ullingComputeShader_1_1ThreadGroupCount.js | 5 + ...1_1ComputeShaderData_1_1Plane-members.html | 112 + ...Manager_1_1ComputeShaderData_1_1Plane.html | 158 + ...ceManager_1_1ComputeShaderData_1_1Plane.js | 5 + ..._1_1GeneralLightingShaderData-members.html | 114 + ...eManager_1_1GeneralLightingShaderData.html | 191 + ...rceManager_1_1GeneralLightingShaderData.js | 7 + ...derResourceManager_1_1GpuData-members.html | 113 + ...htingShaderResourceManager_1_1GpuData.html | 158 + ...ightingShaderResourceManager_1_1GpuData.js | 5 + ...esourceManager_1_1LightArrays-members.html | 114 + ...gShaderResourceManager_1_1LightArrays.html | 189 + ...ingShaderResourceManager_1_1LightArrays.js | 7 + ...e_1_1Material_1_1GpuResources-members.html | 112 + structne_1_1Material_1_1GpuResources.html | 146 + structne_1_1Material_1_1GpuResources.js | 5 + ...uResources_1_1ShaderResources-members.html | 113 + ...al_1_1GpuResources_1_1ShaderResources.html | 157 + ...rial_1_1GpuResources_1_1ShaderResources.js | 5 + ...Material_1_1InternalResources-members.html | 115 + ...ctne_1_1Material_1_1InternalResources.html | 201 + structne_1_1Material_1_1InternalResources.js | 7 + ...al_1_1MaterialShaderConstants-members.html | 115 + ..._1Material_1_1MaterialShaderConstants.html | 190 + ..._1_1Material_1_1MaterialShaderConstants.js | 7 + structne_1_1MeshIndexBufferInfo-members.html | 114 + structne_1_1MeshIndexBufferInfo.html | 236 + structne_1_1MeshIndexBufferInfo.js | 7 + ...e_1_1MeshNode_1_1GpuResources-members.html | 113 + structne_1_1MeshNode_1_1GpuResources.html | 165 + structne_1_1MeshNode_1_1GpuResources.js | 7 + ...hNode_1_1GpuResources_1_1Mesh-members.html | 113 + ...e_1_1MeshNode_1_1GpuResources_1_1Mesh.html | 157 + ...tne_1_1MeshNode_1_1GpuResources_1_1Mesh.js | 5 + ...uResources_1_1ShaderResources-members.html | 113 + ...de_1_1GpuResources_1_1ShaderResources.html | 157 + ...Node_1_1GpuResources_1_1ShaderResources.js | 5 + ...shNode_1_1MeshShaderConstants-members.html | 113 + ...ne_1_1MeshNode_1_1MeshShaderConstants.html | 159 + ...ctne_1_1MeshNode_1_1MeshShaderConstants.js | 5 + ...1MeshNodesThatUseThisMaterial-members.html | 114 + structne_1_1MeshNodesThatUseThisMaterial.html | 227 + structne_1_1MeshNodesThatUseThisMaterial.js | 7 + structne_1_1MeshVertex-members.html | 120 + structne_1_1MeshVertex.html | 328 ++ structne_1_1MeshVertex.js | 11 + ...bjectInformationWithGcPointer-members.html | 118 + ...lizableObjectInformationWithGcPointer.html | 231 + ...ializableObjectInformationWithGcPointer.js | 5 + ...alizableObjectInformationWithGcPointer.png | Bin 0 -> 1101 bytes ...neManager_1_1ComputePipelines-members.html | 120 + ..._1PipelineManager_1_1ComputePipelines.html | 376 ++ ..._1_1PipelineManager_1_1ComputePipelines.js | 11 + ...ComputePipelines_1_1Resources-members.html | 112 + ...ager_1_1ComputePipelines_1_1Resources.html | 157 + ...anager_1_1ComputePipelines_1_1Resources.js | 5 + ...ager_1_1SpecialConstantsNames-members.html | 111 + ...tantsManager_1_1SpecialConstantsNames.html | 148 + ...nstantsManager_1_1SpecialConstantsNames.js | 4 + ...peline_1_1ShaderConstantsData-members.html | 113 + ...ne_1_1Pipeline_1_1ShaderConstantsData.html | 210 + ...ctne_1_1Pipeline_1_1ShaderConstantsData.js | 6 + structne_1_1Plane-members.html | 115 + structne_1_1Plane.html | 258 + structne_1_1Plane.js | 8 + ...tNode_1_1PointLightShaderData-members.html | 116 + ...ointLightNode_1_1PointLightShaderData.html | 206 + ...1PointLightNode_1_1PointLightShaderData.js | 8 + ...1PointLightNode_1_1ShaderData-members.html | 114 + structne_1_1PointLightNode_1_1ShaderData.html | 178 + structne_1_1PointLightNode_1_1ShaderData.js | 7 + ...erData_1_1ShadowPassDataGroup-members.html | 113 + ..._1_1ShaderData_1_1ShadowPassDataGroup.html | 157 + ...de_1_1ShaderData_1_1ShadowPassDataGroup.js | 5 + ...uedForExecutionComputeShaders-members.html | 111 + ...e_1_1QueuedForExecutionComputeShaders.html | 144 + ...tne_1_1QueuedForExecutionComputeShaders.js | 4 + ...1RenderStatistics_1_1Counters-members.html | 113 + structne_1_1RenderStatistics_1_1Counters.html | 174 + structne_1_1RenderStatistics_1_1Counters.js | 6 + ...derStatistics_1_1FpsLimitInfo-members.html | 112 + ...e_1_1RenderStatistics_1_1FpsLimitInfo.html | 155 + ...tne_1_1RenderStatistics_1_1FpsLimitInfo.js | 5 + ...s_1_1FrameTemporaryStatistics-members.html | 116 + ...tatistics_1_1FrameTemporaryStatistics.html | 209 + ...rStatistics_1_1FrameTemporaryStatistics.js | 8 + ...istics_1_1FramesPerSecondInfo-members.html | 113 + ...nderStatistics_1_1FramesPerSecondInfo.html | 172 + ...RenderStatistics_1_1FramesPerSecondInfo.js | 6 + ...derStatistics_1_1TaskTimeInfo-members.html | 113 + ...e_1_1RenderStatistics_1_1TaskTimeInfo.html | 175 + ...tne_1_1RenderStatistics_1_1TaskTimeInfo.js | 6 + ..._1Renderer_1_1LightsInFrustum-members.html | 112 + structne_1_1Renderer_1_1LightsInFrustum.html | 157 + structne_1_1Renderer_1_1LightsInFrustum.js | 5 + ..._1Renderer_1_1MeshesInFrustum-members.html | 112 + structne_1_1Renderer_1_1MeshesInFrustum.html | 167 + structne_1_1Renderer_1_1MeshesInFrustum.js | 8 + ...stum_1_1MaterialInFrustumInfo-members.html | 112 + ...hesInFrustum_1_1MaterialInFrustumInfo.html | 157 + ...eshesInFrustum_1_1MaterialInFrustumInfo.js | 5 + ...nFrustum_1_1MeshInFrustumInfo-members.html | 112 + ...1MeshesInFrustum_1_1MeshInFrustumInfo.html | 157 + ...1_1MeshesInFrustum_1_1MeshInFrustumInfo.js | 5 + ...stum_1_1PipelineInFrustumInfo-members.html | 112 + ...hesInFrustum_1_1PipelineInFrustumInfo.html | 157 + ...eshesInFrustum_1_1PipelineInFrustumInfo.js | 5 + ...ureGenerator_1_1CollectedInfo-members.html | 114 + ...otSignatureGenerator_1_1CollectedInfo.html | 194 + ...RootSignatureGenerator_1_1CollectedInfo.js | 7 + ...gnatureGenerator_1_1Generated-members.html | 114 + ..._1RootSignatureGenerator_1_1Generated.html | 198 + ..._1_1RootSignatureGenerator_1_1Generated.js | 7 + ...SerializableObjectInformation-members.html | 116 + ...ctne_1_1SerializableObjectInformation.html | 265 + structne_1_1SerializableObjectInformation.js | 8 + structne_1_1SerializableObjectInformation.png | Bin 0 -> 1099 bytes ...yIndexManager_1_1InternalData-members.html | 114 + ...aderArrayIndexManager_1_1InternalData.html | 172 + ...ShaderArrayIndexManager_1_1InternalData.js | 6 + ...InvalidationReasonDescription-members.html | 112 + ...derCacheInvalidationReasonDescription.html | 200 + ...haderCacheInvalidationReasonDescription.js | 5 + ...obalShaderCacheParameterNames-members.html | 113 + ...er_1_1GlobalShaderCacheParameterNames.html | 196 + ...ager_1_1GlobalShaderCacheParameterNames.js | 6 + ...ceBindingManager_1_1Resources-members.html | 112 + ...teResourceBindingManager_1_1Resources.html | 158 + ...riteResourceBindingManager_1_1Resources.js | 5 + structne_1_1ShaderDescription-members.html | 134 + structne_1_1ShaderDescription.html | 835 ++++ structne_1_1ShaderDescription.js | 26 + ...ShaderLightArray_1_1Resources-members.html | 114 + ...ctne_1_1ShaderLightArray_1_1Resources.html | 196 + structne_1_1ShaderLightArray_1_1Resources.js | 7 + ...aderLightsInFrustumSingleType-members.html | 114 + ...ne_1_1ShaderLightsInFrustumSingleType.html | 194 + ...ctne_1_1ShaderLightsInFrustumSingleType.js | 7 + ..._1_1ShaderMacroConfigurations-members.html | 119 + structne_1_1ShaderMacroConfigurations.html | 508 ++ structne_1_1ShaderMacroConfigurations.js | 12 + structne_1_1ShaderMacroSetHash-members.html | 111 + structne_1_1ShaderMacroSetHash.html | 159 + structne_1_1ShaderMacroSetHash.js | 4 + ..._1ShaderManager_1_1ShaderData-members.html | 112 + structne_1_1ShaderManager_1_1ShaderData.html | 156 + structne_1_1ShaderManager_1_1ShaderData.js | 5 + ...aderPack_1_1InternalResources-members.html | 114 + ...ne_1_1ShaderPack_1_1InternalResources.html | 174 + ...ctne_1_1ShaderPack_1_1InternalResources.js | 6 + structne_1_1ShaderPipelines-members.html | 111 + structne_1_1ShaderPipelines.html | 143 + structne_1_1ShaderPipelines.js | 4 + ...apHandle_1_1InternalResources-members.html | 114 + ...1ShadowMapHandle_1_1InternalResources.html | 175 + ...1_1ShadowMapHandle_1_1InternalResources.js | 6 + ...pManager_1_1InternalResources-members.html | 112 + ...ShadowMapManager_1_1InternalResources.html | 158 + ..._1ShadowMapManager_1_1InternalResources.js | 5 + ...r_1_1ShadowMapHandleResources-members.html | 112 + ...apManager_1_1ShadowMapHandleResources.html | 157 + ...wMapManager_1_1ShadowMapHandleResources.js | 5 + ..._1_1ShadowPassLightShaderInfo-members.html | 112 + structne_1_1ShadowPassLightShaderInfo.html | 157 + structne_1_1ShadowPassLightShaderInfo.js | 5 + structne_1_1SourceLocationInfo-members.html | 112 + structne_1_1SourceLocationInfo.html | 157 + structne_1_1SourceLocationInfo.js | 5 + ...Node_1_1LocalSpaceInformation-members.html | 113 + ...1SpatialNode_1_1LocalSpaceInformation.html | 155 + ...1_1SpatialNode_1_1LocalSpaceInformation.js | 5 + ...ode_1_1WorldMatrixInformation-members.html | 120 + ...SpatialNode_1_1WorldMatrixInformation.html | 274 ++ ..._1SpatialNode_1_1WorldMatrixInformation.js | 12 + structne_1_1Sphere-members.html | 115 + structne_1_1Sphere.html | 258 + structne_1_1Sphere.js | 8 + ..._1SpotlightNode_1_1ShaderData-members.html | 114 + structne_1_1SpotlightNode_1_1ShaderData.html | 178 + structne_1_1SpotlightNode_1_1ShaderData.js | 7 + ...erData_1_1ShadowPassDataGroup-members.html | 113 + ..._1_1ShaderData_1_1ShadowPassDataGroup.html | 157 + ...de_1_1ShaderData_1_1ShadowPassDataGroup.js | 5 + ...htNode_1_1SpotlightShaderData-members.html | 121 + ...1SpotlightNode_1_1SpotlightShaderData.html | 293 ++ ...1_1SpotlightNode_1_1SpotlightShaderData.js | 13 + structne_1_1StdStringHash-members.html | 114 + structne_1_1StdStringHash.html | 250 + structne_1_1StdStringHash.js | 7 + ...ureManager_1_1TextureResource-members.html | 112 + ..._1_1TextureManager_1_1TextureResource.html | 155 + ...ne_1_1TextureManager_1_1TextureResource.js | 5 + structne_1_1VulkanFrameResource-members.html | 117 + structne_1_1VulkanFrameResource.html | 242 + structne_1_1VulkanFrameResource.js | 7 + structne_1_1VulkanFrameResource.png | Bin 0 -> 677 bytes ...Pipeline_1_1InternalResources-members.html | 119 + ..._1VulkanPipeline_1_1InternalResources.html | 267 + ..._1_1VulkanPipeline_1_1InternalResources.js | 11 + ...enderer_1_1QueueFamilyIndices-members.html | 114 + ...1VulkanRenderer_1_1QueueFamilyIndices.html | 189 + ...1_1VulkanRenderer_1_1QueueFamilyIndices.js | 6 + ...r_1_1SwapChainImageSemaphores-members.html | 113 + ...nRenderer_1_1SwapChainImageSemaphores.html | 174 + ...kanRenderer_1_1SwapChainImageSemaphores.js | 6 + ...er_1_1SwapChainSupportDetails-members.html | 113 + ...anRenderer_1_1SwapChainSupportDetails.html | 172 + ...lkanRenderer_1_1SwapChainSupportDetails.js | 6 + ...yIndexManager_1_1InternalData-members.html | 112 + ...wMapArrayIndexManager_1_1InternalData.html | 156 + ...dowMapArrayIndexManager_1_1InternalData.js | 5 + ...ne_1_1WindowBuilderParameters-members.html | 118 + structne_1_1WindowBuilderParameters.html | 259 + structne_1_1WindowBuilderParameters.js | 11 + sync_off.png | Bin 0 -> 853 bytes sync_on.png | Bin 0 -> 845 bytes tab_a.png | Bin 0 -> 142 bytes tab_ad.png | Bin 0 -> 135 bytes tab_b.png | Bin 0 -> 169 bytes tab_bd.png | Bin 0 -> 173 bytes tab_h.png | Bin 0 -> 177 bytes tab_hd.png | Bin 0 -> 180 bytes tab_s.png | Bin 0 -> 184 bytes tab_sd.png | Bin 0 -> 188 bytes tabs.css | 1 + 1389 files changed, 224981 insertions(+) create mode 100644 .nojekyll create mode 100644 AABB_8h_source.html create mode 100644 CameraManager_8h_source.html create mode 100644 CameraNode_8h_source.html create mode 100644 CameraProperties_8h_source.html create mode 100644 ComputeShaderInterface_8h_source.html create mode 100644 Cone_8h_source.html create mode 100644 ConfigManager_8h_source.html create mode 100644 DescriptorConstants_8hpp_source.html create mode 100644 DescriptorSetLayoutGenerator_8h_source.html create mode 100644 DesktopNotification_8h_source.html create mode 100644 DirectXDescriptorHeap_8h_source.html create mode 100644 DirectXDescriptorType_8hpp_source.html create mode 100644 DirectXDescriptor_8h_source.html create mode 100644 DirectXFrameResource_8h_source.html create mode 100644 DirectXPso_8h_source.html create mode 100644 DirectXRenderer_8h_source.html create mode 100644 DirectXResourceManager_8h_source.html create mode 100644 DirectXResource_8h_source.html create mode 100644 DirectXShadowMapArrayIndexManager_8h_source.html create mode 100644 DirectionalLightNode_8h_source.html create mode 100644 DynamicCpuWriteShaderResourceArrayManager_8h_source.html create mode 100644 DynamicCpuWriteShaderResourceArray_8h_source.html create mode 100644 EditorCameraNode_8h_source.html create mode 100644 EditorGameInstance_8h_source.html create mode 100644 EditorInputEventIds_8hpp_source.html create mode 100644 EditorNodeCreationHelpers_8hpp_source.html create mode 100644 EngineShaderConstantMacros_8hpp_source.html create mode 100644 EngineShaderNames_8hpp_source.html create mode 100644 EngineShaders_8hpp_source.html create mode 100644 EnvironmentNode_8h_source.html create mode 100644 Error_8h_source.html create mode 100644 FieldSerializerManager_8h_source.html create mode 100644 FileDialog_8h_source.html create mode 100644 FrameResourceManager_8h_source.html create mode 100644 FrameResource_8h_source.html create mode 100644 Frustum_8h_source.html create mode 100644 GLFW_8hpp_source.html create mode 100644 GLMath_8hpp_source.html create mode 100644 GameInstance_8h_source.html create mode 100644 GameManager_8h_source.html create mode 100644 GlmVecFieldSerializer_8h_source.html create mode 100644 GlobalShaderResourceBindingManager_8h_source.html create mode 100644 GlobalShaderResourceBinding_8h_source.html create mode 100644 Globals_8h_source.html create mode 100644 GlslComputeShaderInterface_8h_source.html create mode 100644 GlslGlobalShaderResourceBinding_8h_source.html create mode 100644 GlslShaderCacheManager_8h_source.html create mode 100644 GlslShaderTextureResourceBinding_8h_source.html create mode 100644 GlslShader_8h_source.html create mode 100644 GlslVertexFormatDescription_8h_source.html create mode 100644 GpuResourceManager_8h_source.html create mode 100644 GpuResource_8h_source.html create mode 100644 GuidProperty_8h_source.html create mode 100644 HlslComputeShaderInterface_8h_source.html create mode 100644 HlslGlobalShaderResourceBinding_8h_source.html create mode 100644 HlslShaderCacheManager_8h_source.html create mode 100644 HlslShaderTextureResourceBinding_8h_source.html create mode 100644 HlslShader_8h_source.html create mode 100644 HlslVertexFormatDescription_8h_source.html create mode 100644 IBinaryFieldSerializer_8hpp_source.html create mode 100644 IFieldSerializer_8hpp_source.html create mode 100644 InputManager_8h_source.html create mode 100644 KeyboardKey_8hpp_source.html create mode 100644 KtxLoadingCallbackManager_8h_source.html create mode 100644 LightingShaderResourceManager_8h_source.html create mode 100644 Logger_8h_source.html create mode 100644 Material_8h_source.html create mode 100644 MathHelpers_8hpp_source.html create mode 100644 MeshDataBinaryFieldSerializer_8h_source.html create mode 100644 MeshData_8h_source.html create mode 100644 MeshImporter_8h_source.html create mode 100644 MeshNodeGlslVertexFormatDescription_8h_source.html create mode 100644 MeshNodeHlslVertexFormatDescription_8h_source.html create mode 100644 MeshNode_8h_source.html create mode 100644 MessageBox_8h_source.html create mode 100644 MouseButton_8hpp_source.html create mode 100644 NodeFunction_8hpp_source.html create mode 100644 NodeNotificationBroadcaster_8hpp_source.html create mode 100644 Node_8h_source.html create mode 100644 OpenLinkInBrowser_8h_source.html create mode 100644 PipelineConfiguration_8h_source.html create mode 100644 PipelineManager_8h_source.html create mode 100644 PipelineRegistry_8hpp_source.html create mode 100644 PipelineShaderConstantsManager_8hpp_source.html create mode 100644 PipelineSharedPtr_8h_source.html create mode 100644 PipelineType_8hpp_source.html create mode 100644 Pipeline_8h_source.html create mode 100644 Plane_8h_source.html create mode 100644 PointLightNode_8h_source.html create mode 100644 PrimitiveFieldSerializer_8h_source.html create mode 100644 PrimitiveMeshGenerator_8h_source.html create mode 100644 Profiler_8hpp_source.html create mode 100644 ProjectPaths_8h_source.html create mode 100644 RenderSettings_8h_source.html create mode 100644 RenderStatistics_8h_source.html create mode 100644 Renderer_8h_source.html create mode 100644 RootSignatureGenerator_8h_source.html create mode 100644 SerializableObjectFieldSerializer_8h_source.html create mode 100644 Serializable_8h_source.html create mode 100644 SerializeProperty_8h_source.html create mode 100644 ShaderArrayIndexManager_8h_source.html create mode 100644 ShaderCacheManager_8h_source.html create mode 100644 ShaderCpuWriteResourceBindingManager_8h_source.html create mode 100644 ShaderCpuWriteResourceBindingUniquePtr_8h_source.html create mode 100644 ShaderCpuWriteResourceBinding_8h_source.html create mode 100644 ShaderDescription_8h_source.html create mode 100644 ShaderFilesystemPaths_8hpp_source.html create mode 100644 ShaderLightArray_8h_source.html create mode 100644 ShaderLightsInFrustumSingleType_8hpp_source.html create mode 100644 ShaderMacro_8h_source.html create mode 100644 ShaderManager_8h_source.html create mode 100644 ShaderPack_8h_source.html create mode 100644 ShaderResourceBinding_8h_source.html create mode 100644 ShaderTextureResourceBindingManager_8h_source.html create mode 100644 ShaderTextureResourceBindingUniquePtr_8h_source.html create mode 100644 ShaderUser_8h_source.html create mode 100644 Shader_8h_source.html create mode 100644 ShadowMapArrayIndexManager_8h_source.html create mode 100644 ShadowMapHandle_8h_source.html create mode 100644 ShadowMapManager_8h_source.html create mode 100644 ShadowMapType_8hpp_source.html create mode 100644 SpatialNode_8h_source.html create mode 100644 SpecialRootParameterSlot_8hpp_source.html create mode 100644 Sphere_8h_source.html create mode 100644 SpotlightNode_8h_source.html create mode 100644 StdHashes_8hpp_source.html create mode 100644 StringFieldSerializer_8h_source.html create mode 100644 TextureHandle_8h_source.html create mode 100644 TextureImporter_8h_source.html create mode 100644 TextureManager_8h_source.html create mode 100644 ThreadPool_8h_source.html create mode 100644 Timer_8h_source.html create mode 100644 UniqueValueGenerator_8h_source.html create mode 100644 UnorderedMapFieldSerializer_8h_source.html create mode 100644 UploadBuffer_8h_source.html create mode 100644 VectorFieldSerializer_8h_source.html create mode 100644 VertexFormat_8h_source.html create mode 100644 VulkanAlignmentConstants_8hpp_source.html create mode 100644 VulkanFrameResource_8h_source.html create mode 100644 VulkanPipeline_8h_source.html create mode 100644 VulkanRenderer_8h_source.html create mode 100644 VulkanResourceManager_8h_source.html create mode 100644 VulkanResource_8h_source.html create mode 100644 VulkanShadowMapArrayIndexManager_8h_source.html create mode 100644 Window_8h_source.html create mode 100644 World_8h_source.html create mode 100644 annotated.html create mode 100644 annotated_dup.js create mode 100644 bc_s.png create mode 100644 bc_sd.png create mode 100644 bdwn.png create mode 100644 classes.html create mode 100644 classne_1_1ActionState-members.html create mode 100644 classne_1_1ActionState.html create mode 100644 classne_1_1ActionState.js create mode 100644 classne_1_1AxisState-members.html create mode 100644 classne_1_1AxisState.html create mode 100644 classne_1_1AxisState.js create mode 100644 classne_1_1CameraManager-members.html create mode 100644 classne_1_1CameraManager.html create mode 100644 classne_1_1CameraManager.js create mode 100644 classne_1_1CameraNode-members.html create mode 100644 classne_1_1CameraNode.html create mode 100644 classne_1_1CameraNode.js create mode 100644 classne_1_1CameraNode.png create mode 100644 classne_1_1CameraProperties-members.html create mode 100644 classne_1_1CameraProperties.html create mode 100644 classne_1_1CameraProperties.js create mode 100644 classne_1_1ColorPipelineConfiguration-members.html create mode 100644 classne_1_1ColorPipelineConfiguration.html create mode 100644 classne_1_1ColorPipelineConfiguration.js create mode 100644 classne_1_1ColorPipelineConfiguration.png create mode 100644 classne_1_1CompressonatorSingleton-members.html create mode 100644 classne_1_1CompressonatorSingleton.html create mode 100644 classne_1_1CompressonatorSingleton.js create mode 100644 classne_1_1ComputePipelineConfiguration-members.html create mode 100644 classne_1_1ComputePipelineConfiguration.html create mode 100644 classne_1_1ComputePipelineConfiguration.js create mode 100644 classne_1_1ComputePipelineConfiguration.png create mode 100644 classne_1_1ComputeShaderInterface-members.html create mode 100644 classne_1_1ComputeShaderInterface.html create mode 100644 classne_1_1ComputeShaderInterface.js create mode 100644 classne_1_1ComputeShaderInterface.png create mode 100644 classne_1_1ConfigManager-members.html create mode 100644 classne_1_1ConfigManager.html create mode 100644 classne_1_1ConfigManager.js create mode 100644 classne_1_1ContinuousDirectXDescriptorRange-members.html create mode 100644 classne_1_1ContinuousDirectXDescriptorRange.html create mode 100644 classne_1_1ContinuousDirectXDescriptorRange.js create mode 100644 classne_1_1DelayedPipelineResourcesCreation-members.html create mode 100644 classne_1_1DelayedPipelineResourcesCreation.html create mode 100644 classne_1_1DelayedPipelineResourcesCreation.js create mode 100644 classne_1_1DepthPipelineConfiguration-members.html create mode 100644 classne_1_1DepthPipelineConfiguration.html create mode 100644 classne_1_1DepthPipelineConfiguration.js create mode 100644 classne_1_1DepthPipelineConfiguration.png create mode 100644 classne_1_1DescriptorSetLayoutGenerator-members.html create mode 100644 classne_1_1DescriptorSetLayoutGenerator.html create mode 100644 classne_1_1DescriptorSetLayoutGenerator.js create mode 100644 classne_1_1DesktopNotification-members.html create mode 100644 classne_1_1DesktopNotification.html create mode 100644 classne_1_1DesktopNotification.js create mode 100644 classne_1_1DirectXDescriptor-members.html create mode 100644 classne_1_1DirectXDescriptor.html create mode 100644 classne_1_1DirectXDescriptor.js create mode 100644 classne_1_1DirectXDescriptorHeap-members.html create mode 100644 classne_1_1DirectXDescriptorHeap.html create mode 100644 classne_1_1DirectXDescriptorHeap.js create mode 100644 classne_1_1DirectXPso-members.html create mode 100644 classne_1_1DirectXPso.html create mode 100644 classne_1_1DirectXPso.js create mode 100644 classne_1_1DirectXPso.png create mode 100644 classne_1_1DirectXRenderer-members.html create mode 100644 classne_1_1DirectXRenderer.html create mode 100644 classne_1_1DirectXRenderer.js create mode 100644 classne_1_1DirectXRenderer.png create mode 100644 classne_1_1DirectXResource-members.html create mode 100644 classne_1_1DirectXResource.html create mode 100644 classne_1_1DirectXResource.js create mode 100644 classne_1_1DirectXResource.png create mode 100644 classne_1_1DirectXResourceManager-members.html create mode 100644 classne_1_1DirectXResourceManager.html create mode 100644 classne_1_1DirectXResourceManager.js create mode 100644 classne_1_1DirectXResourceManager.png create mode 100644 classne_1_1DirectXShadowMapArrayIndexManager-members.html create mode 100644 classne_1_1DirectXShadowMapArrayIndexManager.html create mode 100644 classne_1_1DirectXShadowMapArrayIndexManager.js create mode 100644 classne_1_1DirectXShadowMapArrayIndexManager.png create mode 100644 classne_1_1DirectionalLightNode-members.html create mode 100644 classne_1_1DirectionalLightNode.html create mode 100644 classne_1_1DirectionalLightNode.js create mode 100644 classne_1_1DirectionalLightNode.png create mode 100644 classne_1_1DynamicCpuWriteShaderResourceArray-members.html create mode 100644 classne_1_1DynamicCpuWriteShaderResourceArray.html create mode 100644 classne_1_1DynamicCpuWriteShaderResourceArray.js create mode 100644 classne_1_1DynamicCpuWriteShaderResourceArrayManager-members.html create mode 100644 classne_1_1DynamicCpuWriteShaderResourceArrayManager.html create mode 100644 classne_1_1DynamicCpuWriteShaderResourceArrayManager.js create mode 100644 classne_1_1DynamicCpuWriteShaderResourceArraySlot-members.html create mode 100644 classne_1_1DynamicCpuWriteShaderResourceArraySlot.html create mode 100644 classne_1_1DynamicCpuWriteShaderResourceArraySlot.js create mode 100644 classne_1_1EditorCameraNode-members.html create mode 100644 classne_1_1EditorCameraNode.html create mode 100644 classne_1_1EditorCameraNode.js create mode 100644 classne_1_1EditorCameraNode.png create mode 100644 classne_1_1EditorGameInstance-members.html create mode 100644 classne_1_1EditorGameInstance.html create mode 100644 classne_1_1EditorGameInstance.js create mode 100644 classne_1_1EditorGameInstance.png create mode 100644 classne_1_1EditorNodeCreationHelpers-members.html create mode 100644 classne_1_1EditorNodeCreationHelpers.html create mode 100644 classne_1_1EditorNodeCreationHelpers.js create mode 100644 classne_1_1EngineShaderConstantMacros-members.html create mode 100644 classne_1_1EngineShaderConstantMacros.html create mode 100644 classne_1_1EngineShaderConstantMacros.js create mode 100644 classne_1_1EngineShaderNames-members.html create mode 100644 classne_1_1EngineShaderNames.html create mode 100644 classne_1_1EngineShaderNames.js create mode 100644 classne_1_1EngineShaders-members.html create mode 100644 classne_1_1EngineShaders.html create mode 100644 classne_1_1EngineShaders.js create mode 100644 classne_1_1EnvironmentNode-members.html create mode 100644 classne_1_1EnvironmentNode.html create mode 100644 classne_1_1EnvironmentNode.js create mode 100644 classne_1_1EnvironmentNode.png create mode 100644 classne_1_1Error-members.html create mode 100644 classne_1_1Error.html create mode 100644 classne_1_1Error.js create mode 100644 classne_1_1FieldSerializerManager-members.html create mode 100644 classne_1_1FieldSerializerManager.html create mode 100644 classne_1_1FieldSerializerManager.js create mode 100644 classne_1_1FileDialog-members.html create mode 100644 classne_1_1FileDialog.html create mode 100644 classne_1_1FileDialog.js create mode 100644 classne_1_1FrameResourceManager-members.html create mode 100644 classne_1_1FrameResourceManager.html create mode 100644 classne_1_1FrameResourceManager.js create mode 100644 classne_1_1GLFW-members.html create mode 100644 classne_1_1GLFW.html create mode 100644 classne_1_1GLFW.js create mode 100644 classne_1_1GameInstance-members.html create mode 100644 classne_1_1GameInstance.html create mode 100644 classne_1_1GameInstance.js create mode 100644 classne_1_1GameInstance.png create mode 100644 classne_1_1GameManager-members.html create mode 100644 classne_1_1GameManager.html create mode 100644 classne_1_1GameManager.js create mode 100644 classne_1_1GlmVecFieldSerializer-members.html create mode 100644 classne_1_1GlmVecFieldSerializer.html create mode 100644 classne_1_1GlmVecFieldSerializer.js create mode 100644 classne_1_1GlmVecFieldSerializer.png create mode 100644 classne_1_1GlobalShaderResourceBinding-members.html create mode 100644 classne_1_1GlobalShaderResourceBinding.html create mode 100644 classne_1_1GlobalShaderResourceBinding.js create mode 100644 classne_1_1GlobalShaderResourceBinding.png create mode 100644 classne_1_1GlobalShaderResourceBindingManager-members.html create mode 100644 classne_1_1GlobalShaderResourceBindingManager.html create mode 100644 classne_1_1GlobalShaderResourceBindingManager.js create mode 100644 classne_1_1Globals-members.html create mode 100644 classne_1_1Globals.html create mode 100644 classne_1_1Globals.js create mode 100644 classne_1_1GlslComputeShaderInterface-members.html create mode 100644 classne_1_1GlslComputeShaderInterface.html create mode 100644 classne_1_1GlslComputeShaderInterface.js create mode 100644 classne_1_1GlslComputeShaderInterface.png create mode 100644 classne_1_1GlslGlobalShaderResourceBinding-members.html create mode 100644 classne_1_1GlslGlobalShaderResourceBinding.html create mode 100644 classne_1_1GlslGlobalShaderResourceBinding.js create mode 100644 classne_1_1GlslGlobalShaderResourceBinding.png create mode 100644 classne_1_1GlslShader-members.html create mode 100644 classne_1_1GlslShader.html create mode 100644 classne_1_1GlslShader.js create mode 100644 classne_1_1GlslShader.png create mode 100644 classne_1_1GlslShaderCacheManager-members.html create mode 100644 classne_1_1GlslShaderCacheManager.html create mode 100644 classne_1_1GlslShaderCacheManager.js create mode 100644 classne_1_1GlslShaderCacheManager.png create mode 100644 classne_1_1GlslShaderTextureResourceBinding-members.html create mode 100644 classne_1_1GlslShaderTextureResourceBinding.html create mode 100644 classne_1_1GlslShaderTextureResourceBinding.js create mode 100644 classne_1_1GlslShaderTextureResourceBinding.png create mode 100644 classne_1_1GlslVertexFormatDescription-members.html create mode 100644 classne_1_1GlslVertexFormatDescription.html create mode 100644 classne_1_1GlslVertexFormatDescription.js create mode 100644 classne_1_1GlslVertexFormatDescription.png create mode 100644 classne_1_1GpuResource-members.html create mode 100644 classne_1_1GpuResource.html create mode 100644 classne_1_1GpuResource.js create mode 100644 classne_1_1GpuResource.png create mode 100644 classne_1_1GpuResourceManager-members.html create mode 100644 classne_1_1GpuResourceManager.html create mode 100644 classne_1_1GpuResourceManager.js create mode 100644 classne_1_1GpuResourceManager.png create mode 100644 classne_1_1Guid-members.html create mode 100644 classne_1_1Guid.html create mode 100644 classne_1_1Guid.js create mode 100644 classne_1_1Guid.png create mode 100644 classne_1_1HlslComputeShaderInterface-members.html create mode 100644 classne_1_1HlslComputeShaderInterface.html create mode 100644 classne_1_1HlslComputeShaderInterface.js create mode 100644 classne_1_1HlslComputeShaderInterface.png create mode 100644 classne_1_1HlslGlobalShaderResourceBinding-members.html create mode 100644 classne_1_1HlslGlobalShaderResourceBinding.html create mode 100644 classne_1_1HlslGlobalShaderResourceBinding.js create mode 100644 classne_1_1HlslGlobalShaderResourceBinding.png create mode 100644 classne_1_1HlslShader-members.html create mode 100644 classne_1_1HlslShader.html create mode 100644 classne_1_1HlslShader.js create mode 100644 classne_1_1HlslShader.png create mode 100644 classne_1_1HlslShaderCacheManager-members.html create mode 100644 classne_1_1HlslShaderCacheManager.html create mode 100644 classne_1_1HlslShaderCacheManager.js create mode 100644 classne_1_1HlslShaderCacheManager.png create mode 100644 classne_1_1HlslShaderTextureResourceBinding-members.html create mode 100644 classne_1_1HlslShaderTextureResourceBinding.html create mode 100644 classne_1_1HlslShaderTextureResourceBinding.js create mode 100644 classne_1_1HlslShaderTextureResourceBinding.png create mode 100644 classne_1_1HlslVertexFormatDescription-members.html create mode 100644 classne_1_1HlslVertexFormatDescription.html create mode 100644 classne_1_1HlslVertexFormatDescription.js create mode 100644 classne_1_1HlslVertexFormatDescription.png create mode 100644 classne_1_1IBinaryFieldSerializer-members.html create mode 100644 classne_1_1IBinaryFieldSerializer.html create mode 100644 classne_1_1IBinaryFieldSerializer.js create mode 100644 classne_1_1IBinaryFieldSerializer.png create mode 100644 classne_1_1IFieldSerializer-members.html create mode 100644 classne_1_1IFieldSerializer.html create mode 100644 classne_1_1IFieldSerializer.js create mode 100644 classne_1_1IFieldSerializer.png create mode 100644 classne_1_1InputManager-members.html create mode 100644 classne_1_1InputManager.html create mode 100644 classne_1_1InputManager.js create mode 100644 classne_1_1KeyboardModifiers-members.html create mode 100644 classne_1_1KeyboardModifiers.html create mode 100644 classne_1_1KeyboardModifiers.js create mode 100644 classne_1_1KtxLoadingCallbackManager-members.html create mode 100644 classne_1_1KtxLoadingCallbackManager.html create mode 100644 classne_1_1KtxLoadingCallbackManager.js create mode 100644 classne_1_1LightingShaderResourceManager-members.html create mode 100644 classne_1_1LightingShaderResourceManager.html create mode 100644 classne_1_1LightingShaderResourceManager.js create mode 100644 classne_1_1Logger-members.html create mode 100644 classne_1_1Logger.html create mode 100644 classne_1_1Logger.js create mode 100644 classne_1_1Material-members.html create mode 100644 classne_1_1Material.html create mode 100644 classne_1_1Material.js create mode 100644 classne_1_1Material.png create mode 100644 classne_1_1MathHelpers-members.html create mode 100644 classne_1_1MathHelpers.html create mode 100644 classne_1_1MathHelpers.js create mode 100644 classne_1_1MeshData-members.html create mode 100644 classne_1_1MeshData.html create mode 100644 classne_1_1MeshData.js create mode 100644 classne_1_1MeshData.png create mode 100644 classne_1_1MeshDataBinaryFieldSerializer-members.html create mode 100644 classne_1_1MeshDataBinaryFieldSerializer.html create mode 100644 classne_1_1MeshDataBinaryFieldSerializer.js create mode 100644 classne_1_1MeshDataBinaryFieldSerializer.png create mode 100644 classne_1_1MeshImporter-members.html create mode 100644 classne_1_1MeshImporter.html create mode 100644 classne_1_1MeshImporter.js create mode 100644 classne_1_1MeshNode-members.html create mode 100644 classne_1_1MeshNode.html create mode 100644 classne_1_1MeshNode.js create mode 100644 classne_1_1MeshNode.png create mode 100644 classne_1_1MeshNodeGlslVertexFormatDescription-members.html create mode 100644 classne_1_1MeshNodeGlslVertexFormatDescription.html create mode 100644 classne_1_1MeshNodeGlslVertexFormatDescription.js create mode 100644 classne_1_1MeshNodeGlslVertexFormatDescription.png create mode 100644 classne_1_1MeshNodeHlslVertexFormatDescription-members.html create mode 100644 classne_1_1MeshNodeHlslVertexFormatDescription.html create mode 100644 classne_1_1MeshNodeHlslVertexFormatDescription.js create mode 100644 classne_1_1MeshNodeHlslVertexFormatDescription.png create mode 100644 classne_1_1MessageBox-members.html create mode 100644 classne_1_1MessageBox.html create mode 100644 classne_1_1MessageBox.js create mode 100644 classne_1_1Node-members.html create mode 100644 classne_1_1Node.html create mode 100644 classne_1_1Node.js create mode 100644 classne_1_1Node.png create mode 100644 classne_1_1NodeFunction.html create mode 100644 classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4-members.html create mode 100644 classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html create mode 100644 classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.js create mode 100644 classne_1_1NodeNotificationBroadcaster.html create mode 100644 classne_1_1NodeNotificationBroadcasterBase-members.html create mode 100644 classne_1_1NodeNotificationBroadcasterBase.html create mode 100644 classne_1_1NodeNotificationBroadcasterBase.js create mode 100644 classne_1_1NodeNotificationBroadcasterBase.png create mode 100644 classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4-members.html create mode 100644 classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html create mode 100644 classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.js create mode 100644 classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.png create mode 100644 classne_1_1OpenLinkInBrowser-members.html create mode 100644 classne_1_1OpenLinkInBrowser.html create mode 100644 classne_1_1OpenLinkInBrowser.js create mode 100644 classne_1_1Pipeline-members.html create mode 100644 classne_1_1Pipeline.html create mode 100644 classne_1_1Pipeline.js create mode 100644 classne_1_1Pipeline.png create mode 100644 classne_1_1PipelineConfiguration-members.html create mode 100644 classne_1_1PipelineConfiguration.html create mode 100644 classne_1_1PipelineConfiguration.js create mode 100644 classne_1_1PipelineConfiguration.png create mode 100644 classne_1_1PipelineManager-members.html create mode 100644 classne_1_1PipelineManager.html create mode 100644 classne_1_1PipelineManager.js create mode 100644 classne_1_1PipelineShaderConstantsManager-members.html create mode 100644 classne_1_1PipelineShaderConstantsManager.html create mode 100644 classne_1_1PipelineShaderConstantsManager.js create mode 100644 classne_1_1PipelineSharedPtr-members.html create mode 100644 classne_1_1PipelineSharedPtr.html create mode 100644 classne_1_1PipelineSharedPtr.js create mode 100644 classne_1_1PointLightNode-members.html create mode 100644 classne_1_1PointLightNode.html create mode 100644 classne_1_1PointLightNode.js create mode 100644 classne_1_1PointLightNode.png create mode 100644 classne_1_1PrimitiveFieldSerializer-members.html create mode 100644 classne_1_1PrimitiveFieldSerializer.html create mode 100644 classne_1_1PrimitiveFieldSerializer.js create mode 100644 classne_1_1PrimitiveFieldSerializer.png create mode 100644 classne_1_1PrimitiveMeshGenerator-members.html create mode 100644 classne_1_1PrimitiveMeshGenerator.html create mode 100644 classne_1_1PrimitiveMeshGenerator.js create mode 100644 classne_1_1ProjectPaths-members.html create mode 100644 classne_1_1ProjectPaths.html create mode 100644 classne_1_1ProjectPaths.js create mode 100644 classne_1_1RenderSettings-members.html create mode 100644 classne_1_1RenderSettings.html create mode 100644 classne_1_1RenderSettings.js create mode 100644 classne_1_1RenderSettings.png create mode 100644 classne_1_1RenderStatistics-members.html create mode 100644 classne_1_1RenderStatistics.html create mode 100644 classne_1_1RenderStatistics.js create mode 100644 classne_1_1Renderer-members.html create mode 100644 classne_1_1Renderer.html create mode 100644 classne_1_1Renderer.js create mode 100644 classne_1_1Renderer.png create mode 100644 classne_1_1RootSignatureGenerator-members.html create mode 100644 classne_1_1RootSignatureGenerator.html create mode 100644 classne_1_1RootSignatureGenerator.js create mode 100644 classne_1_1RootSignatureGenerator_1_1RootParameter-members.html create mode 100644 classne_1_1RootSignatureGenerator_1_1RootParameter.html create mode 100644 classne_1_1RootSignatureGenerator_1_1RootParameter.js create mode 100644 classne_1_1Serializable-members.html create mode 100644 classne_1_1Serializable.html create mode 100644 classne_1_1Serializable.js create mode 100644 classne_1_1Serializable.png create mode 100644 classne_1_1SerializableObjectFieldSerializer-members.html create mode 100644 classne_1_1SerializableObjectFieldSerializer.html create mode 100644 classne_1_1SerializableObjectFieldSerializer.js create mode 100644 classne_1_1SerializableObjectFieldSerializer.png create mode 100644 classne_1_1Serialize-members.html create mode 100644 classne_1_1Serialize.html create mode 100644 classne_1_1Serialize.js create mode 100644 classne_1_1Serialize.png create mode 100644 classne_1_1Shader-members.html create mode 100644 classne_1_1Shader.html create mode 100644 classne_1_1Shader.js create mode 100644 classne_1_1Shader.png create mode 100644 classne_1_1ShaderArrayIndex-members.html create mode 100644 classne_1_1ShaderArrayIndex.html create mode 100644 classne_1_1ShaderArrayIndex.js create mode 100644 classne_1_1ShaderArrayIndexManager-members.html create mode 100644 classne_1_1ShaderArrayIndexManager.html create mode 100644 classne_1_1ShaderArrayIndexManager.js create mode 100644 classne_1_1ShaderCacheManager-members.html create mode 100644 classne_1_1ShaderCacheManager.html create mode 100644 classne_1_1ShaderCacheManager.js create mode 100644 classne_1_1ShaderCacheManager.png create mode 100644 classne_1_1ShaderConfiguration-members.html create mode 100644 classne_1_1ShaderConfiguration.html create mode 100644 classne_1_1ShaderConfiguration.js create mode 100644 classne_1_1ShaderCpuWriteResourceBinding-members.html create mode 100644 classne_1_1ShaderCpuWriteResourceBinding.html create mode 100644 classne_1_1ShaderCpuWriteResourceBinding.js create mode 100644 classne_1_1ShaderCpuWriteResourceBinding.png create mode 100644 classne_1_1ShaderCpuWriteResourceBindingManager-members.html create mode 100644 classne_1_1ShaderCpuWriteResourceBindingManager.html create mode 100644 classne_1_1ShaderCpuWriteResourceBindingManager.js create mode 100644 classne_1_1ShaderCpuWriteResourceBindingUniquePtr-members.html create mode 100644 classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html create mode 100644 classne_1_1ShaderCpuWriteResourceBindingUniquePtr.js create mode 100644 classne_1_1ShaderFilesystemPaths-members.html create mode 100644 classne_1_1ShaderFilesystemPaths.html create mode 100644 classne_1_1ShaderFilesystemPaths.js create mode 100644 classne_1_1ShaderLightArray-members.html create mode 100644 classne_1_1ShaderLightArray.html create mode 100644 classne_1_1ShaderLightArray.js create mode 100644 classne_1_1ShaderLightArraySlot-members.html create mode 100644 classne_1_1ShaderLightArraySlot.html create mode 100644 classne_1_1ShaderLightArraySlot.js create mode 100644 classne_1_1ShaderManager-members.html create mode 100644 classne_1_1ShaderManager.html create mode 100644 classne_1_1ShaderManager.js create mode 100644 classne_1_1ShaderPack-members.html create mode 100644 classne_1_1ShaderPack.html create mode 100644 classne_1_1ShaderPack.js create mode 100644 classne_1_1ShaderResourceBindingBase-members.html create mode 100644 classne_1_1ShaderResourceBindingBase.html create mode 100644 classne_1_1ShaderResourceBindingBase.js create mode 100644 classne_1_1ShaderResourceBindingBase.png create mode 100644 classne_1_1ShaderTextureResourceBinding-members.html create mode 100644 classne_1_1ShaderTextureResourceBinding.html create mode 100644 classne_1_1ShaderTextureResourceBinding.js create mode 100644 classne_1_1ShaderTextureResourceBinding.png create mode 100644 classne_1_1ShaderTextureResourceBindingManager-members.html create mode 100644 classne_1_1ShaderTextureResourceBindingManager.html create mode 100644 classne_1_1ShaderTextureResourceBindingManager.js create mode 100644 classne_1_1ShaderTextureResourceBindingUniquePtr-members.html create mode 100644 classne_1_1ShaderTextureResourceBindingUniquePtr.html create mode 100644 classne_1_1ShaderTextureResourceBindingUniquePtr.js create mode 100644 classne_1_1ShaderUser-members.html create mode 100644 classne_1_1ShaderUser.html create mode 100644 classne_1_1ShaderUser.js create mode 100644 classne_1_1ShaderUser.png create mode 100644 classne_1_1ShadowMapArrayIndexManager-members.html create mode 100644 classne_1_1ShadowMapArrayIndexManager.html create mode 100644 classne_1_1ShadowMapArrayIndexManager.js create mode 100644 classne_1_1ShadowMapArrayIndexManager.png create mode 100644 classne_1_1ShadowMapHandle-members.html create mode 100644 classne_1_1ShadowMapHandle.html create mode 100644 classne_1_1ShadowMapHandle.js create mode 100644 classne_1_1ShadowMapManager-members.html create mode 100644 classne_1_1ShadowMapManager.html create mode 100644 classne_1_1ShadowMapManager.js create mode 100644 classne_1_1SpatialNode-members.html create mode 100644 classne_1_1SpatialNode.html create mode 100644 classne_1_1SpatialNode.js create mode 100644 classne_1_1SpatialNode.png create mode 100644 classne_1_1SpotlightNode-members.html create mode 100644 classne_1_1SpotlightNode.html create mode 100644 classne_1_1SpotlightNode.js create mode 100644 classne_1_1SpotlightNode.png create mode 100644 classne_1_1StringFieldSerializer-members.html create mode 100644 classne_1_1StringFieldSerializer.html create mode 100644 classne_1_1StringFieldSerializer.js create mode 100644 classne_1_1StringFieldSerializer.png create mode 100644 classne_1_1TextureHandle-members.html create mode 100644 classne_1_1TextureHandle.html create mode 100644 classne_1_1TextureHandle.js create mode 100644 classne_1_1TextureImporter-members.html create mode 100644 classne_1_1TextureImporter.html create mode 100644 classne_1_1TextureImporter.js create mode 100644 classne_1_1TextureManager-members.html create mode 100644 classne_1_1TextureManager.html create mode 100644 classne_1_1TextureManager.js create mode 100644 classne_1_1ThreadPool-members.html create mode 100644 classne_1_1ThreadPool.html create mode 100644 classne_1_1ThreadPool.js create mode 100644 classne_1_1Timer-members.html create mode 100644 classne_1_1Timer.html create mode 100644 classne_1_1Timer.js create mode 100644 classne_1_1UniqueValueGenerator-members.html create mode 100644 classne_1_1UniqueValueGenerator.html create mode 100644 classne_1_1UniqueValueGenerator.js create mode 100644 classne_1_1UnorderedMapFieldSerializer-members.html create mode 100644 classne_1_1UnorderedMapFieldSerializer.html create mode 100644 classne_1_1UnorderedMapFieldSerializer.js create mode 100644 classne_1_1UnorderedMapFieldSerializer.png create mode 100644 classne_1_1UploadBuffer-members.html create mode 100644 classne_1_1UploadBuffer.html create mode 100644 classne_1_1UploadBuffer.js create mode 100644 classne_1_1VectorFieldSerializer-members.html create mode 100644 classne_1_1VectorFieldSerializer.html create mode 100644 classne_1_1VectorFieldSerializer.js create mode 100644 classne_1_1VectorFieldSerializer.png create mode 100644 classne_1_1VertexFormatDescription-members.html create mode 100644 classne_1_1VertexFormatDescription.html create mode 100644 classne_1_1VertexFormatDescription.js create mode 100644 classne_1_1VertexFormatDescription.png create mode 100644 classne_1_1VulkanPipeline-members.html create mode 100644 classne_1_1VulkanPipeline.html create mode 100644 classne_1_1VulkanPipeline.js create mode 100644 classne_1_1VulkanPipeline.png create mode 100644 classne_1_1VulkanRenderer-members.html create mode 100644 classne_1_1VulkanRenderer.html create mode 100644 classne_1_1VulkanRenderer.js create mode 100644 classne_1_1VulkanRenderer.png create mode 100644 classne_1_1VulkanResource-members.html create mode 100644 classne_1_1VulkanResource.html create mode 100644 classne_1_1VulkanResource.js create mode 100644 classne_1_1VulkanResource.png create mode 100644 classne_1_1VulkanResourceManager-members.html create mode 100644 classne_1_1VulkanResourceManager.html create mode 100644 classne_1_1VulkanResourceManager.js create mode 100644 classne_1_1VulkanResourceManager.png create mode 100644 classne_1_1VulkanShadowMapArrayIndexManager-members.html create mode 100644 classne_1_1VulkanShadowMapArrayIndexManager.html create mode 100644 classne_1_1VulkanShadowMapArrayIndexManager.js create mode 100644 classne_1_1VulkanShadowMapArrayIndexManager.png create mode 100644 classne_1_1Window-members.html create mode 100644 classne_1_1Window.html create mode 100644 classne_1_1Window.js create mode 100644 classne_1_1WindowBuilder-members.html create mode 100644 classne_1_1WindowBuilder.html create mode 100644 classne_1_1WindowBuilder.js create mode 100644 classne_1_1WindowCursor-members.html create mode 100644 classne_1_1WindowCursor.html create mode 100644 classne_1_1WindowCursor.js create mode 100644 classne_1_1World-members.html create mode 100644 classne_1_1World.html create mode 100644 classne_1_1World.js create mode 100644 closed.png create mode 100644 custom.css create mode 100644 dir_07e92ae10043998556fc49d19f6eb779.html create mode 100644 dir_07e92ae10043998556fc49d19f6eb779.js create mode 100644 dir_0fc3f353271683a562ec0901a6675197.html create mode 100644 dir_0fc3f353271683a562ec0901a6675197.js create mode 100644 dir_10962f3d170d90e2caa01fd1efc295ff.html create mode 100644 dir_10962f3d170d90e2caa01fd1efc295ff.js create mode 100644 dir_113b11c13d7c2895bdf358ae18b66592.html create mode 100644 dir_1577dd4cf38e07853f65fbc968373ce6.html create mode 100644 dir_1577dd4cf38e07853f65fbc968373ce6.js create mode 100644 dir_1685b704a22d6357ace52e466cd1ac5e.html create mode 100644 dir_1685b704a22d6357ace52e466cd1ac5e.js create mode 100644 dir_1ca65e8ba1b22a57f2a4eac3d8fc7099.html create mode 100644 dir_1ca65e8ba1b22a57f2a4eac3d8fc7099.js create mode 100644 dir_1e31920b674df49ea57e2c48ffba7d7d.html create mode 100644 dir_1e31920b674df49ea57e2c48ffba7d7d.js create mode 100644 dir_1f0460a148d1831e983b3b7b327a0af3.html create mode 100644 dir_1f0460a148d1831e983b3b7b327a0af3.js create mode 100644 dir_254f03e947bc6dd91a4d72413cbda2cf.html create mode 100644 dir_254f03e947bc6dd91a4d72413cbda2cf.js create mode 100644 dir_268c75e817f67fac7f36dfc234371da8.html create mode 100644 dir_268c75e817f67fac7f36dfc234371da8.js create mode 100644 dir_27b5ac4886c1ddd324edea10c5af45aa.html create mode 100644 dir_27b5ac4886c1ddd324edea10c5af45aa.js create mode 100644 dir_27d45686a9f223c6629a96f41f581c7d.html create mode 100644 dir_27d45686a9f223c6629a96f41f581c7d.js create mode 100644 dir_2fdaddfc182c018af5626a1f94c56ef3.html create mode 100644 dir_2fdaddfc182c018af5626a1f94c56ef3.js create mode 100644 dir_3637dc7ee2eaf270386a69dd8cc5f74f.html create mode 100644 dir_3637dc7ee2eaf270386a69dd8cc5f74f.js create mode 100644 dir_3a41e4df855d3e9cc882e016b42358a0.html create mode 100644 dir_3a41e4df855d3e9cc882e016b42358a0.js create mode 100644 dir_4122cc0a79b2f084b533d6511440ed47.html create mode 100644 dir_4122cc0a79b2f084b533d6511440ed47.js create mode 100644 dir_4202ed4c8873735aa34386ac67eb4c07.html create mode 100644 dir_472db985af960b653afc2ffb34fa906a.html create mode 100644 dir_472db985af960b653afc2ffb34fa906a.js create mode 100644 dir_474da58556258c39342071afd2e59e13.html create mode 100644 dir_474da58556258c39342071afd2e59e13.js create mode 100644 dir_48d37b1060bbd18046e66bc0f50da0ee.html create mode 100644 dir_48d37b1060bbd18046e66bc0f50da0ee.js create mode 100644 dir_491e7905d57d55c9ff8056a9680da626.html create mode 100644 dir_491e7905d57d55c9ff8056a9680da626.js create mode 100644 dir_49e56c817e5e54854c35e136979f97ca.html create mode 100644 dir_4ac42a0337879a0a51720acbf248d4f7.html create mode 100644 dir_4ac42a0337879a0a51720acbf248d4f7.js create mode 100644 dir_5629d5967789ab2fdc7d763df656ba36.html create mode 100644 dir_5629d5967789ab2fdc7d763df656ba36.js create mode 100644 dir_58f2be8f45582f1aa2376bfaadba951b.html create mode 100644 dir_58f2be8f45582f1aa2376bfaadba951b.js create mode 100644 dir_5f3dbef217b2af2946a4f0e420be2c99.html create mode 100644 dir_5f3dbef217b2af2946a4f0e420be2c99.js create mode 100644 dir_6117afdc5a20ea9077509ff9fd27d059.html create mode 100644 dir_6117afdc5a20ea9077509ff9fd27d059.js create mode 100644 dir_65368207119fe98db5a81ed315acb55e.html create mode 100644 dir_65368207119fe98db5a81ed315acb55e.js create mode 100644 dir_664997ef76fe448862ddc76e051db805.html create mode 100644 dir_68267d1309a1af8e8297ef4c3efbcdba.html create mode 100644 dir_68267d1309a1af8e8297ef4c3efbcdba.js create mode 100644 dir_686065da544ae8f94faa03fd2fe61e8a.html create mode 100644 dir_686065da544ae8f94faa03fd2fe61e8a.js create mode 100644 dir_69c7518f7154b66a1a05ca106a54e74e.html create mode 100644 dir_69f422428c9f384758bc93d042c887eb.html create mode 100644 dir_69f422428c9f384758bc93d042c887eb.js create mode 100644 dir_6a551b77301a46f3dc885530853d0ddf.html create mode 100644 dir_6df993e62015e5d469b47adf27edd027.html create mode 100644 dir_6df993e62015e5d469b47adf27edd027.js create mode 100644 dir_73177b06cfc33904a08e21f2dd6c1106.html create mode 100644 dir_75df76df1d9a742bd9021c942e21561b.html create mode 100644 dir_75df76df1d9a742bd9021c942e21561b.js create mode 100644 dir_79034dbb0e84398f48ec2875b099469c.html create mode 100644 dir_79034dbb0e84398f48ec2875b099469c.js create mode 100644 dir_794f9c279fc5de1609e6866cc905aba2.html create mode 100644 dir_794f9c279fc5de1609e6866cc905aba2.js create mode 100644 dir_809dd9de87663f5e5f88b07868b7c61b.html create mode 100644 dir_809dd9de87663f5e5f88b07868b7c61b.js create mode 100644 dir_82184aefe48efcedc6cef53e43e0328a.html create mode 100644 dir_8265353e9896f9a7f783d85d71af854a.html create mode 100644 dir_8265353e9896f9a7f783d85d71af854a.js create mode 100644 dir_872dd2b71ff204ef25963c741e258f22.html create mode 100644 dir_872dd2b71ff204ef25963c741e258f22.js create mode 100644 dir_88854e741e94c5d731b598d414654b2c.html create mode 100644 dir_88854e741e94c5d731b598d414654b2c.js create mode 100644 dir_899bc9390cb8cbf630ecd7670efe3f13.html create mode 100644 dir_899bc9390cb8cbf630ecd7670efe3f13.js create mode 100644 dir_8aa75ad3c315dba50bd46cd5118d21c0.html create mode 100644 dir_8aa75ad3c315dba50bd46cd5118d21c0.js create mode 100644 dir_a111cc5adb4103d3d8e4addddf74297e.html create mode 100644 dir_a111cc5adb4103d3d8e4addddf74297e.js create mode 100644 dir_a31afd56823c6335224242a3eb4525db.html create mode 100644 dir_a42664758e28241c1ef480f153ce712b.html create mode 100644 dir_a42664758e28241c1ef480f153ce712b.js create mode 100644 dir_a440d772fec9b9b9c755744f14b33a1c.html create mode 100644 dir_a440d772fec9b9b9c755744f14b33a1c.js create mode 100644 dir_abb9b715da83eecf3aed00df03772ecf.html create mode 100644 dir_b84637558657fd1a99c6ba53f2f33845.html create mode 100644 dir_b84637558657fd1a99c6ba53f2f33845.js create mode 100644 dir_b8a391f29ba7282a16f1b58f19ec24d1.html create mode 100644 dir_b8a391f29ba7282a16f1b58f19ec24d1.js create mode 100644 dir_ba00f76f55d57e13c6522c91ec0c9bfd.html create mode 100644 dir_ba00f76f55d57e13c6522c91ec0c9bfd.js create mode 100644 dir_c3f04a05024532293f5c1665789673df.html create mode 100644 dir_c3f04a05024532293f5c1665789673df.js create mode 100644 dir_c40557993b8c8d997518bc2cf6aac1c9.html create mode 100644 dir_c40557993b8c8d997518bc2cf6aac1c9.js create mode 100644 dir_c437eb56d4fc569e4849da05f836e8b8.html create mode 100644 dir_c437eb56d4fc569e4849da05f836e8b8.js create mode 100644 dir_c5c2ba609f94206dc7ea1dd6e60097e3.html create mode 100644 dir_c5c5dc0e5e7e3e2711eaa3da8c0c58fb.html create mode 100644 dir_c5c5dc0e5e7e3e2711eaa3da8c0c58fb.js create mode 100644 dir_c7b5f78f238c0a868ed56c456d2e83ea.html create mode 100644 dir_c7b5f78f238c0a868ed56c456d2e83ea.js create mode 100644 dir_cb25f7e6d432bdb42797faefca2c4977.html create mode 100644 dir_cb25f7e6d432bdb42797faefca2c4977.js create mode 100644 dir_cc5ba1c7dc8b43cad375ec8b58587329.html create mode 100644 dir_cc5ba1c7dc8b43cad375ec8b58587329.js create mode 100644 dir_d055b31d289f737cf1fc8c64643d4a6d.html create mode 100644 dir_d055b31d289f737cf1fc8c64643d4a6d.js create mode 100644 dir_d4a5a65e74d9bde42699a2d4df034ecd.html create mode 100644 dir_d8e757402d5e38851e01e59a45b84433.html create mode 100644 dir_d8e757402d5e38851e01e59a45b84433.js create mode 100644 dir_dcf71d98cc04d2129765dfad3817fc25.html create mode 100644 dir_dcf71d98cc04d2129765dfad3817fc25.js create mode 100644 dir_e0ace713be3475131e60a0ca9af54636.html create mode 100644 dir_e0ace713be3475131e60a0ca9af54636.js create mode 100644 dir_e0ef9ebe84488d81f54422963e9a9498.html create mode 100644 dir_e0ef9ebe84488d81f54422963e9a9498.js create mode 100644 dir_e593aed00f615f2bbf73ee8f88768802.html create mode 100644 dir_e593aed00f615f2bbf73ee8f88768802.js create mode 100644 dir_e61267bc081b3537f87c78de395feba9.html create mode 100644 dir_e61267bc081b3537f87c78de395feba9.js create mode 100644 dir_e645ce746b7fd7f7b30b25fe28e254d0.html create mode 100644 dir_e8d81150375a7914f8572cbe301f32ad.html create mode 100644 dir_e8d81150375a7914f8572cbe301f32ad.js create mode 100644 dir_eaabbd148ec41e8fc7203d13b7c328e9.html create mode 100644 dir_eaabbd148ec41e8fc7203d13b7c328e9.js create mode 100644 dir_f25fd6cd84e5c1c4cb0c849643e32043.html create mode 100644 dir_f25fd6cd84e5c1c4cb0c849643e32043.js create mode 100644 dir_f4ad63450b3df83649e5cc02f94caeb5.html create mode 100644 dir_f898229b977448ec8cdf46a8044476c7.html create mode 100644 dir_f898229b977448ec8cdf46a8044476c7.js create mode 100644 dir_f903bb129e9c7c874074031c600663f8.html create mode 100644 dir_f903bb129e9c7c874074031c600663f8.js create mode 100644 dir_f9d3efab589c496b9fbceccb86028cc6.html create mode 100644 dir_f9d3efab589c496b9fbceccb86028cc6.js create mode 100644 dir_fdaa52d7ef8aea442f65134e0f91915a.html create mode 100644 dir_fdaa52d7ef8aea442f65134e0f91915a.js create mode 100644 doc.png create mode 100644 docd.png create mode 100644 doxygen-awesome-sidebar-only.css create mode 100644 doxygen-awesome.css create mode 100644 doxygen.css create mode 100644 doxygen.svg create mode 100644 dynsections.js create mode 100644 files.html create mode 100644 files_dup.js create mode 100644 folderclosed.png create mode 100644 folderopen.png create mode 100644 functions.html create mode 100644 functions_b.html create mode 100644 functions_c.html create mode 100644 functions_d.html create mode 100644 functions_dup.js create mode 100644 functions_e.html create mode 100644 functions_enum.html create mode 100644 functions_f.html create mode 100644 functions_func.html create mode 100644 functions_func.js create mode 100644 functions_func_b.html create mode 100644 functions_func_c.html create mode 100644 functions_func_d.html create mode 100644 functions_func_e.html create mode 100644 functions_func_f.html create mode 100644 functions_func_g.html create mode 100644 functions_func_h.html create mode 100644 functions_func_i.html create mode 100644 functions_func_k.html create mode 100644 functions_func_l.html create mode 100644 functions_func_m.html create mode 100644 functions_func_n.html create mode 100644 functions_func_o.html create mode 100644 functions_func_p.html create mode 100644 functions_func_q.html create mode 100644 functions_func_r.html create mode 100644 functions_func_s.html create mode 100644 functions_func_t.html create mode 100644 functions_func_u.html create mode 100644 functions_func_v.html create mode 100644 functions_func_w.html create mode 100644 functions_func_~.html create mode 100644 functions_g.html create mode 100644 functions_h.html create mode 100644 functions_i.html create mode 100644 functions_k.html create mode 100644 functions_l.html create mode 100644 functions_m.html create mode 100644 functions_n.html create mode 100644 functions_o.html create mode 100644 functions_p.html create mode 100644 functions_q.html create mode 100644 functions_r.html create mode 100644 functions_rela.html create mode 100644 functions_s.html create mode 100644 functions_t.html create mode 100644 functions_type.html create mode 100644 functions_u.html create mode 100644 functions_v.html create mode 100644 functions_vars.html create mode 100644 functions_vars.js create mode 100644 functions_vars_b.html create mode 100644 functions_vars_c.html create mode 100644 functions_vars_d.html create mode 100644 functions_vars_e.html create mode 100644 functions_vars_f.html create mode 100644 functions_vars_g.html create mode 100644 functions_vars_h.html create mode 100644 functions_vars_i.html create mode 100644 functions_vars_k.html create mode 100644 functions_vars_l.html create mode 100644 functions_vars_m.html create mode 100644 functions_vars_n.html create mode 100644 functions_vars_o.html create mode 100644 functions_vars_p.html create mode 100644 functions_vars_q.html create mode 100644 functions_vars_r.html create mode 100644 functions_vars_s.html create mode 100644 functions_vars_t.html create mode 100644 functions_vars_u.html create mode 100644 functions_vars_v.html create mode 100644 functions_vars_w.html create mode 100644 functions_w.html create mode 100644 functions_~.html create mode 100644 hierarchy.html create mode 100644 hierarchy.js create mode 100644 index.html create mode 100644 jquery.js create mode 100644 menu.js create mode 100644 menudata.js create mode 100644 nav_f.png create mode 100644 nav_fd.png create mode 100644 nav_g.png create mode 100644 nav_h.png create mode 100644 nav_hd.png create mode 100644 navtree.css create mode 100644 navtree.js create mode 100644 navtreedata.js create mode 100644 navtreeindex0.js create mode 100644 navtreeindex1.js create mode 100644 navtreeindex10.js create mode 100644 navtreeindex11.js create mode 100644 navtreeindex12.js create mode 100644 navtreeindex2.js create mode 100644 navtreeindex3.js create mode 100644 navtreeindex4.js create mode 100644 navtreeindex5.js create mode 100644 navtreeindex6.js create mode 100644 navtreeindex7.js create mode 100644 navtreeindex8.js create mode 100644 navtreeindex9.js create mode 100644 open.png create mode 100644 resize.js create mode 100644 search/all_0.js create mode 100644 search/all_1.js create mode 100644 search/all_10.js create mode 100644 search/all_11.js create mode 100644 search/all_12.js create mode 100644 search/all_13.js create mode 100644 search/all_14.js create mode 100644 search/all_15.js create mode 100644 search/all_16.js create mode 100644 search/all_2.js create mode 100644 search/all_3.js create mode 100644 search/all_4.js create mode 100644 search/all_5.js create mode 100644 search/all_6.js create mode 100644 search/all_7.js create mode 100644 search/all_8.js create mode 100644 search/all_9.js create mode 100644 search/all_a.js create mode 100644 search/all_b.js create mode 100644 search/all_c.js create mode 100644 search/all_d.js create mode 100644 search/all_e.js create mode 100644 search/all_f.js create mode 100644 search/classes_0.js create mode 100644 search/classes_1.js create mode 100644 search/classes_10.js create mode 100644 search/classes_11.js create mode 100644 search/classes_12.js create mode 100644 search/classes_13.js create mode 100644 search/classes_14.js create mode 100644 search/classes_2.js create mode 100644 search/classes_3.js create mode 100644 search/classes_4.js create mode 100644 search/classes_5.js create mode 100644 search/classes_6.js create mode 100644 search/classes_7.js create mode 100644 search/classes_8.js create mode 100644 search/classes_9.js create mode 100644 search/classes_a.js create mode 100644 search/classes_b.js create mode 100644 search/classes_c.js create mode 100644 search/classes_d.js create mode 100644 search/classes_e.js create mode 100644 search/classes_f.js create mode 100644 search/close.svg create mode 100644 search/enums_0.js create mode 100644 search/enums_1.js create mode 100644 search/functions_0.js create mode 100644 search/functions_1.js create mode 100644 search/functions_10.js create mode 100644 search/functions_11.js create mode 100644 search/functions_12.js create mode 100644 search/functions_13.js create mode 100644 search/functions_14.js create mode 100644 search/functions_15.js create mode 100644 search/functions_16.js create mode 100644 search/functions_2.js create mode 100644 search/functions_3.js create mode 100644 search/functions_4.js create mode 100644 search/functions_5.js create mode 100644 search/functions_6.js create mode 100644 search/functions_7.js create mode 100644 search/functions_8.js create mode 100644 search/functions_9.js create mode 100644 search/functions_a.js create mode 100644 search/functions_b.js create mode 100644 search/functions_c.js create mode 100644 search/functions_d.js create mode 100644 search/functions_e.js create mode 100644 search/functions_f.js create mode 100644 search/mag.svg create mode 100644 search/mag_d.svg create mode 100644 search/mag_sel.svg create mode 100644 search/mag_seld.svg create mode 100644 search/pages_0.js create mode 100644 search/related_0.js create mode 100644 search/search.css create mode 100644 search/search.js create mode 100644 search/searchdata.js create mode 100644 search/typedefs_0.js create mode 100644 search/typedefs_1.js create mode 100644 search/typedefs_2.js create mode 100644 search/variables_0.js create mode 100644 search/variables_1.js create mode 100644 search/variables_10.js create mode 100644 search/variables_11.js create mode 100644 search/variables_12.js create mode 100644 search/variables_13.js create mode 100644 search/variables_14.js create mode 100644 search/variables_15.js create mode 100644 search/variables_2.js create mode 100644 search/variables_3.js create mode 100644 search/variables_4.js create mode 100644 search/variables_5.js create mode 100644 search/variables_6.js create mode 100644 search/variables_7.js create mode 100644 search/variables_8.js create mode 100644 search/variables_9.js create mode 100644 search/variables_a.js create mode 100644 search/variables_b.js create mode 100644 search/variables_c.js create mode 100644 search/variables_d.js create mode 100644 search/variables_e.js create mode 100644 search/variables_f.js create mode 100644 splitbar.png create mode 100644 splitbard.png create mode 100644 structne_1_1AABB-members.html create mode 100644 structne_1_1AABB.html create mode 100644 structne_1_1AABB.js create mode 100644 structne_1_1CalledEveryFrameNodes-members.html create mode 100644 structne_1_1CalledEveryFrameNodes.html create mode 100644 structne_1_1CalledEveryFrameNodes.js create mode 100644 structne_1_1CameraProperties_1_1Data-members.html create mode 100644 structne_1_1CameraProperties_1_1Data.html create mode 100644 structne_1_1CameraProperties_1_1Data.js create mode 100644 structne_1_1CameraProperties_1_1Data_1_1OrbitalModeData-members.html create mode 100644 structne_1_1CameraProperties_1_1Data_1_1OrbitalModeData.html create mode 100644 structne_1_1CameraProperties_1_1Data_1_1OrbitalModeData.js create mode 100644 structne_1_1CameraProperties_1_1Data_1_1ProjectionData-members.html create mode 100644 structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html create mode 100644 structne_1_1CameraProperties_1_1Data_1_1ProjectionData.js create mode 100644 structne_1_1CameraProperties_1_1Data_1_1ViewData-members.html create mode 100644 structne_1_1CameraProperties_1_1Data_1_1ViewData.html create mode 100644 structne_1_1CameraProperties_1_1Data_1_1ViewData.js create mode 100644 structne_1_1Cone-members.html create mode 100644 structne_1_1Cone.html create mode 100644 structne_1_1Cone.js create mode 100644 structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData-members.html create mode 100644 structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData.html create mode 100644 structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData.js create mode 100644 structne_1_1DescriptorConstants-members.html create mode 100644 structne_1_1DescriptorConstants.html create mode 100644 structne_1_1DescriptorConstants.js create mode 100644 structne_1_1DescriptorSetLayoutGenerator_1_1Collected-members.html create mode 100644 structne_1_1DescriptorSetLayoutGenerator_1_1Collected.html create mode 100644 structne_1_1DescriptorSetLayoutGenerator_1_1Collected.js create mode 100644 structne_1_1DescriptorSetLayoutGenerator_1_1Collected_1_1DescriptorSetLayoutBindingInfo-members.html create mode 100644 structne_1_1DescriptorSetLayoutGenerator_1_1Collected_1_1DescriptorSetLayoutBindingInfo.html create mode 100644 structne_1_1DescriptorSetLayoutGenerator_1_1Collected_1_1DescriptorSetLayoutBindingInfo.js create mode 100644 structne_1_1DescriptorSetLayoutGenerator_1_1Generated-members.html create mode 100644 structne_1_1DescriptorSetLayoutGenerator_1_1Generated.html create mode 100644 structne_1_1DescriptorSetLayoutGenerator_1_1Generated.js create mode 100644 structne_1_1DeserializedObjectInformation-members.html create mode 100644 structne_1_1DeserializedObjectInformation.html create mode 100644 structne_1_1DeserializedObjectInformation.js create mode 100644 structne_1_1DirectXDescriptorHeap_1_1InternalData-members.html create mode 100644 structne_1_1DirectXDescriptorHeap_1_1InternalData.html create mode 100644 structne_1_1DirectXDescriptorHeap_1_1InternalData.js create mode 100644 structne_1_1DirectXFrameResource-members.html create mode 100644 structne_1_1DirectXFrameResource.html create mode 100644 structne_1_1DirectXFrameResource.js create mode 100644 structne_1_1DirectXFrameResource.png create mode 100644 structne_1_1DirectXPso_1_1InternalResources-members.html create mode 100644 structne_1_1DirectXPso_1_1InternalResources.html create mode 100644 structne_1_1DirectXPso_1_1InternalResources.js create mode 100644 structne_1_1DirectXResource_1_1DescriptorsSameType-members.html create mode 100644 structne_1_1DirectXResource_1_1DescriptorsSameType.html create mode 100644 structne_1_1DirectXResource_1_1DescriptorsSameType.js create mode 100644 structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData-members.html create mode 100644 structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData.html create mode 100644 structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData.js create mode 100644 structne_1_1DirectionalLightNode_1_1ShaderData-members.html create mode 100644 structne_1_1DirectionalLightNode_1_1ShaderData.html create mode 100644 structne_1_1DirectionalLightNode_1_1ShaderData.js create mode 100644 structne_1_1DirectionalLightNode_1_1ShaderData_1_1ShadowPassDataGroup-members.html create mode 100644 structne_1_1DirectionalLightNode_1_1ShaderData_1_1ShadowPassDataGroup.html create mode 100644 structne_1_1DirectionalLightNode_1_1ShaderData_1_1ShadowPassDataGroup.js create mode 100644 structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources-members.html create mode 100644 structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources.html create mode 100644 structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources.js create mode 100644 structne_1_1EditorGameInstance_1_1EditorGcPointers-members.html create mode 100644 structne_1_1EditorGameInstance_1_1EditorGcPointers.html create mode 100644 structne_1_1EditorGameInstance_1_1EditorGcPointers.js create mode 100644 structne_1_1EditorInputEventIds-members.html create mode 100644 structne_1_1EditorInputEventIds.html create mode 100644 structne_1_1EditorInputEventIds.js create mode 100644 structne_1_1EngineShaderConstantMacros_1_1ForwardPlus-members.html create mode 100644 structne_1_1EngineShaderConstantMacros_1_1ForwardPlus.html create mode 100644 structne_1_1EngineShaderConstantMacros_1_1ForwardPlus.js create mode 100644 structne_1_1EngineShaderNames_1_1ForwardPlus-members.html create mode 100644 structne_1_1EngineShaderNames_1_1ForwardPlus.html create mode 100644 structne_1_1EngineShaderNames_1_1ForwardPlus.js create mode 100644 structne_1_1EngineShaderNames_1_1MeshNode-members.html create mode 100644 structne_1_1EngineShaderNames_1_1MeshNode.html create mode 100644 structne_1_1EngineShaderNames_1_1MeshNode.js create mode 100644 structne_1_1EngineShaderNames_1_1PointLight-members.html create mode 100644 structne_1_1EngineShaderNames_1_1PointLight.html create mode 100644 structne_1_1EngineShaderNames_1_1PointLight.js create mode 100644 structne_1_1EngineShaders_1_1ForwardPlus-members.html create mode 100644 structne_1_1EngineShaders_1_1ForwardPlus.html create mode 100644 structne_1_1EngineShaders_1_1ForwardPlus.js create mode 100644 structne_1_1EngineShaders_1_1MeshNode-members.html create mode 100644 structne_1_1EngineShaders_1_1MeshNode.html create mode 100644 structne_1_1EngineShaders_1_1MeshNode.js create mode 100644 structne_1_1EngineShaders_1_1PointLight-members.html create mode 100644 structne_1_1EngineShaders_1_1PointLight.html create mode 100644 structne_1_1EngineShaders_1_1PointLight.js create mode 100644 structne_1_1FrameConstants-members.html create mode 100644 structne_1_1FrameConstants.html create mode 100644 structne_1_1FrameConstants.js create mode 100644 structne_1_1FrameResource-members.html create mode 100644 structne_1_1FrameResource.html create mode 100644 structne_1_1FrameResource.js create mode 100644 structne_1_1FrameResource.png create mode 100644 structne_1_1FrameResourceManager_1_1CurrentFrameResource-members.html create mode 100644 structne_1_1FrameResourceManager_1_1CurrentFrameResource.html create mode 100644 structne_1_1FrameResourceManager_1_1CurrentFrameResource.js create mode 100644 structne_1_1Frustum-members.html create mode 100644 structne_1_1Frustum.html create mode 100644 structne_1_1Frustum.js create mode 100644 structne_1_1Globals_1_1WorldDirection-members.html create mode 100644 structne_1_1Globals_1_1WorldDirection.html create mode 100644 structne_1_1Globals_1_1WorldDirection.js create mode 100644 structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices-members.html create mode 100644 structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.html create mode 100644 structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.js create mode 100644 structne_1_1GraphicsPipelineRegistry-members.html create mode 100644 structne_1_1GraphicsPipelineRegistry.html create mode 100644 structne_1_1GraphicsPipelineRegistry.js create mode 100644 structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames-members.html create mode 100644 structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames.html create mode 100644 structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames.js create mode 100644 structne_1_1KtxLoadingCallbackManager_1_1Data-members.html create mode 100644 structne_1_1KtxLoadingCallbackManager_1_1Data.html create mode 100644 structne_1_1KtxLoadingCallbackManager_1_1Data.js create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData.js create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Frustum-members.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Frustum.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Frustum.js create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader.js create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo-members.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo.js create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader-members.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.js create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ScreenToViewData-members.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ScreenToViewData.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ScreenToViewData.js create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ShaderResources-members.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ShaderResources.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ShaderResources.js create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader.js create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader-members.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.js create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1G0eb5a52f5b2e76a800149c80dc2ffffb.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1GlobalCountersIntoLightIndexList.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1GlobalCountersIntoLightIndexList.js create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources-members.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.js create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ThreadGroupCount-members.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ThreadGroupCount.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ThreadGroupCount.js create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Plane-members.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Plane.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Plane.js create mode 100644 structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData-members.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData.js create mode 100644 structne_1_1LightingShaderResourceManager_1_1GpuData-members.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1GpuData.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1GpuData.js create mode 100644 structne_1_1LightingShaderResourceManager_1_1LightArrays-members.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1LightArrays.html create mode 100644 structne_1_1LightingShaderResourceManager_1_1LightArrays.js create mode 100644 structne_1_1Material_1_1GpuResources-members.html create mode 100644 structne_1_1Material_1_1GpuResources.html create mode 100644 structne_1_1Material_1_1GpuResources.js create mode 100644 structne_1_1Material_1_1GpuResources_1_1ShaderResources-members.html create mode 100644 structne_1_1Material_1_1GpuResources_1_1ShaderResources.html create mode 100644 structne_1_1Material_1_1GpuResources_1_1ShaderResources.js create mode 100644 structne_1_1Material_1_1InternalResources-members.html create mode 100644 structne_1_1Material_1_1InternalResources.html create mode 100644 structne_1_1Material_1_1InternalResources.js create mode 100644 structne_1_1Material_1_1MaterialShaderConstants-members.html create mode 100644 structne_1_1Material_1_1MaterialShaderConstants.html create mode 100644 structne_1_1Material_1_1MaterialShaderConstants.js create mode 100644 structne_1_1MeshIndexBufferInfo-members.html create mode 100644 structne_1_1MeshIndexBufferInfo.html create mode 100644 structne_1_1MeshIndexBufferInfo.js create mode 100644 structne_1_1MeshNode_1_1GpuResources-members.html create mode 100644 structne_1_1MeshNode_1_1GpuResources.html create mode 100644 structne_1_1MeshNode_1_1GpuResources.js create mode 100644 structne_1_1MeshNode_1_1GpuResources_1_1Mesh-members.html create mode 100644 structne_1_1MeshNode_1_1GpuResources_1_1Mesh.html create mode 100644 structne_1_1MeshNode_1_1GpuResources_1_1Mesh.js create mode 100644 structne_1_1MeshNode_1_1GpuResources_1_1ShaderResources-members.html create mode 100644 structne_1_1MeshNode_1_1GpuResources_1_1ShaderResources.html create mode 100644 structne_1_1MeshNode_1_1GpuResources_1_1ShaderResources.js create mode 100644 structne_1_1MeshNode_1_1MeshShaderConstants-members.html create mode 100644 structne_1_1MeshNode_1_1MeshShaderConstants.html create mode 100644 structne_1_1MeshNode_1_1MeshShaderConstants.js create mode 100644 structne_1_1MeshNodesThatUseThisMaterial-members.html create mode 100644 structne_1_1MeshNodesThatUseThisMaterial.html create mode 100644 structne_1_1MeshNodesThatUseThisMaterial.js create mode 100644 structne_1_1MeshVertex-members.html create mode 100644 structne_1_1MeshVertex.html create mode 100644 structne_1_1MeshVertex.js create mode 100644 structne_1_1Node_1_1SerializableObjectInformationWithGcPointer-members.html create mode 100644 structne_1_1Node_1_1SerializableObjectInformationWithGcPointer.html create mode 100644 structne_1_1Node_1_1SerializableObjectInformationWithGcPointer.js create mode 100644 structne_1_1Node_1_1SerializableObjectInformationWithGcPointer.png create mode 100644 structne_1_1PipelineManager_1_1ComputePipelines-members.html create mode 100644 structne_1_1PipelineManager_1_1ComputePipelines.html create mode 100644 structne_1_1PipelineManager_1_1ComputePipelines.js create mode 100644 structne_1_1PipelineManager_1_1ComputePipelines_1_1Resources-members.html create mode 100644 structne_1_1PipelineManager_1_1ComputePipelines_1_1Resources.html create mode 100644 structne_1_1PipelineManager_1_1ComputePipelines_1_1Resources.js create mode 100644 structne_1_1PipelineShaderConstantsManager_1_1SpecialConstantsNames-members.html create mode 100644 structne_1_1PipelineShaderConstantsManager_1_1SpecialConstantsNames.html create mode 100644 structne_1_1PipelineShaderConstantsManager_1_1SpecialConstantsNames.js create mode 100644 structne_1_1Pipeline_1_1ShaderConstantsData-members.html create mode 100644 structne_1_1Pipeline_1_1ShaderConstantsData.html create mode 100644 structne_1_1Pipeline_1_1ShaderConstantsData.js create mode 100644 structne_1_1Plane-members.html create mode 100644 structne_1_1Plane.html create mode 100644 structne_1_1Plane.js create mode 100644 structne_1_1PointLightNode_1_1PointLightShaderData-members.html create mode 100644 structne_1_1PointLightNode_1_1PointLightShaderData.html create mode 100644 structne_1_1PointLightNode_1_1PointLightShaderData.js create mode 100644 structne_1_1PointLightNode_1_1ShaderData-members.html create mode 100644 structne_1_1PointLightNode_1_1ShaderData.html create mode 100644 structne_1_1PointLightNode_1_1ShaderData.js create mode 100644 structne_1_1PointLightNode_1_1ShaderData_1_1ShadowPassDataGroup-members.html create mode 100644 structne_1_1PointLightNode_1_1ShaderData_1_1ShadowPassDataGroup.html create mode 100644 structne_1_1PointLightNode_1_1ShaderData_1_1ShadowPassDataGroup.js create mode 100644 structne_1_1QueuedForExecutionComputeShaders-members.html create mode 100644 structne_1_1QueuedForExecutionComputeShaders.html create mode 100644 structne_1_1QueuedForExecutionComputeShaders.js create mode 100644 structne_1_1RenderStatistics_1_1Counters-members.html create mode 100644 structne_1_1RenderStatistics_1_1Counters.html create mode 100644 structne_1_1RenderStatistics_1_1Counters.js create mode 100644 structne_1_1RenderStatistics_1_1FpsLimitInfo-members.html create mode 100644 structne_1_1RenderStatistics_1_1FpsLimitInfo.html create mode 100644 structne_1_1RenderStatistics_1_1FpsLimitInfo.js create mode 100644 structne_1_1RenderStatistics_1_1FrameTemporaryStatistics-members.html create mode 100644 structne_1_1RenderStatistics_1_1FrameTemporaryStatistics.html create mode 100644 structne_1_1RenderStatistics_1_1FrameTemporaryStatistics.js create mode 100644 structne_1_1RenderStatistics_1_1FramesPerSecondInfo-members.html create mode 100644 structne_1_1RenderStatistics_1_1FramesPerSecondInfo.html create mode 100644 structne_1_1RenderStatistics_1_1FramesPerSecondInfo.js create mode 100644 structne_1_1RenderStatistics_1_1TaskTimeInfo-members.html create mode 100644 structne_1_1RenderStatistics_1_1TaskTimeInfo.html create mode 100644 structne_1_1RenderStatistics_1_1TaskTimeInfo.js create mode 100644 structne_1_1Renderer_1_1LightsInFrustum-members.html create mode 100644 structne_1_1Renderer_1_1LightsInFrustum.html create mode 100644 structne_1_1Renderer_1_1LightsInFrustum.js create mode 100644 structne_1_1Renderer_1_1MeshesInFrustum-members.html create mode 100644 structne_1_1Renderer_1_1MeshesInFrustum.html create mode 100644 structne_1_1Renderer_1_1MeshesInFrustum.js create mode 100644 structne_1_1Renderer_1_1MeshesInFrustum_1_1MaterialInFrustumInfo-members.html create mode 100644 structne_1_1Renderer_1_1MeshesInFrustum_1_1MaterialInFrustumInfo.html create mode 100644 structne_1_1Renderer_1_1MeshesInFrustum_1_1MaterialInFrustumInfo.js create mode 100644 structne_1_1Renderer_1_1MeshesInFrustum_1_1MeshInFrustumInfo-members.html create mode 100644 structne_1_1Renderer_1_1MeshesInFrustum_1_1MeshInFrustumInfo.html create mode 100644 structne_1_1Renderer_1_1MeshesInFrustum_1_1MeshInFrustumInfo.js create mode 100644 structne_1_1Renderer_1_1MeshesInFrustum_1_1PipelineInFrustumInfo-members.html create mode 100644 structne_1_1Renderer_1_1MeshesInFrustum_1_1PipelineInFrustumInfo.html create mode 100644 structne_1_1Renderer_1_1MeshesInFrustum_1_1PipelineInFrustumInfo.js create mode 100644 structne_1_1RootSignatureGenerator_1_1CollectedInfo-members.html create mode 100644 structne_1_1RootSignatureGenerator_1_1CollectedInfo.html create mode 100644 structne_1_1RootSignatureGenerator_1_1CollectedInfo.js create mode 100644 structne_1_1RootSignatureGenerator_1_1Generated-members.html create mode 100644 structne_1_1RootSignatureGenerator_1_1Generated.html create mode 100644 structne_1_1RootSignatureGenerator_1_1Generated.js create mode 100644 structne_1_1SerializableObjectInformation-members.html create mode 100644 structne_1_1SerializableObjectInformation.html create mode 100644 structne_1_1SerializableObjectInformation.js create mode 100644 structne_1_1SerializableObjectInformation.png create mode 100644 structne_1_1ShaderArrayIndexManager_1_1InternalData-members.html create mode 100644 structne_1_1ShaderArrayIndexManager_1_1InternalData.html create mode 100644 structne_1_1ShaderArrayIndexManager_1_1InternalData.js create mode 100644 structne_1_1ShaderCacheInvalidationReasonDescription-members.html create mode 100644 structne_1_1ShaderCacheInvalidationReasonDescription.html create mode 100644 structne_1_1ShaderCacheInvalidationReasonDescription.js create mode 100644 structne_1_1ShaderCacheManager_1_1GlobalShaderCacheParameterNames-members.html create mode 100644 structne_1_1ShaderCacheManager_1_1GlobalShaderCacheParameterNames.html create mode 100644 structne_1_1ShaderCacheManager_1_1GlobalShaderCacheParameterNames.js create mode 100644 structne_1_1ShaderCpuWriteResourceBindingManager_1_1Resources-members.html create mode 100644 structne_1_1ShaderCpuWriteResourceBindingManager_1_1Resources.html create mode 100644 structne_1_1ShaderCpuWriteResourceBindingManager_1_1Resources.js create mode 100644 structne_1_1ShaderDescription-members.html create mode 100644 structne_1_1ShaderDescription.html create mode 100644 structne_1_1ShaderDescription.js create mode 100644 structne_1_1ShaderLightArray_1_1Resources-members.html create mode 100644 structne_1_1ShaderLightArray_1_1Resources.html create mode 100644 structne_1_1ShaderLightArray_1_1Resources.js create mode 100644 structne_1_1ShaderLightsInFrustumSingleType-members.html create mode 100644 structne_1_1ShaderLightsInFrustumSingleType.html create mode 100644 structne_1_1ShaderLightsInFrustumSingleType.js create mode 100644 structne_1_1ShaderMacroConfigurations-members.html create mode 100644 structne_1_1ShaderMacroConfigurations.html create mode 100644 structne_1_1ShaderMacroConfigurations.js create mode 100644 structne_1_1ShaderMacroSetHash-members.html create mode 100644 structne_1_1ShaderMacroSetHash.html create mode 100644 structne_1_1ShaderMacroSetHash.js create mode 100644 structne_1_1ShaderManager_1_1ShaderData-members.html create mode 100644 structne_1_1ShaderManager_1_1ShaderData.html create mode 100644 structne_1_1ShaderManager_1_1ShaderData.js create mode 100644 structne_1_1ShaderPack_1_1InternalResources-members.html create mode 100644 structne_1_1ShaderPack_1_1InternalResources.html create mode 100644 structne_1_1ShaderPack_1_1InternalResources.js create mode 100644 structne_1_1ShaderPipelines-members.html create mode 100644 structne_1_1ShaderPipelines.html create mode 100644 structne_1_1ShaderPipelines.js create mode 100644 structne_1_1ShadowMapHandle_1_1InternalResources-members.html create mode 100644 structne_1_1ShadowMapHandle_1_1InternalResources.html create mode 100644 structne_1_1ShadowMapHandle_1_1InternalResources.js create mode 100644 structne_1_1ShadowMapManager_1_1InternalResources-members.html create mode 100644 structne_1_1ShadowMapManager_1_1InternalResources.html create mode 100644 structne_1_1ShadowMapManager_1_1InternalResources.js create mode 100644 structne_1_1ShadowMapManager_1_1ShadowMapHandleResources-members.html create mode 100644 structne_1_1ShadowMapManager_1_1ShadowMapHandleResources.html create mode 100644 structne_1_1ShadowMapManager_1_1ShadowMapHandleResources.js create mode 100644 structne_1_1ShadowPassLightShaderInfo-members.html create mode 100644 structne_1_1ShadowPassLightShaderInfo.html create mode 100644 structne_1_1ShadowPassLightShaderInfo.js create mode 100644 structne_1_1SourceLocationInfo-members.html create mode 100644 structne_1_1SourceLocationInfo.html create mode 100644 structne_1_1SourceLocationInfo.js create mode 100644 structne_1_1SpatialNode_1_1LocalSpaceInformation-members.html create mode 100644 structne_1_1SpatialNode_1_1LocalSpaceInformation.html create mode 100644 structne_1_1SpatialNode_1_1LocalSpaceInformation.js create mode 100644 structne_1_1SpatialNode_1_1WorldMatrixInformation-members.html create mode 100644 structne_1_1SpatialNode_1_1WorldMatrixInformation.html create mode 100644 structne_1_1SpatialNode_1_1WorldMatrixInformation.js create mode 100644 structne_1_1Sphere-members.html create mode 100644 structne_1_1Sphere.html create mode 100644 structne_1_1Sphere.js create mode 100644 structne_1_1SpotlightNode_1_1ShaderData-members.html create mode 100644 structne_1_1SpotlightNode_1_1ShaderData.html create mode 100644 structne_1_1SpotlightNode_1_1ShaderData.js create mode 100644 structne_1_1SpotlightNode_1_1ShaderData_1_1ShadowPassDataGroup-members.html create mode 100644 structne_1_1SpotlightNode_1_1ShaderData_1_1ShadowPassDataGroup.html create mode 100644 structne_1_1SpotlightNode_1_1ShaderData_1_1ShadowPassDataGroup.js create mode 100644 structne_1_1SpotlightNode_1_1SpotlightShaderData-members.html create mode 100644 structne_1_1SpotlightNode_1_1SpotlightShaderData.html create mode 100644 structne_1_1SpotlightNode_1_1SpotlightShaderData.js create mode 100644 structne_1_1StdStringHash-members.html create mode 100644 structne_1_1StdStringHash.html create mode 100644 structne_1_1StdStringHash.js create mode 100644 structne_1_1TextureManager_1_1TextureResource-members.html create mode 100644 structne_1_1TextureManager_1_1TextureResource.html create mode 100644 structne_1_1TextureManager_1_1TextureResource.js create mode 100644 structne_1_1VulkanFrameResource-members.html create mode 100644 structne_1_1VulkanFrameResource.html create mode 100644 structne_1_1VulkanFrameResource.js create mode 100644 structne_1_1VulkanFrameResource.png create mode 100644 structne_1_1VulkanPipeline_1_1InternalResources-members.html create mode 100644 structne_1_1VulkanPipeline_1_1InternalResources.html create mode 100644 structne_1_1VulkanPipeline_1_1InternalResources.js create mode 100644 structne_1_1VulkanRenderer_1_1QueueFamilyIndices-members.html create mode 100644 structne_1_1VulkanRenderer_1_1QueueFamilyIndices.html create mode 100644 structne_1_1VulkanRenderer_1_1QueueFamilyIndices.js create mode 100644 structne_1_1VulkanRenderer_1_1SwapChainImageSemaphores-members.html create mode 100644 structne_1_1VulkanRenderer_1_1SwapChainImageSemaphores.html create mode 100644 structne_1_1VulkanRenderer_1_1SwapChainImageSemaphores.js create mode 100644 structne_1_1VulkanRenderer_1_1SwapChainSupportDetails-members.html create mode 100644 structne_1_1VulkanRenderer_1_1SwapChainSupportDetails.html create mode 100644 structne_1_1VulkanRenderer_1_1SwapChainSupportDetails.js create mode 100644 structne_1_1VulkanShadowMapArrayIndexManager_1_1InternalData-members.html create mode 100644 structne_1_1VulkanShadowMapArrayIndexManager_1_1InternalData.html create mode 100644 structne_1_1VulkanShadowMapArrayIndexManager_1_1InternalData.js create mode 100644 structne_1_1WindowBuilderParameters-members.html create mode 100644 structne_1_1WindowBuilderParameters.html create mode 100644 structne_1_1WindowBuilderParameters.js create mode 100644 sync_off.png create mode 100644 sync_on.png create mode 100644 tab_a.png create mode 100644 tab_ad.png create mode 100644 tab_b.png create mode 100644 tab_bd.png create mode 100644 tab_h.png create mode 100644 tab_hd.png create mode 100644 tab_s.png create mode 100644 tab_sd.png create mode 100644 tabs.css diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/AABB_8h_source.html b/AABB_8h_source.html new file mode 100644 index 000000000..174f8eb2f --- /dev/null +++ b/AABB_8h_source.html @@ -0,0 +1,136 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/misc/shapes/AABB.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
AABB.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <vector>
+
5
+
6// Custom.
+
7#include "math/GLMath.hpp"
+
8#include "misc/shapes/Plane.h"
+
9
+
10namespace ne {
+
11 struct MeshVertex;
+
12
+
14 struct AABB {
+
22 static AABB createFromVertices(std::vector<MeshVertex>* pVertices);
+
23
+
31 bool isBehindPlane(const Plane& plane) const;
+
32
+
34 glm::vec3 center = glm::vec3(0.0F, 0.0F, 0.0F);
+
35
+
37 glm::vec3 extents = glm::vec3(0.0F, 0.0F, 0.0F);
+
38 };
+
39}
+
Definition: AABB.h:14
+
glm::vec3 center
Definition: AABB.h:34
+
glm::vec3 extents
Definition: AABB.h:37
+
bool isBehindPlane(const Plane &plane) const
Definition: AABB.cpp:48
+
static AABB createFromVertices(std::vector< MeshVertex > *pVertices)
Definition: AABB.cpp:14
+
Definition: Plane.h:8
+
+
+ + + + diff --git a/CameraManager_8h_source.html b/CameraManager_8h_source.html new file mode 100644 index 000000000..37f138217 --- /dev/null +++ b/CameraManager_8h_source.html @@ -0,0 +1,154 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/game/camera/CameraManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraManager.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <memory>
+
5#include <mutex>
+
6
+
7// External.
+
8#include "GcPtr.h"
+
9
+
10namespace ne {
+
11 class CameraNode;
+
12 class Renderer;
+
13 class CameraProperties;
+
14
+ +
17 // Active camera node will notify the manager when it's being despawned.
+
18 friend class CameraNode;
+
19
+
20 public:
+
21 CameraManager() = delete;
+
22
+ +
29
+
39 void setActiveCamera(const sgc::GcPtr<CameraNode>& pCameraNode);
+
40
+
42 void clearActiveCamera();
+
43
+
54 std::pair<std::recursive_mutex, sgc::GcPtr<CameraNode>>* getActiveCamera();
+
55
+
56 private:
+
62 void onCameraNodeDespawning(CameraNode* pCameraNode);
+
63
+
65 Renderer* pRenderer = nullptr;
+
66
+
68 std::pair<std::recursive_mutex, sgc::GcPtr<CameraNode>> mtxActiveCamera;
+
69 };
+
70} // namespace ne
+
Definition: CameraManager.h:16
+
std::pair< std::recursive_mutex, sgc::GcPtr< CameraNode > > * getActiveCamera()
Definition: CameraManager.cpp:71
+
void onCameraNodeDespawning(CameraNode *pCameraNode)
Definition: CameraManager.cpp:75
+
std::pair< std::recursive_mutex, sgc::GcPtr< CameraNode > > mtxActiveCamera
Definition: CameraManager.h:68
+
void setActiveCamera(const sgc::GcPtr< CameraNode > &pCameraNode)
Definition: CameraManager.cpp:16
+
Renderer * pRenderer
Definition: CameraManager.h:65
+
void clearActiveCamera()
Definition: CameraManager.cpp:55
+
Definition: CameraNode.h:11
+
Definition: Renderer.h:44
+
+
+ + + + diff --git a/CameraNode_8h_source.html b/CameraNode_8h_source.html new file mode 100644 index 000000000..dd26c39ec --- /dev/null +++ b/CameraNode_8h_source.html @@ -0,0 +1,174 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/game/nodes/CameraNode.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraNode.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "game/nodes/SpatialNode.h"
+
5#include "game/camera/CameraProperties.h"
+
6
+
7#include "CameraNode.generated.h"
+
8
+
9namespace ne RNAMESPACE() {
+
11 class RCLASS(Guid("d0fdb87f-099e-479a-8975-d9db1c40488e")) CameraNode : public SpatialNode {
+
12 // Tells whether this node is being active camera or not.
+
13 friend class CameraManager;
+
14
+
15 public:
+
16 CameraNode();
+
17
+
23 CameraNode(const std::string& sNodeName);
+
24
+
25 virtual ~CameraNode() override = default;
+
26
+
35 void makeActive();
+
36
+
42 void setCameraMode(CameraMode mode);
+
43
+
54 void setOrbitalTargetLocation(const glm::vec3& targetPointLocation);
+
55
+
63 void clearOrbitalTargetLocation();
+
64
+
75 void setOrbitalRotation(float phi, float theta);
+
76
+
86 void setOrbitalDistanceToTarget(float distanceToTarget);
+
87
+
97 glm::vec3 getOrbitalTargetLocation();
+
98
+
106 CameraProperties* getCameraProperties();
+
107
+
108 protected:
+
115 virtual void onWorldLocationRotationScaleChanged() override;
+
116
+
126 virtual void onDespawning() override;
+
127
+
128 private:
+
130 void updateCameraProperties();
+
131
+ +
134
+
136 std::optional<glm::vec3> orbitalCameraTargetInWorldSpace = {};
+
137
+
139 glm::vec3 localSpaceOriginInWorldSpace = glm::vec3(0.0F, 0.0F, 0.0F);
+
140
+
146 std::pair<std::recursive_mutex, bool> mtxIsActive;
+
147
+
149 static inline constexpr float rotationDelta = 0.0001F;
+
150
+
151 ne_CameraNode_GENERATED
+
152 };
+
153} // namespace ne RNAMESPACE()
+
154
+
155File_CameraNode_GENERATED
+
Definition: CameraManager.h:16
+
Definition: CameraNode.h:11
+
std::pair< std::recursive_mutex, bool > mtxIsActive
Definition: CameraNode.h:146
+
CameraProperties cameraProperties
Definition: CameraNode.h:133
+
Definition: CameraProperties.h:22
+
Definition: GuidProperty.h:30
+
Definition: SpatialNode.h:12
+
+
+ + + + diff --git a/CameraProperties_8h_source.html b/CameraProperties_8h_source.html new file mode 100644 index 000000000..1d68e3ce3 --- /dev/null +++ b/CameraProperties_8h_source.html @@ -0,0 +1,289 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/game/camera/CameraProperties.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraProperties.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <mutex>
+
5#include <optional>
+
6
+
7// Custom.
+
8#include "math/GLMath.hpp"
+
9#include "misc/Globals.h"
+
10#include "misc/shapes/Frustum.h"
+
11
+
12namespace ne {
+
14 enum class CameraMode {
+
15 FREE,
+
16 ORBITAL
+
19 };
+
20
+ +
23 // Only camera node can control internal data.
+
24 friend class CameraNode;
+
25
+
26 // Renderer sets render target size and also looks if projection matrix was changed or
+
27 // not to recalculate grid of frustums for light culling.
+
28 friend class Renderer;
+
29
+
30 public:
+
31 CameraProperties() = default;
+
32
+
34 struct Data {
+
35 Data() = default;
+
36
+ +
39 OrbitalModeData() = default;
+
40
+
42 float distanceToTarget = 10.0F; // NOLINT: magic number
+
43
+
45 float theta = 0.0F; // NOLINT: magic number
+
46
+
48 float phi = 0.0F; // NOLINT: magic number
+
49 };
+
50
+
52 struct ViewData {
+
53 ViewData() = default;
+
54
+
56 glm::mat4x4 viewMatrix = glm::identity<glm::mat4x4>();
+
57
+ +
60
+
62 glm::vec3 worldLocation = glm::vec3(0.0F, 0.0F, 0.0F);
+
63
+ +
66
+
68 glm::vec3 targetPointWorldLocation = glm::vec3(1.0F, 0.0F, 0.0F);
+
69 };
+
70
+ +
73 ProjectionData() = default;
+
74
+
79 glm::mat4x4 projectionMatrix = glm::identity<glm::mat4x4>();
+
80
+ +
83
+ +
92
+
94 float nearClipPlaneDistance = 0.3F; // NOLINT: magic number
+
95
+
97 float farClipPlaneDistance = 500.0F; // NOLINT: good default value
+
98
+
100 unsigned int iVerticalFov = 90; // NOLINT: magic number
+
101
+
103 unsigned int iRenderTargetWidth = 800; // NOLINT: default value
+
104
+
106 unsigned int iRenderTargetHeight = 600; // NOLINT: default value
+
107
+ +
110
+
112 float farClipPlaneHeight = 0.0F;
+
113 };
+
114
+ +
122
+ +
132
+ +
135
+
137 CameraMode currentCameraMode = CameraMode::FREE;
+
138
+ +
141
+
143 static inline const float minimumClipPlaneDistance = 0.00001F;
+
144 };
+
145
+
151 void setFov(unsigned int iVerticalFov);
+
152
+
158 void setNearClipPlaneDistance(float nearClipPlaneDistance);
+
159
+
165 void setFarClipPlaneDistance(float farClipPlaneDistance);
+
166
+
172 unsigned int getVerticalFov();
+
173
+ +
180
+ +
187
+
193 CameraMode getCurrentCameraMode();
+
194
+ +
201
+
207 glm::vec3 getWorldLocation();
+
208
+
214 glm::mat4x4 getViewMatrix();
+
215
+
222 glm::mat4x4 getProjectionMatrix();
+
223
+
237 inline Frustum* getCameraFrustum() { return &mtxData.second.frustum; }
+
238
+
239 private:
+
250 void setRenderTargetSize(unsigned int iRenderTargetWidth, unsigned int iRenderTargetHeight);
+
251
+ +
258
+ +
265
+
271 void recalculateFrustum();
+
272
+
274 std::pair<std::recursive_mutex, Data> mtxData{};
+
275
+
277 static inline constexpr float floatDelta = 0.00001F;
+
278 };
+
279} // namespace ne
+
Definition: CameraNode.h:11
+
Definition: CameraProperties.h:22
+
Data::OrbitalModeData getOrbitalModeProperties()
Definition: CameraProperties.cpp:104
+
glm::mat4x4 getViewMatrix()
Definition: CameraProperties.cpp:114
+
void setFov(unsigned int iVerticalFov)
Definition: CameraProperties.cpp:30
+
float getFarClipPlaneDistance()
Definition: CameraProperties.cpp:92
+
void makeSureViewMatrixIsUpToDate()
Definition: CameraProperties.cpp:130
+
std::pair< std::recursive_mutex, Data > mtxData
Definition: CameraProperties.h:274
+
void makeSureProjectionMatrixAndClipPlanesAreUpToDate()
Definition: CameraProperties.cpp:153
+
void setRenderTargetSize(unsigned int iRenderTargetWidth, unsigned int iRenderTargetHeight)
Definition: CameraProperties.cpp:13
+
Frustum * getCameraFrustum()
Definition: CameraProperties.h:237
+
glm::vec3 getWorldLocation()
Definition: CameraProperties.cpp:109
+
static constexpr float floatDelta
Definition: CameraProperties.h:277
+
void setFarClipPlaneDistance(float farClipPlaneDistance)
Definition: CameraProperties.cpp:60
+
CameraMode getCurrentCameraMode()
Definition: CameraProperties.cpp:98
+
void recalculateFrustum()
Definition: CameraProperties.cpp:196
+
glm::mat4x4 getProjectionMatrix()
Definition: CameraProperties.cpp:122
+
unsigned int getVerticalFov()
Definition: CameraProperties.cpp:80
+
float getNearClipPlaneDistance()
Definition: CameraProperties.cpp:86
+
void setNearClipPlaneDistance(float nearClipPlaneDistance)
Definition: CameraProperties.cpp:40
+
Definition: Renderer.h:44
+
Definition: CameraProperties.h:38
+
float theta
Definition: CameraProperties.h:45
+
float phi
Definition: CameraProperties.h:48
+
float distanceToTarget
Definition: CameraProperties.h:42
+
Definition: CameraProperties.h:72
+
float nearClipPlaneHeight
Definition: CameraProperties.h:109
+
bool bProjectionMatrixNeedsUpdate
Definition: CameraProperties.h:82
+
glm::mat4x4 projectionMatrix
Definition: CameraProperties.h:79
+
bool bLightGridFrustumsNeedUpdate
Definition: CameraProperties.h:91
+
float nearClipPlaneDistance
Definition: CameraProperties.h:94
+
unsigned int iRenderTargetHeight
Definition: CameraProperties.h:106
+
unsigned int iVerticalFov
Definition: CameraProperties.h:100
+
unsigned int iRenderTargetWidth
Definition: CameraProperties.h:103
+
float farClipPlaneDistance
Definition: CameraProperties.h:97
+
float farClipPlaneHeight
Definition: CameraProperties.h:112
+
Definition: CameraProperties.h:52
+
glm::mat4x4 viewMatrix
Definition: CameraProperties.h:56
+
glm::vec3 worldUpDirection
Definition: CameraProperties.h:65
+
glm::vec3 worldLocation
Definition: CameraProperties.h:62
+
glm::vec3 targetPointWorldLocation
Definition: CameraProperties.h:68
+
bool bViewMatrixNeedsUpdate
Definition: CameraProperties.h:59
+
Definition: CameraProperties.h:34
+
Frustum frustum
Definition: CameraProperties.h:134
+
OrbitalModeData orbitalModeData
Definition: CameraProperties.h:140
+
ProjectionData projectionData
Definition: CameraProperties.h:131
+
static const float minimumClipPlaneDistance
Definition: CameraProperties.h:143
+
ViewData viewData
Definition: CameraProperties.h:121
+
CameraMode currentCameraMode
Definition: CameraProperties.h:137
+
Definition: Frustum.h:12
+
static const glm::vec3 up
Definition: Globals.h:19
+
+
+ + + + diff --git a/ComputeShaderInterface_8h_source.html b/ComputeShaderInterface_8h_source.html new file mode 100644 index 000000000..aa16c6220 --- /dev/null +++ b/ComputeShaderInterface_8h_source.html @@ -0,0 +1,254 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/shader/ComputeShaderInterface.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ComputeShaderInterface.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <string>
+
5#include <memory>
+
6#include <vector>
+
7#include <variant>
+
8#include <functional>
+
9
+
10// Custom.
+
11#include "misc/Error.h"
+
12#include "render/general/pipeline/PipelineSharedPtr.h"
+
13#include "render/general/resource/GpuResource.h"
+
14
+
15namespace ne {
+
16 class Renderer;
+
17
+
19 enum class ComputeResourceUsage {
+
20 READ_ONLY_ARRAY_BUFFER, //< `StructuredBuffer` in HLSL, `readonly buffer` in GLSL.
+
21 READ_WRITE_ARRAY_BUFFER, //< `RWStructuredBuffer` in HLSL, `buffer` in GLSL.
+
22 CONSTANT_BUFFER, //< `cbuffer` in HLSL, `uniform` in GLSL.
+
23 READ_ONLY_TEXTURE, //< `Texture2D` in HLSL, `uniform sampler2D` in GLSL.
+
24 READ_WRITE_TEXTURE, //< `RWTexture2D` in HLSL, `uniform image2D` in GLSL.
+
25 };
+
26
+
28 enum class ComputeExecutionStage : size_t {
+
29 AFTER_DEPTH_PREPASS = 0, //< After depth texture is fully written but before color rendering (main
+
30 // pass) is < started.
+
31
+
32 SIZE //< Marks the size of this enum.
+
33 };
+
34
+
39 enum class ComputeExecutionGroup : size_t {
+
40 FIRST = 0,
+
41 SECOND,
+
42 SIZE //< Marks the size of this enum.
+
43 };
+
44
+ +
47 public:
+
48 ComputeShaderInterface() = delete;
+ +
50
+ +
52 ComputeShaderInterface& operator=(const ComputeShaderInterface&) = delete;
+
53
+
72 static std::variant<std::unique_ptr<ComputeShaderInterface>, Error> createUsingGraphicsQueue(
+ +
74 const std::string& sCompiledComputeShaderName,
+
75 ComputeExecutionStage executionStage,
+
76 ComputeExecutionGroup executionGroup = ComputeExecutionGroup::FIRST);
+
77
+
97 [[nodiscard]] virtual std::optional<Error> bindResource(
+
98 GpuResource* pResource,
+
99 const std::string& sShaderResourceName,
+
100 ComputeResourceUsage usage,
+
101 bool bUpdateOnlyCurrentFrameResourceDescriptors = false) = 0;
+
102
+ +
118 unsigned int iThreadGroupCountX,
+
119 unsigned int iThreadGroupCountY,
+
120 unsigned int iThreadGroupCountZ);
+
121
+
128 ComputeExecutionGroup getExecutionGroup() const;
+
129
+
135 ComputeExecutionStage getExecutionStage() const;
+
136
+
142 std::string getComputeShaderName() const;
+
143
+
149 Pipeline* getUsedPipeline() const;
+
150
+
151 protected:
+
163 static std::variant<std::unique_ptr<ComputeShaderInterface>, Error> createRenderSpecificInterface(
+ +
165 const std::string& sComputeShaderName,
+
166 ComputeExecutionStage executionStage,
+
167 ComputeExecutionGroup executionGroup);
+
168
+
181 static std::unique_ptr<ComputeShaderInterface> createPartiallyInitializedRenderSpecificInterface(
+ +
183 const std::string& sComputeShaderName,
+
184 ComputeExecutionStage executionStage,
+
185 ComputeExecutionGroup executionGroup);
+
186
+ + +
198 const std::string& sComputeShaderName,
+
199 ComputeExecutionStage executionStage,
+
200 ComputeExecutionGroup executionGroup);
+
201
+ +
210
+
216 Pipeline* getPipeline() const;
+
217
+
223 inline unsigned int getThreadGroupCountX() const { return iThreadGroupCountX; }
+
224
+
230 inline unsigned int getThreadGroupCountY() const { return iThreadGroupCountY; }
+
231
+
237 inline unsigned int getThreadGroupCountZ() const { return iThreadGroupCountZ; }
+
238
+
239 private:
+
241 Renderer* pRenderer = nullptr;
+
242
+ +
245
+
247 unsigned int iThreadGroupCountX = 0;
+
248
+
250 unsigned int iThreadGroupCountY = 0;
+
251
+
253 unsigned int iThreadGroupCountZ = 0;
+
254
+
256 const ComputeExecutionStage executionStage = ComputeExecutionStage::AFTER_DEPTH_PREPASS;
+
257
+
259 const ComputeExecutionGroup executionGroup = ComputeExecutionGroup::FIRST;
+
260
+
262 const std::string sComputeShaderName;
+
263 };
+
264}
+
Definition: ComputeShaderInterface.h:46
+
void submitForExecution(unsigned int iThreadGroupCountX, unsigned int iThreadGroupCountY, unsigned int iThreadGroupCountZ)
Definition: ComputeShaderInterface.cpp:104
+
static std::variant< std::unique_ptr< ComputeShaderInterface >, Error > createRenderSpecificInterface(Renderer *pRenderer, const std::string &sComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup)
Definition: ComputeShaderInterface.cpp:79
+
std::string getComputeShaderName() const
Definition: ComputeShaderInterface.cpp:130
+
unsigned int iThreadGroupCountY
Definition: ComputeShaderInterface.h:250
+
ComputeExecutionGroup getExecutionGroup() const
Definition: ComputeShaderInterface.cpp:126
+
Pipeline * getPipeline() const
Definition: ComputeShaderInterface.cpp:136
+
unsigned int getThreadGroupCountX() const
Definition: ComputeShaderInterface.h:223
+
Renderer * pRenderer
Definition: ComputeShaderInterface.h:241
+
unsigned int getThreadGroupCountY() const
Definition: ComputeShaderInterface.h:230
+
const ComputeExecutionGroup executionGroup
Definition: ComputeShaderInterface.h:259
+
ComputeExecutionStage getExecutionStage() const
Definition: ComputeShaderInterface.cpp:128
+
unsigned int iThreadGroupCountX
Definition: ComputeShaderInterface.h:247
+
const ComputeExecutionStage executionStage
Definition: ComputeShaderInterface.h:256
+
Renderer * getRenderer()
Definition: ComputeShaderInterface.cpp:134
+
virtual std::optional< Error > bindResource(GpuResource *pResource, const std::string &sShaderResourceName, ComputeResourceUsage usage, bool bUpdateOnlyCurrentFrameResourceDescriptors=false)=0
+
unsigned int iThreadGroupCountZ
Definition: ComputeShaderInterface.h:253
+
PipelineSharedPtr pPipeline
Definition: ComputeShaderInterface.h:244
+
unsigned int getThreadGroupCountZ() const
Definition: ComputeShaderInterface.h:237
+
static std::variant< std::unique_ptr< ComputeShaderInterface >, Error > createUsingGraphicsQueue(Renderer *pRenderer, const std::string &sCompiledComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup=ComputeExecutionGroup::FIRST)
Definition: ComputeShaderInterface.cpp:46
+
Pipeline * getUsedPipeline() const
Definition: ComputeShaderInterface.cpp:132
+
const std::string sComputeShaderName
Definition: ComputeShaderInterface.h:262
+
static std::unique_ptr< ComputeShaderInterface > createPartiallyInitializedRenderSpecificInterface(Renderer *pRenderer, const std::string &sComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup)
Definition: ComputeShaderInterface.cpp:56
+
Definition: Error.h:27
+
Definition: GpuResource.h:16
+
Definition: PipelineSharedPtr.h:15
+
Definition: Pipeline.h:20
+
Definition: Renderer.h:44
+
+
+ + + + diff --git a/Cone_8h_source.html b/Cone_8h_source.html new file mode 100644 index 000000000..699c2f43e --- /dev/null +++ b/Cone_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/misc/shapes/Cone.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Cone.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "math/GLMath.hpp"
+
5#include "misc/shapes/Plane.h"
+
6
+
7namespace ne {
+
9 struct Cone {
+
11 Cone() = default;
+
12
+
21 Cone(const glm::vec3& location, float height, const glm::vec3& direction, float bottomRadius);
+
22
+
30 bool isBehindPlane(const Plane& plane) const;
+
31
+
33 glm::vec3 location = glm::vec3(0.0F, 0.0F, 0.0F);
+
34
+
36 float height = 1.0F;
+
37
+
39 glm::vec3 direction = glm::vec3(1.0F, 0.0F, 0.0F);
+
40
+
42 float bottomRadius = 1.0F;
+
43 };
+
44}
+
Definition: Cone.h:9
+
glm::vec3 direction
Definition: Cone.h:39
+
glm::vec3 location
Definition: Cone.h:33
+
Cone()=default
+
float bottomRadius
Definition: Cone.h:42
+
float height
Definition: Cone.h:36
+
bool isBehindPlane(const Plane &plane) const
Definition: Cone.cpp:12
+
Definition: Plane.h:8
+
+
+ + + + diff --git a/ConfigManager_8h_source.html b/ConfigManager_8h_source.html new file mode 100644 index 000000000..9375c07f8 --- /dev/null +++ b/ConfigManager_8h_source.html @@ -0,0 +1,234 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/io/ConfigManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConfigManager.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <variant>
+
5#include <optional>
+
6#include <set>
+
7#include <filesystem>
+
8
+
9// Custom.
+
10#include "misc/Error.h"
+
11
+
12// External.
+
13#include "toml11/single_include/toml.hpp"
+
14
+
15namespace ne {
+
19 enum class ConfigCategory {
+
20 PROGRESS, // used to store player's game progress (uses backup files under the hood)
+
21 SETTINGS // used to store player's game specific settings (no backup files)
+
22 };
+
23
+ +
28 public:
+
33 ConfigManager() = default;
+
34
+
35 ConfigManager(const ConfigManager&) = delete;
+
36 ConfigManager& operator=(const ConfigManager&) = delete;
+
37
+
43 static std::string getConfigFormatExtension();
+
44
+
50 static std::string getBackupFileExtension();
+
51
+
69 static std::set<std::string> getAllFileNames(ConfigCategory category);
+
70
+
81 static std::string getFreeProgressProfileName();
+
82
+
91 static std::filesystem::path getCategoryDirectory(ConfigCategory category);
+
92
+
107 [[nodiscard]] static std::optional<Error>
+
108 removeFile(ConfigCategory category, std::string_view sFileName);
+
109
+
118 static void removeFile(std::filesystem::path pathToConfigFile);
+
119
+
136 [[nodiscard]] std::optional<Error> loadFile(ConfigCategory category, std::string_view sFileName);
+
137
+
154 [[nodiscard]] std::optional<Error> loadFile(std::filesystem::path pathToConfigFile);
+
155
+
195 template <typename T>
+
196 T getValue(std::string_view sSection, std::string_view sKey, T defaultValue) const;
+
197
+
203 std::vector<std::string> getAllSections();
+
204
+
213 std::variant<std::vector<std::string>, Error> getAllKeysOfSection(std::string_view sSection) const;
+
214
+
264 template <typename T>
+
265 void
+
266 setValue(std::string_view sSection, std::string_view sKey, T value, std::string_view sComment = "");
+
267
+
292 [[nodiscard]] std::optional<Error> saveFile(ConfigCategory category, std::string_view sFileName);
+
293
+
309 [[nodiscard]] std::optional<Error>
+
310 saveFile(std::filesystem::path pathToConfigFile, bool bEnableBackup);
+
311
+
318 std::filesystem::path getFilePath() const;
+
319
+
320 private:
+
332 static std::variant<std::filesystem::path, Error>
+
333 constructFilePath(ConfigCategory category, std::string_view sFileName);
+
334
+
343 static std::string generateFreeFileName(
+
344 const std::set<std::string>& usedFileNames, const std::string& sFileNamePrefix = "");
+
345
+
347 toml::value tomlData;
+
348
+
350 std::filesystem::path filePath;
+
351
+
353 inline static const char* sBackupFileExtension = ".old";
+
354 };
+
355
+
356 template <typename T>
+
357 T ConfigManager::getValue(std::string_view sSection, std::string_view sKey, T defaultValue) const {
+
358 if (sSection.empty()) {
+
359 return toml::find_or(tomlData, sKey.data(), defaultValue);
+
360 } else {
+
361 return toml::find_or(tomlData, sSection.data(), sKey.data(), defaultValue);
+
362 }
+
363 }
+
364
+
365 template <typename T>
+ +
367 std::string_view sSection, std::string_view sKey, T value, std::string_view sComment) {
+
368 if (sSection.empty()) {
+
369 if (sComment.empty()) {
+
370 tomlData[sKey.data()] = toml::value(value);
+
371 } else {
+
372 tomlData[sKey.data()] = toml::value(value, {sComment.data()});
+
373 }
+
374 } else {
+
375 if (sComment.empty()) {
+
376 tomlData[sSection.data()][sKey.data()] = toml::value(value);
+
377 } else {
+
378 tomlData[sSection.data()][sKey.data()] = toml::value(value, {sComment.data()});
+
379 }
+
380 }
+
381 }
+
382} // namespace ne
+
Definition: ConfigManager.h:27
+
static std::set< std::string > getAllFileNames(ConfigCategory category)
Definition: ConfigManager.cpp:15
+
static std::string getBackupFileExtension()
Definition: ConfigManager.cpp:13
+
static std::variant< std::filesystem::path, Error > constructFilePath(ConfigCategory category, std::string_view sFileName)
Definition: ConfigManager.cpp:283
+
std::filesystem::path getFilePath() const
Definition: ConfigManager.cpp:280
+
std::optional< Error > loadFile(ConfigCategory category, std::string_view sFileName)
Definition: ConfigManager.cpp:116
+
static std::filesystem::path getCategoryDirectory(ConfigCategory category)
Definition: ConfigManager.cpp:56
+
static std::string getFreeProgressProfileName()
Definition: ConfigManager.cpp:51
+
toml::value tomlData
Definition: ConfigManager.h:347
+
std::filesystem::path filePath
Definition: ConfigManager.h:350
+
static std::string getConfigFormatExtension()
Definition: ConfigManager.cpp:11
+
static const char * sBackupFileExtension
Definition: ConfigManager.h:353
+
void setValue(std::string_view sSection, std::string_view sKey, T value, std::string_view sComment="")
Definition: ConfigManager.h:366
+
std::vector< std::string > getAllSections()
Definition: ConfigManager.cpp:163
+
std::optional< Error > saveFile(ConfigCategory category, std::string_view sFileName)
Definition: ConfigManager.cpp:199
+
ConfigManager()=default
+
T getValue(std::string_view sSection, std::string_view sKey, T defaultValue) const
Definition: ConfigManager.h:357
+
static std::string generateFreeFileName(const std::set< std::string > &usedFileNames, const std::string &sFileNamePrefix="")
Definition: ConfigManager.cpp:318
+
static std::optional< Error > removeFile(ConfigCategory category, std::string_view sFileName)
Definition: ConfigManager.cpp:75
+
std::variant< std::vector< std::string >, Error > getAllKeysOfSection(std::string_view sSection) const
Definition: ConfigManager.cpp:177
+
Definition: Error.h:27
+
+
+ + + + diff --git a/DescriptorConstants_8hpp_source.html b/DescriptorConstants_8hpp_source.html new file mode 100644 index 000000000..80e6ce4ef --- /dev/null +++ b/DescriptorConstants_8hpp_source.html @@ -0,0 +1,119 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/DescriptorConstants.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DescriptorConstants.hpp
+
+
+
1#pragma once
+
2
+
3namespace ne {
+ +
6 DescriptorConstants() = delete;
+
7
+
15 static constexpr unsigned int iBindlessTextureArrayDescriptorCount = 20000; // NOLINT: magic number
+
16 };
+
17}
+
Definition: DescriptorConstants.hpp:5
+
static constexpr unsigned int iBindlessTextureArrayDescriptorCount
Definition: DescriptorConstants.hpp:15
+
+
+ + + + diff --git a/DescriptorSetLayoutGenerator_8h_source.html b/DescriptorSetLayoutGenerator_8h_source.html new file mode 100644 index 000000000..952a65310 --- /dev/null +++ b/DescriptorSetLayoutGenerator_8h_source.html @@ -0,0 +1,206 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/glsl/DescriptorSetLayoutGenerator.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DescriptorSetLayoutGenerator.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <variant>
+
5#include <vector>
+
6#include <unordered_map>
+
7#include <array>
+
8#include <unordered_set>
+
9
+
10// Custom.
+
11#include "misc/Error.h"
+
12#include "render/general/resource/frame/FrameResourceManager.h"
+
13#include "shader/VulkanAlignmentConstants.hpp"
+
14#include "misc/StdHashes.hpp"
+
15
+
16// External.
+
17#include "vulkan/vulkan.h"
+
18
+
19namespace ne {
+
20 class GlslShader;
+
21 class VulkanRenderer;
+
22
+
24 enum class GlslResourceType {
+
25 UNIFORM_BUFFER,
+
26 STORAGE_BUFFER,
+
27 COMBINED_SAMPLER,
+
28 STORAGE_IMAGE,
+
29 // ... add new resource types here ...
+
30 };
+
31
+ +
34 public:
+
36 struct Collected {
+ +
40 GlslResourceType resourceType;
+
41
+
43 std::string sResourceName;
+
44 };
+
45
+
50 std::unordered_map<uint32_t, DescriptorSetLayoutBindingInfo> bindingInfo;
+
51
+
60 std::unordered_map<std::string, size_t> pushConstantUintFieldOffsets;
+
61 };
+
62
+
64 struct Generated {
+
66 VkDescriptorSetLayout pDescriptorSetLayout = nullptr;
+
67
+
69 VkDescriptorPool pDescriptorPool = nullptr;
+
70
+ +
73
+
82 std::unordered_map<std::string, uint32_t, StdStringHash, std::equal_to<>> resourceBindings;
+
83
+
92 std::unordered_map<std::string, size_t> pushConstantUintFieldOffsets;
+
93 };
+
94
+ + + +
98
+
108 static std::variant<Collected, Error>
+
109 collectInfoFromBytecode(void* pSpirvBytecode, size_t iSizeInBytes);
+
110
+
125 static std::variant<Generated, Error>
+
126 generateGraphics(VulkanRenderer* pRenderer, GlslShader* pVertexShader, GlslShader* pFragmentShader);
+
127
+
139 static std::variant<Generated, Error>
+
140 generateCompute(VulkanRenderer* pRenderer, GlslShader* pComputeShader);
+
141
+
142 private:
+
153 static std::variant<std::pair<VkDescriptorSetLayoutBinding, VkDescriptorBindingFlags>, Error>
+ +
155 uint32_t iBindingIndex,
+ +
157 bool bIsComputeShader);
+
158 };
+
159} // namespace ne
+
Definition: DescriptorSetLayoutGenerator.h:33
+
static std::variant< std::pair< VkDescriptorSetLayoutBinding, VkDescriptorBindingFlags >, Error > generateLayoutBinding(uint32_t iBindingIndex, const Collected::DescriptorSetLayoutBindingInfo &bindingInfo, bool bIsComputeShader)
Definition: DescriptorSetLayoutGenerator.cpp:793
+
static std::variant< Collected, Error > collectInfoFromBytecode(void *pSpirvBytecode, size_t iSizeInBytes)
Definition: DescriptorSetLayoutGenerator.cpp:19
+
static std::variant< Generated, Error > generateCompute(VulkanRenderer *pRenderer, GlslShader *pComputeShader)
Definition: DescriptorSetLayoutGenerator.cpp:570
+
static std::variant< Generated, Error > generateGraphics(VulkanRenderer *pRenderer, GlslShader *pVertexShader, GlslShader *pFragmentShader)
Definition: DescriptorSetLayoutGenerator.cpp:179
+
Definition: Error.h:27
+
static constexpr unsigned int getFrameResourceCount()
Definition: FrameResourceManager.h:74
+
Definition: GlslShader.h:20
+
Definition: VulkanRenderer.h:26
+ +
std::string sResourceName
Definition: DescriptorSetLayoutGenerator.h:43
+
GlslResourceType resourceType
Definition: DescriptorSetLayoutGenerator.h:40
+
Definition: DescriptorSetLayoutGenerator.h:36
+
std::unordered_map< uint32_t, DescriptorSetLayoutBindingInfo > bindingInfo
Definition: DescriptorSetLayoutGenerator.h:50
+
std::unordered_map< std::string, size_t > pushConstantUintFieldOffsets
Definition: DescriptorSetLayoutGenerator.h:60
+
Definition: DescriptorSetLayoutGenerator.h:64
+
VkDescriptorSetLayout pDescriptorSetLayout
Definition: DescriptorSetLayoutGenerator.h:66
+
std::unordered_map< std::string, uint32_t, StdStringHash, std::equal_to<> > resourceBindings
Definition: DescriptorSetLayoutGenerator.h:82
+
std::array< VkDescriptorSet, FrameResourceManager::getFrameResourceCount()> vDescriptorSets
Definition: DescriptorSetLayoutGenerator.h:72
+
std::unordered_map< std::string, size_t > pushConstantUintFieldOffsets
Definition: DescriptorSetLayoutGenerator.h:92
+
VkDescriptorPool pDescriptorPool
Definition: DescriptorSetLayoutGenerator.h:69
+
+
+ + + + diff --git a/DesktopNotification_8h_source.html b/DesktopNotification_8h_source.html new file mode 100644 index 000000000..7c02c92bb --- /dev/null +++ b/DesktopNotification_8h_source.html @@ -0,0 +1,127 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/misc/DesktopNotification.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DesktopNotification.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <string>
+
5
+
6namespace ne {
+ +
9 public:
+
16 static void info(const std::string& sTitle, const std::string& sText);
+
17
+
24 static void warning(const std::string& sTitle, const std::string& sText);
+
25
+
32 static void error(const std::string& sTitle, const std::string& sText);
+
33 };
+
34} // namespace ne
+
Definition: DesktopNotification.h:8
+
static void error(const std::string &sTitle, const std::string &sText)
Definition: DesktopNotification.cpp:15
+
static void warning(const std::string &sTitle, const std::string &sText)
Definition: DesktopNotification.cpp:11
+
static void info(const std::string &sTitle, const std::string &sText)
Definition: DesktopNotification.cpp:7
+
+
+ + + + diff --git a/DirectXDescriptorHeap_8h_source.html b/DirectXDescriptorHeap_8h_source.html new file mode 100644 index 000000000..bba7e7c50 --- /dev/null +++ b/DirectXDescriptorHeap_8h_source.html @@ -0,0 +1,379 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/directx/descriptors/DirectXDescriptorHeap.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DirectXDescriptorHeap.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <variant>
+
5#include <memory>
+
6#include <unordered_set>
+
7#include <mutex>
+
8#include <atomic>
+
9#include <queue>
+
10#include <functional>
+
11
+
12// Custom.
+
13#include "render/directx/descriptors/DirectXDescriptor.h"
+
14#include "render/general/resource/GpuResource.h"
+
15#include "DirectXDescriptorType.hpp"
+
16
+
17// External.
+
18#include "directx/d3dx12.h"
+
19#include "misc/Error.h"
+
20
+
21// OS.
+
22#include <wrl.h>
+
23
+
24namespace ne {
+
25 using namespace Microsoft::WRL;
+
26
+
27 class DirectXRenderer;
+
28 class DirectXResource;
+
29 class DirectXDescriptorHeap;
+
30
+
32 enum class DescriptorHeapType : int {
+
33 RTV = 0,
+
34 DSV,
+
35 CBV_SRV_UAV,
+
36 };
+
37
+ +
45 // This class is fully managed by the heap.
+
46 friend class DirectXDescriptorHeap;
+
47
+
48 public:
+ +
50
+
51 /* Notifies the heap. */
+ +
53
+ + +
56
+
57 // Intentionally disable `move` because heap will store a raw pointer to the range
+
58 // and we don't want to accidentally `move` the range which will make the heap's raw pointer invalid.
+ + +
61 operator=(ContinuousDirectXDescriptorRange&& other) noexcept = delete;
+
62
+
68 static constexpr INT getRangeGrowSize() { return iRangeGrowSize; }
+
69
+
80 std::variant<unsigned int, Error> getResourceDescriptorOffsetFromRangeStart(
+
81 DirectXResource* pResource, DirectXDescriptorType descriptorType);
+
82
+
88 size_t getRangeSize();
+
89
+
95 size_t getRangeCapacity();
+
96
+ +
103
+
112 D3D12_GPU_DESCRIPTOR_HANDLE getGpuDescriptorHandleToRangeStart() const;
+
113
+
114 private:
+ +
125 std::unordered_set<DirectXDescriptor*> allocatedDescriptors;
+
126
+ +
129
+ +
137
+ +
140
+ +
150 };
+
151
+ + +
163 const std::function<void()>& onRangeIndicesChanged,
+
164 const std::string& sRangeName);
+
165
+
176 [[nodiscard]] std::optional<Error> markDescriptorAsUnused(DirectXDescriptor* pDescriptor);
+
177
+
188 std::variant<std::optional<INT>, Error> tryReserveFreeHeapIndexToCreateDescriptor();
+
189
+
191 std::pair<std::recursive_mutex, InternalData> mtxInternalData;
+
192
+
194 const std::function<void()> onRangeIndicesChanged;
+
195
+
197 const std::string sRangeName;
+
198
+
200 DirectXDescriptorHeap* const pHeap = nullptr;
+
201
+
207 static constexpr INT iRangeGrowSize = 50; // NOLINT: see static asserts
+
208 };
+
209
+ +
212 // Notifies the heap about descriptor being destroyed.
+
213 friend class DirectXDescriptor;
+
214
+
215 // Notifies the heap about range being destroyed.
+ +
217
+
218 // Only resource can request descriptors.
+
219 friend class DirectXResource;
+
220
+
221 public:
+ +
225 ComPtr<ID3D12DescriptorHeap> pHeap;
+
226
+
228 std::unordered_set<ContinuousDirectXDescriptorRange*> continuousDescriptorRanges;
+
229
+ +
232
+
238 INT iHeapSize = 0;
+
239
+ +
249
+ +
257
+
267 std::unordered_set<DirectXDescriptor*> bindedSingleDescriptors;
+
268 };
+
269
+
270 DirectXDescriptorHeap() = delete;
+ +
272 DirectXDescriptorHeap& operator=(const DirectXDescriptorHeap&) = delete;
+
273
+ +
276
+
282 static constexpr INT getHeapGrowSize() { return iHeapGrowSize; }
+
283
+
292 static std::variant<std::unique_ptr<DirectXDescriptorHeap>, Error>
+
293 create(DirectXRenderer* pRenderer, DescriptorHeapType heapType);
+
294
+
305 std::variant<std::unique_ptr<ContinuousDirectXDescriptorRange>, Error>
+ +
307 const std::string& sRangeName, const std::function<void()>& onRangeIndicesChanged);
+
308
+
317 INT getHeapCapacity();
+
318
+
327 INT getHeapSize();
+
328
+ +
335
+
341 inline UINT getDescriptorSize() const { return iDescriptorSize; }
+
342
+
348 inline ID3D12DescriptorHeap* getInternalHeap() const { return mtxInternalData.second.pHeap.Get(); }
+
349
+
357 std::pair<std::recursive_mutex, InternalData>* getInternalData() { return &mtxInternalData; }
+
358
+
359 protected:
+
367 static std::string convertHeapTypeToString(DescriptorHeapType heapType);
+
368
+ +
376
+ +
388 DirectXDescriptor* pDescriptor, ContinuousDirectXDescriptorRange* pRange = nullptr);
+
389
+ +
398
+
409 void createView(
+
410 CD3DX12_CPU_DESCRIPTOR_HANDLE heapHandle,
+
411 const DirectXResource* pResource,
+
412 DirectXDescriptorType descriptorType,
+
413 std::optional<size_t> cubemapFaceIndex) const;
+
414
+
425 [[nodiscard]] std::optional<Error> expandHeap(ContinuousDirectXDescriptorRange* pChangedRange);
+
426
+
440 [[nodiscard]] std::variant<bool, Error>
+ +
442
+
455 [[nodiscard]] std::optional<Error>
+
456 createHeap(INT iCapacity, ContinuousDirectXDescriptorRange* pChangedRange);
+
457
+
465 std::vector<DirectXDescriptorType> getDescriptorTypesHandledByThisHeap() const;
+
466
+
475 [[nodiscard]] std::optional<Error> rebindViewsUpdateIndices();
+
476
+
477 private:
+
495 [[nodiscard]] std::optional<Error> assignDescriptor(
+
496 DirectXResource* pResource,
+
497 DirectXDescriptorType descriptorType,
+
498 ContinuousDirectXDescriptorRange* pRange = nullptr,
+
499 bool bBindDescriptorsToCubemapFaces = true);
+
500
+
510 static bool isShrinkingPossible(INT iSize, INT iCapacity, INT iGrowSize);
+
511
+
519 [[nodiscard]] std::optional<Error> expandRange(ContinuousDirectXDescriptorRange* pRange);
+
520
+ +
523
+
525 std::pair<std::recursive_mutex, InternalData> mtxInternalData;
+
526
+ +
529
+
531 DescriptorHeapType heapType;
+
532
+
534 std::string sHeapType;
+
535
+
537 D3D12_DESCRIPTOR_HEAP_TYPE d3dHeapType;
+
538
+
540 static constexpr INT iHeapGrowSize = 300; // NOLINT: don't recreate heap too often
+
541 };
+
542} // namespace ne
+
Definition: DirectXDescriptorHeap.h:44
+
size_t getRangeSize()
Definition: DirectXDescriptorHeap.cpp:1090
+
const std::string sRangeName
Definition: DirectXDescriptorHeap.h:197
+
std::variant< std::optional< INT >, Error > tryReserveFreeHeapIndexToCreateDescriptor()
Definition: DirectXDescriptorHeap.cpp:1152
+
INT getRangeStartInHeap()
Definition: DirectXDescriptorHeap.cpp:1100
+
size_t getRangeCapacity()
Definition: DirectXDescriptorHeap.cpp:1095
+
D3D12_GPU_DESCRIPTOR_HANDLE getGpuDescriptorHandleToRangeStart() const
Definition: DirectXDescriptorHeap.cpp:1105
+
const std::function< void()> onRangeIndicesChanged
Definition: DirectXDescriptorHeap.h:194
+
DirectXDescriptorHeap *const pHeap
Definition: DirectXDescriptorHeap.h:200
+
std::optional< Error > markDescriptorAsUnused(DirectXDescriptor *pDescriptor)
Definition: DirectXDescriptorHeap.cpp:1130
+
static constexpr INT iRangeGrowSize
Definition: DirectXDescriptorHeap.h:207
+
std::variant< unsigned int, Error > getResourceDescriptorOffsetFromRangeStart(DirectXResource *pResource, DirectXDescriptorType descriptorType)
Definition: DirectXDescriptorHeap.cpp:1048
+
static constexpr INT getRangeGrowSize()
Definition: DirectXDescriptorHeap.h:68
+
std::pair< std::recursive_mutex, InternalData > mtxInternalData
Definition: DirectXDescriptorHeap.h:191
+
Definition: DirectXDescriptorHeap.h:211
+
INT getHeapSize()
Definition: DirectXDescriptorHeap.cpp:217
+
static std::string convertHeapTypeToString(DescriptorHeapType heapType)
Definition: DirectXDescriptorHeap.cpp:227
+
void onDescriptorRangeBeingDestroyed(ContinuousDirectXDescriptorRange *pRange)
Definition: DirectXDescriptorHeap.cpp:427
+
static std::variant< std::unique_ptr< DirectXDescriptorHeap >, Error > create(DirectXRenderer *pRenderer, DescriptorHeapType heapType)
Definition: DirectXDescriptorHeap.cpp:11
+
DirectXRenderer * pRenderer
Definition: DirectXDescriptorHeap.h:522
+
static constexpr INT getHeapGrowSize()
Definition: DirectXDescriptorHeap.h:282
+
void onDescriptorBeingDestroyed(DirectXDescriptor *pDescriptor, ContinuousDirectXDescriptorRange *pRange=nullptr)
Definition: DirectXDescriptorHeap.cpp:320
+
D3D12_DESCRIPTOR_HEAP_TYPE d3dHeapType
Definition: DirectXDescriptorHeap.h:537
+
std::string sHeapType
Definition: DirectXDescriptorHeap.h:534
+
std::optional< Error > expandRange(ContinuousDirectXDescriptorRange *pRange)
Definition: DirectXDescriptorHeap.cpp:542
+
std::variant< bool, Error > shrinkHeapIfPossible(ContinuousDirectXDescriptorRange *pChangedRange)
Definition: DirectXDescriptorHeap.cpp:574
+
~DirectXDescriptorHeap()
Definition: DirectXDescriptorHeap.cpp:286
+
std::vector< DirectXDescriptorType > getDescriptorTypesHandledByThisHeap() const
Definition: DirectXDescriptorHeap.cpp:912
+
UINT getDescriptorSize() const
Definition: DirectXDescriptorHeap.h:341
+
std::optional< Error > assignDescriptor(DirectXResource *pResource, DirectXDescriptorType descriptorType, ContinuousDirectXDescriptorRange *pRange=nullptr, bool bBindDescriptorsToCubemapFaces=true)
Definition: DirectXDescriptorHeap.cpp:47
+
static bool isShrinkingPossible(INT iSize, INT iCapacity, INT iGrowSize)
Definition: DirectXDescriptorHeap.cpp:520
+
std::pair< std::recursive_mutex, InternalData > mtxInternalData
Definition: DirectXDescriptorHeap.h:525
+
DescriptorHeapType heapType
Definition: DirectXDescriptorHeap.h:531
+
std::pair< std::recursive_mutex, InternalData > * getInternalData()
Definition: DirectXDescriptorHeap.h:357
+
std::variant< std::unique_ptr< ContinuousDirectXDescriptorRange >, Error > allocateContinuousDescriptorRange(const std::string &sRangeName, const std::function< void()> &onRangeIndicesChanged)
Definition: DirectXDescriptorHeap.cpp:25
+
std::optional< Error > expandHeap(ContinuousDirectXDescriptorRange *pChangedRange)
Definition: DirectXDescriptorHeap.cpp:472
+
size_t getNoLongerUsedDescriptorCount()
Definition: DirectXDescriptorHeap.cpp:222
+
std::optional< Error > rebindViewsUpdateIndices()
Definition: DirectXDescriptorHeap.cpp:927
+
UINT iDescriptorSize
Definition: DirectXDescriptorHeap.h:528
+
ID3D12DescriptorHeap * getInternalHeap() const
Definition: DirectXDescriptorHeap.h:348
+
void createView(CD3DX12_CPU_DESCRIPTOR_HANDLE heapHandle, const DirectXResource *pResource, DirectXDescriptorType descriptorType, std::optional< size_t > cubemapFaceIndex) const
Definition: DirectXDescriptorHeap.cpp:596
+
INT getHeapCapacity()
Definition: DirectXDescriptorHeap.cpp:212
+
static constexpr INT iHeapGrowSize
Definition: DirectXDescriptorHeap.h:540
+
std::optional< Error > createHeap(INT iCapacity, ContinuousDirectXDescriptorRange *pChangedRange)
Definition: DirectXDescriptorHeap.cpp:859
+
Definition: DirectXDescriptor.h:18
+
Definition: DirectXRenderer.h:36
+
Definition: DirectXResource.h:32
+
Definition: Error.h:27
+
Definition: DirectXDescriptorHeap.h:116
+
std::unordered_set< DirectXDescriptor * > allocatedDescriptors
Definition: DirectXDescriptorHeap.h:125
+
INT iRangeStartInHeap
Definition: DirectXDescriptorHeap.h:136
+
INT iRangeCapacity
Definition: DirectXDescriptorHeap.h:139
+
std::queue< INT > noLongerUsedDescriptorIndices
Definition: DirectXDescriptorHeap.h:128
+
INT iNextFreeIndexInRange
Definition: DirectXDescriptorHeap.h:149
+
Definition: DirectXDescriptorHeap.h:223
+
std::queue< INT > noLongerUsedSingleDescriptorIndices
Definition: DirectXDescriptorHeap.h:256
+
std::unordered_set< ContinuousDirectXDescriptorRange * > continuousDescriptorRanges
Definition: DirectXDescriptorHeap.h:228
+
std::unordered_set< DirectXDescriptor * > bindedSingleDescriptors
Definition: DirectXDescriptorHeap.h:267
+
INT iNextFreeHeapIndex
Definition: DirectXDescriptorHeap.h:248
+
INT iHeapCapacity
Definition: DirectXDescriptorHeap.h:231
+
INT iHeapSize
Definition: DirectXDescriptorHeap.h:238
+
ComPtr< ID3D12DescriptorHeap > pHeap
Definition: DirectXDescriptorHeap.h:225
+
+
+ + + + diff --git a/DirectXDescriptorType_8hpp_source.html b/DirectXDescriptorType_8hpp_source.html new file mode 100644 index 000000000..0ff94528c --- /dev/null +++ b/DirectXDescriptorType_8hpp_source.html @@ -0,0 +1,121 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/directx/descriptors/DirectXDescriptorType.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DirectXDescriptorType.hpp
+
+
+
1#pragma once
+
2
+
3namespace ne {
+
5 enum class DirectXDescriptorType : size_t {
+
6 RTV = 0,
+
7 DSV,
+
8 CBV,
+
9 SRV,
+
10 UAV,
+
11
+
12 END // marks the size of this enum
+
13 };
+
14}
+
+
+ + + + diff --git a/DirectXDescriptor_8h_source.html b/DirectXDescriptor_8h_source.html new file mode 100644 index 000000000..e4606afdc --- /dev/null +++ b/DirectXDescriptor_8h_source.html @@ -0,0 +1,181 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/directx/descriptors/DirectXDescriptor.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DirectXDescriptor.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <optional>
+
5
+
6// Custom.
+
7#include "DirectXDescriptorType.hpp"
+
8
+
9namespace ne {
+
10 class DirectXDescriptorHeap;
+
11 class ContinuousDirectXDescriptorRange;
+
12 class DirectXResource;
+
13
+ +
19 // We notify the heap about descriptor being no longer used in destructor.
+
20 friend class DirectXDescriptorHeap;
+
21
+
22 public:
+
23 DirectXDescriptor() = delete;
+
24
+ +
27
+
28 DirectXDescriptor(const DirectXDescriptor& other) = delete;
+
29 DirectXDescriptor& operator=(const DirectXDescriptor& other) = delete;
+
30
+
31 // Intentionally disable `move` because heap stores raw pointers to descriptors
+
32 // and wraps descriptors into unique ptr to provide move functionality.
+
33 DirectXDescriptor(DirectXDescriptor&& other) noexcept = delete;
+
34 DirectXDescriptor& operator=(DirectXDescriptor&& other) noexcept = delete;
+
35
+ +
43
+
49 inline DirectXDescriptorHeap* getDescriptorHeap() const { return pHeap; }
+
50
+ +
57
+
58 protected:
+ + +
74 DirectXDescriptorType descriptorType,
+ + +
77 std::optional<size_t> referencedCubemapFaceIndex,
+ +
79
+
80 private:
+ +
86
+ +
89
+
91 DirectXDescriptorHeap* const pHeap = nullptr;
+
92
+ +
98
+
100 const std::optional<size_t> referencedCubemapFaceIndex;
+
101
+
103 const DirectXDescriptorType descriptorType;
+
104 };
+
105} // namespace ne
+
Definition: DirectXDescriptorHeap.h:44
+
Definition: DirectXDescriptorHeap.h:211
+
Definition: DirectXDescriptor.h:18
+
DirectXResource * pResource
Definition: DirectXDescriptor.h:88
+
int getDescriptorOffsetInDescriptors() const
Definition: DirectXDescriptor.h:42
+
ContinuousDirectXDescriptorRange *const pRange
Definition: DirectXDescriptor.h:97
+
DirectXResource * getOwnerResource() const
Definition: DirectXDescriptor.cpp:32
+
DirectXDescriptorHeap * getDescriptorHeap() const
Definition: DirectXDescriptor.h:49
+
int iDescriptorOffsetInDescriptors
Definition: DirectXDescriptor.h:85
+
const std::optional< size_t > referencedCubemapFaceIndex
Definition: DirectXDescriptor.h:100
+
~DirectXDescriptor()
Definition: DirectXDescriptor.cpp:8
+
DirectXDescriptorHeap *const pHeap
Definition: DirectXDescriptor.h:91
+
const DirectXDescriptorType descriptorType
Definition: DirectXDescriptor.h:103
+
Definition: DirectXResource.h:32
+
+
+ + + + diff --git a/DirectXFrameResource_8h_source.html b/DirectXFrameResource_8h_source.html new file mode 100644 index 000000000..692e1a53c --- /dev/null +++ b/DirectXFrameResource_8h_source.html @@ -0,0 +1,153 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/directx/resource/DirectXFrameResource.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DirectXFrameResource.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <array>
+
5#include <memory>
+
6#include <atomic>
+
7#include <mutex>
+
8#include <variant>
+
9
+
10// Custom.
+
11#include "misc/Error.h"
+
12#include "math/GLMath.hpp"
+
13#include "render/general/resource/frame/FrameResource.h"
+
14
+
15// External.
+
16#include "directx/d3dx12.h"
+
17
+
18// OS.
+
19#include <wrl.h>
+
20
+
21struct ID3D12CommandAllocator;
+
22
+
23namespace ne {
+
24 class Renderer;
+
25#if defined(WIN32)
+
26 using namespace Microsoft::WRL;
+
27#endif
+
28
+ +
31 virtual ~DirectXFrameResource() override = default;
+
32
+
34 ComPtr<ID3D12CommandAllocator> pCommandAllocator;
+
35
+
37 unsigned long long iFence = 0;
+
38
+
39 private:
+
47 [[nodiscard]] virtual std::optional<Error> initialize(Renderer* pRenderer) override;
+
48 };
+
49} // namespace ne
+
Definition: Renderer.h:44
+
Definition: DirectXFrameResource.h:30
+
virtual std::optional< Error > initialize(Renderer *pRenderer) override
Definition: DirectXFrameResource.cpp:8
+
ComPtr< ID3D12CommandAllocator > pCommandAllocator
Definition: DirectXFrameResource.h:34
+
unsigned long long iFence
Definition: DirectXFrameResource.h:37
+
Definition: FrameResource.h:15
+
+
+ + + + diff --git a/DirectXPso_8h_source.html b/DirectXPso_8h_source.html new file mode 100644 index 000000000..6452dffe0 --- /dev/null +++ b/DirectXPso_8h_source.html @@ -0,0 +1,238 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/directx/pipeline/DirectXPso.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DirectXPso.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "render/general/pipeline/Pipeline.h"
+
5#include "shader/hlsl/SpecialRootParameterSlot.hpp"
+
6#include "render/general/resource/frame/FrameResourceManager.h"
+
7#include "render/directx/resource/DirectXResource.h"
+
8
+
9// External.
+
10#include "directx/d3dx12.h"
+
11
+
12// OS.
+
13#include <wrl.h>
+
14
+
15namespace ne {
+
16 using namespace Microsoft::WRL;
+
17
+
18 class DirectXResource;
+
19 class DirectXRenderer;
+
20
+
22 class DirectXPso : public Pipeline {
+
23 // Renderer will ask us to bind global shader resource views.
+
24 friend class DirectXRenderer;
+
25
+
26 public:
+ +
30 ComPtr<ID3D12RootSignature> pRootSignature;
+
31
+
33 ComPtr<ID3D12PipelineState> pPso;
+
34
+
42 std::unordered_map<std::string, UINT> rootParameterIndices;
+
43
+
54 std::array<UINT, static_cast<unsigned int>(SpecialRootParameterSlot::SIZE)>
+ +
56
+
65 std::unordered_map<
+
66 UINT,
+ + +
69
+
75 std::unordered_map<UINT, std::unique_ptr<ContinuousDirectXDescriptorRange>>
+ +
77
+
79 bool bIsReadyForUsage = false;
+
80 };
+
81
+
82 DirectXPso() = delete;
+
83 DirectXPso(const DirectXPso&) = delete;
+
84 DirectXPso& operator=(const DirectXPso&) = delete;
+
85
+
86 virtual ~DirectXPso() override;
+
87
+
98 static std::variant<std::shared_ptr<DirectXPso>, Error> createGraphicsPso(
+ + +
101 std::unique_ptr<PipelineConfiguration> pPipelineConfiguration);
+
102
+
113 static std::variant<std::shared_ptr<DirectXPso>, Error> createComputePso(
+
114 Renderer* pRenderer, PipelineManager* pPipelineManager, const std::string& sComputeShaderName);
+
115
+
124 std::variant<unsigned int, Error> getRootParameterIndex(const std::string& sShaderResourceName);
+
125
+
131 std::pair<std::recursive_mutex, InternalResources>* getInternalResources() {
+
132 return &mtxInternalResources;
+
133 }
+
134
+
135 protected:
+
150 [[nodiscard]] virtual std::optional<Error> releaseInternalResources() override;
+
151
+
160 [[nodiscard]] virtual std::optional<Error> restoreInternalResources() override;
+
161
+
162 private:
+
170 explicit DirectXPso(
+ + +
173 std::unique_ptr<PipelineConfiguration> pPipelineConfiguration);
+
174
+ +
185 const ComPtr<ID3D12GraphicsCommandList>& pCommandList, size_t iCurrentFrameResourceIndex) const {
+
186 // No need to lock internal resources mutex since the caller is expected to lock that mutex
+
187 // because this function is expected to be called inside of the `draw` function.
+
188
+
189 // Bind global SRVs.
+
190 for (const auto& [iRootParameterIndex, vResourcesToBind] :
+
191 mtxInternalResources.second.globalShaderResourceSrvs) {
+
192 // Set view.
+
193 pCommandList->SetGraphicsRootShaderResourceView(
+
194 iRootParameterIndex,
+
195 vResourcesToBind[iCurrentFrameResourceIndex]
+
196 ->getInternalResource()
+
197 ->GetGPUVirtualAddress());
+
198 }
+
199 }
+
200
+
210 [[nodiscard]] std::optional<Error> generateGraphicsPso();
+
211
+
221 [[nodiscard]] std::optional<Error> generateComputePso();
+
222
+
227 std::pair<std::recursive_mutex, InternalResources> mtxInternalResources;
+
228 };
+
229} // namespace ne
+
Definition: DirectXPso.h:22
+
static std::variant< std::shared_ptr< DirectXPso >, Error > createGraphicsPso(Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration)
Definition: DirectXPso.cpp:35
+
virtual std::optional< Error > restoreInternalResources() override
Definition: DirectXPso.cpp:136
+
std::optional< Error > generateGraphicsPso()
Definition: DirectXPso.cpp:150
+
static std::variant< std::shared_ptr< DirectXPso >, Error > createComputePso(Renderer *pRenderer, PipelineManager *pPipelineManager, const std::string &sComputeShaderName)
Definition: DirectXPso.cpp:53
+
std::pair< std::recursive_mutex, InternalResources > mtxInternalResources
Definition: DirectXPso.h:227
+
std::pair< std::recursive_mutex, InternalResources > * getInternalResources()
Definition: DirectXPso.h:131
+
std::variant< unsigned int, Error > getRootParameterIndex(const std::string &sShaderResourceName)
Definition: DirectXPso.cpp:70
+
virtual std::optional< Error > releaseInternalResources() override
Definition: DirectXPso.cpp:85
+
void bindGlobalShaderResourceViews(const ComPtr< ID3D12GraphicsCommandList > &pCommandList, size_t iCurrentFrameResourceIndex) const
Definition: DirectXPso.h:184
+
std::optional< Error > generateComputePso()
Definition: DirectXPso.cpp:373
+
Definition: DirectXRenderer.h:36
+
Definition: DirectXResource.h:32
+
Definition: Error.h:27
+
static constexpr unsigned int getFrameResourceCount()
Definition: FrameResourceManager.h:74
+
Definition: PipelineManager.h:98
+
Definition: Pipeline.h:20
+
const std::unique_ptr< PipelineConfiguration > pPipelineConfiguration
Definition: Pipeline.h:299
+
Renderer *const pRenderer
Definition: Pipeline.h:305
+
PipelineManager *const pPipelineManager
Definition: Pipeline.h:302
+
Definition: Renderer.h:44
+
Definition: DirectXPso.h:28
+
bool bIsReadyForUsage
Definition: DirectXPso.h:79
+
std::array< UINT, static_cast< unsigned int >(SpecialRootParameterSlot::SIZE)> vSpecialRootParameterIndices
Definition: DirectXPso.h:55
+
std::unordered_map< UINT, std::unique_ptr< ContinuousDirectXDescriptorRange > > descriptorTablesToBind
Definition: DirectXPso.h:76
+
std::unordered_map< std::string, UINT > rootParameterIndices
Definition: DirectXPso.h:42
+
ComPtr< ID3D12RootSignature > pRootSignature
Definition: DirectXPso.h:30
+
std::unordered_map< UINT, std::array< DirectXResource *, FrameResourceManager::getFrameResourceCount()> > globalShaderResourceSrvs
Definition: DirectXPso.h:68
+
ComPtr< ID3D12PipelineState > pPso
Definition: DirectXPso.h:33
+
+
+ + + + diff --git a/DirectXRenderer_8h_source.html b/DirectXRenderer_8h_source.html new file mode 100644 index 000000000..c9b1c963c --- /dev/null +++ b/DirectXRenderer_8h_source.html @@ -0,0 +1,453 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/directx/DirectXRenderer.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DirectXRenderer.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <optional>
+
5#include <variant>
+
6#include <vector>
+
7#include <mutex>
+
8#include <atomic>
+
9#include <memory>
+
10
+
11// Custom.
+
12#include "render/Renderer.h"
+
13#include "misc/Error.h"
+
14#include "render/directx/resource/DirectXResource.h"
+
15
+
16// External.
+
17#include "directx/d3dx12.h"
+
18
+
19// OS.
+
20#include <wrl.h>
+
21#include <dxgi1_4.h>
+
22
+
23namespace ne {
+
24 using namespace Microsoft::WRL;
+
25
+
26 class GameManager;
+
27 class DirectXResourceManager;
+
28 class Material;
+
29 class CameraProperties;
+
30 class DirectXPso;
+
31 struct QueuedForExecutionComputeShaders;
+
32 class ComputeShaderInterface;
+
33 struct DirectXFrameResource;
+
34
+
36 class DirectXRenderer : public Renderer {
+
37 public:
+
38 DirectXRenderer() = delete;
+
39 DirectXRenderer(const DirectXRenderer&) = delete;
+
40 DirectXRenderer& operator=(const DirectXRenderer&) = delete;
+
41
+
42 virtual ~DirectXRenderer() override;
+
43
+
55 static std::variant<std::unique_ptr<Renderer>, std::pair<Error, std::string>>
+
56 create(GameManager* pGameManager, const std::vector<std::string>& vBlacklistedGpuNames);
+
57
+
63 static constexpr DXGI_FORMAT getBackBufferFormat() { return backBufferFormat; }
+
64
+
70 static constexpr DXGI_FORMAT getDepthStencilBufferFormat() { return depthStencilBufferFormat; }
+
71
+
77 static constexpr DXGI_FORMAT getDepthBufferFormatNoMultisampling() {
+ +
79 }
+
80
+
86 static constexpr DXGI_FORMAT getShadowMapFormat() { return shadowMapFormat; }
+
87
+
94 static constexpr DXGI_FORMAT getShadowMappingPointLightColorTargetFormat() {
+ +
96 }
+
97
+
106 virtual std::vector<std::string> getSupportedGpuNames() const override;
+
107
+
113 virtual std::variant<std::set<std::pair<unsigned int, unsigned int>>, Error>
+
114 getSupportedRenderResolutions() const override;
+
115
+
124 virtual std::variant<std::set<std::pair<unsigned int, unsigned int>>, Error>
+
125 getSupportedRefreshRates() const override;
+
126
+
132 virtual std::string getCurrentlyUsedGpuName() const override;
+
133
+
137 virtual void waitForGpuToFinishWorkUpToThisPoint() override;
+
138
+
144 virtual RendererType getType() const override;
+
145
+
154 virtual std::string getUsedApiVersion() const override;
+
155
+
161 ID3D12Device* getD3dDevice() const;
+
162
+
168 ID3D12GraphicsCommandList* getD3dCommandList();
+
169
+
175 ID3D12CommandQueue* getD3dCommandQueue();
+
176
+
182 IDXGIAdapter3* getVideoAdapter() const;
+
183
+
189 UINT getMsaaQualityLevel() const;
+
190
+ +
204
+
210 virtual std::pair<unsigned int, unsigned int> getRenderTargetSize() const override;
+
211
+
212 protected:
+ +
221
+
230 virtual void drawShadowMappingPass(
+
231 FrameResource* pCurrentFrameResource,
+
232 size_t iCurrentFrameResourceIndex,
+
233 GraphicsPipelineRegistry* pGraphicsPipelines) override;
+
234
+
242 virtual void drawMeshesDepthPrepass(
+
243 FrameResource* pCurrentFrameResource,
+
244 size_t iCurrentFrameResourceIndex,
+
245 const std::vector<Renderer::MeshesInFrustum::PipelineInFrustumInfo>& vOpaquePipelines) override;
+
246
+ +
257 FrameResource* pCurrentFrameResource,
+
258 size_t iCurrentFrameResourceIndex,
+
259 ComputeExecutionStage stage) override;
+
260
+
269 virtual void drawMeshesMainPass(
+
270 FrameResource* pCurrentFrameResource,
+
271 size_t iCurrentFrameResourceIndex,
+
272 const std::vector<Renderer::MeshesInFrustum::PipelineInFrustumInfo>& vOpaquePipelines,
+
273 const std::vector<Renderer::MeshesInFrustum::PipelineInFrustumInfo>& vTransparentPipelines)
+
274 override;
+
275
+
282 virtual void
+
283 present(FrameResource* pCurrentFrameResource, size_t iCurrentFrameResourceIndex) override;
+
284
+ +
297 DirectXFrameResource* pCurrentFrameResource,
+
298 size_t iCurrentFrameResourceIndex,
+
299 const std::vector<Renderer::MeshesInFrustum::PipelineInFrustumInfo>& pipelinesOfSpecificType,
+
300 D3D12_GPU_DESCRIPTOR_HANDLE directionalShadowMapsHandle,
+
301 D3D12_GPU_DESCRIPTOR_HANDLE spotShadowMapsHandle,
+
302 D3D12_GPU_DESCRIPTOR_HANDLE pointShadowMapsGpuHandle,
+
303 const bool bIsDrawingTransparentMeshes);
+
304
+
311 [[nodiscard]] virtual std::optional<Error> onRenderSettingsChangedDerived() override;
+
312
+
322 virtual void waitForGpuToFinishUsingFrameResource(FrameResource* pFrameResource) override;
+
323
+
333 virtual std::variant<AntialiasingQuality, Error> getMaxSupportedAntialiasingQuality() const override;
+
334
+
343 virtual bool isInitialized() const override;
+
344
+
345 private:
+
358 [[nodiscard]] std::optional<Error> initialize(const std::vector<std::string>& vBlacklistedGpuNames);
+
359
+
360#if defined(DEBUG)
+
370 [[nodiscard]] std::optional<Error> enableDebugLayer();
+
371#endif
+
372
+
382 [[nodiscard]] std::optional<Error> createDepthStencilBuffer();
+
383
+
393 [[nodiscard]] std::optional<Error>
+
394 pickVideoAdapter(const std::vector<std::string>& vBlacklistedGpuNames);
+
395
+
403 static size_t rateGpuSuitability(DXGI_ADAPTER_DESC1 adapterDesc);
+
404
+
410 [[nodiscard]] std::optional<Error> setOutputAdapter();
+
411
+
417 [[nodiscard]] std::optional<Error> createCommandQueue();
+
418
+
426 [[nodiscard]] std::optional<Error> createCommandList();
+
427
+
433 [[nodiscard]] std::optional<Error> createSwapChain();
+
434
+
443 [[nodiscard]] std::optional<Error>
+
444 initializeDirectX(const std::vector<std::string>& vBlacklistedGpuNames);
+
445
+
457 virtual void prepareForDrawingNextFrame(
+
458 CameraProperties* pCameraProperties, FrameResource* pCurrentFrameResource) override;
+
459
+
465 void resetCommandListForGraphics(DirectXFrameResource* pCurrentFrameResource);
+
466
+
472 void executeGraphicsCommandList(ID3D12GraphicsCommandList* pCommandListToExecute);
+
473
+
479 [[nodiscard]] std::optional<Error> updateMsaaQualityLevelCount();
+
480
+
486 void waitForFenceValue(UINT64 iFenceToWaitFor);
+
487
+ +
495 ID3D12CommandAllocator* pCommandAllocator,
+
496 std::unordered_map<Pipeline*, std::unordered_set<ComputeShaderInterface*>>&
+
497 computePipelinesToSubmit);
+
498
+
505 std::variant<std::vector<DXGI_MODE_DESC>, Error> getSupportedDisplayModes() const;
+
506
+ +
513
+
515 ComPtr<IDXGIFactory4> pFactory;
+
516
+
518 ComPtr<ID3D12Device> pDevice;
+
519
+
521 ComPtr<IDXGIAdapter3> pVideoAdapter;
+
522
+
524 ComPtr<IDXGIOutput> pOutputAdapter;
+
525
+
527 ComPtr<IDXGISwapChain3> pSwapChain;
+
528
+
530 ComPtr<ID3D12CommandQueue> pCommandQueue;
+
531
+
533 ComPtr<ID3D12GraphicsCommandList> pCommandList;
+
534
+
536 ComPtr<ID3D12GraphicsCommandList> pComputeCommandList;
+
537
+
539 ComPtr<ID3D12Fence> pFence;
+
540
+
541#if defined(DEBUG)
+
543 ComPtr<ID3D12InfoQueue1> pInfoQueue;
+
544
+
546 ComPtr<ID3D12Debug> pDebugController;
+
547#endif
+
548
+
550 std::pair<std::recursive_mutex, UINT64> mtxCurrentFenceValue;
+
551
+
553 std::vector<std::unique_ptr<DirectXResource>> vSwapChainBuffers;
+
554
+
556 std::unique_ptr<DirectXResource> pDepthStencilBuffer;
+
557
+
566 std::unique_ptr<DirectXResource> pDepthBufferNoMultisampling;
+
567
+
569 float backBufferFillColor[4] = {0.0F, 0.0F, 0.0F, 1.0F};
+
570
+
572 std::unique_ptr<DirectXResource> pMsaaRenderBuffer;
+
573
+
575 std::vector<std::string> vSupportedGpuNames;
+
576
+
578 std::pair<unsigned int, unsigned int> renderTargetSize = {0, 0};
+
579
+ +
582
+
584 D3D12_VIEWPORT screenViewport;
+
585
+
587 D3D12_RECT scissorRect;
+
588
+
590 std::string sUsedVideoAdapter;
+
591
+ +
594
+ +
597
+ +
603
+ +
606
+
608 static constexpr DXGI_FORMAT backBufferFormat = DXGI_FORMAT_R8G8B8A8_UNORM;
+
609
+
611 static constexpr DXGI_FORMAT depthStencilBufferFormat = DXGI_FORMAT_D32_FLOAT;
+
612
+
614 static constexpr DXGI_FORMAT shadowMapFormat = DXGI_FORMAT_D32_FLOAT;
+
615
+
619 static constexpr DXGI_FORMAT shadowMappingPointLightColorTargetFormat = DXGI_FORMAT_R32_FLOAT;
+
620
+
630 static constexpr DXGI_FORMAT depthBufferNoMultisamplingFormat = DXGI_FORMAT_R32_FLOAT;
+
631
+
633 static constexpr DXGI_MODE_SCALING usedScaling = DXGI_MODE_SCALING_UNSPECIFIED;
+
634
+
636 static constexpr DXGI_MODE_SCANLINE_ORDER usedScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE;
+
637
+
639 static constexpr D3D_FEATURE_LEVEL rendererD3dFeatureLevel =
+
640 D3D_FEATURE_LEVEL::D3D_FEATURE_LEVEL_12_1;
+
641 };
+
642} // namespace ne
+
Definition: CameraProperties.h:22
+
Definition: DirectXRenderer.h:36
+
ComPtr< ID3D12CommandQueue > pCommandQueue
Definition: DirectXRenderer.h:530
+
virtual RendererType getType() const override
Definition: DirectXRenderer.cpp:2368
+
virtual std::pair< unsigned int, unsigned int > getRenderTargetSize() const override
Definition: DirectXRenderer.cpp:2112
+
virtual std::vector< std::string > getSupportedGpuNames() const override
Definition: DirectXRenderer.cpp:480
+
ComPtr< ID3D12Device > pDevice
Definition: DirectXRenderer.h:518
+
std::pair< std::recursive_mutex, UINT64 > mtxCurrentFenceValue
Definition: DirectXRenderer.h:550
+
std::optional< Error > updateMsaaQualityLevelCount()
Definition: DirectXRenderer.cpp:1583
+
static constexpr D3D_FEATURE_LEVEL rendererD3dFeatureLevel
Definition: DirectXRenderer.h:639
+
ComPtr< ID3D12Fence > pFence
Definition: DirectXRenderer.h:539
+
static constexpr DXGI_FORMAT getBackBufferFormat()
Definition: DirectXRenderer.h:63
+
static constexpr DXGI_FORMAT shadowMappingPointLightColorTargetFormat
Definition: DirectXRenderer.h:619
+
static constexpr DXGI_FORMAT backBufferFormat
Definition: DirectXRenderer.h:608
+
void drawMeshesMainPassSpecificPipelines(DirectXFrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &pipelinesOfSpecificType, D3D12_GPU_DESCRIPTOR_HANDLE directionalShadowMapsHandle, D3D12_GPU_DESCRIPTOR_HANDLE spotShadowMapsHandle, D3D12_GPU_DESCRIPTOR_HANDLE pointShadowMapsGpuHandle, const bool bIsDrawingTransparentMeshes)
Definition: DirectXRenderer.cpp:1361
+
virtual std::variant< std::set< std::pair< unsigned int, unsigned int > >, Error > getSupportedRenderResolutions() const override
Definition: DirectXRenderer.cpp:483
+
ID3D12Device * getD3dDevice() const
Definition: DirectXRenderer.cpp:2377
+
ID3D12CommandQueue * getD3dCommandQueue()
Definition: DirectXRenderer.cpp:2381
+
std::optional< Error > pickVideoAdapter(const std::vector< std::string > &vBlacklistedGpuNames)
Definition: DirectXRenderer.cpp:290
+
UINT iMsaaQualityLevelsCount
Definition: DirectXRenderer.h:581
+
DirectXResource * getCurrentBackBufferResource()
Definition: DirectXRenderer.cpp:2421
+
static std::variant< std::unique_ptr< Renderer >, std::pair< Error, std::string > > create(GameManager *pGameManager, const std::vector< std::string > &vBlacklistedGpuNames)
Definition: DirectXRenderer.cpp:162
+
static constexpr DXGI_FORMAT getShadowMapFormat()
Definition: DirectXRenderer.h:86
+
static constexpr DXGI_FORMAT shadowMapFormat
Definition: DirectXRenderer.h:614
+
virtual std::variant< AntialiasingQuality, Error > getMaxSupportedAntialiasingQuality() const override
Definition: DirectXRenderer.cpp:2284
+
std::optional< Error > createCommandList()
Definition: DirectXRenderer.cpp:1768
+
ComPtr< IDXGIFactory4 > pFactory
Definition: DirectXRenderer.h:515
+
virtual void drawShadowMappingPass(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, GraphicsPipelineRegistry *pGraphicsPipelines) override
Definition: DirectXRenderer.cpp:785
+
static constexpr DXGI_FORMAT getShadowMappingPointLightColorTargetFormat()
Definition: DirectXRenderer.h:94
+
virtual void waitForGpuToFinishUsingFrameResource(FrameResource *pFrameResource) override
Definition: DirectXRenderer.cpp:2276
+
virtual GpuResource * getDepthTextureNoMultisampling() override
Definition: DirectXRenderer.cpp:2099
+
static constexpr DXGI_MODE_SCANLINE_ORDER usedScanlineOrdering
Definition: DirectXRenderer.h:636
+
static constexpr DXGI_MODE_SCALING usedScaling
Definition: DirectXRenderer.h:633
+
std::optional< Error > initializeDirectX(const std::vector< std::string > &vBlacklistedGpuNames)
Definition: DirectXRenderer.cpp:1881
+
virtual std::variant< std::set< std::pair< unsigned int, unsigned int > >, Error > getSupportedRefreshRates() const override
Definition: DirectXRenderer.cpp:502
+
void resetCommandListForGraphics(DirectXFrameResource *pCurrentFrameResource)
Definition: DirectXRenderer.cpp:544
+
std::variant< std::vector< DXGI_MODE_DESC >, Error > getSupportedDisplayModes() const
Definition: DirectXRenderer.cpp:2383
+
virtual std::string getCurrentlyUsedGpuName() const override
Definition: DirectXRenderer.cpp:521
+
virtual void present(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex) override
Definition: DirectXRenderer.cpp:1546
+
void dispatchComputeShadersOnGraphicsQueue(ID3D12CommandAllocator *pCommandAllocator, std::unordered_map< Pipeline *, std::unordered_set< ComputeShaderInterface * > > &computePipelinesToSubmit)
Definition: DirectXRenderer.cpp:1661
+
static constexpr DXGI_FORMAT depthStencilBufferFormat
Definition: DirectXRenderer.h:611
+
std::optional< Error > setOutputAdapter()
Definition: DirectXRenderer.cpp:1730
+
std::string sUsedVideoAdapter
Definition: DirectXRenderer.h:590
+
ComPtr< ID3D12GraphicsCommandList > pCommandList
Definition: DirectXRenderer.h:533
+
static constexpr DXGI_FORMAT getDepthBufferFormatNoMultisampling()
Definition: DirectXRenderer.h:77
+
D3D12_VIEWPORT screenViewport
Definition: DirectXRenderer.h:584
+
std::optional< Error > createCommandQueue()
Definition: DirectXRenderer.cpp:1750
+
virtual std::optional< Error > onRenderSettingsChangedDerived() override
Definition: DirectXRenderer.cpp:2116
+
bool bIsDirectXInitialized
Definition: DirectXRenderer.h:605
+
static size_t rateGpuSuitability(DXGI_ADAPTER_DESC1 adapterDesc)
Definition: DirectXRenderer.cpp:1711
+
static constexpr DXGI_FORMAT depthBufferNoMultisamplingFormat
Definition: DirectXRenderer.h:630
+
virtual void waitForGpuToFinishWorkUpToThisPoint() override
Definition: DirectXRenderer.cpp:2334
+
std::vector< std::string > vSupportedGpuNames
Definition: DirectXRenderer.h:575
+
std::optional< Error > createSwapChain()
Definition: DirectXRenderer.cpp:1821
+
ComPtr< ID3D12GraphicsCommandList > pComputeCommandList
Definition: DirectXRenderer.h:536
+
IDXGIAdapter3 * getVideoAdapter() const
Definition: DirectXRenderer.cpp:2095
+
virtual void drawMeshesDepthPrepass(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vOpaquePipelines) override
Definition: DirectXRenderer.cpp:573
+
void executeGraphicsCommandList(ID3D12GraphicsCommandList *pCommandListToExecute)
Definition: DirectXRenderer.cpp:2318
+
virtual bool isInitialized() const override
Definition: DirectXRenderer.cpp:2316
+
std::unique_ptr< DirectXResource > pMsaaRenderBuffer
Definition: DirectXRenderer.h:572
+
std::optional< Error > initialize(const std::vector< std::string > &vBlacklistedGpuNames)
Definition: DirectXRenderer.cpp:121
+
UINT iPresentFlags
Definition: DirectXRenderer.h:596
+
virtual void prepareForDrawingNextFrame(CameraProperties *pCameraProperties, FrameResource *pCurrentFrameResource) override
Definition: DirectXRenderer.cpp:523
+
std::unique_ptr< DirectXResource > pDepthStencilBuffer
Definition: DirectXRenderer.h:556
+
virtual void executeComputeShadersOnGraphicsQueue(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, ComputeExecutionStage stage) override
Definition: DirectXRenderer.cpp:1200
+
static constexpr DXGI_FORMAT getDepthStencilBufferFormat()
Definition: DirectXRenderer.h:70
+
ComPtr< IDXGISwapChain3 > pSwapChain
Definition: DirectXRenderer.h:527
+
virtual std::string getUsedApiVersion() const override
Definition: DirectXRenderer.cpp:2370
+
void waitForFenceValue(UINT64 iFenceToWaitFor)
Definition: DirectXRenderer.cpp:1639
+
ComPtr< IDXGIOutput > pOutputAdapter
Definition: DirectXRenderer.h:524
+
float backBufferFillColor[4]
Definition: DirectXRenderer.h:569
+
std::pair< unsigned int, unsigned int > renderTargetSize
Definition: DirectXRenderer.h:578
+
ComPtr< IDXGIAdapter3 > pVideoAdapter
Definition: DirectXRenderer.h:521
+
bool bIsUsingMsaaRenderTarget
Definition: DirectXRenderer.h:602
+
UINT getMsaaQualityLevel() const
Definition: DirectXRenderer.cpp:2097
+
std::vector< std::unique_ptr< DirectXResource > > vSwapChainBuffers
Definition: DirectXRenderer.h:553
+
virtual void drawMeshesMainPass(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vOpaquePipelines, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vTransparentPipelines) override
Definition: DirectXRenderer.cpp:1220
+
std::unique_ptr< DirectXResource > pDepthBufferNoMultisampling
Definition: DirectXRenderer.h:566
+
UINT iPresentSyncInterval
Definition: DirectXRenderer.h:593
+
std::optional< Error > createDepthStencilBuffer()
Definition: DirectXRenderer.cpp:202
+
ID3D12GraphicsCommandList * getD3dCommandList()
Definition: DirectXRenderer.cpp:2379
+
D3D12_RECT scissorRect
Definition: DirectXRenderer.h:587
+
Definition: DirectXResource.h:32
+
Definition: Error.h:27
+
Definition: GameManager.h:34
+
Definition: GpuResource.h:16
+
Definition: Pipeline.h:20
+
Definition: Renderer.h:44
+
GameManager * pGameManager
Definition: Renderer.h:899
+
Definition: DirectXFrameResource.h:30
+
Definition: FrameResource.h:15
+
Definition: PipelineRegistry.hpp:31
+
+
+ + + + diff --git a/DirectXResourceManager_8h_source.html b/DirectXResourceManager_8h_source.html new file mode 100644 index 000000000..c3f097a37 --- /dev/null +++ b/DirectXResourceManager_8h_source.html @@ -0,0 +1,270 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/directx/resource/DirectXResourceManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DirectXResourceManager.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <memory>
+
5#include <variant>
+
6
+
7// Custom.
+
8#include "misc/Error.h"
+
9#include "render/directx/descriptors/DirectXDescriptorHeap.h"
+
10#include "render/general/resource/GpuResourceManager.h"
+
11
+
12// External.
+
13#include "directx/d3dx12.h"
+
14#include "D3D12MemoryAllocator/include/D3D12MemAlloc.h"
+
15
+
16// OS.
+
17#include <wrl.h>
+
18
+
19namespace ne {
+
20 using namespace Microsoft::WRL;
+
21
+
22 class DirectXResource;
+
23 class DirectXRenderer;
+
24 class UploadBuffer;
+
25
+ +
28 public:
+
29 DirectXResourceManager() = delete;
+ +
31 DirectXResourceManager& operator=(const DirectXResourceManager&) = delete;
+
32
+
33 virtual ~DirectXResourceManager() override;
+
34
+
42 static DXGI_FORMAT
+
43 convertTextureResourceFormatToDxFormat(ShaderReadWriteTextureResourceFormat format);
+
44
+
52 static std::variant<std::unique_ptr<DirectXResourceManager>, Error>
+ +
54
+
63 virtual std::variant<std::unique_ptr<GpuResource>, Error> loadTextureFromDisk(
+
64 const std::string& sResourceName, const std::filesystem::path& pathToTextureFile) override;
+
65
+
97 virtual std::variant<std::unique_ptr<UploadBuffer>, Error> createResourceWithCpuWriteAccess(
+
98 const std::string& sResourceName,
+
99 size_t iElementSizeInBytes,
+
100 size_t iElementCount,
+
101 std::optional<bool> isUsedInShadersAsArrayResource) override;
+
102
+
128 virtual std::variant<std::unique_ptr<GpuResource>, Error> createResourceWithData(
+
129 const std::string& sResourceName,
+
130 const void* pBufferData,
+
131 size_t iElementSizeInBytes,
+
132 size_t iElementCount,
+
133 ResourceUsageType usage,
+
134 bool bIsShaderReadWriteResource) override;
+
135
+
151 virtual std::variant<std::unique_ptr<GpuResource>, Error> createResource(
+
152 const std::string& sResourceName,
+
153 size_t iElementSizeInBytes,
+
154 size_t iElementCount,
+
155 ResourceUsageType usage,
+
156 bool bIsShaderReadWriteResource) override;
+
157
+
168 virtual std::variant<std::unique_ptr<GpuResource>, Error> createShaderReadWriteTextureResource(
+
169 const std::string& sResourceName,
+
170 unsigned int iWidth,
+
171 unsigned int iHeight,
+
172 ShaderReadWriteTextureResourceFormat format) override;
+
173
+
179 virtual size_t getTotalVideoMemoryInMb() const override;
+
180
+
186 virtual size_t getUsedVideoMemoryInMb() const override;
+
187
+
199 std::variant<std::unique_ptr<DirectXResource>, Error> createResource(
+
200 const std::string& sResourceName,
+
201 const D3D12MA::ALLOCATION_DESC& allocationDesc,
+
202 const D3D12_RESOURCE_DESC& resourceDesc,
+
203 const D3D12_RESOURCE_STATES& initialResourceState,
+
204 const std::optional<D3D12_CLEAR_VALUE>& resourceClearValue);
+
205
+
215 std::variant<std::vector<std::unique_ptr<DirectXResource>>, Error>
+
216 makeRtvResourcesFromSwapChainBuffer(IDXGISwapChain3* pSwapChain, unsigned int iSwapChainBufferCount);
+
217
+ +
224
+ +
231
+ +
238
+
244 virtual std::string getCurrentStateInfo() override;
+
245
+
246 private:
+ + +
258 ComPtr<D3D12MA::Allocator>&& pMemoryAllocator,
+
259 std::unique_ptr<DirectXDescriptorHeap>&& pRtvHeap,
+
260 std::unique_ptr<DirectXDescriptorHeap>&& pDsvHeap,
+
261 std::unique_ptr<DirectXDescriptorHeap>&& pCbvSrvUavHeap);
+
262
+
276 static inline size_t makeMultipleOf256(size_t iNumber) {
+
277 // We are adding 255 and then masking off
+
278 // the lower 2 bytes which store all bits < 256.
+
279
+
280 // Example: Suppose iNumber = 300.
+
281 // (300 + 255) & ~255
+
282 // 555 & ~255
+
283 // 0x022B & ~0x00ff
+
284 // 0x022B & 0xff00
+
285 // 0x0200
+
286 // 512
+
287 return (iNumber + 255) & ~255; // NOLINT
+
288 }
+
289
+
301 virtual std::variant<std::unique_ptr<GpuResource>, Error> createShadowMapTexture(
+
302 const std::string& sResourceName,
+
303 unsigned int iTextureSize,
+
304 bool bPointLightColorCubemap) override;
+
305
+
320 std::variant<std::unique_ptr<GpuResource>, Error> createResourceWithData(
+
321 const std::string& sResourceName,
+
322 const D3D12_RESOURCE_DESC& finalResourceDescription,
+
323 const std::vector<D3D12_SUBRESOURCE_DATA>& vSubresourcesToCopy,
+
324 const D3D12_RESOURCE_DESC& uploadResourceDescription,
+
325 bool bIsTextureResource,
+
326 size_t iElementSizeInBytes = 0,
+
327 size_t iElementCount = 0);
+
328
+
330 ComPtr<D3D12MA::Allocator> pMemoryAllocator;
+
331
+
333 std::unique_ptr<DirectXDescriptorHeap> pRtvHeap;
+
334
+
336 std::unique_ptr<DirectXDescriptorHeap> pDsvHeap;
+
337
+
339 std::unique_ptr<DirectXDescriptorHeap> pCbvSrvUavHeap;
+
340 };
+
341} // namespace ne
+
Definition: DirectXDescriptorHeap.h:211
+
Definition: DirectXRenderer.h:36
+
Definition: DirectXResourceManager.h:27
+
static std::variant< std::unique_ptr< DirectXResourceManager >, Error > create(DirectXRenderer *pRenderer)
Definition: DirectXResourceManager.cpp:16
+
virtual std::variant< std::unique_ptr< UploadBuffer >, Error > createResourceWithCpuWriteAccess(const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, std::optional< bool > isUsedInShadersAsArrayResource) override
Definition: DirectXResourceManager.cpp:182
+
ComPtr< D3D12MA::Allocator > pMemoryAllocator
Definition: DirectXResourceManager.h:330
+
virtual std::variant< std::unique_ptr< GpuResource >, Error > createShaderReadWriteTextureResource(const std::string &sResourceName, unsigned int iWidth, unsigned int iHeight, ShaderReadWriteTextureResourceFormat format) override
Definition: DirectXResourceManager.cpp:296
+
DirectXDescriptorHeap * getRtvHeap() const
Definition: DirectXResourceManager.cpp:466
+
static DXGI_FORMAT convertTextureResourceFormatToDxFormat(ShaderReadWriteTextureResourceFormat format)
Definition: DirectXResourceManager.cpp:531
+
DirectXDescriptorHeap * getDsvHeap() const
Definition: DirectXResourceManager.cpp:468
+
DirectXDescriptorHeap * getCbvSrvUavHeap() const
Definition: DirectXResourceManager.cpp:470
+
std::unique_ptr< DirectXDescriptorHeap > pRtvHeap
Definition: DirectXResourceManager.h:333
+
std::unique_ptr< DirectXDescriptorHeap > pCbvSrvUavHeap
Definition: DirectXResourceManager.h:339
+
std::unique_ptr< DirectXDescriptorHeap > pDsvHeap
Definition: DirectXResourceManager.h:336
+
virtual std::variant< std::unique_ptr< GpuResource >, Error > loadTextureFromDisk(const std::string &sResourceName, const std::filesystem::path &pathToTextureFile) override
Definition: DirectXResourceManager.cpp:66
+
virtual size_t getUsedVideoMemoryInMb() const override
Definition: DirectXResourceManager.cpp:412
+
virtual std::string getCurrentStateInfo() override
Definition: DirectXResourceManager.cpp:472
+
virtual std::variant< std::unique_ptr< GpuResource >, Error > createResource(const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource) override
Definition: DirectXResourceManager.cpp:257
+
virtual std::variant< std::unique_ptr< GpuResource >, Error > createResourceWithData(const std::string &sResourceName, const void *pBufferData, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource) override
Definition: DirectXResourceManager.cpp:220
+
virtual std::variant< std::unique_ptr< GpuResource >, Error > createShadowMapTexture(const std::string &sResourceName, unsigned int iTextureSize, bool bPointLightColorCubemap) override
Definition: DirectXResourceManager.cpp:335
+
virtual size_t getTotalVideoMemoryInMb() const override
Definition: DirectXResourceManager.cpp:405
+
static size_t makeMultipleOf256(size_t iNumber)
Definition: DirectXResourceManager.h:276
+
std::variant< std::vector< std::unique_ptr< DirectXResource > >, Error > makeRtvResourcesFromSwapChainBuffer(IDXGISwapChain3 *pSwapChain, unsigned int iSwapChainBufferCount)
Definition: DirectXResourceManager.cpp:443
+
Definition: Error.h:27
+
Definition: GpuResourceManager.h:43
+
Renderer *const pRenderer
Definition: GpuResourceManager.h:300
+
+
+ + + + diff --git a/DirectXResource_8h_source.html b/DirectXResource_8h_source.html new file mode 100644 index 000000000..05f82c104 --- /dev/null +++ b/DirectXResource_8h_source.html @@ -0,0 +1,239 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/directx/resource/DirectXResource.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DirectXResource.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <variant>
+
5#include <memory>
+
6#include <array>
+
7#include <optional>
+
8#include <mutex>
+
9
+
10// Custom.
+
11#include "misc/Error.h"
+
12#include "render/general/resource/GpuResource.h"
+
13#include "render/directx/descriptors/DirectXDescriptor.h"
+
14#include "render/directx/descriptors/DirectXDescriptorType.hpp"
+
15
+
16// External.
+
17#include "directx/d3dx12.h"
+
18#include "D3D12MemoryAllocator/include/D3D12MemAlloc.h"
+
19
+
20// OS.
+
21#include <wrl.h>
+
22
+
23namespace ne {
+
24 using namespace Microsoft::WRL;
+
25
+
26 class DirectXRenderer;
+
27 class DirectXDescriptorHeap;
+
28 class DirectXResourceManager;
+
29 class ContinuousDirectXDescriptorRange;
+
30
+ +
33 // If descriptor heap of a used descriptor (see field of this class) was recreated
+
34 // then descriptor heap will update our descriptors with new descriptor information.
+
35 friend class DirectXDescriptorHeap;
+
36
+
37 // Only resource manager can create this resource
+
38 // (simply because only manager has a memory allocator object).
+
39 friend class DirectXResourceManager;
+
40
+
41 public:
+
42 DirectXResource() = delete;
+
43 DirectXResource(const DirectXResource&) = delete;
+
44 DirectXResource& operator=(const DirectXResource&) = delete;
+
45
+
46 virtual ~DirectXResource() override;
+
47
+
61 [[nodiscard]] std::optional<Error> bindDescriptor(
+
62 DirectXDescriptorType descriptorType,
+
63 ContinuousDirectXDescriptorRange* pRange = nullptr,
+
64 bool bBindDescriptorsToCubemapFaces = true);
+
65
+
74 std::optional<D3D12_CPU_DESCRIPTOR_HANDLE>
+
75 getBindedDescriptorCpuHandle(DirectXDescriptorType descriptorType);
+
76
+
87 std::optional<D3D12_CPU_DESCRIPTOR_HANDLE> getBindedCubemapFaceDescriptorCpuHandle(
+
88 DirectXDescriptorType descriptorType, size_t iCubemapFaceIndex);
+
89
+
98 std::optional<D3D12_GPU_DESCRIPTOR_HANDLE>
+
99 getBindedDescriptorGpuHandle(DirectXDescriptorType descriptorType);
+
100
+
110 inline ID3D12Resource* getInternalResource() const { return pInternalResource; }
+
111
+
122 DirectXDescriptor* getDescriptor(DirectXDescriptorType descriptorType);
+
123
+
124 private:
+ +
131 std::unique_ptr<DirectXDescriptor> pResource;
+
132
+
137 std::array<std::unique_ptr<DirectXDescriptor>, 6> // NOLINT: 1 per cubemap face (if cubemap)
+ +
139 };
+
140
+ +
152 DirectXResourceManager* pResourceManager,
+
153 const std::string& sResourceName,
+ +
155 UINT iElementCount);
+
156
+
175 static std::variant<std::unique_ptr<DirectXResource>, Error> create(
+
176 DirectXResourceManager* pResourceManager,
+
177 const std::string& sResourceName,
+
178 D3D12MA::Allocator* pMemoryAllocator,
+
179 const D3D12MA::ALLOCATION_DESC& allocationDesc,
+
180 const D3D12_RESOURCE_DESC& resourceDesc,
+
181 const D3D12_RESOURCE_STATES& initialResourceState,
+
182 std::optional<D3D12_CLEAR_VALUE> resourceClearValue,
+
183 size_t iElementSizeInBytes = 0,
+
184 size_t iElementCount = 0);
+
185
+
196 static std::variant<std::unique_ptr<DirectXResource>, Error> createResourceFromSwapChainBuffer(
+
197 DirectXResourceManager* pResourceManager,
+
198 DirectXDescriptorHeap* pRtvHeap,
+
199 const ComPtr<ID3D12Resource>& pSwapChainBuffer);
+
200
+
211 std::pair<
+
212 std::recursive_mutex,
+
213 std::array<DescriptorsSameType, static_cast<size_t>(DirectXDescriptorType::END)>>
+ +
215
+
217 ComPtr<D3D12MA::Allocation> pAllocatedResource;
+
218
+
223 ComPtr<ID3D12Resource> pSwapChainBuffer;
+
224
+
229 ID3D12Resource* pInternalResource = nullptr;
+
230 };
+
231} // namespace ne
+
Definition: DirectXDescriptorHeap.h:44
+
Definition: DirectXDescriptorHeap.h:211
+
Definition: DirectXDescriptor.h:18
+
Definition: DirectXResourceManager.h:27
+
Definition: DirectXResource.h:32
+
ComPtr< D3D12MA::Allocation > pAllocatedResource
Definition: DirectXResource.h:217
+
std::optional< D3D12_GPU_DESCRIPTOR_HANDLE > getBindedDescriptorGpuHandle(DirectXDescriptorType descriptorType)
Definition: DirectXResource.cpp:158
+
ComPtr< ID3D12Resource > pSwapChainBuffer
Definition: DirectXResource.h:223
+
std::optional< D3D12_CPU_DESCRIPTOR_HANDLE > getBindedDescriptorCpuHandle(DirectXDescriptorType descriptorType)
Definition: DirectXResource.cpp:99
+
std::optional< D3D12_CPU_DESCRIPTOR_HANDLE > getBindedCubemapFaceDescriptorCpuHandle(DirectXDescriptorType descriptorType, size_t iCubemapFaceIndex)
Definition: DirectXResource.cpp:123
+
std::optional< Error > bindDescriptor(DirectXDescriptorType descriptorType, ContinuousDirectXDescriptorRange *pRange=nullptr, bool bBindDescriptorsToCubemapFaces=true)
Definition: DirectXResource.cpp:213
+
DirectXDescriptor * getDescriptor(DirectXDescriptorType descriptorType)
Definition: DirectXResource.cpp:182
+
static std::variant< std::unique_ptr< DirectXResource >, Error > create(DirectXResourceManager *pResourceManager, const std::string &sResourceName, D3D12MA::Allocator *pMemoryAllocator, const D3D12MA::ALLOCATION_DESC &allocationDesc, const D3D12_RESOURCE_DESC &resourceDesc, const D3D12_RESOURCE_STATES &initialResourceState, std::optional< D3D12_CLEAR_VALUE > resourceClearValue, size_t iElementSizeInBytes=0, size_t iElementCount=0)
Definition: DirectXResource.cpp:11
+
ID3D12Resource * pInternalResource
Definition: DirectXResource.h:229
+
static std::variant< std::unique_ptr< DirectXResource >, Error > createResourceFromSwapChainBuffer(DirectXResourceManager *pResourceManager, DirectXDescriptorHeap *pRtvHeap, const ComPtr< ID3D12Resource > &pSwapChainBuffer)
Definition: DirectXResource.cpp:76
+
std::pair< std::recursive_mutex, std::array< DescriptorsSameType, static_cast< size_t >(DirectXDescriptorType::END)> > mtxHeapDescriptors
Definition: DirectXResource.h:214
+
ID3D12Resource * getInternalResource() const
Definition: DirectXResource.h:110
+
Definition: Error.h:27
+
Definition: GpuResource.h:16
+
const std::string sResourceName
Definition: GpuResource.h:97
+
const unsigned int iElementCount
Definition: GpuResource.h:94
+
const unsigned int iElementSizeInBytes
Definition: GpuResource.h:91
+
Definition: DirectXResource.h:129
+
std::unique_ptr< DirectXDescriptor > pResource
Definition: DirectXResource.h:131
+
std::array< std::unique_ptr< DirectXDescriptor >, 6 > vCubemapFaces
Definition: DirectXResource.h:138
+
+
+ + + + diff --git a/DirectXShadowMapArrayIndexManager_8h_source.html b/DirectXShadowMapArrayIndexManager_8h_source.html new file mode 100644 index 000000000..46298379e --- /dev/null +++ b/DirectXShadowMapArrayIndexManager_8h_source.html @@ -0,0 +1,183 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/directx/resource/shadow/DirectXShadowMapArrayIndexManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DirectXShadowMapArrayIndexManager.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <memory>
+
5#include <mutex>
+
6
+
7// Custom.
+
8#include "render/general/resource/shadow/ShadowMapArrayIndexManager.h"
+
9#include "render/directx/descriptors/DirectXDescriptorHeap.h"
+
10
+
11namespace ne {
+
12 class ShadowMapHandle;
+
13 class DirectXResource;
+
14 class GpuResourceManager;
+
15
+ +
18 public:
+ +
20
+ + +
23
+ + +
26
+
28 virtual ~DirectXShadowMapArrayIndexManager() override;
+
29
+
39 static std::variant<std::unique_ptr<DirectXShadowMapArrayIndexManager>, Error> create(
+ +
41 GpuResourceManager* pResourceManager,
+
42 const std::string& sShaderArrayResourceName);
+
43
+ +
50
+
51 protected:
+ +
62
+
74 [[nodiscard]] virtual std::optional<Error>
+
75 registerShadowMapResource(ShadowMapHandle* pShadowMapHandle) override;
+
76
+
84 [[nodiscard]] virtual std::optional<Error>
+
85 unregisterShadowMapResource(ShadowMapHandle* pShadowMapHandle) override;
+
86
+
94 [[nodiscard]] virtual std::optional<Error> bindShadowMapsToPipeline(Pipeline* pPipeline) override;
+
95
+
101 [[nodiscard]] virtual std::optional<Error> bindShadowMapsToAllPipelines() override;
+
102
+
103 private:
+ +
106
+
112 std::unique_ptr<ContinuousDirectXDescriptorRange> pSrvRange;
+
113
+
115 std::pair<std::recursive_mutex, std::unordered_set<ShadowMapHandle*>> mtxRegisteredShadowMaps;
+
116 };
+
117}
+
Definition: DirectXDescriptorHeap.h:44
+
Definition: DirectXShadowMapArrayIndexManager.h:17
+
virtual std::optional< Error > bindShadowMapsToAllPipelines() override
Definition: DirectXShadowMapArrayIndexManager.cpp:174
+
void onSrvRangeIndicesChanged()
Definition: DirectXShadowMapArrayIndexManager.cpp:179
+
std::pair< std::recursive_mutex, std::unordered_set< ShadowMapHandle * > > mtxRegisteredShadowMaps
Definition: DirectXShadowMapArrayIndexManager.h:115
+
ContinuousDirectXDescriptorRange * getSrvDescriptorRange() const
Definition: DirectXShadowMapArrayIndexManager.h:49
+
virtual ~DirectXShadowMapArrayIndexManager() override
Definition: DirectXShadowMapArrayIndexManager.cpp:15
+
std::unique_ptr< ContinuousDirectXDescriptorRange > pSrvRange
Definition: DirectXShadowMapArrayIndexManager.h:112
+
virtual std::optional< Error > registerShadowMapResource(ShadowMapHandle *pShadowMapHandle) override
Definition: DirectXShadowMapArrayIndexManager.cpp:65
+
virtual std::optional< Error > unregisterShadowMapResource(ShadowMapHandle *pShadowMapHandle) override
Definition: DirectXShadowMapArrayIndexManager.cpp:148
+
static std::variant< std::unique_ptr< DirectXShadowMapArrayIndexManager >, Error > create(Renderer *pRenderer, GpuResourceManager *pResourceManager, const std::string &sShaderArrayResourceName)
Definition: DirectXShadowMapArrayIndexManager.cpp:31
+
virtual std::optional< Error > bindShadowMapsToPipeline(Pipeline *pPipeline) override
Definition: DirectXShadowMapArrayIndexManager.cpp:169
+
Definition: Error.h:27
+
Definition: GpuResourceManager.h:43
+
Definition: Pipeline.h:20
+
Definition: Renderer.h:44
+
Definition: ShadowMapArrayIndexManager.h:25
+
Renderer *const pRenderer
Definition: ShadowMapArrayIndexManager.h:134
+
const std::string sShaderArrayResourceName
Definition: ShadowMapArrayIndexManager.h:137
+
Definition: ShadowMapHandle.h:23
+
+
+ + + + diff --git a/DirectionalLightNode_8h_source.html b/DirectionalLightNode_8h_source.html new file mode 100644 index 000000000..a68828fc2 --- /dev/null +++ b/DirectionalLightNode_8h_source.html @@ -0,0 +1,233 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/game/nodes/light/DirectionalLightNode.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DirectionalLightNode.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "game/nodes/SpatialNode.h"
+
5#include "math/GLMath.hpp"
+
6#include "shader/VulkanAlignmentConstants.hpp"
+
7#include "shader/general/resource/LightingShaderResourceManager.h"
+
8#include "render/general/resource/shadow/ShadowMapHandle.h"
+
9
+
10#include "DirectionalLightNode.generated.h"
+
11
+
12namespace ne RNAMESPACE() {
+
14 class RCLASS(Guid("7c95023e-c185-46af-8745-79fc0b59bbb3")) DirectionalLightNode : public SpatialNode {
+
15 // Renderer reads shadow map handle and index into viewProjection matrix array.
+
16 friend class Renderer;
+
17
+
18 public:
+ +
20
+
26 DirectionalLightNode(const std::string& sNodeName);
+
27
+
28 virtual ~DirectionalLightNode() override = default;
+
29
+
35 void setLightColor(const glm::vec3& color);
+
36
+
42 void setLightIntensity(float intensity);
+
43
+
49 glm::vec3 getLightColor() const;
+
50
+
56 float getLightIntensity() const;
+
57
+
58 protected:
+
66 virtual void onAfterDeserialized() override;
+
67
+
80 virtual void onSpawning() override;
+
81
+
91 virtual void onDespawning() override;
+
92
+
102 virtual void onWorldLocationRotationScaleChanged() override;
+
103
+
104 private:
+ +
107 DirecionalLightShaderData() = default;
+
108
+
113 alignas(iVkMat4Alignment) glm::mat4 viewProjectionMatrix = glm::identity<glm::mat4>();
+
114
+
116 alignas(iVkVec4Alignment) glm::vec4 direction = glm::vec4(0.0F, 0.0F, 0.0F, 0.0F);
+
117
+
119 alignas(iVkVec4Alignment) glm::vec4 color = glm::vec4(1.0F, 1.0F, 1.0F, 1.0F);
+
120
+
122 alignas(iVkScalarAlignment) float intensity = 1.0F;
+
123
+
125 alignas(iVkScalarAlignment) unsigned int iShadowMapIndex = 0;
+
126 };
+
127
+
129 struct ShaderData {
+
130 ShaderData() = default;
+
131
+ +
134 ShadowPassDataGroup() = default;
+
135
+
137 std::unique_ptr<ShaderLightArraySlot> pSlot;
+
138
+ +
141 };
+
142
+
144 std::unique_ptr<ShaderLightArraySlot> pDirectionalLightArraySlot;
+
145
+ +
148
+ +
151 };
+
152
+
160 ShadowMapHandle* getShadowMapHandle() const;
+
161
+
168 unsigned int getIndexIntoShadowPassInfoShaderArray();
+
169
+
176 void* onStartedUpdatingShaderData();
+
177
+
182 void onFinishedUpdatingShaderData();
+
183
+
190 void* onStartedUpdatingShadowPassData();
+
191
+
196 void onFinishedUpdatingShadowPassData();
+
197
+
204 void markShadowPassDataToBeCopiedToGpu();
+
205
+
212 void markShaderDataToBeCopiedToGpu();
+
213
+
219 void onShadowMapArrayIndexChanged(unsigned int iNewIndexIntoArray);
+
220
+
226 void recalculateShadowMappingShaderData();
+
227
+
229 std::pair<std::recursive_mutex, ShaderData> mtxShaderData;
+
230
+
236 std::unique_ptr<ShadowMapHandle> pShadowMapHandle;
+
237
+
239 RPROPERTY(Serialize)
+
240 glm::vec3 color = glm::vec3(1.0F, 1.0F, 1.0F);
+
241
+
243 RPROPERTY(Serialize)
+
244 float intensity = 1.0F;
+
245
+
246 ne_DirectionalLightNode_GENERATED
+
247 };
+
248}
+
249
+
250File_DirectionalLightNode_GENERATED
+
Definition: DirectionalLightNode.h:14
+
std::pair< std::recursive_mutex, ShaderData > mtxShaderData
Definition: DirectionalLightNode.h:229
+
std::unique_ptr< ShadowMapHandle > pShadowMapHandle
Definition: DirectionalLightNode.h:236
+
Definition: GuidProperty.h:30
+
Definition: Renderer.h:44
+
Definition: SerializeProperty.h:42
+
Definition: ShadowMapHandle.h:23
+
Definition: SpatialNode.h:12
+
Definition: DirectionalLightNode.h:106
+
Definition: DirectionalLightNode.h:133
+
std::unique_ptr< ShaderLightArraySlot > pSlot
Definition: DirectionalLightNode.h:137
+
ShadowPassLightShaderInfo shaderData
Definition: DirectionalLightNode.h:140
+
Definition: DirectionalLightNode.h:129
+
std::unique_ptr< ShaderLightArraySlot > pDirectionalLightArraySlot
Definition: DirectionalLightNode.h:144
+
ShadowPassDataGroup shadowPassData
Definition: DirectionalLightNode.h:147
+
DirecionalLightShaderData shaderData
Definition: DirectionalLightNode.h:150
+
Definition: LightingShaderResourceManager.h:38
+
+
+ + + + diff --git a/DynamicCpuWriteShaderResourceArrayManager_8h_source.html b/DynamicCpuWriteShaderResourceArrayManager_8h_source.html new file mode 100644 index 000000000..7ddabcb5f --- /dev/null +++ b/DynamicCpuWriteShaderResourceArrayManager_8h_source.html @@ -0,0 +1,172 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/resource/cpuwrite/DynamicCpuWriteShaderResourceArrayManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DynamicCpuWriteShaderResourceArrayManager.h
+
+
+
1#pragma once
+
2
+
3// Standrad.
+
4#include <mutex>
+
5#include <unordered_map>
+
6#include <string>
+
7#include <memory>
+
8#include <variant>
+
9#include <optional>
+
10
+
11// Custom.
+
12#include "misc/Error.h"
+
13
+
14namespace ne {
+
15 class DynamicCpuWriteShaderResourceArray;
+
16 class DynamicCpuWriteShaderResourceArraySlot;
+
17 class ShaderCpuWriteResourceBinding;
+
18 class VulkanRenderer;
+
19 class VulkanPipeline;
+
20
+ +
28 // Only resource manager is supposed to own this manager.
+
29 friend class GpuResourceManager;
+
30
+
31 public:
+ +
33
+ +
35
+ + +
38 operator=(const DynamicCpuWriteShaderResourceArrayManager&) = delete;
+
39
+
53 std::variant<std::unique_ptr<DynamicCpuWriteShaderResourceArraySlot>, Error>
+ +
55
+
65 DynamicCpuWriteShaderResourceArray* getArrayForShaderResource(const std::string& sShaderResourceName);
+
66
+
67 private:
+
76 static std::string formatBytesToMegabytes(size_t iSizeInBytes);
+
77
+ +
84
+
86 void removeEmptyArrays();
+
87
+ +
90
+
95 std::pair<
+
96 std::recursive_mutex,
+
97 std::unordered_map<std::string, std::unique_ptr<DynamicCpuWriteShaderResourceArray>>>
+ +
99 };
+
100}
+
Definition: DynamicCpuWriteShaderResourceArrayManager.h:27
+
DynamicCpuWriteShaderResourceArray * getArrayForShaderResource(const std::string &sShaderResourceName)
Definition: DynamicCpuWriteShaderResourceArrayManager.cpp:94
+
GpuResourceManager *const pResourceManager
Definition: DynamicCpuWriteShaderResourceArrayManager.h:89
+
static std::string formatBytesToMegabytes(size_t iSizeInBytes)
Definition: DynamicCpuWriteShaderResourceArrayManager.cpp:118
+
std::variant< std::unique_ptr< DynamicCpuWriteShaderResourceArraySlot >, Error > reserveSlotsInArray(ShaderCpuWriteResourceBinding *pShaderResource)
Definition: DynamicCpuWriteShaderResourceArrayManager.cpp:16
+
std::pair< std::recursive_mutex, std::unordered_map< std::string, std::unique_ptr< DynamicCpuWriteShaderResourceArray > > > mtxCpuWriteShaderResourceArrays
Definition: DynamicCpuWriteShaderResourceArrayManager.h:98
+
void removeEmptyArrays()
Definition: DynamicCpuWriteShaderResourceArrayManager.cpp:107
+
Definition: DynamicCpuWriteShaderResourceArray.h:116
+
Definition: Error.h:27
+
Definition: GpuResourceManager.h:43
+
Definition: ShaderCpuWriteResourceBinding.h:25
+
+
+ + + + diff --git a/DynamicCpuWriteShaderResourceArray_8h_source.html b/DynamicCpuWriteShaderResourceArray_8h_source.html new file mode 100644 index 000000000..37baaf83a --- /dev/null +++ b/DynamicCpuWriteShaderResourceArray_8h_source.html @@ -0,0 +1,298 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/resource/cpuwrite/DynamicCpuWriteShaderResourceArray.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DynamicCpuWriteShaderResourceArray.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <string>
+
5#include <stdexcept>
+
6#include <format>
+
7#include <queue>
+
8#include <unordered_set>
+
9#include <mutex>
+
10#include <variant>
+
11#include <memory>
+
12#include <optional>
+
13
+
14// Custom.
+
15#include "render/general/resource/UploadBuffer.h"
+
16#include "misc/Error.h"
+
17
+
18namespace ne {
+
19 class GpuResourceManager;
+
20 class ShaderCpuWriteResourceBinding;
+
21 class VulkanRenderer;
+
22 class VulkanPipeline;
+
23
+ +
30 // Only arrays are allowed to create and modify the internal index of this slot.
+ +
32
+
33 public:
+ +
35
+ + +
38 operator=(const DynamicCpuWriteShaderResourceArraySlot&) = delete;
+
39
+ +
41
+
50 void updateData(void* pData);
+
51
+
57 inline unsigned int getIndexIntoArray() const { return iIndexInArray; }
+
58
+
59 private:
+ + +
69 size_t iIndexInArray,
+ +
71
+
77 inline void updateIndex(size_t iNewIndex) {
+
78 // Self check:
+
79 static_assert(
+
80 std::is_same_v<decltype(this->iIndexInArray), unsigned int>,
+
81 "update cast and type limit check below");
+
82
+
83 // Check before converting to unsigned int, see slot index docs for more info.
+
84 if (iNewIndex > UINT_MAX) [[unlikely]] {
+
85 Error error(std::format("received slot index {} exceeds type limit", iNewIndex));
+
86 error.showError();
+
87 throw std::runtime_error(error.getFullErrorMessage());
+
88 }
+
89
+
90 iIndexInArray = static_cast<unsigned int>(iNewIndex);
+
91 }
+
92
+ +
95
+ +
98
+
106 unsigned int iIndexInArray = 0;
+
107 };
+
108
+ +
117 // Slots notify the array in their destructor.
+ +
119
+
120 // Only manager should create the arrays and insert new slots.
+ +
122
+
123 public:
+ +
126 InternalResources() = default;
+
127
+
129 std::unique_ptr<UploadBuffer> pUploadBuffer = nullptr;
+
130
+
135 size_t iCapacity = 0;
+
136
+ +
144
+
146 std::queue<size_t> noLongerUsedArrayIndices;
+
147
+
156 std::unordered_set<DynamicCpuWriteShaderResourceArraySlot*> activeSlots;
+
157 };
+
158
+ + + +
162
+
169 size_t getSize();
+
170
+
177 size_t getCapacity();
+
178
+
184 size_t getSizeInBytes();
+
185
+
191 size_t getElementSize() const;
+
192
+
200 size_t getCapacityStepSize() const;
+
201
+
207 std::string_view getHandledShaderResourceName() const;
+
208
+
218 std::pair<std::recursive_mutex, InternalResources>* getInternalResources();
+
219
+
220 private:
+
231 static std::variant<std::unique_ptr<DynamicCpuWriteShaderResourceArray>, Error> create(
+ +
233 const std::string& sHandledShaderResourceName,
+
234 size_t iElementSizeInBytes);
+
235
+
244 static std::string formatBytesToKilobytes(size_t iSizeInBytes);
+
245
+
254 static std::variant<size_t, Error> calculateCapacityStepSize(size_t iElementSizeInBytes);
+
255
+ + +
269 const std::string& sHandledShaderResourceName,
+
270 size_t iElementSizeInBytes,
+
271 size_t iCapacityStepSize);
+
272
+
286 std::variant<std::unique_ptr<DynamicCpuWriteShaderResourceArraySlot>, Error>
+
287 insert(ShaderCpuWriteResourceBinding* pShaderResource);
+
288
+ +
295
+ +
303
+
317 [[nodiscard]] std::optional<Error> createArray(size_t iCapacity);
+
318
+
326 [[nodiscard]] std::optional<Error> expandArray();
+
327
+
335 [[nodiscard]] std::optional<Error> shrinkArray();
+
336
+
338 std::pair<std::recursive_mutex, InternalResources> mtxInternalResources;
+
339
+ +
342
+
349 const size_t iCapacityStepSize = 0;
+
350
+
352 const std::string sHandledShaderResourceName;
+
353
+
355 const size_t iElementSizeInBytes = 0;
+
356 };
+
357}
+
Definition: DynamicCpuWriteShaderResourceArrayManager.h:27
+
Definition: DynamicCpuWriteShaderResourceArray.h:29
+
unsigned int getIndexIntoArray() const
Definition: DynamicCpuWriteShaderResourceArray.h:57
+
DynamicCpuWriteShaderResourceArray *const pArray
Definition: DynamicCpuWriteShaderResourceArray.h:94
+
unsigned int iIndexInArray
Definition: DynamicCpuWriteShaderResourceArray.h:106
+
void updateData(void *pData)
Definition: DynamicCpuWriteShaderResourceArray.cpp:43
+
void updateIndex(size_t iNewIndex)
Definition: DynamicCpuWriteShaderResourceArray.h:77
+
ShaderCpuWriteResourceBinding *const pShaderResource
Definition: DynamicCpuWriteShaderResourceArray.h:97
+
Definition: DynamicCpuWriteShaderResourceArray.h:116
+
void updateSlotData(DynamicCpuWriteShaderResourceArraySlot *pSlot, void *pData)
Definition: DynamicCpuWriteShaderResourceArray.cpp:169
+
size_t getCapacityStepSize() const
Definition: DynamicCpuWriteShaderResourceArray.cpp:458
+
size_t getSizeInBytes()
Definition: DynamicCpuWriteShaderResourceArray.cpp:451
+
std::variant< std::unique_ptr< DynamicCpuWriteShaderResourceArraySlot >, Error > insert(ShaderCpuWriteResourceBinding *pShaderResource)
Definition: DynamicCpuWriteShaderResourceArray.cpp:378
+
const std::string sHandledShaderResourceName
Definition: DynamicCpuWriteShaderResourceArray.h:352
+
size_t getElementSize() const
Definition: DynamicCpuWriteShaderResourceArray.cpp:456
+
std::string_view getHandledShaderResourceName() const
Definition: DynamicCpuWriteShaderResourceArray.cpp:47
+
std::pair< std::recursive_mutex, InternalResources > * getInternalResources()
Definition: DynamicCpuWriteShaderResourceArray.cpp:52
+
std::pair< std::recursive_mutex, InternalResources > mtxInternalResources
Definition: DynamicCpuWriteShaderResourceArray.h:338
+
const size_t iCapacityStepSize
Definition: DynamicCpuWriteShaderResourceArray.h:349
+
static std::variant< size_t, Error > calculateCapacityStepSize(size_t iElementSizeInBytes)
Definition: DynamicCpuWriteShaderResourceArray.cpp:95
+
size_t getSize()
Definition: DynamicCpuWriteShaderResourceArray.cpp:441
+
static std::string formatBytesToKilobytes(size_t iSizeInBytes)
Definition: DynamicCpuWriteShaderResourceArray.cpp:88
+
static std::variant< std::unique_ptr< DynamicCpuWriteShaderResourceArray >, Error > create(GpuResourceManager *pResourceManager, const std::string &sHandledShaderResourceName, size_t iElementSizeInBytes)
Definition: DynamicCpuWriteShaderResourceArray.cpp:57
+
std::optional< Error > createArray(size_t iCapacity)
Definition: DynamicCpuWriteShaderResourceArray.cpp:182
+
std::optional< Error > shrinkArray()
Definition: DynamicCpuWriteShaderResourceArray.cpp:326
+
GpuResourceManager *const pResourceManager
Definition: DynamicCpuWriteShaderResourceArray.h:341
+
void markSlotAsNoLongerBeingUsed(DynamicCpuWriteShaderResourceArraySlot *pSlot)
Definition: DynamicCpuWriteShaderResourceArray.cpp:130
+
std::optional< Error > expandArray()
Definition: DynamicCpuWriteShaderResourceArray.cpp:273
+
const size_t iElementSizeInBytes
Definition: DynamicCpuWriteShaderResourceArray.h:355
+
size_t getCapacity()
Definition: DynamicCpuWriteShaderResourceArray.cpp:446
+
Definition: Error.h:27
+
std::string getFullErrorMessage() const
Definition: Error.cpp:84
+
void showError() const
Definition: Error.cpp:102
+
Definition: GpuResourceManager.h:43
+
Definition: ShaderCpuWriteResourceBinding.h:25
+
Definition: DynamicCpuWriteShaderResourceArray.h:125
+
size_t iNextFreeArrayIndex
Definition: DynamicCpuWriteShaderResourceArray.h:143
+
std::queue< size_t > noLongerUsedArrayIndices
Definition: DynamicCpuWriteShaderResourceArray.h:146
+
std::unique_ptr< UploadBuffer > pUploadBuffer
Definition: DynamicCpuWriteShaderResourceArray.h:129
+
size_t iCapacity
Definition: DynamicCpuWriteShaderResourceArray.h:135
+
std::unordered_set< DynamicCpuWriteShaderResourceArraySlot * > activeSlots
Definition: DynamicCpuWriteShaderResourceArray.h:156
+
+
+ + + + diff --git a/EditorCameraNode_8h_source.html b/EditorCameraNode_8h_source.html new file mode 100644 index 000000000..c3ffb9f2d --- /dev/null +++ b/EditorCameraNode_8h_source.html @@ -0,0 +1,164 @@ + + + + + + + +Nameless Engine: src/editor_lib/public/nodes/EditorCameraNode.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EditorCameraNode.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "game/nodes/CameraNode.h"
+
5
+
6namespace ne {
+
8 class EditorCameraNode : public CameraNode {
+
9 public:
+ +
11
+
17 EditorCameraNode(const std::string& sNodeName);
+
18
+
19 virtual ~EditorCameraNode() override = default;
+
20
+
26 void setIgnoreInput(bool bIgnore);
+
27
+
28 protected:
+
40 virtual void onBeforeNewFrame(float timeSincePrevFrameInSec) override;
+
41
+
52 virtual void onMouseMove(double xOffset, double yOffset) override;
+
53
+
67 virtual void onAfterAttachedToNewParent(bool bThisNodeBeingAttached) override;
+
68
+
69 private:
+
71 glm::vec3 lastInputDirection = glm::vec3(0.0F, 0.0F, 0.0F);
+
72
+ +
75
+ +
81
+
87 bool bIgnoreInput = true;
+
88
+
90 static constexpr double rotationSensitivity = 0.1; // NOLINT: default value
+
91
+
93 static constexpr float movementSpeed = 5.0F;
+
94
+
96 static constexpr float speedIncreaseMultiplier = 2.0F;
+
97
+
99 static constexpr float speedDecreaseMultiplier = 0.5F;
+
100 };
+
101}
+
Definition: CameraNode.h:11
+
Definition: EditorCameraNode.h:8
+
virtual void onAfterAttachedToNewParent(bool bThisNodeBeingAttached) override
Definition: EditorCameraNode.cpp:129
+
virtual void onBeforeNewFrame(float timeSincePrevFrameInSec) override
Definition: EditorCameraNode.cpp:89
+
float currentMovementSpeed
Definition: EditorCameraNode.h:74
+
static constexpr double rotationSensitivity
Definition: EditorCameraNode.h:90
+
static constexpr float speedIncreaseMultiplier
Definition: EditorCameraNode.h:96
+
void setIgnoreInput(bool bIgnore)
Definition: EditorCameraNode.cpp:67
+
float currentMovementSpeedMultiplier
Definition: EditorCameraNode.h:80
+
bool bIgnoreInput
Definition: EditorCameraNode.h:87
+
static constexpr float speedDecreaseMultiplier
Definition: EditorCameraNode.h:99
+
virtual void onMouseMove(double xOffset, double yOffset) override
Definition: EditorCameraNode.cpp:115
+
glm::vec3 lastInputDirection
Definition: EditorCameraNode.h:71
+
static constexpr float movementSpeed
Definition: EditorCameraNode.h:93
+
std::string sNodeName
Definition: Node.h:779
+
+
+ + + + diff --git a/EditorGameInstance_8h_source.html b/EditorGameInstance_8h_source.html new file mode 100644 index 000000000..52fa9b1ee --- /dev/null +++ b/EditorGameInstance_8h_source.html @@ -0,0 +1,164 @@ + + + + + + + +Nameless Engine: src/editor_lib/public/EditorGameInstance.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EditorGameInstance.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "game/GameInstance.h"
+
5
+
6// External.
+
7#include "GcPtr.h"
+
8
+
9namespace ne {
+
10 class Window;
+
11 class GameManager;
+
12 class EditorCameraNode;
+
13
+ +
21 public:
+
27 static const char* getEditorWindowTitle();
+
28
+ +
41
+
47 sgc::GcPtr<EditorCameraNode> getEditorCamera() const;
+
48
+
49 virtual ~EditorGameInstance() override = default;
+
50
+
51 protected:
+
58 virtual void onGameStarted() override;
+
59
+
68 virtual void onBeforeNewFrame(float timeSincePrevCallInSec) override;
+
69
+
70 private:
+ +
74 sgc::GcPtr<EditorCameraNode> pCameraNode;
+
75 };
+
76
+ +
79
+ +
82
+
84 static constexpr auto pEditorWindowTitle = "Nameless Editor";
+
85 };
+
86} // namespace ne
+
Definition: EditorGameInstance.h:20
+
EditorGcPointers gcPointers
Definition: EditorGameInstance.h:81
+
void spawnEditorNodesForNewWorld()
Definition: EditorGameInstance.cpp:258
+
virtual void onBeforeNewFrame(float timeSincePrevCallInSec) override
Definition: EditorGameInstance.cpp:221
+
virtual void onGameStarted() override
Definition: EditorGameInstance.cpp:119
+
static constexpr auto pEditorWindowTitle
Definition: EditorGameInstance.h:84
+
sgc::GcPtr< EditorCameraNode > getEditorCamera() const
Definition: EditorGameInstance.cpp:115
+
static const char * getEditorWindowTitle()
Definition: EditorGameInstance.cpp:23
+
Definition: GameInstance.h:32
+
InputManager * pInputManager
Definition: GameInstance.h:530
+
GameManager * pGameManager
Definition: GameInstance.h:525
+
Definition: GameManager.h:34
+
Definition: InputManager.h:77
+
Definition: Window.h:198
+
Definition: EditorGameInstance.h:72
+
sgc::GcPtr< EditorCameraNode > pCameraNode
Definition: EditorGameInstance.h:74
+
+
+ + + + diff --git a/EditorInputEventIds_8hpp_source.html b/EditorInputEventIds_8hpp_source.html new file mode 100644 index 000000000..736773ebd --- /dev/null +++ b/EditorInputEventIds_8hpp_source.html @@ -0,0 +1,128 @@ + + + + + + + +Nameless Engine: src/editor_lib/public/input/EditorInputEventIds.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EditorInputEventIds.hpp
+
+
+
1#pragma once
+
2
+
3namespace ne {
+ +
7 enum class Action : unsigned int {
+
8 CAPTURE_MOUSE_CURSOR = 0, //< Capture mouse cursor.
+
9 INCREASE_CAMERA_SPEED, //< Increase editor camera's speed.
+
10 DECREASE_CAMERA_SPEED, //< Decrease editor camera's speed.
+
11 };
+
12
+
14 enum class Axis : unsigned int {
+
15 MOVE_CAMERA_FORWARD = 0, //< Move editor's camera forward/back.
+
16 MOVE_CAMERA_RIGHT, //< Move editor's camera right/left.
+
17 MOVE_CAMERA_UP, //< Move editor's camera up/down.
+
18 };
+
19 };
+
20}
+
Definition: EditorInputEventIds.hpp:5
+
Action
Definition: EditorInputEventIds.hpp:7
+
Axis
Definition: EditorInputEventIds.hpp:14
+
+
+ + + + diff --git a/EditorNodeCreationHelpers_8hpp_source.html b/EditorNodeCreationHelpers_8hpp_source.html new file mode 100644 index 000000000..1711b84e1 --- /dev/null +++ b/EditorNodeCreationHelpers_8hpp_source.html @@ -0,0 +1,133 @@ + + + + + + + +Nameless Engine: src/editor_lib/public/misc/EditorNodeCreationHelpers.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EditorNodeCreationHelpers.hpp
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "game/nodes/Node.h"
+
5
+
6namespace ne {
+ +
9 public:
+ +
11
+
20 template <typename NodeType>
+
21 requires std::derived_from<NodeType, Node>
+
22 static inline sgc::GcPtr<NodeType> createEditorNode(const std::string& sNodeName) {
+
23 // Create node.
+
24 auto pCreatedNode = sgc::makeGc<NodeType>(sNodeName);
+
25
+
26 // Disable serialization so that it won't be serialized as part of the game world.
+
27 pCreatedNode->setSerialize(false);
+
28
+
29 return pCreatedNode;
+
30 }
+
31 };
+
32}
+
Definition: EditorNodeCreationHelpers.hpp:8
+
static sgc::GcPtr< NodeType > createEditorNode(const std::string &sNodeName)
Definition: EditorNodeCreationHelpers.hpp:22
+
+
+ + + + diff --git a/EngineShaderConstantMacros_8hpp_source.html b/EngineShaderConstantMacros_8hpp_source.html new file mode 100644 index 000000000..fef84df95 --- /dev/null +++ b/EngineShaderConstantMacros_8hpp_source.html @@ -0,0 +1,139 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/EngineShaderConstantMacros.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EngineShaderConstantMacros.hpp
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <unordered_map>
+
5#include <string>
+
6
+
7namespace ne {
+ +
10 public:
+ +
12
+
14 struct ForwardPlus {
+
23 static inline std::pair<std::string, std::string> getLightGridTileSizeMacro() {
+
24 return {"LIGHT_GRID_TILE_SIZE_IN_PIXELS", "16"};
+
25 }
+
26
+
35 static inline std::pair<std::string, std::string> getAveragePointLightNumPerTileMacro() {
+
36 return {"AVERAGE_POINT_LIGHT_NUM_PER_TILE", "200"};
+
37 }
+
38
+
47 static inline std::pair<std::string, std::string> getAverageSpotLightNumPerTileMacro() {
+
48 return {"AVERAGE_SPOT_LIGHT_NUM_PER_TILE", "200"};
+
49 }
+
50 };
+
51 };
+
52}
+
Definition: EngineShaderConstantMacros.hpp:9
+
Definition: EngineShaderConstantMacros.hpp:14
+
static std::pair< std::string, std::string > getLightGridTileSizeMacro()
Definition: EngineShaderConstantMacros.hpp:23
+
static std::pair< std::string, std::string > getAveragePointLightNumPerTileMacro()
Definition: EngineShaderConstantMacros.hpp:35
+
static std::pair< std::string, std::string > getAverageSpotLightNumPerTileMacro()
Definition: EngineShaderConstantMacros.hpp:47
+
+
+ + + + diff --git a/EngineShaderNames_8hpp_source.html b/EngineShaderNames_8hpp_source.html new file mode 100644 index 000000000..6f23bdec4 --- /dev/null +++ b/EngineShaderNames_8hpp_source.html @@ -0,0 +1,154 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/EngineShaderNames.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EngineShaderNames.hpp
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <string>
+
5
+
6namespace ne {
+
7
+ +
10 public:
+
11 EngineShaderNames() = delete;
+
12
+
14 struct MeshNode {
+
20 static inline std::string getVertexShaderName() { return "engine.meshnode.vs"; }
+
21
+
27 static inline std::string getFragmentShaderName() { return "engine.meshnode.fs"; }
+
28 };
+
29
+
31 struct PointLight {
+
38 static inline std::string_view getFragmentShaderName() { return "engine.pointlight.fs"; }
+
39 };
+
40
+
42 struct ForwardPlus {
+
49 static inline std::string getCalculateFrustumGridComputeShaderName() {
+
50 return "engine.fp.frustum_grid.comp";
+
51 }
+
52
+
59 static inline std::string getPrepareLightCullingComputeShaderName() {
+
60 return "engine.fp.pre_light_culling.comp";
+
61 }
+
62
+
68 static inline std::string getLightCullingComputeShaderName() {
+
69 return "engine.fp.light_culling.comp";
+
70 }
+
71 };
+
72 };
+
73} // namespace ne
+
Definition: EngineShaderNames.hpp:9
+
Definition: EngineShaderNames.hpp:42
+
static std::string getLightCullingComputeShaderName()
Definition: EngineShaderNames.hpp:68
+
static std::string getCalculateFrustumGridComputeShaderName()
Definition: EngineShaderNames.hpp:49
+
static std::string getPrepareLightCullingComputeShaderName()
Definition: EngineShaderNames.hpp:59
+
Definition: EngineShaderNames.hpp:14
+
static std::string getVertexShaderName()
Definition: EngineShaderNames.hpp:20
+
static std::string getFragmentShaderName()
Definition: EngineShaderNames.hpp:27
+
Definition: EngineShaderNames.hpp:31
+
static std::string_view getFragmentShaderName()
Definition: EngineShaderNames.hpp:38
+
+
+ + + + diff --git a/EngineShaders_8hpp_source.html b/EngineShaders_8hpp_source.html new file mode 100644 index 000000000..6c46162b1 --- /dev/null +++ b/EngineShaders_8hpp_source.html @@ -0,0 +1,223 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/EngineShaders.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EngineShaders.hpp
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "shader/ShaderDescription.h"
+
5#include "misc/ProjectPaths.h"
+
6#include "shader/general/EngineShaderConstantMacros.hpp"
+
7#include "shader/general/EngineShaderNames.hpp"
+
8
+
9namespace ne {
+ +
12 private:
+
23 static inline std::filesystem::path
+
24 constructPathToShaderSourceFile(bool bIsHlsl, const std::string& sShaderPathRelativeFinal) {
+
25 // Prepare language name string.
+
26 const auto pLanguageName = bIsHlsl ? "hlsl" : "glsl";
+
27
+
28 return ProjectPaths::getPathToResDirectory(ResourceDirectory::ENGINE) / "shaders" /
+
29 pLanguageName / "final" / (sShaderPathRelativeFinal + "." + pLanguageName);
+
30 }
+
31
+
32 public:
+
33 EngineShaders() = delete;
+
34
+
36 struct MeshNode {
+
44 static inline ShaderDescription getVertexShader(bool bIsHlsl) {
+
45 return ShaderDescription(
+ +
47 constructPathToShaderSourceFile(bIsHlsl, "MeshNode.vert"),
+
48 ShaderType::VERTEX_SHADER,
+
49 VertexFormat::MESH_NODE,
+
50 "main",
+
51 {});
+
52 }
+
53
+
61 static inline ShaderDescription getFragmentShader(bool bIsHlsl) {
+
62 return ShaderDescription(
+ +
64 constructPathToShaderSourceFile(bIsHlsl, "MeshNode.frag"),
+
65 ShaderType::FRAGMENT_SHADER,
+
66 VertexFormat::MESH_NODE,
+
67 "main",
+ +
69 }
+
70 };
+
71
+
73 struct PointLight {
+
81 static inline ShaderDescription getFragmentShader(bool bIsHlsl) {
+
82 return ShaderDescription(
+ +
84 constructPathToShaderSourceFile(bIsHlsl, "PointLight.frag"),
+
85 ShaderType::FRAGMENT_SHADER,
+
86 VertexFormat::MESH_NODE,
+
87 "main",
+ +
89 {"POINT_LIGHT_SHADOW_PASS", ""}});
+
90 }
+
91 };
+
92
+
94 struct ForwardPlus {
+ +
104 return ShaderDescription(
+ +
106 constructPathToShaderSourceFile(bIsHlsl, "light_culling/CalculateGridFrustums.comp"),
+
107 ShaderType::COMPUTE_SHADER,
+
108 {},
+
109 "main",
+ +
111 }
+
112
+ +
122 return ShaderDescription(
+ +
124 constructPathToShaderSourceFile(bIsHlsl, "light_culling/PrepareLightCulling.comp"),
+
125 ShaderType::COMPUTE_SHADER,
+
126 {},
+
127 "main",
+
128 {});
+
129 }
+
130
+ +
139 return ShaderDescription(
+ +
141 constructPathToShaderSourceFile(bIsHlsl, "light_culling/LightCulling.comp"),
+
142 ShaderType::COMPUTE_SHADER,
+
143 {},
+
144 "main",
+ + + +
148 }
+
149 };
+
150 };
+
151} // namespace ne
+
Definition: EngineShaders.hpp:11
+
static std::filesystem::path constructPathToShaderSourceFile(bool bIsHlsl, const std::string &sShaderPathRelativeFinal)
Definition: EngineShaders.hpp:24
+
static std::filesystem::path getPathToResDirectory()
Definition: ProjectPaths.cpp:123
+
static std::pair< std::string, std::string > getLightGridTileSizeMacro()
Definition: EngineShaderConstantMacros.hpp:23
+
static std::pair< std::string, std::string > getAveragePointLightNumPerTileMacro()
Definition: EngineShaderConstantMacros.hpp:35
+
static std::pair< std::string, std::string > getAverageSpotLightNumPerTileMacro()
Definition: EngineShaderConstantMacros.hpp:47
+
static std::string getLightCullingComputeShaderName()
Definition: EngineShaderNames.hpp:68
+
static std::string getCalculateFrustumGridComputeShaderName()
Definition: EngineShaderNames.hpp:49
+
static std::string getPrepareLightCullingComputeShaderName()
Definition: EngineShaderNames.hpp:59
+
static std::string getVertexShaderName()
Definition: EngineShaderNames.hpp:20
+
static std::string getFragmentShaderName()
Definition: EngineShaderNames.hpp:27
+
static std::string_view getFragmentShaderName()
Definition: EngineShaderNames.hpp:38
+
Definition: EngineShaders.hpp:94
+
static ShaderDescription getCalculateGridFrustumComputeShader(bool bIsHlsl)
Definition: EngineShaders.hpp:103
+
static ShaderDescription getLightCullingComputeShader(bool bIsHlsl)
Definition: EngineShaders.hpp:138
+
static ShaderDescription getPrepareLightCullingComputeShader(bool bIsHlsl)
Definition: EngineShaders.hpp:121
+
Definition: EngineShaders.hpp:36
+
static ShaderDescription getFragmentShader(bool bIsHlsl)
Definition: EngineShaders.hpp:61
+
static ShaderDescription getVertexShader(bool bIsHlsl)
Definition: EngineShaders.hpp:44
+
Definition: EngineShaders.hpp:73
+
static ShaderDescription getFragmentShader(bool bIsHlsl)
Definition: EngineShaders.hpp:81
+
Definition: ShaderDescription.h:74
+
+
+ + + + diff --git a/EnvironmentNode_8h_source.html b/EnvironmentNode_8h_source.html new file mode 100644 index 000000000..595e22dd7 --- /dev/null +++ b/EnvironmentNode_8h_source.html @@ -0,0 +1,147 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/game/nodes/EnvironmentNode.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EnvironmentNode.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "game/nodes/Node.h"
+
5#include "math/GLMath.hpp"
+
6
+
7#include "EnvironmentNode.generated.h"
+
8
+
9namespace ne RNAMESPACE() {
+
11 class RCLASS(Guid("69326ac8-9105-446a-8d8a-9e3c12eeccef")) EnvironmentNode : public Node {
+
12 public:
+ +
14
+
20 EnvironmentNode(const std::string& sNodeName);
+
21
+
22 virtual ~EnvironmentNode() override = default;
+
23
+
29 void setAmbientLight(const glm::vec3& ambientLight);
+
30
+
36 glm::vec3 getAmbientLight() const;
+
37
+
38 protected:
+
51 virtual void onSpawning() override;
+
52
+
62 virtual void onDespawning() override;
+
63
+
64 private:
+
66 RPROPERTY(Serialize)
+
67 glm::vec3 ambientLight = glm::vec3(0.0F, 0.0F, 0.0F);
+
68
+
69 ne_EnvironmentNode_GENERATED
+
70 };
+
71}
+
72
+
73File_EnvironmentNode_GENERATED
+
Definition: EnvironmentNode.h:11
+
Definition: GuidProperty.h:30
+
Definition: Node.h:39
+
Definition: SerializeProperty.h:42
+
+
+ + + + diff --git a/Error_8h_source.html b/Error_8h_source.html new file mode 100644 index 000000000..2c314a249 --- /dev/null +++ b/Error_8h_source.html @@ -0,0 +1,185 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/misc/Error.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Error.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <string_view>
+
5#include <vector>
+
6#include <string>
+
7#include <source_location>
+
8
+
9// OS.
+
10#if defined(WIN32)
+
11#include <Windows.h>
+
12#endif
+
13
+
14namespace ne {
+ +
18 std::string sFilename;
+
19
+
21 std::string sLine;
+
22 };
+
23
+
27 class Error {
+
28 public:
+
35 Error(
+
36 std::string_view sMessage,
+
37 const std::source_location location = std::source_location::current()); // NOLINT
+
38
+
39#if defined(WIN32)
+
46 Error(const HRESULT hResult, const std::source_location location = std::source_location::current());
+
47
+
54 Error(
+
55 unsigned long iErrorCode, const std::source_location location = std::source_location::current());
+
56#endif
+
57
+
58 Error() = delete;
+
59 virtual ~Error() = default;
+
60
+
66 Error(const Error& other) = default;
+
67
+
75 Error& operator=(const Error& other) = default;
+
76
+
82 Error(Error&& other) = default;
+
83
+
91 Error& operator=(Error&& other) = default;
+
92
+ +
99 const std::source_location location = std::source_location::current()); // NOLINT
+
100
+
106 std::string getFullErrorMessage() const;
+
107
+
113 std::string getInitialMessage() const;
+
114
+
118 void showError() const;
+
119
+
120 protected:
+
128 static SourceLocationInfo sourceLocationToInfo(const std::source_location& location);
+
129
+
130 private:
+
132 std::string sMessage;
+
133
+
135 std::vector<SourceLocationInfo> stack;
+
136 };
+
137} // namespace ne
+
Definition: Error.h:27
+
std::string getFullErrorMessage() const
Definition: Error.cpp:84
+
Error & operator=(Error &&other)=default
+
std::string getInitialMessage() const
Definition: Error.cpp:100
+
Error & operator=(const Error &other)=default
+
std::string sMessage
Definition: Error.h:132
+
static SourceLocationInfo sourceLocationToInfo(const std::source_location &location)
Definition: Error.cpp:116
+
std::vector< SourceLocationInfo > stack
Definition: Error.h:135
+
void addCurrentLocationToErrorStack(const std::source_location location=std::source_location::current())
Definition: Error.cpp:80
+
Error(const Error &other)=default
+
void showError() const
Definition: Error.cpp:102
+
Error(Error &&other)=default
+
Definition: Error.h:16
+
std::string sLine
Definition: Error.h:21
+
std::string sFilename
Definition: Error.h:18
+
+
+ + + + diff --git a/FieldSerializerManager_8h_source.html b/FieldSerializerManager_8h_source.html new file mode 100644 index 000000000..16165d2fe --- /dev/null +++ b/FieldSerializerManager_8h_source.html @@ -0,0 +1,148 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/io/FieldSerializerManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FieldSerializerManager.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <mutex>
+
5
+
6// Custom.
+
7#include "io/serializers/IFieldSerializer.hpp"
+
8#include "io/serializers/IBinaryFieldSerializer.hpp"
+
9
+
10namespace ne {
+ +
13 public:
+
14 FieldSerializerManager() = delete;
+
15
+ +
18
+
28 static void addFieldSerializer(std::unique_ptr<IFieldSerializer> pFieldSerializer);
+
29
+
40 static void addBinaryFieldSerializer(std::unique_ptr<IBinaryFieldSerializer> pBinaryFieldSerializer);
+
41
+
48 static std::vector<IFieldSerializer*> getFieldSerializers();
+
49
+
56 static std::vector<IBinaryFieldSerializer*> getBinaryFieldSerializers();
+
57
+
58 private:
+
60 static inline std::pair<std::mutex, std::vector<std::unique_ptr<IFieldSerializer>>>
+ +
62
+
64 static inline std::pair<std::mutex, std::vector<std::unique_ptr<IBinaryFieldSerializer>>>
+ +
66 };
+
67} // namespace ne
+
Definition: FieldSerializerManager.h:12
+
static void addBinaryFieldSerializer(std::unique_ptr< IBinaryFieldSerializer > pBinaryFieldSerializer)
Definition: FieldSerializerManager.cpp:42
+
static std::pair< std::mutex, std::vector< std::unique_ptr< IBinaryFieldSerializer > > > mtxBinaryFieldSerializers
Definition: FieldSerializerManager.h:65
+
static std::vector< IFieldSerializer * > getFieldSerializers()
Definition: FieldSerializerManager.cpp:58
+
static void registerEngineFieldSerializers()
Definition: FieldSerializerManager.cpp:14
+
static void addFieldSerializer(std::unique_ptr< IFieldSerializer > pFieldSerializer)
Definition: FieldSerializerManager.cpp:27
+
static std::vector< IBinaryFieldSerializer * > getBinaryFieldSerializers()
Definition: FieldSerializerManager.cpp:69
+
static std::pair< std::mutex, std::vector< std::unique_ptr< IFieldSerializer > > > mtxFieldSerializers
Definition: FieldSerializerManager.h:61
+
+
+ + + + diff --git a/FileDialog_8h_source.html b/FileDialog_8h_source.html new file mode 100644 index 000000000..428868326 --- /dev/null +++ b/FileDialog_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/misc/FileDialog.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FileDialog.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <filesystem>
+
5#include <vector>
+
6#include <string>
+
7#include <optional>
+
8
+
9namespace ne {
+
11 class FileDialog {
+
12 public:
+
37 static std::vector<std::filesystem::path> openFile(
+
38 const std::string& sTitle,
+
39 const std::vector<std::pair<std::string, std::string>>& vFileTypeFilters = {{"All Files", {"*"}}},
+
40 const std::filesystem::path& directory = std::filesystem::current_path(),
+
41 bool bAllowSelectingMultipleFiles = false);
+
42
+
63 static std::optional<std::filesystem::path> saveFile(
+
64 const std::string& sTitle,
+
65 const std::pair<std::string, std::string>& fileType = {"All Files", {"*"}},
+
66 const std::filesystem::path& directory = std::filesystem::current_path());
+
67
+
76 static std::optional<std::filesystem::path> selectDirectory(
+
77 const std::string& sTitle,
+
78 const std::filesystem::path& directory = std::filesystem::current_path());
+
79 };
+
80} // namespace ne
+
Definition: FileDialog.h:11
+
static std::optional< std::filesystem::path > saveFile(const std::string &sTitle, const std::pair< std::string, std::string > &fileType={"All Files", {"*"}}, const std::filesystem::path &directory=std::filesystem::current_path())
Definition: FileDialog.cpp:43
+
static std::vector< std::filesystem::path > openFile(const std::string &sTitle, const std::vector< std::pair< std::string, std::string > > &vFileTypeFilters={{"All Files", {"*"}}}, const std::filesystem::path &directory=std::filesystem::current_path(), bool bAllowSelectingMultipleFiles=false)
Definition: FileDialog.cpp:16
+
static std::optional< std::filesystem::path > selectDirectory(const std::string &sTitle, const std::filesystem::path &directory=std::filesystem::current_path())
Definition: FileDialog.cpp:77
+
+
+ + + + diff --git a/FrameResourceManager_8h_source.html b/FrameResourceManager_8h_source.html new file mode 100644 index 000000000..be2a6d0ab --- /dev/null +++ b/FrameResourceManager_8h_source.html @@ -0,0 +1,209 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/general/resource/frame/FrameResourceManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FrameResourceManager.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <array>
+
5#include <memory>
+
6#include <mutex>
+
7#include <variant>
+
8
+
9// Custom.
+
10#include "misc/Error.h"
+
11#include "math/GLMath.hpp"
+
12#include "shader/VulkanAlignmentConstants.hpp"
+
13#include "render/general/resource/frame/FrameResource.h"
+
14
+
15namespace ne {
+
16 class UploadBuffer;
+
17 class Renderer;
+
18
+ +
22 alignas(iVkMat4Alignment) glm::mat4x4 viewMatrix = glm::identity<glm::mat4x4>();
+
23
+
25 alignas(iVkMat4Alignment) glm::mat4x4 viewProjectionMatrix = glm::identity<glm::mat4x4>();
+
26
+
28 alignas(iVkVec4Alignment) glm::vec4 cameraPosition = glm::vec4(0.0F, 0.0F, 0.0F, 0.0F);
+
29
+
31 alignas(iVkScalarAlignment) float timeSincePrevFrameInSec = 0.0F;
+
32
+
34 alignas(iVkScalarAlignment) float totalTimeInSec = 0.0F;
+
35
+
36 // don't forget to add padding to 4 floats (if needed) for HLSL packing rules
+
37 };
+
38
+ +
47 // Only renderer is allowed to switch to the next frame resource.
+
48 friend class Renderer;
+
49
+
50 // Vulkan renderer need to cycle frame resources in a very specific case.
+
51 friend class VulkanRenderer;
+
52
+
53 public:
+ +
56 CurrentFrameResource() = default;
+
57
+
59 size_t iIndex = 0;
+
60
+ +
63 };
+
64
+
65 FrameResourceManager() = delete;
+ +
67 FrameResourceManager& operator=(const FrameResourceManager&) = delete;
+
68
+
74 static constexpr unsigned int getFrameResourceCount() { return iFrameResourceCount; }
+
75
+
83 static std::variant<std::unique_ptr<FrameResourceManager>, Error> create(Renderer* pRenderer);
+
84
+
91 std::pair<std::recursive_mutex, CurrentFrameResource>* getCurrentFrameResource();
+
92
+
102 std::pair<std::recursive_mutex*, std::vector<FrameResource*>> getAllFrameResources();
+
103
+
104 private:
+
106 static constexpr unsigned int iFrameResourceCount = 2; // small to avoid input latency
+
107
+
115 static std::array<std::unique_ptr<FrameResource>, iFrameResourceCount>
+ +
117
+ +
124
+ +
135
+
137 Renderer* pRenderer = nullptr;
+
138
+
140 std::pair<std::recursive_mutex, CurrentFrameResource> mtxCurrentFrameResource;
+
141
+
143 std::array<std::unique_ptr<FrameResource>, iFrameResourceCount> vFrameResources;
+
144 };
+
145} // namespace ne
+
Definition: Error.h:27
+
Definition: FrameResourceManager.h:46
+
void switchToNextFrameResource()
Definition: FrameResourceManager.cpp:87
+
std::pair< std::recursive_mutex, CurrentFrameResource > mtxCurrentFrameResource
Definition: FrameResourceManager.h:140
+
std::array< std::unique_ptr< FrameResource >, iFrameResourceCount > vFrameResources
Definition: FrameResourceManager.h:143
+
static constexpr unsigned int getFrameResourceCount()
Definition: FrameResourceManager.h:74
+
std::pair< std::recursive_mutex, CurrentFrameResource > * getCurrentFrameResource()
Definition: FrameResourceManager.cpp:83
+
Renderer * pRenderer
Definition: FrameResourceManager.h:137
+
std::pair< std::recursive_mutex *, std::vector< FrameResource * > > getAllFrameResources()
Definition: FrameResourceManager.cpp:100
+
static std::variant< std::unique_ptr< FrameResourceManager >, Error > create(Renderer *pRenderer)
Definition: FrameResourceManager.cpp:56
+
static std::array< std::unique_ptr< FrameResource >, iFrameResourceCount > createRenderDependentFrameResources(Renderer *pRenderer)
Definition: FrameResourceManager.cpp:19
+
static constexpr unsigned int iFrameResourceCount
Definition: FrameResourceManager.h:106
+
Definition: Renderer.h:44
+
Definition: VulkanRenderer.h:26
+
Definition: FrameResourceManager.h:20
+
float timeSincePrevFrameInSec
Definition: FrameResourceManager.h:31
+
glm::vec4 cameraPosition
Definition: FrameResourceManager.h:28
+
glm::mat4x4 viewProjectionMatrix
Definition: FrameResourceManager.h:25
+
glm::mat4x4 viewMatrix
Definition: FrameResourceManager.h:22
+
float totalTimeInSec
Definition: FrameResourceManager.h:34
+
Definition: FrameResourceManager.h:55
+
size_t iIndex
Definition: FrameResourceManager.h:59
+
FrameResource * pResource
Definition: FrameResourceManager.h:62
+
Definition: FrameResource.h:15
+
+
+ + + + diff --git a/FrameResource_8h_source.html b/FrameResource_8h_source.html new file mode 100644 index 000000000..59f2f8092 --- /dev/null +++ b/FrameResource_8h_source.html @@ -0,0 +1,138 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/general/resource/frame/FrameResource.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FrameResource.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <memory>
+
5#include <optional>
+
6
+
7// Custom.
+
8#include "misc/Error.h"
+
9#include "render/general/resource/UploadBuffer.h"
+
10
+
11namespace ne {
+
12 class Renderer;
+
13
+ +
16 // Only frame resource manager can initialize us.
+
17 friend class FrameResourceManager;
+
18
+
19 virtual ~FrameResource() = default;
+
20
+
22 std::unique_ptr<UploadBuffer> pFrameConstantBuffer;
+
23
+
24 private:
+
32 [[nodiscard]] virtual std::optional<Error> initialize(Renderer* pRenderer) = 0;
+
33 };
+
34} // namespace ne
+
Definition: FrameResourceManager.h:46
+
Definition: Renderer.h:44
+
Definition: FrameResource.h:15
+
std::unique_ptr< UploadBuffer > pFrameConstantBuffer
Definition: FrameResource.h:22
+
virtual std::optional< Error > initialize(Renderer *pRenderer)=0
+
+
+ + + + diff --git a/Frustum_8h_source.html b/Frustum_8h_source.html new file mode 100644 index 000000000..04ceea919 --- /dev/null +++ b/Frustum_8h_source.html @@ -0,0 +1,152 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/misc/shapes/Frustum.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Frustum.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "math/GLMath.hpp"
+
5#include "misc/shapes/Plane.h"
+
6#include "misc/shapes/AABB.h"
+
7#include "misc/shapes/Sphere.h"
+
8#include "misc/shapes/Cone.h"
+
9
+
10namespace ne {
+
12 struct Frustum {
+
24 bool isAabbInFrustum(const AABB& aabbInModelSpace, const glm::mat4x4& worldMatrix) const;
+
25
+
36 bool isSphereInFrustum(const Sphere& sphere) const;
+
37
+
48 bool isConeInFrustum(const Cone& cone) const;
+
49
+ +
52
+ +
55
+ +
58
+ +
61
+ +
64
+ +
67 };
+
68}
+
Definition: AABB.h:14
+
Definition: Cone.h:9
+
Definition: Frustum.h:12
+
bool isAabbInFrustum(const AABB &aabbInModelSpace, const glm::mat4x4 &worldMatrix) const
Definition: Frustum.cpp:8
+
Plane topFace
Definition: Frustum.h:51
+
Plane nearFace
Definition: Frustum.h:63
+
bool isConeInFrustum(const Cone &cone) const
Definition: Frustum.cpp:65
+
Plane farFace
Definition: Frustum.h:66
+
Plane bottomFace
Definition: Frustum.h:54
+
Plane rightFace
Definition: Frustum.h:57
+
bool isSphereInFrustum(const Sphere &sphere) const
Definition: Frustum.cpp:59
+
Plane leftFace
Definition: Frustum.h:60
+
Definition: Plane.h:8
+
Definition: Sphere.h:9
+
+
+ + + + diff --git a/GLFW_8hpp_source.html b/GLFW_8hpp_source.html new file mode 100644 index 000000000..26db4a712 --- /dev/null +++ b/GLFW_8hpp_source.html @@ -0,0 +1,172 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/window/GLFW.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GLFW.hpp
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <stdexcept>
+
5#include <string>
+
6
+
7// Custom.
+
8#include "misc/Error.h"
+
9#include "io/Logger.h"
+
10
+
11// External.
+
12#define GLFW_INCLUDE_NONE
+
13#include "GLFW/glfw3.h"
+
14#undef MessageBox
+
15#undef IGNORE
+
16
+
17namespace ne {
+
18 inline void glfwErrorCallback(int iErrorCode, const char* pDescription) {
+
19 const auto sMessage = "GLFW error (" + std::to_string(iErrorCode) + "): " + std::string(pDescription);
+
20
+
21 if (iErrorCode == GLFW_FEATURE_UNAVAILABLE) {
+
22 // Just log an error, this is probably some platform-specific limitation like window icons.
+
23 Logger::get().error(sMessage);
+
24 return;
+
25 }
+
26
+
27 const Error error(sMessage);
+
28 error.showError();
+
29 throw std::runtime_error(error.getFullErrorMessage());
+
30 }
+
31
+
33 class GLFW {
+
34 public:
+
35 GLFW(const GLFW&) = delete;
+
36 GLFW& operator=(const GLFW&) = delete;
+
37
+
39 ~GLFW() { glfwTerminate(); }
+
40
+
46 static GLFW& get() {
+
47 static GLFW glfw;
+
48 return glfw;
+
49 }
+
50
+
51 private:
+
53 GLFW() {
+
54 glfwSetErrorCallback(ne::glfwErrorCallback);
+
55
+
56 if (glfwInit() != GLFW_TRUE) {
+
57 const Error error("failed to initialize GLFW");
+
58 error.showError();
+
59 throw std::runtime_error(error.getFullErrorMessage());
+
60 }
+
61 }
+
62 };
+
63} // namespace ne
+
Definition: Error.h:27
+
std::string getFullErrorMessage() const
Definition: Error.cpp:84
+
void showError() const
Definition: Error.cpp:102
+
Definition: GLFW.hpp:33
+
~GLFW()
Definition: GLFW.hpp:39
+
GLFW()
Definition: GLFW.hpp:53
+
static GLFW & get()
Definition: GLFW.hpp:46
+
void error(std::string_view sText, const std::source_location location=std::source_location::current()) const
Definition: Logger.cpp:75
+
static Logger & get()
Definition: Logger.cpp:41
+
+
+ + + + diff --git a/GLMath_8hpp_source.html b/GLMath_8hpp_source.html new file mode 100644 index 000000000..fef6ca0f7 --- /dev/null +++ b/GLMath_8hpp_source.html @@ -0,0 +1,125 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/math/GLMath.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GLMath.hpp
+
+
+
1
+
6#pragma once
+
7
+
8#define GLM_FORCE_LEFT_HANDED
+
9#define GLM_FORCE_DEPTH_ZERO_TO_ONE
+
10#define GLM_FORCE_INLINE
+
11#define GLM_FORCE_XYZW_ONLY
+
12#define GLM_ENABLE_EXPERIMENTAL
+
13// #define GLM_FORCE_DEFAULT_ALIGNED_GENTYPES // Disabling these because they have proved to cause
+
14// #define GLM_FORCE_INTRINSICS // some absurd crashed only in release builds.
+
15
+
16#include "glm/glm.hpp"
+
17#include "glm/trigonometric.hpp"
+
18#include "glm/gtx/vector_angle.hpp"
+
19#include "glm/gtx/matrix_decompose.hpp"
+
20#include "glm/gtc/type_ptr.hpp"
+
21#include "glm/gtx/compatibility.hpp"
+
+
+ + + + diff --git a/GameInstance_8h_source.html b/GameInstance_8h_source.html new file mode 100644 index 000000000..d299a5b8f --- /dev/null +++ b/GameInstance_8h_source.html @@ -0,0 +1,291 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/game/GameInstance.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GameInstance.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <functional>
+
5#include <optional>
+
6#include <mutex>
+
7#include <filesystem>
+
8
+
9// Custom.
+
10#include "input/KeyboardKey.hpp"
+
11#include "input/MouseButton.hpp"
+
12#include "misc/Timer.h"
+
13#include "misc/Globals.h"
+
14
+
15// External.
+
16#include "GcPtr.h"
+
17
+
18namespace ne {
+
19 class Window;
+
20 class InputManager;
+
21 class GameManager;
+
22 class Node;
+
23 class CameraManager;
+
24
+ +
33 // Game will trigger input events.
+
34 friend class GameManager;
+
35
+
36 public:
+
37 GameInstance() = delete;
+
38
+ +
51
+
52 GameInstance(const GameInstance&) = delete;
+
53 GameInstance& operator=(const GameInstance&) = delete;
+
54
+
55 virtual ~GameInstance() = default;
+
56
+
62 static float getTotalApplicationTimeInSec();
+
63
+
110 void addDeferredTask(const std::function<void()>& task) const;
+
111
+
127 void addTaskToThreadPool(const std::function<void()>& task) const;
+
128
+
157 void createWorld(
+
158 const std::function<void(const std::optional<Error>&)>& onCreated,
+
159 size_t iWorldSize = Globals::getDefaultWorldSize());
+
160
+ +
194 const std::function<void(const std::optional<Error>&)>& onLoaded,
+
195 const std::filesystem::path& pathToNodeTree,
+
196 size_t iWorldSize = Globals::getDefaultWorldSize());
+
197
+
210 void queueGarbageCollection(bool bForce, const std::optional<std::function<void()>>& onFinished = {});
+
211
+
223 void setGarbageCollectorRunInterval(long long iGcRunIntervalInSec);
+
224
+ +
233
+
240 sgc::GcPtr<Node> getWorldRootNode() const;
+
241
+
248 float getWorldTimeInSeconds() const;
+
249
+
255 size_t getWorldSize() const;
+
256
+ +
263
+ +
270
+
276 Window* getWindow() const;
+
277
+ +
284
+ +
293
+ +
300
+
301 protected:
+
326 Timer* createTimer(const std::string& sTimerName);
+
327
+ +
333
+
340 virtual void onGameStarted() {}
+
341
+
350 virtual void onBeforeNewFrame(float timeSincePrevCallInSec) {}
+
351
+
361 virtual void onKeyboardInput(KeyboardKey key, KeyboardModifiers modifiers, bool bIsPressedDown) {}
+
362
+
372 virtual void onMouseInput(MouseButton button, KeyboardModifiers modifiers, bool bIsPressedDown) {}
+
373
+
382 virtual void onMouseMove(double xOffset, double yOffset) {};
+
383
+
389 virtual void onMouseScrollMove(int iOffset) {}
+
390
+
396 virtual void onWindowFocusChanged(bool bIsFocused) {}
+
397
+
404 virtual void onFramebufferSizeChanged(int iWidth, int iHeight) {}
+
405
+
413 virtual void onWindowClose() {}
+
414
+
439 std::pair<
+
440 std::recursive_mutex,
+
441 std::unordered_map<unsigned int, std::function<void(KeyboardModifiers, bool)>>>*
+ +
443
+
469 std::pair<
+
470 std::recursive_mutex,
+
471 std::unordered_map<unsigned int, std::function<void(KeyboardModifiers, float)>>>*
+ +
473
+
474 private:
+
484 void onInputActionEvent(unsigned int iActionId, KeyboardModifiers modifiers, bool bIsPressedDown);
+
485
+
495 void onInputAxisEvent(unsigned int iAxisEventId, KeyboardModifiers modifiers, float input);
+
496
+
498 std::pair<
+
499 std::recursive_mutex,
+
500 std::unordered_map<unsigned int, std::function<void(KeyboardModifiers, bool)>>>
+ +
502
+
504 std::pair<
+
505 std::recursive_mutex,
+
506 std::unordered_map<unsigned int, std::function<void(KeyboardModifiers, float)>>>
+ +
508
+
516 std::pair<std::recursive_mutex, std::vector<std::unique_ptr<Timer>>> mtxCreatedTimers;
+
517
+ +
520
+
522 Window* pGameWindow = nullptr;
+
523
+ +
526
+ +
531 };
+
532} // namespace ne
+
Definition: CameraManager.h:16
+
Definition: GameInstance.h:32
+
float getWorldTimeInSeconds() const
Definition: GameInstance.cpp:149
+
sgc::GcPtr< Node > getWorldRootNode() const
Definition: GameInstance.cpp:147
+
long long getGarbageCollectorRunIntervalInSec()
Definition: GameInstance.cpp:25
+
InputManager * getInputManager() const
Definition: GameInstance.cpp:23
+
void onInputAxisEvent(unsigned int iAxisEventId, KeyboardModifiers modifiers, float input)
Definition: GameInstance.cpp:87
+
virtual void onWindowFocusChanged(bool bIsFocused)
Definition: GameInstance.h:396
+
CameraManager * getCameraManager() const
Definition: GameInstance.cpp:21
+
void stopAndDisableCreatedTimers()
Definition: GameInstance.cpp:63
+
bool bAllowCreatingTimers
Definition: GameInstance.h:519
+
size_t getTotalSpawnedNodeCount()
Definition: GameInstance.cpp:153
+
virtual void onBeforeNewFrame(float timeSincePrevCallInSec)
Definition: GameInstance.h:350
+
void queueGarbageCollection(bool bForce, const std::optional< std::function< void()> > &onFinished={})
Definition: GameInstance.cpp:120
+
Window * pGameWindow
Definition: GameInstance.h:522
+
std::pair< std::recursive_mutex, std::vector< std::unique_ptr< Timer > > > mtxCreatedTimers
Definition: GameInstance.h:516
+
void onInputActionEvent(unsigned int iActionId, KeyboardModifiers modifiers, bool bIsPressedDown)
Definition: GameInstance.cpp:73
+
virtual void onMouseInput(MouseButton button, KeyboardModifiers modifiers, bool bIsPressedDown)
Definition: GameInstance.h:372
+
virtual void onGameStarted()
Definition: GameInstance.h:340
+
void executeShaderManagerSelfValidation() const
Definition: GameInstance.cpp:129
+
InputManager * pInputManager
Definition: GameInstance.h:530
+
virtual void onWindowClose()
Definition: GameInstance.h:413
+
static float getTotalApplicationTimeInSec()
Definition: GameInstance.cpp:17
+
size_t getCalledEveryFrameNodeCount()
Definition: GameInstance.cpp:155
+
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, bool)> > > mtxBindedActionEvents
Definition: GameInstance.h:501
+
void loadNodeTreeAsWorld(const std::function< void(const std::optional< Error > &)> &onLoaded, const std::filesystem::path &pathToNodeTree, size_t iWorldSize=Globals::getDefaultWorldSize())
Definition: GameInstance.cpp:113
+
virtual void onFramebufferSizeChanged(int iWidth, int iHeight)
Definition: GameInstance.h:404
+
void addDeferredTask(const std::function< void()> &task) const
Definition: GameInstance.cpp:100
+
Window * getWindow() const
Definition: GameInstance.cpp:19
+
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, bool)> > > * getActionEventBindings()
Definition: GameInstance.cpp:136
+
Timer * createTimer(const std::string &sTimerName)
Definition: GameInstance.cpp:29
+
virtual void onMouseScrollMove(int iOffset)
Definition: GameInstance.h:389
+
GameManager * pGameManager
Definition: GameInstance.h:525
+
virtual void onKeyboardInput(KeyboardKey key, KeyboardModifiers modifiers, bool bIsPressedDown)
Definition: GameInstance.h:361
+
virtual void onMouseMove(double xOffset, double yOffset)
Definition: GameInstance.h:382
+
void setGarbageCollectorRunInterval(long long iGcRunIntervalInSec)
Definition: GameInstance.cpp:125
+
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, float)> > > * getAxisEventBindings()
Definition: GameInstance.cpp:143
+
size_t getWorldSize() const
Definition: GameInstance.cpp:151
+
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, float)> > > mtxBindedAxisEvents
Definition: GameInstance.h:507
+
void addTaskToThreadPool(const std::function< void()> &task) const
Definition: GameInstance.cpp:104
+
void createWorld(const std::function< void(const std::optional< Error > &)> &onCreated, size_t iWorldSize=Globals::getDefaultWorldSize())
Definition: GameInstance.cpp:108
+
Definition: GameManager.h:34
+
static constexpr size_t getDefaultWorldSize()
Definition: Globals.h:33
+
Definition: InputManager.h:77
+
Definition: KeyboardKey.hpp:10
+
Definition: Timer.h:13
+
Definition: Window.h:198
+
+
+ + + + diff --git a/GameManager_8h_source.html b/GameManager_8h_source.html new file mode 100644 index 000000000..0d3eacf1f --- /dev/null +++ b/GameManager_8h_source.html @@ -0,0 +1,334 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/game/GameManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GameManager.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <memory>
+
5#include <functional>
+
6#include <queue>
+
7#include <atomic>
+
8#include <mutex>
+
9
+
10// Custom.
+
11#include "game/GameInstance.h"
+
12#include "input/InputManager.h"
+
13#include "input/KeyboardKey.hpp"
+
14#include "input/MouseButton.hpp"
+
15#include "misc/ThreadPool.h"
+
16#include "game/World.h"
+
17#include "render/RenderSettings.h"
+
18
+
19// External.
+
20#include "GcPtr.h"
+
21
+
22namespace ne {
+
23 class GameInstance;
+
24 class Renderer;
+
25 class Window;
+
26 class CameraManager;
+
27
+ +
35 // Objects of this class should only be created by a window instance.
+
36 friend class Window;
+
37
+
38 public:
+
39 GameManager(const GameManager&) = delete;
+
40 GameManager& operator=(const GameManager&) = delete;
+
41
+
42 virtual ~GameManager();
+
43
+
55 static GameManager* get();
+
56
+ +
69
+
85 void queueGarbageCollection(bool bForce, const std::optional<std::function<void()>>& onFinished = {});
+
86
+
133 void addDeferredTask(const std::function<void()>& task);
+
134
+
150 void addTaskToThreadPool(const std::function<void()>& task);
+
151
+
179 void createWorld(
+
180 const std::function<void(const std::optional<Error>&)>& onCreated,
+
181 size_t iWorldSize = Globals::getDefaultWorldSize());
+
182
+ +
213 const std::function<void(const std::optional<Error>&)>& onLoaded,
+
214 const std::filesystem::path& pathToNodeTree,
+
215 size_t iWorldSize = Globals::getDefaultWorldSize());
+
216
+
222 sgc::GcPtr<Node> getWorldRootNode();
+
223
+
230 float getWorldTimeInSeconds();
+
231
+
237 size_t getWorldSize();
+
238
+ +
245
+ +
252
+
258 Window* getWindow() const;
+
259
+ +
266
+ +
273
+
279 float getTimeSincePrevFrameInSec() const;
+
280
+
286 long long getGarbageCollectorRunIntervalInSec() const;
+
287
+
295 bool isNodeSpawned(size_t iNodeId);
+
296
+
302 bool isBeingDestroyed() const;
+
303
+
304 private:
+ +
313
+
321 [[nodiscard]] std::optional<Error> initialize(std::optional<RendererType> preferredRenderer);
+
322
+
332 void destroy();
+
333
+
338 template <typename MyGameInstance>
+
339 requires std::derived_from<MyGameInstance, GameInstance>
+ +
341 pGameInstance = std::make_unique<MyGameInstance>(pWindow, this, &inputManager);
+
342 }
+
343
+
349 void onGameStarted();
+
350
+
357 void onBeforeNewFrame(float timeSincePrevCallInSec);
+
358
+
366 void onKeyboardInput(KeyboardKey key, KeyboardModifiers modifiers, bool bIsPressedDown);
+
367
+
375 void onMouseInput(MouseButton button, KeyboardModifiers modifiers, bool bIsPressedDown);
+
376
+
385 void onMouseMove(double xOffset, double yOffset);
+
386
+
392 void onMouseScrollMove(int iOffset);
+
393
+
399 void onWindowFocusChanged(bool bIsFocused) const;
+
400
+
407 void onFramebufferSizeChanged(int iWidth, int iHeight) const;
+
408
+
414 void onWindowClose() const;
+
415
+
421 void onTickFinished();
+
422
+
434 void runGarbageCollection(bool bForce = false);
+
435
+ +
438
+ +
447 std::variant<KeyboardKey, MouseButton> key, KeyboardModifiers modifiers, bool bIsPressedDown);
+
448
+
456 void triggerAxisEvents(KeyboardKey key, KeyboardModifiers modifiers, bool bIsPressedDown);
+
457
+ +
465
+ +
468
+
470 std::unique_ptr<GameInstance> pGameInstance;
+
471
+
473 std::pair<std::recursive_mutex, std::unique_ptr<World>> mtxWorld;
+
474
+
476 std::unique_ptr<Renderer> pRenderer;
+
477
+
479 std::unique_ptr<CameraManager> pCameraManager;
+
480
+ +
483
+
488 std::pair<std::recursive_mutex, std::queue<std::function<void()>>> mtxDeferredTasks;
+
489
+ +
492
+
494 std::chrono::steady_clock::time_point lastGcRunTime;
+
495
+ +
498
+
500 long long iGcRunIntervalInSec = 120;
+
501
+
503 std::thread::id mainThreadId;
+
504
+ +
507
+
509 bool bIsInitialized = false;
+
510
+
512 bool bIsBeingDestroyed = false;
+
513
+
515 inline static const char* sGcLeakReasons =
+
516 "- you are switching a world but your game instance holds some non-nullptr gc pointers,\n"
+
517 "- you are not using STL container wrappers for gc "
+
518 "pointers (for example, you need to use `sgc::GcVector<sgc::GcPtr<T>>` instead of "
+
519 "`std::vector<sgc::GcPtr<T>>`, and other `gc_*` containers when storing gc pointers),\n"
+
520 "- you are capturing `sgc::GcPtr` pointer(s) in `std::function` (this might leak in some "
+
521 "special),\n"
+
522 "- for a more detailed list of possible issues see the \"README\" file at "
+
523 "https://github.com/Flone-dnb/sgc";
+
524 };
+
525} // namespace ne
+
Definition: CameraManager.h:16
+
Definition: GameInstance.h:32
+
Definition: GameManager.h:34
+
void runGarbageCollection(bool bForce=false)
Definition: GameManager.cpp:238
+
static const char * sGcLeakReasons
Definition: GameManager.h:515
+
float getWorldTimeInSeconds()
Definition: GameManager.cpp:458
+
std::unique_ptr< GameInstance > pGameInstance
Definition: GameManager.h:470
+
void addTaskToThreadPool(const std::function< void()> &task)
Definition: GameManager.cpp:387
+
void triggerActionEvents(std::variant< KeyboardKey, MouseButton > key, KeyboardModifiers modifiers, bool bIsPressedDown)
Definition: GameManager.cpp:609
+
bool bIsBeingDestroyed
Definition: GameManager.h:512
+
std::unique_ptr< CameraManager > pCameraManager
Definition: GameManager.h:479
+
ThreadPool threadPool
Definition: GameManager.h:482
+
std::pair< std::recursive_mutex, std::unique_ptr< World > > mtxWorld
Definition: GameManager.h:473
+
Window * getWindow() const
Definition: GameManager.cpp:588
+
std::optional< Error > initialize(std::optional< RendererType > preferredRenderer)
Definition: GameManager.cpp:60
+
size_t getCalledEveryFrameNodeCount()
Definition: GameManager.cpp:488
+
InputManager inputManager
Definition: GameManager.h:491
+
void setGarbageCollectorRunInterval(long long iGcRunIntervalInSec)
Definition: GameManager.cpp:301
+
void executeDeferredTasks()
Definition: GameManager.cpp:349
+
static GameManager * get()
Definition: GameManager.cpp:299
+
void onMouseInput(MouseButton button, KeyboardModifiers modifiers, bool bIsPressedDown)
Definition: GameManager.cpp:509
+
void onMouseScrollMove(int iOffset)
Definition: GameManager.cpp:538
+
std::chrono::steady_clock::time_point lastGcRunTime
Definition: GameManager.h:494
+
Window * pWindow
Definition: GameManager.h:467
+
std::pair< std::recursive_mutex, std::queue< std::function< void()> > > mtxDeferredTasks
Definition: GameManager.h:488
+
void createWorld(const std::function< void(const std::optional< Error > &)> &onCreated, size_t iWorldSize=Globals::getDefaultWorldSize())
Definition: GameManager.cpp:396
+
CameraManager * getCameraManager() const
Definition: GameManager.cpp:592
+
bool bShouldAcceptNewDeferredTasks
Definition: GameManager.h:506
+
void onMouseMove(double xOffset, double yOffset)
Definition: GameManager.cpp:519
+
std::unique_ptr< Renderer > pRenderer
Definition: GameManager.h:476
+
void onGameStarted()
Definition: GameManager.cpp:216
+
void destroyAndCleanExistingWorld()
Definition: GameManager.cpp:813
+
size_t getTotalSpawnedNodeCount()
Definition: GameManager.cpp:478
+
void triggerAxisEvents(KeyboardKey key, KeyboardModifiers modifiers, bool bIsPressedDown)
Definition: GameManager.cpp:707
+
void queueGarbageCollection(bool bForce, const std::optional< std::function< void()> > &onFinished={})
Definition: GameManager.cpp:306
+
void onWindowFocusChanged(bool bIsFocused) const
Definition: GameManager.cpp:557
+
size_t getWorldSize()
Definition: GameManager.cpp:468
+
float timeSincePrevFrameInSec
Definition: GameManager.h:497
+
void onWindowClose() const
Definition: GameManager.cpp:565
+
std::thread::id mainThreadId
Definition: GameManager.h:503
+
long long getGarbageCollectorRunIntervalInSec() const
Definition: GameManager.cpp:596
+
GameInstance * getGameInstance() const
Definition: GameManager.cpp:590
+
void destroy()
Definition: GameManager.cpp:103
+
sgc::GcPtr< Node > getWorldRootNode()
Definition: GameManager.cpp:448
+
long long iGcRunIntervalInSec
Definition: GameManager.h:500
+
bool bIsInitialized
Definition: GameManager.h:509
+
void onBeforeNewFrame(float timeSincePrevCallInSec)
Definition: GameManager.cpp:315
+
void addDeferredTask(const std::function< void()> &task)
Definition: GameManager.cpp:570
+
float getTimeSincePrevFrameInSec() const
Definition: GameManager.cpp:594
+
void onTickFinished()
Definition: GameManager.cpp:232
+
void setGameInstance()
Definition: GameManager.h:340
+
void onKeyboardInput(KeyboardKey key, KeyboardModifiers modifiers, bool bIsPressedDown)
Definition: GameManager.cpp:498
+
bool isNodeSpawned(size_t iNodeId)
Definition: GameManager.cpp:598
+
void onFramebufferSizeChanged(int iWidth, int iHeight) const
Definition: GameManager.cpp:561
+
void loadNodeTreeAsWorld(const std::function< void(const std::optional< Error > &)> &onLoaded, const std::filesystem::path &pathToNodeTree, size_t iWorldSize=Globals::getDefaultWorldSize())
Definition: GameManager.cpp:414
+
bool isBeingDestroyed() const
Definition: GameManager.cpp:607
+
static constexpr size_t getDefaultWorldSize()
Definition: Globals.h:33
+
Definition: InputManager.h:77
+
Definition: KeyboardKey.hpp:10
+
Definition: ThreadPool.h:14
+
Definition: Window.h:198
+
+
+ + + + diff --git a/GlmVecFieldSerializer_8h_source.html b/GlmVecFieldSerializer_8h_source.html new file mode 100644 index 000000000..3fedab341 --- /dev/null +++ b/GlmVecFieldSerializer_8h_source.html @@ -0,0 +1,182 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/io/serializers/GlmVecFieldSerializer.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GlmVecFieldSerializer.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "io/serializers/IFieldSerializer.hpp"
+
5
+
6namespace ne {
+ +
11 public:
+
12 GlmVecFieldSerializer() = default;
+
13 virtual ~GlmVecFieldSerializer() override = default;
+
14
+
22 virtual bool isFieldTypeSupported(const rfk::Field* pField) override;
+
23
+
42 [[nodiscard]] virtual std::optional<Error> serializeField(
+
43 toml::value* pTomlData,
+
44 Serializable* pFieldOwner,
+
45 const rfk::Field* pField,
+
46 const std::string& sSectionName,
+
47 const std::string& sEntityId,
+
48 size_t& iSubEntityId,
+
49 Serializable* pOriginalObject = nullptr) override;
+
50
+
66 [[nodiscard]] virtual std::optional<Error> deserializeField(
+
67 const toml::value* pTomlDocument,
+
68 const toml::value* pTomlValue,
+
69 Serializable* pFieldOwner,
+
70 const rfk::Field* pField,
+
71 const std::string& sOwnerSectionName,
+
72 const std::string& sEntityId,
+
73 std::unordered_map<std::string, std::string>& customAttributes) override;
+
74
+
85 [[nodiscard]] virtual std::optional<Error> cloneField(
+
86 Serializable* pFromInstance,
+
87 const rfk::Field* pFromField,
+
88 Serializable* pToInstance,
+
89 const rfk::Field* pToField) override;
+
90
+
102 virtual bool isFieldValueEqual(
+
103 Serializable* pFieldAOwner,
+
104 const rfk::Field* pFieldA,
+
105 Serializable* pFieldBOwner,
+
106 const rfk::Field* pFieldB) override;
+
107
+
108 private:
+
110 static inline const std::string sVec2CanonicalTypeName1 = "glm::vec<2, float>";
+
111
+
113 static inline const std::string sVec2CanonicalTypeName2 = "glm::vec<2, float, glm::packed_highp>";
+
114
+
116 static inline const std::string sVec3CanonicalTypeName1 = "glm::vec<3, float>";
+
117
+
119 static inline const std::string sVec3CanonicalTypeName2 = "glm::vec<3, float, glm::packed_highp>";
+
120
+
122 static inline const std::string sVec4CanonicalTypeName1 = "glm::vec<4, float>";
+
123
+
125 static inline const std::string sVec4CanonicalTypeName2 = "glm::vec<4, float, glm::packed_highp>";
+
126
+
128 static inline const float floatEpsilon = 0.00001f;
+
129 };
+
130} // namespace ne
+
Definition: GlmVecFieldSerializer.h:10
+
virtual bool isFieldTypeSupported(const rfk::Field *pField) override
Definition: GlmVecFieldSerializer.cpp:10
+
static const std::string sVec4CanonicalTypeName1
Definition: GlmVecFieldSerializer.h:122
+
static const std::string sVec3CanonicalTypeName2
Definition: GlmVecFieldSerializer.h:119
+
static const std::string sVec2CanonicalTypeName1
Definition: GlmVecFieldSerializer.h:110
+
virtual bool isFieldValueEqual(Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB) override
Definition: GlmVecFieldSerializer.cpp:259
+
static const std::string sVec4CanonicalTypeName2
Definition: GlmVecFieldSerializer.h:125
+
virtual std::optional< Error > deserializeField(const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes) override
Definition: GlmVecFieldSerializer.cpp:67
+
virtual std::optional< Error > cloneField(Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField) override
Definition: GlmVecFieldSerializer.cpp:216
+
static const std::string sVec3CanonicalTypeName1
Definition: GlmVecFieldSerializer.h:116
+
static const float floatEpsilon
Definition: GlmVecFieldSerializer.h:128
+
virtual std::optional< Error > serializeField(toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr) override
Definition: GlmVecFieldSerializer.cpp:29
+
static const std::string sVec2CanonicalTypeName2
Definition: GlmVecFieldSerializer.h:113
+
Definition: IFieldSerializer.hpp:33
+
Definition: Serializable.h:113
+
+
+ + + + diff --git a/GlobalShaderResourceBindingManager_8h_source.html b/GlobalShaderResourceBindingManager_8h_source.html new file mode 100644 index 000000000..c359f5b5a --- /dev/null +++ b/GlobalShaderResourceBindingManager_8h_source.html @@ -0,0 +1,178 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/resource/binding/global/GlobalShaderResourceBindingManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GlobalShaderResourceBindingManager.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <mutex>
+
5#include <optional>
+
6#include <unordered_set>
+
7
+
8// Custom.
+
9#include "render/general/resource/frame/FrameResourceManager.h"
+
10#include "misc/Error.h"
+
11
+
12namespace ne {
+
13 class GpuResource;
+
14 class Pipeline;
+
15 class GlobalShaderResourceBinding;
+
16
+ +
22 // Only renderer should create this manager.
+
23 friend class Renderer;
+
24
+
25 // Pipeline manager will notify this object about pipelines being re-created.
+
26 friend class PipelineManager;
+
27
+
28 // Bindings will notify the manager upon construction and destruction.
+
29 friend class GlobalShaderResourceBinding;
+
30
+
31 public:
+ +
33
+
53 [[nodiscard]] std::optional<Error> createGlobalShaderResourceBindingResourcePerFrame(
+
54 const std::string& sShaderResourceName,
+
55 std::array<GpuResource*, FrameResourceManager::getFrameResourceCount()> vResourcesToBind);
+
56
+
73 [[nodiscard]] std::optional<Error> createGlobalShaderResourceBindingSingleResource(
+
74 const std::string& sShaderResourceName, GpuResource* pResourceToBind);
+
75
+ +
78
+
79 private:
+ +
86
+
95 [[nodiscard]] std::optional<Error> onNewGraphicsPipelineCreated(Pipeline* pNewPipeline);
+
96
+
103 [[nodiscard]] std::optional<Error> onAllGraphicsPipelinesRecreatedInternalResources();
+
104
+
114 [[nodiscard]] std::optional<Error> registerNewBinding(GlobalShaderResourceBinding* pBinding);
+
115
+ +
124
+
131 std::pair<std::recursive_mutex, std::unordered_set<GlobalShaderResourceBinding*>> mtxActiveBindings;
+
132
+ +
135 };
+
136}
+
static constexpr unsigned int getFrameResourceCount()
Definition: FrameResourceManager.h:74
+
Definition: GlobalShaderResourceBindingManager.h:21
+
std::pair< std::recursive_mutex, std::unordered_set< GlobalShaderResourceBinding * > > mtxActiveBindings
Definition: GlobalShaderResourceBindingManager.h:131
+
~GlobalShaderResourceBindingManager()
Definition: GlobalShaderResourceBindingManager.cpp:75
+
std::optional< Error > createGlobalShaderResourceBindingSingleResource(const std::string &sShaderResourceName, GpuResource *pResourceToBind)
Definition: GlobalShaderResourceBindingManager.cpp:32
+
void unregisterBinding(GlobalShaderResourceBinding *pBinding)
Definition: GlobalShaderResourceBindingManager.cpp:111
+
std::optional< Error > createGlobalShaderResourceBindingResourcePerFrame(const std::string &sShaderResourceName, std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> vResourcesToBind)
Definition: GlobalShaderResourceBindingManager.cpp:14
+
std::optional< Error > onAllGraphicsPipelinesRecreatedInternalResources()
Definition: GlobalShaderResourceBindingManager.cpp:59
+
std::optional< Error > registerNewBinding(GlobalShaderResourceBinding *pBinding)
Definition: GlobalShaderResourceBindingManager.cpp:90
+
std::optional< Error > onNewGraphicsPipelineCreated(Pipeline *pNewPipeline)
Definition: GlobalShaderResourceBindingManager.cpp:42
+
PipelineManager *const pPipelineManager
Definition: GlobalShaderResourceBindingManager.h:134
+
Definition: GlobalShaderResourceBinding.h:27
+
Definition: GpuResource.h:16
+
Definition: PipelineManager.h:98
+
Definition: Pipeline.h:20
+
Definition: Renderer.h:44
+
+
+ + + + diff --git a/GlobalShaderResourceBinding_8h_source.html b/GlobalShaderResourceBinding_8h_source.html new file mode 100644 index 000000000..eb4d85dc1 --- /dev/null +++ b/GlobalShaderResourceBinding_8h_source.html @@ -0,0 +1,183 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/resource/binding/global/GlobalShaderResourceBinding.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GlobalShaderResourceBinding.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <variant>
+
5#include <memory>
+
6#include <optional>
+
7#include <array>
+
8
+
9// Custom.
+
10#include "render/general/resource/frame/FrameResourceManager.h"
+
11#include "misc/Error.h"
+
12
+
13namespace ne {
+
14 class Pipeline;
+
15 class Renderer;
+
16 class GpuResource;
+
17 class GlobalShaderResourceBindingManager;
+
18
+ +
28 // Only manager is allowed to create such objects.
+ +
30
+
31 public:
+ +
33
+ + +
36
+ + +
39
+
40 virtual ~GlobalShaderResourceBinding() = default;
+
41
+
42 protected:
+
58 [[nodiscard]] static std::optional<Error> create(
+
59 Renderer* pRenderer,
+ +
61 const std::string& sShaderResourceName,
+
62 const std::array<GpuResource*, FrameResourceManager::getFrameResourceCount()>& vResourcesToBind);
+
63
+ + +
78 const std::string& sShaderResourceName,
+
79 const std::array<GpuResource*, FrameResourceManager::getFrameResourceCount()>& vResourcesToBind);
+
80
+
89 [[nodiscard]] virtual std::optional<Error> bindToPipelines(Pipeline* pSpecificPipeline) = 0;
+
90
+
92 void unregisterBinding();
+
93
+
99 const std::string& getShaderResourceName() const;
+
100
+ +
107
+
108 private:
+
110 const std::string sShaderResourceName;
+
111
+ +
119
+ +
122 };
+
123}
+
static constexpr unsigned int getFrameResourceCount()
Definition: FrameResourceManager.h:74
+
Definition: GlobalShaderResourceBindingManager.h:21
+
Definition: GlobalShaderResourceBinding.h:27
+
const std::string & getShaderResourceName() const
Definition: GlobalShaderResourceBinding.cpp:22
+
GlobalShaderResourceBindingManager *const pManager
Definition: GlobalShaderResourceBinding.h:121
+
const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> vBindedResources
Definition: GlobalShaderResourceBinding.h:118
+
const std::string sShaderResourceName
Definition: GlobalShaderResourceBinding.h:110
+
static std::optional< Error > create(Renderer *pRenderer, GlobalShaderResourceBindingManager *pManager, const std::string &sShaderResourceName, const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> &vResourcesToBind)
Definition: GlobalShaderResourceBinding.cpp:31
+
void unregisterBinding()
Definition: GlobalShaderResourceBinding.cpp:20
+
std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> getBindedResources() const
Definition: GlobalShaderResourceBinding.cpp:27
+
virtual std::optional< Error > bindToPipelines(Pipeline *pSpecificPipeline)=0
+
Definition: GpuResource.h:16
+
Definition: Pipeline.h:20
+
Definition: Renderer.h:44
+
+
+ + + + diff --git a/Globals_8h_source.html b/Globals_8h_source.html new file mode 100644 index 000000000..f0904d71c --- /dev/null +++ b/Globals_8h_source.html @@ -0,0 +1,170 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/misc/Globals.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Globals.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <filesystem>
+
5#include <string>
+
6
+
7// Custom.
+
8#include "math/GLMath.hpp"
+
9
+
10namespace ne {
+
12 class Globals {
+
13 Globals() = delete;
+
14
+
15 public:
+ +
19 static inline const glm::vec3 up = glm::vec3(0.0F, 0.0F, 1.0F); // NOLINT: short name
+
20
+
22 static inline const glm::vec3 right = glm::vec3(0.0F, 1.0F, 0.0F);
+
23
+
25 static inline const glm::vec3 forward = glm::vec3(1.0F, 0.0F, 0.0F);
+
26 };
+
27
+
33 static constexpr size_t getDefaultWorldSize() { return iDefaultWorldSize; }
+
34
+
40 static std::string getApplicationName();
+
41
+
47 static std::string getResourcesDirectoryName();
+
48
+
54 static std::string getEngineDirectoryName();
+
55
+
63 static std::string wstringToString(const std::wstring& sText);
+
64
+
72 static std::wstring stringToWstring(const std::string& sText);
+
73
+
80 static std::string getDebugOnlyLoggingPrefix();
+
81
+
82 private:
+
84 static constexpr auto sBaseEngineDirectoryName = "nameless-engine";
+
85
+
87 static constexpr auto sDebugOnlyLoggingPrefix = "Debug mode only";
+
88
+
90 static constexpr auto sResDirectoryName = "res";
+
91
+
93 static constexpr size_t iDefaultWorldSize = 128; // NOLINT: start small and increase when needed
+
94 };
+
95} // namespace ne
+
Definition: Globals.h:12
+
static std::string getResourcesDirectoryName()
Definition: Globals.cpp:101
+
static std::string getDebugOnlyLoggingPrefix()
Definition: Globals.cpp:99
+
static constexpr size_t getDefaultWorldSize()
Definition: Globals.h:33
+
static std::string wstringToString(const std::wstring &sText)
Definition: Globals.cpp:55
+
static constexpr auto sResDirectoryName
Definition: Globals.h:90
+
static std::string getApplicationName()
Definition: Globals.cpp:21
+
static constexpr auto sDebugOnlyLoggingPrefix
Definition: Globals.h:87
+
static std::wstring stringToWstring(const std::string &sText)
Definition: Globals.cpp:82
+
static constexpr size_t iDefaultWorldSize
Definition: Globals.h:93
+
static constexpr auto sBaseEngineDirectoryName
Definition: Globals.h:84
+
static std::string getEngineDirectoryName()
Definition: Globals.cpp:103
+
Definition: Globals.h:17
+
static const glm::vec3 up
Definition: Globals.h:19
+
static const glm::vec3 forward
Definition: Globals.h:25
+
static const glm::vec3 right
Definition: Globals.h:22
+
+
+ + + + diff --git a/GlslComputeShaderInterface_8h_source.html b/GlslComputeShaderInterface_8h_source.html new file mode 100644 index 000000000..730ce1312 --- /dev/null +++ b/GlslComputeShaderInterface_8h_source.html @@ -0,0 +1,161 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/glsl/GlslComputeShaderInterface.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GlslComputeShaderInterface.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "shader/ComputeShaderInterface.h"
+
5
+
6// External.
+
7#include "vulkan/vulkan.h"
+
8
+
9namespace ne {
+ +
12 // Only parent class can create instances of this class because there are some specific things
+
13 // we need to do when creating objects of this class and parent class handles these things.
+
14 friend class ComputeShaderInterface;
+
15
+
16 public:
+ +
18 virtual ~GlslComputeShaderInterface() override = default;
+
19
+ + +
22
+
42 [[nodiscard]] virtual std::optional<Error> bindResource(
+
43 GpuResource* pResource,
+
44 const std::string& sShaderResourceName,
+
45 ComputeResourceUsage usage,
+
46 bool bUpdateOnlyCurrentFrameResourceDescriptors = false) override;
+
47
+
55 inline void dispatchOnGraphicsQueue(VkCommandBuffer pCommandBuffer) {
+
56 vkCmdDispatch(
+ +
58 }
+
59
+
60 protected:
+ + +
72 const std::string& sComputeShaderName,
+
73 ComputeExecutionStage executionStage,
+
74 ComputeExecutionGroup executionGroup);
+
75 };
+
76}
+
Definition: ComputeShaderInterface.h:46
+
unsigned int getThreadGroupCountX() const
Definition: ComputeShaderInterface.h:223
+
Renderer * pRenderer
Definition: ComputeShaderInterface.h:241
+
unsigned int getThreadGroupCountY() const
Definition: ComputeShaderInterface.h:230
+
const ComputeExecutionGroup executionGroup
Definition: ComputeShaderInterface.h:259
+
const ComputeExecutionStage executionStage
Definition: ComputeShaderInterface.h:256
+
unsigned int getThreadGroupCountZ() const
Definition: ComputeShaderInterface.h:237
+
const std::string sComputeShaderName
Definition: ComputeShaderInterface.h:262
+
Definition: GlslComputeShaderInterface.h:11
+
void dispatchOnGraphicsQueue(VkCommandBuffer pCommandBuffer)
Definition: GlslComputeShaderInterface.h:55
+
virtual std::optional< Error > bindResource(GpuResource *pResource, const std::string &sShaderResourceName, ComputeResourceUsage usage, bool bUpdateOnlyCurrentFrameResourceDescriptors=false) override
Definition: GlslComputeShaderInterface.cpp:16
+
Definition: GpuResource.h:16
+
Definition: Renderer.h:44
+
+
+ + + + diff --git a/GlslGlobalShaderResourceBinding_8h_source.html b/GlslGlobalShaderResourceBinding_8h_source.html new file mode 100644 index 000000000..bfa9ece32 --- /dev/null +++ b/GlslGlobalShaderResourceBinding_8h_source.html @@ -0,0 +1,149 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/glsl/resource/binding/global/GlslGlobalShaderResourceBinding.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GlslGlobalShaderResourceBinding.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <optional>
+
5
+
6// Custom.
+
7#include "shader/general/resource/binding/global/GlobalShaderResourceBinding.h"
+
8
+
9// External.
+
10#include "vulkan/vulkan_core.h"
+
11
+
12namespace ne {
+
13 class GpuResource;
+
14
+ +
20 // Only base class is allowed to create such objects.
+
21 friend class GlobalShaderResourceBinding;
+
22
+
23 public:
+ +
25
+
26 virtual ~GlslGlobalShaderResourceBinding() override;
+
27
+
28 protected:
+ + +
41 const std::string& sShaderResourceName,
+
42 const std::array<GpuResource*, FrameResourceManager::getFrameResourceCount()>& vResourcesToBind);
+
43
+
52 [[nodiscard]] virtual std::optional<Error> bindToPipelines(Pipeline* pSpecificPipeline) override;
+
53 };
+
54}
+
static constexpr unsigned int getFrameResourceCount()
Definition: FrameResourceManager.h:74
+
Definition: GlobalShaderResourceBindingManager.h:21
+
Definition: GlobalShaderResourceBinding.h:27
+
GlobalShaderResourceBindingManager *const pManager
Definition: GlobalShaderResourceBinding.h:121
+
const std::string sShaderResourceName
Definition: GlobalShaderResourceBinding.h:110
+
Definition: GlslGlobalShaderResourceBinding.h:19
+
virtual std::optional< Error > bindToPipelines(Pipeline *pSpecificPipeline) override
Definition: GlslGlobalShaderResourceBinding.cpp:21
+
Definition: GpuResource.h:16
+
Definition: Pipeline.h:20
+
+
+ + + + diff --git a/GlslShaderCacheManager_8h_source.html b/GlslShaderCacheManager_8h_source.html new file mode 100644 index 000000000..e3ae37a48 --- /dev/null +++ b/GlslShaderCacheManager_8h_source.html @@ -0,0 +1,144 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/glsl/cache/GlslShaderCacheManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GlslShaderCacheManager.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "shader/general/cache/ShaderCacheManager.h"
+
5
+
6namespace ne {
+
7 class Renderer;
+
8
+ +
11 // Only shader manager is expected to create this manager.
+
12 friend class ShaderCacheManager;
+
13
+
14 public:
+
15 virtual ~GlslShaderCacheManager() override = default;
+
16
+ +
18 GlslShaderCacheManager& operator=(const GlslShaderCacheManager&) = delete;
+
19
+
20 protected:
+
31 [[nodiscard]] virtual std::optional<std::string>
+
32 isLanguageSpecificGlobalCacheOutdated(const ConfigManager& cacheConfig) override;
+
33
+
41 [[nodiscard]] virtual std::optional<Error>
+ +
43
+
44 private:
+ +
51 };
+
52}
+
Definition: ConfigManager.h:27
+
Definition: GlslShaderCacheManager.h:10
+
virtual std::optional< Error > writeLanguageSpecificParameters(ConfigManager &cacheConfig) override
Definition: GlslShaderCacheManager.cpp:12
+
virtual std::optional< std::string > isLanguageSpecificGlobalCacheOutdated(const ConfigManager &cacheConfig) override
Definition: GlslShaderCacheManager.cpp:8
+
Definition: Renderer.h:44
+
Definition: ShaderCacheManager.h:16
+
Renderer *const pRenderer
Definition: ShaderCacheManager.h:113
+
+
+ + + + diff --git a/GlslShaderTextureResourceBinding_8h_source.html b/GlslShaderTextureResourceBinding_8h_source.html new file mode 100644 index 000000000..cd53445ac --- /dev/null +++ b/GlslShaderTextureResourceBinding_8h_source.html @@ -0,0 +1,241 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/glsl/resource/binding/texture/GlslShaderTextureResourceBinding.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GlslShaderTextureResourceBinding.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <string>
+
5#include <memory>
+
6#include <variant>
+
7#include <unordered_set>
+
8
+
9// Custom.
+
10#include "shader/general/resource/binding/ShaderResourceBinding.h"
+
11#include "render/general/pipeline/PipelineShaderConstantsManager.hpp"
+
12#include "shader/general/resource/ShaderArrayIndexManager.h"
+
13
+
14// External.
+
15#include "vulkan/vulkan.h"
+
16
+
17namespace ne {
+
18 class TextureHandle;
+
19 class Pipeline;
+
20 class VulkanPipeline;
+
21
+ +
24 // Only the manager should be able to create such resources.
+ +
26
+ + +
31
+ +
39 size_t iPushConstantIndex, std::unique_ptr<ShaderArrayIndex> pShaderArrayIndex) {
+
40 this->iPushConstantIndex = iPushConstantIndex;
+
41 this->pShaderArrayIndex = std::move(pShaderArrayIndex);
+
42 }
+
43
+ +
46
+ +
53
+ +
56
+
58 std::unique_ptr<ShaderArrayIndex> pShaderArrayIndex;
+
59 };
+
60
+
61 public:
+
62 virtual ~GlslShaderTextureResourceBinding() override = default;
+
63
+
69 std::string getPathToTextureResource();
+
70
+ +
78 PipelineShaderConstantsManager* pPushConstantsManager, VulkanPipeline* pUsedPipeline) {
+
79 // Since pipelines won't change here (because we are inside of the `draw` function)
+
80 // we don't need to lock the mutex here.
+
81
+
82 // Find push constant index of this pipeline.
+
83 const auto it = mtxPushConstantIndices.second.find(pUsedPipeline);
+
84 if (it == mtxPushConstantIndices.second.end()) [[unlikely]] {
+
85 Error error(std::format(
+
86 "shader resource \"{}\" was requested to set its push constant "
+
87 "index but this shader resource does not reference the specified pipeline",
+ +
89 mtxPushConstantIndices.second.size()));
+
90 error.showError();
+
91 throw std::runtime_error(error.getFullErrorMessage());
+
92 }
+
93
+
94 // Copy value to push constants.
+
95 pPushConstantsManager->copyValueToShaderConstant(
+
96 it->second.iPushConstantIndex, it->second.pShaderArrayIndex->getActualIndex());
+
97 }
+
98
+
110 [[nodiscard]] virtual std::optional<Error>
+
111 useNewTexture(std::unique_ptr<TextureHandle> pTextureToUse) override;
+
112
+
129 [[nodiscard]] virtual std::optional<Error>
+
130 changeUsedPipelines(const std::unordered_set<Pipeline*>& pipelinesToUse) override;
+
131
+
132 protected:
+ +
145 const std::string& sResourceName,
+
146 std::unique_ptr<TextureHandle> pTextureToUse,
+
147 std::unordered_map<VulkanPipeline*, PushConstantIndices> pushConstantIndices);
+
148
+
158 [[nodiscard]] virtual std::optional<Error> onAfterAllPipelinesRefreshedResources() override;
+
159
+
160 private:
+
171 static std::variant<std::unique_ptr<ShaderTextureResourceBinding>, Error> create(
+
172 const std::string& sShaderResourceName,
+
173 const std::unordered_set<Pipeline*>& pipelinesToUse,
+
174 std::unique_ptr<TextureHandle> pTextureToUse);
+
175
+
185 static std::variant<std::unique_ptr<ShaderArrayIndex>, Error> getTextureIndexInShaderArray(
+
186 const std::string& sShaderResourceName, VulkanPipeline* pPipelineToLookIn);
+
187
+
199 static std::optional<Error> bindTextureToShaderDescriptorArray(
+
200 const std::string& sShaderResourceName,
+
201 VulkanPipeline* pPipelineWithDescriptors,
+
202 VkImageView pTextureView,
+
203 unsigned int iIndexIntoShaderArray);
+
204
+
206 std::pair<std::mutex, std::unique_ptr<TextureHandle>> mtxUsedTexture;
+
207
+
209 std::pair<std::recursive_mutex, std::unordered_map<VulkanPipeline*, PushConstantIndices>>
+ +
211 };
+
212} // namespace ne
+
Definition: Error.h:27
+
std::string getFullErrorMessage() const
Definition: Error.cpp:84
+
void showError() const
Definition: Error.cpp:102
+
Definition: GlslShaderTextureResourceBinding.h:23
+
std::string getPathToTextureResource()
Definition: GlslShaderTextureResourceBinding.cpp:235
+
void copyResourceIndexToPushConstants(PipelineShaderConstantsManager *pPushConstantsManager, VulkanPipeline *pUsedPipeline)
Definition: GlslShaderTextureResourceBinding.h:77
+
static std::variant< std::unique_ptr< ShaderTextureResourceBinding >, Error > create(const std::string &sShaderResourceName, const std::unordered_set< Pipeline * > &pipelinesToUse, std::unique_ptr< TextureHandle > pTextureToUse)
Definition: GlslShaderTextureResourceBinding.cpp:16
+
virtual std::optional< Error > changeUsedPipelines(const std::unordered_set< Pipeline * > &pipelinesToUse) override
Definition: GlslShaderTextureResourceBinding.cpp:274
+
std::pair< std::recursive_mutex, std::unordered_map< VulkanPipeline *, PushConstantIndices > > mtxPushConstantIndices
Definition: GlslShaderTextureResourceBinding.h:210
+
virtual std::optional< Error > onAfterAllPipelinesRefreshedResources() override
Definition: GlslShaderTextureResourceBinding.cpp:189
+
std::pair< std::mutex, std::unique_ptr< TextureHandle > > mtxUsedTexture
Definition: GlslShaderTextureResourceBinding.h:206
+
static std::optional< Error > bindTextureToShaderDescriptorArray(const std::string &sShaderResourceName, VulkanPipeline *pPipelineWithDescriptors, VkImageView pTextureView, unsigned int iIndexIntoShaderArray)
Definition: GlslShaderTextureResourceBinding.cpp:125
+
virtual std::optional< Error > useNewTexture(std::unique_ptr< TextureHandle > pTextureToUse) override
Definition: GlslShaderTextureResourceBinding.cpp:242
+
static std::variant< std::unique_ptr< ShaderArrayIndex >, Error > getTextureIndexInShaderArray(const std::string &sShaderResourceName, VulkanPipeline *pPipelineToLookIn)
Definition: GlslShaderTextureResourceBinding.cpp:96
+
Definition: PipelineShaderConstantsManager.hpp:14
+
void copyValueToShaderConstant(size_t iShaderConstantIndex, unsigned int iValueToCopy)
Definition: PipelineShaderConstantsManager.hpp:75
+
std::string getShaderResourceName() const
Definition: ShaderResourceBinding.cpp:11
+
const std::string sShaderResourceName
Definition: ShaderResourceBinding.h:82
+
Definition: ShaderTextureResourceBindingManager.h:27
+
Definition: ShaderResourceBinding.h:86
+
Definition: VulkanPipeline.h:21
+
Definition: GlslShaderTextureResourceBinding.h:28
+
size_t iPushConstantIndex
Definition: GlslShaderTextureResourceBinding.h:55
+ +
PushConstantIndices & operator=(PushConstantIndices &&)=default
+ +
std::unique_ptr< ShaderArrayIndex > pShaderArrayIndex
Definition: GlslShaderTextureResourceBinding.h:58
+
PushConstantIndices(size_t iPushConstantIndex, std::unique_ptr< ShaderArrayIndex > pShaderArrayIndex)
Definition: GlslShaderTextureResourceBinding.h:38
+
+
+ + + + diff --git a/GlslShader_8h_source.html b/GlslShader_8h_source.html new file mode 100644 index 000000000..105e844a5 --- /dev/null +++ b/GlslShader_8h_source.html @@ -0,0 +1,200 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/glsl/GlslShader.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GlslShader.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <mutex>
+
5#include <optional>
+
6#include <unordered_map>
+
7
+
8// Custom.
+
9#include "shader/general/Shader.h"
+
10#include "shader/glsl/DescriptorSetLayoutGenerator.h"
+
11
+
12// External.
+
13#include "shaderc/shaderc.hpp"
+
14#include "vulkan/vulkan.h"
+
15
+
16namespace ne {
+
17 class Renderer;
+
18
+
20 class GlslShader : public Shader {
+
21 public:
+ + +
34 std::filesystem::path pathToCompiledShader,
+
35 const std::string& sShaderName,
+
36 ShaderType shaderType,
+
37 const std::optional<VertexFormat>& vertexFormat);
+
38
+
39 GlslShader() = delete;
+
40 GlslShader(const GlslShader&) = delete;
+
41 GlslShader& operator=(const GlslShader&) = delete;
+
42
+
43 virtual ~GlslShader() override = default;
+
44
+
54 static std::variant<std::vector<uint32_t>, std::string, Error>
+
55 compileShaderToBytecode(const ShaderDescription& shaderDescription);
+
56
+
70 static std::variant<std::shared_ptr<Shader>, std::string, Error> compileShader(
+ +
72 const std::filesystem::path& cacheDirectory,
+
73 const std::string& sConfiguration,
+
74 const ShaderDescription& shaderDescription);
+
75
+
86 std::variant<std::pair<std::recursive_mutex, std::vector<char>>*, Error> getCompiledBytecode();
+
87
+
94 std::pair<std::mutex, std::optional<DescriptorSetLayoutGenerator::Collected>>*
+ +
96
+
104 virtual bool releaseShaderDataFromMemoryIfLoaded() override;
+
105
+
106 protected:
+
117 [[nodiscard]] virtual std::optional<Error>
+
118 saveAdditionalCompilationResultsInfo(ConfigManager& cacheMetadataConfigManager) override;
+
119
+
131 [[nodiscard]] virtual std::optional<Error> checkCachedAdditionalCompilationResultsInfo(
+
132 ConfigManager& cacheMetadataConfigManager,
+
133 std::optional<ShaderCacheInvalidationReason>& cacheInvalidationReason) override;
+
134
+
135 private:
+
143 static shaderc_shader_kind convertShaderTypeToShadercShaderKind(ShaderType shaderType);
+
144
+
151 [[nodiscard]] std::optional<Error> loadShaderDataFromDiskIfNotLoaded();
+
152
+
154 std::pair<std::recursive_mutex, std::vector<char>> mtxSpirvBytecode;
+
155
+
162 std::pair<std::mutex, std::optional<DescriptorSetLayoutGenerator::Collected>>
+ +
164
+
166 static inline const auto sDescriptorSetLayoutSectionName = "Descriptor Set Layout";
+
167 };
+
168} // namespace ne
+
Definition: ConfigManager.h:27
+
Definition: Error.h:27
+
Definition: GlslShader.h:20
+
std::variant< std::pair< std::recursive_mutex, std::vector< char > > *, Error > getCompiledBytecode()
Definition: GlslShader.cpp:217
+
std::pair< std::mutex, std::optional< DescriptorSetLayoutGenerator::Collected > > * getDescriptorSetLayoutInfo()
Definition: GlslShader.cpp:230
+
static std::variant< std::shared_ptr< Shader >, std::string, Error > compileShader(Renderer *pRenderer, const std::filesystem::path &cacheDirectory, const std::string &sConfiguration, const ShaderDescription &shaderDescription)
Definition: GlslShader.cpp:58
+
static shaderc_shader_kind convertShaderTypeToShadercShaderKind(ShaderType shaderType)
Definition: GlslShader.cpp:234
+
std::pair< std::mutex, std::optional< DescriptorSetLayoutGenerator::Collected > > mtxDescriptorSetLayoutInfo
Definition: GlslShader.h:163
+
std::pair< std::recursive_mutex, std::vector< char > > mtxSpirvBytecode
Definition: GlslShader.h:154
+
virtual std::optional< Error > saveAdditionalCompilationResultsInfo(ConfigManager &cacheMetadataConfigManager) override
Definition: GlslShader.cpp:206
+
virtual std::optional< Error > checkCachedAdditionalCompilationResultsInfo(ConfigManager &cacheMetadataConfigManager, std::optional< ShaderCacheInvalidationReason > &cacheInvalidationReason) override
Definition: GlslShader.cpp:210
+
virtual bool releaseShaderDataFromMemoryIfLoaded() override
Definition: GlslShader.cpp:184
+
std::optional< Error > loadShaderDataFromDiskIfNotLoaded()
Definition: GlslShader.cpp:255
+
static std::variant< std::vector< uint32_t >, std::string, Error > compileShaderToBytecode(const ShaderDescription &shaderDescription)
+
static const auto sDescriptorSetLayoutSectionName
Definition: GlslShader.h:166
+
Definition: Renderer.h:44
+
Definition: Shader.h:23
+
const ShaderType shaderType
Definition: Shader.h:254
+
const std::filesystem::path pathToCompiledShader
Definition: Shader.h:257
+
const std::string sShaderName
Definition: Shader.h:251
+
Renderer *const pRenderer
Definition: Shader.h:241
+
Definition: ShaderDescription.h:74
+
+
+ + + + diff --git a/GlslVertexFormatDescription_8h_source.html b/GlslVertexFormatDescription_8h_source.html new file mode 100644 index 000000000..d1c30f8bd --- /dev/null +++ b/GlslVertexFormatDescription_8h_source.html @@ -0,0 +1,149 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/glsl/format/GlslVertexFormatDescription.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GlslVertexFormatDescription.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <vector>
+
5#include <string>
+
6
+
7// Custom.
+
8#include "shader/general/format/VertexFormat.h"
+
9
+
10// External.
+
11#include "vulkan/vulkan.h"
+
12
+
13namespace ne {
+ +
16 public:
+ +
18 virtual ~GlslVertexFormatDescription() override = default;
+
19
+
27 static std::unique_ptr<GlslVertexFormatDescription> createDescription(VertexFormat type);
+
28
+
34 virtual std::vector<std::string> getVertexLayoutBindingIndexMacros() = 0;
+
35
+
41 virtual VkVertexInputBindingDescription getVertexBindingDescription() = 0;
+
42
+
48 virtual std::vector<VkVertexInputAttributeDescription> getVertexAttributeDescriptions() = 0;
+
49
+
50 protected:
+
56 static constexpr uint32_t getVertexBindingIndex() { return iVertexBindingIndex; }
+
57
+
58 private:
+
60 static constexpr uint32_t iVertexBindingIndex = 0;
+
61 };
+
62}
+
Definition: GlslVertexFormatDescription.h:15
+
static constexpr uint32_t iVertexBindingIndex
Definition: GlslVertexFormatDescription.h:60
+
static std::unique_ptr< GlslVertexFormatDescription > createDescription(VertexFormat type)
Definition: GlslVertexFormatDescription.cpp:13
+
static constexpr uint32_t getVertexBindingIndex()
Definition: GlslVertexFormatDescription.h:56
+
virtual std::vector< std::string > getVertexLayoutBindingIndexMacros()=0
+
virtual VkVertexInputBindingDescription getVertexBindingDescription()=0
+
virtual std::vector< VkVertexInputAttributeDescription > getVertexAttributeDescriptions()=0
+
Definition: VertexFormat.h:15
+
+
+ + + + diff --git a/GpuResourceManager_8h_source.html b/GpuResourceManager_8h_source.html new file mode 100644 index 000000000..a2ae5f578 --- /dev/null +++ b/GpuResourceManager_8h_source.html @@ -0,0 +1,262 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/general/resource/GpuResourceManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GpuResourceManager.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <variant>
+
5#include <memory>
+
6#include <filesystem>
+
7#include <optional>
+
8#include <atomic>
+
9
+
10// Custom.
+
11#include "misc/Error.h"
+
12#include "render/general/resource/UploadBuffer.h"
+
13#include "material/TextureManager.h"
+
14#include "render/general/resource/shadow/ShadowMapManager.h"
+
15
+
16namespace ne {
+
17 class Renderer;
+
18 class GpuResource;
+
19 class DynamicCpuWriteShaderResourceArrayManager;
+
20
+
22 enum class ResourceUsageType {
+
23 VERTEX_BUFFER,
+
24 INDEX_BUFFER,
+
25 ARRAY_BUFFER,
+
26 OTHER
+
27 };
+
28
+
30 enum class ShaderReadWriteTextureResourceFormat {
+
31 R32G32_UINT,
+
32 // ONLY THE FOLLOWING FORMATS CAN BE ADDED HERE:
+
33 // 1. Formats that are supported as Vulkan storage images on most of the GPUs. Please, make sure you
+
34 // don't add new formats without checking Vulkan Hardware Database (take Intel(R) UHD
+
35 // Graphics 600 on Linux (!) for example, if it supports the format as storage image then it's
+
36 // OK to add it here).
+
37 // 2. Formats that have the same type in both Vulkan and DirectX.
+
38
+
39 SIZE, //< marks the size of this enum
+
40 };
+
41
+ +
44 // Only renderer should be allowed to create resource manager.
+
45 friend class Renderer;
+
46
+
47 // Creates shadow maps.
+
48 friend class ShadowMapManager;
+
49
+
50 // Modifies counter of alive GPU resources.
+
51 friend class GpuResource;
+
52
+
53 public:
+
54 GpuResourceManager() = delete;
+
55
+
56 virtual ~GpuResourceManager() = default;
+
57
+
63 virtual size_t getTotalVideoMemoryInMb() const = 0;
+
64
+
70 virtual size_t getUsedVideoMemoryInMb() const = 0;
+
71
+
80 virtual std::variant<std::unique_ptr<GpuResource>, Error> loadTextureFromDisk(
+
81 const std::string& sResourceName, const std::filesystem::path& pathToTextureFile) = 0;
+
82
+
111 virtual std::variant<std::unique_ptr<UploadBuffer>, Error> createResourceWithCpuWriteAccess(
+
112 const std::string& sResourceName,
+
113 size_t iElementSizeInBytes,
+
114 size_t iElementCount,
+
115 std::optional<bool> isUsedInShadersAsArrayResource) = 0;
+
116
+
142 virtual std::variant<std::unique_ptr<GpuResource>, Error> createResourceWithData(
+
143 const std::string& sResourceName,
+
144 const void* pBufferData,
+
145 size_t iElementSizeInBytes,
+
146 size_t iElementCount,
+
147 ResourceUsageType usage,
+
148 bool bIsShaderReadWriteResource) = 0;
+
149
+
165 virtual std::variant<std::unique_ptr<GpuResource>, Error> createResource(
+
166 const std::string& sResourceName,
+
167 size_t iElementSizeInBytes,
+
168 size_t iElementCount,
+
169 ResourceUsageType usage,
+
170 bool bIsShaderReadWriteResource) = 0;
+
171
+
182 virtual std::variant<std::unique_ptr<GpuResource>, Error> createShaderReadWriteTextureResource(
+
183 const std::string& sResourceName,
+
184 unsigned int iWidth,
+
185 unsigned int iHeight,
+
186 ShaderReadWriteTextureResourceFormat format) = 0;
+
187
+
193 virtual std::string getCurrentStateInfo() = 0;
+
194
+
202 Renderer* getRenderer() const;
+
203
+ +
212
+ +
221
+ +
230
+ +
237
+
238 protected:
+
246 static std::variant<std::unique_ptr<GpuResourceManager>, Error> create(Renderer* pRenderer);
+
247
+
257 static std::variant<std::unique_ptr<GpuResourceManager>, Error>
+ +
259
+
271 virtual std::variant<std::unique_ptr<GpuResource>, Error> createShadowMapTexture(
+
272 const std::string& sResourceName, unsigned int iTextureSize, bool bPointLightColorCubemap) = 0;
+
273
+ +
282
+
284 void resetManagers();
+
285
+
286 private:
+
288 std::unique_ptr<TextureManager> pTextureManager;
+
289
+
291 std::unique_ptr<ShadowMapManager> pShadowMapManager;
+
292
+
294 std::unique_ptr<DynamicCpuWriteShaderResourceArrayManager> pDynamicCpuWriteShaderResourceArrayManager;
+
295
+
297 std::atomic<size_t> iAliveResourceCount{0};
+
298
+
300 Renderer* const pRenderer = nullptr;
+
301 };
+
302} // namespace ne
+
Definition: DynamicCpuWriteShaderResourceArrayManager.h:27
+
Definition: Error.h:27
+
Definition: GpuResourceManager.h:43
+
virtual std::variant< std::unique_ptr< GpuResource >, Error > createResourceWithData(const std::string &sResourceName, const void *pBufferData, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource)=0
+
static std::variant< std::unique_ptr< GpuResourceManager >, Error > createRendererSpecificManager(Renderer *pRenderer)
Definition: GpuResourceManager.cpp:27
+
Renderer *const pRenderer
Definition: GpuResourceManager.h:300
+
virtual size_t getUsedVideoMemoryInMb() const =0
+
std::unique_ptr< TextureManager > pTextureManager
Definition: GpuResourceManager.h:288
+
virtual std::variant< std::unique_ptr< UploadBuffer >, Error > createResourceWithCpuWriteAccess(const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, std::optional< bool > isUsedInShadersAsArrayResource)=0
+
Renderer * getRenderer() const
Definition: GpuResourceManager.cpp:13
+
ShadowMapManager * getShadowMapManager() const
Definition: GpuResourceManager.cpp:17
+
TextureManager * getTextureManager() const
Definition: GpuResourceManager.cpp:15
+
virtual size_t getTotalVideoMemoryInMb() const =0
+
std::atomic< size_t > iAliveResourceCount
Definition: GpuResourceManager.h:297
+
std::unique_ptr< DynamicCpuWriteShaderResourceArrayManager > pDynamicCpuWriteShaderResourceArrayManager
Definition: GpuResourceManager.h:294
+
static std::variant< std::unique_ptr< GpuResourceManager >, Error > create(Renderer *pRenderer)
Definition: GpuResourceManager.cpp:57
+
DynamicCpuWriteShaderResourceArrayManager * getDynamicCpuWriteShaderResourceArrayManager() const
Definition: GpuResourceManager.cpp:20
+
virtual std::variant< std::unique_ptr< GpuResource >, Error > createShadowMapTexture(const std::string &sResourceName, unsigned int iTextureSize, bool bPointLightColorCubemap)=0
+
virtual std::variant< std::unique_ptr< GpuResource >, Error > loadTextureFromDisk(const std::string &sResourceName, const std::filesystem::path &pathToTextureFile)=0
+
std::unique_ptr< ShadowMapManager > pShadowMapManager
Definition: GpuResourceManager.h:291
+
size_t getTotalAliveResourceCount()
Definition: GpuResourceManager.cpp:24
+
virtual std::variant< std::unique_ptr< GpuResource >, Error > createShaderReadWriteTextureResource(const std::string &sResourceName, unsigned int iWidth, unsigned int iHeight, ShaderReadWriteTextureResourceFormat format)=0
+
virtual std::string getCurrentStateInfo()=0
+
virtual std::variant< std::unique_ptr< GpuResource >, Error > createResource(const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource)=0
+
void resetManagers()
Definition: GpuResourceManager.cpp:95
+
Definition: GpuResource.h:16
+
Definition: Renderer.h:44
+
Definition: ShadowMapManager.h:29
+
Definition: TextureManager.h:20
+
+
+ + + + diff --git a/GpuResource_8h_source.html b/GpuResource_8h_source.html new file mode 100644 index 000000000..9e49db964 --- /dev/null +++ b/GpuResource_8h_source.html @@ -0,0 +1,172 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/general/resource/GpuResource.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GpuResource.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <optional>
+
5#include <string>
+
6#include <memory>
+
7
+
8// Custom.
+
9#include "misc/Error.h"
+
10
+
11namespace ne {
+
12 class GpuResourceManager;
+
13 class GlobalShaderResourceBinding;
+
14
+ +
17 // Bindings will assign their pointers to resources.
+
18 friend class GlobalShaderResourceBinding;
+
19
+
20 public:
+
21 GpuResource() = delete;
+
22
+ + +
35 const std::string& sResourceName,
+
36 unsigned int iElementSizeInBytes,
+
37 unsigned int iElementCount);
+
38
+
39 virtual ~GpuResource();
+
40
+
41 GpuResource(GpuResource&) = delete;
+
42 GpuResource& operator=(GpuResource&) = delete;
+
43
+
49 std::string getResourceName() const;
+
50
+
59 unsigned int getElementSizeInBytes() const;
+
60
+
69 unsigned int getElementCount() const;
+
70
+ +
77
+
78 private:
+
85 std::shared_ptr<GlobalShaderResourceBinding> pGlobalShaderResourceBinding;
+
86
+
88 GpuResourceManager* const pManager = nullptr;
+
89
+
91 const unsigned int iElementSizeInBytes = 0;
+
92
+
94 const unsigned int iElementCount = 0;
+
95
+
97 const std::string sResourceName;
+
98 };
+
99} // namespace ne
+
Definition: GlobalShaderResourceBinding.h:27
+
Definition: GpuResourceManager.h:43
+
Definition: GpuResource.h:16
+
const std::string sResourceName
Definition: GpuResource.h:97
+
unsigned int getElementSizeInBytes() const
Definition: GpuResource.cpp:32
+
unsigned int getElementCount() const
Definition: GpuResource.cpp:34
+
std::string getResourceName() const
Definition: GpuResource.cpp:30
+
std::shared_ptr< GlobalShaderResourceBinding > pGlobalShaderResourceBinding
Definition: GpuResource.h:85
+
GpuResourceManager *const pManager
Definition: GpuResource.h:88
+
GpuResourceManager * getResourceManager() const
Definition: GpuResource.cpp:36
+
const unsigned int iElementCount
Definition: GpuResource.h:94
+
const unsigned int iElementSizeInBytes
Definition: GpuResource.h:91
+
+
+ + + + diff --git a/GuidProperty_8h_source.html b/GuidProperty_8h_source.html new file mode 100644 index 000000000..9e1c1a8a6 --- /dev/null +++ b/GuidProperty_8h_source.html @@ -0,0 +1,142 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/io/properties/GuidProperty.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GuidProperty.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <string>
+
5#include <string_view>
+
6
+
7// External.
+
8#include "Refureku/Properties/PropertySettings.h"
+
9
+
10#include "GuidProperty.generated.h"
+
11
+
12namespace ne RNAMESPACE() {
+
29 class RCLASS(rfk::PropertySettings(rfk::EEntityKind::Class | rfk::EEntityKind::Struct, false, false)) Guid
+
30 : public rfk::Property {
+
31 public:
+
32 Guid() = default;
+
33 virtual ~Guid() override = default;
+
34
+
40 Guid(const char* pGuid);
+
41
+
47 std::string getGuid() const;
+
48
+
49 private:
+
51 std::string sGuid;
+
52
+
54 static constexpr size_t iGuidLength = 36;
+
55
+
56 ne_Guid_GENERATED
+
57 };
+
58} // namespace ne RNAMESPACE()
+
59
+
60File_GuidProperty_GENERATED
+
Definition: GuidProperty.h:30
+
std::string sGuid
Definition: GuidProperty.h:51
+
+
+ + + + diff --git a/HlslComputeShaderInterface_8h_source.html b/HlslComputeShaderInterface_8h_source.html new file mode 100644 index 000000000..5442af3bf --- /dev/null +++ b/HlslComputeShaderInterface_8h_source.html @@ -0,0 +1,215 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/hlsl/HlslComputeShaderInterface.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HlslComputeShaderInterface.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <unordered_map>
+
5#include <format>
+
6
+
7// Custom.
+
8#include "shader/ComputeShaderInterface.h"
+
9#include "render/directx/resource/DirectXResource.h"
+
10#include "render/directx/descriptors/DirectXDescriptorHeap.h"
+
11
+
12// External.
+
13#include "directx/d3dx12.h"
+
14
+
15namespace ne {
+ +
18 // Only parent class can create instances of this class because there are some specific things
+
19 // we need to do when creating objects of this class and parent class handles these things.
+
20 friend class ComputeShaderInterface;
+
21
+
22 public:
+ +
24 virtual ~HlslComputeShaderInterface() override = default;
+
25
+ + +
28
+
48 [[nodiscard]] virtual std::optional<Error> bindResource(
+
49 GpuResource* pResource,
+
50 const std::string& sShaderResourceName,
+
51 ComputeResourceUsage usage,
+
52 bool bUpdateOnlyCurrentFrameResourceDescriptors = false) override;
+
53
+
61 inline void dispatchOnGraphicsQueue(ID3D12GraphicsCommandList* pCommandList) {
+
62 // Bind CBVs.
+
63 for (const auto& [iRootParameterIndex, pResource] : cbvResources) {
+
64 pCommandList->SetComputeRootConstantBufferView(
+
65 iRootParameterIndex, pResource->getInternalResource()->GetGPUVirtualAddress());
+
66 }
+
67
+
68 // Bind UAVs.
+
69 for (const auto& [iRootParameterIndex, pResource] : uavResources) {
+
70 pCommandList->SetComputeRootUnorderedAccessView(
+
71 iRootParameterIndex, pResource->getInternalResource()->GetGPUVirtualAddress());
+
72 }
+
73
+
74 // Bind SRVs.
+
75 for (const auto& [iRootParameterIndex, pResource] : srvResources) {
+
76 pCommandList->SetComputeRootShaderResourceView(
+
77 iRootParameterIndex, pResource->getInternalResource()->GetGPUVirtualAddress());
+
78 }
+
79
+
80 // Bind table views.
+
81 for (const auto& [iRootParameterIndex, pDescriptor] : tableResources) {
+
82 // Set table.
+
83 pCommandList->SetComputeRootDescriptorTable(
+
84 iRootParameterIndex,
+
85 D3D12_GPU_DESCRIPTOR_HANDLE{
+
86 pCbvSrvUavHeap->getInternalHeap()->GetGPUDescriptorHandleForHeapStart().ptr +
+
87 pDescriptor->getDescriptorOffsetInDescriptors() * iCbvSrvUavDescriptorSize});
+
88 }
+
89
+
90 // Add a dispatch command.
+ +
92 }
+
93
+
94 protected:
+ + +
106 const std::string& sComputeShaderName,
+
107 ComputeExecutionStage executionStage,
+
108 ComputeExecutionGroup executionGroup);
+
109
+
111 std::unordered_map<UINT, DirectXResource*> cbvResources;
+
112
+
114 std::unordered_map<UINT, DirectXResource*> uavResources;
+
115
+
117 std::unordered_map<UINT, DirectXResource*> srvResources;
+
118
+
120 std::unordered_map<UINT, DirectXDescriptor*> tableResources;
+
121
+ +
124
+ +
127 };
+
128}
+
Definition: ComputeShaderInterface.h:46
+
unsigned int getThreadGroupCountX() const
Definition: ComputeShaderInterface.h:223
+
Renderer * pRenderer
Definition: ComputeShaderInterface.h:241
+
unsigned int getThreadGroupCountY() const
Definition: ComputeShaderInterface.h:230
+
const ComputeExecutionGroup executionGroup
Definition: ComputeShaderInterface.h:259
+
const ComputeExecutionStage executionStage
Definition: ComputeShaderInterface.h:256
+
unsigned int getThreadGroupCountZ() const
Definition: ComputeShaderInterface.h:237
+
const std::string sComputeShaderName
Definition: ComputeShaderInterface.h:262
+
Definition: DirectXDescriptorHeap.h:211
+
ID3D12DescriptorHeap * getInternalHeap() const
Definition: DirectXDescriptorHeap.h:348
+
Definition: GpuResource.h:16
+
Definition: HlslComputeShaderInterface.h:17
+
DirectXDescriptorHeap * pCbvSrvUavHeap
Definition: HlslComputeShaderInterface.h:123
+
void dispatchOnGraphicsQueue(ID3D12GraphicsCommandList *pCommandList)
Definition: HlslComputeShaderInterface.h:61
+
virtual std::optional< Error > bindResource(GpuResource *pResource, const std::string &sShaderResourceName, ComputeResourceUsage usage, bool bUpdateOnlyCurrentFrameResourceDescriptors=false) override
Definition: HlslComputeShaderInterface.cpp:30
+
std::unordered_map< UINT, DirectXResource * > uavResources
Definition: HlslComputeShaderInterface.h:114
+
std::unordered_map< UINT, DirectXDescriptor * > tableResources
Definition: HlslComputeShaderInterface.h:120
+
std::unordered_map< UINT, DirectXResource * > cbvResources
Definition: HlslComputeShaderInterface.h:111
+
UINT iCbvSrvUavDescriptorSize
Definition: HlslComputeShaderInterface.h:126
+
std::unordered_map< UINT, DirectXResource * > srvResources
Definition: HlslComputeShaderInterface.h:117
+
Definition: Renderer.h:44
+
+
+ + + + diff --git a/HlslGlobalShaderResourceBinding_8h_source.html b/HlslGlobalShaderResourceBinding_8h_source.html new file mode 100644 index 000000000..0a1931b34 --- /dev/null +++ b/HlslGlobalShaderResourceBinding_8h_source.html @@ -0,0 +1,149 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/hlsl/resource/binding/global/HlslGlobalShaderResourceBinding.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HlslGlobalShaderResourceBinding.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <optional>
+
5
+
6// Custom.
+
7#include "shader/general/resource/binding/global/GlobalShaderResourceBinding.h"
+
8
+
9// External.
+
10#include "vulkan/vulkan_core.h"
+
11
+
12namespace ne {
+
13 class GpuResource;
+
14
+ +
20 // Only base class is allowed to create such objects.
+
21 friend class GlobalShaderResourceBinding;
+
22
+
23 public:
+ +
25
+
26 virtual ~HlslGlobalShaderResourceBinding() override;
+
27
+
28 protected:
+ + +
41 const std::string& sShaderResourceName,
+
42 const std::array<GpuResource*, FrameResourceManager::getFrameResourceCount()>& vResourcesToBind);
+
43
+
52 [[nodiscard]] virtual std::optional<Error> bindToPipelines(Pipeline* pSpecificPipeline) override;
+
53 };
+
54}
+
static constexpr unsigned int getFrameResourceCount()
Definition: FrameResourceManager.h:74
+
Definition: GlobalShaderResourceBindingManager.h:21
+
Definition: GlobalShaderResourceBinding.h:27
+
GlobalShaderResourceBindingManager *const pManager
Definition: GlobalShaderResourceBinding.h:121
+
const std::string sShaderResourceName
Definition: GlobalShaderResourceBinding.h:110
+
Definition: GpuResource.h:16
+
Definition: HlslGlobalShaderResourceBinding.h:19
+
virtual std::optional< Error > bindToPipelines(Pipeline *pSpecificPipeline) override
Definition: HlslGlobalShaderResourceBinding.cpp:20
+
Definition: Pipeline.h:20
+
+
+ + + + diff --git a/HlslShaderCacheManager_8h_source.html b/HlslShaderCacheManager_8h_source.html new file mode 100644 index 000000000..b42e3c966 --- /dev/null +++ b/HlslShaderCacheManager_8h_source.html @@ -0,0 +1,162 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/hlsl/cache/HlslShaderCacheManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HlslShaderCacheManager.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "shader/general/cache/ShaderCacheManager.h"
+
5
+
6namespace ne {
+
7 class Renderer;
+
8
+ +
11 // Only shader manager is expected to create this manager.
+
12 friend class ShaderCacheManager;
+
13
+
14 public:
+
15 virtual ~HlslShaderCacheManager() override = default;
+
16
+ +
18 HlslShaderCacheManager& operator=(const HlslShaderCacheManager&) = delete;
+
19
+
20 protected:
+
31 [[nodiscard]] virtual std::optional<std::string>
+
32 isLanguageSpecificGlobalCacheOutdated(const ConfigManager& cacheConfig) override;
+
33
+
41 [[nodiscard]] virtual std::optional<Error>
+ +
43
+
44 private:
+ +
48 static constexpr std::string_view sVsModel = "vs";
+
49
+
51 static constexpr std::string_view sPsModel = "ps";
+
52
+
54 static constexpr std::string_view sCsModel = "cs";
+
55
+
57 static constexpr std::string_view sCompilerVersion = "compiler_version";
+
58 };
+
59
+ +
66
+
68 static constexpr std::string_view sHlslSectionName = "hlsl";
+
69 };
+
70}
+
Definition: ConfigManager.h:27
+
Definition: HlslShaderCacheManager.h:10
+
virtual std::optional< std::string > isLanguageSpecificGlobalCacheOutdated(const ConfigManager &cacheConfig) override
Definition: HlslShaderCacheManager.cpp:11
+
static constexpr std::string_view sHlslSectionName
Definition: HlslShaderCacheManager.h:68
+
virtual std::optional< Error > writeLanguageSpecificParameters(ConfigManager &cacheConfig) override
Definition: HlslShaderCacheManager.cpp:73
+
Definition: Renderer.h:44
+
Definition: ShaderCacheManager.h:16
+
Renderer *const pRenderer
Definition: ShaderCacheManager.h:113
+ +
static constexpr std::string_view sCsModel
Definition: HlslShaderCacheManager.h:54
+
static constexpr std::string_view sCompilerVersion
Definition: HlslShaderCacheManager.h:57
+
static constexpr std::string_view sPsModel
Definition: HlslShaderCacheManager.h:51
+
static constexpr std::string_view sVsModel
Definition: HlslShaderCacheManager.h:48
+
+
+ + + + diff --git a/HlslShaderTextureResourceBinding_8h_source.html b/HlslShaderTextureResourceBinding_8h_source.html new file mode 100644 index 000000000..bea2e4a55 --- /dev/null +++ b/HlslShaderTextureResourceBinding_8h_source.html @@ -0,0 +1,238 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/hlsl/resource/binding/texture/HlslShaderTextureResourceBinding.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HlslShaderTextureResourceBinding.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <string>
+
5#include <memory>
+
6#include <unordered_set>
+
7#include <variant>
+
8#include <mutex>
+
9
+
10// Custom.
+
11#include "shader/general/resource/binding/ShaderResourceBinding.h"
+
12#include "render/directx/descriptors/DirectXDescriptorHeap.h"
+
13#include "render/general/pipeline/PipelineShaderConstantsManager.hpp"
+
14#include "render/directx/resource/DirectXResource.h"
+
15
+
16namespace ne {
+
17 class TextureHandle;
+
18 class Pipeline;
+
19 class DirectXPso;
+
20
+ +
23 // Only the manager should be able to create such resources.
+ +
25
+
26 public:
+
27 virtual ~HlslShaderTextureResourceBinding() override = default;
+
28
+ +
36 PipelineShaderConstantsManager* pShaderConstantsManager, DirectXPso* pUsedPipeline) {
+
37 // Since pipelines won't change here (because we are inside of the `draw` function)
+
38 // we don't need to lock the mutex here.
+
39
+
40 // Find root constant index for this pipeline.
+
41 const auto it = mtxUsedPipelineDescriptorRanges.second.find(pUsedPipeline);
+
42 if (it == mtxUsedPipelineDescriptorRanges.second.end()) [[unlikely]] {
+
43 Error error(std::format(
+
44 "shader resource \"{}\" was requested to set its root constant "
+
45 "index but this shader resource does not reference the specified pipeline",
+ +
47 mtxUsedPipelineDescriptorRanges.second.size()));
+
48 error.showError();
+
49 throw std::runtime_error(error.getFullErrorMessage());
+
50 }
+
51
+
52 const auto& [pSrvDescriptorRange, iShaderConstantIndex] =
+
53 mtxUsedPipelineDescriptorRanges.second.begin()->second;
+
54
+
55 // Query texture's SRV descriptor offset in the descriptor range.
+
56 unsigned int iRootConstantValue = 0;
+
57 {
+
58 std::scoped_lock textureGuard(mtxUsedTexture.first);
+
59
+
60 const auto pDirectXTexture =
+
61 reinterpret_cast<DirectXResource*>(mtxUsedTexture.second->getResource());
+
62
+
63 // Calculate descriptor offset. This may not be as fast as we want but this is the price we
+
64 // pay for having a simple approach. We could have cached the offset but we would need to keep
+
65 // the cached offset updated after the range resizes which seems like a complicated thing.
+
66 auto result = pSrvDescriptorRange->getResourceDescriptorOffsetFromRangeStart(
+
67 pDirectXTexture, DirectXDescriptorType::SRV);
+
68 if (std::holds_alternative<Error>(result)) [[unlikely]] {
+
69 auto error = std::get<Error>(std::move(result));
+
70 error.addCurrentLocationToErrorStack();
+
71 error.showError();
+
72 throw std::runtime_error(error.getFullErrorMessage());
+
73 }
+
74
+
75 iRootConstantValue = std::get<unsigned int>(result);
+
76 }
+
77
+
78 // Copy value to root constants.
+
79 pShaderConstantsManager->copyValueToShaderConstant(iShaderConstantIndex, iRootConstantValue);
+
80 }
+
81
+
93 [[nodiscard]] virtual std::optional<Error>
+
94 useNewTexture(std::unique_ptr<TextureHandle> pTextureToUse) override;
+
95
+
112 [[nodiscard]] virtual std::optional<Error>
+
113 changeUsedPipelines(const std::unordered_set<Pipeline*>& pipelinesToUse) override;
+
114
+
115 protected:
+ +
128 const std::string& sResourceName,
+
129 std::unique_ptr<TextureHandle> pTextureToUse,
+
130 std::unordered_map<DirectXPso*, std::pair<ContinuousDirectXDescriptorRange*, size_t>>&&
+
131 usedDescriptorRanges);
+
132
+
142 [[nodiscard]] virtual std::optional<Error> onAfterAllPipelinesRefreshedResources() override;
+
143
+
144 private:
+
155 static std::variant<std::unique_ptr<ShaderTextureResourceBinding>, Error> create(
+
156 const std::string& sShaderResourceName,
+
157 const std::unordered_set<Pipeline*>& pipelinesToUse,
+
158 std::unique_ptr<TextureHandle> pTextureToUse);
+
159
+
170 static std::variant<std::pair<ContinuousDirectXDescriptorRange*, size_t>, Error>
+ +
172 DirectXPso* pPipeline, const std::string& sShaderResourceName);
+
173
+
175 std::pair<std::mutex, std::unique_ptr<TextureHandle>> mtxUsedTexture;
+
176
+
186 std::pair<
+
187 std::recursive_mutex,
+
188 std::unordered_map<DirectXPso*, std::pair<ContinuousDirectXDescriptorRange*, size_t>>>
+ +
190
+
195 static constexpr bool bBindSrvToCubemapFaces = false;
+
196 };
+
197} // namespace ne
+
Definition: DirectXPso.h:22
+
Definition: DirectXResource.h:32
+
Definition: Error.h:27
+
std::string getFullErrorMessage() const
Definition: Error.cpp:84
+
void showError() const
Definition: Error.cpp:102
+
Definition: HlslShaderTextureResourceBinding.h:22
+
void copyResourceIndexToRootConstants(PipelineShaderConstantsManager *pShaderConstantsManager, DirectXPso *pUsedPipeline)
Definition: HlslShaderTextureResourceBinding.h:35
+
std::pair< std::recursive_mutex, std::unordered_map< DirectXPso *, std::pair< ContinuousDirectXDescriptorRange *, size_t > > > mtxUsedPipelineDescriptorRanges
Definition: HlslShaderTextureResourceBinding.h:189
+
virtual std::optional< Error > changeUsedPipelines(const std::unordered_set< Pipeline * > &pipelinesToUse) override
Definition: HlslShaderTextureResourceBinding.cpp:233
+
static std::variant< std::unique_ptr< ShaderTextureResourceBinding >, Error > create(const std::string &sShaderResourceName, const std::unordered_set< Pipeline * > &pipelinesToUse, std::unique_ptr< TextureHandle > pTextureToUse)
Definition: HlslShaderTextureResourceBinding.cpp:101
+
std::pair< std::mutex, std::unique_ptr< TextureHandle > > mtxUsedTexture
Definition: HlslShaderTextureResourceBinding.h:175
+
virtual std::optional< Error > useNewTexture(std::unique_ptr< TextureHandle > pTextureToUse) override
Definition: HlslShaderTextureResourceBinding.cpp:205
+
static constexpr bool bBindSrvToCubemapFaces
Definition: HlslShaderTextureResourceBinding.h:195
+
virtual std::optional< Error > onAfterAllPipelinesRefreshedResources() override
Definition: HlslShaderTextureResourceBinding.cpp:185
+
static std::variant< std::pair< ContinuousDirectXDescriptorRange *, size_t >, Error > getSrvDescriptorRangeAndRootConstantIndex(DirectXPso *pPipeline, const std::string &sShaderResourceName)
Definition: HlslShaderTextureResourceBinding.cpp:17
+
Definition: PipelineShaderConstantsManager.hpp:14
+
void copyValueToShaderConstant(size_t iShaderConstantIndex, unsigned int iValueToCopy)
Definition: PipelineShaderConstantsManager.hpp:75
+
std::string getShaderResourceName() const
Definition: ShaderResourceBinding.cpp:11
+
const std::string sShaderResourceName
Definition: ShaderResourceBinding.h:82
+
Definition: ShaderTextureResourceBindingManager.h:27
+
Definition: ShaderResourceBinding.h:86
+
+
+ + + + diff --git a/HlslShader_8h_source.html b/HlslShader_8h_source.html new file mode 100644 index 000000000..d5de4a456 --- /dev/null +++ b/HlslShader_8h_source.html @@ -0,0 +1,267 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/hlsl/HlslShader.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HlslShader.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <mutex>
+
5#include <set>
+
6
+
7// Custom.
+
8#include "shader/general/Shader.h"
+
9#include "render/RenderSettings.h"
+
10#include "shader/hlsl/RootSignatureGenerator.h"
+
11
+
12// External.
+
13#include "directx/d3dx12.h"
+
14#include "DirectXShaderCompiler/inc/dxcapi.h"
+
15
+
16// OS.
+
17#include <wrl.h>
+
18
+
19namespace ne {
+
20 using namespace Microsoft::WRL;
+
21
+
22 class Renderer;
+
23
+
25 enum class StaticSamplerShaderRegister : UINT {
+
26 BASIC = 0,
+
27 COMPARISON = 1,
+
28 };
+
29
+
31 class HlslShader : public Shader {
+
32 public:
+ + +
47 std::filesystem::path pathToCompiledShader,
+
48 const std::string& sShaderName,
+
49 ShaderType shaderType,
+
50 const std::optional<VertexFormat>& vertexFormat,
+
51 const std::string& sSourceFileHash);
+
52
+
53 HlslShader() = delete;
+
54 HlslShader(const HlslShader&) = delete;
+
55 HlslShader& operator=(const HlslShader&) = delete;
+
56
+
57 virtual ~HlslShader() override = default;
+
58
+
64 static constexpr std::string_view getVertexShaderModel() { return sVertexShaderModel; }
+
65
+
71 static constexpr std::string_view getPixelShaderModel() { return sPixelShaderModel; }
+
72
+
78 static constexpr std::string_view getComputeShaderModel() { return sComputeShaderModel; }
+
79
+
85 static std::variant<std::string, Error> getShaderCompilerVersion();
+
86
+
95 static CD3DX12_STATIC_SAMPLER_DESC
+
96 getStaticSamplerDescription(TextureFilteringQuality textureFilteringQuality);
+
97
+
103 static CD3DX12_STATIC_SAMPLER_DESC getStaticComparisonSamplerDescription();
+
104
+ +
111
+
123 static std::variant<ComPtr<IDxcResult>, std::string, Error> compileShaderToBytecode(
+
124 const ShaderDescription& shaderDescription,
+
125 const std::optional<std::filesystem::path>& pathToPdb);
+
126
+
140 static std::variant<std::shared_ptr<Shader>, std::string, Error> compileShader(
+ +
142 const std::filesystem::path& cacheDirectory,
+
143 const std::string& sConfiguration,
+
144 const ShaderDescription& shaderDescription);
+
145
+
153 std::variant<ComPtr<IDxcBlob>, Error> getCompiledBlob();
+
154
+
161 std::pair<std::mutex, std::optional<RootSignatureGenerator::CollectedInfo>>* getRootSignatureInfo();
+
162
+
168 std::string getShaderSourceFileHash() const;
+
169
+
177 virtual bool releaseShaderDataFromMemoryIfLoaded() override;
+
178
+
179 protected:
+
190 [[nodiscard]] virtual std::optional<Error>
+
191 saveAdditionalCompilationResultsInfo(ConfigManager& cacheMetadataConfigManager) override;
+
192
+
204 [[nodiscard]] virtual std::optional<Error> checkCachedAdditionalCompilationResultsInfo(
+
205 ConfigManager& cacheMetadataConfigManager,
+
206 std::optional<ShaderCacheInvalidationReason>& cacheInvalidationReason) override;
+
207
+
208 private:
+
216 static std::variant<ComPtr<IDxcBlob>, Error>
+
217 readBlobFromDisk(const std::filesystem::path& pathToFile);
+
218
+
225 std::variant<std::string, Error> calculateReflectionFileHash();
+
226
+
232 [[nodiscard]] std::optional<Error> loadShaderDataFromDiskIfNotLoaded();
+
233
+
238 std::pair<std::recursive_mutex, ComPtr<IDxcBlob>> mtxCompiledBytecode;
+
239
+
246 std::pair<std::mutex, std::optional<RootSignatureGenerator::CollectedInfo>> mtxRootSignatureInfo;
+
247
+
249 std::string sSourceFileHash;
+
250
+
252 static inline UINT iShaderFileCodepage = DXC_CP_ACP;
+
253
+
255 static inline auto sShaderReflectionFileExtension = ".reflection";
+
256
+
258 static inline const auto sReflectionFileHashKeyName = "reflection_file_hash";
+
259
+
261 static inline const auto sHlslSectionName = "HLSL";
+
262
+
264 static inline const UINT iStaticSamplerShaderRegisterSpace = 5; // NOLINT
+
265
+
266 // -------------------------------------------------------------------------
+
267 // ! if adding new shader models add them to cache config in ShaderManager !
+
268 // -------------------------------------------------------------------------
+
270 static constexpr std::string_view sVertexShaderModel = "vs_6_0";
+
272 static constexpr std::string_view sPixelShaderModel = "ps_6_0";
+
274 static constexpr std::string_view sComputeShaderModel = "cs_6_0";
+
275 // -------------------------------------------------------------------------
+
276 // ! if adding new shader models add them to cache config in ShaderManager !
+
277 // -------------------------------------------------------------------------
+
278 };
+
279} // namespace ne
+
Definition: ConfigManager.h:27
+
Definition: Error.h:27
+
Definition: HlslShader.h:31
+
virtual std::optional< Error > saveAdditionalCompilationResultsInfo(ConfigManager &cacheMetadataConfigManager) override
Definition: HlslShader.cpp:481
+
static std::variant< std::shared_ptr< Shader >, std::string, Error > compileShader(Renderer *pRenderer, const std::filesystem::path &cacheDirectory, const std::string &sConfiguration, const ShaderDescription &shaderDescription)
Definition: HlslShader.cpp:292
+
static std::variant< std::string, Error > getShaderCompilerVersion()
Definition: HlslShader.cpp:34
+
static constexpr std::string_view getPixelShaderModel()
Definition: HlslShader.h:71
+
static constexpr std::string_view sPixelShaderModel
Definition: HlslShader.h:272
+
static constexpr std::string_view sComputeShaderModel
Definition: HlslShader.h:274
+
static CD3DX12_STATIC_SAMPLER_DESC getStaticSamplerDescription(TextureFilteringQuality textureFilteringQuality)
Definition: HlslShader.cpp:59
+
static UINT iShaderFileCodepage
Definition: HlslShader.h:252
+
static auto sShaderReflectionFileExtension
Definition: HlslShader.h:255
+
std::string sSourceFileHash
Definition: HlslShader.h:249
+
std::string getShaderSourceFileHash() const
Definition: HlslShader.cpp:451
+
virtual bool releaseShaderDataFromMemoryIfLoaded() override
Definition: HlslShader.cpp:453
+
static UINT getStaticSamplerShaderRegisterSpace()
Definition: HlslShader.cpp:136
+
static const UINT iStaticSamplerShaderRegisterSpace
Definition: HlslShader.h:264
+
std::pair< std::mutex, std::optional< RootSignatureGenerator::CollectedInfo > > * getRootSignatureInfo()
Definition: HlslShader.cpp:447
+
std::variant< ComPtr< IDxcBlob >, Error > getCompiledBlob()
Definition: HlslShader.cpp:435
+
static const auto sHlslSectionName
Definition: HlslShader.h:261
+
static const auto sReflectionFileHashKeyName
Definition: HlslShader.h:258
+
std::optional< Error > loadShaderDataFromDiskIfNotLoaded()
Definition: HlslShader.cpp:605
+
static constexpr std::string_view getVertexShaderModel()
Definition: HlslShader.h:64
+
virtual std::optional< Error > checkCachedAdditionalCompilationResultsInfo(ConfigManager &cacheMetadataConfigManager, std::optional< ShaderCacheInvalidationReason > &cacheInvalidationReason) override
Definition: HlslShader.cpp:498
+
static std::variant< ComPtr< IDxcBlob >, Error > readBlobFromDisk(const std::filesystem::path &pathToFile)
Definition: HlslShader.cpp:524
+
std::pair< std::mutex, std::optional< RootSignatureGenerator::CollectedInfo > > mtxRootSignatureInfo
Definition: HlslShader.h:246
+
static constexpr std::string_view getComputeShaderModel()
Definition: HlslShader.h:78
+
static std::variant< ComPtr< IDxcResult >, std::string, Error > compileShaderToBytecode(const ShaderDescription &shaderDescription, const std::optional< std::filesystem::path > &pathToPdb)
Definition: HlslShader.cpp:138
+
std::variant< std::string, Error > calculateReflectionFileHash()
Definition: HlslShader.cpp:567
+
std::pair< std::recursive_mutex, ComPtr< IDxcBlob > > mtxCompiledBytecode
Definition: HlslShader.h:238
+
static CD3DX12_STATIC_SAMPLER_DESC getStaticComparisonSamplerDescription()
Definition: HlslShader.cpp:119
+
static constexpr std::string_view sVertexShaderModel
Definition: HlslShader.h:270
+
Definition: Renderer.h:44
+
Definition: Shader.h:23
+
const ShaderType shaderType
Definition: Shader.h:254
+
const std::filesystem::path pathToCompiledShader
Definition: Shader.h:257
+
const std::string sShaderName
Definition: Shader.h:251
+
Renderer *const pRenderer
Definition: Shader.h:241
+
Definition: ShaderDescription.h:74
+
+
+ + + + diff --git a/HlslVertexFormatDescription_8h_source.html b/HlslVertexFormatDescription_8h_source.html new file mode 100644 index 000000000..af48768eb --- /dev/null +++ b/HlslVertexFormatDescription_8h_source.html @@ -0,0 +1,138 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/hlsl/format/HlslVertexFormatDescription.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HlslVertexFormatDescription.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <vector>
+
5#include <string>
+
6
+
7// Custom.
+
8#include "shader/general/format/VertexFormat.h"
+
9
+
10// External.
+
11#include "directx/d3dx12.h"
+
12
+
13namespace ne {
+ +
16 public:
+ +
18 virtual ~HlslVertexFormatDescription() override = default;
+
19
+
27 static std::unique_ptr<HlslVertexFormatDescription> createDescription(VertexFormat type);
+
28
+
34 virtual std::vector<std::string> getVertexSemanticLocations() = 0;
+
35
+
41 virtual std::vector<D3D12_INPUT_ELEMENT_DESC> getShaderInputElementDescription() = 0;
+
42 };
+
43}
+
Definition: HlslVertexFormatDescription.h:15
+
virtual std::vector< std::string > getVertexSemanticLocations()=0
+
static std::unique_ptr< HlslVertexFormatDescription > createDescription(VertexFormat type)
Definition: HlslVertexFormatDescription.cpp:13
+
virtual std::vector< D3D12_INPUT_ELEMENT_DESC > getShaderInputElementDescription()=0
+
Definition: VertexFormat.h:15
+
+
+ + + + diff --git a/IBinaryFieldSerializer_8hpp_source.html b/IBinaryFieldSerializer_8hpp_source.html new file mode 100644 index 000000000..a6ac1043a --- /dev/null +++ b/IBinaryFieldSerializer_8hpp_source.html @@ -0,0 +1,149 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/io/serializers/IBinaryFieldSerializer.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
IBinaryFieldSerializer.hpp
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <optional>
+
5#include <filesystem>
+
6#include <string>
+
7#include <variant>
+
8
+
9// Custom.
+
10#include "misc/Error.h"
+
11
+
12// External.
+
13#include "Refureku/Refureku.h"
+
14
+
15namespace ne {
+
16 class Serializable;
+
17
+ +
25 public:
+
26 IBinaryFieldSerializer() = default;
+
27 virtual ~IBinaryFieldSerializer() = default;
+
28
+
36 virtual bool isFieldTypeSupported(const rfk::Field* pField) = 0;
+
37
+
49 [[nodiscard]] virtual std::variant<std::string, Error> serializeField(
+
50 const std::filesystem::path& pathToOutputDirectory,
+
51 const std::string& sFilenameWithoutExtension,
+
52 Serializable* pFieldOwner,
+
53 const rfk::Field* pField) = 0;
+
54
+
64 [[nodiscard]] virtual std::optional<Error> deserializeField(
+
65 const std::filesystem::path& pathToBinaryFile,
+
66 Serializable* pFieldOwner,
+
67 const rfk::Field* pField) = 0;
+
68 };
+
69} // namespace ne
+
Definition: IBinaryFieldSerializer.hpp:24
+
virtual bool isFieldTypeSupported(const rfk::Field *pField)=0
+
virtual std::optional< Error > deserializeField(const std::filesystem::path &pathToBinaryFile, Serializable *pFieldOwner, const rfk::Field *pField)=0
+
virtual std::variant< std::string, Error > serializeField(const std::filesystem::path &pathToOutputDirectory, const std::string &sFilenameWithoutExtension, Serializable *pFieldOwner, const rfk::Field *pField)=0
+
Definition: Serializable.h:113
+
+
+ + + + diff --git a/IFieldSerializer_8hpp_source.html b/IFieldSerializer_8hpp_source.html new file mode 100644 index 000000000..a9cf19355 --- /dev/null +++ b/IFieldSerializer_8hpp_source.html @@ -0,0 +1,171 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/io/serializers/IFieldSerializer.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
IFieldSerializer.hpp
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <optional>
+
5#include <format>
+
6
+
7// Custom.
+
8#include "misc/Error.h"
+
9
+
10// External.
+
11#include "Refureku/Refureku.h"
+
12#include "toml11/single_include/toml.hpp"
+
13
+
14namespace ne {
+
15 class Serializable;
+
16
+
24 inline std::string floatingToString(double value) { return std::format("{:.15f}", value); }
+
25
+ +
34 public:
+
35 IFieldSerializer() = default;
+
36 virtual ~IFieldSerializer() = default;
+
37
+
45 virtual bool isFieldTypeSupported(const rfk::Field* pField) = 0;
+
46
+
65 [[nodiscard]] virtual std::optional<Error> serializeField(
+
66 toml::value* pTomlData,
+
67 Serializable* pFieldOwner,
+
68 const rfk::Field* pField,
+
69 const std::string& sSectionName,
+
70 const std::string& sEntityId,
+
71 size_t& iSubEntityId,
+
72 Serializable* pOriginalObject = nullptr) = 0;
+
73
+
89 [[nodiscard]] virtual std::optional<Error> deserializeField(
+
90 const toml::value* pTomlDocument,
+
91 const toml::value* pTomlValue,
+
92 Serializable* pFieldOwner,
+
93 const rfk::Field* pField,
+
94 const std::string& sOwnerSectionName,
+
95 const std::string& sEntityId,
+
96 std::unordered_map<std::string, std::string>& customAttributes) = 0;
+
97
+
108 [[nodiscard]] virtual std::optional<Error> cloneField(
+
109 Serializable* pFromInstance,
+
110 const rfk::Field* pFromField,
+
111 Serializable* pToInstance,
+
112 const rfk::Field* pToField) = 0;
+
113
+
125 virtual bool isFieldValueEqual(
+
126 Serializable* pFieldAOwner,
+
127 const rfk::Field* pFieldA,
+
128 Serializable* pFieldBOwner,
+
129 const rfk::Field* pFieldB) = 0;
+
130 };
+
131} // namespace ne
+
Definition: IFieldSerializer.hpp:33
+
virtual std::optional< Error > cloneField(Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField)=0
+
virtual std::optional< Error > deserializeField(const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes)=0
+
virtual bool isFieldTypeSupported(const rfk::Field *pField)=0
+
virtual std::optional< Error > serializeField(toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr)=0
+
virtual bool isFieldValueEqual(Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB)=0
+
Definition: Serializable.h:113
+
+
+ + + + diff --git a/InputManager_8h_source.html b/InputManager_8h_source.html new file mode 100644 index 000000000..19cb48a01 --- /dev/null +++ b/InputManager_8h_source.html @@ -0,0 +1,270 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/input/InputManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
InputManager.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <unordered_map>
+
5#include <string>
+
6#include <variant>
+
7#include <optional>
+
8#include <mutex>
+
9#include <vector>
+
10
+
11// Custom.
+
12#include "input/KeyboardKey.hpp"
+
13#include "input/MouseButton.hpp"
+
14
+
15namespace ne {
+ +
20 public:
+
21 ActionState() = delete;
+
22
+
28 ActionState(std::variant<KeyboardKey, MouseButton> key) {
+
29 this->key = key;
+
30 bIsPressed = false;
+
31 }
+
32
+ +
35
+
37 std::variant<KeyboardKey, MouseButton> key;
+
38 };
+
39
+
41 class AxisState {
+
42 public:
+
43 AxisState() = delete;
+
44
+
51 AxisState(KeyboardKey plusKey, KeyboardKey minusKey) {
+
52 this->plusKey = plusKey;
+
53 this->minusKey = minusKey;
+
54
+
55 bIsPlusKeyPressed = false;
+
56 bIsMinusKeyPressed = false;
+
57 }
+
58
+
60 KeyboardKey plusKey;
+
61
+
63 KeyboardKey minusKey;
+
64
+ +
67
+ +
70 };
+
71
+ +
78 // Triggers input events.
+
79 friend class GameManager;
+
80
+
81 public:
+
82 InputManager() = default;
+
83 InputManager(const InputManager&) = delete;
+
84 InputManager& operator=(const InputManager&) = delete;
+
85
+
105 [[nodiscard]] std::optional<Error> addActionEvent(
+
106 unsigned int iActionId, const std::vector<std::variant<KeyboardKey, MouseButton>>& vKeys);
+
107
+
129 [[nodiscard]] std::optional<Error> addAxisEvent(
+
130 unsigned int iAxisEventId, const std::vector<std::pair<KeyboardKey, KeyboardKey>>& vAxis);
+
131
+
141 [[nodiscard]] std::optional<Error> modifyActionEventKey(
+
142 unsigned int iActionId,
+
143 std::variant<KeyboardKey, MouseButton> oldKey,
+
144 std::variant<KeyboardKey, MouseButton> newKey);
+
145
+
155 [[nodiscard]] std::optional<Error> modifyAxisEventKey(
+
156 unsigned int iAxisEventId,
+
157 std::pair<KeyboardKey, KeyboardKey> oldPair,
+
158 std::pair<KeyboardKey, KeyboardKey> newPair);
+
159
+
169 [[nodiscard]] std::optional<Error> saveToFile(std::string_view sFileName);
+
170
+
191 [[nodiscard]] std::optional<Error> loadFromFile(std::string_view sFileName);
+
192
+
206 std::pair<std::vector<unsigned int>, std::vector<unsigned int>>
+
207 isKeyUsed(const std::variant<KeyboardKey, MouseButton>& key);
+
208
+
219 std::vector<std::variant<KeyboardKey, MouseButton>> getActionEvent(unsigned int iActionId);
+
220
+
231 std::vector<std::pair<KeyboardKey, KeyboardKey>> getAxisEvent(unsigned int iAxisEventId);
+
232
+
241 float getCurrentAxisEventState(unsigned int iAxisEventId);
+
242
+
250 bool removeActionEvent(unsigned int iActionId);
+
251
+
259 bool removeAxisEvent(unsigned int iAxisEventId);
+
260
+
266 std::unordered_map<unsigned int, std::vector<std::variant<KeyboardKey, MouseButton>>>
+ +
268
+
274 std::unordered_map<unsigned int, std::vector<std::pair<KeyboardKey, KeyboardKey>>> getAllAxisEvents();
+
275
+
284 static std::vector<std::string>
+
285 splitString(const std::string& sStringToSplit, const std::string& sDelimiter);
+
286
+
287 private:
+
305 [[nodiscard]] std::optional<Error> overwriteActionEvent(
+
306 unsigned int iActionId, const std::vector<std::variant<KeyboardKey, MouseButton>>& vKeys);
+
307
+
325 [[nodiscard]] std::optional<Error> overwriteAxisEvent(
+
326 unsigned int iAxisEventId, const std::vector<std::pair<KeyboardKey, KeyboardKey>>& vAxis);
+
327
+
334 std::unordered_map<std::variant<KeyboardKey, MouseButton>, std::vector<unsigned int>> actionEvents;
+
335
+
340 std::unordered_map<unsigned int, std::pair<std::vector<ActionState>, bool /* action state */>>
+ +
342
+
350 std::unordered_map<KeyboardKey, std::vector<std::pair<unsigned int, bool>>> axisEvents;
+
351
+
356 std::unordered_map<unsigned int, std::pair<std::vector<AxisState>, int /* axis state */>> axisState;
+
357
+
359 std::recursive_mutex mtxActionEvents;
+
360
+
362 std::recursive_mutex mtxAxisEvents;
+
363
+
365 static inline const std::string_view sActionEventSectionName = "action event";
+
366
+
368 static inline const std::string_view sAxisEventSectionName = "axis event";
+
369 };
+
370} // namespace ne
+
Definition: InputManager.h:19
+
bool bIsPressed
Definition: InputManager.h:34
+
std::variant< KeyboardKey, MouseButton > key
Definition: InputManager.h:37
+
ActionState(std::variant< KeyboardKey, MouseButton > key)
Definition: InputManager.h:28
+
Definition: InputManager.h:41
+
KeyboardKey plusKey
Definition: InputManager.h:60
+
KeyboardKey minusKey
Definition: InputManager.h:63
+
bool bIsPlusKeyPressed
Definition: InputManager.h:66
+
bool bIsMinusKeyPressed
Definition: InputManager.h:69
+
AxisState(KeyboardKey plusKey, KeyboardKey minusKey)
Definition: InputManager.h:51
+
Definition: GameManager.h:34
+
Definition: InputManager.h:77
+
std::unordered_map< std::variant< KeyboardKey, MouseButton >, std::vector< unsigned int > > actionEvents
Definition: InputManager.h:334
+
std::optional< Error > loadFromFile(std::string_view sFileName)
Definition: InputManager.cpp:189
+
static std::vector< std::string > splitString(const std::string &sStringToSplit, const std::string &sDelimiter)
Definition: InputManager.cpp:694
+
std::optional< Error > saveToFile(std::string_view sFileName)
Definition: InputManager.cpp:135
+
std::vector< std::variant< KeyboardKey, MouseButton > > getActionEvent(unsigned int iActionId)
Definition: InputManager.cpp:461
+
std::optional< Error > overwriteAxisEvent(unsigned int iAxisEventId, const std::vector< std::pair< KeyboardKey, KeyboardKey > > &vAxis)
Definition: InputManager.cpp:736
+
std::recursive_mutex mtxActionEvents
Definition: InputManager.h:359
+
std::unordered_map< KeyboardKey, std::vector< std::pair< unsigned int, bool > > > axisEvents
Definition: InputManager.h:350
+
std::optional< Error > modifyActionEventKey(unsigned int iActionId, std::variant< KeyboardKey, MouseButton > oldKey, std::variant< KeyboardKey, MouseButton > newKey)
Definition: InputManager.cpp:65
+
std::optional< Error > overwriteActionEvent(unsigned int iActionId, const std::vector< std::variant< KeyboardKey, MouseButton > > &vKeys)
Definition: InputManager.cpp:708
+
std::optional< Error > addActionEvent(unsigned int iActionId, const std::vector< std::variant< KeyboardKey, MouseButton > > &vKeys)
Definition: InputManager.cpp:14
+
std::optional< Error > addAxisEvent(unsigned int iAxisEventId, const std::vector< std::pair< KeyboardKey, KeyboardKey > > &vAxis)
Definition: InputManager.cpp:40
+
std::unordered_map< unsigned int, std::vector< std::pair< KeyboardKey, KeyboardKey > > > getAllAxisEvents()
Definition: InputManager.cpp:668
+
static const std::string_view sAxisEventSectionName
Definition: InputManager.h:368
+
std::unordered_map< unsigned int, std::vector< std::variant< KeyboardKey, MouseButton > > > getAllActionEvents()
Definition: InputManager.cpp:643
+
std::optional< Error > modifyAxisEventKey(unsigned int iAxisEventId, std::pair< KeyboardKey, KeyboardKey > oldPair, std::pair< KeyboardKey, KeyboardKey > newPair)
Definition: InputManager.cpp:97
+
std::unordered_map< unsigned int, std::pair< std::vector< ActionState >, bool > > actionState
Definition: InputManager.h:341
+
bool removeActionEvent(unsigned int iActionId)
Definition: InputManager.cpp:556
+
std::pair< std::vector< unsigned int >, std::vector< unsigned int > > isKeyUsed(const std::variant< KeyboardKey, MouseButton > &key)
Definition: InputManager.cpp:433
+
bool removeAxisEvent(unsigned int iAxisEventId)
Definition: InputManager.cpp:599
+
float getCurrentAxisEventState(unsigned int iAxisEventId)
Definition: InputManager.cpp:544
+
static const std::string_view sActionEventSectionName
Definition: InputManager.h:365
+
std::recursive_mutex mtxAxisEvents
Definition: InputManager.h:362
+
std::vector< std::pair< KeyboardKey, KeyboardKey > > getAxisEvent(unsigned int iAxisEventId)
Definition: InputManager.cpp:478
+
std::unordered_map< unsigned int, std::pair< std::vector< AxisState >, int > > axisState
Definition: InputManager.h:356
+
+
+ + + + diff --git a/KeyboardKey_8hpp_source.html b/KeyboardKey_8hpp_source.html new file mode 100644 index 000000000..61cca5145 --- /dev/null +++ b/KeyboardKey_8hpp_source.html @@ -0,0 +1,375 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/input/KeyboardKey.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
KeyboardKey.hpp
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "window/GLFW.hpp"
+
5
+
6namespace ne {
+ +
11 public:
+
12 KeyboardModifiers() = delete;
+
13
+
19 explicit KeyboardModifiers(int iModifiers) { this->iModifiers = iModifiers; }
+
20
+
26 bool isShiftPressed() const { return iModifiers & GLFW_MOD_SHIFT; }
+
27
+
33 bool isControlPressed() const { return iModifiers & GLFW_MOD_CONTROL; }
+
34
+
40 bool isAltPressed() const { return iModifiers & GLFW_MOD_ALT; }
+
41
+
47 bool isSuperPressed() const { return iModifiers & GLFW_MOD_SUPER; }
+
48
+
54 bool isCapsLockPressed() const { return iModifiers & GLFW_MOD_CAPS_LOCK; }
+
55
+
61 bool isNumLockPressed() const { return iModifiers & GLFW_MOD_NUM_LOCK; }
+
62
+
63 private:
+ +
66 };
+
67
+
71 enum class KeyboardAction { PRESSED = GLFW_PRESS, RELEASED = GLFW_RELEASE };
+
72
+
77 enum class KeyboardKey {
+
78 KEY_UNKNOWN = GLFW_KEY_UNKNOWN,
+
79 KEY_SPACE = GLFW_KEY_SPACE,
+
80 KEY_APOSTROPHE = GLFW_KEY_APOSTROPHE,
+
81 KEY_COMMA = GLFW_KEY_COMMA,
+
82 KEY_MINUS = GLFW_KEY_MINUS,
+
83 KEY_PERIOD = GLFW_KEY_PERIOD,
+
84 KEY_SLASH = GLFW_KEY_SLASH,
+
85 KEY_0 = GLFW_KEY_0,
+
86 KEY_1 = GLFW_KEY_1,
+
87 KEY_2 = GLFW_KEY_2,
+
88 KEY_3 = GLFW_KEY_3,
+
89 KEY_4 = GLFW_KEY_4,
+
90 KEY_5 = GLFW_KEY_5,
+
91 KEY_6 = GLFW_KEY_6,
+
92 KEY_7 = GLFW_KEY_7,
+
93 KEY_8 = GLFW_KEY_8,
+
94 KEY_9 = GLFW_KEY_9,
+
95 KEY_SEMICOLON = GLFW_KEY_SEMICOLON,
+
96 KEY_EQUAL = GLFW_KEY_EQUAL,
+
97 KEY_A = GLFW_KEY_A,
+
98 KEY_B = GLFW_KEY_B,
+
99 KEY_C = GLFW_KEY_C,
+
100 KEY_D = GLFW_KEY_D,
+
101 KEY_E = GLFW_KEY_E,
+
102 KEY_F = GLFW_KEY_F,
+
103 KEY_G = GLFW_KEY_G,
+
104 KEY_H = GLFW_KEY_H,
+
105 KEY_I = GLFW_KEY_I,
+
106 KEY_J = GLFW_KEY_J,
+
107 KEY_K = GLFW_KEY_K,
+
108 KEY_L = GLFW_KEY_L,
+
109 KEY_M = GLFW_KEY_M,
+
110 KEY_N = GLFW_KEY_N,
+
111 KEY_O = GLFW_KEY_O,
+
112 KEY_P = GLFW_KEY_P,
+
113 KEY_Q = GLFW_KEY_Q,
+
114 KEY_R = GLFW_KEY_R,
+
115 KEY_S = GLFW_KEY_S,
+
116 KEY_T = GLFW_KEY_T,
+
117 KEY_U = GLFW_KEY_U,
+
118 KEY_V = GLFW_KEY_V,
+
119 KEY_W = GLFW_KEY_W,
+
120 KEY_X = GLFW_KEY_X,
+
121 KEY_Y = GLFW_KEY_Y,
+
122 KEY_Z = GLFW_KEY_Z,
+
123 KEY_LEFT_BRACKET = GLFW_KEY_LEFT_BRACKET,
+
124 KEY_BACKSLASH = GLFW_KEY_BACKSLASH,
+
125 KEY_RIGHT_BRACKET = GLFW_KEY_RIGHT_BRACKET,
+
126 KEY_GRAVE_ACCENT = GLFW_KEY_GRAVE_ACCENT,
+
127 KEY_WORLD_1 = GLFW_KEY_WORLD_1,
+
128 KEY_WORLD_2 = GLFW_KEY_WORLD_2,
+
129 KEY_ESCAPE = GLFW_KEY_ESCAPE,
+
130 KEY_ENTER = GLFW_KEY_ENTER,
+
131 KEY_TAB = GLFW_KEY_TAB,
+
132 KEY_BACKSPACE = GLFW_KEY_BACKSPACE,
+
133 KEY_INSERT = GLFW_KEY_INSERT,
+
134 KEY_DELETE = GLFW_KEY_DELETE,
+
135 KEY_RIGHT = GLFW_KEY_RIGHT,
+
136 KEY_LEFT = GLFW_KEY_LEFT,
+
137 KEY_DOWN = GLFW_KEY_DOWN,
+
138 KEY_UP = GLFW_KEY_UP,
+
139 KEY_PAGE_UP = GLFW_KEY_PAGE_UP,
+
140 KEY_PAGE_DOWN = GLFW_KEY_PAGE_DOWN,
+
141 KEY_HOME = GLFW_KEY_HOME,
+
142 KEY_END = GLFW_KEY_END,
+
143 KEY_CAPS_LOCK = GLFW_KEY_CAPS_LOCK,
+
144 KEY_SCROLL_LOCK = GLFW_KEY_SCROLL_LOCK,
+
145 KEY_NUM_LOCK = GLFW_KEY_NUM_LOCK,
+
146 KEY_PRINT_SCREEN = GLFW_KEY_PRINT_SCREEN,
+
147 KEY_PAUSE = GLFW_KEY_PAUSE,
+
148 KEY_F1 = GLFW_KEY_F1,
+
149 KEY_F2 = GLFW_KEY_F2,
+
150 KEY_F3 = GLFW_KEY_F3,
+
151 KEY_F4 = GLFW_KEY_F4,
+
152 KEY_F5 = GLFW_KEY_F5,
+
153 KEY_F6 = GLFW_KEY_F6,
+
154 KEY_F7 = GLFW_KEY_F7,
+
155 KEY_F8 = GLFW_KEY_F8,
+
156 KEY_F9 = GLFW_KEY_F9,
+
157 KEY_F10 = GLFW_KEY_F10,
+
158 KEY_F11 = GLFW_KEY_F11,
+
159 KEY_F12 = GLFW_KEY_F12,
+
160 KEY_F13 = GLFW_KEY_F13,
+
161 KEY_F14 = GLFW_KEY_F14,
+
162 KEY_F15 = GLFW_KEY_F15,
+
163 KEY_F16 = GLFW_KEY_F16,
+
164 KEY_F17 = GLFW_KEY_F17,
+
165 KEY_F18 = GLFW_KEY_F18,
+
166 KEY_F19 = GLFW_KEY_F19,
+
167 KEY_F20 = GLFW_KEY_F20,
+
168 KEY_F21 = GLFW_KEY_F21,
+
169 KEY_F22 = GLFW_KEY_F22,
+
170 KEY_F23 = GLFW_KEY_F23,
+
171 KEY_F24 = GLFW_KEY_F24,
+
172 KEY_F25 = GLFW_KEY_F25,
+
173 KEY_KP_0 = GLFW_KEY_KP_0,
+
174 KEY_KP_1 = GLFW_KEY_KP_1,
+
175 KEY_KP_2 = GLFW_KEY_KP_2,
+
176 KEY_KP_3 = GLFW_KEY_KP_3,
+
177 KEY_KP_4 = GLFW_KEY_KP_4,
+
178 KEY_KP_5 = GLFW_KEY_KP_5,
+
179 KEY_KP_6 = GLFW_KEY_KP_6,
+
180 KEY_KP_7 = GLFW_KEY_KP_7,
+
181 KEY_KP_8 = GLFW_KEY_KP_8,
+
182 KEY_KP_9 = GLFW_KEY_KP_9,
+
183 KEY_KP_DECIMAL = GLFW_KEY_KP_DECIMAL,
+
184 KEY_KP_DIVIDE = GLFW_KEY_KP_DIVIDE,
+
185 KEY_KP_MULTIPLY = GLFW_KEY_KP_MULTIPLY,
+
186 KEY_KP_SUBTRACT = GLFW_KEY_KP_SUBTRACT,
+
187 KEY_KP_ADD = GLFW_KEY_KP_ADD,
+
188 KEY_KP_ENTER = GLFW_KEY_KP_ENTER,
+
189 KEY_KP_EQUAL = GLFW_KEY_KP_EQUAL,
+
190 KEY_LEFT_SHIFT = GLFW_KEY_LEFT_SHIFT,
+
191 KEY_LEFT_CONTROL = GLFW_KEY_LEFT_CONTROL,
+
192 KEY_LEFT_ALT = GLFW_KEY_LEFT_ALT,
+
193 KEY_LEFT_SUPER = GLFW_KEY_LEFT_SUPER,
+
194 KEY_RIGHT_SHIFT = GLFW_KEY_RIGHT_SHIFT,
+
195 KEY_RIGHT_CONTROL = GLFW_KEY_RIGHT_CONTROL,
+
196 KEY_RIGHT_ALT = GLFW_KEY_RIGHT_ALT,
+
197 KEY_RIGHT_SUPER = GLFW_KEY_RIGHT_SUPER,
+
198 KEY_MENU = GLFW_KEY_MENU,
+
199 };
+
200
+
209 inline std::string getKeyName(KeyboardKey key) {
+
210 const auto pName = glfwGetKeyName(static_cast<int>(key), 0);
+
211 if (pName == nullptr) {
+
212 switch (key) { // translate some keys
+
213 case KeyboardKey::KEY_TAB:
+
214 return "Tab";
+
215 case KeyboardKey::KEY_CAPS_LOCK:
+
216 return "Caps Lock";
+
217 case KeyboardKey::KEY_LEFT_SHIFT:
+
218 return "Left Shift";
+
219 case KeyboardKey::KEY_RIGHT_SHIFT:
+
220 return "Right Shift";
+
221 case KeyboardKey::KEY_LEFT_CONTROL:
+
222 return "Left Ctrl";
+
223 case KeyboardKey::KEY_RIGHT_CONTROL:
+
224 return "Right Ctrl";
+
225 case KeyboardKey::KEY_LEFT_SUPER:
+
226 return "Left Super";
+
227 case KeyboardKey::KEY_RIGHT_SUPER:
+
228 return "Right Super";
+
229 case KeyboardKey::KEY_LEFT_ALT:
+
230 return "Left Alt";
+
231 case KeyboardKey::KEY_RIGHT_ALT:
+
232 return "Right Alt";
+
233 case KeyboardKey::KEY_BACKSPACE:
+
234 return "Backspace";
+
235 case KeyboardKey::KEY_ENTER:
+
236 return "Enter";
+
237 case KeyboardKey::KEY_UP:
+
238 return "Up";
+
239 case KeyboardKey::KEY_DOWN:
+
240 return "Down";
+
241 case KeyboardKey::KEY_LEFT:
+
242 return "Left";
+
243 case KeyboardKey::KEY_RIGHT:
+
244 return "Right";
+
245 case KeyboardKey::KEY_SPACE:
+
246 return "Space Bar";
+
247 case KeyboardKey::KEY_ESCAPE:
+
248 return "Escape";
+
249 case KeyboardKey::KEY_F1:
+
250 return "F1";
+
251 case KeyboardKey::KEY_F2:
+
252 return "F2";
+
253 case KeyboardKey::KEY_F3:
+
254 return "F3";
+
255 case KeyboardKey::KEY_F4:
+
256 return "F4";
+
257 case KeyboardKey::KEY_F5:
+
258 return "F5";
+
259 case KeyboardKey::KEY_F6:
+
260 return "F6";
+
261 case KeyboardKey::KEY_F7:
+
262 return "F7";
+
263 case KeyboardKey::KEY_F8:
+
264 return "F8";
+
265 case KeyboardKey::KEY_F9:
+
266 return "F9";
+
267 case KeyboardKey::KEY_F10:
+
268 return "F10";
+
269 case KeyboardKey::KEY_F11:
+
270 return "F11";
+
271 case KeyboardKey::KEY_F12:
+
272 return "F12";
+
273 case KeyboardKey::KEY_F13:
+
274 return "F13";
+
275 case KeyboardKey::KEY_F14:
+
276 return "F14";
+
277 case KeyboardKey::KEY_F15:
+
278 return "F15";
+
279 case KeyboardKey::KEY_F16:
+
280 return "F16";
+
281 case KeyboardKey::KEY_F17:
+
282 return "F17";
+
283 case KeyboardKey::KEY_F18:
+
284 return "F18";
+
285 case KeyboardKey::KEY_F19:
+
286 return "F19";
+
287 case KeyboardKey::KEY_F20:
+
288 return "F20";
+
289 case KeyboardKey::KEY_F21:
+
290 return "F21";
+
291 case KeyboardKey::KEY_F22:
+
292 return "F22";
+
293 case KeyboardKey::KEY_F23:
+
294 return "F23";
+
295 case KeyboardKey::KEY_F24:
+
296 return "F24";
+
297 case KeyboardKey::KEY_F25:
+
298 return "F25";
+
299 case KeyboardKey::KEY_PRINT_SCREEN:
+
300 return "Print Screen";
+
301 case KeyboardKey::KEY_INSERT:
+
302 return "Insert";
+
303 case KeyboardKey::KEY_DELETE:
+
304 return "Delete";
+
305 default:
+
306 return "?";
+
307 }
+
308 } else {
+
309 return pName;
+
310 }
+
311 }
+
312} // namespace ne
+
Definition: KeyboardKey.hpp:10
+
bool isNumLockPressed() const
Definition: KeyboardKey.hpp:61
+
bool isCapsLockPressed() const
Definition: KeyboardKey.hpp:54
+
bool isSuperPressed() const
Definition: KeyboardKey.hpp:47
+
bool isShiftPressed() const
Definition: KeyboardKey.hpp:26
+
int iModifiers
Definition: KeyboardKey.hpp:65
+
bool isAltPressed() const
Definition: KeyboardKey.hpp:40
+
bool isControlPressed() const
Definition: KeyboardKey.hpp:33
+
KeyboardModifiers(int iModifiers)
Definition: KeyboardKey.hpp:19
+
+
+ + + + diff --git a/KtxLoadingCallbackManager_8h_source.html b/KtxLoadingCallbackManager_8h_source.html new file mode 100644 index 000000000..75da89820 --- /dev/null +++ b/KtxLoadingCallbackManager_8h_source.html @@ -0,0 +1,171 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/vulkan/resource/KtxLoadingCallbackManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
KtxLoadingCallbackManager.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <mutex>
+
5#include <unordered_map>
+
6#include <format>
+
7
+
8// External.
+
9#include "VulkanMemoryAllocator/include/vk_mem_alloc.h"
+
10#include "ktxvulkan.h"
+
11
+
12namespace ne {
+ +
18 public:
+
24 static size_t getCurrentAllocationCount();
+
25
+
31 static ktxVulkanTexture_subAllocatorCallbacks getKtxSubAllocatorCallbacks();
+
32
+
42 static uint64_t allocMem(
+
43 VkMemoryAllocateInfo* pAllocationInfo,
+
44 VkMemoryRequirements* pMemoryRequirements,
+
45 uint64_t* pPageCount);
+
46
+
55 static VkResult bindBuffer(VkBuffer pBuffer, uint64_t iAllocationId);
+
56
+
65 static VkResult bindImage(VkImage pImage, uint64_t iAllocationId);
+
66
+
77 static VkResult
+
78 memoryMap(uint64_t iAllocationId, uint64_t iPageNumber, VkDeviceSize* pMapLength, void** pData);
+
79
+
86 static void memoryUnmap(uint64_t iAllocationId, uint64_t iPageNumber);
+
87
+
93 static void freeMem(uint64_t iAllocationId);
+
94
+
95 private:
+
97 struct Data {
+
102 std::unordered_map<uint64_t, std::pair<VmaAllocation, VkDeviceSize>> allocations;
+
103
+
105 uint64_t iAllocationId = 0;
+
106 };
+
107
+
113 static VmaAllocator getMemoryAllocator();
+
114
+
120 static VkPhysicalDevice getPhysicalDevice();
+
121
+
123 static std::pair<std::recursive_mutex, Data> mtxData;
+
124 };
+
125} // namespace ne
+
Definition: KtxLoadingCallbackManager.h:17
+
static VkResult bindBuffer(VkBuffer pBuffer, uint64_t iAllocationId)
Definition: KtxLoadingCallbackManager.cpp:136
+
static void freeMem(uint64_t iAllocationId)
Definition: KtxLoadingCallbackManager.cpp:220
+
static void memoryUnmap(uint64_t iAllocationId, uint64_t iPageNumber)
Definition: KtxLoadingCallbackManager.cpp:206
+
static size_t getCurrentAllocationCount()
Definition: KtxLoadingCallbackManager.cpp:18
+
static std::pair< std::recursive_mutex, Data > mtxData
Definition: KtxLoadingCallbackManager.h:123
+
static VkPhysicalDevice getPhysicalDevice()
Definition: KtxLoadingCallbackManager.cpp:244
+
static VmaAllocator getMemoryAllocator()
Definition: KtxLoadingCallbackManager.cpp:238
+
static VkResult bindImage(VkImage pImage, uint64_t iAllocationId)
Definition: KtxLoadingCallbackManager.cpp:158
+
static ktxVulkanTexture_subAllocatorCallbacks getKtxSubAllocatorCallbacks()
Definition: KtxLoadingCallbackManager.cpp:23
+
static VkResult memoryMap(uint64_t iAllocationId, uint64_t iPageNumber, VkDeviceSize *pMapLength, void **pData)
Definition: KtxLoadingCallbackManager.cpp:180
+
static uint64_t allocMem(VkMemoryAllocateInfo *pAllocationInfo, VkMemoryRequirements *pMemoryRequirements, uint64_t *pPageCount)
Definition: KtxLoadingCallbackManager.cpp:35
+
Definition: KtxLoadingCallbackManager.h:97
+
uint64_t iAllocationId
Definition: KtxLoadingCallbackManager.h:105
+
std::unordered_map< uint64_t, std::pair< VmaAllocation, VkDeviceSize > > allocations
Definition: KtxLoadingCallbackManager.h:102
+
+
+ + + + diff --git a/LightingShaderResourceManager_8h_source.html b/LightingShaderResourceManager_8h_source.html new file mode 100644 index 000000000..8c110a034 --- /dev/null +++ b/LightingShaderResourceManager_8h_source.html @@ -0,0 +1,779 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/resource/LightingShaderResourceManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LightingShaderResourceManager.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <mutex>
+
5#include <memory>
+
6#include <functional>
+
7#include <unordered_map>
+
8#include <unordered_set>
+
9
+
10// Custom.
+
11#include "render/general/resource/UploadBuffer.h"
+
12#include "render/general/resource/frame/FrameResourceManager.h"
+
13#include "shader/general/resource/ShaderLightArray.h"
+
14#if defined(WIN32)
+
15#include "render/directx/resource/DirectXResource.h"
+
16#include "shader/hlsl/RootSignatureGenerator.h"
+
17#include "render/directx/pipeline/DirectXPso.h"
+
18#endif
+
19
+
20// External.
+
21#include "vulkan/vulkan_core.h"
+
22#if defined(WIN32)
+
23#include "directx/d3dx12.h"
+
24#include <wrl.h>
+
25#endif
+
26
+
27namespace ne {
+
28#if defined(WIN32)
+
29 using namespace Microsoft::WRL;
+
30#endif
+
31
+
32 class Renderer;
+
33 class Pipeline;
+
34 class ComputeShaderInterface;
+
35 class VulkanPipeline;
+
36
+ +
40 alignas(iVkVec4Alignment) glm::mat4 viewProjectionMatrix = glm::identity<glm::mat4>();
+
41
+
43 alignas(iVkVec4Alignment) glm::vec4 position = glm::vec4(0.0F, 0.0F, 0.0F, 1.0F);
+
44 };
+
45
+ +
51 // Only renderer is allowed to create and update resources of this manager.
+
52 friend class Renderer;
+
53
+
54 public:
+ +
58 alignas(iVkVec4Alignment) glm::vec4 ambientLight = glm::vec4(0.0F, 0.0F, 0.0F, 1.0F);
+
59
+
61 alignas(iVkScalarAlignment) unsigned int iPointLightCountInCameraFrustum = 0;
+
62
+
64 alignas(iVkScalarAlignment) unsigned int iDirectionalLightCount = 0;
+
65
+
67 alignas(iVkScalarAlignment) unsigned int iSpotLightCountInCameraFrustum = 0;
+
68 };
+
69
+
71 struct GpuData {
+
72 GpuData() = default;
+
73
+
75 std::array<std::unique_ptr<UploadBuffer>, FrameResourceManager::getFrameResourceCount()>
+ +
77
+ +
84 };
+
85
+ +
87
+ +
89
+ +
96
+
102 static std::string getPointLightsShaderResourceName();
+
103
+
109 static std::string getDirectionalLightsShaderResourceName();
+
110
+
116 static std::string getSpotlightsShaderResourceName();
+
117
+ +
125
+ +
133
+ +
141
+ +
149
+
150#if defined(WIN32)
+
163 inline void setShadowPassLightInfoViewToCommandList(
+
164 DirectXPso* pPso,
+
165 const ComPtr<ID3D12GraphicsCommandList>& pCommandList,
+
166 size_t iCurrentFrameResourceIndex) {
+
167 // Lock internal resources.
+
168 std::scoped_lock gpuDataGuard(mtxGpuData.first);
+
169
+
170 auto& pipelineData = pPso->getInternalResources()->second;
+
171
+
172#if defined(DEBUG)
+
173 // Self check: make sure this resource is actually being used in the PSO.
+
174 if (pipelineData.rootParameterIndices.find(sShadowPassLightInfoShaderResourceName) ==
+
175 pipelineData.rootParameterIndices.end()) [[unlikely]] {
+
176 Error error(std::format(
+
177 "shader resource \"{}\" is not used in the shaders of the specified PSO \"{}\" "
+
178 "but you are attempting to set this resource to a command list",
+ +
180 pPso->getPipelineIdentifier()));
+
181 error.showError();
+
182 throw std::runtime_error(error.getFullErrorMessage());
+
183 }
+
184#endif
+
185
+
186 // Bind array.
+
187 setLightingArrayViewToCommandList(
+
188 pPso,
+
189 pCommandList,
+
190 iCurrentFrameResourceIndex,
+ + +
193 pipelineData.vSpecialRootParameterIndices[static_cast<size_t>(
+
194 SpecialRootParameterSlot::SHADOW_PASS_LIGHT_INFO)]);
+
195 }
+
196#endif
+
197
+
198#if defined(WIN32)
+
214 static inline void setLightingArrayViewToCommandList(
+
215 DirectXPso* pPso,
+
216 const ComPtr<ID3D12GraphicsCommandList>& pCommandList,
+
217 size_t iCurrentFrameResourceIndex,
+
218 const std::unique_ptr<ShaderLightArray>& pArray,
+
219 const std::string& sArrayNameInShaders,
+
220 UINT iArrayRootParameterIndex) {
+
221 std::scoped_lock lightsGuard(pArray->mtxResources.first);
+
222
+
223#if defined(DEBUG)
+
224 // Self check: make sure this resource is actually being used in the PSO.
+
225 if (pPso->getInternalResources()->second.rootParameterIndices.find(sArrayNameInShaders) ==
+
226 pPso->getInternalResources()->second.rootParameterIndices.end()) [[unlikely]] {
+
227 Error error(std::format(
+
228 "shader resource \"{}\" is not used in the shaders of the specified PSO \"{}\" "
+
229 "but you are attempting to set this resource to a command list",
+
230 sArrayNameInShaders,
+
231 pPso->getPipelineIdentifier()));
+
232 error.showError();
+
233 throw std::runtime_error(error.getFullErrorMessage());
+
234 }
+
235#endif
+
236
+
237 // Bind lights array
+
238 // (resource is guaranteed to be not `nullptr`, see field docs).
+
239 pCommandList->SetGraphicsRootShaderResourceView(
+
240 iArrayRootParameterIndex,
+
241 reinterpret_cast<DirectXResource*>(
+
242 pArray->mtxResources.second.vGpuArrayLightDataResources[iCurrentFrameResourceIndex]
+
243 ->getInternalResource())
+
244 ->getInternalResource()
+
245 ->GetGPUVirtualAddress());
+
246 }
+
247#endif
+
248
+
256 ShaderLightArray* getPointLightDataArray() const;
+
257
+
265 ShaderLightArray* getDirectionalLightDataArray() const;
+
266
+
274 ShaderLightArray* getSpotlightDataArray() const;
+
275
+
283 ShaderLightArray* getShadowPassLightInfoArray() const;
+
284
+
293 [[nodiscard]] std::optional<Error> bindDescriptorsToRecreatedPipelineResources();
+
294
+
305 [[nodiscard]] std::optional<Error> updateDescriptorsForPipelineResource(Pipeline* pPipeline);
+
306
+
314 std::pair<std::recursive_mutex, GpuData>* getInternalResources();
+
315
+
316#if defined(WIN32)
+
329 inline void setResourceViewToCommandList(
+
330 DirectXPso* pPso,
+
331 const ComPtr<ID3D12GraphicsCommandList>& pCommandList,
+
332 size_t iCurrentFrameResourceIndex) {
+
333 // Lock internal resources.
+
334 std::scoped_lock gpuDataGuard(mtxGpuData.first);
+
335
+
336 auto& pipelineData = pPso->getInternalResources()->second;
+
337
+
338#if defined(DEBUG)
+
339 // Self check: make sure this resource is actually being used in the PSO.
+
340 if (pipelineData.rootParameterIndices.find(sGeneralLightingDataShaderResourceName) ==
+
341 pipelineData.rootParameterIndices.end()) [[unlikely]] {
+
342 Error error(std::format(
+
343 "shader resource \"{}\" is not used in the shaders of the specified PSO \"{}\" "
+
344 "but you are attempting to set this resource to a command list",
+ +
346 pPso->getPipelineIdentifier()));
+
347 error.showError();
+
348 throw std::runtime_error(error.getFullErrorMessage());
+
349 }
+
350#endif
+
351
+
352 // Bind general lighting resources buffer.
+
353 pCommandList->SetGraphicsRootConstantBufferView(
+
354 pipelineData.vSpecialRootParameterIndices[static_cast<size_t>(
+
355 SpecialRootParameterSlot::GENERAL_LIGHTING)],
+
356 reinterpret_cast<DirectXResource*>(
+
357 mtxGpuData.second.vGeneralDataGpuResources[iCurrentFrameResourceIndex]
+
358 ->getInternalResource())
+
359 ->getInternalResource()
+
360 ->GetGPUVirtualAddress());
+
361
+
362 // Bind point lights array.
+
363 setLightingArrayViewToCommandList(
+
364 pPso,
+
365 pCommandList,
+
366 iCurrentFrameResourceIndex,
+ + +
369 pipelineData.vSpecialRootParameterIndices[static_cast<size_t>(
+
370 SpecialRootParameterSlot::POINT_LIGHTS)]);
+
371
+
372 // Bind directional lights array.
+
373 setLightingArrayViewToCommandList(
+
374 pPso,
+
375 pCommandList,
+
376 iCurrentFrameResourceIndex,
+ + +
379 pipelineData.vSpecialRootParameterIndices[static_cast<size_t>(
+
380 SpecialRootParameterSlot::DIRECTIONAL_LIGHTS)]);
+
381
+
382 // Bind spotlights array.
+
383 setLightingArrayViewToCommandList(
+
384 pPso,
+
385 pCommandList,
+
386 iCurrentFrameResourceIndex,
+ + +
389 pipelineData.vSpecialRootParameterIndices[static_cast<size_t>(
+
390 SpecialRootParameterSlot::SPOT_LIGHTS)]);
+
391
+
392#if defined(DEBUG)
+
393 static_assert(sizeof(LightArrays) == 32, "consider adding new arrays here"); // NOLINT
+
394#endif
+
395 }
+
396
+
408 inline void setOpaqueLightGridResourcesViewToCommandList(
+
409 DirectXPso* pPso, const ComPtr<ID3D12GraphicsCommandList>& pCommandList) const {
+
410 auto& pipelineData = pPso->getInternalResources()->second;
+
411
+
412 // Bind point light index list.
+
413 pCommandList->SetGraphicsRootUnorderedAccessView(
+
414 pipelineData.vSpecialRootParameterIndices[static_cast<size_t>(
+
415 SpecialRootParameterSlot::LIGHT_CULLING_POINT_LIGHT_INDEX_LIST)],
+
416 reinterpret_cast<DirectXResource*>(
+ +
418 ->getInternalResource()
+
419 ->GetGPUVirtualAddress());
+
420
+
421 // Bind spotlight index list.
+
422 pCommandList->SetGraphicsRootUnorderedAccessView(
+
423 pipelineData.vSpecialRootParameterIndices[static_cast<size_t>(
+
424 SpecialRootParameterSlot::LIGHT_CULLING_SPOT_LIGHT_INDEX_LIST)],
+
425 reinterpret_cast<DirectXResource*>(
+ +
427 ->getInternalResource()
+
428 ->GetGPUVirtualAddress());
+
429
+
430 // Bind point light grid.
+
431 pCommandList->SetGraphicsRootDescriptorTable(
+
432 pipelineData.vSpecialRootParameterIndices[static_cast<size_t>(
+
433 SpecialRootParameterSlot::LIGHT_CULLING_POINT_LIGHT_GRID)],
+
434 *reinterpret_cast<DirectXResource*>(
+ +
436 ->getBindedDescriptorGpuHandle(DirectXDescriptorType::UAV));
+
437
+
438 // Bind spotlight light grid.
+
439 pCommandList->SetGraphicsRootDescriptorTable(
+
440 pipelineData.vSpecialRootParameterIndices[static_cast<size_t>(
+
441 SpecialRootParameterSlot::LIGHT_CULLING_SPOT_LIGHT_GRID)],
+
442 *reinterpret_cast<DirectXResource*>(
+ +
444 ->getBindedDescriptorGpuHandle(DirectXDescriptorType::UAV));
+
445 }
+
446
+
458 inline void setTransparentLightGridResourcesViewToCommandList(
+
459 DirectXPso* pPso, const ComPtr<ID3D12GraphicsCommandList>& pCommandList) const {
+
460 auto& pipelineData = pPso->getInternalResources()->second;
+
461
+
462 // Bind point light index list.
+
463 pCommandList->SetGraphicsRootUnorderedAccessView(
+
464 pipelineData.vSpecialRootParameterIndices[static_cast<size_t>(
+
465 SpecialRootParameterSlot::LIGHT_CULLING_POINT_LIGHT_INDEX_LIST)],
+
466 reinterpret_cast<DirectXResource*>(
+ +
468 ->getInternalResource()
+
469 ->GetGPUVirtualAddress());
+
470
+
471 // Bind spotlight index list.
+
472 pCommandList->SetGraphicsRootUnorderedAccessView(
+
473 pipelineData.vSpecialRootParameterIndices[static_cast<size_t>(
+
474 SpecialRootParameterSlot::LIGHT_CULLING_SPOT_LIGHT_INDEX_LIST)],
+
475 reinterpret_cast<DirectXResource*>(
+ +
477 ->getInternalResource()
+
478 ->GetGPUVirtualAddress());
+
479
+
480 // Bind point light grid.
+
481 pCommandList->SetGraphicsRootDescriptorTable(
+
482 pipelineData.vSpecialRootParameterIndices[static_cast<size_t>(
+
483 SpecialRootParameterSlot::LIGHT_CULLING_POINT_LIGHT_GRID)],
+
484 *reinterpret_cast<DirectXResource*>(
+ +
486 ->getBindedDescriptorGpuHandle(DirectXDescriptorType::UAV));
+
487
+
488 // Bind spotlight light grid.
+
489 pCommandList->SetGraphicsRootDescriptorTable(
+
490 pipelineData.vSpecialRootParameterIndices[static_cast<size_t>(
+
491 SpecialRootParameterSlot::LIGHT_CULLING_SPOT_LIGHT_GRID)],
+
492 *reinterpret_cast<DirectXResource*>(
+ +
494 ->getBindedDescriptorGpuHandle(DirectXDescriptorType::UAV));
+
495 }
+
496
+
497#endif
+
498
+
499 private:
+
501 struct LightArrays {
+
503 std::unique_ptr<ShaderLightArray> pPointLightDataArray;
+
504
+
506 std::unique_ptr<ShaderLightArray> pDirectionalLightDataArray;
+
507
+
509 std::unique_ptr<ShaderLightArray> pSpotlightDataArray;
+
510
+
512 std::unique_ptr<ShaderLightArray> pShadowPassLightInfoArray;
+
513 };
+
514
+ +
522 struct Plane {
+
524 glm::vec3 normal;
+
525
+ +
528 };
+
529
+
535 struct Frustum {
+ +
538 };
+
539
+ +
544 struct ComputeInfo {
+
546 alignas(iVkScalarAlignment) unsigned int iThreadGroupCountX = 0;
+
547
+
549 alignas(iVkScalarAlignment) unsigned int iThreadGroupCountY = 0;
+
550
+
552 alignas(iVkScalarAlignment) unsigned int iTileCountX = 0;
+
553
+
555 alignas(iVkScalarAlignment) unsigned int iTileCountY = 0;
+
556 };
+
557
+ +
561 alignas(iVkMat4Alignment) glm::mat4 inverseProjectionMatrix = glm::identity<glm::mat4>();
+
562
+
564 alignas(iVkScalarAlignment) unsigned int iRenderTargetWidth = 0;
+
565
+
567 alignas(iVkScalarAlignment) unsigned int iRenderTargetHeight = 0;
+
568 };
+
569
+ +
576 std::unique_ptr<UploadBuffer> pComputeInfo;
+
577
+
582 std::unique_ptr<UploadBuffer> pScreenToViewData;
+
583
+
585 std::unique_ptr<GpuResource> pCalculatedFrustums;
+
586 };
+
587
+ +
597 [[nodiscard]] std::optional<Error> initialize(Renderer* pRenderer);
+
598
+
608 [[nodiscard]] std::optional<Error> updateDataAndSubmitShader(
+ +
610 const std::pair<unsigned int, unsigned int>& renderTargetSize,
+
611 const glm::mat4& inverseProjectionMatrix);
+
612
+
614 std::unique_ptr<ComputeShaderInterface> pComputeInterface;
+
615
+ +
618
+
623 unsigned int iLastUpdateTileCountX = 0;
+
624
+
629 unsigned int iLastUpdateTileCountY = 0;
+
630
+
632 bool bIsInitialized = false;
+
633
+
638 static inline const auto sComputeInfoShaderResourceName = "computeInfo";
+
639
+
644 static inline const auto sScreenToViewDataShaderResourceName = "screenToViewData";
+
645
+
650 static inline const auto sCalculatedFrustumsShaderResourceName = "calculatedFrustums";
+
651 };
+
652 };
+
653
+ + +
659 alignas(iVkScalarAlignment) unsigned int iPointLightListOpaque = 0;
+
660
+
662 alignas(iVkScalarAlignment) unsigned int iSpotlightListOpaque = 0;
+
663
+
665 alignas(iVkScalarAlignment) unsigned int iPointLightListTransparent = 0;
+
666
+
668 alignas(iVkScalarAlignment) unsigned int iSpotlightListTransparent = 0;
+
669 };
+
670
+ +
676 alignas(iVkScalarAlignment) unsigned int iThreadGroupCountX = 0;
+
677
+
679 alignas(iVkScalarAlignment) unsigned int iThreadGroupCountY = 0;
+
680 };
+
681
+ +
688 std::unique_ptr<UploadBuffer> pThreadGroupCount;
+
689
+
691 std::unique_ptr<GpuResource> pGlobalCountersIntoLightIndexList;
+
692
+
694 std::unique_ptr<GpuResource> pOpaquePointLightIndexList;
+
695
+
697 std::unique_ptr<GpuResource> pOpaqueSpotLightIndexList;
+
698
+
700 std::unique_ptr<GpuResource> pTransparentPointLightIndexList;
+
701
+
703 std::unique_ptr<GpuResource> pTransparentSpotLightIndexList;
+
704
+
709 std::unique_ptr<GpuResource> pOpaquePointLightGrid;
+
710
+
715 std::unique_ptr<GpuResource> pOpaqueSpotLightGrid;
+
716
+
721 std::unique_ptr<GpuResource> pTransparentPointLightGrid;
+
722
+
727 std::unique_ptr<GpuResource> pTransparentSpotLightGrid;
+
728
+ +
734
+ +
740 };
+
741
+ +
753 [[nodiscard]] std::optional<Error> initialize(
+ +
755 const FrustumGridComputeShader::ComputeShader& frustumGridShader);
+
756
+
771 [[nodiscard]] std::variant<bool, Error> createLightIndexListsAndLightGrid(
+
772 Renderer* pRenderer, size_t iTileCountX, size_t iTileCountY);
+
773
+
796 [[nodiscard]] std::optional<Error> queueExecutionForNextFrame(
+ +
798 FrameResource* pCurrentFrameResource,
+
799 size_t iCurrentFrameResourceIndex,
+
800 GpuResource* pGeneralLightingData,
+
801 GpuResource* pPointLightArray,
+
802 GpuResource* pSpotlightArray,
+
803 GpuResource* pNonCulledPointLightsIndicesArray,
+
804 GpuResource* pNonCulledSpotlightsIndicesArray) const;
+
805
+
807 std::unique_ptr<ComputeShaderInterface> pComputeInterface;
+
808
+ +
811
+ +
814
+
816 bool bIsInitialized = false;
+
817
+
822 static inline const auto sDepthTextureShaderResourceName = "depthTexture";
+
823
+
828 static inline const auto sThreadGroupCountShaderResourceName = "threadGroupCount";
+
829
+ +
835 "globalCountersIntoLightIndexList";
+
836 };
+
837 };
+
838 };
+
839
+
847 static std::unique_ptr<LightingShaderResourceManager> create(Renderer* pRenderer);
+
848
+ +
855
+
865 [[nodiscard]] std::optional<Error> recalculateLightTileFrustums(
+
866 const std::pair<unsigned int, unsigned int>& renderTargetSize,
+
867 const glm::mat4& inverseProjectionMatrix);
+
868
+ +
876
+
884 void setAmbientLight(const glm::vec3& ambientLight);
+
885
+
900 void updateResources(FrameResource* pCurrentFrameResource, size_t iCurrentFrameResourceIndex);
+
901
+
907 void onPointLightArraySizeChanged(size_t iNewSize);
+
908
+
915 void onPointLightsInFrustumCulled(size_t iCurrentFrameResourceIndex);
+
916
+
922 void onDirectionalLightArraySizeChanged(size_t iNewSize);
+
923
+
929 void onSpotlightArraySizeChanged(size_t iNewSize);
+
930
+
937 void onSpotlightsInFrustumCulled(size_t iCurrentFrameResourceIndex);
+
938
+
945 void copyDataToGpu(size_t iCurrentFrameResourceIndex);
+
946
+
955 [[nodiscard]] std::optional<Error> rebindGpuDataToAllPipelines();
+
956
+
967 [[nodiscard]] std::optional<Error> rebindGpuDataToPipelineIfUsed(Pipeline* pPipeline);
+
968
+ +
971
+
973 std::pair<std::recursive_mutex, GpuData> mtxGpuData;
+
974
+ +
977
+ +
980
+
982 std::unique_ptr<ComputeShaderInterface> pPrepareLightCullingComputeInterface;
+
983
+
985 Renderer* pRenderer = nullptr;
+
986
+ +
989
+
991 static inline const std::string sGeneralLightingDataShaderResourceName = "generalLightingData";
+
992
+
994 static inline const std::string sPointLightsShaderResourceName = "pointLights";
+
995
+
997 static inline const std::string sDirectionalLightsShaderResourceName = "directionalLights";
+
998
+
1000 static inline const std::string sSpotlightsShaderResourceName = "spotlights";
+
1001
+ +
1004 "pointLightsInCameraFrustumIndices";
+
1005
+ +
1008 "spotlightsInCameraFrustumIndices";
+
1009
+
1014 static inline const std::string sShadowPassLightInfoShaderResourceName = "shadowPassLightInfo";
+
1015
+
1017 static constexpr auto generalLightingDataDescriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
+
1018 };
+
1019}
+
Definition: DirectXPso.h:22
+
std::pair< std::recursive_mutex, InternalResources > * getInternalResources()
Definition: DirectXPso.h:131
+
Definition: Error.h:27
+
static constexpr unsigned int getFrameResourceCount()
Definition: FrameResourceManager.h:74
+
Definition: GpuResource.h:16
+
Definition: LightingShaderResourceManager.h:50
+
ShaderLightArray * getPointLightDataArray() const
Definition: LightingShaderResourceManager.cpp:19
+
static std::unique_ptr< LightingShaderResourceManager > create(Renderer *pRenderer)
Definition: LightingShaderResourceManager.cpp:1328
+
std::unique_ptr< ComputeShaderInterface > pPrepareLightCullingComputeInterface
Definition: LightingShaderResourceManager.h:982
+
std::optional< Error > bindDescriptorsToRecreatedPipelineResources()
Definition: LightingShaderResourceManager.cpp:35
+
LightArrays lightArrays
Definition: LightingShaderResourceManager.h:970
+
ShaderLightArray * getSpotlightDataArray() const
Definition: LightingShaderResourceManager.cpp:27
+
void setAmbientLight(const glm::vec3 &ambientLight)
Definition: LightingShaderResourceManager.cpp:1273
+
void updateResources(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex)
Definition: LightingShaderResourceManager.cpp:131
+
static const std::string sSpotlightsInCameraFrustumIndicesShaderResourceName
Definition: LightingShaderResourceManager.h:1007
+
void onSpotlightsInFrustumCulled(size_t iCurrentFrameResourceIndex)
Definition: LightingShaderResourceManager.cpp:294
+
void onDirectionalLightArraySizeChanged(size_t iNewSize)
Definition: LightingShaderResourceManager.cpp:245
+
static const std::string sGeneralLightingDataShaderResourceName
Definition: LightingShaderResourceManager.h:991
+
static std::string getGeneralLightingDataShaderResourceName()
Definition: LightingShaderResourceManager.cpp:1299
+
static const std::string sShadowPassLightInfoShaderResourceName
Definition: LightingShaderResourceManager.h:1014
+
ComputeShaderData::FrustumGridComputeShader::ComputeShader frustumGridComputeShaderData
Definition: LightingShaderResourceManager.h:976
+
std::optional< Error > rebindGpuDataToPipelineIfUsed(Pipeline *pPipeline)
Definition: LightingShaderResourceManager.cpp:361
+
static const std::string sDirectionalLightsShaderResourceName
Definition: LightingShaderResourceManager.h:997
+
Renderer * pRenderer
Definition: LightingShaderResourceManager.h:985
+
ShaderLightArray * getShadowPassLightInfoArray() const
Definition: LightingShaderResourceManager.cpp:31
+
static const std::string sPointLightsInCameraFrustumIndicesShaderResourceName
Definition: LightingShaderResourceManager.h:1003
+
static std::string getPointLightWorldLocationsShaderResourceName()
+
std::optional< Error > recalculateLightTileFrustums(const std::pair< unsigned int, unsigned int > &renderTargetSize, const glm::mat4 &inverseProjectionMatrix)
Definition: LightingShaderResourceManager.cpp:1158
+
void onPointLightArraySizeChanged(size_t iNewSize)
Definition: LightingShaderResourceManager.cpp:196
+
std::pair< std::recursive_mutex, GpuData > * getInternalResources()
Definition: LightingShaderResourceManager.cpp:127
+
static const std::string sSpotlightsShaderResourceName
Definition: LightingShaderResourceManager.h:1000
+
std::optional< Error > rebindGpuDataToAllPipelines()
Definition: LightingShaderResourceManager.cpp:327
+
void onPointLightsInFrustumCulled(size_t iCurrentFrameResourceIndex)
Definition: LightingShaderResourceManager.cpp:220
+
ComputeShaderData::LightCullingComputeShader::ComputeShader lightCullingComputeShaderData
Definition: LightingShaderResourceManager.h:979
+
static std::string getPointLightsShaderResourceName()
Definition: LightingShaderResourceManager.cpp:1303
+
void onEngineShadersCompiled()
Definition: LightingShaderResourceManager.cpp:1271
+
static std::string getShadowPassLightInfoArrayShaderResourceName()
Definition: LightingShaderResourceManager.cpp:1323
+
std::optional< Error > updateDescriptorsForPipelineResource(Pipeline *pPipeline)
Definition: LightingShaderResourceManager.cpp:81
+
ShaderLightArray * getDirectionalLightDataArray() const
Definition: LightingShaderResourceManager.cpp:23
+
static std::string getSpotlightsShaderResourceName()
Definition: LightingShaderResourceManager.cpp:1311
+
static std::string getSpotlightsInCameraFrustumIndicesShaderResourceName()
Definition: LightingShaderResourceManager.cpp:1319
+
static std::string getPointLightsInCameraFrustumIndicesShaderResourceName()
Definition: LightingShaderResourceManager.cpp:1315
+
void onSpotlightArraySizeChanged(size_t iNewSize)
Definition: LightingShaderResourceManager.cpp:270
+
static std::string getDirectionalLightsShaderResourceName()
Definition: LightingShaderResourceManager.cpp:1307
+
bool bEngineShadersCompiled
Definition: LightingShaderResourceManager.h:988
+
static const std::string sPointLightsShaderResourceName
Definition: LightingShaderResourceManager.h:994
+
static constexpr auto generalLightingDataDescriptorType
Definition: LightingShaderResourceManager.h:1017
+
void copyDataToGpu(size_t iCurrentFrameResourceIndex)
Definition: LightingShaderResourceManager.cpp:319
+
std::pair< std::recursive_mutex, GpuData > mtxGpuData
Definition: LightingShaderResourceManager.h:973
+
Definition: Pipeline.h:20
+
std::string getPipelineIdentifier() const
Definition: Pipeline.cpp:189
+
Definition: Renderer.h:44
+
Definition: FrameResource.h:15
+ +
unsigned int iThreadGroupCountY
Definition: LightingShaderResourceManager.h:549
+
unsigned int iTileCountX
Definition: LightingShaderResourceManager.h:552
+
unsigned int iThreadGroupCountX
Definition: LightingShaderResourceManager.h:546
+
unsigned int iTileCountY
Definition: LightingShaderResourceManager.h:555
+ +
ShaderResources resources
Definition: LightingShaderResourceManager.h:617
+
static const auto sCalculatedFrustumsShaderResourceName
Definition: LightingShaderResourceManager.h:650
+
static const auto sScreenToViewDataShaderResourceName
Definition: LightingShaderResourceManager.h:644
+
std::optional< Error > initialize(Renderer *pRenderer)
Definition: LightingShaderResourceManager.cpp:726
+
std::unique_ptr< ComputeShaderInterface > pComputeInterface
Definition: LightingShaderResourceManager.h:614
+
unsigned int iLastUpdateTileCountY
Definition: LightingShaderResourceManager.h:629
+
unsigned int iLastUpdateTileCountX
Definition: LightingShaderResourceManager.h:623
+
static const auto sComputeInfoShaderResourceName
Definition: LightingShaderResourceManager.h:638
+
std::optional< Error > updateDataAndSubmitShader(Renderer *pRenderer, const std::pair< unsigned int, unsigned int > &renderTargetSize, const glm::mat4 &inverseProjectionMatrix)
Definition: LightingShaderResourceManager.cpp:637
+ + +
unsigned int iRenderTargetWidth
Definition: LightingShaderResourceManager.h:564
+ +
unsigned int iRenderTargetHeight
Definition: LightingShaderResourceManager.h:567
+ +
std::unique_ptr< GpuResource > pCalculatedFrustums
Definition: LightingShaderResourceManager.h:585
+
std::unique_ptr< UploadBuffer > pComputeInfo
Definition: LightingShaderResourceManager.h:576
+
std::unique_ptr< UploadBuffer > pScreenToViewData
Definition: LightingShaderResourceManager.h:582
+ +
Definition: LightingShaderResourceManager.h:535
+
Plane planes[4]
Definition: LightingShaderResourceManager.h:537
+ + +
std::variant< bool, Error > createLightIndexListsAndLightGrid(Renderer *pRenderer, size_t iTileCountX, size_t iTileCountY)
Definition: LightingShaderResourceManager.cpp:890
+
static const auto sGlobalCountersIntoLightIndexListShaderResourceName
Definition: LightingShaderResourceManager.h:834
+
ShaderResources resources
Definition: LightingShaderResourceManager.h:810
+
ThreadGroupCount threadGroupCount
Definition: LightingShaderResourceManager.h:813
+
std::optional< Error > initialize(Renderer *pRenderer, const FrustumGridComputeShader::ComputeShader &frustumGridShader)
Definition: LightingShaderResourceManager.cpp:802
+
std::optional< Error > queueExecutionForNextFrame(Renderer *pRenderer, FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, GpuResource *pGeneralLightingData, GpuResource *pPointLightArray, GpuResource *pSpotlightArray, GpuResource *pNonCulledPointLightsIndicesArray, GpuResource *pNonCulledSpotlightsIndicesArray) const
Definition: LightingShaderResourceManager.cpp:1044
+
static const auto sThreadGroupCountShaderResourceName
Definition: LightingShaderResourceManager.h:828
+
static const auto sDepthTextureShaderResourceName
Definition: LightingShaderResourceManager.h:822
+
std::unique_ptr< ComputeShaderInterface > pComputeInterface
Definition: LightingShaderResourceManager.h:807
+ + + + + + +
std::unique_ptr< GpuResource > pOpaqueSpotLightGrid
Definition: LightingShaderResourceManager.h:715
+ +
std::unique_ptr< UploadBuffer > pThreadGroupCount
Definition: LightingShaderResourceManager.h:688
+
std::unique_ptr< GpuResource > pTransparentPointLightGrid
Definition: LightingShaderResourceManager.h:721
+
std::unique_ptr< GpuResource > pTransparentSpotLightIndexList
Definition: LightingShaderResourceManager.h:703
+ +
std::unique_ptr< GpuResource > pOpaquePointLightIndexList
Definition: LightingShaderResourceManager.h:694
+
std::unique_ptr< GpuResource > pGlobalCountersIntoLightIndexList
Definition: LightingShaderResourceManager.h:691
+
std::unique_ptr< GpuResource > pOpaquePointLightGrid
Definition: LightingShaderResourceManager.h:709
+
std::unique_ptr< GpuResource > pOpaqueSpotLightIndexList
Definition: LightingShaderResourceManager.h:697
+
std::unique_ptr< GpuResource > pTransparentPointLightIndexList
Definition: LightingShaderResourceManager.h:700
+
std::unique_ptr< GpuResource > pTransparentSpotLightGrid
Definition: LightingShaderResourceManager.h:727
+ +
unsigned int iThreadGroupCountY
Definition: LightingShaderResourceManager.h:679
+
unsigned int iThreadGroupCountX
Definition: LightingShaderResourceManager.h:676
+ +
Definition: LightingShaderResourceManager.h:522
+
glm::vec3 normal
Definition: LightingShaderResourceManager.h:524
+
float distanceFromOrigin
Definition: LightingShaderResourceManager.h:527
+
Definition: LightingShaderResourceManager.h:516
+
Definition: LightingShaderResourceManager.h:56
+
glm::vec4 ambientLight
Definition: LightingShaderResourceManager.h:58
+
unsigned int iPointLightCountInCameraFrustum
Definition: LightingShaderResourceManager.h:61
+
unsigned int iSpotLightCountInCameraFrustum
Definition: LightingShaderResourceManager.h:67
+
unsigned int iDirectionalLightCount
Definition: LightingShaderResourceManager.h:64
+
Definition: LightingShaderResourceManager.h:71
+
std::array< std::unique_ptr< UploadBuffer >, FrameResourceManager::getFrameResourceCount()> vGeneralDataGpuResources
Definition: LightingShaderResourceManager.h:76
+
GeneralLightingShaderData generalData
Definition: LightingShaderResourceManager.h:83
+
Definition: LightingShaderResourceManager.h:501
+
std::unique_ptr< ShaderLightArray > pShadowPassLightInfoArray
Definition: LightingShaderResourceManager.h:512
+
std::unique_ptr< ShaderLightArray > pSpotlightDataArray
Definition: LightingShaderResourceManager.h:509
+
std::unique_ptr< ShaderLightArray > pDirectionalLightDataArray
Definition: LightingShaderResourceManager.h:506
+
std::unique_ptr< ShaderLightArray > pPointLightDataArray
Definition: LightingShaderResourceManager.h:503
+
Definition: LightingShaderResourceManager.h:38
+
glm::vec4 position
Definition: LightingShaderResourceManager.h:43
+
glm::mat4 viewProjectionMatrix
Definition: LightingShaderResourceManager.h:40
+
+
+ + + + diff --git a/Logger_8h_source.html b/Logger_8h_source.html new file mode 100644 index 000000000..9d57d2c52 --- /dev/null +++ b/Logger_8h_source.html @@ -0,0 +1,184 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/io/Logger.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Logger.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <memory>
+
5#include <filesystem>
+
6#include <source_location>
+
7
+
8// External.
+
9#include "spdlog/spdlog.h"
+
10
+
11namespace ne {
+
15 class Logger {
+
16 public:
+
17 Logger(const Logger&) = delete;
+
18 Logger& operator=(const Logger&) = delete;
+
19 ~Logger();
+
20
+
28 static Logger& get();
+
29
+
35 static size_t getTotalWarningsProduced();
+
36
+
42 static size_t getTotalErrorsProduced();
+
43
+
51 void info(
+
52 std::string_view sText,
+
53 const std::source_location location = std::source_location::current()) const; // NOLINT
+
54
+
64 void warn(
+
65 std::string_view sText,
+
66 const std::source_location location = std::source_location::current()) const; // NOLINT
+
67
+
77 void error(
+
78 std::string_view sText,
+
79 const std::source_location location = std::source_location::current()) const; // NOLINT
+
80
+
89 void flushToDisk();
+
90
+
96 std::filesystem::path getDirectoryWithLogs() const;
+
97
+
98 private:
+
99 Logger();
+
100
+
106 static std::string getDateTime();
+
107
+
113 static void removeOldestLogFiles(const std::filesystem::path& sLogDirectory);
+
114
+
118 std::unique_ptr<spdlog::logger> pSpdLogger = nullptr;
+
119
+
123 std::filesystem::path sLoggerWorkingDirectory;
+
124
+
126 inline static std::atomic<size_t> iTotalWarningsProduced{0};
+
127
+
129 inline static std::atomic<size_t> iTotalErrorsProduced{0};
+
130
+
136 inline static constexpr size_t iMaxLogFiles = 5;
+
137
+
139 inline static const char* sLogFileExtension = ".log";
+
140 };
+
141} // namespace ne
+
Definition: Logger.h:15
+
static size_t getTotalErrorsProduced()
Definition: Logger.cpp:48
+
void info(std::string_view sText, const std::source_location location=std::source_location::current()) const
Definition: Logger.cpp:50
+
static std::string getDateTime()
Definition: Logger.cpp:124
+
std::filesystem::path sLoggerWorkingDirectory
Definition: Logger.h:123
+
std::filesystem::path getDirectoryWithLogs() const
Definition: Logger.cpp:90
+
std::unique_ptr< spdlog::logger > pSpdLogger
Definition: Logger.h:118
+
static std::atomic< size_t > iTotalErrorsProduced
Definition: Logger.h:129
+
void error(std::string_view sText, const std::source_location location=std::source_location::current()) const
Definition: Logger.cpp:75
+
static std::atomic< size_t > iTotalWarningsProduced
Definition: Logger.h:126
+
static const char * sLogFileExtension
Definition: Logger.h:139
+
static size_t getTotalWarningsProduced()
Definition: Logger.cpp:46
+
static Logger & get()
Definition: Logger.cpp:41
+
static constexpr size_t iMaxLogFiles
Definition: Logger.h:136
+
static void removeOldestLogFiles(const std::filesystem::path &sLogDirectory)
Definition: Logger.cpp:142
+
void flushToDisk()
Definition: Logger.cpp:88
+
void warn(std::string_view sText, const std::source_location location=std::source_location::current()) const
Definition: Logger.cpp:62
+
+
+ + + + diff --git a/Material_8h_source.html b/Material_8h_source.html new file mode 100644 index 000000000..a1aaedfb5 --- /dev/null +++ b/Material_8h_source.html @@ -0,0 +1,399 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/material/Material.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Material.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <string>
+
5#include <unordered_map>
+
6
+
7// Custom.
+
8#include "io/Serializable.h"
+
9#include "shader/general/ShaderMacro.h"
+
10#include "math/GLMath.hpp"
+
11#include "shader/general/resource/binding/cpuwrite/ShaderCpuWriteResourceBindingUniquePtr.h"
+
12#include "shader/general/resource/binding/texture/ShaderTextureResourceBindingUniquePtr.h"
+
13#include "shader/VulkanAlignmentConstants.hpp"
+
14#include "render/general/resource/MeshData.h"
+
15#include "render/general/pipeline/PipelineSharedPtr.h"
+
16
+
17#include "Material.generated.h"
+
18
+
19namespace ne RNAMESPACE() {
+
20 class MeshNode;
+
21 class GpuResource;
+
22 class Pipeline;
+
23 class PipelineManager;
+
24
+ +
32 size_t getTotalSize() const { return visibleMeshNodes.size() + invisibleMeshNodes.size(); }
+
33
+
41 bool isMeshNodeAdded(MeshNode* pMeshNode) {
+
42 auto it = visibleMeshNodes.find(pMeshNode);
+
43 if (it != visibleMeshNodes.end()) {
+
44 return true;
+
45 }
+
46
+
47 it = invisibleMeshNodes.find(pMeshNode);
+
48 if (it != invisibleMeshNodes.end()) {
+
49 return true;
+
50 }
+
51
+
52 return false;
+
53 }
+
54
+
56 std::unordered_map<MeshNode*, std::vector<MeshIndexBufferInfo>> visibleMeshNodes;
+
57
+
59 std::unordered_map<MeshNode*, std::vector<MeshIndexBufferInfo>> invisibleMeshNodes;
+
60 };
+
61
+
63 class RCLASS(Guid("a603fa3a-e9c2-4c38-bb4c-76384ef001f4")) Material : public Serializable {
+
64 // Mesh node will notify the material when it's spawned/despawned.
+
65 friend class MeshNode;
+
66
+
67 public:
+
69 struct GpuResources {
+
70 GpuResources() = default;
+
71
+ +
74 ShaderResources() = default;
+
75
+
77 std::unordered_map<std::string, ShaderCpuWriteResourceBindingUniquePtr>
+ +
79
+
81 std::unordered_map<std::string, ShaderTextureResourceBindingUniquePtr> shaderTextureResources;
+
82 };
+
83
+ +
86 };
+
87
+
89 Material();
+
90
+
91 Material(const Material&) = delete;
+
92 Material& operator=(const Material&) = delete;
+
93
+
94 virtual ~Material() override;
+
95
+
101 static size_t getCurrentAliveMaterialCount();
+
102
+
116 static std::variant<std::unique_ptr<Material>, Error> create(
+
117 const std::string& sVertexShaderName,
+
118 const std::string& sPixelShaderName,
+
119 bool bUseTransparency,
+
120 const std::string& sMaterialName = "Material");
+
121
+
127 void setEnableTransparency(bool bEnable);
+
128
+
134 void setDiffuseColor(const glm::vec3& diffuseColor);
+
135
+
149 void setDiffuseTexture(const std::string& sTextureResourcePathRelativeRes);
+
150
+
156 void setSpecularColor(const glm::vec3& specularColor);
+
157
+
164 void setRoughness(float roughness);
+
165
+
174 void setOpacity(float opacity = 1.0F);
+
175
+
181 bool isTransparencyEnabled();
+
182
+
188 glm::vec3 getDiffuseColor() const;
+
189
+
195 glm::vec3 getSpecularColor() const;
+
196
+
203 std::string getPathToDiffuseTextureResource();
+
204
+
210 float getRoughness() const;
+
211
+
217 float getOpacity() const;
+
218
+
225 std::pair<std::mutex, MeshNodesThatUseThisMaterial>* getSpawnedMeshNodesThatUseThisMaterial();
+
226
+
232 std::string getMaterialName() const;
+
233
+
239 bool isUsingTransparency() const;
+
240
+
249 Pipeline* getColorPipeline() const;
+
250
+
259 Pipeline* getDepthOnlyPipeline() const;
+
260
+
270 Pipeline* getShadowMappingDirectionalSpotPipeline() const;
+
271
+
281 Pipeline* getShadowMappingPointPipeline() const;
+
282
+
288 inline std::pair<std::recursive_mutex, GpuResources>* getMaterialGpuResources() {
+
289 return &mtxGpuResources;
+
290 }
+
291
+
297 std::string getVertexShaderName() const;
+
298
+
304 std::string getPixelShaderName() const;
+
305
+
306 protected:
+
314 virtual void onAfterDeserialized() override;
+
315
+
316 private:
+ +
319 InternalResources() = default;
+
320
+ +
328
+ +
336
+ +
345
+ +
353 };
+
354
+ +
361 MaterialShaderConstants() = default;
+
362
+
364 alignas(iVkVec4Alignment) glm::vec4 diffuseColor = glm::vec4(1.0F, 1.0F, 1.0F, 1.0F);
+
365
+
367 alignas(iVkVec4Alignment) glm::vec4 specularColor = glm::vec4(1.0F, 1.0F, 1.0F, 1.0F);
+
368
+
370 alignas(iVkScalarAlignment) float roughness = 0.0F;
+
371
+
373 float pad[3];
+
374 };
+
375
+
387 static std::variant<PipelineManager*, Error> getPipelineManagerForNewMaterial(
+
388 const std::string& sVertexShaderName, const std::string& sPixelShaderName);
+
389
+
402 Material(
+
403 const std::string& sVertexShaderName,
+
404 const std::string& sPixelShaderName,
+
405 bool bUseTransparency,
+
406 PipelineManager* pPipelineManager,
+
407 const std::string& sMaterialName = "Material");
+
408
+
417 void onMeshNodeSpawning(
+
418 MeshNode* pMeshNode, const std::pair<GpuResource*, unsigned int>& indexBufferToDisplay);
+
419
+
429 void onSpawnedMeshNodeStartedUsingMaterial(
+
430 MeshNode* pMeshNode, const std::pair<GpuResource*, unsigned int>& indexBufferToDisplay);
+
431
+
442 void onSpawnedMeshNodeRecreatedIndexBuffer(
+
443 MeshNode* pMeshNode,
+
444 const std::pair<GpuResource*, unsigned int>& deletedIndexBuffer,
+
445 const std::pair<GpuResource*, unsigned int>& newIndexBuffer);
+
446
+
455 void onSpawnedMeshNodeChangedVisibility(MeshNode* pMeshNode, bool bOldVisibility);
+
456
+
466 void onSpawnedMeshNodeStoppedUsingMaterial(
+
467 MeshNode* pMeshNode, const std::pair<GpuResource*, unsigned int>& indexBufferDisplayed);
+
468
+
477 void onMeshNodeDespawning(
+
478 MeshNode* pMeshNode, const std::pair<GpuResource*, unsigned int>& indexBufferDisplayed);
+
479
+
487 [[nodiscard]] std::optional<Error> initializePipelines();
+
488
+
490 void resetPipelines();
+
491
+
497 void allocateShaderResources();
+
498
+
504 void deallocateShaderResources();
+
505
+
532 void setShaderCpuWriteResourceBinding(
+
533 const std::string& sShaderResourceName,
+
534 size_t iResourceSizeInBytes,
+
535 const std::function<void*()>& onStartedUpdatingResource,
+
536 const std::function<void()>& onFinishedUpdatingResource);
+
537
+
549 void setShaderTextureResourceBinding(
+
550 const std::string& sShaderResourceName, const std::string& sPathToTextureResourceRelativeRes);
+
551
+
571 void markShaderCpuWriteResourceAsNeedsUpdate(const std::string& sShaderResourceName);
+
572
+
577 void updateToNewPipeline();
+
578
+
584 void* onStartUpdatingShaderMeshConstants();
+
585
+
587 void onFinishedUpdatingShaderMeshConstants();
+
588
+
595 std::set<ShaderMacro> getVertexShaderMacrosForCurrentState();
+
596
+
603 std::set<ShaderMacro> getPixelShaderMacrosForCurrentState();
+
604
+
609 std::pair<std::mutex, MeshNodesThatUseThisMaterial> mtxSpawnedMeshNodesThatUseThisMaterial;
+
610
+
612 std::pair<std::recursive_mutex, InternalResources> mtxInternalResources;
+
613
+
615 std::pair<std::recursive_mutex, GpuResources> mtxGpuResources;
+
616
+
618 std::pair<std::recursive_mutex, MaterialShaderConstants> mtxShaderMaterialDataConstants;
+
619
+
621 PipelineManager* pPipelineManager = nullptr;
+
622
+
624 RPROPERTY(Serialize)
+
625 std::string sVertexShaderName;
+
626
+
628 RPROPERTY(Serialize)
+
629 std::string sPixelShaderName;
+
630
+
632 RPROPERTY(Serialize)
+
633 std::string sMaterialName;
+
634
+
639 RPROPERTY(Serialize)
+
640 std::string sDiffuseTexturePathRelativeRes;
+
641
+
643 RPROPERTY(Serialize)
+
644 glm::vec3 diffuseColor = glm::vec3(1.0F, 1.0F, 1.0F);
+
645
+
647 RPROPERTY(Serialize)
+
648 glm::vec3 specularColor = glm::vec3(1.0F, 1.0F, 1.0F);
+
649
+
651 RPROPERTY(Serialize)
+
652 float roughness = 0.7F;
+
653
+
659 RPROPERTY(Serialize)
+
660 float opacity = 0.6F;
+
661
+
663 RPROPERTY(Serialize)
+
664 bool bUseTransparency = false;
+
665
+
667 bool bIsShaderResourcesAllocated = false;
+
668
+
670 static inline const auto sMaterialShaderBufferName = "materialData";
+
671
+
673 static inline const auto sMaterialShaderDiffuseTextureName = "diffuseTextures";
+
674
+
675 ne_Material_GENERATED
+
676 };
+
677} // namespace ne RNAMESPACE()
+
678
+
679File_Material_GENERATED
+
Definition: Error.h:27
+
Definition: GuidProperty.h:30
+
Definition: Material.h:63
+
std::pair< std::recursive_mutex, GpuResources > mtxGpuResources
Definition: Material.h:615
+
std::pair< std::recursive_mutex, GpuResources > * getMaterialGpuResources()
Definition: Material.h:288
+
std::pair< std::recursive_mutex, MaterialShaderConstants > mtxShaderMaterialDataConstants
Definition: Material.h:618
+
std::pair< std::mutex, MeshNodesThatUseThisMaterial > mtxSpawnedMeshNodesThatUseThisMaterial
Definition: Material.h:609
+
std::pair< std::recursive_mutex, InternalResources > mtxInternalResources
Definition: Material.h:612
+
Definition: MeshNode.h:28
+
Definition: PipelineManager.h:98
+
Definition: PipelineSharedPtr.h:15
+
Definition: Pipeline.h:20
+
Definition: Serializable.h:113
+
Definition: SerializeProperty.h:42
+ +
std::unordered_map< std::string, ShaderCpuWriteResourceBindingUniquePtr > shaderCpuWriteResources
Definition: Material.h:78
+
std::unordered_map< std::string, ShaderTextureResourceBindingUniquePtr > shaderTextureResources
Definition: Material.h:81
+
Definition: Material.h:69
+
ShaderResources shaderResources
Definition: Material.h:85
+
Definition: Material.h:318
+
PipelineSharedPtr pColorPipeline
Definition: Material.h:327
+
PipelineSharedPtr pShadowMappingPointPipeline
Definition: Material.h:352
+
PipelineSharedPtr pShadowMappingDirectionalSpotPipeline
Definition: Material.h:344
+
PipelineSharedPtr pDepthOnlyPipeline
Definition: Material.h:335
+
Definition: Material.h:360
+
Definition: Material.h:26
+
bool isMeshNodeAdded(MeshNode *pMeshNode)
Definition: Material.h:41
+
size_t getTotalSize() const
Definition: Material.h:32
+
std::unordered_map< MeshNode *, std::vector< MeshIndexBufferInfo > > visibleMeshNodes
Definition: Material.h:56
+
std::unordered_map< MeshNode *, std::vector< MeshIndexBufferInfo > > invisibleMeshNodes
Definition: Material.h:59
+
+
+ + + + diff --git a/MathHelpers_8hpp_source.html b/MathHelpers_8hpp_source.html new file mode 100644 index 000000000..fc053b87f --- /dev/null +++ b/MathHelpers_8hpp_source.html @@ -0,0 +1,296 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/math/MathHelpers.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MathHelpers.hpp
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <cmath>
+
5
+
6// Custom.
+
7#include "misc/Globals.h"
+
8#include "io/Logger.h"
+
9
+
10// External.
+
11#include "math/GLMath.hpp"
+
12#include "misc/Error.h"
+
13#include "misc/Profiler.hpp"
+
14
+
15namespace ne {
+ +
18 public:
+
19 MathHelpers() = delete;
+
20
+
30 static inline glm::vec3 convertDirectionToRollPitchYaw(const glm::vec3& direction);
+
31
+
39 static inline glm::vec3 convertRollPitchYawToDirection(const glm::vec3& rotation);
+
40
+
50 static inline glm::vec3 convertSphericalToCartesianCoordinates(float radius, float theta, float phi);
+
51
+ +
61 const glm::vec3& location, float& radius, float& theta, float& phi);
+
62
+
70 static inline glm::vec3 calculateReciprocalVector(const glm::vec3& vector);
+
71
+
79 static inline glm::mat4x4 buildRotationMatrix(const glm::vec3& rotation);
+
80
+
97 static inline float normalizeValue(float value, float min, float max);
+
98
+
107 static inline glm::vec3 normalizeSafely(const glm::vec3& vector);
+
108
+
109 private:
+
111 static inline const float smallFloatEpsilon = 0.0000001F; // NOLINT: not a very small number
+
112 };
+
113
+
114 glm::vec3 MathHelpers::convertDirectionToRollPitchYaw(const glm::vec3& direction) {
+
115 PROFILE_FUNC;
+
116
+
117 // Ignore zero vectors.
+
118 if (glm::all(glm::epsilonEqual(direction, glm::vec3(0.0F, 0.0F, 0.0F), smallFloatEpsilon))) {
+
119 return glm::vec3(0.0F, 0.0F, 0.0F);
+
120 }
+
121
+
122#if defined(DEBUG)
+
123 // Make sure we are given a normalized vector.
+
124 constexpr float lengthDelta = 0.001F; // NOLINT: don't use too small value here
+
125 const auto length = glm::length(direction);
+
126 if (!glm::epsilonEqual(length, 1.0F, lengthDelta)) [[unlikely]] {
+
127 // show an error so that it will be instantly noticeable because we're in the debug build
+
128 Error error("the specified direction vector should have been normalized");
+
129 error.showError();
+
130 throw std::runtime_error(error.getFullErrorMessage());
+
131 }
+
132#endif
+
133
+
134 glm::vec3 worldRotation = glm::vec3(0.0F, 0.0F, 0.0F);
+
135
+
136 worldRotation.z = glm::degrees(std::atan2(direction.y, direction.x));
+
137 worldRotation.y = glm::degrees(-std::asin(direction.z));
+
138
+
139 // Check for NaNs.
+
140 if (glm::isnan(worldRotation.z)) {
+ +
142 "found NaN in the Z component of the calculated rotation, setting this component's value to "
+
143 "zero");
+
144 worldRotation.z = 0.0F;
+
145 }
+
146 if (glm::isnan(worldRotation.y)) {
+ +
148 "found NaN in the Y component of the calculated rotation, setting this component's value to "
+
149 "zero");
+
150 worldRotation.y = 0.0F;
+
151 }
+
152
+
153 // Use zero roll for now.
+
154
+
155 // Calculate roll:
+
156 // See if we can use world up direction to find the right direction.
+
157 // glm::vec3 vecToFindRight = worldUpDirection;
+
158 // if (std::abs(direction.z) > 0.999F) { // NOLINT: magic number
+
159 // // Use +X then.
+
160 // vecToFindRight = glm::vec3(1.0F, 0.0F, 0.0F);
+
161 //}
+
162 // const auto rightDirection = glm::normalize(glm::cross(direction, vecToFindRight));
+
163
+
164 // worldRotation.x =
+
165 // glm::degrees(-std::asinf(worldUpDirection.x * rightDirection.x + worldUpDirection.y *
+
166 // rightDirection.y));
+
167
+
168 // Check roll for NaN.
+
169 // if (glm::isnan(worldRotation.x)) {
+
170 // worldRotation.x = 0.0F;
+
171 // }
+
172
+
173 return worldRotation;
+
174 }
+
175
+
176 glm::vec3 MathHelpers::convertRollPitchYawToDirection(const glm::vec3& rotation) {
+
177 return buildRotationMatrix(rotation) * glm::vec4(Globals::WorldDirection::forward, 0.0F);
+
178 }
+
179
+
180 glm::vec3 MathHelpers::convertSphericalToCartesianCoordinates(float radius, float theta, float phi) {
+
181 phi = glm::radians(phi);
+
182 theta = glm::radians(theta);
+
183
+
184 const auto sinPhi = std::sin(phi);
+
185 const auto sinTheta = std::sin(theta);
+
186 const auto cosPhi = std::cos(phi);
+
187 const auto cosTheta = std::cos(theta);
+
188 return glm::vec3(radius * sinPhi * cosTheta, radius * sinPhi * sinTheta, radius * cosPhi);
+
189 }
+
190
+ +
192 const glm::vec3& location, float& radius, float& theta, float& phi) {
+
193 radius = glm::sqrt(location.x * location.x + location.y * location.y + location.z * location.z);
+
194 theta = glm::degrees(glm::atan2(location.y, location.x));
+
195 phi = glm::degrees(
+
196 glm::atan2(glm::sqrt(location.x * location.x + location.y * location.y), location.z));
+
197 }
+
198
+
199 glm::vec3 MathHelpers::calculateReciprocalVector(const glm::vec3& vector) {
+
200 glm::vec3 reciprocal;
+
201
+
202 if (std::abs(vector.x) < smallFloatEpsilon) [[unlikely]] {
+
203 reciprocal.x = 0.0F;
+
204 } else [[likely]] {
+
205 reciprocal.x = 1.0F / vector.x;
+
206 }
+
207
+
208 if (std::abs(vector.y) < smallFloatEpsilon) [[unlikely]] {
+
209 reciprocal.y = 0.0F;
+
210 } else [[likely]] {
+
211 reciprocal.y = 1.0F / vector.y;
+
212 }
+
213
+
214 if (std::abs(vector.z) < smallFloatEpsilon) [[unlikely]] {
+
215 reciprocal.z = 0.0F;
+
216 } else [[likely]] {
+
217 reciprocal.z = 1.0F / vector.z;
+
218 }
+
219
+
220 return reciprocal;
+
221 }
+
222
+
223 glm::mat4x4 MathHelpers::buildRotationMatrix(const glm::vec3& rotation) {
+
224 return glm::rotate(glm::radians(rotation.z), glm::vec3(0.0F, 0.0F, 1.0F)) *
+
225 glm::rotate(glm::radians(rotation.y), glm::vec3(0.0F, 1.0F, 0.0F)) *
+
226 glm::rotate(glm::radians(rotation.x), glm::vec3(1.0F, 0.0F, 0.0F));
+
227 }
+
228
+
229 float MathHelpers::normalizeValue(float value, float min, float max) {
+
230 const auto width = max - min;
+
231 const auto offsetValue = value - min;
+
232
+
233 return (offsetValue - (floor(offsetValue / width) * width)) + min;
+
234 }
+
235
+
236 glm::vec3 MathHelpers::normalizeSafely(const glm::vec3& vector) {
+
237 const auto squareSum = vector.x * vector.x + vector.y * vector.y + vector.z * vector.z;
+
238
+
239 if (squareSum < smallFloatEpsilon) {
+
240 return glm::vec3(0.0F, 0.0F, 0.0F);
+
241 }
+
242
+
243 return vector * glm::inversesqrt(squareSum);
+
244 }
+
245} // namespace ne
+
Definition: Error.h:27
+
std::string getFullErrorMessage() const
Definition: Error.cpp:84
+
void showError() const
Definition: Error.cpp:102
+
static Logger & get()
Definition: Logger.cpp:41
+
void warn(std::string_view sText, const std::source_location location=std::source_location::current()) const
Definition: Logger.cpp:62
+
Definition: MathHelpers.hpp:17
+
static float normalizeValue(float value, float min, float max)
Definition: MathHelpers.hpp:229
+
static const float smallFloatEpsilon
Definition: MathHelpers.hpp:111
+
static glm::mat4x4 buildRotationMatrix(const glm::vec3 &rotation)
Definition: MathHelpers.hpp:223
+
static glm::vec3 calculateReciprocalVector(const glm::vec3 &vector)
Definition: MathHelpers.hpp:199
+
static glm::vec3 normalizeSafely(const glm::vec3 &vector)
Definition: MathHelpers.hpp:236
+
static void convertCartesianCoordinatesToSpherical(const glm::vec3 &location, float &radius, float &theta, float &phi)
Definition: MathHelpers.hpp:191
+
static glm::vec3 convertDirectionToRollPitchYaw(const glm::vec3 &direction)
Definition: MathHelpers.hpp:114
+
static glm::vec3 convertRollPitchYawToDirection(const glm::vec3 &rotation)
Definition: MathHelpers.hpp:176
+
static glm::vec3 convertSphericalToCartesianCoordinates(float radius, float theta, float phi)
Definition: MathHelpers.hpp:180
+
static const glm::vec3 forward
Definition: Globals.h:25
+
+
+ + + + diff --git a/MeshDataBinaryFieldSerializer_8h_source.html b/MeshDataBinaryFieldSerializer_8h_source.html new file mode 100644 index 000000000..d0f84c80a --- /dev/null +++ b/MeshDataBinaryFieldSerializer_8h_source.html @@ -0,0 +1,143 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/io/serializers/MeshDataBinaryFieldSerializer.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MeshDataBinaryFieldSerializer.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "io/serializers/IBinaryFieldSerializer.hpp"
+
5
+
6namespace ne {
+ +
9 public:
+ +
11 virtual ~MeshDataBinaryFieldSerializer() override = default;
+
12
+
20 virtual bool isFieldTypeSupported(const rfk::Field* pField) override;
+
21
+
33 [[nodiscard]] virtual std::variant<std::string, Error> serializeField(
+
34 const std::filesystem::path& pathToOutputDirectory,
+
35 const std::string& sFilenameWithoutExtension,
+
36 Serializable* pFieldOwner,
+
37 const rfk::Field* pField) override;
+
38
+
48 [[nodiscard]] virtual std::optional<Error> deserializeField(
+
49 const std::filesystem::path& pathToBinaryFile,
+
50 Serializable* pFieldOwner,
+
51 const rfk::Field* pField) override;
+
52
+
53 private:
+
55 static constexpr auto pMeshDataFileExtension = ".mbin";
+
56 };
+
57}
+
Definition: IBinaryFieldSerializer.hpp:24
+
Definition: MeshDataBinaryFieldSerializer.h:8
+
virtual std::variant< std::string, Error > serializeField(const std::filesystem::path &pathToOutputDirectory, const std::string &sFilenameWithoutExtension, Serializable *pFieldOwner, const rfk::Field *pField) override
Definition: MeshDataBinaryFieldSerializer.cpp:28
+
static constexpr auto pMeshDataFileExtension
Definition: MeshDataBinaryFieldSerializer.h:55
+
virtual std::optional< Error > deserializeField(const std::filesystem::path &pathToBinaryFile, Serializable *pFieldOwner, const rfk::Field *pField) override
Definition: MeshDataBinaryFieldSerializer.cpp:123
+
virtual bool isFieldTypeSupported(const rfk::Field *pField) override
Definition: MeshDataBinaryFieldSerializer.cpp:13
+
Definition: Serializable.h:113
+
+
+ + + + diff --git a/MeshData_8h_source.html b/MeshData_8h_source.html new file mode 100644 index 000000000..7d4c6919b --- /dev/null +++ b/MeshData_8h_source.html @@ -0,0 +1,215 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/general/resource/MeshData.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MeshData.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "math/GLMath.hpp"
+
5#include "io/Serializable.h"
+
6
+
7#include "MeshData.generated.h"
+
8
+
9namespace ne RNAMESPACE() {
+
10 class GpuResource;
+
11
+ + +
16
+ +
24 this->pIndexBuffer = pIndexBuffer;
+
25 this->iIndexCount = iIndexCount;
+
26 }
+
27
+ +
30
+
32 unsigned int iIndexCount = 0;
+
33 };
+
34
+
40 struct MeshVertex { // not using inheritance to avoid extra fields that are not related to vertex
+
41 MeshVertex() = default;
+
42 ~MeshVertex() = default;
+
43
+
45 MeshVertex(const MeshVertex&) = default;
+
46
+
52 MeshVertex& operator=(const MeshVertex&) = default;
+
53
+
55 MeshVertex(MeshVertex&&) noexcept = default;
+
56
+
62 MeshVertex& operator=(MeshVertex&&) noexcept = default;
+
63
+
71 bool operator==(const MeshVertex& other) const;
+
72
+
73 // --------------------------------------------------------------------------------------
+
74
+
76 glm::vec3 position = glm::vec3(0.0f, 0.0f, 0.0f);
+
77
+
79 glm::vec3 normal = glm::vec3(0.0f, 0.0f, 0.0f);
+
80
+
82 glm::vec2 uv = glm::vec2(0.0f, 0.0f);
+
83
+
84 // --------------------------------------------------------------------------------------
+
85
+
86 // ! only vertex related fields (same as in shader) can be added here !
+
87 // (not deriving from `Serializable` to avoid extra fields that are not related to vertex)
+
88
+
89 // --------------------------------------------------------------------------------------
+
90 };
+
91
+
93 class RCLASS(Guid("b60e4b47-b1e6-4001-87a8-b7885b4e8383")) MeshData : public Serializable {
+
94 public:
+
96 using meshindex_t = unsigned int; // if making this dynamic (changes depending on the number of
+
97 // indices) change hardcoded FORMAT in the renderer
+
98
+
99 MeshData();
+
100 virtual ~MeshData() override = default;
+
101
+
103 MeshData(const MeshData&) = default;
+
104
+
110 MeshData& operator=(const MeshData&) = default;
+
111
+
113 MeshData(MeshData&&) noexcept = default;
+
114
+
120 MeshData& operator=(MeshData&&) noexcept = default;
+
121
+
127 std::vector<MeshVertex>* getVertices();
+
128
+
136 std::vector<std::vector<meshindex_t>>* getIndices();
+
137
+
138 private:
+
140 RPROPERTY(Serialize)
+
141 std::vector<MeshVertex> vVertices;
+
142
+
150 RPROPERTY(Serialize)
+
151 std::vector<std::vector<meshindex_t>> vIndices;
+
152
+
153 ne_MeshData_GENERATED
+
154 };
+
155}
+
156
+
157File_MeshData_GENERATED
+
Definition: GpuResource.h:16
+
Definition: GuidProperty.h:30
+
Definition: MeshData.h:93
+
MeshData(const MeshData &)=default
+
MeshData & operator=(const MeshData &)=default
+
unsigned int meshindex_t
Definition: MeshData.h:96
+
MeshData(MeshData &&) noexcept=default
+
Definition: Serializable.h:113
+
Definition: SerializeProperty.h:42
+
Definition: MeshData.h:13
+ +
MeshIndexBufferInfo(GpuResource *pIndexBuffer, unsigned int iIndexCount)
Definition: MeshData.h:23
+
GpuResource * pIndexBuffer
Definition: MeshData.h:29
+
unsigned int iIndexCount
Definition: MeshData.h:32
+
Definition: MeshData.h:40
+
glm::vec3 normal
Definition: MeshData.h:79
+
glm::vec2 uv
Definition: MeshData.h:82
+
MeshVertex(MeshVertex &&) noexcept=default
+
MeshVertex & operator=(const MeshVertex &)=default
+
glm::vec3 position
Definition: MeshData.h:76
+
MeshVertex(const MeshVertex &)=default
+
+
+ + + + diff --git a/MeshImporter_8h_source.html b/MeshImporter_8h_source.html new file mode 100644 index 000000000..932b18c2c --- /dev/null +++ b/MeshImporter_8h_source.html @@ -0,0 +1,132 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/io/MeshImporter.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MeshImporter.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <filesystem>
+
5#include <optional>
+
6#include <functional>
+
7
+
8// Custom.
+
9#include "misc/Error.h"
+
10
+
11namespace ne {
+ +
17 public:
+
18 MeshImporter() = delete;
+
19
+
35 [[nodiscard]] static std::optional<Error> importMesh(
+
36 const std::filesystem::path& pathToFile,
+
37 const std::string& sPathToOutputDirRelativeRes,
+
38 const std::string& sOutputDirectoryName,
+
39 const std::function<void(std::string_view)>& onProgress);
+
40 };
+
41}
+
Definition: MeshImporter.h:16
+
static std::optional< Error > importMesh(const std::filesystem::path &pathToFile, const std::string &sPathToOutputDirRelativeRes, const std::string &sOutputDirectoryName, const std::function< void(std::string_view)> &onProgress)
Definition: MeshImporter.cpp:465
+
+
+ + + + diff --git a/MeshNodeGlslVertexFormatDescription_8h_source.html b/MeshNodeGlslVertexFormatDescription_8h_source.html new file mode 100644 index 000000000..7ca6e57fc --- /dev/null +++ b/MeshNodeGlslVertexFormatDescription_8h_source.html @@ -0,0 +1,131 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/glsl/format/MeshNodeGlslVertexFormatDescription.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MeshNodeGlslVertexFormatDescription.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "shader/glsl/format/GlslVertexFormatDescription.h"
+
5
+
6namespace ne {
+ +
9 public:
+ +
11 virtual ~MeshNodeGlslVertexFormatDescription() override = default;
+
12
+
18 virtual std::vector<std::string> getVertexLayoutBindingIndexMacros() override;
+
19
+
25 virtual VkVertexInputBindingDescription getVertexBindingDescription() override;
+
26
+
32 virtual std::vector<VkVertexInputAttributeDescription> getVertexAttributeDescriptions() override;
+
33 };
+
34}
+
Definition: GlslVertexFormatDescription.h:15
+
Definition: MeshNodeGlslVertexFormatDescription.h:8
+
virtual std::vector< VkVertexInputAttributeDescription > getVertexAttributeDescriptions() override
Definition: MeshNodeGlslVertexFormatDescription.cpp:43
+
virtual VkVertexInputBindingDescription getVertexBindingDescription() override
Definition: MeshNodeGlslVertexFormatDescription.cpp:28
+
virtual std::vector< std::string > getVertexLayoutBindingIndexMacros() override
Definition: MeshNodeGlslVertexFormatDescription.cpp:8
+
+
+ + + + diff --git a/MeshNodeHlslVertexFormatDescription_8h_source.html b/MeshNodeHlslVertexFormatDescription_8h_source.html new file mode 100644 index 000000000..74a8bfdbd --- /dev/null +++ b/MeshNodeHlslVertexFormatDescription_8h_source.html @@ -0,0 +1,131 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/hlsl/format/MeshNodeHlslVertexFormatDescription.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MeshNodeHlslVertexFormatDescription.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <vector>
+
5
+
6// Custom.
+
7#include "HlslVertexFormatDescription.h"
+
8
+
9namespace ne {
+ +
12 public:
+ +
14 virtual ~MeshNodeHlslVertexFormatDescription() override = default;
+
15
+
21 virtual std::vector<std::string> getVertexSemanticLocations() override;
+
22
+
28 virtual std::vector<D3D12_INPUT_ELEMENT_DESC> getShaderInputElementDescription() override;
+
29 };
+
30}
+
Definition: HlslVertexFormatDescription.h:15
+
Definition: MeshNodeHlslVertexFormatDescription.h:11
+
virtual std::vector< std::string > getVertexSemanticLocations() override
Definition: MeshNodeHlslVertexFormatDescription.cpp:8
+
virtual std::vector< D3D12_INPUT_ELEMENT_DESC > getShaderInputElementDescription() override
Definition: MeshNodeHlslVertexFormatDescription.cpp:29
+
+
+ + + + diff --git a/MeshNode_8h_source.html b/MeshNode_8h_source.html new file mode 100644 index 000000000..4b91e3102 --- /dev/null +++ b/MeshNode_8h_source.html @@ -0,0 +1,290 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/game/nodes/MeshNode.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MeshNode.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <atomic>
+
5
+
6// Custom.
+
7#include "game/nodes/SpatialNode.h"
+
8#include "math/GLMath.hpp"
+
9#include "render/general/resource/GpuResource.h"
+
10#include "shader/general/resource/binding/ShaderResourceBinding.h"
+
11#include "shader/general/resource/binding/cpuwrite/ShaderCpuWriteResourceBindingUniquePtr.h"
+
12#include "shader/general/resource/binding/texture/ShaderTextureResourceBindingUniquePtr.h"
+
13#include "shader/VulkanAlignmentConstants.hpp"
+
14#include "misc/shapes/AABB.h"
+
15#include "material/Material.h"
+
16#include "render/general/resource/MeshData.h"
+
17
+
18#include "MeshNode.generated.h"
+
19
+
20namespace ne RNAMESPACE() {
+
21 class UploadBuffer;
+
22
+
28 class RCLASS(Guid("d5407ca4-3c2e-4a5a-9ff3-1262b6a4d264")) MeshNode : public SpatialNode {
+
29 // Material notifies us when it changes its pipeline.
+
30 friend class Material;
+
31
+
32 public:
+ +
39 MeshShaderConstants() = default;
+
40
+
42 alignas(iVkMat4Alignment) glm::mat4x4 worldMatrix = glm::identity<glm::mat4x4>();
+
43
+
49 alignas(iVkMat4Alignment) glm::mat4x4 normalMatrix = glm::identity<glm::mat4x4>();
+
50 };
+
51
+
53 struct GpuResources {
+
54 GpuResources() = default;
+
55
+
57 struct Mesh {
+
58 Mesh() = default;
+
59
+
61 std::unique_ptr<GpuResource> pVertexBuffer;
+
62
+
64 std::vector<std::unique_ptr<GpuResource>> vIndexBuffers;
+
65 };
+
66
+ +
69 ShaderResources() = default;
+
70
+
72 std::unordered_map<std::string, ShaderCpuWriteResourceBindingUniquePtr>
+ +
74
+
76 std::unordered_map<std::string, ShaderTextureResourceBindingUniquePtr> shaderTextureResources;
+
77 };
+
78
+ +
81
+ +
84 };
+
85
+
91 static inline const char* getMeshShaderConstantBufferName() { return sMeshShaderConstantBufferName; }
+
92
+
93 MeshNode();
+
94
+
100 MeshNode(const std::string& sNodeName);
+
101
+
102 virtual ~MeshNode() override = default;
+
103
+
116 void setMaterial(std::unique_ptr<Material> pMaterial, size_t iMaterialSlot = 0);
+
117
+
125 void setMeshData(const MeshData& meshData);
+
126
+
134 void setMeshData(MeshData&& meshData);
+
135
+
137 void onMeshDataChanged();
+
138
+
144 void setIsVisible(bool bVisible);
+
145
+
156 Material* getMaterial(size_t iMaterialSlot = 0);
+
157
+
164 size_t getAvailableMaterialSlotCount();
+
165
+
181 inline std::pair<std::recursive_mutex*, MeshData*> getMeshData() {
+
182 return std::make_pair(&mtxMeshData, &meshData);
+
183 }
+
184
+
190 inline std::pair<std::recursive_mutex, GpuResources>* getMeshGpuResources() {
+
191 return &mtxGpuResources;
+
192 }
+
193
+
202 inline std::pair<std::recursive_mutex, MeshShaderConstants>* getMeshShaderConstants() {
+
203 return &mtxShaderMeshDataConstants;
+
204 }
+
205
+
211 inline AABB* getAABB() { return &aabb; }
+
212
+
218 bool isVisible() const;
+
219
+
220 protected:
+
228 virtual void onAfterDeserialized() override;
+
229
+
240 virtual void onSpawning() override;
+
241
+
251 virtual void onDespawning() override;
+
252
+
259 virtual void onWorldLocationRotationScaleChanged() override;
+
260
+
288 void setShaderCpuWriteResourceBinding(
+
289 const std::string& sShaderResourceName,
+
290 size_t iResourceSizeInBytes,
+
291 const std::function<void*()>& onStartedUpdatingResource,
+
292 const std::function<void()>& onFinishedUpdatingResource);
+
293
+
305 void setShaderTextureResourceBinding(
+
306 const std::string& sShaderResourceName, const std::string& sPathToTextureResourceRelativeRes);
+
307
+
327 void markShaderCpuWriteResourceToBeCopiedToGpu(const std::string& sShaderResourceName);
+
328
+
329 private:
+
335 static std::unique_ptr<Material> getDefaultMaterial();
+
336
+
342 void allocateShaderResources();
+
343
+
345 void allocateGeometryBuffers();
+
346
+
348 void deallocateShaderResources();
+
349
+
351 void deallocateGeometryBuffers();
+
352
+
358 void* onStartedUpdatingShaderMeshConstants();
+
359
+
361 void onFinishedUpdatingShaderMeshConstants();
+
362
+
373 void updateShaderResourcesToUseChangedMaterialPipelines();
+
374
+
385 std::pair<GpuResource*, unsigned int> getIndexBufferInfoForMaterialSlot(size_t iMaterialSlot);
+
386
+
393 RPROPERTY(Serialize)
+
394 std::vector<std::unique_ptr<Material>> vMaterials;
+
395
+
401 RPROPERTY(Serialize(FST_AS_EXTERNAL_BINARY_FILE)) // allow VCSs to treat this file in a special way
+
402 MeshData meshData;
+
403
+
405 AABB aabb;
+
406
+
408 std::recursive_mutex mtxMeshData;
+
409
+
411 std::pair<std::recursive_mutex, GpuResources> mtxGpuResources;
+
412
+
414 std::pair<std::recursive_mutex, MeshShaderConstants> mtxShaderMeshDataConstants;
+
415
+
417 bool bIsVisible = true;
+
418
+
420 static inline const auto sMeshShaderConstantBufferName = "meshData";
+
421
+
422 ne_MeshNode_GENERATED
+
423 };
+
424}
+
425
+
426File_MeshNode_GENERATED
+
Definition: GuidProperty.h:30
+
Definition: Material.h:63
+
Definition: MeshData.h:93
+
Definition: MeshNode.h:28
+
std::pair< std::recursive_mutex *, MeshData * > getMeshData()
Definition: MeshNode.h:181
+
std::pair< std::recursive_mutex, GpuResources > * getMeshGpuResources()
Definition: MeshNode.h:190
+
AABB * getAABB()
Definition: MeshNode.h:211
+
std::pair< std::recursive_mutex, MeshShaderConstants > * getMeshShaderConstants()
Definition: MeshNode.h:202
+
static const char * getMeshShaderConstantBufferName()
Definition: MeshNode.h:91
+
Definition: SerializeProperty.h:42
+
Definition: SpatialNode.h:12
+
Definition: AABB.h:14
+
Definition: MeshNode.h:57
+
std::unique_ptr< GpuResource > pVertexBuffer
Definition: MeshNode.h:61
+
std::vector< std::unique_ptr< GpuResource > > vIndexBuffers
Definition: MeshNode.h:64
+ +
std::unordered_map< std::string, ShaderTextureResourceBindingUniquePtr > shaderTextureResources
Definition: MeshNode.h:76
+
std::unordered_map< std::string, ShaderCpuWriteResourceBindingUniquePtr > shaderCpuWriteResourceBindings
Definition: MeshNode.h:73
+
Definition: MeshNode.h:53
+
Mesh mesh
Definition: MeshNode.h:80
+
ShaderResources shaderResources
Definition: MeshNode.h:83
+
Definition: MeshNode.h:38
+
+
+ + + + diff --git a/MessageBox_8h_source.html b/MessageBox_8h_source.html new file mode 100644 index 000000000..7b33c512d --- /dev/null +++ b/MessageBox_8h_source.html @@ -0,0 +1,158 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/misc/MessageBox.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MessageBox.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <string>
+
5
+
6#if defined(WIN32)
+
7#pragma push_macro("MessageBox")
+
8#undef MessageBox
+
9#pragma push_macro("IGNORE")
+
10#undef IGNORE
+
11#endif
+
12
+
13namespace ne {
+
15 enum class MessageBoxResult { OK, CANCEL, YES, NO, ABORT, RETRY, IGNORE };
+
16
+
18 enum class MessageBoxChoice { OK, OK_CANCEL, YES_NO, YES_NO_CANCEL, RETRY_CANCEL, ABORT_RETRY_IGNORE };
+
19
+
21 class MessageBox {
+
22 public:
+
34 static MessageBoxResult info(
+
35 const std::string& sTitle,
+
36 const std::string& sText,
+
37 MessageBoxChoice buttons = MessageBoxChoice::OK);
+
38
+
50 static MessageBoxResult question(
+
51 const std::string& sTitle,
+
52 const std::string& sText,
+
53 MessageBoxChoice buttons = MessageBoxChoice::OK);
+
54
+
66 static MessageBoxResult warning(
+
67 const std::string& sTitle,
+
68 const std::string& sText,
+
69 MessageBoxChoice buttons = MessageBoxChoice::OK);
+
70
+
82 static MessageBoxResult error(
+
83 const std::string& sTitle,
+
84 const std::string& sText,
+
85 MessageBoxChoice buttons = MessageBoxChoice::OK);
+
86 };
+
87} // namespace ne
+
88
+
89#if defined(WIN32)
+
90#pragma pop_macro("IGNORE")
+
91#pragma pop_macro("MessageBox")
+
92#endif
+
Definition: MessageBox.h:21
+
static MessageBoxResult warning(const std::string &sTitle, const std::string &sText, MessageBoxChoice buttons=MessageBoxChoice::OK)
Definition: MessageBox.cpp:65
+
static MessageBoxResult question(const std::string &sTitle, const std::string &sText, MessageBoxChoice buttons=MessageBoxChoice::OK)
Definition: MessageBox.cpp:59
+
static MessageBoxResult error(const std::string &sTitle, const std::string &sText, MessageBoxChoice buttons=MessageBoxChoice::OK)
Definition: MessageBox.cpp:71
+
static MessageBoxResult info(const std::string &sTitle, const std::string &sText, MessageBoxChoice buttons=MessageBoxChoice::OK)
Definition: MessageBox.cpp:54
+
+
+ + + + diff --git a/MouseButton_8hpp_source.html b/MouseButton_8hpp_source.html new file mode 100644 index 000000000..038d66460 --- /dev/null +++ b/MouseButton_8hpp_source.html @@ -0,0 +1,124 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/input/MouseButton.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MouseButton.hpp
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "window/GLFW.hpp"
+
5
+
6namespace ne {
+
7 enum class MouseButton {
+
8 LEFT = GLFW_MOUSE_BUTTON_LEFT,
+
9 RIGHT = GLFW_MOUSE_BUTTON_RIGHT,
+
10 MIDDLE = GLFW_MOUSE_BUTTON_MIDDLE,
+
11 X1 = GLFW_MOUSE_BUTTON_4,
+
12 X2 = GLFW_MOUSE_BUTTON_5,
+
13 X3 = GLFW_MOUSE_BUTTON_6,
+
14 X4 = GLFW_MOUSE_BUTTON_7,
+
15 };
+
16}
+
+
+ + + + diff --git a/NodeFunction_8hpp_source.html b/NodeFunction_8hpp_source.html new file mode 100644 index 000000000..8e46a8039 --- /dev/null +++ b/NodeFunction_8hpp_source.html @@ -0,0 +1,183 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/game/callbacks/NodeFunction.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
NodeFunction.hpp
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <functional>
+
5#include <optional>
+
6
+
7// Custom.
+
8#include "game/GameManager.h"
+
9
+
10namespace ne {
+
11 template <typename FunctionReturnType, typename... FunctionArgs> class NodeFunction;
+
12
+
20 template <typename FunctionReturnType, typename... FunctionArgs>
+
21 class NodeFunction<FunctionReturnType(FunctionArgs...)> {
+
22 public:
+
23 NodeFunction() = default;
+
24
+
34 NodeFunction(size_t iNodeId, const std::function<FunctionReturnType(FunctionArgs...)>& callback) {
+
35 static_assert(
+
36 std::is_same_v<FunctionReturnType, void>,
+
37 "return type must be `void` - this is a current limitation");
+
38
+
39 this->iNodeId = iNodeId;
+
40 this->callback = callback;
+
41 }
+
42
+
48 NodeFunction(const NodeFunction& other) = default;
+
49
+
57 NodeFunction& operator=(const NodeFunction& other) = default;
+
58
+
64 NodeFunction(NodeFunction&& other) noexcept = default;
+
65
+
73 NodeFunction& operator=(NodeFunction&& other) noexcept = default;
+
74
+
91 bool operator()(FunctionArgs&&... args) {
+
92 if (isNodeSpawned()) {
+
93 callback(std::forward<FunctionArgs>(args)...);
+
94 return false;
+
95 }
+
96
+
97 return true;
+
98 }
+
99
+ +
109 // Get game manager.
+
110 const auto pGameManager = GameManager::get();
+
111 if (pGameManager == nullptr) [[unlikely]] {
+
112 return false;
+
113 }
+
114
+
115 // Make sure the game manager is not being destroyed.
+
116 if (pGameManager->isBeingDestroyed()) [[unlikely]] {
+
117 // Exit now because it might be dangerous to continue if we are on a non-main thread.
+
118 return false;
+
119 }
+
120
+
121 return pGameManager->isNodeSpawned(iNodeId);
+
122 }
+
123
+
124 private:
+
126 std::function<FunctionReturnType(FunctionArgs...)> callback;
+
127
+
129 size_t iNodeId = 0;
+
130 };
+
131} // namespace ne
+
static GameManager * get()
Definition: GameManager.cpp:299
+
NodeFunction(const NodeFunction &other)=default
+
bool operator()(FunctionArgs &&... args)
Definition: NodeFunction.hpp:91
+
std::function< FunctionReturnType(FunctionArgs...)> callback
Definition: NodeFunction.hpp:126
+
NodeFunction(size_t iNodeId, const std::function< FunctionReturnType(FunctionArgs...)> &callback)
Definition: NodeFunction.hpp:34
+
NodeFunction & operator=(const NodeFunction &other)=default
+
NodeFunction(NodeFunction &&other) noexcept=default
+
NodeFunction & operator=(NodeFunction &&other) noexcept=default
+
bool isNodeSpawned()
Definition: NodeFunction.hpp:108
+
Definition: NodeFunction.hpp:11
+
+
+ + + + diff --git a/NodeNotificationBroadcaster_8hpp_source.html b/NodeNotificationBroadcaster_8hpp_source.html new file mode 100644 index 000000000..b5b7983bd --- /dev/null +++ b/NodeNotificationBroadcaster_8hpp_source.html @@ -0,0 +1,407 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/game/callbacks/NodeNotificationBroadcaster.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
NodeNotificationBroadcaster.hpp
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <mutex>
+
5#include <unordered_map>
+
6#include <vector>
+
7
+
8// Custom.
+
9#include "game/callbacks/NodeFunction.hpp"
+
10#include "io/Logger.h"
+
11
+
12namespace ne {
+
13 class Node;
+
14
+ +
17 // Only Node can create broadcasters because it has some additional protection code
+
18 // to avoid shooting yourself in the foot. Additionally, the broadcaster is only valid
+
19 // when the node that owns the broadcaster is spawned, otherwise the broadcaster does nothing.
+
20 friend class Node;
+
21
+
22 public:
+ +
24 virtual ~NodeNotificationBroadcasterBase() = default;
+
25
+ + +
28
+
29 protected:
+
35 virtual void onOwnerNodeSpawning(Node* pOwnerNode) = 0;
+
36
+
42 virtual void onOwnerNodeDespawning(Node* pOwnerNode) = 0;
+
43 };
+
44
+
45 template <typename FunctionReturnType, typename... FunctionArgs> class NodeNotificationBroadcaster;
+
46
+
51 template <typename FunctionReturnType, typename... FunctionArgs>
+
52 class NodeNotificationBroadcaster<FunctionReturnType(FunctionArgs...)>
+ +
54 // Only Node can create broadcasters because it has some additional protection code
+
55 // to avoid shooting yourself in the foot. Additionally, the broadcaster is only valid
+
56 // when the node that owns the broadcaster is spawned, otherwise the broadcaster does nothing.
+
57 friend class Node;
+
58
+
59 public:
+
60 virtual ~NodeNotificationBroadcaster() override = default;
+
61
+ + +
64
+
75 void broadcast(FunctionArgs&&... args) {
+
76 // Make sure we have a spawned owner node.
+
77 std::scoped_lock ownerGuard(mtxSpawnedOwnerNode.first, mtxCallbacks.first);
+
78 if (mtxSpawnedOwnerNode.second == nullptr) {
+
79 // Being in a cleared state - do nothing.
+
80 return;
+
81 }
+
82
+
83 // don't unlock mutexes yet
+
84
+
85 // Make sure we are in the top level `broadcast` call (not called from some
+
86 // callback that was triggered in other `broadcast` call)
+
87 // because we will modify callbacks array.
+
88 bool bIsTopLevelBroadcast = !bIsBroadcasting.test();
+
89 if (bIsTopLevelBroadcast) {
+
90 // Mark the start of broadcasting (start of working with callbacks).
+
91 bIsBroadcasting.test_and_set();
+
92
+
93 {
+
94 // Add new pending callbacks.
+
95 std::scoped_lock guard(mtxCallbacksToAdd.first);
+
96 for (auto& [iBindingId, callback] : mtxCallbacksToAdd.second) {
+
97 mtxCallbacks.second[iBindingId] = std::move(callback);
+
98 }
+
99 mtxCallbacksToAdd.second.clear();
+
100 }
+
101
+
102 {
+
103 // Remove callbacks marked as "to be removed".
+
104 std::scoped_lock guard(mtxCallbacksToRemove.first);
+
105 for (const auto& iBindingId : mtxCallbacksToRemove.second) {
+
106 // Make sure a binding with this ID exists.
+
107 auto it = mtxCallbacks.second.find(iBindingId);
+
108 if (it == mtxCallbacks.second.end()) [[unlikely]] {
+
109 Logger::get().error(std::format(
+
110 "a callback with binding ID {} was marked to be removed from a "
+
111 "broadcaster but broadcaster does not have a callback with this ID",
+
112 iBindingId));
+
113 continue;
+
114 }
+
115 mtxCallbacks.second.erase(it);
+
116 }
+
117 mtxCallbacksToRemove.second.clear();
+
118 }
+
119
+
120 // Erase no longer valid callbacks.
+
121 std::erase_if(mtxCallbacks.second, [](auto& item) { return !item.second.isNodeSpawned(); });
+
122 }
+
123
+
124 // Call registered callbacks.
+
125 for (auto& [iBindingId, callback] : mtxCallbacks.second) {
+
126 callback(std::forward<FunctionArgs>(args)...);
+
127
+
128 // Make sure our owner node is still spawned because the callback we just
+
129 // called could have despawned the owner node.
+
130 if (mtxSpawnedOwnerNode.second == nullptr) {
+
131 // Owner node was despawned and all callbacks were removed, exit.
+
132 break;
+
133 }
+
134 }
+
135
+
136 if (bIsTopLevelBroadcast) {
+
137 // Finished broadcasting.
+
138 bIsBroadcasting.clear();
+
139 }
+
140 }
+
141
+
152 size_t subscribe(const NodeFunction<FunctionReturnType(FunctionArgs...)>& callback) {
+
153 std::scoped_lock callbacksGuard(mtxCallbacks.first);
+
154
+
155 // Generate new binding ID.
+
156 const auto iNewBindingId = iAvailableBindingId.fetch_add(1);
+
157 if (iNewBindingId + 1 == ULLONG_MAX) [[unlikely]] {
+
158 Logger::get().warn(std::format(
+
159 "\"next available broadcaster binding ID\" is at its maximum value: {}, another "
+
160 "subscribed callback will cause an overflow",
+
161 iNewBindingId + 1));
+
162 }
+
163
+
164 // Check if we are inside of a `broadcast` call.
+
165 if (bIsBroadcasting.test()) {
+
166 // We are inside of a `broadcast` call (this function is probably called from some
+
167 // callback that we called inside of our `broadcast` call), don't modify callbacks array
+
168 // as we are iterating over it. Instead, add this callback as "pending to be added".
+
169 std::scoped_lock callbacksToAddGuard(mtxCallbacksToAdd.first);
+
170 mtxCallbacksToAdd.second[iNewBindingId] = callback;
+
171 } else {
+
172 // We are not inside of a `broadcast` call, it's safe to modify callbacks array.
+
173 mtxCallbacks.second[iNewBindingId] = callback;
+
174 }
+
175
+
176 return iNewBindingId;
+
177 }
+
178
+
187 void unsubscribe(size_t iBindingId) {
+
188 {
+
189 // First, look if this binding is still pending to be added.
+
190 std::scoped_lock callbacksToAddGuard(mtxCallbacksToAdd.first);
+
191 auto it = mtxCallbacksToAdd.second.find(iBindingId);
+
192 if (it != mtxCallbacksToAdd.second.end()) {
+
193 // Just remove it from the pending array.
+
194 mtxCallbacksToAdd.second.erase(it);
+
195 return;
+
196 }
+
197 }
+
198
+
199 // Make sure the binding exists in the main array.
+
200 std::scoped_lock callbacksGuard(mtxCallbacks.first);
+
201 auto it = mtxCallbacks.second.find(iBindingId);
+
202 if (it == mtxCallbacks.second.end()) [[unlikely]] {
+ +
204 std::format("callback with binding ID {} was not found in the broadcaster", iBindingId));
+
205 return;
+
206 }
+
207
+
208 // Check if we are inside of a `broadcast` call.
+
209 if (bIsBroadcasting.test()) {
+
210 // We are inside of a `broadcast` call (this function is probably called from some
+
211 // callback that we called inside of our `broadcast` call), don't modify callbacks array
+
212 // as we are iterating over it. Instead, add this binding ID as "pending to be removed".
+
213 std::scoped_lock callbacksToRemoveGuard(mtxCallbacksToRemove.first);
+
214 mtxCallbacksToRemove.second.push_back(iBindingId);
+
215 } else {
+
216 // We are not inside of a `broadcast` call, it's safe to modify callbacks array.
+
217 mtxCallbacks.second.erase(it);
+
218 }
+
219 }
+
220
+ +
232 std::scoped_lock guard(mtxCallbacks.first, mtxCallbacksToAdd.first, mtxCallbacksToRemove.first);
+
233
+
234 // About returning "estimated" number:
+
235 // We might check `bIsBroadcasting` and remove callbacks of despawned nodes
+
236 // but if we are being inside of a `broadcast` call we still would not know
+
237 // if the returned number is correct or not so we generally can't guarantee
+
238 // that the returned number is 100% correct.
+
239
+
240 const auto iCurrentPlusPending = mtxCallbacks.second.size() + mtxCallbacksToAdd.second.size();
+
241 const auto iPendingToBeRemoved = mtxCallbacksToRemove.second.size();
+
242
+
243 // Make extra sure everything is correct.
+
244 if (iCurrentPlusPending < iPendingToBeRemoved) [[unlikely]] {
+
245 Logger::get().error(std::format(
+
246 "there are more callbacks to be removed than all existing callbacks plus "
+
247 "pending to be added: currently registered: {}, pending to be added: {}, pending to "
+
248 "be removed: {}",
+
249 mtxCallbacks.second.size(),
+
250 mtxCallbacksToAdd.second.size(),
+
251 mtxCallbacksToRemove.second.size()));
+
252 return 0;
+
253 }
+
254
+
255 return iCurrentPlusPending - iPendingToBeRemoved;
+
256 }
+
257
+
258 protected:
+
259 NodeNotificationBroadcaster() { mtxSpawnedOwnerNode.second = nullptr; };
+
260
+
266 virtual void onOwnerNodeSpawning(Node* pOwnerNode) override {
+
267 std::scoped_lock ownerGuard(mtxSpawnedOwnerNode.first);
+
268
+
269 // Make sure we don't have an owner.
+
270 if (mtxSpawnedOwnerNode.second != nullptr) {
+
271 Error error(
+
272 "some node has notified a broadcaster about being spawned but this broadcaster already "
+
273 "has an owner node");
+
274 error.showError();
+
275 throw std::runtime_error(error.getFullErrorMessage());
+
276 }
+
277
+
278 // Save new owner.
+
279 mtxSpawnedOwnerNode.second = pOwnerNode;
+
280 }
+
281
+
287 virtual void onOwnerNodeDespawning(Node* pOwnerNode) override {
+
288 std::scoped_lock ownerGuard(mtxSpawnedOwnerNode.first);
+
289
+
290 // Make sure the specified owner is indeed our owner node.
+
291 if (mtxSpawnedOwnerNode.second != pOwnerNode) [[unlikely]] {
+
292 Logger::get().error("some node notified a broadcaster about it being despawned but this "
+
293 "broadcaster's owner is not this node");
+
294 return;
+
295 }
+
296
+
297 // Clear pointer to the owner node (to mark "cleared" state and avoid broadcasting).
+
298 mtxSpawnedOwnerNode.second = nullptr;
+
299
+
300 removeAllCallbacks();
+
301 }
+
302
+
303 private:
+ +
306 {
+
307 std::scoped_lock guard(mtxCallbacks.first);
+
308 mtxCallbacks.second.clear();
+
309 }
+
310
+
311 {
+
312 std::scoped_lock guard(mtxCallbacksToAdd.first);
+
313 mtxCallbacksToAdd.second.clear();
+
314 }
+
315
+
316 {
+
317 std::scoped_lock guard(mtxCallbacksToRemove.first);
+
318 mtxCallbacksToRemove.second.clear();
+
319 }
+
320 }
+
321
+
326 std::pair<
+
327 std::recursive_mutex,
+
328 std::unordered_map<size_t, NodeFunction<FunctionReturnType(FunctionArgs...)>>>
+ +
330
+
335 std::pair<
+
336 std::recursive_mutex,
+
337 std::unordered_map<size_t, NodeFunction<FunctionReturnType(FunctionArgs...)>>>
+ +
339
+
344 std::pair<std::recursive_mutex, std::vector<size_t>> mtxCallbacksToRemove;
+
345
+
347 std::pair<std::recursive_mutex, Node*> mtxSpawnedOwnerNode;
+
348
+
350 std::atomic<size_t> iAvailableBindingId{0};
+
351
+
353 std::atomic_flag bIsBroadcasting{};
+
354 };
+
355} // namespace ne
+
Definition: Error.h:27
+
std::string getFullErrorMessage() const
Definition: Error.cpp:84
+
void showError() const
Definition: Error.cpp:102
+
void error(std::string_view sText, const std::source_location location=std::source_location::current()) const
Definition: Logger.cpp:75
+
static Logger & get()
Definition: Logger.cpp:41
+
void warn(std::string_view sText, const std::source_location location=std::source_location::current()) const
Definition: Logger.cpp:62
+
Definition: NodeFunction.hpp:11
+
Definition: NodeNotificationBroadcaster.hpp:16
+
virtual void onOwnerNodeDespawning(Node *pOwnerNode)=0
+
virtual void onOwnerNodeSpawning(Node *pOwnerNode)=0
+
std::pair< std::recursive_mutex, std::vector< size_t > > mtxCallbacksToRemove
Definition: NodeNotificationBroadcaster.hpp:344
+
void unsubscribe(size_t iBindingId)
Definition: NodeNotificationBroadcaster.hpp:187
+
std::pair< std::recursive_mutex, std::unordered_map< size_t, NodeFunction< FunctionReturnType(FunctionArgs...)> > > mtxCallbacksToAdd
Definition: NodeNotificationBroadcaster.hpp:338
+
size_t subscribe(const NodeFunction< FunctionReturnType(FunctionArgs...)> &callback)
Definition: NodeNotificationBroadcaster.hpp:152
+
void removeAllCallbacks()
Definition: NodeNotificationBroadcaster.hpp:305
+
std::pair< std::recursive_mutex, Node * > mtxSpawnedOwnerNode
Definition: NodeNotificationBroadcaster.hpp:347
+
virtual void onOwnerNodeDespawning(Node *pOwnerNode) override
Definition: NodeNotificationBroadcaster.hpp:287
+
size_t getSubscriberCount()
Definition: NodeNotificationBroadcaster.hpp:231
+
void broadcast(FunctionArgs &&... args)
Definition: NodeNotificationBroadcaster.hpp:75
+
std::pair< std::recursive_mutex, std::unordered_map< size_t, NodeFunction< FunctionReturnType(FunctionArgs...)> > > mtxCallbacks
Definition: NodeNotificationBroadcaster.hpp:329
+
virtual void onOwnerNodeSpawning(Node *pOwnerNode) override
Definition: NodeNotificationBroadcaster.hpp:266
+
Definition: NodeNotificationBroadcaster.hpp:45
+
Definition: Node.h:39
+
+
+ + + + diff --git a/Node_8h_source.html b/Node_8h_source.html new file mode 100644 index 000000000..6fef6caf6 --- /dev/null +++ b/Node_8h_source.html @@ -0,0 +1,448 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/game/nodes/Node.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Node.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <vector>
+
5#include <memory>
+
6#include <mutex>
+
7#include <atomic>
+
8#include <unordered_map>
+
9
+
10// Custom.
+
11#include "io/Serializable.h"
+
12#include "input/KeyboardKey.hpp"
+
13#include "gccontainers/GcVector.hpp"
+
14#include "game/callbacks/NodeNotificationBroadcaster.hpp"
+
15
+
16// External.
+
17#include "GcPtr.h"
+
18
+
19#include "Node.generated.h"
+
20
+
21namespace ne RNAMESPACE() {
+
22 class GameInstance;
+
23 class World;
+
24 class Timer;
+
25
+
33 enum class TickGroup { FIRST, SECOND };
+
34
+
39 class RCLASS(Guid("2a721c37-3c22-450c-8dad-7b6985cbbd61")) Node : public Serializable {
+
40 // GameManager will propagate functions to all nodes in the world such as `onBeforeNewFrame`.
+
41 friend class GameManager;
+
42
+
43 // World is able to spawn root node.
+
44 friend class World;
+
45
+
46 public:
+
51 enum class AttachmentRule {
+
52 RESET_RELATIVE, //< After the new child node was attached, resets its relative location
+
53 //< or rotation to 0 and relative scale to 1.
+
54 KEEP_RELATIVE, //< After the new child node was attached, its relative location/rotation/scale
+
55 //< will stay the same, but world location/rotation/scale might change.
+
56 KEEP_WORLD, //< After the new child node was attached, its relative
+
57 //< location/rotation/scale will be recalculated so that its
+
58 //< world location/rotation/scale will stay the same (as before attached).
+
59 };
+
60
+
66 static size_t getAliveNodeCount();
+
67
+
71 Node();
+
72
+
78 Node(const std::string& sName);
+
79
+
80 Node(const Node&) = delete;
+
81 Node& operator=(const Node&) = delete;
+
82 Node(Node&&) = delete;
+
83 Node& operator=(Node&&) = delete;
+
84
+
86 virtual ~Node() override;
+
87
+
96 static std::variant<sgc::GcPtr<Node>, Error>
+
97 deserializeNodeTree(const std::filesystem::path& pathToFile);
+
98
+
104 void setNodeName(const std::string& sName);
+
105
+
116 void detachFromParentAndDespawn();
+
117
+
140 void addChildNode(
+
141 const sgc::GcPtr<Node>& pNode,
+
142 AttachmentRule locationRule = AttachmentRule::KEEP_WORLD,
+
143 AttachmentRule rotationRule = AttachmentRule::KEEP_WORLD,
+
144 AttachmentRule scaleRule = AttachmentRule::KEEP_WORLD);
+
145
+
151 void setSerialize(bool bSerialize);
+
152
+
172 [[nodiscard]] std::optional<Error>
+
173 serializeNodeTree(const std::filesystem::path& pathToFile, bool bEnableBackup);
+
174
+
180 std::string getNodeName() const;
+
181
+
188 sgc::GcPtr<Node> getWorldRootNode();
+
189
+
204 std::pair<std::recursive_mutex, sgc::GcPtr<Node>>* getParentNode();
+
205
+
219 std::pair<std::recursive_mutex, sgc::GcVector<sgc::GcPtr<Node>>>* getChildNodes();
+
220
+
235 template <typename NodeType>
+
236 requires std::derived_from<NodeType, Node>
+
237 sgc::GcPtr<NodeType> getParentNodeOfType(const std::string& sParentNodeName = "");
+
238
+
253 template <typename NodeType>
+
254 requires std::derived_from<NodeType, Node>
+
255 sgc::GcPtr<NodeType> getChildNodeOfType(const std::string& sChildNodeName = "");
+
256
+
262 static GameInstance* getGameInstance();
+
263
+
269 TickGroup getTickGroup() const;
+
270
+
278 std::optional<size_t> getNodeId() const;
+
279
+
285 bool isCalledEveryFrame();
+
286
+
292 bool isReceivingInput();
+
293
+
299 bool isSpawned();
+
300
+
309 bool isParentOf(Node* pNode);
+
310
+
319 bool isChildOf(Node* pNode);
+
320
+
327 bool isSerialized() const;
+
328
+
329 protected:
+
338 void setIsCalledEveryFrame(bool bEnable);
+
339
+
359 void setTickGroup(TickGroup tickGroup);
+
360
+
372 void setIsReceivingInput(bool bEnable);
+
373
+
399 Timer* createTimer(const std::string& sTimerName);
+
400
+
431 template <typename FunctionType>
+ +
433 std::scoped_lock guard(mtxIsSpawned.first, mtxCreatedBroadcasters.first);
+
434
+
435 // Create broadcaster.
+
436 auto pNewBroadcaster = std::unique_ptr<NodeNotificationBroadcaster<FunctionType>>(
+ +
438 const auto pRawBroadcaster = pNewBroadcaster.get();
+
439
+
440 // Add to our array.
+
441 mtxCreatedBroadcasters.second.push_back(std::move(pNewBroadcaster));
+
442
+
443 if (mtxIsSpawned.second) {
+
444 // Get node ID.
+
445 if (!iNodeId.has_value()) [[unlikely]] {
+
446 Error error(std::format(
+
447 "node \"{}\" created a new broadcaster while being spawned but node's ID is empty",
+
448 sNodeName));
+
449 error.showError();
+
450 throw std::runtime_error(error.getFullErrorMessage());
+
451 }
+
452
+
453 // Notify broadcaster about node being spawned.
+
454 pRawBroadcaster->onOwnerNodeSpawning(this);
+
455 }
+
456
+
457 return pRawBroadcaster;
+
458 }
+
459
+
482 std::pair<
+
483 std::recursive_mutex,
+
484 std::unordered_map<unsigned int, std::function<void(KeyboardModifiers, bool)>>>*
+
485 getActionEventBindings();
+
486
+
511 std::pair<
+
512 std::recursive_mutex,
+
513 std::unordered_map<unsigned int, std::function<void(KeyboardModifiers, float)>>>*
+
514 getAxisEventBindings();
+
515
+
523 std::recursive_mutex* getSpawnDespawnMutex();
+
524
+
536 virtual void onMouseMove(double xOffset, double yOffset) {}
+
537
+
546 virtual void onMouseScrollMove(int iOffset) {}
+
547
+
560 virtual void onBeforeNewFrame(float timeSincePrevFrameInSec) {}
+
561
+
576 virtual void onSpawning() {}
+
577
+
589 virtual void onChildNodesSpawned() {}
+
590
+
602 virtual void onDespawning() {}
+
603
+
620 virtual void onBeforeDetachedFromParent(bool bThisNodeBeingDetached) {}
+
621
+
635 virtual void onAfterAttachedToNewParent(bool bThisNodeBeingAttached) {}
+
636
+
637 private:
+ + +
652 Serializable* pObject,
+
653 const std::string& sObjectUniqueId,
+
654 const std::unordered_map<std::string, std::string>& customAttributes = {},
+
655 Serializable* pOriginalObject = nullptr,
+
656 sgc::GcPtr<Node> pDeserializedOriginalObject = nullptr)
+
657 : SerializableObjectInformation(pObject, sObjectUniqueId, customAttributes, pOriginalObject) {
+
658 this->pDeserializedOriginalObject = pDeserializedOriginalObject;
+
659 }
+
660
+
662 sgc::GcPtr<Node> pDeserializedOriginalObject = nullptr;
+
663 };
+
664
+
675 bool enableTimer(Timer* pTimer, bool bEnable);
+
676
+
688 void onInputActionEvent(unsigned int iActionId, KeyboardModifiers modifiers, bool bIsPressedDown);
+
689
+
701 void onInputAxisEvent(unsigned int iAxisEventId, KeyboardModifiers modifiers, float input);
+
702
+
704 void spawn();
+
705
+
707 void despawn();
+
708
+
715 void notifyAboutAttachedToNewParent(bool bThisNodeBeingAttached);
+
716
+
723 void notifyAboutDetachingFromParent(bool bThisNodeBeingDetached);
+
724
+
732 World* findValidWorld();
+
733
+
744 std::variant<std::vector<SerializableObjectInformationWithGcPointer>, Error>
+
745 getInformationForSerialization(size_t& iId, std::optional<size_t> iParentId);
+
746
+
757 bool isTreeDeserializedFromOneFile(const std::string& sPathRelativeToRes);
+
758
+
767 void lockChildren();
+
768
+
775 void unlockChildren();
+
776
+
778 RPROPERTY(Serialize)
+
779 std::string sNodeName;
+
780
+
782 std::pair<std::recursive_mutex, sgc::GcVector<sgc::GcPtr<Node>>> mtxChildNodes;
+
783
+
785 std::pair<std::recursive_mutex, sgc::GcPtr<Node>> mtxParentNode;
+
786
+
788 std::pair<
+
789 std::recursive_mutex,
+
790 std::unordered_map<unsigned int, std::function<void(KeyboardModifiers, bool)>>>
+
791 mtxBindedActionEvents;
+
792
+
794 std::pair<
+
795 std::recursive_mutex,
+
796 std::unordered_map<unsigned int, std::function<void(KeyboardModifiers, float)>>>
+
797 mtxBindedAxisEvents;
+
798
+
809 std::pair<std::recursive_mutex, std::vector<std::unique_ptr<Timer>>> mtxCreatedTimers;
+
810
+
819 std::pair<std::recursive_mutex, std::vector<std::unique_ptr<NodeNotificationBroadcasterBase>>>
+
820 mtxCreatedBroadcasters;
+
821
+
823 std::pair<std::recursive_mutex, bool> mtxIsSpawned;
+
824
+
826 std::pair<std::recursive_mutex, bool> mtxIsCalledEveryFrame;
+
827
+
832 std::pair<std::recursive_mutex, bool> mtxIsReceivingInput;
+
833
+
839 World* pWorld = nullptr;
+
840
+
842 TickGroup tickGroup = TickGroup::FIRST;
+
843
+
845 std::optional<size_t> iNodeId;
+
846
+
851 bool bSerialize = true;
+
852
+
854 static inline const auto sParentNodeIdAttributeName = "parent_node_id";
+
855
+
857 static inline const auto sExternalNodeTreePathAttributeName =
+
858 "external_node_tree_path_relative_to_res";
+
859
+
860 ne_Node_GENERATED
+
861 };
+
862
+
863 template <typename NodeType>
+
864 requires std::derived_from<NodeType, Node>
+
865 sgc::GcPtr<NodeType> Node::getParentNodeOfType(const std::string& sParentNodeName) {
+
866 std::scoped_lock guard(mtxParentNode.first);
+
867
+
868 // Check if have a parent.
+
869 if (mtxParentNode.second == nullptr) {
+
870 return nullptr;
+
871 }
+
872
+
873 // Check parent's type and optionally name.
+
874 sgc::GcPtr<NodeType> pCastedParentNode = dynamic_cast<NodeType*>(mtxParentNode.second.get());
+
875 if (pCastedParentNode != nullptr &&
+
876 (sParentNodeName.empty() || mtxParentNode.second->getNodeName() == sParentNodeName)) {
+
877 // Found the node.
+
878 return pCastedParentNode;
+
879 }
+
880
+
881 // Ask parent nodes of that node.
+
882 return mtxParentNode.second->getParentNodeOfType<NodeType>(sParentNodeName);
+
883 }
+
884
+
885 template <typename NodeType>
+
886 requires std::derived_from<NodeType, Node>
+
887 sgc::GcPtr<NodeType> Node::getChildNodeOfType(const std::string& sChildNodeName) {
+
888 std::scoped_lock guard(mtxChildNodes.first);
+
889
+
890 // Iterate over child nodes.
+
891 for (auto& pChildNode : mtxChildNodes.second) {
+
892 // Check if this is the node we are looking for.
+
893 sgc::GcPtr<NodeType> pCastedChildNode = dynamic_cast<NodeType*>(pChildNode.get());
+
894 if (pCastedChildNode != nullptr &&
+
895 (sChildNodeName.empty() || pChildNode->getNodeName() == sChildNodeName)) {
+
896 // Found the node.
+
897 return pCastedChildNode;
+
898 }
+
899
+
900 // Ask child nodes of that node.
+
901 const auto pNode = pChildNode->getChildNodeOfType<NodeType>(sChildNodeName);
+
902 if (pNode == nullptr) {
+
903 // Check the next child node.
+
904 continue;
+
905 }
+
906
+
907 // Found the node.
+
908 return pNode;
+
909 }
+
910
+
911 return nullptr;
+
912 }
+
913} // namespace ne RNAMESPACE()
+
914
+
915File_Node_GENERATED
+
Definition: Error.h:27
+
std::string getFullErrorMessage() const
Definition: Error.cpp:84
+
void showError() const
Definition: Error.cpp:102
+
Definition: GameInstance.h:32
+
Definition: GameManager.h:34
+
Definition: GuidProperty.h:30
+
Definition: KeyboardKey.hpp:10
+
Definition: NodeNotificationBroadcaster.hpp:16
+
Definition: NodeNotificationBroadcaster.hpp:45
+
Definition: Node.h:39
+
AttachmentRule
Definition: Node.h:51
+
virtual void onBeforeDetachedFromParent(bool bThisNodeBeingDetached)
Definition: Node.h:620
+
virtual void onMouseMove(double xOffset, double yOffset)
Definition: Node.h:536
+
NodeNotificationBroadcaster< FunctionType > * createNotificationBroadcaster()
Definition: Node.h:432
+
virtual void onBeforeNewFrame(float timeSincePrevFrameInSec)
Definition: Node.h:560
+
virtual void onChildNodesSpawned()
Definition: Node.h:589
+
virtual void onDespawning()
Definition: Node.h:602
+
virtual void onAfterAttachedToNewParent(bool bThisNodeBeingAttached)
Definition: Node.h:635
+
virtual void onSpawning()
Definition: Node.h:576
+
virtual void onMouseScrollMove(int iOffset)
Definition: Node.h:546
+
Definition: Serializable.h:113
+
Definition: SerializeProperty.h:42
+
Definition: Timer.h:13
+
Definition: World.h:43
+ +
SerializableObjectInformationWithGcPointer(Serializable *pObject, const std::string &sObjectUniqueId, const std::unordered_map< std::string, std::string > &customAttributes={}, Serializable *pOriginalObject=nullptr, sgc::GcPtr< Node > pDeserializedOriginalObject=nullptr)
Definition: Node.h:651
+
Definition: Serializable.h:31
+
+
+ + + + diff --git a/OpenLinkInBrowser_8h_source.html b/OpenLinkInBrowser_8h_source.html new file mode 100644 index 000000000..3cda1b60e --- /dev/null +++ b/OpenLinkInBrowser_8h_source.html @@ -0,0 +1,121 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/misc/OpenLinkInBrowser.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OpenLinkInBrowser.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <string>
+
5
+
6namespace ne {
+ +
9 public:
+
15 static void open(const std::string& sLink);
+
16 };
+
17} // namespace ne
+
Definition: OpenLinkInBrowser.h:8
+
static void open(const std::string &sLink)
Definition: OpenLinkInBrowser.cpp:12
+
+
+ + + + diff --git a/PipelineConfiguration_8h_source.html b/PipelineConfiguration_8h_source.html new file mode 100644 index 000000000..dafe15180 --- /dev/null +++ b/PipelineConfiguration_8h_source.html @@ -0,0 +1,253 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/general/pipeline/PipelineConfiguration.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PipelineConfiguration.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <set>
+
5#include <optional>
+
6
+
7// Custom.
+
8#include "render/general/pipeline/PipelineType.hpp"
+
9#include "shader/general/ShaderMacro.h"
+
10
+
11namespace ne {
+
13 enum class PipelineShadowMappingUsage {
+
14 DIRECTIONAL_AND_SPOT_LIGHTS,
+
15 POINT_LIGHTS,
+
16 };
+
17
+ +
25 public:
+
26 PipelineConfiguration() = delete;
+
27 virtual ~PipelineConfiguration() = default;
+
28
+
34 inline std::set<ShaderMacro> getAdditionalVertexShaderMacros() const {
+ +
36 }
+
37
+
43 inline std::string_view getVertexShaderName() const { return sVertexShaderName; }
+
44
+
50 virtual std::optional<GraphicsPipelineType> getGraphicsType() const = 0;
+
51
+
59 virtual std::set<ShaderMacro> getAdditionalPixelShaderMacros() const { return {}; }
+
60
+
66 virtual std::string_view getPixelShaderName() const { return ""; }
+
67
+
73 virtual std::string_view getComputeShaderName() const { return ""; }
+
74
+
80 virtual bool isPixelBlendingEnabled() const { return false; }
+
81
+
87 virtual bool isDepthBiasEnabled() const { return false; }
+
88
+
95 virtual std::optional<PipelineShadowMappingUsage> getShadowMappingUsage() const { return {}; }
+
96
+
97 protected:
+ +
105 const std::string& sVertexShaderName, const std::set<ShaderMacro>& additionalVertexShaderMacros);
+
106
+
108 std::set<ShaderMacro> additionalVertexShaderMacros;
+
109
+
111 const std::string sVertexShaderName;
+
112 };
+
113
+ +
116 public:
+ +
118 virtual ~ColorPipelineConfiguration() override = default;
+
119
+ +
130 const std::string& sVertexShaderName,
+
131 const std::set<ShaderMacro>& additionalVertexShaderMacros,
+
132 const std::string& sPixelShaderName,
+
133 std::set<ShaderMacro> additionalPixelShaderMacros,
+
134 bool bUsePixelBlending);
+
135
+
141 virtual std::optional<GraphicsPipelineType> getGraphicsType() const override;
+
142
+
149 virtual std::set<ShaderMacro> getAdditionalPixelShaderMacros() const override;
+
150
+
156 virtual std::string_view getPixelShaderName() const override;
+
157
+
163 virtual bool isPixelBlendingEnabled() const override;
+
164
+
165 protected:
+
167 std::set<ShaderMacro> additionalPixelShaderMacros;
+
168
+
170 const std::string sPixelShaderName;
+
171
+ +
174 };
+
175
+ +
178 public:
+ +
180 virtual ~DepthPipelineConfiguration() override = default;
+
181
+ +
192 const std::string& sVertexShaderName,
+
193 const std::set<ShaderMacro>& additionalVertexShaderMacros,
+
194 std::optional<PipelineShadowMappingUsage> shadowMappingUsage);
+
195
+
201 virtual std::optional<GraphicsPipelineType> getGraphicsType() const override;
+
202
+
208 virtual bool isDepthBiasEnabled() const override;
+
209
+
215 virtual std::string_view getPixelShaderName() const override;
+
216
+
223 virtual std::optional<PipelineShadowMappingUsage> getShadowMappingUsage() const override;
+
224
+
225 protected:
+
227 const std::optional<PipelineShadowMappingUsage> shadowMappingUsage;
+
228 };
+
229
+ +
232 public:
+ +
234 virtual ~ComputePipelineConfiguration() override = default;
+
235
+ +
242
+
248 virtual std::optional<GraphicsPipelineType> getGraphicsType() const override;
+
249
+
255 virtual std::string_view getComputeShaderName() const override;
+
256
+
257 private:
+
259 const std::string sComputeShaderName;
+
260 };
+
261}
+
Definition: PipelineConfiguration.h:115
+
virtual std::string_view getPixelShaderName() const override
Definition: PipelineConfiguration.cpp:30
+
const std::string sPixelShaderName
Definition: PipelineConfiguration.h:170
+
virtual std::set< ShaderMacro > getAdditionalPixelShaderMacros() const override
Definition: PipelineConfiguration.cpp:26
+
std::set< ShaderMacro > additionalPixelShaderMacros
Definition: PipelineConfiguration.h:167
+
const bool bUsePixelBlending
Definition: PipelineConfiguration.h:173
+
virtual bool isPixelBlendingEnabled() const override
Definition: PipelineConfiguration.cpp:32
+
virtual std::optional< GraphicsPipelineType > getGraphicsType() const override
Definition: PipelineConfiguration.cpp:18
+
Definition: PipelineConfiguration.h:231
+
virtual std::optional< GraphicsPipelineType > getGraphicsType() const override
Definition: PipelineConfiguration.cpp:81
+
virtual std::string_view getComputeShaderName() const override
Definition: PipelineConfiguration.cpp:83
+
const std::string sComputeShaderName
Definition: PipelineConfiguration.h:259
+
Definition: PipelineConfiguration.h:177
+
virtual bool isDepthBiasEnabled() const override
Definition: PipelineConfiguration.cpp:58
+
virtual std::optional< GraphicsPipelineType > getGraphicsType() const override
Definition: PipelineConfiguration.cpp:46
+
virtual std::string_view getPixelShaderName() const override
Definition: PipelineConfiguration.cpp:60
+
const std::optional< PipelineShadowMappingUsage > shadowMappingUsage
Definition: PipelineConfiguration.h:227
+
virtual std::optional< PipelineShadowMappingUsage > getShadowMappingUsage() const override
Definition: PipelineConfiguration.cpp:70
+
Definition: PipelineConfiguration.h:24
+
virtual std::optional< PipelineShadowMappingUsage > getShadowMappingUsage() const
Definition: PipelineConfiguration.h:95
+
virtual std::set< ShaderMacro > getAdditionalPixelShaderMacros() const
Definition: PipelineConfiguration.h:59
+
virtual std::optional< GraphicsPipelineType > getGraphicsType() const =0
+
const std::string sVertexShaderName
Definition: PipelineConfiguration.h:111
+
std::set< ShaderMacro > additionalVertexShaderMacros
Definition: PipelineConfiguration.h:108
+
std::string_view getVertexShaderName() const
Definition: PipelineConfiguration.h:43
+
virtual std::string_view getComputeShaderName() const
Definition: PipelineConfiguration.h:73
+
virtual bool isDepthBiasEnabled() const
Definition: PipelineConfiguration.h:87
+
std::set< ShaderMacro > getAdditionalVertexShaderMacros() const
Definition: PipelineConfiguration.h:34
+
virtual std::string_view getPixelShaderName() const
Definition: PipelineConfiguration.h:66
+
virtual bool isPixelBlendingEnabled() const
Definition: PipelineConfiguration.h:80
+
+
+ + + + diff --git a/PipelineManager_8h_source.html b/PipelineManager_8h_source.html new file mode 100644 index 000000000..10c43dfad --- /dev/null +++ b/PipelineManager_8h_source.html @@ -0,0 +1,335 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/general/pipeline/PipelineManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PipelineManager.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <array>
+
5#include <mutex>
+
6#include <unordered_map>
+
7#include <memory>
+
8#include <atomic>
+
9#include <unordered_set>
+
10
+
11// Custom.
+
12#include "render/general/pipeline/Pipeline.h"
+
13#include "shader/general/ShaderMacro.h"
+
14#include "render/general/pipeline/PipelineSharedPtr.h"
+
15#include "shader/ComputeShaderInterface.h"
+
16#include "render/general/pipeline/PipelineType.hpp"
+
17#include "render/general/pipeline/PipelineConfiguration.h"
+
18#include "render/general/pipeline/PipelineRegistry.hpp"
+
19#include "render/general/resource/frame/FrameResourceManager.h"
+
20
+
21// External.
+
22#include "vulkan/vulkan_core.h"
+
23
+
24namespace ne {
+
25 class Renderer;
+
26 class Material;
+
27 class MeshNode;
+
28 class ComputeShaderInterface;
+
29
+ +
39 public:
+ +
41
+ + +
44
+ + +
47 operator=(DelayedPipelineResourcesCreation&& other) noexcept = delete;
+
48
+ +
55 this->pPipelineManager = pPipelineManager;
+
56 initialize();
+
57 }
+
58
+ +
60
+
61 private:
+
63 void initialize();
+
64
+
66 void destroy();
+
67
+ +
70 };
+
71
+ +
89 std::array<
+
90 std::array<
+
91 std::unordered_map<Pipeline*, std::unordered_set<ComputeShaderInterface*>>,
+
92 static_cast<size_t>(ComputeExecutionGroup::SIZE)>,
+
93 static_cast<size_t>(ComputeExecutionStage::SIZE)>
+ +
95 };
+
96
+ +
99 // Pipeline notifies the manager when a material stops referencing it.
+
100 friend class Pipeline;
+
101
+
102 // Releases/restores internal Pipeline's resources.
+ +
104
+
105 // Compute interfaces request compute pipelines and queue for execution.
+
106 friend class ComputeShaderInterface;
+
107
+
108 public:
+ +
115
+
117 virtual ~PipelineManager();
+
118
+
119 PipelineManager() = delete;
+
120 PipelineManager(const PipelineManager&) = delete;
+
121 PipelineManager& operator=(const PipelineManager&) = delete;
+
122
+
133 [[nodiscard]] std::optional<Error> bindBuffersToAllVulkanPipelinesIfUsed(
+
134 const std::array<GpuResource*, FrameResourceManager::getFrameResourceCount()>& vResources,
+
135 const std::string& sShaderResourceName,
+
136 VkDescriptorType descriptorType);
+
137
+
150 [[nodiscard]] std::optional<Error> bindImageToAllVulkanPipelinesIfUsed(
+
151 GpuResource* pImageResourceToBind,
+
152 const std::string& sShaderResourceName,
+
153 VkDescriptorType descriptorType,
+
154 VkImageLayout imageLayout,
+
155 VkSampler pSampler);
+
156
+ + +
166
+
181 std::variant<PipelineSharedPtr, Error> getGraphicsPipelineForMaterial(
+
182 std::unique_ptr<PipelineConfiguration> pPipelineConfiguration, Material* pMaterial);
+
183
+
191 inline std::pair<std::recursive_mutex*, QueuedForExecutionComputeShaders*>
+ + +
194 }
+
195
+
205 inline std::pair<std::recursive_mutex, GraphicsPipelineRegistry>* getGraphicsPipelines() {
+
206 return &mtxGraphicsPipelines;
+
207 }
+
208
+ +
215
+ +
222
+
228 Renderer* getRenderer() const;
+
229
+
230 private:
+ +
234 struct Resources {
+
236 std::unordered_map<std::string, std::shared_ptr<Pipeline>> pipelines;
+
237
+ +
240 };
+
241
+
242 ComputePipelines() = default;
+
243
+
244 ComputePipelines(const ComputePipelines&) = delete;
+
245 ComputePipelines& operator=(const ComputePipelines&) = delete;
+
246
+
260 std::variant<PipelineSharedPtr, Error> getComputePipelineForShader(
+
261 PipelineManager* pPipelineManager, ComputeShaderInterface* pComputeShaderInterface);
+
262
+
276 [[nodiscard]] std::optional<Error> onPipelineNoLongerUsedByComputeShaderInterface(
+
277 const std::string& sComputeShaderName, ComputeShaderInterface* pComputeShaderInterface);
+
278
+
291 [[nodiscard]] std::optional<Error>
+ +
293
+ +
300
+
308 inline std::pair<std::recursive_mutex*, QueuedForExecutionComputeShaders*>
+ +
310 return std::make_pair(&mtxResources.first, &mtxResources.second.queuedComputeShaders);
+
311 }
+
312
+
313 private:
+
324 [[nodiscard]] static std::optional<Error> queueComputeShaderInterfaceForExecution(
+
325 std::unordered_map<Pipeline*, std::unordered_set<ComputeShaderInterface*>>& pipelineShaders,
+
326 ComputeShaderInterface* pComputeShaderInterface);
+
327
+
329 std::pair<std::recursive_mutex, Resources> mtxResources;
+
330 };
+
331
+
348 [[nodiscard]] std::optional<Error> releaseInternalGraphicsPipelinesResources();
+
349
+
359 [[nodiscard]] std::optional<Error> restoreInternalGraphicsPipelinesResources();
+
360
+
374 std::variant<PipelineSharedPtr, Error> createGraphicsPipelineForMaterial(
+
375 std::unordered_map<std::string, ShaderPipelines>& pipelines,
+
376 const std::string& sShaderNames,
+
377 const std::set<ShaderMacro>& macrosToUse,
+
378 std::unique_ptr<PipelineConfiguration> pPipelineConfiguration,
+
379 Material* pMaterial);
+
380
+
387 void onPipelineNoLongerUsedByMaterial(const std::string& sPipelineIdentifier);
+
388
+ +
396 const std::string& sComputeShaderName, ComputeShaderInterface* pComputeShaderInterface);
+
397
+
409 std::variant<PipelineSharedPtr, Error> findOrCreatePipeline(
+
410 std::unordered_map<std::string, ShaderPipelines>& pipelines,
+
411 const std::string& sKeyToLookFor,
+
412 const std::set<ShaderMacro>& macrosToLookFor,
+
413 std::unique_ptr<PipelineConfiguration> pPipelineConfiguration,
+
414 Material* pMaterial);
+
415
+
417 std::pair<std::recursive_mutex, GraphicsPipelineRegistry> mtxGraphicsPipelines;
+
418
+ +
421
+
423 Renderer* const pRenderer = nullptr;
+
424 };
+
425} // namespace ne
+
Definition: ComputeShaderInterface.h:46
+
Definition: PipelineManager.h:38
+
PipelineManager * pPipelineManager
Definition: PipelineManager.h:69
+
void initialize()
Definition: PipelineManager.cpp:473
+
DelayedPipelineResourcesCreation(PipelineManager *pPipelineManager)
Definition: PipelineManager.h:54
+
void destroy()
Definition: PipelineManager.cpp:494
+
static constexpr unsigned int getFrameResourceCount()
Definition: FrameResourceManager.h:74
+
Definition: GpuResource.h:16
+
Definition: Material.h:63
+
Definition: PipelineManager.h:98
+
void onPipelineNoLongerUsedByComputeShaderInterface(const std::string &sComputeShaderName, ComputeShaderInterface *pComputeShaderInterface)
Definition: PipelineManager.cpp:461
+
void onPipelineNoLongerUsedByMaterial(const std::string &sPipelineIdentifier)
Definition: PipelineManager.cpp:431
+
Renderer * getRenderer() const
Definition: PipelineManager.cpp:314
+
std::optional< Error > bindImageToAllVulkanPipelinesIfUsed(GpuResource *pImageResourceToBind, const std::string &sShaderResourceName, VkDescriptorType descriptorType, VkImageLayout imageLayout, VkSampler pSampler)
Definition: PipelineManager.cpp:51
+
std::optional< Error > restoreInternalGraphicsPipelinesResources()
Definition: PipelineManager.cpp:340
+
DelayedPipelineResourcesCreation clearGraphicsPipelinesInternalResourcesAndDelayRestoring()
Definition: PipelineManager.cpp:88
+
size_t getCurrentGraphicsPipelineCount()
Definition: PipelineManager.cpp:295
+
std::variant< PipelineSharedPtr, Error > getGraphicsPipelineForMaterial(std::unique_ptr< PipelineConfiguration > pPipelineConfiguration, Material *pMaterial)
Definition: PipelineManager.cpp:118
+
Renderer *const pRenderer
Definition: PipelineManager.h:423
+
ComputePipelines computePipelines
Definition: PipelineManager.h:420
+
std::optional< Error > bindBuffersToAllVulkanPipelinesIfUsed(const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> &vResources, const std::string &sShaderResourceName, VkDescriptorType descriptorType)
Definition: PipelineManager.cpp:17
+
std::variant< PipelineSharedPtr, Error > findOrCreatePipeline(std::unordered_map< std::string, ShaderPipelines > &pipelines, const std::string &sKeyToLookFor, const std::set< ShaderMacro > &macrosToLookFor, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration, Material *pMaterial)
Definition: PipelineManager.cpp:92
+
std::variant< PipelineSharedPtr, Error > createGraphicsPipelineForMaterial(std::unordered_map< std::string, ShaderPipelines > &pipelines, const std::string &sShaderNames, const std::set< ShaderMacro > &macrosToUse, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration, Material *pMaterial)
Definition: PipelineManager.cpp:225
+
virtual ~PipelineManager()
Definition: PipelineManager.cpp:173
+
std::optional< Error > releaseInternalGraphicsPipelinesResources()
Definition: PipelineManager.cpp:316
+
std::pair< std::recursive_mutex, GraphicsPipelineRegistry > * getGraphicsPipelines()
Definition: PipelineManager.h:205
+
size_t getCurrentComputePipelineCount()
Definition: PipelineManager.cpp:310
+
std::pair< std::recursive_mutex, GraphicsPipelineRegistry > mtxGraphicsPipelines
Definition: PipelineManager.h:417
+
std::pair< std::recursive_mutex *, QueuedForExecutionComputeShaders * > getComputeShadersForGraphicsQueueExecution()
Definition: PipelineManager.h:192
+
Definition: Pipeline.h:20
+
Definition: Renderer.h:44
+
Definition: PipelineManager.h:234
+
QueuedForExecutionComputeShaders queuedComputeShaders
Definition: PipelineManager.h:239
+
std::unordered_map< std::string, std::shared_ptr< Pipeline > > pipelines
Definition: PipelineManager.h:236
+
Definition: PipelineManager.h:232
+
size_t getComputePipelineCount()
Definition: PipelineManager.cpp:505
+
std::variant< PipelineSharedPtr, Error > getComputePipelineForShader(PipelineManager *pPipelineManager, ComputeShaderInterface *pComputeShaderInterface)
Definition: PipelineManager.cpp:510
+
std::optional< Error > onPipelineNoLongerUsedByComputeShaderInterface(const std::string &sComputeShaderName, ComputeShaderInterface *pComputeShaderInterface)
Definition: PipelineManager.cpp:541
+
static std::optional< Error > queueComputeShaderInterfaceForExecution(std::unordered_map< Pipeline *, std::unordered_set< ComputeShaderInterface * > > &pipelineShaders, ComputeShaderInterface *pComputeShaderInterface)
Definition: PipelineManager.cpp:603
+
std::optional< Error > queueShaderExecutionOnGraphicsQueue(ComputeShaderInterface *pComputeShaderInterface)
Definition: PipelineManager.cpp:579
+
std::pair< std::recursive_mutex, Resources > mtxResources
Definition: PipelineManager.h:329
+
std::pair< std::recursive_mutex *, QueuedForExecutionComputeShaders * > getComputeShadersForGraphicsQueueExecution()
Definition: PipelineManager.h:309
+
Definition: PipelineManager.h:80
+
std::array< std::array< std::unordered_map< Pipeline *, std::unordered_set< ComputeShaderInterface * > >, static_cast< size_t >(ComputeExecutionGroup::SIZE)>, static_cast< size_t >(ComputeExecutionStage::SIZE)> vGraphicsQueueStagesGroups
Definition: PipelineManager.h:94
+
+
+ + + + diff --git a/PipelineRegistry_8hpp_source.html b/PipelineRegistry_8hpp_source.html new file mode 100644 index 000000000..00cc6717a --- /dev/null +++ b/PipelineRegistry_8hpp_source.html @@ -0,0 +1,141 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/general/pipeline/PipelineRegistry.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PipelineRegistry.hpp
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <unordered_map>
+
5#include <set>
+
6#include <memory>
+
7#include <string>
+
8#include <array>
+
9
+
10// Custom.
+
11#include "shader/general/ShaderMacro.h"
+
12#include "render/general/pipeline/PipelineType.hpp"
+
13
+
14namespace ne {
+
15 class Pipeline;
+
16
+ +
26 std::unordered_map<std::set<ShaderMacro>, std::shared_ptr<Pipeline>, ShaderMacroSetHash>
+ +
28 };
+
29
+ +
33 std::array<
+
34 std::unordered_map<std::string, ShaderPipelines>,
+
35 static_cast<size_t>(GraphicsPipelineType::SIZE)>
+ +
37 };
+
38}
+
Definition: PipelineRegistry.hpp:31
+
std::array< std::unordered_map< std::string, ShaderPipelines >, static_cast< size_t >(GraphicsPipelineType::SIZE)> vPipelineTypes
Definition: PipelineRegistry.hpp:36
+
Definition: ShaderMacro.h:230
+
Definition: PipelineRegistry.hpp:18
+
std::unordered_map< std::set< ShaderMacro >, std::shared_ptr< Pipeline >, ShaderMacroSetHash > shaderPipelines
Definition: PipelineRegistry.hpp:27
+
+
+ + + + diff --git a/PipelineShaderConstantsManager_8hpp_source.html b/PipelineShaderConstantsManager_8hpp_source.html new file mode 100644 index 000000000..41b9566f0 --- /dev/null +++ b/PipelineShaderConstantsManager_8hpp_source.html @@ -0,0 +1,208 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/general/pipeline/PipelineShaderConstantsManager.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PipelineShaderConstantsManager.hpp
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <stdexcept>
+
5#include <format>
+
6#include <vector>
+
7
+
8// Custom.
+
9#include "misc/Error.h"
+
10#include "io/Logger.h"
+
11
+
12namespace ne {
+ +
15 public:
+
17 using variable_type = unsigned int;
+
18
+ + + +
22
+ +
26 static constexpr auto pShadowPassLightInfoIndex = "iShadowPassLightInfoIndex";
+
27 };
+
28
+
34 static constexpr size_t getMaxConstantsSizeInBytes() { return iMaxShaderConstantsSizeInBytes; }
+
35
+
45 PipelineShaderConstantsManager(size_t iVariableCount) {
+
46 // Make sure we won't exceed maximum allowed size limit.
+
47 const size_t iSizeInBytes = iVariableCount * sizeof(variable_type);
+
48 if (iSizeInBytes > iMaxShaderConstantsSizeInBytes) [[unlikely]] {
+
49 Error error(std::format(
+
50 "failed to create shader constants manager with size {} bytes because the maximum "
+
51 "allowed size is {} bytes",
+
52 iSizeInBytes,
+ +
54 error.showError();
+
55 throw std::runtime_error(error.getFullErrorMessage());
+
56 }
+
57
+
58 // Make sure the specified size is not zero.
+
59 if (iVariableCount == 0) [[unlikely]] {
+
60 Error error("failed to create shader constants manager because the specified size is zero");
+
61 error.showError();
+
62 throw std::runtime_error(error.getFullErrorMessage());
+
63 }
+
64
+
65 // Prepare data.
+
66 vConstantsData.resize(iVariableCount, 0);
+
67 }
+
68
+
75 inline void copyValueToShaderConstant(size_t iShaderConstantIndex, unsigned int iValueToCopy) {
+
76 // Make sure we don't access out of bounds.
+
77 if (iShaderConstantIndex >= vConstantsData.size()) [[unlikely]] {
+
78 Logger::get().error(std::format(
+
79 "the specified push/root constant index {} is out of bounds (max: {})",
+
80 iShaderConstantIndex,
+
81 vConstantsData.size() - 1));
+
82 return;
+
83 }
+
84
+
85 // Set value.
+
86 vConstantsData[iShaderConstantIndex] = iValueToCopy;
+
87 }
+
88
+
94 inline unsigned int getTotalSizeInBytes() const {
+
95 // We can safely cast to `uint` here since push/root constants are very small in size.
+
96 return static_cast<unsigned int>(vConstantsData.size() * sizeof(variable_type));
+
97 }
+
98
+
104 inline unsigned int getVariableCount() const {
+
105 return static_cast<unsigned int>(vConstantsData.size());
+
106 }
+
107
+
113 inline void* getData() { return vConstantsData.data(); }
+
114
+
115 private:
+
117 std::vector<variable_type> vConstantsData;
+
118
+
120 static constexpr size_t iMaxShaderConstantsSizeInBytes =
+
121 128; // NOLINT: guaranteed minimum supported size from Vulkan specs, we should stick with it to
+
122 // support as much GPUs as possible
+
123 };
+
124} // namespace ne
+
Definition: Error.h:27
+
std::string getFullErrorMessage() const
Definition: Error.cpp:84
+
void showError() const
Definition: Error.cpp:102
+
void error(std::string_view sText, const std::source_location location=std::source_location::current()) const
Definition: Logger.cpp:75
+
static Logger & get()
Definition: Logger.cpp:41
+
Definition: PipelineShaderConstantsManager.hpp:14
+
unsigned int variable_type
Definition: PipelineShaderConstantsManager.hpp:17
+
static constexpr size_t iMaxShaderConstantsSizeInBytes
Definition: PipelineShaderConstantsManager.hpp:120
+
void * getData()
Definition: PipelineShaderConstantsManager.hpp:113
+
static constexpr size_t getMaxConstantsSizeInBytes()
Definition: PipelineShaderConstantsManager.hpp:34
+
PipelineShaderConstantsManager(size_t iVariableCount)
Definition: PipelineShaderConstantsManager.hpp:45
+
unsigned int getVariableCount() const
Definition: PipelineShaderConstantsManager.hpp:104
+
std::vector< variable_type > vConstantsData
Definition: PipelineShaderConstantsManager.hpp:117
+
unsigned int getTotalSizeInBytes() const
Definition: PipelineShaderConstantsManager.hpp:94
+
void copyValueToShaderConstant(size_t iShaderConstantIndex, unsigned int iValueToCopy)
Definition: PipelineShaderConstantsManager.hpp:75
+
Definition: PipelineShaderConstantsManager.hpp:24
+
static constexpr auto pShadowPassLightInfoIndex
Definition: PipelineShaderConstantsManager.hpp:26
+
+
+ + + + diff --git a/PipelineSharedPtr_8h_source.html b/PipelineSharedPtr_8h_source.html new file mode 100644 index 000000000..4f8561703 --- /dev/null +++ b/PipelineSharedPtr_8h_source.html @@ -0,0 +1,176 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/general/pipeline/PipelineSharedPtr.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PipelineSharedPtr.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <memory>
+
5
+
6namespace ne {
+
7 class Pipeline;
+
8 class Material;
+
9 class ComputeShaderInterface;
+
10
+ +
16 public:
+
23 explicit PipelineSharedPtr(std::shared_ptr<Pipeline> pPipeline, Material* pMaterialThatUsesPipeline);
+
24
+
31 explicit PipelineSharedPtr(
+ +
33
+
35 PipelineSharedPtr() = default;
+
36
+ +
38
+
39 PipelineSharedPtr(const PipelineSharedPtr&) = delete;
+
40 PipelineSharedPtr& operator=(const PipelineSharedPtr&) = delete;
+
41
+
47 PipelineSharedPtr(PipelineSharedPtr&& other) noexcept;
+
48
+
56 PipelineSharedPtr& operator=(PipelineSharedPtr&& other) noexcept;
+
57
+
63 bool isInitialized() const;
+
64
+
66 void clear();
+
67
+
74 void set(std::shared_ptr<Pipeline> pPipeline, Material* pMaterialThatUsesPipeline);
+
75
+
83 inline Pipeline* getPipeline() const { return pPipeline.get(); }
+
84
+
90 Pipeline* operator->() const;
+
91
+
92 private:
+ +
95
+
102 void initialize(std::shared_ptr<Pipeline> pPipeline, Material* pMaterialThatUsesPipeline);
+
103
+
110 void initialize(
+ +
112
+
114 std::shared_ptr<Pipeline> pPipeline = nullptr;
+
115
+ +
122
+ +
129 };
+
130}
+
Definition: ComputeShaderInterface.h:46
+
Definition: Material.h:63
+
Definition: PipelineSharedPtr.h:15
+
bool isInitialized() const
Definition: PipelineSharedPtr.cpp:37
+
ComputeShaderInterface * pComputeShaderThatUsesPipeline
Definition: PipelineSharedPtr.h:128
+
void set(std::shared_ptr< Pipeline > pPipeline, Material *pMaterialThatUsesPipeline)
Definition: PipelineSharedPtr.cpp:41
+
void clear()
Definition: PipelineSharedPtr.cpp:39
+
void initialize(std::shared_ptr< Pipeline > pPipeline, Material *pMaterialThatUsesPipeline)
Definition: PipelineSharedPtr.cpp:70
+
Pipeline * operator->() const
Definition: PipelineSharedPtr.cpp:46
+
void clearPointerAndNotifyPipeline()
Definition: PipelineSharedPtr.cpp:48
+
PipelineSharedPtr()=default
+
Pipeline * getPipeline() const
Definition: PipelineSharedPtr.h:83
+
Material * pMaterialThatUsesPipeline
Definition: PipelineSharedPtr.h:121
+
std::shared_ptr< Pipeline > pPipeline
Definition: PipelineSharedPtr.h:114
+
Definition: Pipeline.h:20
+
+
+ + + + diff --git a/PipelineType_8hpp_source.html b/PipelineType_8hpp_source.html new file mode 100644 index 000000000..3633b088b --- /dev/null +++ b/PipelineType_8hpp_source.html @@ -0,0 +1,127 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/general/pipeline/PipelineType.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PipelineType.hpp
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <cstddef>
+
5
+
6namespace ne {
+
8 enum class GraphicsPipelineType : size_t {
+
9 PT_OPAQUE = 0, //< OPAQUE is a Windows macro, thus adding a prefix
+
10 PT_TRANSPARENT, //< TRANSPARENT is a Windows macro, thus adding a prefix
+
11 PT_DEPTH_ONLY, //< vertex shader only
+
12 PT_SHADOW_MAPPING_DIRECTIONAL_SPOT, //< vertex shader only with depth bias
+
13 PT_SHADOW_MAPPING_POINT, //< vertex shader with depth bias and special fragment shader
+
14
+
15 // !!! new Pipeline types go here !!!
+
16
+
17 SIZE
+
18 };
+
19
+
20}
+
+
+ + + + diff --git a/Pipeline_8h_source.html b/Pipeline_8h_source.html new file mode 100644 index 000000000..b3ab1f7c2 --- /dev/null +++ b/Pipeline_8h_source.html @@ -0,0 +1,253 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/general/pipeline/Pipeline.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Pipeline.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <set>
+
5#include <unordered_set>
+
6
+
7// Custom.
+
8#include "shader/general/ShaderUser.h"
+
9#include "render/general/pipeline/PipelineConfiguration.h"
+
10#include "render/general/pipeline/PipelineShaderConstantsManager.hpp"
+
11
+
12namespace ne {
+
13 class Renderer;
+
14 class PipelineManager;
+
15 class Material;
+
16 class ComputeShaderInterface;
+
17 class Pipeline;
+
18
+
20 class Pipeline : public ShaderUser {
+
21 // Only Pipeline manager should be able to create Pipeline.
+
22 friend class PipelineManager;
+
23
+
24 // Will notify when material is no longer referencing a Pipeline.
+
25 friend class PipelineSharedPtr;
+
26
+
27 public:
+
28 Pipeline() = delete;
+
29 Pipeline(const Pipeline&) = delete;
+
30 Pipeline& operator=(const Pipeline&) = delete;
+
31
+
32 virtual ~Pipeline() override = default;
+
33
+ + +
52 Pipeline* pPipeline, const char* pConstantName, unsigned int iValueToCopy);
+
53
+
55 std::unique_ptr<PipelineShaderConstantsManager> pConstantsManager;
+
56
+
61 std::unordered_map<std::string, size_t> uintConstantsOffsets;
+
62 };
+
63
+
77 static std::string combineShaderNames(
+
78 std::string_view sVertexShaderName,
+
79 std::string_view sPixelShaderName,
+
80 std::string_view sComputeShaderName = "");
+
81
+
90 std::optional<std::set<ShaderMacro>> getCurrentShaderConfiguration(ShaderType shaderType);
+
91
+
100 std::variant<size_t, Error> getUintConstantOffset(const std::string& sConstantName);
+
101
+
108 std::pair<std::mutex, std::unordered_set<Material*>>* getMaterialsThatUseThisPipeline();
+
109
+
115 std::string getPipelineIdentifier() const;
+
116
+
122 Renderer* getRenderer() const;
+
123
+ +
132
+
140 std::pair<std::mutex, std::optional<ShaderConstantsData>>* getShaderConstants();
+
141
+
142 protected:
+
150 explicit Pipeline(
+ + +
153 std::unique_ptr<PipelineConfiguration> pPipelineConfiguration);
+
154
+
163 void saveUsedShaderConfiguration(ShaderType shaderType, std::set<ShaderMacro>&& fullConfiguration);
+
164
+
179 [[nodiscard]] virtual std::optional<Error> releaseInternalResources() = 0;
+
180
+
189 [[nodiscard]] virtual std::optional<Error> restoreInternalResources() = 0;
+
190
+
198 void setShaderConstants(const std::unordered_map<std::string, size_t>& uintConstantsOffsets);
+
199
+
200 private:
+
212 static std::variant<std::shared_ptr<Pipeline>, Error> createGraphicsPipeline(
+ + +
215 std::unique_ptr<PipelineConfiguration> pPipelineConfiguration);
+
216
+
228 static std::variant<std::shared_ptr<Pipeline>, Error> createComputePipeline(
+
229 Renderer* pRenderer, PipelineManager* pPipelineManager, const std::string& sComputeShaderName);
+
230
+
240 void onMaterialUsingPipeline(Material* pMaterial);
+
241
+ +
252
+
262 void onComputeShaderUsingPipeline(ComputeShaderInterface* pComputeShaderInterface);
+
263
+ +
274
+
280 std::pair<std::mutex, std::unordered_set<Material*>> mtxMaterialsThatUseThisPipeline;
+
281
+
287 std::pair<std::mutex, std::unordered_set<ComputeShaderInterface*>>
+ +
289
+
291 std::pair<std::mutex, std::optional<ShaderConstantsData>> mtxShaderConstantsData;
+
292
+
296 std::unordered_map<ShaderType, std::set<ShaderMacro>> usedShaderConfiguration;
+
297
+
299 const std::unique_ptr<PipelineConfiguration> pPipelineConfiguration;
+
300
+ +
303
+
305 Renderer* const pRenderer = nullptr;
+
306 };
+
307} // namespace ne
+
Definition: ComputeShaderInterface.h:46
+
Definition: Error.h:27
+
Definition: Material.h:63
+
Definition: PipelineConfiguration.h:24
+
Definition: PipelineManager.h:98
+
Definition: PipelineSharedPtr.h:15
+
Definition: Pipeline.h:20
+
std::pair< std::mutex, std::optional< ShaderConstantsData > > mtxShaderConstantsData
Definition: Pipeline.h:291
+
std::pair< std::mutex, std::optional< ShaderConstantsData > > * getShaderConstants()
Definition: Pipeline.cpp:196
+
void onMaterialUsingPipeline(Material *pMaterial)
Definition: Pipeline.cpp:200
+
std::string getPipelineIdentifier() const
Definition: Pipeline.cpp:189
+
std::pair< std::mutex, std::unordered_set< Material * > > mtxMaterialsThatUseThisPipeline
Definition: Pipeline.h:280
+
const std::unique_ptr< PipelineConfiguration > pPipelineConfiguration
Definition: Pipeline.h:299
+
virtual std::optional< Error > releaseInternalResources()=0
+
Renderer *const pRenderer
Definition: Pipeline.h:305
+
void onMaterialNoLongerUsingPipeline(Material *pMaterial)
Definition: Pipeline.cpp:220
+
std::variant< size_t, Error > getUintConstantOffset(const std::string &sConstantName)
Definition: Pipeline.cpp:73
+
virtual std::optional< Error > restoreInternalResources()=0
+
static std::variant< std::shared_ptr< Pipeline >, Error > createComputePipeline(Renderer *pRenderer, PipelineManager *pPipelineManager, const std::string &sComputeShaderName)
Definition: Pipeline.cpp:152
+
static std::variant< std::shared_ptr< Pipeline >, Error > createGraphicsPipeline(Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration)
Definition: Pipeline.cpp:105
+
std::unordered_map< ShaderType, std::set< ShaderMacro > > usedShaderConfiguration
Definition: Pipeline.h:296
+
std::pair< std::mutex, std::unordered_set< Material * > > * getMaterialsThatUseThisPipeline()
Definition: Pipeline.cpp:101
+
void saveUsedShaderConfiguration(ShaderType shaderType, std::set< ShaderMacro > &&fullConfiguration)
Definition: Pipeline.cpp:26
+
void setShaderConstants(const std::unordered_map< std::string, size_t > &uintConstantsOffsets)
Definition: Pipeline.cpp:30
+
PipelineManager *const pPipelineManager
Definition: Pipeline.h:302
+
const PipelineConfiguration * getConfiguration() const
Definition: Pipeline.cpp:292
+
void onComputeShaderNoLongerUsingPipeline(ComputeShaderInterface *pComputeShaderInterface)
Definition: Pipeline.cpp:265
+
std::optional< std::set< ShaderMacro > > getCurrentShaderConfiguration(ShaderType shaderType)
Definition: Pipeline.cpp:64
+
Renderer * getRenderer() const
Definition: Pipeline.cpp:290
+
void onComputeShaderUsingPipeline(ComputeShaderInterface *pComputeShaderInterface)
Definition: Pipeline.cpp:246
+
static std::string combineShaderNames(std::string_view sVertexShaderName, std::string_view sPixelShaderName, std::string_view sComputeShaderName="")
Definition: Pipeline.cpp:49
+
std::pair< std::mutex, std::unordered_set< ComputeShaderInterface * > > mtxComputeShadersThatUseThisPipeline
Definition: Pipeline.h:288
+
Definition: Renderer.h:44
+
Definition: ShaderUser.h:20
+
Definition: Pipeline.h:35
+
void findOffsetAndCopySpecialValueToConstant(Pipeline *pPipeline, const char *pConstantName, unsigned int iValueToCopy)
Definition: Pipeline.cpp:294
+
std::unordered_map< std::string, size_t > uintConstantsOffsets
Definition: Pipeline.h:61
+
std::unique_ptr< PipelineShaderConstantsManager > pConstantsManager
Definition: Pipeline.h:55
+
+
+ + + + diff --git a/Plane_8h_source.html b/Plane_8h_source.html new file mode 100644 index 000000000..2e3e5b48e --- /dev/null +++ b/Plane_8h_source.html @@ -0,0 +1,131 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/misc/shapes/Plane.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Plane.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "math/GLMath.hpp"
+
5
+
6namespace ne {
+
8 struct Plane {
+
10 Plane() = default;
+
11
+
18 Plane(const glm::vec3& normal, const glm::vec3& location);
+
19
+
27 bool isPointBehindPlane(const glm::vec3& point) const;
+
28
+
30 glm::vec3 normal = glm::vec3(0.0F, 0.0F, 0.0F);
+
31
+
33 float distanceFromOrigin = 0.0F;
+
34 };
+
35}
+
Definition: Plane.h:8
+
float distanceFromOrigin
Definition: Plane.h:33
+
Plane()=default
+
glm::vec3 normal
Definition: Plane.h:30
+
bool isPointBehindPlane(const glm::vec3 &point) const
Definition: Plane.cpp:10
+
+
+ + + + diff --git a/PointLightNode_8h_source.html b/PointLightNode_8h_source.html new file mode 100644 index 000000000..5412ffe3b --- /dev/null +++ b/PointLightNode_8h_source.html @@ -0,0 +1,248 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/game/nodes/light/PointLightNode.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PointLightNode.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "game/nodes/SpatialNode.h"
+
5#include "math/GLMath.hpp"
+
6#include "shader/VulkanAlignmentConstants.hpp"
+
7#include "shader/general/resource/LightingShaderResourceManager.h"
+
8#include "misc/shapes/Sphere.h"
+
9#include "render/general/resource/shadow/ShadowMapHandle.h"
+
10
+
11#include "PointLightNode.generated.h"
+
12
+
13namespace ne RNAMESPACE() {
+
15 class RCLASS(Guid("7890ed17-6efb-43d1-a7ef-aa5a0589921a")) PointLightNode : public SpatialNode {
+
16 // Renderer reads shadow map handle and index into viewProjection matrix array.
+
17 friend class Renderer;
+
18
+
19 public:
+ +
21
+
27 PointLightNode(const std::string& sNodeName);
+
28
+
29 virtual ~PointLightNode() override = default;
+
30
+
36 void setLightColor(const glm::vec3& color);
+
37
+
43 void setLightIntensity(float intensity);
+
44
+
50 void setLightDistance(float distance);
+
51
+
57 glm::vec3 getLightColor() const;
+
58
+
64 float getLightIntensity() const;
+
65
+
71 float getLightDistance() const;
+
72
+
84 std::pair<std::mutex, Sphere>* getShape();
+
85
+
86 protected:
+
94 virtual void onAfterDeserialized() override;
+
95
+
108 virtual void onSpawning() override;
+
109
+
119 virtual void onDespawning() override;
+
120
+
130 virtual void onWorldLocationRotationScaleChanged() override;
+
131
+
132 private:
+ +
135 PointLightShaderData() = default;
+
136
+
138 alignas(iVkVec4Alignment) glm::vec4 position = glm::vec4(0.0F, 0.0F, 0.0F, 1.0F);
+
139
+
141 alignas(iVkVec4Alignment) glm::vec4 color = glm::vec4(1.0F, 1.0F, 1.0F, 1.0F);
+
142
+
144 alignas(iVkScalarAlignment) float intensity = 1.0F;
+
145
+
147 alignas(iVkScalarAlignment) float distance = 1.0F;
+
148
+
150 alignas(iVkScalarAlignment) unsigned int iShadowMapIndex = 0;
+
151 };
+
152
+
154 struct ShaderData {
+
155 ShaderData() = default;
+
156
+ +
159 ShadowPassDataGroup() = default;
+
160
+
162 std::unique_ptr<ShaderLightArraySlot> pSlot;
+
163
+ +
166 };
+
167
+
169 std::unique_ptr<ShaderLightArraySlot> pPointLightArraySlot;
+
170
+
172 std::array<ShadowPassDataGroup, 6> vShadowPassDataGroup;
+
173
+ +
176 };
+
177
+
185 ShadowMapHandle* getShadowMapHandle() const;
+
186
+
195 unsigned int getIndexIntoShadowPassInfoShaderArray(size_t iCubemapFaceIndex = 0);
+
196
+
203 void* onStartedUpdatingShaderData();
+
204
+
209 void onFinishedUpdatingShaderData();
+
210
+
219 void* onStartedUpdatingShadowPassData(size_t iCubemapFaceIndex);
+
220
+
225 void onFinishedUpdatingShadowPassData();
+
226
+
233 void markShaderDataToBeCopiedToGpu();
+
234
+
241 void markShadowPassDataToBeCopiedToGpu();
+
242
+
248 void onShadowMapArrayIndexChanged(unsigned int iNewIndexIntoArray);
+
249
+
255 void recalculateShadowPassShaderData();
+
256
+
262 void recalculateShape();
+
263
+
265 std::pair<std::recursive_mutex, ShaderData> mtxShaderData;
+
266
+
272 std::pair<std::mutex, Sphere> mtxShape;
+
273
+
279 std::unique_ptr<ShadowMapHandle> pShadowMapHandle;
+
280
+
282 RPROPERTY(Serialize)
+
283 glm::vec3 color = glm::vec3(1.0F, 1.0F, 1.0F);
+
284
+
286 RPROPERTY(Serialize)
+
287 float intensity = 1.0F;
+
288
+
290 RPROPERTY(Serialize)
+
291 float distance = 10.0F; // NOLINT: seems like a pretty good default value
+
292
+
293 ne_PointLightNode_GENERATED
+
294 };
+
295}
+
296
+
297File_PointLightNode_GENERATED
+
Definition: GuidProperty.h:30
+
Definition: PointLightNode.h:15
+
std::pair< std::recursive_mutex, ShaderData > mtxShaderData
Definition: PointLightNode.h:265
+
std::pair< std::mutex, Sphere > mtxShape
Definition: PointLightNode.h:272
+
std::unique_ptr< ShadowMapHandle > pShadowMapHandle
Definition: PointLightNode.h:279
+
Definition: Renderer.h:44
+
Definition: SerializeProperty.h:42
+
Definition: ShadowMapHandle.h:23
+
Definition: SpatialNode.h:12
+
Definition: PointLightNode.h:134
+ +
ShadowPassLightShaderInfo shaderData
Definition: PointLightNode.h:165
+
std::unique_ptr< ShaderLightArraySlot > pSlot
Definition: PointLightNode.h:162
+
Definition: PointLightNode.h:154
+
std::unique_ptr< ShaderLightArraySlot > pPointLightArraySlot
Definition: PointLightNode.h:169
+
PointLightShaderData shaderData
Definition: PointLightNode.h:175
+
std::array< ShadowPassDataGroup, 6 > vShadowPassDataGroup
Definition: PointLightNode.h:172
+
Definition: LightingShaderResourceManager.h:38
+
+
+ + + + diff --git a/PrimitiveFieldSerializer_8h_source.html b/PrimitiveFieldSerializer_8h_source.html new file mode 100644 index 000000000..07cd55696 --- /dev/null +++ b/PrimitiveFieldSerializer_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/io/serializers/PrimitiveFieldSerializer.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PrimitiveFieldSerializer.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "io/serializers/IFieldSerializer.hpp"
+
5
+
6namespace ne {
+ +
12 public:
+
13 PrimitiveFieldSerializer() = default;
+
14 virtual ~PrimitiveFieldSerializer() override = default;
+
15
+
23 virtual bool isFieldTypeSupported(const rfk::Field* pField) override;
+
24
+
43 [[nodiscard]] virtual std::optional<Error> serializeField(
+
44 toml::value* pTomlData,
+
45 Serializable* pFieldOwner,
+
46 const rfk::Field* pField,
+
47 const std::string& sSectionName,
+
48 const std::string& sEntityId,
+
49 size_t& iSubEntityId,
+
50 Serializable* pOriginalObject = nullptr) override;
+
51
+
67 [[nodiscard]] virtual std::optional<Error> deserializeField(
+
68 const toml::value* pTomlDocument,
+
69 const toml::value* pTomlValue,
+
70 Serializable* pFieldOwner,
+
71 const rfk::Field* pField,
+
72 const std::string& sOwnerSectionName,
+
73 const std::string& sEntityId,
+
74 std::unordered_map<std::string, std::string>& customAttributes) override;
+
75
+
86 [[nodiscard]] virtual std::optional<Error> cloneField(
+
87 Serializable* pFromInstance,
+
88 const rfk::Field* pFromField,
+
89 Serializable* pToInstance,
+
90 const rfk::Field* pToField) override;
+
91
+
103 virtual bool isFieldValueEqual(
+
104 Serializable* pFieldAOwner,
+
105 const rfk::Field* pFieldA,
+
106 Serializable* pFieldBOwner,
+
107 const rfk::Field* pFieldB) override;
+
108 };
+
109} // namespace ne
+
Definition: IFieldSerializer.hpp:33
+
Definition: PrimitiveFieldSerializer.h:11
+
virtual std::optional< Error > cloneField(Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField) override
Definition: PrimitiveFieldSerializer.cpp:152
+
virtual std::optional< Error > serializeField(toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr) override
Definition: PrimitiveFieldSerializer.cpp:36
+
virtual bool isFieldValueEqual(Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB) override
Definition: PrimitiveFieldSerializer.cpp:189
+
virtual bool isFieldTypeSupported(const rfk::Field *pField) override
Definition: PrimitiveFieldSerializer.cpp:7
+
virtual std::optional< Error > deserializeField(const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes) override
Definition: PrimitiveFieldSerializer.cpp:82
+
Definition: Serializable.h:113
+
+
+ + + + diff --git a/PrimitiveMeshGenerator_8h_source.html b/PrimitiveMeshGenerator_8h_source.html new file mode 100644 index 000000000..30dc16180 --- /dev/null +++ b/PrimitiveMeshGenerator_8h_source.html @@ -0,0 +1,124 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/misc/PrimitiveMeshGenerator.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PrimitiveMeshGenerator.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "game/nodes/MeshNode.h"
+
5
+
6namespace ne {
+ +
9 public:
+
10 PrimitiveMeshGenerator() = delete;
+
11
+
19 static MeshData createCube(float size);
+
20 };
+
21} // namespace ne
+
Definition: MeshData.h:93
+
Definition: PrimitiveMeshGenerator.h:8
+
static MeshData createCube(float size)
Definition: PrimitiveMeshGenerator.cpp:5
+
+
+ + + + diff --git a/Profiler_8hpp_source.html b/Profiler_8hpp_source.html new file mode 100644 index 000000000..4bf523ab0 --- /dev/null +++ b/Profiler_8hpp_source.html @@ -0,0 +1,154 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/misc/Profiler.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Profiler.hpp
+
+
+
1#pragma once
+
2
+
3#if defined(ENABLE_PROFILER)
+
4
+
5#include "Remotery/lib/Remotery.h"
+
6
+
7// Source: https://github.com/Celtoys/Remotery/issues/46
+
8#define RMT_BEGIN_CPU_SAMPLE_AUTO_NAME() \
+
9 RMT_OPTIONAL(RMT_ENABLED, { \
+
10 static rmtU32 rmt_sample_hash_##__LINE__ = 0; \
+
11 _rmt_BeginCPUSample(__FUNCTION__, 0, &rmt_sample_hash_##__LINE__); \
+
12 })
+
13#define PROFILE_FUNC \
+
14 RMT_OPTIONAL(RMT_ENABLED, RMT_BEGIN_CPU_SAMPLE_AUTO_NAME()); \
+
15 RMT_OPTIONAL(RMT_ENABLED, rmt_EndCPUSampleOnScopeExit rmt_ScopedCPUSample##__LINE__);
+
16
+
17#define PROFILE_SCOPE(name) rmt_ScopedCPUSample(name, 0);
+
18
+
19#define PROFILE_SCOPE_START(name) rmt_BeginCPUSample(name, 0);
+
20#define PROFILE_SCOPE_END rmt_EndCPUSample();
+
21
+
22namespace ne {
+
24 class Profiler {
+
25 public:
+
26 Profiler(const Profiler&) = delete;
+
27 Profiler& operator=(const Profiler&) = delete;
+
28
+
30 ~Profiler() { rmt_DestroyGlobalInstance(pRemotery); }
+
31
+
33 static void initialize() { static Profiler profiler; }
+
34
+
35 private:
+
37 Profiler() { rmt_CreateGlobalInstance(&pRemotery); }
+
38
+
40 Remotery* pRemotery = nullptr;
+
41 };
+
42} // namespace ne
+
43
+
44#else
+
45
+
46#define PROFILE_FUNC
+
47#define PROFILE_SCOPE(name)
+
48#define PROFILE_SCOPE_START(name)
+
49#define PROFILE_SCOPE_END
+
50
+
51#endif
+
+
+ + + + diff --git a/ProjectPaths_8h_source.html b/ProjectPaths_8h_source.html new file mode 100644 index 000000000..4c2e5afa9 --- /dev/null +++ b/ProjectPaths_8h_source.html @@ -0,0 +1,177 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/misc/ProjectPaths.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ProjectPaths.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <filesystem>
+
5
+
6namespace ne {
+
8 enum class ResourceDirectory {
+
9 ROOT,
+
10 GAME,
+
11 ENGINE,
+
12 EDITOR
+
13 };
+
14
+ +
17 public:
+
18 ProjectPaths() = delete;
+
19 ProjectPaths(const ProjectPaths&) = delete;
+
20 ProjectPaths& operator=(const ProjectPaths&) = delete;
+
21
+
28 static std::filesystem::path getPathToEngineConfigsDirectory();
+
29
+
35 static std::filesystem::path getPathToLogsDirectory();
+
36
+
42 static std::filesystem::path getPathToPlayerProgressDirectory();
+
43
+
49 static std::filesystem::path getPathToPlayerSettingsDirectory();
+
50
+
56 static std::filesystem::path getPathToCompiledShadersDirectory();
+
57
+
67 static std::filesystem::path getPathToResDirectory(ResourceDirectory directory);
+
68
+
81 static std::filesystem::path getPathToBaseConfigDirectory();
+
82
+
83 private:
+
91 static std::filesystem::path getPathToResDirectory();
+
92
+
94 static constexpr std::string_view sLogsDirectoryName = "logs";
+
95
+
97 static constexpr std::string_view sProgressDirectoryName = "progress";
+
98
+
100 static constexpr std::string_view sSettingsDirectoryName = "settings";
+
101
+
103 static constexpr std::string_view sEngineDirectoryName = "engine";
+
104
+
106 static constexpr std::string_view sShaderCacheDirectoryName = "shader_cache";
+
107
+
109 static constexpr std::string_view sGameResourcesDirectoryName = "game";
+
110
+
112 static constexpr std::string_view sEngineResourcesDirectoryName = "engine";
+
113
+
115 static constexpr std::string_view sEditorResourcesDirectoryName = "editor";
+
116 };
+
117} // namespace ne
+
Definition: ProjectPaths.h:16
+
static constexpr std::string_view sProgressDirectoryName
Definition: ProjectPaths.h:97
+
static constexpr std::string_view sEditorResourcesDirectoryName
Definition: ProjectPaths.h:115
+
static constexpr std::string_view sEngineResourcesDirectoryName
Definition: ProjectPaths.h:112
+
static constexpr std::string_view sEngineDirectoryName
Definition: ProjectPaths.h:103
+
static constexpr std::string_view sLogsDirectoryName
Definition: ProjectPaths.h:94
+
static constexpr std::string_view sShaderCacheDirectoryName
Definition: ProjectPaths.h:106
+
static constexpr std::string_view sGameResourcesDirectoryName
Definition: ProjectPaths.h:109
+
static std::filesystem::path getPathToCompiledShadersDirectory()
Definition: ProjectPaths.cpp:40
+
static std::filesystem::path getPathToResDirectory()
Definition: ProjectPaths.cpp:123
+
static std::filesystem::path getPathToBaseConfigDirectory()
Definition: ProjectPaths.cpp:73
+
static std::filesystem::path getPathToPlayerSettingsDirectory()
Definition: ProjectPaths.cpp:36
+
static std::filesystem::path getPathToPlayerProgressDirectory()
Definition: ProjectPaths.cpp:32
+
static std::filesystem::path getPathToLogsDirectory()
Definition: ProjectPaths.cpp:28
+
static std::filesystem::path getPathToEngineConfigsDirectory()
Definition: ProjectPaths.cpp:24
+
static constexpr std::string_view sSettingsDirectoryName
Definition: ProjectPaths.h:100
+
+
+ + + + diff --git a/RenderSettings_8h_source.html b/RenderSettings_8h_source.html new file mode 100644 index 000000000..dae3fbb15 --- /dev/null +++ b/RenderSettings_8h_source.html @@ -0,0 +1,262 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/render/RenderSettings.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RenderSettings.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "io/Serializable.h"
+
5
+
6#include "RenderSettings.generated.h"
+
7
+
8namespace ne RNAMESPACE() {
+
9 class Renderer;
+
10
+
12 enum class RendererType : unsigned int { DIRECTX = 0, VULKAN = 1 };
+
13
+
15 enum class AntialiasingQuality : unsigned int {
+
16 DISABLED = 1,
+
17 MEDIUM = 2,
+
18 HIGH = 4,
+
19 // no x8 MSAA because it has an absurd performance penalty with very little visual changes
+
20 };
+
21
+
23 enum class ShadowQuality : unsigned int {
+
24 LOW = 256,
+
25 MEDIUM = 512,
+
26 HIGH = 1024,
+
27 };
+
28
+
30 enum class TextureFilteringQuality : unsigned int {
+
31 LOW = 0, //< Point filtering.
+
32 MEDIUM = 1, //< Linear filtering.
+
33 HIGH = 2 //< Anisotropic filtering.
+
34 };
+
35
+
37 enum class TextureQuality : unsigned int {
+
38 VERY_HIGH = 0,
+
39 HIGH = 1,
+
40 MEDIUM = 2,
+
41 LOW = 3,
+
42 };
+
43
+
45 class RCLASS(Guid("eb477c6d-cdc4-4b7a-9349-296fb38e6bfc")) RenderSettings : public Serializable {
+
46 // Renderer will initialize this object.
+
47 friend class Renderer;
+
48
+
49 public:
+
50 RenderSettings() = default;
+
51 virtual ~RenderSettings() override = default;
+
52
+
58 static std::filesystem::path getPathToConfigurationFile();
+
59
+
65 void setFpsLimit(unsigned int iNewFpsLimit);
+
66
+
72 void setShadowQuality(ShadowQuality quality);
+
73
+
82 void setAntialiasingQuality(AntialiasingQuality quality);
+
83
+
89 void setTextureFilteringQuality(TextureFilteringQuality quality);
+
90
+
98 void setTextureQuality(TextureQuality quality);
+
99
+
108 void setRenderResolution(std::pair<unsigned int, unsigned int> resolution);
+
109
+
115 void setVsyncEnabled(bool bEnableVsync);
+
116
+
124 void setRefreshRate(std::pair<unsigned int, unsigned int> refreshRate);
+
125
+
135 void setGpuToUse(const std::string& sGpuName);
+
136
+
146 void setPreferredRenderer(RendererType preferredRenderer);
+
147
+
153 unsigned int getFpsLimit() const;
+
154
+
161 AntialiasingQuality getAntialiasingQuality() const;
+
162
+
168 ShadowQuality getShadowQuality() const;
+
169
+
179 std::variant<AntialiasingQuality, Error> getMaxSupportedAntialiasingQuality() const;
+
180
+
186 TextureFilteringQuality getTextureFilteringQuality() const;
+
187
+
193 TextureQuality getTextureQuality() const;
+
194
+
200 std::pair<unsigned int, unsigned int> getRenderResolution() const;
+
201
+
207 bool isVsyncEnabled() const;
+
208
+
214 std::pair<unsigned int, unsigned int> getRefreshRate() const;
+
215
+
225 std::string getGpuToUse() const;
+
226
+
227 protected:
+
235 virtual void onAfterDeserialized() override;
+
236
+
237 private:
+
245 static std::string getConfigurationFileName(bool bIncludeFileExtension);
+
246
+
254 void setRenderer(Renderer* pRenderer);
+
255
+
262 [[nodiscard]] std::optional<Error> clampSettingsToMaxSupported();
+
263
+
271 [[nodiscard]] std::optional<Error> saveConfigurationToDisk();
+
272
+
281 void notifyRendererAboutChangedSettings(bool bShadowMapSizeChanged = false);
+
282
+
284 RPROPERTY(Serialize)
+
285 unsigned int iRenderResolutionWidth = 0;
+
286
+
288 RPROPERTY(Serialize)
+
289 unsigned int iRenderResolutionHeight = 0;
+
290
+
292 RPROPERTY(Serialize)
+
293 unsigned int iRefreshRateNumerator = 0;
+
294
+
296 RPROPERTY(Serialize)
+
297 unsigned int iRefreshRateDenominator = 0;
+
298
+
304 RPROPERTY(Serialize)
+
305 unsigned int iFpsLimit = 0;
+
306
+
308 RPROPERTY(Serialize)
+
309 std::string sGpuToUse;
+
310
+
316 RPROPERTY(Serialize)
+
317 unsigned int iRendererType = 0;
+
318
+
320 RPROPERTY(Serialize)
+
321 unsigned int iShadowMapSize = static_cast<unsigned int>(ShadowQuality::HIGH);
+
322
+
324 RPROPERTY(Serialize)
+
325 unsigned int iAntialiasingSampleCount = static_cast<unsigned int>(AntialiasingQuality::HIGH);
+
326
+
328 RPROPERTY(Serialize)
+
329 unsigned int iTextureFilteringQuality = static_cast<unsigned int>(TextureFilteringQuality::HIGH);
+
330
+
332 RPROPERTY(Serialize)
+
333 unsigned int iTextureQuality = static_cast<unsigned int>(TextureQuality::VERY_HIGH);
+
334
+
336 RPROPERTY(Serialize)
+
337 bool bIsVsyncEnabled = false;
+
338
+
340 Renderer* pRenderer = nullptr;
+
341
+
352 bool bAllowSavingConfigurationToDisk = false;
+
353
+
355 static inline const char* sRenderSettingsConfigurationFileName = "render";
+
356
+
357 ne_RenderSettings_GENERATED
+
358 };
+
359} // namespace ne RNAMESPACE()
+
360
+
361File_RenderSettings_GENERATED
+
Definition: GuidProperty.h:30
+
Definition: RenderSettings.h:45
+
Definition: Renderer.h:44
+
Definition: Serializable.h:113
+
Definition: SerializeProperty.h:42
+
+
+ + + + diff --git a/RenderStatistics_8h_source.html b/RenderStatistics_8h_source.html new file mode 100644 index 000000000..f28480211 --- /dev/null +++ b/RenderStatistics_8h_source.html @@ -0,0 +1,235 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/render/RenderStatistics.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RenderStatistics.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <chrono>
+
5#include <optional>
+
6#include <atomic>
+
7#include <mutex>
+
8
+
9namespace ne {
+ +
12 // Renderer will update statistics.
+
13 friend class Renderer;
+
14
+
15 public:
+
16 RenderStatistics() = default;
+
17
+
18 RenderStatistics(const RenderStatistics&) = delete;
+
19 RenderStatistics& operator=(const RenderStatistics&) = delete;
+
20
+
26 size_t getFramesPerSecond() const;
+
27
+
33 size_t getLastFrameDrawCallCount() const;
+
34
+
41 size_t getLastFrameCulledMeshCount() const;
+
42
+
49 size_t getLastFrameCulledLightCount() const;
+
50
+ +
60
+ +
67
+ +
74
+
75 private:
+ +
82 std::chrono::steady_clock::time_point timeAtLastFpsUpdate;
+
83
+ +
89
+
91 size_t iFramesPerSecond = 0;
+
92 };
+
93
+
95 struct FpsLimitInfo {
+
97 std::chrono::steady_clock::time_point frameStartTime;
+
98
+
100 std::optional<double> optionalTargetTimeToRenderFrameInNs = {};
+
101 };
+
102
+ + +
113
+ +
120
+ +
127 };
+
128
+
130 struct Counters {
+ +
137
+ +
144
+ +
147 };
+
148
+ + +
156
+
162 std::pair<std::mutex, float> mtxFrustumCullingMeshesTimeInMs;
+
163
+
169 std::pair<std::mutex, float> mtxFrustumCullingLightsTimeInMs;
+
170
+
172 std::atomic<size_t> iCulledMeshCount{0};
+
173
+
175 std::atomic<size_t> iCulledLightCount{0};
+
176
+
178 std::atomic<size_t> iDrawCallCount{0};
+
179 };
+
180
+ +
186
+ +
189
+ +
192
+ +
195
+ +
198
+ +
201 };
+
202}
+
Definition: RenderStatistics.h:11
+
FrameTemporaryStatistics frameTemporaryStatistics
Definition: RenderStatistics.h:200
+
float getTimeSpentLastFrameOnFrustumCullingLights() const
Definition: RenderStatistics.cpp:30
+
size_t getFramesPerSecond() const
Definition: RenderStatistics.cpp:10
+
FpsLimitInfo fpsLimitInfo
Definition: RenderStatistics.h:191
+
Counters counters
Definition: RenderStatistics.h:197
+
size_t getLastFrameCulledMeshCount() const
Definition: RenderStatistics.cpp:14
+
size_t getLastFrameDrawCallCount() const
Definition: RenderStatistics.cpp:12
+
float getTimeSpentLastFrameOnFrustumCullingMeshes() const
Definition: RenderStatistics.cpp:26
+
float getTimeSpentLastFrameWaitingForGpu() const
Definition: RenderStatistics.cpp:22
+
TaskTimeInfo taskTimeInfo
Definition: RenderStatistics.h:194
+
FramesPerSecondInfo fpsInfo
Definition: RenderStatistics.h:188
+
size_t getLastFrameCulledLightCount() const
Definition: RenderStatistics.cpp:18
+
void saveAndResetTemporaryFrameStatistics()
Definition: RenderStatistics.cpp:34
+
Definition: Renderer.h:44
+
Definition: RenderStatistics.h:130
+
size_t iLastFrameCulledLightsCount
Definition: RenderStatistics.h:143
+
size_t iLastFrameDrawCallCount
Definition: RenderStatistics.h:146
+
size_t iLastFrameCulledMeshesCount
Definition: RenderStatistics.h:136
+
Definition: RenderStatistics.h:95
+
std::chrono::steady_clock::time_point frameStartTime
Definition: RenderStatistics.h:97
+
std::optional< double > optionalTargetTimeToRenderFrameInNs
Definition: RenderStatistics.h:100
+
Definition: RenderStatistics.h:154
+
std::atomic< size_t > iCulledMeshCount
Definition: RenderStatistics.h:172
+
std::pair< std::mutex, float > mtxFrustumCullingLightsTimeInMs
Definition: RenderStatistics.h:169
+
std::pair< std::mutex, float > mtxFrustumCullingMeshesTimeInMs
Definition: RenderStatistics.h:162
+
std::atomic< size_t > iDrawCallCount
Definition: RenderStatistics.h:178
+
std::atomic< size_t > iCulledLightCount
Definition: RenderStatistics.h:175
+
Definition: RenderStatistics.h:77
+
size_t iFramesPerSecond
Definition: RenderStatistics.h:91
+
size_t iPresentCountSinceFpsUpdate
Definition: RenderStatistics.h:88
+
std::chrono::steady_clock::time_point timeAtLastFpsUpdate
Definition: RenderStatistics.h:82
+
Definition: RenderStatistics.h:104
+
float timeSpentLastFrameOnFrustumCullingMeshesInMs
Definition: RenderStatistics.h:119
+
float timeSpentLastFrameWaitingForGpuInMs
Definition: RenderStatistics.h:112
+
float timeSpentLastFrameOnFrustumCullingLightsInMs
Definition: RenderStatistics.h:126
+
+
+ + + + diff --git a/Renderer_8h_source.html b/Renderer_8h_source.html new file mode 100644 index 000000000..6be647f30 --- /dev/null +++ b/Renderer_8h_source.html @@ -0,0 +1,569 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/render/Renderer.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Renderer.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <variant>
+
5#include <vector>
+
6#include <string>
+
7#include <filesystem>
+
8#include <memory>
+
9
+
10// Custom.
+
11#include "misc/Error.h"
+
12#include "render/general/resource/frame/FrameResourceManager.h"
+
13#include "render/RenderSettings.h"
+
14#include "game/camera/CameraProperties.h"
+
15#include "render/RenderStatistics.h"
+
16#include "render/general/resource/MeshData.h"
+
17#include "shader/ComputeShaderInterface.h"
+
18
+
19namespace ne {
+
20 class GameManager;
+
21 class Window;
+
22 class PipelineManager;
+
23 class ShaderConfiguration;
+
24 class RenderSettings;
+
25 class EnvironmentNode;
+
26 class MeshNode;
+
27 class Material;
+
28 class Pipeline;
+
29 class ShadowMapHandle;
+
30 class DirectionalLightNode;
+
31 class SpotlightNode;
+
32 class PointLightNode;
+
33 class GpuResourceManager;
+
34 class LightingShaderResourceManager;
+
35 class ShaderCpuWriteResourceBindingManager;
+
36 class ShaderTextureResourceBindingManager;
+
37 class ShaderLightArray;
+
38 class ShaderManager;
+
39 class GlobalShaderResourceBindingManager;
+
40 struct ShaderLightsInFrustumSingleType;
+
41 struct GraphicsPipelineRegistry;
+
42
+
44 class Renderer {
+
45 // Only window should be able to request new frames to be drawn.
+
46 friend class Window;
+
47
+
48 // Can update shader configuration.
+
49 friend class ShaderConfiguration;
+
50
+
51 // Settings will modify renderer's state.
+
52 friend class RenderSettings;
+
53
+
54 // This node sets itself to the renderer when spawned so that its parameters will be used
+
55 // in the rendering (also removes itself when despawned).
+
56 friend class EnvironmentNode;
+
57
+
58 // Notifies when active camera changes.
+
59 friend class CameraManager;
+
60
+
61 public:
+
62 Renderer() = delete;
+
63 Renderer(const Renderer&) = delete;
+
64 Renderer& operator=(const Renderer&) = delete;
+
65
+
66 virtual ~Renderer();
+
67
+
73 static constexpr float getMinDepth() { return minDepth; }
+
74
+
80 static constexpr float getMaxDepth() { return maxDepth; }
+
81
+
90 static std::variant<std::unique_ptr<Renderer>, Error>
+
91 create(GameManager* pGameManager, std::optional<RendererType> preferredRenderer);
+
92
+
101 virtual std::vector<std::string> getSupportedGpuNames() const = 0;
+
102
+
108 virtual std::variant<std::set<std::pair<unsigned int, unsigned int>>, Error>
+ +
110
+
119 virtual std::variant<std::set<std::pair<unsigned int, unsigned int>>, Error>
+ +
121
+
127 virtual RendererType getType() const = 0;
+
128
+
137 virtual std::string getUsedApiVersion() const = 0;
+
138
+
146 std::pair<std::recursive_mutex*, RenderSettings*> getRenderSettings();
+
147
+ +
156
+
162 virtual std::string getCurrentlyUsedGpuName() const = 0;
+
163
+
172 size_t getTotalVideoMemoryInMb() const;
+
173
+
182 size_t getUsedVideoMemoryInMb() const;
+
183
+ +
191
+
200 std::pair<std::recursive_mutex, std::unique_ptr<ShaderConfiguration>>* getShaderConfiguration();
+
201
+
207 virtual std::pair<unsigned int, unsigned int> getRenderTargetSize() const = 0;
+
208
+
216 Window* getWindow() const;
+
217
+ +
226
+ +
235
+ +
244
+ +
253
+ +
262
+ +
271
+ +
280
+ +
289
+ +
298
+
312 std::recursive_mutex* getRenderResourcesMutex();
+
313
+ +
332
+
333 protected:
+ + +
339 MeshNode* pMeshNode = nullptr;
+
340
+
342 std::vector<MeshIndexBufferInfo> vIndexBuffers;
+
343 };
+
344
+ +
348 Material* pMaterial = nullptr;
+
349
+
351 std::vector<MeshInFrustumInfo> vMeshes;
+
352 };
+
353
+ +
357 Pipeline* pPipeline = nullptr;
+
358
+
360 std::vector<MaterialInFrustumInfo> vMaterials;
+
361 };
+
362
+
364 std::vector<PipelineInFrustumInfo> vOpaquePipelines;
+
365
+
367 std::vector<PipelineInFrustumInfo> vTransparentPipelines;
+
368 };
+
369
+ +
373 std::pair<std::recursive_mutex*, ShaderLightsInFrustumSingleType*> mtxPointLightsInFrustum;
+
374
+
376 std::pair<std::recursive_mutex*, ShaderLightsInFrustumSingleType*> mtxSpotlightsInFrustum;
+
377
+
378 // No directional lights here because directional lights can't be culled.
+
379 };
+
380
+
396 static consteval unsigned int getRecommendedSwapChainBufferCount() {
+ +
398 }
+
399
+ + +
409 ShadowMapHandle*& pShadowMapHandle,
+
410 unsigned int& iShadowPassLightInfoArrayIndex);
+
411
+ +
420 SpotlightNode* pNode,
+
421 ShadowMapHandle*& pShadowMapHandle,
+
422 unsigned int& iShadowPassLightInfoArrayIndex);
+
423
+
432 static unsigned int
+
433 getPointLightShadowPassLightInfoArrayIndex(PointLightNode* pNode, size_t iCubemapFaceIndex);
+
434
+ +
443
+ +
450
+
459 [[nodiscard]] std::optional<Error> compileEngineShaders() const;
+
460
+
471 void
+
472 updateFrameConstantsBuffer(FrameResource* pCurrentFrameResource, CameraProperties* pCameraProperties);
+
473
+ +
481
+ +
489
+ +
497
+ +
505
+
515 virtual std::variant<AntialiasingQuality, Error> getMaxSupportedAntialiasingQuality() const = 0;
+
516
+
523 void onFramebufferSizeChanged(int iWidth, int iHeight);
+
524
+
531 virtual void onFramebufferSizeChangedDerived(int iWidth, int iHeight) {}
+
532
+
534 void drawNextFrame();
+
535
+ +
543
+ +
556 CameraProperties* pCameraProperties, FrameResource* pCurrentFrameResource) = 0;
+
557
+ +
570 FrameResource* pCurrentFrameResource,
+
571 size_t iCurrentFrameResourceIndex,
+
572 GraphicsPipelineRegistry* pGraphicsPipelines) = 0;
+
573
+ +
582 FrameResource* pCurrentFrameResource,
+
583 size_t iCurrentFrameResourceIndex,
+
584 const std::vector<Renderer::MeshesInFrustum::PipelineInFrustumInfo>& vOpaquePipelines) = 0;
+
585
+ +
596 FrameResource* pCurrentFrameResource,
+
597 size_t iCurrentFrameResourceIndex,
+
598 ComputeExecutionStage stage) = 0;
+
599
+
608 virtual void drawMeshesMainPass(
+
609 FrameResource* pCurrentFrameResource,
+
610 size_t iCurrentFrameResourceIndex,
+
611 const std::vector<Renderer::MeshesInFrustum::PipelineInFrustumInfo>& vOpaquePipelines,
+
612 const std::vector<Renderer::MeshesInFrustum::PipelineInFrustumInfo>& vTransparentPipelines) = 0;
+
613
+
620 virtual void present(FrameResource* pCurrentFrameResource, size_t iCurrentFrameResourceIndex) = 0;
+
621
+
630 [[nodiscard]] std::optional<Error> onRenderSettingsChanged(bool bShadowMapSizeChanged = false);
+
631
+
638 [[nodiscard]] virtual std::optional<Error> onRenderSettingsChangedDerived() = 0;
+
639
+
649 virtual void waitForGpuToFinishUsingFrameResource(FrameResource* pFrameResource) = 0;
+
650
+
659 virtual bool isInitialized() const = 0;
+
660
+
668 [[nodiscard]] std::optional<Error> initializeRenderer();
+
669
+
678 [[nodiscard]] std::optional<Error> initializeResourceManagers();
+
679
+
690 [[nodiscard]] std::optional<Error> clampSettingsToMaxSupported();
+
691
+
698 [[nodiscard]] std::optional<Error> recalculateLightTileFrustums();
+
699
+ +
714 CameraProperties* pActiveCameraProperties, GraphicsPipelineRegistry* pGraphicsPipelines);
+
715
+ +
725 CameraProperties* pActiveCameraProperties, size_t iCurrentFrameResourceIndex);
+
726
+
732 inline std::pair<std::mutex, FrameConstants>* getFrameConstants() { return &mtxFrameConstants; }
+
733
+
743 inline std::atomic<size_t>* getDrawCallCounter() {
+ +
745 }
+
746
+
747 private:
+
759 static std::unique_ptr<Renderer>
+
760 createRenderer(GameManager* pGameManager, std::optional<RendererType> preferredRenderer);
+
761
+
777 static std::variant<std::unique_ptr<Renderer>, std::pair<Error, std::string>> createRenderer(
+
778 RendererType type,
+ +
780 const std::vector<std::string>& vBlacklistedGpuNames);
+
781
+
782#if defined(WIN32)
+
788 static void nanosleep(long long iNanoseconds);
+
789#endif
+ +
796
+ +
809 unsigned int iRenderTargetWidth,
+
810 unsigned int iRenderTargetHeight,
+
811 CameraProperties* pCameraProperties);
+
812
+ +
815
+ +
821
+ +
830
+
832 void setupRenderStats();
+
833
+
839 std::optional<Error> initializeRenderSettings();
+
840
+
845 std::recursive_mutex mtxRwRenderResources;
+
846
+
848 std::unique_ptr<GpuResourceManager> pResourceManager;
+
849
+
851 std::unique_ptr<ShaderManager> pShaderManager;
+
852
+
854 std::unique_ptr<PipelineManager> pPipelineManager;
+
855
+
857 std::unique_ptr<FrameResourceManager> pFrameResourceManager;
+
858
+
860 std::unique_ptr<ShaderCpuWriteResourceBindingManager> pShaderCpuWriteResourceManager;
+
861
+
863 std::unique_ptr<ShaderTextureResourceBindingManager> pShaderTextureResourceManager;
+
864
+
866 std::unique_ptr<LightingShaderResourceManager> pLightingShaderResourceManager;
+
867
+
869 std::unique_ptr<GlobalShaderResourceBindingManager> pGlobalShaderResourceBindingManager;
+
870
+
875 std::pair<std::recursive_mutex, std::unique_ptr<ShaderConfiguration>> mtxShaderConfiguration;
+
876
+
881 std::pair<std::recursive_mutex, std::unique_ptr<RenderSettings>> mtxRenderSettings;
+
882
+ +
885
+
887 bool bIsWindowMinimized = false;
+
888
+
890 std::pair<std::mutex, EnvironmentNode*> mtxSpawnedEnvironmentNode;
+
891
+
893 std::pair<std::mutex, FrameConstants> mtxFrameConstants;
+
894
+ +
897
+ +
900
+
902 static constexpr unsigned int iRecommendedSwapChainBufferCount = 2;
+
903
+
905 static constexpr float minDepth = 0.0F;
+
906
+
908 static constexpr float maxDepth = 1.0F;
+
909 };
+
910} // namespace ne
+
Definition: CameraManager.h:16
+
Definition: CameraProperties.h:22
+
Definition: DirectionalLightNode.h:14
+
Definition: EnvironmentNode.h:11
+
Definition: Error.h:27
+
Definition: FrameResourceManager.h:46
+
Definition: GameManager.h:34
+
Definition: GlobalShaderResourceBindingManager.h:21
+
Definition: GpuResourceManager.h:43
+
Definition: GpuResource.h:16
+
Definition: LightingShaderResourceManager.h:50
+
Definition: Material.h:63
+
Definition: MeshNode.h:28
+
Definition: PipelineManager.h:98
+
Definition: Pipeline.h:20
+
Definition: PointLightNode.h:15
+
Definition: RenderSettings.h:45
+
Definition: RenderStatistics.h:11
+
FrameTemporaryStatistics frameTemporaryStatistics
Definition: RenderStatistics.h:200
+
Definition: Renderer.h:44
+
std::pair< std::recursive_mutex, std::unique_ptr< ShaderConfiguration > > mtxShaderConfiguration
Definition: Renderer.h:875
+
std::optional< Error > initializeResourceManagers()
Definition: Renderer.cpp:858
+
std::optional< Error > compileEngineShaders() const
Definition: Renderer.cpp:76
+
std::recursive_mutex mtxRwRenderResources
Definition: Renderer.h:845
+
virtual std::string getUsedApiVersion() const =0
+
LightingShaderResourceManager * getLightingShaderResourceManager() const
Definition: Renderer.cpp:728
+
ShaderTextureResourceBindingManager * getShaderTextureResourceManager() const
Definition: Renderer.cpp:724
+
void resetLightingShaderResourceManager()
Definition: Renderer.cpp:286
+
std::unique_ptr< GpuResourceManager > pResourceManager
Definition: Renderer.h:848
+
void drawNextFrame()
Definition: Renderer.cpp:309
+
virtual void prepareRenderTargetForNextFrame()
Definition: Renderer.h:542
+
std::unique_ptr< ShaderManager > pShaderManager
Definition: Renderer.h:851
+
std::pair< std::recursive_mutex *, RenderSettings * > getRenderSettings()
Definition: Renderer.cpp:691
+
size_t getUsedVideoMemoryInMb() const
Definition: Renderer.cpp:701
+
virtual void executeComputeShadersOnGraphicsQueue(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, ComputeExecutionStage stage)=0
+
std::pair< std::mutex, FrameConstants > mtxFrameConstants
Definition: Renderer.h:893
+
virtual RendererType getType() const =0
+
virtual std::variant< AntialiasingQuality, Error > getMaxSupportedAntialiasingQuality() const =0
+
static void getDirectionalLightNodeShadowMappingInfo(DirectionalLightNode *pNode, ShadowMapHandle *&pShadowMapHandle, unsigned int &iShadowPassLightInfoArrayIndex)
Definition: Renderer.cpp:1210
+
GameManager * pGameManager
Definition: Renderer.h:899
+
virtual std::pair< unsigned int, unsigned int > getRenderTargetSize() const =0
+
PipelineManager * getPipelineManager() const
Definition: Renderer.cpp:714
+
static std::variant< std::unique_ptr< Renderer >, Error > create(GameManager *pGameManager, std::optional< RendererType > preferredRenderer)
Definition: Renderer.cpp:618
+
std::unique_ptr< ShaderTextureResourceBindingManager > pShaderTextureResourceManager
Definition: Renderer.h:863
+
virtual void present(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex)=0
+
void resetFrameResourceManager()
Definition: Renderer.cpp:276
+
virtual std::optional< Error > onRenderSettingsChangedDerived()=0
+
void setupRenderStats()
Definition: Renderer.cpp:765
+
virtual void drawShadowMappingPass(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, GraphicsPipelineRegistry *pGraphicsPipelines)=0
+
std::pair< std::recursive_mutex, std::unique_ptr< ShaderConfiguration > > * getShaderConfiguration()
Definition: Renderer.cpp:704
+
void updateFrameConstantsBuffer(FrameResource *pCurrentFrameResource, CameraProperties *pCameraProperties)
Definition: Renderer.cpp:166
+
Window * getWindow() const
Definition: Renderer.cpp:708
+
void cullLightsOutsideCameraFrustum(CameraProperties *pActiveCameraProperties, size_t iCurrentFrameResourceIndex)
Definition: Renderer.cpp:1089
+
std::atomic< size_t > * getDrawCallCounter()
Definition: Renderer.h:743
+
MeshesInFrustum meshesInFrustumLastFrame
Definition: Renderer.h:884
+
void updateResourcesForNextFrame(unsigned int iRenderTargetWidth, unsigned int iRenderTargetHeight, CameraProperties *pCameraProperties)
Definition: Renderer.cpp:904
+
FrameResourceManager * getFrameResourceManager() const
Definition: Renderer.cpp:718
+
void onActiveCameraChanged()
Definition: Renderer.cpp:471
+
std::optional< Error > initializeRenderer()
Definition: Renderer.cpp:848
+
virtual void onFramebufferSizeChangedDerived(int iWidth, int iHeight)
Definition: Renderer.h:531
+
virtual void waitForGpuToFinishUsingFrameResource(FrameResource *pFrameResource)=0
+
std::pair< std::mutex, FrameConstants > * getFrameConstants()
Definition: Renderer.h:732
+
size_t getTotalVideoMemoryInMb() const
Definition: Renderer.cpp:697
+
static std::unique_ptr< Renderer > createRenderer(GameManager *pGameManager, std::optional< RendererType > preferredRenderer)
Definition: Renderer.cpp:483
+
GpuResourceManager * getResourceManager() const
Definition: Renderer.cpp:716
+
std::recursive_mutex * getRenderResourcesMutex()
Definition: Renderer.cpp:736
+
void calculateFrameStatistics()
Definition: Renderer.cpp:189
+
static consteval unsigned int getRecommendedSwapChainBufferCount()
Definition: Renderer.h:396
+
virtual bool isInitialized() const =0
+
std::optional< Error > initializeRenderSettings()
Definition: Renderer.cpp:806
+
void updateTargetTimeToRenderFrame()
Definition: Renderer.cpp:602
+
std::unique_ptr< FrameResourceManager > pFrameResourceManager
Definition: Renderer.h:857
+
std::optional< Error > recalculateLightTileFrustums()
Definition: Renderer.cpp:433
+
virtual void waitForGpuToFinishWorkUpToThisPoint()=0
+
std::unique_ptr< GlobalShaderResourceBindingManager > pGlobalShaderResourceBindingManager
Definition: Renderer.h:869
+
static ShadowMapHandle * getPointLightNodeShadowMapHandle(PointLightNode *pNode)
Definition: Renderer.cpp:1231
+
std::unique_ptr< ShaderCpuWriteResourceBindingManager > pShaderCpuWriteResourceManager
Definition: Renderer.h:860
+
GlobalShaderResourceBindingManager * getGlobalShaderResourceBindingManager() const
Definition: Renderer.cpp:732
+
ShaderManager * getShaderManager() const
Definition: Renderer.cpp:712
+
std::pair< std::recursive_mutex, std::unique_ptr< RenderSettings > > mtxRenderSettings
Definition: Renderer.h:881
+
static constexpr float getMaxDepth()
Definition: Renderer.h:80
+
virtual std::variant< std::set< std::pair< unsigned int, unsigned int > >, Error > getSupportedRefreshRates() const =0
+
GameManager * getGameManager() const
Definition: Renderer.cpp:710
+
void resetGpuResourceManager()
Definition: Renderer.cpp:256
+
virtual std::vector< std::string > getSupportedGpuNames() const =0
+
static constexpr float minDepth
Definition: Renderer.h:905
+
RenderStatistics * getRenderStatistics()
Definition: Renderer.cpp:695
+
std::optional< Error > onRenderSettingsChanged(bool bShadowMapSizeChanged=false)
Definition: Renderer.cpp:401
+
virtual std::string getCurrentlyUsedGpuName() const =0
+
RenderStatistics renderStats
Definition: Renderer.h:896
+
std::optional< Error > clampSettingsToMaxSupported()
Definition: Renderer.cpp:892
+
static void getSpotlightNodeShadowMappingInfo(SpotlightNode *pNode, ShadowMapHandle *&pShadowMapHandle, unsigned int &iShadowPassLightInfoArrayIndex)
Definition: Renderer.cpp:1218
+
virtual GpuResource * getDepthTextureNoMultisampling()=0
+
void onFramebufferSizeChanged(int iWidth, int iHeight)
Definition: Renderer.cpp:296
+
std::unique_ptr< PipelineManager > pPipelineManager
Definition: Renderer.h:854
+
static constexpr float maxDepth
Definition: Renderer.h:908
+
virtual void prepareForDrawingNextFrame(CameraProperties *pCameraProperties, FrameResource *pCurrentFrameResource)=0
+
virtual void drawMeshesDepthPrepass(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vOpaquePipelines)=0
+
static constexpr unsigned int iRecommendedSwapChainBufferCount
Definition: Renderer.h:902
+
static unsigned int getPointLightShadowPassLightInfoArrayIndex(PointLightNode *pNode, size_t iCubemapFaceIndex)
Definition: Renderer.cpp:1227
+
void resetPipelineManager()
Definition: Renderer.cpp:266
+
virtual std::variant< std::set< std::pair< unsigned int, unsigned int > >, Error > getSupportedRenderResolutions() const =0
+
virtual void drawMeshesMainPass(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vOpaquePipelines, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vTransparentPipelines)=0
+
std::unique_ptr< LightingShaderResourceManager > pLightingShaderResourceManager
Definition: Renderer.h:866
+
MeshesInFrustum * getMeshesInCameraFrustum(CameraProperties *pActiveCameraProperties, GraphicsPipelineRegistry *pGraphicsPipelines)
Definition: Renderer.cpp:976
+
bool bIsWindowMinimized
Definition: Renderer.h:887
+
void updateShaderConfiguration()
Definition: Renderer.cpp:738
+
ShaderCpuWriteResourceBindingManager * getShaderCpuWriteResourceManager() const
Definition: Renderer.cpp:720
+
static constexpr float getMinDepth()
Definition: Renderer.h:73
+
std::pair< std::mutex, EnvironmentNode * > mtxSpawnedEnvironmentNode
Definition: Renderer.h:890
+
Definition: ShaderMacro.h:198
+
Definition: ShaderCpuWriteResourceBindingManager.h:21
+
Definition: ShaderManager.h:25
+
Definition: ShaderTextureResourceBindingManager.h:27
+
Definition: ShadowMapHandle.h:23
+
Definition: SpotlightNode.h:15
+
Definition: Window.h:198
+
Definition: FrameResource.h:15
+
Definition: PipelineRegistry.hpp:31
+
std::atomic< size_t > iDrawCallCount
Definition: RenderStatistics.h:178
+
Definition: Renderer.h:371
+
std::pair< std::recursive_mutex *, ShaderLightsInFrustumSingleType * > mtxPointLightsInFrustum
Definition: Renderer.h:373
+
std::pair< std::recursive_mutex *, ShaderLightsInFrustumSingleType * > mtxSpotlightsInFrustum
Definition: Renderer.h:376
+ +
Material * pMaterial
Definition: Renderer.h:348
+
std::vector< MeshInFrustumInfo > vMeshes
Definition: Renderer.h:351
+ +
std::vector< MeshIndexBufferInfo > vIndexBuffers
Definition: Renderer.h:342
+
MeshNode * pMeshNode
Definition: Renderer.h:339
+ +
Pipeline * pPipeline
Definition: Renderer.h:357
+
std::vector< MaterialInFrustumInfo > vMaterials
Definition: Renderer.h:360
+
Definition: Renderer.h:335
+
std::vector< PipelineInFrustumInfo > vOpaquePipelines
Definition: Renderer.h:364
+
std::vector< PipelineInFrustumInfo > vTransparentPipelines
Definition: Renderer.h:367
+
+
+ + + + diff --git a/RootSignatureGenerator_8h_source.html b/RootSignatureGenerator_8h_source.html new file mode 100644 index 000000000..f225b2634 --- /dev/null +++ b/RootSignatureGenerator_8h_source.html @@ -0,0 +1,293 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/hlsl/RootSignatureGenerator.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RootSignatureGenerator.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <variant>
+
5#include <optional>
+
6#include <unordered_map>
+
7#include <stdexcept>
+
8#include <array>
+
9#include <set>
+
10
+
11// Custom.
+
12#include "misc/Error.h"
+
13#include "SpecialRootParameterSlot.hpp"
+
14
+
15// External.
+
16#include "directx/d3dx12.h"
+
17#include <DirectXShaderCompiler/inc/d3d12shader.h>
+
18
+
19// OS.
+
20#include <wrl/client.h>
+
21
+
22namespace ne {
+
23 class HlslShader;
+
24 class DirectXRenderer;
+
25
+
26 using namespace Microsoft::WRL;
+
27
+
29 enum class SamplerType {
+
30 BASIC, //< Usual `SamplerState` type in HLSL.
+
31 COMPARISON //< `SamplerComparisonState` type in HLSL.
+
32 };
+
33
+ +
38 public:
+
39 RootSignatureGenerator() = delete;
+ +
41 RootSignatureGenerator& operator=(const RootSignatureGenerator&) = delete;
+
42
+ +
45 public:
+
47 enum class Type { CONSTANTS, CBV, SRV, UAV };
+
48
+
50 RootParameter() = default;
+
51
+
63 RootParameter(UINT iBindPoint, UINT iSpace, Type type, bool bIsTable = false, UINT iCount = 1);
+
64
+
72 CD3DX12_ROOT_PARAMETER generateSingleDescriptorDescription() const;
+
73
+
81 CD3DX12_DESCRIPTOR_RANGE generateTableRange() const;
+
82
+
88 D3D12_SHADER_VISIBILITY getVisibility() const;
+
89
+
96 bool isTable() const;
+
97
+
98 private:
+
100 UINT iBindPoint = 0;
+
101
+
103 UINT iSpace = 0;
+
104
+ +
107
+
113 UINT iCount = 0;
+
114
+
116 bool bIsTable = false;
+
117
+
119 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL;
+
120 };
+
121
+ +
125 std::set<SamplerType> staticSamplers;
+
126
+
128 std::vector<RootParameter> vRootParameters;
+
129
+
135 std::unordered_map<std::string, std::pair<UINT, RootParameter>> rootParameterIndices;
+
136
+
145 std::unordered_map<std::string, size_t> rootConstantOffsets;
+
146 };
+
147
+
149 struct Generated {
+
151 ComPtr<ID3D12RootSignature> pRootSignature;
+
152
+
160 std::unordered_map<std::string, UINT> rootParameterIndices;
+
161
+
172 std::array<UINT, static_cast<unsigned int>(SpecialRootParameterSlot::SIZE)>
+ +
174
+
183 std::unordered_map<std::string, size_t> rootConstantOffsets;
+
184 };
+
185
+
194 static std::variant<CollectedInfo, Error> collectInfoFromReflection(
+
195 ID3D12Device* pDevice, const ComPtr<ID3D12ShaderReflection>& pShaderReflection);
+
196
+
215 static std::variant<Generated, Error>
+
216 generateGraphics(DirectXRenderer* pRenderer, HlslShader* pVertexShader, HlslShader* pPixelShader);
+
217
+
229 static std::variant<Generated, Error>
+
230 generateCompute(DirectXRenderer* pRenderer, HlslShader* pComputeShader);
+
231
+
232 private:
+
240 static std::variant<SamplerType, Error>
+
241 findStaticSamplerForSamplerResource(const D3D12_SHADER_INPUT_BIND_DESC& samplerResourceDescription);
+
242
+ +
257 std::unordered_map<std::string, std::pair<UINT, RootSignatureGenerator::RootParameter>>&
+
258 shaderRootParameterIndices,
+
259 std::vector<CD3DX12_ROOT_PARAMETER>& vRootParameters,
+
260 std::vector<CD3DX12_DESCRIPTOR_RANGE>& vTableRanges,
+
261 std::set<std::string>& addedRootParameterNames,
+
262 std::unordered_map<std::string, UINT>& rootParameterIndices,
+
263 std::array<UINT, static_cast<unsigned int>(SpecialRootParameterSlot::SIZE)>&
+
264 vSpecialRootParameterIndices);
+
265
+
278 static std::optional<Error> addUniquePairResourceNameRootParameterIndex(
+
279 std::unordered_map<std::string, std::pair<UINT, RootParameter>>& mapToAddTo,
+
280 const std::string& sResourceName,
+
281 UINT iRootParameterIndex,
+
282 const RootParameter& parameter);
+
283
+
293 static std::optional<Error> addCbufferRootParameter(
+
294 std::vector<RootParameter>& vRootParameters,
+
295 std::unordered_map<std::string, std::pair<UINT, RootParameter>>& rootParameterIndices,
+
296 const D3D12_SHADER_INPUT_BIND_DESC& resourceDescription);
+
297
+
308 static std::optional<Error> addTexture2DRootParameter(
+
309 std::vector<RootParameter>& vRootParameters,
+
310 std::unordered_map<std::string, std::pair<UINT, RootParameter>>& rootParameterIndices,
+
311 const D3D12_SHADER_INPUT_BIND_DESC& resourceDescription,
+
312 bool bIsReadWrite);
+
313
+
324 static std::optional<Error> addStructuredBufferRootParameter(
+
325 std::vector<RootParameter>& vRootParameters,
+
326 std::unordered_map<std::string, std::pair<UINT, RootParameter>>& rootParameterIndices,
+
327 const D3D12_SHADER_INPUT_BIND_DESC& resourceDescription,
+
328 bool bIsReadWrite);
+
329
+
343 static std::variant<bool, Error> processRootConstantsIfFound(
+
344 const ComPtr<ID3D12ShaderReflection>& pShaderReflection,
+
345 const D3D12_SHADER_INPUT_BIND_DESC& resourceDescription,
+
346 std::unordered_map<std::string, size_t>& rootConstantOffsets,
+
347 std::vector<RootParameter>& vRootParameters,
+
348 std::unordered_map<std::string, std::pair<UINT, RootParameter>>& rootParameterIndices);
+
349
+
351 static inline const std::string sRootConstantsVariableName = "constants";
+
352
+
354 static inline const std::string sRootConstantsTypeName = "RootConstants";
+
355 };
+
356} // namespace ne
+
Definition: DirectXRenderer.h:36
+
Definition: HlslShader.h:31
+
Definition: RootSignatureGenerator.h:44
+
bool bIsTable
Definition: RootSignatureGenerator.h:116
+
bool isTable() const
Definition: RootSignatureGenerator.cpp:1107
+ +
CD3DX12_ROOT_PARAMETER generateSingleDescriptorDescription() const
Definition: RootSignatureGenerator.cpp:1017
+
Type
Definition: RootSignatureGenerator.h:47
+
UINT iBindPoint
Definition: RootSignatureGenerator.h:100
+
UINT iSpace
Definition: RootSignatureGenerator.h:103
+
Type type
Definition: RootSignatureGenerator.h:106
+
UINT iCount
Definition: RootSignatureGenerator.h:113
+
CD3DX12_DESCRIPTOR_RANGE generateTableRange() const
Definition: RootSignatureGenerator.cpp:1057
+
D3D12_SHADER_VISIBILITY getVisibility() const
Definition: RootSignatureGenerator.cpp:1103
+
D3D12_SHADER_VISIBILITY visibility
Definition: RootSignatureGenerator.h:119
+
Definition: RootSignatureGenerator.h:37
+
static std::optional< Error > addCbufferRootParameter(std::vector< RootParameter > &vRootParameters, std::unordered_map< std::string, std::pair< UINT, RootParameter > > &rootParameterIndices, const D3D12_SHADER_INPUT_BIND_DESC &resourceDescription)
Definition: RootSignatureGenerator.cpp:798
+
static const std::string sRootConstantsTypeName
Definition: RootSignatureGenerator.h:354
+
static std::variant< Generated, Error > generateCompute(DirectXRenderer *pRenderer, HlslShader *pComputeShader)
Definition: RootSignatureGenerator.cpp:506
+
static std::variant< CollectedInfo, Error > collectInfoFromReflection(ID3D12Device *pDevice, const ComPtr< ID3D12ShaderReflection > &pShaderReflection)
Definition: RootSignatureGenerator.cpp:16
+
static std::variant< Generated, Error > generateGraphics(DirectXRenderer *pRenderer, HlslShader *pVertexShader, HlslShader *pPixelShader)
Definition: RootSignatureGenerator.cpp:193
+
static std::variant< bool, Error > processRootConstantsIfFound(const ComPtr< ID3D12ShaderReflection > &pShaderReflection, const D3D12_SHADER_INPUT_BIND_DESC &resourceDescription, std::unordered_map< std::string, size_t > &rootConstantOffsets, std::vector< RootParameter > &vRootParameters, std::unordered_map< std::string, std::pair< UINT, RootParameter > > &rootParameterIndices)
Definition: RootSignatureGenerator.cpp:882
+
static void addSpecialResourceRootParametersIfUsed(std::unordered_map< std::string, std::pair< UINT, RootSignatureGenerator::RootParameter > > &shaderRootParameterIndices, std::vector< CD3DX12_ROOT_PARAMETER > &vRootParameters, std::vector< CD3DX12_DESCRIPTOR_RANGE > &vTableRanges, std::set< std::string > &addedRootParameterNames, std::unordered_map< std::string, UINT > &rootParameterIndices, std::array< UINT, static_cast< unsigned int >(SpecialRootParameterSlot::SIZE)> &vSpecialRootParameterIndices)
Definition: RootSignatureGenerator.cpp:669
+
static std::optional< Error > addTexture2DRootParameter(std::vector< RootParameter > &vRootParameters, std::unordered_map< std::string, std::pair< UINT, RootParameter > > &rootParameterIndices, const D3D12_SHADER_INPUT_BIND_DESC &resourceDescription, bool bIsReadWrite)
Definition: RootSignatureGenerator.cpp:824
+
static std::optional< Error > addStructuredBufferRootParameter(std::vector< RootParameter > &vRootParameters, std::unordered_map< std::string, std::pair< UINT, RootParameter > > &rootParameterIndices, const D3D12_SHADER_INPUT_BIND_DESC &resourceDescription, bool bIsReadWrite)
Definition: RootSignatureGenerator.cpp:854
+
static const std::string sRootConstantsVariableName
Definition: RootSignatureGenerator.h:351
+
static std::variant< SamplerType, Error > findStaticSamplerForSamplerResource(const D3D12_SHADER_INPUT_BIND_DESC &samplerResourceDescription)
Definition: RootSignatureGenerator.cpp:615
+
static std::optional< Error > addUniquePairResourceNameRootParameterIndex(std::unordered_map< std::string, std::pair< UINT, RootParameter > > &mapToAddTo, const std::string &sResourceName, UINT iRootParameterIndex, const RootParameter &parameter)
Definition: RootSignatureGenerator.cpp:777
+
Definition: RootSignatureGenerator.h:123
+
std::vector< RootParameter > vRootParameters
Definition: RootSignatureGenerator.h:128
+
std::set< SamplerType > staticSamplers
Definition: RootSignatureGenerator.h:125
+
std::unordered_map< std::string, std::pair< UINT, RootParameter > > rootParameterIndices
Definition: RootSignatureGenerator.h:135
+
std::unordered_map< std::string, size_t > rootConstantOffsets
Definition: RootSignatureGenerator.h:145
+
Definition: RootSignatureGenerator.h:149
+
std::array< UINT, static_cast< unsigned int >(SpecialRootParameterSlot::SIZE)> vSpecialRootParameterIndices
Definition: RootSignatureGenerator.h:173
+
ComPtr< ID3D12RootSignature > pRootSignature
Definition: RootSignatureGenerator.h:151
+
std::unordered_map< std::string, size_t > rootConstantOffsets
Definition: RootSignatureGenerator.h:183
+
std::unordered_map< std::string, UINT > rootParameterIndices
Definition: RootSignatureGenerator.h:160
+
+
+ + + + diff --git a/SerializableObjectFieldSerializer_8h_source.html b/SerializableObjectFieldSerializer_8h_source.html new file mode 100644 index 000000000..8bda15594 --- /dev/null +++ b/SerializableObjectFieldSerializer_8h_source.html @@ -0,0 +1,224 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/io/serializers/SerializableObjectFieldSerializer.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SerializableObjectFieldSerializer.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <variant>
+
5
+
6// Custom.
+
7#include "io/serializers/IFieldSerializer.hpp"
+
8
+
9namespace rfk {
+
10 class Struct;
+
11 class Field;
+
12 class Archetype;
+
13} // namespace rfk
+
14
+
15namespace ne {
+ +
20 // Checks GUIDs uniqueness in debug builds.
+
21 friend class GameManager;
+
22
+
23 public:
+ +
25 virtual ~SerializableObjectFieldSerializer() override = default;
+
26
+
48 [[nodiscard]] static std::optional<Error> serializeFieldObject(
+
49 Serializable* pObject,
+
50 toml::value* pTomlData,
+
51 const std::string& sFieldName,
+
52 const std::string& sSectionName,
+
53 const std::string& sEntityId,
+
54 size_t& iSubEntityId,
+
55 Serializable* pOriginalObject = nullptr);
+
56
+
72 [[nodiscard]] static std::optional<Error>
+
73 cloneSerializableObject(Serializable* pFrom, Serializable* pTo, bool bNotifyAboutDeserialized);
+
74
+
92 static std::variant<std::unique_ptr<Serializable>, Error> deserializeSerializableObject(
+
93 const toml::value* pTomlDocument,
+
94 const toml::value* pTomlValue,
+
95 const std::string& sFieldName,
+
96 Serializable* pTarget,
+
97 const std::string& sOwnerSectionName,
+
98 const std::string& sEntityId,
+
99 std::unordered_map<std::string, std::string>& customAttributes);
+
100
+
114 static bool isSerializableObjectValueEqual(Serializable* pObjectA, Serializable* pObjectB);
+
115
+
125 static bool isTypeDerivesFromSerializable(const std::string& sCanonicalTypeName);
+
126
+
134 static bool isFieldSerializable(rfk::Field const& field);
+
135
+
144 static bool isDerivedFromSerializable(rfk::Archetype const* pArchetype);
+
145
+
153 virtual bool isFieldTypeSupported(const rfk::Field* pField) override;
+
154
+
173 [[nodiscard]] virtual std::optional<Error> serializeField(
+
174 toml::value* pTomlData,
+
175 Serializable* pFieldOwner,
+
176 const rfk::Field* pField,
+
177 const std::string& sSectionName,
+
178 const std::string& sEntityId,
+
179 size_t& iSubEntityId,
+
180 Serializable* pOriginalObject = nullptr) override;
+
181
+
197 [[nodiscard]] virtual std::optional<Error> deserializeField(
+
198 const toml::value* pTomlDocument,
+
199 const toml::value* pTomlValue,
+
200 Serializable* pFieldOwner,
+
201 const rfk::Field* pField,
+
202 const std::string& sOwnerSectionName,
+
203 const std::string& sEntityId,
+
204 std::unordered_map<std::string, std::string>& customAttributes) override;
+
205
+
216 [[nodiscard]] virtual std::optional<Error> cloneField(
+
217 Serializable* pFromInstance,
+
218 const rfk::Field* pFromField,
+
219 Serializable* pToInstance,
+
220 const rfk::Field* pToField) override;
+
221
+
233 virtual bool isFieldValueEqual(
+
234 Serializable* pFieldAOwner,
+
235 const rfk::Field* pFieldA,
+
236 Serializable* pFieldBOwner,
+
237 const rfk::Field* pFieldB) override;
+
238
+
239 private:
+
240#if defined(DEBUG)
+
247 static void checkGuidUniqueness();
+
248
+
255 static void collectGuids(
+
256 const rfk::Struct* pArchetypeToAnalyze, std::unordered_map<std::string, std::string>& vAllGuids);
+
257#endif
+
258
+ +
269 const std::string& sCanonicalTypeName, const rfk::Namespace* pNamespace);
+
270
+
272 static inline const auto sSubEntityFieldNameKey = ".field_name";
+
273 };
+
274} // namespace ne
+
Definition: Error.h:27
+
Definition: GameManager.h:34
+
Definition: IFieldSerializer.hpp:33
+
Definition: SerializableObjectFieldSerializer.h:19
+
static bool isFieldSerializable(rfk::Field const &field)
Definition: SerializableObjectFieldSerializer.cpp:393
+
static bool isDerivedFromSerializable(rfk::Archetype const *pArchetype)
Definition: SerializableObjectFieldSerializer.cpp:410
+
virtual bool isFieldValueEqual(Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB) override
Definition: SerializableObjectFieldSerializer.cpp:541
+
virtual bool isFieldTypeSupported(const rfk::Field *pField) override
Definition: SerializableObjectFieldSerializer.cpp:14
+
virtual std::optional< Error > serializeField(toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr) override
Definition: SerializableObjectFieldSerializer.cpp:19
+
static std::optional< Error > cloneSerializableObject(Serializable *pFrom, Serializable *pTo, bool bNotifyAboutDeserialized)
Definition: SerializableObjectFieldSerializer.cpp:52
+
static const auto sSubEntityFieldNameKey
Definition: SerializableObjectFieldSerializer.h:272
+
static bool isTypeDerivesFromSerializable(const std::string &sCanonicalTypeName)
Definition: SerializableObjectFieldSerializer.cpp:335
+
static std::optional< Error > serializeFieldObject(Serializable *pObject, toml::value *pTomlData, const std::string &sFieldName, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr)
Definition: SerializableObjectFieldSerializer.cpp:635
+
static std::variant< std::unique_ptr< Serializable >, Error > deserializeSerializableObject(const toml::value *pTomlDocument, const toml::value *pTomlValue, const std::string &sFieldName, Serializable *pTarget, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes)
Definition: SerializableObjectFieldSerializer.cpp:140
+
virtual std::optional< Error > cloneField(Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField) override
Definition: SerializableObjectFieldSerializer.cpp:513
+
virtual std::optional< Error > deserializeField(const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes) override
Definition: SerializableObjectFieldSerializer.cpp:472
+
static bool isSerializableObjectValueEqual(Serializable *pObjectA, Serializable *pObjectB)
Definition: SerializableObjectFieldSerializer.cpp:262
+
Definition: Serializable.h:113
+
+
+ + + + diff --git a/Serializable_8h_source.html b/Serializable_8h_source.html new file mode 100644 index 000000000..55c94ccca --- /dev/null +++ b/Serializable_8h_source.html @@ -0,0 +1,859 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/io/Serializable.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Serializable.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <filesystem>
+
5#include <memory>
+
6#include <variant>
+
7#include <optional>
+
8#include <set>
+
9#include <format>
+
10
+
11// Custom.
+
12#include "misc/Error.h"
+
13#include "io/Logger.h"
+
14#include "misc/ProjectPaths.h"
+
15#include "io/ConfigManager.h"
+
16#include "io/properties/GuidProperty.h"
+
17#include "io/properties/SerializeProperty.h"
+
18#include "io/serializers/SerializableObjectFieldSerializer.h"
+
19#include "io/FieldSerializerManager.h"
+
20
+
21// External.
+
22#include "Refureku/Object.h"
+
23#include "GcPtr.h"
+
24
+
25#include "Serializable.generated.h"
+
26
+
27namespace ne RNAMESPACE() {
+
28 class Serializable;
+
29
+ +
32 public:
+ +
34
+ + +
47 const std::string& sObjectUniqueId,
+
48 const std::unordered_map<std::string, std::string>& customAttributes = {},
+
49 Serializable* pOriginalObject = nullptr) {
+
50 this->pObject = pObject;
+
51 this->sObjectUniqueId = sObjectUniqueId;
+ +
53 this->pOriginalObject = pOriginalObject;
+
54 }
+
55
+ +
58
+ +
65
+
67 std::string sObjectUniqueId;
+
68
+
70 std::unordered_map<std::string, std::string> customAttributes;
+
71 };
+
72
+
74 template <typename SmartPointer, typename InnerType = typename SmartPointer::element_type>
+
75 requires std::same_as<SmartPointer, sgc::GcPtr<Serializable>> ||
+
76 std::same_as<SmartPointer, std::unique_ptr<Serializable>>
+ +
78 public:
+ +
80
+ +
89 SmartPointer pObject,
+
90 std::string sObjectUniqueId,
+
91 std::unordered_map<std::string, std::string> customAttributes) {
+
92 this->pObject = std::move(pObject);
+
93 this->sObjectUniqueId = sObjectUniqueId;
+
94 this->customAttributes = customAttributes;
+
95 }
+
96
+
98 SmartPointer pObject;
+
99
+
101 std::string sObjectUniqueId;
+
102
+
104 std::unordered_map<std::string, std::string> customAttributes;
+
105 };
+
106
+
113 class RCLASS(Guid("f5a59b47-ead8-4da4-892e-cf05abb2f3cc")) Serializable : public rfk::Object {
+
114 // This field serializer will call `onAfterDeserialized` after deserialization.
+ +
116
+
117 public:
+
118 Serializable() = default;
+
119 virtual ~Serializable() override = default;
+
120
+
130 static std::variant<std::pair<std::set<std::string>, toml::value>, Error>
+
131 getIdsFromFile(std::filesystem::path pathToFile);
+
132
+
179 [[nodiscard]] std::optional<Error> serialize(
+
180 std::filesystem::path pathToFile,
+
181 bool bEnableBackup,
+
182 const std::unordered_map<std::string, std::string>& customAttributes = {});
+
183
+
203 [[nodiscard]] static std::optional<Error> serializeMultiple(
+
204 std::filesystem::path pathToFile,
+
205 std::vector<SerializableObjectInformation> vObjects,
+
206 bool bEnableBackup);
+
207
+
228 [[nodiscard]] std::variant<std::string, Error> serialize(
+
229 toml::value& tomlData,
+
230 const std::string& sEntityId = "",
+
231 const std::unordered_map<std::string, std::string>& customAttributes = {},
+
232 const std::optional<std::filesystem::path>& optionalPathToFile = {},
+
233 bool bEnableBackup = false);
+
234
+
259 [[nodiscard]] std::variant<std::string, Error> serialize(
+
260 toml::value& tomlData,
+
261 Serializable* pOriginalObject,
+
262 std::string sEntityId = "",
+
263 const std::unordered_map<std::string, std::string>& customAttributes = {},
+
264 const std::optional<std::filesystem::path>& optionalPathToFile = {},
+
265 bool bEnableBackup = false);
+
266
+
280 template <typename SmartPointer, typename InnerType = typename SmartPointer::element_type>
+
281 requires std::derived_from<InnerType, Serializable> &&
+
282 (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> ||
+
283 std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
+
284 static std::variant<SmartPointer, Error> deserialize(const std::filesystem::path& pathToFile);
+
285
+
299 template <typename SmartPointer, typename InnerType = typename SmartPointer::element_type>
+
300 requires std::derived_from<InnerType, Serializable> &&
+
301 (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> ||
+
302 std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
+
303 static std::variant<SmartPointer, Error> deserialize(
+
304 const std::filesystem::path& pathToFile,
+
305 std::unordered_map<std::string, std::string>& customAttributes);
+
306
+
322 template <typename SmartPointer, typename InnerType = typename SmartPointer::element_type>
+
323 requires std::derived_from<InnerType, Serializable> &&
+
324 (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> ||
+
325 std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
+
326 static std::variant<SmartPointer, Error> deserialize(
+
327 std::filesystem::path pathToFile,
+
328 std::unordered_map<std::string, std::string>& customAttributes,
+
329 const std::string& sEntityId);
+
330
+
345 template <typename SmartPointer, typename InnerType = typename SmartPointer::element_type>
+
346 requires std::derived_from<InnerType, Serializable> &&
+
347 (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> ||
+
348 std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
+
349 static std::variant<SmartPointer, Error> deserialize(
+
350 const std::filesystem::path& pathToFile, const std::string& sEntityId);
+
351
+
360 template <typename SmartPointer, typename InnerType = typename SmartPointer::element_type>
+
361 requires std::same_as<SmartPointer, sgc::GcPtr<Serializable>> ||
+
362 std::same_as<SmartPointer, std::unique_ptr<Serializable>>
+
363 static std::variant<std::vector<DeserializedObjectInformation<SmartPointer>>, Error>
+
364 deserializeMultiple(std::filesystem::path pathToFile);
+
365
+
386 template <typename SmartPointer, typename InnerType = typename SmartPointer::element_type>
+
387 requires std::derived_from<InnerType, Serializable> &&
+
388 (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> ||
+
389 std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
+
390 static std::variant<SmartPointer, Error> deserialize(
+
391 const toml::value& tomlData,
+
392 std::unordered_map<std::string, std::string>& customAttributes,
+
393 std::string sEntityId = "",
+
394 const std::optional<std::filesystem::path>& optionalPathToFile = {});
+
395
+
411 std::optional<std::pair<std::string, std::string>> getPathDeserializedFromRelativeToRes() const;
+
412
+
413 protected:
+
421 virtual void onAfterDeserialized() {}
+
422
+
423 private:
+
433 [[nodiscard]] static std::optional<Error> resolvePathToToml(std::filesystem::path& pathToFile);
+
434
+
442 static const rfk::Class* getClassForGuid(const std::string& sGuid);
+
443
+
453 static const rfk::Struct*
+
454 getClassForGuid(const rfk::Struct* pArchetypeToAnalyze, const std::string& sGuid);
+
455
+
473 template <typename SmartPointer, typename InnerType = typename SmartPointer::element_type>
+
474 requires std::derived_from<InnerType, Serializable> &&
+
475 (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> ||
+
476 std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
+
477 static std::variant<SmartPointer, Error> deserializeFromSection(
+
478 const toml::value& tomlData,
+
479 std::unordered_map<std::string, std::string>& customAttributes,
+
480 const std::string& sSectionName,
+
481 const std::string& sTypeGuid,
+
482 const std::string& sEntityId,
+
483 const std::optional<std::filesystem::path>& optionalPathToFile);
+
484
+
497 std::optional<std::pair<std::string, std::string>> pathDeserializedFromRelativeToRes;
+
498
+
500 static inline const auto sSubEntityFieldNameKey = ".field_name";
+
501
+
506 static inline const auto sPathRelativeToResKey = ".path_relative_to_res";
+
507
+
509 static inline const auto sNothingToSerializeKey = ".none";
+
510
+
512 static constexpr std::string_view sCustomAttributePrefix = "..";
+
513
+
514 ne_Serializable_GENERATED
+
515 };
+
516
+
517 template <typename SmartPointer, typename InnerType>
+
518 requires std::derived_from<InnerType, Serializable> &&
+
519 (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> ||
+
520 std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
+
521 std::variant<SmartPointer, Error> Serializable::deserialize(const std::filesystem::path& pathToFile) {
+
522 std::unordered_map<std::string, std::string> foundCustomAttributes;
+
523 return deserialize<SmartPointer>(pathToFile, foundCustomAttributes);
+
524 }
+
525
+
526 template <typename SmartPointer, typename InnerType>
+
527 requires std::derived_from<InnerType, Serializable> &&
+
528 (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> ||
+
529 std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
+
530 std::variant<SmartPointer, Error> Serializable::deserialize(
+
531 const std::filesystem::path& pathToFile,
+
532 std::unordered_map<std::string, std::string>& customAttributes) {
+
533 return deserialize<SmartPointer>(pathToFile, customAttributes, "");
+
534 }
+
535
+
536 template <typename SmartPointer, typename InnerType>
+
537 requires std::derived_from<InnerType, Serializable> &&
+
538 (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> ||
+
539 std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
+
540 std::variant<SmartPointer, Error> Serializable::deserialize(
+
541 const std::filesystem::path& pathToFile, const std::string& sEntityId) {
+
542 std::unordered_map<std::string, std::string> foundCustomAttributes;
+
543 return deserialize<SmartPointer>(pathToFile, foundCustomAttributes, sEntityId);
+
544 }
+
545
+
546 template <typename SmartPointer, typename InnerType>
+
547 requires std::same_as<SmartPointer, sgc::GcPtr<Serializable>> ||
+
548 std::same_as<SmartPointer, std::unique_ptr<Serializable>>
+
549 std::variant<std::vector<DeserializedObjectInformation<SmartPointer>>, Error>
+
550 Serializable::deserializeMultiple(std::filesystem::path pathToFile) {
+
551 // Resolve path.
+
552 auto optionalError = resolvePathToToml(pathToFile);
+
553 if (optionalError.has_value()) [[unlikely]] {
+
554 auto error = std::move(optionalError.value());
+
555 error.addCurrentLocationToErrorStack();
+
556 return error;
+
557 }
+
558
+
559 // Parse file.
+
560 toml::value tomlData;
+
561 try {
+
562 tomlData = toml::parse(pathToFile);
+
563 } catch (std::exception& exception) {
+
564 return Error(std::format(
+
565 "failed to parse TOML file at \"{}\", error: {}", pathToFile.string(), exception.what()));
+
566 }
+
567
+
568 // Get TOML as table.
+
569 const auto fileTable = tomlData.as_table();
+
570 if (fileTable.empty()) [[unlikely]] {
+
571 return Error("provided toml value has 0 sections while expected at least 1 section");
+
572 }
+
573
+
574 // Deserialize.
+
575 std::vector<DeserializedObjectInformation<SmartPointer>> deserializedObjects;
+
576 for (const auto& [sSectionName, tomlValue] : fileTable) {
+
577 // Get type GUID.
+
578 const auto iIdEndDotPos = sSectionName.rfind('.');
+
579 if (iIdEndDotPos == std::string::npos) [[unlikely]] {
+
580 return Error("provided toml value does not contain entity ID");
+
581 }
+
582 const auto sTypeGuid = sSectionName.substr(iIdEndDotPos + 1);
+
583
+
584 // Get entity ID chain.
+
585 const auto sEntityId = sSectionName.substr(0, iIdEndDotPos);
+
586
+
587 // Check if this is a sub-entity.
+
588 if (sEntityId.contains('.')) {
+
589 // Only deserialize top-level entities because sub-entities (fields)
+
590 // will be deserialized while we deserialize top-level entities.
+
591 continue;
+
592 }
+
593
+
594 // Deserialize object from this section.
+
595 std::unordered_map<std::string, std::string> customAttributes;
+
596 auto result = deserializeFromSection<SmartPointer>(
+
597 tomlData, customAttributes, sSectionName, sTypeGuid, sEntityId, pathToFile);
+
598 if (std::holds_alternative<Error>(result)) [[unlikely]] {
+
599 auto error = std::get<Error>(std::move(result));
+
600 error.addCurrentLocationToErrorStack();
+
601 return error;
+
602 }
+
603
+
604 // Save object info.
+ +
606 std::get<SmartPointer>(std::move(result)), sEntityId, customAttributes);
+
607 deserializedObjects.push_back(std::move(objectInfo));
+
608 }
+
609
+
610 return deserializedObjects;
+
611 }
+
612
+
613 template <typename SmartPointer, typename InnerType>
+
614 requires std::derived_from<InnerType, Serializable> &&
+
615 (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> ||
+
616 std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
+
617 std::variant<SmartPointer, Error> Serializable::deserialize(
+
618 std::filesystem::path pathToFile,
+
619 std::unordered_map<std::string, std::string>& customAttributes,
+
620 const std::string& sEntityId) {
+
621 // Resolve path.
+
622 auto optionalError = resolvePathToToml(pathToFile);
+
623 if (optionalError.has_value()) [[unlikely]] {
+
624 auto error = std::move(optionalError.value());
+
625 error.addCurrentLocationToErrorStack();
+
626 return error;
+
627 }
+
628
+
629 // Parse file.
+
630 toml::value tomlData;
+
631 try {
+
632 tomlData = toml::parse(pathToFile);
+
633 } catch (std::exception& exception) {
+
634 return Error(std::format(
+
635 "failed to parse TOML file at \"{}\", error: {}", pathToFile.string(), exception.what()));
+
636 }
+
637
+
638 // Deserialize.
+
639 return deserialize<SmartPointer>(tomlData, customAttributes, sEntityId, pathToFile);
+
640 }
+
641
+
642 template <typename SmartPointer, typename InnerType>
+
643 requires std::derived_from<InnerType, Serializable> &&
+
644 (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> ||
+
645 std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
+
646 std::variant<SmartPointer, Error> Serializable::deserialize(
+
647 const toml::value& tomlData,
+
648 std::unordered_map<std::string, std::string>& customAttributes,
+
649 std::string sEntityId,
+
650 const std::optional<std::filesystem::path>& optionalPathToFile) {
+
651 if (sEntityId.empty()) {
+
652 // Put something as entity ID so it would not look weird.
+
653 sEntityId = "0";
+
654 }
+
655
+
656 // Get TOML as table.
+
657 const auto fileTable = tomlData.as_table();
+
658 if (fileTable.empty()) [[unlikely]] {
+
659 return Error("provided toml value has 0 sections while expected at least 1 section");
+
660 }
+
661
+
662 // Find a section that starts with the specified entity ID.
+
663 // Each entity section has the following format: [entityId.GUID]
+
664 // For sub entities (field with reflected type) format: [parentEntityId.childEntityId.childGUID]
+
665 std::string sTargetSection;
+
666 std::string sTypeGuid;
+
667 for (const auto& [sSectionName, value] : fileTable) {
+
668 // We can't just use `sSectionName.starts_with(sEntityId)` because we might make a mistake in the
+
669 // following situation: [100...] with entity ID equal to "10" and even if we add a dot
+
670 // to `sEntityId` we still might make a mistake in the following situation:
+
671 // [10.30.GUID] while we look for just [10.GUID].
+
672
+
673 // Get ID end position (GUID start position).
+
674 const auto iIdEndDotPos = sSectionName.rfind('.');
+
675 if (iIdEndDotPos == std::string::npos) [[unlikely]] {
+
676 return Error(std::format("section name \"{}\" does not contain entity ID", sSectionName));
+
677 }
+
678 if (iIdEndDotPos + 1 == sSectionName.size()) [[unlikely]] {
+
679 return Error(std::format("section name \"{}\" does not have a GUID", sSectionName));
+
680 }
+
681 if (iIdEndDotPos == 0) [[unlikely]] {
+
682 return Error(std::format("section \"{}\" is not full", sSectionName));
+
683 }
+
684
+
685 // Get ID chain (either entity ID or something like "parentEntityId.childEntityId").
+
686 if (std::string_view(sSectionName.data(), iIdEndDotPos) != sEntityId) { // compare without copy
+
687 continue;
+
688 }
+
689
+
690 // Save target section name.
+
691 sTargetSection = sSectionName;
+
692
+
693 // Save this entity's GUID.
+
694 sTypeGuid = sSectionName.substr(iIdEndDotPos + 1);
+
695
+
696 break;
+
697 }
+
698
+
699 // Make sure something was found.
+
700 if (sTargetSection.empty()) [[unlikely]] {
+
701 return Error(std::format("could not find entity with ID \"{}\"", sEntityId));
+
702 }
+
703
+
704 return deserializeFromSection<SmartPointer>(
+
705 tomlData, customAttributes, sTargetSection, sTypeGuid, sEntityId, optionalPathToFile);
+
706 }
+
707
+
708 template <typename SmartPointer, typename InnerType>
+
709 requires std::derived_from<InnerType, Serializable> &&
+
710 (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> ||
+
711 std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
+
712 std::variant<SmartPointer, Error> Serializable::deserializeFromSection(
+
713 const toml::value& tomlData,
+
714 std::unordered_map<std::string, std::string>& customAttributes,
+
715 const std::string& sSectionName,
+
716 const std::string& sTypeGuid,
+
717 const std::string& sEntityId,
+
718 const std::optional<std::filesystem::path>& optionalPathToFile) {
+
719 // Get all keys (field names) from this section.
+
720 const auto& targetSection = tomlData.at(sSectionName);
+
721 if (!targetSection.is_table()) [[unlikely]] {
+
722 return Error(std::format("found \"{}\" section is not a section", sSectionName));
+
723 }
+
724
+
725 // Collect keys from target section.
+
726 const auto& sectionTable = targetSection.as_table();
+
727 std::unordered_map<std::string_view, const toml::value*> fieldsToDeserialize;
+
728 SmartPointer pOriginalEntity = nullptr;
+
729 for (const auto& [sKey, value] : sectionTable) {
+
730 if (sKey == sNothingToSerializeKey) {
+
731 continue;
+
732 } else if (sKey == sPathRelativeToResKey) {
+
733 // Make sure the value is string.
+
734 if (!value.is_string()) [[unlikely]] {
+
735 return Error(
+
736 std::format("found \"{}\" key's value is not string", sPathRelativeToResKey));
+
737 }
+
738
+
739 // Deserialize original entity.
+
740 auto deserializeResult = Serializable::deserialize<SmartPointer>(
+
741 ProjectPaths::getPathToResDirectory(ResourceDirectory::ROOT) / value.as_string());
+
742 if (std::holds_alternative<Error>(deserializeResult)) [[unlikely]] {
+
743 auto error = std::get<Error>(std::move(deserializeResult));
+
744 error.addCurrentLocationToErrorStack();
+
745 return error;
+
746 }
+
747 pOriginalEntity = std::get<SmartPointer>(std::move(deserializeResult));
+
748 } else if (sKey.starts_with(sCustomAttributePrefix)) {
+
749 // Custom attribute.
+
750 // Make sure it's a string.
+
751 if (!value.is_string()) [[unlikely]] {
+
752 return Error(std::format("found custom attribute \"{}\" is not a string", sKey));
+
753 }
+
754
+
755 // Add attribute.
+
756 customAttributes[sKey.substr(sCustomAttributePrefix.size())] = value.as_string();
+
757 } else {
+
758 fieldsToDeserialize[sKey] = &value;
+
759 }
+
760 }
+
761
+
762 // Get archetype for found GUID.
+
763 const auto pType = getClassForGuid(sTypeGuid);
+
764 if (pType == nullptr) [[unlikely]] {
+
765 if (pOriginalEntity) {
+
766 return Error(std::format(
+
767 "GUID \"{}\" was not found in the database, but "
+
768 "the original object at \"{}\" (ID \"{}\") was deserialized",
+
769 sTypeGuid,
+
770 pOriginalEntity->getPathDeserializedFromRelativeToRes().value().first,
+
771 pOriginalEntity->getPathDeserializedFromRelativeToRes().value().second));
+
772 } else {
+
773 return Error(std::format("no type found for GUID \"{}\"", sTypeGuid));
+
774 }
+
775 }
+
776
+
777 // Make sure the type indeed derives from serializable.
+ +
779 if (pOriginalEntity) {
+
780 return Error(std::format(
+
781 "deserialized type for \"{}\" does not derive from {}, but "
+
782 "the original object at \"{}\" (ID \"{}\") was deserialized",
+
783 sTypeGuid,
+
784 staticGetArchetype().getName(),
+
785 pOriginalEntity->getPathDeserializedFromRelativeToRes().value().first,
+
786 pOriginalEntity->getPathDeserializedFromRelativeToRes().value().second));
+
787 } else {
+
788 return Error(std::format(
+
789 "deserialized type with GUID \"{}\" does not derive from {}",
+
790 sTypeGuid,
+
791 staticGetArchetype().getName()));
+
792 }
+
793 }
+
794
+
795 // Create instance.
+
796 SmartPointer pSmartPointerInstance = nullptr;
+
797 if (pOriginalEntity != nullptr) {
+
798 // Use the original entity instead of creating a new one.
+
799 pSmartPointerInstance = std::move(pOriginalEntity);
+
800 }
+
801 if (pSmartPointerInstance == nullptr) {
+
802 if constexpr (std::is_same_v<SmartPointer, std::unique_ptr<InnerType>>) {
+
803 // Create a unique instance.
+
804 pSmartPointerInstance = pType->makeUniqueInstance<InnerType>();
+
805 if (pSmartPointerInstance == nullptr) [[unlikely]] {
+
806 return Error(std::format(
+
807 "unable to make an object of type \"{}\" using type's default constructor "
+
808 "(does type \"{}\" has a default constructor?)",
+
809 pType->getName(),
+
810 pType->getName()));
+
811 }
+
812 }
+
813 // NOTE: don't allow deserializing into a `shared_ptr` since it may create a false assumption
+
814 // that this `shared_ptr` will also save/load its referenced entity or keep its reference
+
815 // (you can easily convert a unique_ptr to a shared_ptr so it should not be an issue).
+
816 else if (std::is_same_v<SmartPointer, sgc::GcPtr<InnerType>>) {
+
817 // Create GC instance.
+
818 // (this part is a temporary solution until we will add a `makeGcFromThisType` method to
+
819 // `rfk::Struct`)
+
820 std::unique_ptr<InnerType> pInstance = pType->makeUniqueInstance<InnerType>();
+
821 if (pInstance == nullptr) [[unlikely]] {
+
822 return Error(std::format(
+
823 "unable to make an object of type \"{}\" using type's default constructor "
+
824 "(does type \"{}\" has a default constructor?)",
+
825 pType->getName(),
+
826 pType->getName()));
+
827 }
+
828 sgc::GcPtr<rfk::Object> pParentGcInstance = pInstance->makeGcFromThisType();
+
829 pSmartPointerInstance = dynamic_cast<InnerType*>(pParentGcInstance.get());
+
830 if (pSmartPointerInstance == nullptr) [[unlikely]] {
+
831 return Error(std::format(
+
832 "dynamic cast failed to cast the type \"{}\" to the specified template argument "
+
833 "(are you trying to deserialize into a wrong type?)",
+
834 pParentGcInstance->getArchetype().getName()));
+
835 }
+
836 } else [[unlikely]] {
+
837 return Error("unexpected smart pointer type received");
+
838 }
+
839 }
+
840
+
841 // Get field serializers.
+
842 const auto vFieldSerializers = FieldSerializerManager::getFieldSerializers();
+
843 const auto vBinaryFieldSerializers = FieldSerializerManager::getBinaryFieldSerializers();
+
844
+
845 // Deserialize fields.
+
846 for (auto& [sFieldName, pFieldTomlValue] : fieldsToDeserialize) {
+
847 if (sFieldName == sSubEntityFieldNameKey) {
+
848 // This field is used as section metadata and tells us what field of parent entity
+
849 // this section describes.
+
850 continue;
+
851 }
+
852
+
853 // Get field by name.
+
854 rfk::Field const* pField =
+
855 pType->getFieldByName(sFieldName.data(), rfk::EFieldFlags::Default, true);
+
856 if (pField == nullptr) [[unlikely]] { // rarely happens
+
857 Logger::get().warn(std::format(
+
858 "field name \"{}\" exists in the specified toml value but does not exist in the "
+
859 "actual object (if you removed/renamed this reflected field from your "
+
860 "class/struct - ignore this warning)",
+
861 sFieldName));
+
862 continue;
+
863 }
+
864 const auto sFieldCanonicalTypeName = std::string(pField->getCanonicalTypeName());
+
865
+
866 // Check if it's serializable.
+ +
868 continue;
+
869 }
+
870
+
871 // Check if we need to deserialize from external file.
+
872 const auto pSerializeProperty = pField->getProperty<Serialize>();
+
873 if (pSerializeProperty->getSerializationType() == FieldSerializationType::FST_AS_EXTERNAL_FILE ||
+
874 pSerializeProperty->getSerializationType() ==
+
875 FieldSerializationType::FST_AS_EXTERNAL_BINARY_FILE) {
+
876 // Make sure this field derives from `Serializable`.
+ +
878 pField->getType().getArchetype())) [[unlikely]] {
+
879 // Show an error so that the developer will instantly see the mistake.
+
880 auto error = Error("only fields of type derived from `Serializable` can use "
+
881 "`SerializeAsExternal` property");
+
882 error.showError();
+
883 throw std::runtime_error(error.getFullErrorMessage());
+
884 }
+
885
+
886 // Make sure path to the main file is specified.
+
887 if (!optionalPathToFile.has_value()) [[unlikely]] {
+
888 return Error("unable to deserialize field marked as `SerializeAsExternal` "
+
889 "because path to the main file was not specified");
+
890 }
+
891
+
892 // Prepare path to the external file.
+
893 if (!pFieldTomlValue->is_string()) [[unlikely]] {
+
894 return Error(std::format(
+
895 "expected field \"{}\" to store external filename in file \"{}\"",
+
896 pField->getName(),
+
897 optionalPathToFile.value().string()));
+
898 }
+
899 const auto sExternalFileName = pFieldTomlValue->as_string();
+
900 const auto pathToExternalFile = optionalPathToFile.value().parent_path() / sExternalFileName;
+
901
+
902 // Get field object.
+
903 const auto pFieldObject =
+
904 reinterpret_cast<Serializable*>(pField->getPtrUnsafe(pSmartPointerInstance.get()));
+
905
+
906 if (pSerializeProperty->getSerializationType() == FST_AS_EXTERNAL_FILE) {
+
907 // Deserialize external file.
+
908 auto result = deserialize<std::unique_ptr<Serializable>>(pathToExternalFile);
+
909 if (std::holds_alternative<Error>(result)) [[unlikely]] {
+
910 auto error = std::get<Error>(std::move(result));
+
911 error.addCurrentLocationToErrorStack();
+
912 return error;
+
913 }
+
914 const auto pDeserializedExternalField =
+
915 std::get<std::unique_ptr<Serializable>>(std::move(result));
+
916
+
917 // Clone deserialized data to field.
+ +
919 pDeserializedExternalField.get(), pFieldObject, false);
+
920 if (optionalError.has_value()) [[unlikely]] {
+
921 auto error = optionalError.value();
+
922 error.addCurrentLocationToErrorStack();
+
923 return error;
+
924 }
+
925 } else if (pSerializeProperty->getSerializationType() == FST_AS_EXTERNAL_BINARY_FILE) {
+
926 // Deserialize binary file.
+
927 bool bDeserialized = false;
+
928 for (const auto& pBinarySerializer : vBinaryFieldSerializers) {
+
929 if (!pBinarySerializer->isFieldTypeSupported(pField)) {
+
930 continue;
+
931 }
+
932
+
933 // Deserialize as binary.
+
934 auto optionalError = pBinarySerializer->deserializeField(
+
935 pathToExternalFile, pSmartPointerInstance.get(), pField);
+
936 if (optionalError.has_value()) [[unlikely]] {
+
937 auto error = optionalError.value();
+
938 error.addCurrentLocationToErrorStack();
+
939 return error;
+
940 }
+
941
+
942 // Finished.
+
943 bDeserialized = true;
+
944 break;
+
945 }
+
946
+
947 // Make sure we deserialized this field.
+
948 if (!bDeserialized) [[unlikely]] {
+
949 return Error(std::format(
+
950 "the field \"{}\" with type \"{}\" (maybe inherited) has "
+
951 "unsupported for deserialization type",
+
952 pField->getName(),
+
953 pField->getCanonicalTypeName()));
+
954 }
+
955
+
956 // Notify about deserialization.
+
957 pFieldObject->onAfterDeserialized();
+
958 } else [[unlikely]] {
+
959 return Error(std::format("unhandled case on field \"{}\"", pField->getName()));
+
960 }
+
961
+
962 continue;
+
963 }
+
964
+
965 // Deserialize field value.
+
966 bool bFoundSerializer = false;
+
967 for (const auto& pSerializer : vFieldSerializers) {
+
968 if (pSerializer->isFieldTypeSupported(pField)) {
+
969 bFoundSerializer = true;
+
970 auto optionalError = pSerializer->deserializeField(
+
971 &tomlData,
+
972 pFieldTomlValue,
+
973 pSmartPointerInstance.get(),
+
974 pField,
+
975 sSectionName,
+
976 sEntityId,
+
977 customAttributes);
+
978 if (optionalError.has_value()) [[unlikely]] {
+
979 auto error = optionalError.value();
+
980 error.addCurrentLocationToErrorStack();
+
981 if (pOriginalEntity) {
+
982 Logger::get().error(std::format(
+
983 "an error occurred while deserializing "
+
984 "changed field (this field was not deserialized), error: {}",
+
985 error.getFullErrorMessage()));
+
986 } else {
+
987 return error;
+
988 }
+
989 }
+
990 }
+
991 }
+
992
+
993 if (!bFoundSerializer) [[unlikely]] {
+ +
995 std::format("unable to find a deserializer that supports field \"{}\"", sFieldName));
+
996 }
+
997 }
+
998
+
999 if (optionalPathToFile.has_value() &&
+
1000 optionalPathToFile->string().starts_with(
+
1001 ProjectPaths::getPathToResDirectory(ResourceDirectory::ROOT).string())) {
+
1002 // File is located in the `res` directory, save a relative path to the `res` directory.
+
1003 auto sRelativePath = std::filesystem::relative(
+
1004 optionalPathToFile->string(),
+
1005 ProjectPaths::getPathToResDirectory(ResourceDirectory::ROOT))
+
1006 .string();
+
1007
+
1008 // Replace all '\' characters with '/' just to be consistent.
+
1009 std::replace(sRelativePath.begin(), sRelativePath.end(), '\\', '/');
+
1010
+
1011 // Remove the forward slash at the beginning (if exists).
+
1012 if (sRelativePath.starts_with('/')) {
+
1013 sRelativePath = sRelativePath.substr(1);
+
1014 }
+
1015
+
1016 // Double check that everything is correct.
+
1017 const auto pathToOriginalFile =
+
1018 ProjectPaths::getPathToResDirectory(ResourceDirectory::ROOT) / sRelativePath;
+
1019 if (!std::filesystem::exists(pathToOriginalFile)) [[unlikely]] {
+
1020 return Error(std::format(
+
1021 "failed to save the relative path to the `res` directory for the file at \"{}\", "
+
1022 "reason: constructed path \"{}\" does not exist",
+
1023 optionalPathToFile->string(),
+
1024 pathToOriginalFile.string()));
+
1025 }
+
1026
+
1027 // Save deserialization path.
+
1028 pSmartPointerInstance->pathDeserializedFromRelativeToRes = {sRelativePath, sEntityId};
+
1029 }
+
1030
+
1031 // Notify about deserialization finished.
+
1032 Serializable* pTarget = dynamic_cast<Serializable*>(pSmartPointerInstance.get());
+
1033 pTarget->onAfterDeserialized();
+
1034
+
1035 return pSmartPointerInstance;
+
1036 }
+
1037
+
1038}; // namespace ne RNAMESPACE()
+
1039
+
1040File_Serializable_GENERATED
+
Definition: Error.h:27
+
static std::vector< IFieldSerializer * > getFieldSerializers()
Definition: FieldSerializerManager.cpp:58
+
static std::vector< IBinaryFieldSerializer * > getBinaryFieldSerializers()
Definition: FieldSerializerManager.cpp:69
+
Definition: GuidProperty.h:30
+
void error(std::string_view sText, const std::source_location location=std::source_location::current()) const
Definition: Logger.cpp:75
+
static Logger & get()
Definition: Logger.cpp:41
+
void warn(std::string_view sText, const std::source_location location=std::source_location::current()) const
Definition: Logger.cpp:62
+
static std::filesystem::path getPathToResDirectory()
Definition: ProjectPaths.cpp:123
+
Definition: SerializableObjectFieldSerializer.h:19
+
static bool isFieldSerializable(rfk::Field const &field)
Definition: SerializableObjectFieldSerializer.cpp:393
+
static bool isDerivedFromSerializable(rfk::Archetype const *pArchetype)
Definition: SerializableObjectFieldSerializer.cpp:410
+
static std::optional< Error > cloneSerializableObject(Serializable *pFrom, Serializable *pTo, bool bNotifyAboutDeserialized)
Definition: SerializableObjectFieldSerializer.cpp:52
+
Definition: Serializable.h:113
+
virtual void onAfterDeserialized()
Definition: Serializable.h:421
+
static std::variant< SmartPointer, Error > deserialize(const std::filesystem::path &pathToFile)
Definition: Serializable.h:521
+
static std::variant< std::vector< DeserializedObjectInformation< SmartPointer > >, Error > deserializeMultiple(std::filesystem::path pathToFile)
Definition: Serializable.h:550
+
std::optional< std::pair< std::string, std::string > > pathDeserializedFromRelativeToRes
Definition: Serializable.h:497
+
static std::optional< Error > resolvePathToToml(std::filesystem::path &pathToFile)
Definition: Serializable.cpp:651
+
static std::variant< SmartPointer, Error > deserializeFromSection(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sSectionName, const std::string &sTypeGuid, const std::string &sEntityId, const std::optional< std::filesystem::path > &optionalPathToFile)
Definition: Serializable.h:712
+
Definition: SerializeProperty.h:42
+
Definition: Serializable.h:77
+
SmartPointer pObject
Definition: Serializable.h:98
+
DeserializedObjectInformation(SmartPointer pObject, std::string sObjectUniqueId, std::unordered_map< std::string, std::string > customAttributes)
Definition: Serializable.h:88
+
std::unordered_map< std::string, std::string > customAttributes
Definition: Serializable.h:104
+
std::string sObjectUniqueId
Definition: Serializable.h:101
+
Definition: Serializable.h:31
+
Serializable * pObject
Definition: Serializable.h:57
+
std::string sObjectUniqueId
Definition: Serializable.h:67
+
Serializable * pOriginalObject
Definition: Serializable.h:64
+
std::unordered_map< std::string, std::string > customAttributes
Definition: Serializable.h:70
+
SerializableObjectInformation(Serializable *pObject, const std::string &sObjectUniqueId, const std::unordered_map< std::string, std::string > &customAttributes={}, Serializable *pOriginalObject=nullptr)
Definition: Serializable.h:45
+
+
+ + + + diff --git a/SerializeProperty_8h_source.html b/SerializeProperty_8h_source.html new file mode 100644 index 000000000..03d4f4d34 --- /dev/null +++ b/SerializeProperty_8h_source.html @@ -0,0 +1,143 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/io/properties/SerializeProperty.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SerializeProperty.h
+
+
+
1#pragma once
+
2
+
3// External.
+
4#include "Refureku/Properties/PropertySettings.h"
+
5
+
6#include "SerializeProperty.generated.h"
+
7
+
8namespace ne RNAMESPACE() {
+
14 enum FieldSerializationType {
+
15 FST_WITH_OWNER,
+
16 FST_AS_EXTERNAL_FILE,
+
23 FST_AS_EXTERNAL_BINARY_FILE,
+
28 };
+
29
+
41 class RCLASS(rfk::PropertySettings(rfk::EEntityKind::Field, false, false)) Serialize
+
42 : public rfk::Property {
+
43 public:
+
44 Serialize() : Serialize(FieldSerializationType::FST_WITH_OWNER) {}
+
45
+
46 virtual ~Serialize() override = default;
+
47
+
53 Serialize(FieldSerializationType serializationType);
+
54
+
60 FieldSerializationType getSerializationType() const;
+
61
+
62 private:
+
64 FieldSerializationType serializationType;
+
65
+
66 ne_Serialize_GENERATED
+
67 };
+
68} // namespace ne RNAMESPACE()
+
69
+
70File_SerializeProperty_GENERATED
+
Definition: SerializeProperty.h:42
+
FieldSerializationType serializationType
Definition: SerializeProperty.h:64
+
+
+ + + + diff --git a/ShaderArrayIndexManager_8h_source.html b/ShaderArrayIndexManager_8h_source.html new file mode 100644 index 000000000..8be0c1c7f --- /dev/null +++ b/ShaderArrayIndexManager_8h_source.html @@ -0,0 +1,192 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/resource/ShaderArrayIndexManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShaderArrayIndexManager.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <string>
+
5#include <queue>
+
6#include <mutex>
+
7#include <memory>
+
8
+
9namespace ne {
+
10 class ShaderArrayIndexManager;
+
11
+ + +
19
+
20 public:
+
21 ShaderArrayIndex() = delete;
+
22
+
23 ShaderArrayIndex(const ShaderArrayIndex&) = delete;
+
24 ShaderArrayIndex& operator=(const ShaderArrayIndex&) = delete;
+
25
+ +
27 ShaderArrayIndex& operator=(ShaderArrayIndex&&) = delete;
+
28
+
34 unsigned int getActualIndex() const;
+
35
+ +
38
+
39 private:
+ +
47
+ +
50
+ +
53 };
+
54
+ +
62 // Indices notify the manager in their destructor about no longer being used.
+
63 friend class ShaderArrayIndex;
+
64
+
65 public:
+
66 ShaderArrayIndexManager() = delete;
+
67
+
77 ShaderArrayIndexManager(const std::string& sName, unsigned int iArraySize);
+
78
+ +
81
+
87 std::unique_ptr<ShaderArrayIndex> reserveIndex();
+
88
+
89 private:
+
95 void onIndexNoLongerUsed(unsigned int iIndex);
+
96
+
98 struct InternalData {
+
99 InternalData() = default;
+
100
+
102 std::queue<unsigned int> noLongerUsedIndices;
+
103
+
105 unsigned int iNextFreeIndex = 0;
+
106
+ +
112 };
+
113
+
115 std::pair<std::recursive_mutex, InternalData> mtxData;
+
116
+
121 const unsigned int iArraySize = 0;
+
122
+
124 const std::string sName;
+
125 };
+
126}
+
Definition: ShaderArrayIndexManager.h:61
+
std::pair< std::recursive_mutex, InternalData > mtxData
Definition: ShaderArrayIndexManager.h:115
+
const std::string sName
Definition: ShaderArrayIndexManager.h:124
+
const unsigned int iArraySize
Definition: ShaderArrayIndexManager.h:121
+
~ShaderArrayIndexManager()
Definition: ShaderArrayIndexManager.cpp:19
+
std::unique_ptr< ShaderArrayIndex > reserveIndex()
Definition: ShaderArrayIndexManager.cpp:36
+
void onIndexNoLongerUsed(unsigned int iIndex)
Definition: ShaderArrayIndexManager.cpp:77
+
Definition: ShaderArrayIndexManager.h:16
+
unsigned int getActualIndex() const
Definition: ShaderArrayIndexManager.cpp:103
+
~ShaderArrayIndex()
Definition: ShaderArrayIndexManager.cpp:105
+
ShaderArrayIndexManager * pManager
Definition: ShaderArrayIndexManager.h:49
+
unsigned int iIndexIntoShaderArray
Definition: ShaderArrayIndexManager.h:52
+
Definition: ShaderArrayIndexManager.h:98
+
std::queue< unsigned int > noLongerUsedIndices
Definition: ShaderArrayIndexManager.h:102
+
unsigned int iNextFreeIndex
Definition: ShaderArrayIndexManager.h:105
+
size_t iActiveIndexCount
Definition: ShaderArrayIndexManager.h:111
+
+
+ + + + diff --git a/ShaderCacheManager_8h_source.html b/ShaderCacheManager_8h_source.html new file mode 100644 index 000000000..7f794fe2a --- /dev/null +++ b/ShaderCacheManager_8h_source.html @@ -0,0 +1,181 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/cache/ShaderCacheManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShaderCacheManager.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <memory>
+
5#include <string>
+
6#include <optional>
+
7
+
8// Custom.
+
9#include "misc/Error.h"
+
10#include "io/ConfigManager.h"
+
11
+
12namespace ne {
+
13 class Renderer;
+
14
+ +
17 // Only shader manager is expected to create this manager.
+
18 friend class ShaderManager;
+
19
+
20 public:
+
21 virtual ~ShaderCacheManager() = default;
+
22
+
23 ShaderCacheManager() = delete;
+ +
25 ShaderCacheManager& operator=(const ShaderCacheManager&) = delete;
+
26
+
37 [[nodiscard]] std::optional<Error> refreshShaderCache();
+
38
+
39 protected:
+ +
46
+
57 [[nodiscard]] virtual std::optional<std::string>
+ +
59
+
67 [[nodiscard]] virtual std::optional<Error>
+ +
69
+
70 private:
+ +
74 static constexpr std::string_view sIsReleaseBuild = "is_release_build";
+
75
+
77 static constexpr std::string_view sRenderer = "renderer";
+
78
+
80 static constexpr std::string_view sShaderParserVersion = "shader_parser_version";
+
81 };
+
82
+
90 static std::unique_ptr<ShaderCacheManager> create(Renderer* pRenderer);
+
91
+
98 [[nodiscard]] std::optional<Error> createNewShaderCache();
+
99
+
109 [[nodiscard]] std::optional<std::string>
+
110 isGlobalShaderCacheOutdated(const ConfigManager& cacheConfig);
+
111
+
113 Renderer* const pRenderer = nullptr;
+
114
+
122 static constexpr std::string_view sGlobalShaderCacheInfoFileName = ".shader_cache.toml";
+
123 };
+
124}
+
Definition: ConfigManager.h:27
+
Definition: Renderer.h:44
+
Definition: ShaderCacheManager.h:16
+
virtual std::optional< Error > writeLanguageSpecificParameters(ConfigManager &cacheConfig)=0
+
virtual std::optional< std::string > isLanguageSpecificGlobalCacheOutdated(const ConfigManager &cacheConfig)=0
+
std::optional< Error > refreshShaderCache()
Definition: ShaderCacheManager.cpp:34
+
std::optional< Error > createNewShaderCache()
Definition: ShaderCacheManager.cpp:91
+
static constexpr std::string_view sGlobalShaderCacheInfoFileName
Definition: ShaderCacheManager.h:122
+
static std::unique_ptr< ShaderCacheManager > create(Renderer *pRenderer)
Definition: ShaderCacheManager.cpp:14
+
std::optional< std::string > isGlobalShaderCacheOutdated(const ConfigManager &cacheConfig)
Definition: ShaderCacheManager.cpp:142
+
Renderer *const pRenderer
Definition: ShaderCacheManager.h:113
+
Definition: ShaderManager.h:25
+ +
static constexpr std::string_view sRenderer
Definition: ShaderCacheManager.h:77
+
static constexpr std::string_view sShaderParserVersion
Definition: ShaderCacheManager.h:80
+
static constexpr std::string_view sIsReleaseBuild
Definition: ShaderCacheManager.h:74
+
+
+ + + + diff --git a/ShaderCpuWriteResourceBindingManager_8h_source.html b/ShaderCpuWriteResourceBindingManager_8h_source.html new file mode 100644 index 000000000..2dd5e66ea --- /dev/null +++ b/ShaderCpuWriteResourceBindingManager_8h_source.html @@ -0,0 +1,197 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/resource/binding/cpuwrite/ShaderCpuWriteResourceBindingManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShaderCpuWriteResourceBindingManager.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <set>
+
5#include <memory>
+
6#include <mutex>
+
7#include <array>
+
8#include <unordered_map>
+
9#include <unordered_set>
+
10
+
11// Custom.
+
12#include "shader/general/resource/binding/cpuwrite/ShaderCpuWriteResourceBinding.h"
+
13#include "shader/general/resource/binding/cpuwrite/ShaderCpuWriteResourceBindingUniquePtr.h"
+
14#include "render/general/resource/frame/FrameResourceManager.h"
+
15
+
16namespace ne {
+
17 class Renderer;
+
18 class Pipeline;
+
19
+ +
22 // Only renderer should be allowed to create this manager.
+
23 friend class Renderer;
+
24
+
25 // Unique pointers will notify the manager before destruction.
+ +
27
+
28 public:
+
30 struct Resources {
+
37 std::unordered_map<ShaderCpuWriteResourceBinding*, std::unique_ptr<ShaderCpuWriteResourceBinding>>
+ +
39
+
41 std::array<
+
42 std::unordered_set<ShaderCpuWriteResourceBinding*>,
+ + +
45 };
+
46
+ +
48
+ + +
51
+ +
54
+
72 std::variant<ShaderCpuWriteResourceBindingUniquePtr, Error> createShaderCpuWriteResource(
+
73 const std::string& sShaderResourceName,
+
74 const std::string& sResourceAdditionalInfo,
+
75 size_t iResourceDataSizeInBytes,
+
76 const std::unordered_set<Pipeline*>& pipelinesToUse,
+
77 const std::function<void*()>& onStartedUpdatingResource,
+
78 const std::function<void()>& onFinishedUpdatingResource);
+
79
+
87 void updateResources(size_t iCurrentFrameResourceIndex);
+
88
+ +
96
+
102 std::pair<std::recursive_mutex, Resources>* getResources();
+
103
+
104 private:
+ +
111
+
119 std::variant<ShaderCpuWriteResourceBindingUniquePtr, Error>
+
120 handleResourceCreation(std::variant<std::unique_ptr<ShaderCpuWriteResourceBinding>, Error> result);
+
121
+
128 void destroyResource(ShaderCpuWriteResourceBinding* pResourceToDestroy);
+
129
+
131 Renderer* pRenderer = nullptr;
+
132
+
134 std::pair<std::recursive_mutex, Resources> mtxShaderCpuWriteResources;
+
135 };
+
136} // namespace ne
+
Definition: Error.h:27
+
static constexpr unsigned int getFrameResourceCount()
Definition: FrameResourceManager.h:74
+
Definition: Renderer.h:44
+
Definition: ShaderCpuWriteResourceBindingManager.h:21
+
void updateResources(size_t iCurrentFrameResourceIndex)
Definition: ShaderCpuWriteResourceBindingManager.cpp:54
+
void destroyResource(ShaderCpuWriteResourceBinding *pResourceToDestroy)
Definition: ShaderCpuWriteResourceBindingManager.cpp:99
+
void markResourceAsNeedsUpdate(ShaderCpuWriteResourceBinding *pResourceToDestroy)
Definition: ShaderCpuWriteResourceBindingManager.cpp:75
+
Renderer * pRenderer
Definition: ShaderCpuWriteResourceBindingManager.h:131
+
std::pair< std::recursive_mutex, Resources > mtxShaderCpuWriteResources
Definition: ShaderCpuWriteResourceBindingManager.h:134
+
~ShaderCpuWriteResourceBindingManager()
Definition: ShaderCpuWriteResourceBindingManager.cpp:128
+
std::variant< ShaderCpuWriteResourceBindingUniquePtr, Error > createShaderCpuWriteResource(const std::string &sShaderResourceName, const std::string &sResourceAdditionalInfo, size_t iResourceDataSizeInBytes, const std::unordered_set< Pipeline * > &pipelinesToUse, const std::function< void *()> &onStartedUpdatingResource, const std::function< void()> &onFinishedUpdatingResource)
Definition: ShaderCpuWriteResourceBindingManager.cpp:11
+
std::pair< std::recursive_mutex, Resources > * getResources()
Definition: ShaderCpuWriteResourceBindingManager.cpp:120
+
std::variant< ShaderCpuWriteResourceBindingUniquePtr, Error > handleResourceCreation(std::variant< std::unique_ptr< ShaderCpuWriteResourceBinding >, Error > result)
Definition: ShaderCpuWriteResourceBindingManager.cpp:29
+
Definition: ShaderCpuWriteResourceBindingUniquePtr.h:14
+
Definition: ShaderCpuWriteResourceBinding.h:25
+
Definition: ShaderCpuWriteResourceBindingManager.h:30
+
std::array< std::unordered_set< ShaderCpuWriteResourceBinding * >, FrameResourceManager::getFrameResourceCount()> vToBeUpdated
Definition: ShaderCpuWriteResourceBindingManager.h:44
+
std::unordered_map< ShaderCpuWriteResourceBinding *, std::unique_ptr< ShaderCpuWriteResourceBinding > > all
Definition: ShaderCpuWriteResourceBindingManager.h:38
+
+
+ + + + diff --git a/ShaderCpuWriteResourceBindingUniquePtr_8h_source.html b/ShaderCpuWriteResourceBindingUniquePtr_8h_source.html new file mode 100644 index 000000000..454901eac --- /dev/null +++ b/ShaderCpuWriteResourceBindingUniquePtr_8h_source.html @@ -0,0 +1,152 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/resource/binding/cpuwrite/ShaderCpuWriteResourceBindingUniquePtr.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShaderCpuWriteResourceBindingUniquePtr.h
+
+
+
1#pragma once
+
2
+
3namespace ne {
+
4 class ShaderCpuWriteResourceBindingManager;
+
5 class ShaderCpuWriteResourceBinding;
+
6
+ +
15 // Only manager can create objects of this class.
+ +
17
+
18 public:
+ +
20
+ + +
23 operator=(const ShaderCpuWriteResourceBindingUniquePtr&) = delete;
+
24
+ +
26
+ +
33
+ +
42 operator=(ShaderCpuWriteResourceBindingUniquePtr&& other) noexcept;
+
43
+
48 void markAsNeedsUpdate();
+
49
+ +
56
+
57 private:
+ + +
66
+ +
69
+ +
72 };
+
73} // namespace ne
+
Definition: ShaderCpuWriteResourceBindingManager.h:21
+
Definition: ShaderCpuWriteResourceBindingUniquePtr.h:14
+
ShaderCpuWriteResourceBinding * pResource
Definition: ShaderCpuWriteResourceBindingUniquePtr.h:71
+
ShaderCpuWriteResourceBindingManager * pManager
Definition: ShaderCpuWriteResourceBindingUniquePtr.h:68
+
ShaderCpuWriteResourceBinding * getResource() const
Definition: ShaderCpuWriteResourceBindingUniquePtr.h:55
+
void markAsNeedsUpdate()
Definition: ShaderCpuWriteResourceBindingUniquePtr.cpp:46
+
Definition: ShaderCpuWriteResourceBinding.h:25
+
+
+ + + + diff --git a/ShaderCpuWriteResourceBinding_8h_source.html b/ShaderCpuWriteResourceBinding_8h_source.html new file mode 100644 index 000000000..11f0cb2ad --- /dev/null +++ b/ShaderCpuWriteResourceBinding_8h_source.html @@ -0,0 +1,236 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/resource/binding/cpuwrite/ShaderCpuWriteResourceBinding.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShaderCpuWriteResourceBinding.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <unordered_map>
+
5#include <optional>
+
6#include <variant>
+
7#include <string>
+
8#include <functional>
+
9
+
10// Custom.
+
11#include "render/general/resource/frame/FrameResourceManager.h"
+
12#include "shader/general/resource/cpuwrite/DynamicCpuWriteShaderResourceArray.h"
+
13#include "render/general/pipeline/PipelineShaderConstantsManager.hpp"
+
14#include "shader/general/resource/binding/ShaderResourceBinding.h"
+
15#include "misc/Error.h"
+
16
+
17namespace ne {
+
18 class Renderer;
+
19 class Pipeline;
+
20
+ +
26 // Only manager should be able to create this resource and update data of this resource.
+ +
28
+
29 public:
+
30 virtual ~ShaderCpuWriteResourceBinding() override = default;
+
31
+ +
40 PipelineShaderConstantsManager* pShaderConstantsManager,
+
41 Pipeline* pUsedPipeline,
+
42 size_t iCurrentFrameResourceIndex) {
+
43 // Since pipelines won't change here (because we are inside of the `draw` function)
+
44 // we don't need to lock the mutex here.
+
45
+
46 // Find push constant index of this pipeline.
+
47 const auto offsetIt = mtxUintShaderConstantOffsets.second.find(pUsedPipeline);
+
48
+
49#if defined(DEBUG)
+
50 if (offsetIt == mtxUintShaderConstantOffsets.second.end()) [[unlikely]] {
+
51 Error error(std::format(
+
52 "shader resource \"{}\" was requested to set its push constant "
+
53 "index but this shader resource does not reference the specified pipeline",
+ +
55 mtxUintShaderConstantOffsets.second.size()));
+
56 error.showError();
+
57 throw std::runtime_error(error.getFullErrorMessage());
+
58 }
+
59#endif
+
60
+
61 // Copy value to root/push constants.
+
62 pShaderConstantsManager->copyValueToShaderConstant(
+
63 offsetIt->second, vResourceData[iCurrentFrameResourceIndex]->getIndexIntoArray());
+
64 }
+
65
+
71 inline size_t getResourceDataSizeInBytes() const { return iResourceDataSizeInBytes; }
+
72
+
89 [[nodiscard]] virtual std::optional<Error>
+
90 changeUsedPipelines(const std::unordered_set<Pipeline*>& pipelinesToUse) override;
+
91
+
92 protected:
+
110 static std::variant<std::unique_ptr<ShaderCpuWriteResourceBinding>, Error> create(
+
111 const std::string& sShaderResourceName,
+
112 const std::string& sResourceAdditionalInfo,
+
113 size_t iResourceSizeInBytes,
+
114 const std::unordered_set<Pipeline*>& pipelinesToUse,
+
115 const std::function<void*()>& onStartedUpdatingResource,
+
116 const std::function<void()>& onFinishedUpdatingResource);
+
117
+
127 static std::variant<std::unordered_map<Pipeline*, size_t>, Error>
+ +
129 const std::unordered_set<Pipeline*>& pipelines, const std::string& sFieldName);
+
130
+ +
148 const std::string& sShaderResourceName,
+ +
150 const std::function<void*()>& onStartedUpdatingResource,
+
151 const std::function<void()>& onFinishedUpdatingResource,
+
152 const std::unordered_map<Pipeline*, size_t>& uintShaderConstantOffsets);
+
153
+
163 [[nodiscard]] virtual std::optional<Error> onAfterAllPipelinesRefreshedResources() override;
+
164
+
166 std::pair<std::recursive_mutex, std::unordered_map<Pipeline*, size_t>> mtxUintShaderConstantOffsets;
+
167
+
172 std::array<
+
173 std::unique_ptr<DynamicCpuWriteShaderResourceArraySlot>,
+ + +
176
+
177 private:
+
188 inline void updateResource(size_t iCurrentFrameResourceIndex) {
+
189 void* pDataToCopy = onStartedUpdatingResource();
+
190
+
191 vResourceData[iCurrentFrameResourceIndex]->updateData(pDataToCopy);
+
192
+ +
194 }
+
195
+
201 const std::function<void*()> onStartedUpdatingResource;
+
202
+
204 const std::function<void()> onFinishedUpdatingResource;
+
205
+
207 const size_t iResourceDataSizeInBytes = 0;
+
208 };
+
209}
+
Definition: Error.h:27
+
std::string getFullErrorMessage() const
Definition: Error.cpp:84
+
void showError() const
Definition: Error.cpp:102
+
static constexpr unsigned int getFrameResourceCount()
Definition: FrameResourceManager.h:74
+
Definition: PipelineShaderConstantsManager.hpp:14
+
void copyValueToShaderConstant(size_t iShaderConstantIndex, unsigned int iValueToCopy)
Definition: PipelineShaderConstantsManager.hpp:75
+
Definition: Pipeline.h:20
+
Definition: ShaderCpuWriteResourceBindingManager.h:21
+
Definition: ShaderCpuWriteResourceBinding.h:25
+
const std::function< void *()> onStartedUpdatingResource
Definition: ShaderCpuWriteResourceBinding.h:201
+
void updateResource(size_t iCurrentFrameResourceIndex)
Definition: ShaderCpuWriteResourceBinding.h:188
+
const std::function< void()> onFinishedUpdatingResource
Definition: ShaderCpuWriteResourceBinding.h:204
+
virtual std::optional< Error > onAfterAllPipelinesRefreshedResources() override
Definition: ShaderCpuWriteResourceBinding.cpp:138
+
virtual std::optional< Error > changeUsedPipelines(const std::unordered_set< Pipeline * > &pipelinesToUse) override
Definition: ShaderCpuWriteResourceBinding.cpp:83
+
static std::variant< std::unique_ptr< ShaderCpuWriteResourceBinding >, Error > create(const std::string &sShaderResourceName, const std::string &sResourceAdditionalInfo, size_t iResourceSizeInBytes, const std::unordered_set< Pipeline * > &pipelinesToUse, const std::function< void *()> &onStartedUpdatingResource, const std::function< void()> &onFinishedUpdatingResource)
Definition: ShaderCpuWriteResourceBinding.cpp:12
+
std::array< std::unique_ptr< DynamicCpuWriteShaderResourceArraySlot >, FrameResourceManager::getFrameResourceCount()> vResourceData
Definition: ShaderCpuWriteResourceBinding.h:175
+
const size_t iResourceDataSizeInBytes
Definition: ShaderCpuWriteResourceBinding.h:207
+
size_t getResourceDataSizeInBytes() const
Definition: ShaderCpuWriteResourceBinding.h:71
+
void copyResourceIndexToShaderConstants(PipelineShaderConstantsManager *pShaderConstantsManager, Pipeline *pUsedPipeline, size_t iCurrentFrameResourceIndex)
Definition: ShaderCpuWriteResourceBinding.h:39
+
std::pair< std::recursive_mutex, std::unordered_map< Pipeline *, size_t > > mtxUintShaderConstantOffsets
Definition: ShaderCpuWriteResourceBinding.h:166
+
static std::variant< std::unordered_map< Pipeline *, size_t >, Error > getUintShaderConstantOffsetsFromPipelines(const std::unordered_set< Pipeline * > &pipelines, const std::string &sFieldName)
Definition: ShaderCpuWriteResourceBinding.cpp:100
+
Definition: ShaderResourceBinding.h:27
+
std::string getShaderResourceName() const
Definition: ShaderResourceBinding.cpp:11
+
const std::string sShaderResourceName
Definition: ShaderResourceBinding.h:82
+
+
+ + + + diff --git a/ShaderDescription_8h_source.html b/ShaderDescription_8h_source.html new file mode 100644 index 000000000..37697b6f1 --- /dev/null +++ b/ShaderDescription_8h_source.html @@ -0,0 +1,279 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/shader/ShaderDescription.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShaderDescription.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <filesystem>
+
5
+
6// Custom.
+
7#include "io/ConfigManager.h"
+
8#include "shader/general/format/VertexFormat.h"
+
9
+
10namespace ne {
+
17 enum class ShaderType : int {
+
18 VERTEX_SHADER = 0, //< vertex shader
+
19 FRAGMENT_SHADER = 1, //< pixel/fragment shader
+
20 COMPUTE_SHADER = 2, //< compute shader
+
21 // new types go here...
+
22 // add a test for new type...
+
23 };
+
24
+
28 enum class ShaderCacheInvalidationReason {
+
29 ENTRY_FUNCTION_NAME_CHANGED,
+
30 SHADER_TYPE_CHANGED,
+
31 DEFINED_SHADER_MACROS_CHANGED,
+
32 SHADER_SOURCE_FILE_CHANGED,
+
33 SHADER_INCLUDE_TREE_CONTENT_CHANGED,
+
34 COMPILED_BINARY_CHANGED, //< some binary file was changed or missing
+
35 // add new entry to ShaderCacheInvalidationReasonDescription...
+
36 // add test for new reason...
+
37 };
+
38
+ +
42 inline static const std::unordered_map<ShaderCacheInvalidationReason, const char*>
+ +
44 {ShaderCacheInvalidationReason::ENTRY_FUNCTION_NAME_CHANGED,
+
45 "shader entry function name changed"},
+
46 {ShaderCacheInvalidationReason::SHADER_TYPE_CHANGED, "shader type changed"},
+
47 {ShaderCacheInvalidationReason::DEFINED_SHADER_MACROS_CHANGED,
+
48 "defined shader macros changed"},
+
49 {ShaderCacheInvalidationReason::SHADER_SOURCE_FILE_CHANGED, "shader source file changed"},
+
50 {ShaderCacheInvalidationReason::SHADER_INCLUDE_TREE_CONTENT_CHANGED,
+
51 "shader include tree content changed"},
+
52 {ShaderCacheInvalidationReason::COMPILED_BINARY_CHANGED,
+
53 "previously compiled binary file(s) changed"}};
+
54
+
62 static const char* getDescription(ShaderCacheInvalidationReason reason) {
+
63 const auto it = cacheInvalidationReasons.find(reason);
+
64 if (it == cacheInvalidationReasons.end()) [[unlikely]] {
+
65 throw std::runtime_error("no description is provided for this reason");
+
66 }
+
67 return it->second;
+
68 }
+
69 };
+
70
+ + +
81
+
82 ShaderDescription() = default;
+
83
+ +
100 std::string_view sShaderName,
+
101 const std::filesystem::path& pathToShaderFile,
+
102 ShaderType shaderType,
+
103 std::optional<VertexFormat> vertexFormat,
+
104 const std::string& sShaderEntryFunctionName,
+
105 const std::unordered_map<std::string, std::string>& definedShaderMacros);
+
106
+
112 ShaderDescription(const ShaderDescription& other) noexcept = default;
+
113
+
121 ShaderDescription& operator=(const ShaderDescription& other) noexcept = default;
+
122
+
128 ShaderDescription(ShaderDescription&& other) noexcept = default;
+
129
+
137 ShaderDescription& operator=(ShaderDescription&& other) noexcept = default;
+
138
+
147 static std::string
+
148 getFileHash(const std::filesystem::path& pathToFile, const std::string& sShaderName);
+
149
+
164 std::optional<ShaderCacheInvalidationReason> isSerializableDataEqual(ShaderDescription& other);
+
165
+
171 void from_toml(const toml::value& data); // NOLINT
+
172
+
178 toml::value into_toml() const; // NOLINT
+
179
+
180 // ----------------------------------------------------------------------------------------
+
181
+
182 // ------------------------------- ! if adding new fields ! ------------------------------------
+
183 // if adding new fields:
+
184 // - add to constructor,
+
185 // - if fields should be considered when validating cache,
+
186 // add fields to @ref from_toml, @ref into_toml and @ref isSerializableDataEqual.
+
187 // ----------------------------------------
+
188
+
190 std::unordered_map<std::string, std::string> definedShaderMacros;
+
191
+
193 std::string sShaderName;
+
194
+
196 std::filesystem::path pathToShaderFile;
+
197
+
199 ShaderType shaderType = ShaderType::VERTEX_SHADER;
+
200
+
206 std::optional<VertexFormat> vertexFormat;
+
207
+ +
210
+
211 // ------------------------------- ! if adding new fields ! ------------------------------------
+
212 // if adding new fields:
+
213 // - add to constructor,
+
214 // - if fields should be considered when validating cache,
+
215 // add fields to @ref from_toml, @ref into_toml and @ref isSerializableDataEqual.
+
216 // ----------------------------------------
+
217
+
218 private:
+ +
224
+
232 static std::unordered_map<
+
233 std::string ,
+
234 std::
+
235 unordered_map<std::string , std::string >>
+
236 deserializeShaderIncludeTreeHashes(const toml::value& data);
+
237
+
246 static void serializeShaderIncludeTree(
+
247 const std::filesystem::path& pathToShaderFile,
+
248 std::string& sCurrentIncludeChain,
+
249 toml::value& data);
+
250
+
251 // ----------------------------------------------------------------------------------------
+
252
+
254 std::string sSourceFileHash;
+
255
+
261 std::unordered_map<
+
262 std::string ,
+
263 std::
+
264 unordered_map<std::string , std::string >>
+ +
266
+
267 // ------------------------------- ! if adding new fields ! ------------------------------------
+
268 // if adding new fields:
+
269 // - if fields should be considered when validating cache,
+
270 // add fields to @ref from_toml, @ref into_toml and @ref isSerializableDataEqual.
+
271 // ----------------------------------------
+
272
+
284 static inline std::string_view sInitialIncludeChainText = "includes";
+
285
+
287 inline static auto sConfigurationFileSectionName = "shader_description";
+
288 };
+
289} // namespace ne
+
Definition: ShaderDescription.h:40
+
static const std::unordered_map< ShaderCacheInvalidationReason, const char * > cacheInvalidationReasons
Definition: ShaderDescription.h:43
+
static const char * getDescription(ShaderCacheInvalidationReason reason)
Definition: ShaderDescription.h:62
+
Definition: ShaderDescription.h:74
+
static std::unordered_map< std::string, std::unordered_map< std::string, std::string > > deserializeShaderIncludeTreeHashes(const toml::value &data)
Definition: ShaderDescription.cpp:106
+
ShaderDescription(ShaderDescription &&other) noexcept=default
+
std::string sSourceFileHash
Definition: ShaderDescription.h:254
+
static std::string getFileHash(const std::filesystem::path &pathToFile, const std::string &sShaderName)
Definition: ShaderDescription.cpp:60
+
void calculateShaderIncludeTreeHashes()
Definition: ShaderDescription.cpp:85
+
ShaderDescription & operator=(const ShaderDescription &other) noexcept=default
+
std::string sShaderEntryFunctionName
Definition: ShaderDescription.h:209
+
toml::value into_toml() const
Definition: ShaderDescription.cpp:41
+
ShaderDescription & operator=(ShaderDescription &&other) noexcept=default
+
std::unordered_map< std::string, std::string > definedShaderMacros
Definition: ShaderDescription.h:190
+
static void serializeShaderIncludeTree(const std::filesystem::path &pathToShaderFile, std::string &sCurrentIncludeChain, toml::value &data)
Definition: ShaderDescription.cpp:202
+
std::optional< ShaderCacheInvalidationReason > isSerializableDataEqual(ShaderDescription &other)
Definition: ShaderDescription.cpp:140
+
static std::string_view sInitialIncludeChainText
Definition: ShaderDescription.h:284
+
ShaderType shaderType
Definition: ShaderDescription.h:199
+
static const char * getConfigurationFileSectionName()
Definition: ShaderDescription.h:80
+
ShaderDescription(const ShaderDescription &other) noexcept=default
+
void from_toml(const toml::value &data)
Definition: ShaderDescription.cpp:28
+
std::unordered_map< std::string, std::unordered_map< std::string, std::string > > shaderIncludeTreeHashes
Definition: ShaderDescription.h:265
+
static auto sConfigurationFileSectionName
Definition: ShaderDescription.h:287
+
std::filesystem::path pathToShaderFile
Definition: ShaderDescription.h:196
+
std::optional< VertexFormat > vertexFormat
Definition: ShaderDescription.h:206
+
std::string sShaderName
Definition: ShaderDescription.h:193
+
+
+ + + + diff --git a/ShaderFilesystemPaths_8hpp_source.html b/ShaderFilesystemPaths_8hpp_source.html new file mode 100644 index 000000000..8e63f99e6 --- /dev/null +++ b/ShaderFilesystemPaths_8hpp_source.html @@ -0,0 +1,143 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/ShaderFilesystemPaths.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShaderFilesystemPaths.hpp
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <filesystem>
+
5
+
6// Custom.
+
7#include "misc/ProjectPaths.h"
+
8
+
9namespace ne {
+ +
12 public:
+
13 ShaderFilesystemPaths() = delete;
+ +
15 ShaderFilesystemPaths& operator=(const ShaderFilesystemPaths&) = delete;
+
16
+
23 static std::filesystem::path getPathToShaderCacheDirectory() {
+
24 std::filesystem::path basePath = ProjectPaths::getPathToCompiledShadersDirectory();
+
25
+
26 if (!std::filesystem::exists(basePath)) {
+
27 std::filesystem::create_directories(basePath);
+
28 }
+
29 return basePath;
+
30 }
+
31
+ +
41
+
42 private:
+
44 static inline constexpr auto sShaderCacheBaseFileName = "shader";
+
45 };
+
46} // namespace ne
+
static std::filesystem::path getPathToCompiledShadersDirectory()
Definition: ProjectPaths.cpp:40
+
Definition: ShaderFilesystemPaths.hpp:11
+
static std::filesystem::path getPathToShaderCacheDirectory()
Definition: ShaderFilesystemPaths.hpp:23
+
static constexpr auto sShaderCacheBaseFileName
Definition: ShaderFilesystemPaths.hpp:44
+
static std::string getShaderCacheBaseFileName()
Definition: ShaderFilesystemPaths.hpp:40
+
+
+ + + + diff --git a/ShaderLightArray_8h_source.html b/ShaderLightArray_8h_source.html new file mode 100644 index 000000000..daec913c2 --- /dev/null +++ b/ShaderLightArray_8h_source.html @@ -0,0 +1,286 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/resource/ShaderLightArray.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShaderLightArray.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <memory>
+
5#include <functional>
+
6#include <variant>
+
7#include <optional>
+
8#include <array>
+
9#include <unordered_set>
+
10#include <mutex>
+
11
+
12// Custom.
+
13#include "misc/Error.h"
+
14#include "render/general/resource/UploadBuffer.h"
+
15#include "render/general/resource/frame/FrameResourceManager.h"
+
16#include "shader/general/resource/ShaderLightsInFrustumSingleType.hpp"
+
17
+
18namespace ne {
+
19 class Renderer;
+
20 class Pipeline;
+
21 class ShaderLightArray;
+
22
+ +
28 // Only arrays can create slots.
+
29 friend class ShaderLightArray;
+
30
+
31 public:
+
32 ShaderLightArraySlot() = delete;
+
33
+ +
35 ShaderLightArraySlot& operator=(const ShaderLightArraySlot&) = delete;
+
36
+ +
38
+
46 void markAsNeedsUpdate();
+
47
+
53 inline size_t getCurrentIndexIntoArray() const { return iIndexIntoArray; }
+
54
+
55 private:
+ + + +
70 size_t iIndexIntoArray,
+
71 const std::function<void*()>& startUpdateCallback,
+
72 const std::function<void()>& finishUpdateCallback);
+
73
+ +
76
+
83 Node* const pSpawnedOwnerLightNode = nullptr;
+
84
+
86 const std::function<void*()> startUpdateCallback;
+
87
+
89 const std::function<void()> finishUpdateCallback;
+
90
+
92 size_t iIndexIntoArray = 0;
+
93 };
+
94
+ +
100 // Frees the slot in its destructor.
+
101 friend class ShaderLightArraySlot;
+
102
+
103 // Manager notifies when pipeline updates happen and when we can copy new data of slots that
+
104 // need update.
+ +
106
+
107 // Modifies lights in frustum.
+
108 friend class Renderer;
+
109
+
110 public:
+
112 struct Resources {
+
127 std::array<std::unique_ptr<UploadBuffer>, FrameResourceManager::getFrameResourceCount()>
+ +
129
+ +
132
+
134 std::array<
+
135 std::unordered_set<ShaderLightArraySlot*>,
+ + +
138
+
140 std::unordered_set<ShaderLightArraySlot*> activeSlots;
+
141 };
+
142
+
143 ShaderLightArray() = delete;
+
144
+ +
147
+
164 static std::unique_ptr<ShaderLightArray> create(
+ +
166 const std::string& sShaderLightResourceName,
+
167 const std::function<void(size_t)>& onSizeChanged,
+
168 const std::optional<std::pair<std::function<void(size_t)>, std::string>>&
+
169 optionalOnLightsInCameraFrustumCulled);
+
170
+
192 std::variant<std::unique_ptr<ShaderLightArraySlot>, Error> reserveNewSlot(
+
193 Node* pSpawnedOwnerLightNode,
+
194 size_t iDataSizeInBytes,
+
195 const std::function<void*()>& startUpdateCallback,
+
196 const std::function<void()>& finishUpdateCallback);
+
197
+
205 std::pair<std::recursive_mutex, Resources>* getInternalResources();
+
206
+
212 std::string getShaderResourceName() const;
+
213
+
214 private:
+ + +
234 const std::string& sShaderLightResourceName,
+
235 const std::function<void(size_t)>& onSizeChanged,
+
236 const std::optional<std::function<void(size_t)>>& optionalCallbackOnLightsInCameraFrustumCulled,
+
237 const std::string& sIndicesLightsInFrustumShaderResourceName = "");
+
238
+
246 void onLightsInCameraFrustumCulled(size_t iCurrentFrameResourceIndex);
+
247
+
258 [[nodiscard]] std::optional<Error> recreateArray(bool bIsInitialization = false);
+
259
+
267 void updateSlotsMarkedAsNeedsUpdate(size_t iCurrentFrameResourceIndex);
+
268
+
276 [[nodiscard]] std::optional<Error> updateBindingsInAllPipelines();
+
277
+
288 [[nodiscard]] std::optional<Error> updatePipelineBinding(Pipeline* pPipeline);
+
289
+
295 void freeSlot(ShaderLightArraySlot* pSlot);
+
296
+ +
303
+
305 std::pair<std::recursive_mutex, Resources> mtxResources;
+
306
+
308 Renderer* pRenderer = nullptr;
+
309
+ +
312
+
318 const std::optional<std::function<void(size_t)>> optionalCallbackOnLightsInCameraFrustumCulled;
+
319
+
324 const std::function<void(size_t)> onSizeChanged;
+
325
+
327 const std::string sShaderLightResourceName;
+
328 };
+
329}
+
Definition: Error.h:27
+
static constexpr unsigned int getFrameResourceCount()
Definition: FrameResourceManager.h:74
+
Definition: LightingShaderResourceManager.h:50
+
Definition: Node.h:39
+
Definition: Pipeline.h:20
+
Definition: Renderer.h:44
+
Definition: ShaderLightArray.h:27
+
const std::function< void *()> startUpdateCallback
Definition: ShaderLightArray.h:86
+
void markAsNeedsUpdate()
Definition: ShaderLightArray.cpp:31
+
ShaderLightArray * pArray
Definition: ShaderLightArray.h:75
+
size_t iIndexIntoArray
Definition: ShaderLightArray.h:92
+
Node *const pSpawnedOwnerLightNode
Definition: ShaderLightArray.h:83
+
size_t getCurrentIndexIntoArray() const
Definition: ShaderLightArray.h:53
+
const std::function< void()> finishUpdateCallback
Definition: ShaderLightArray.h:89
+
Definition: ShaderLightArray.h:99
+
std::optional< Error > updateBindingsInAllPipelines()
Definition: ShaderLightArray.cpp:497
+
std::pair< std::recursive_mutex, Resources > mtxResources
Definition: ShaderLightArray.h:305
+
std::string getShaderResourceName() const
Definition: ShaderLightArray.cpp:214
+
std::pair< std::recursive_mutex, Resources > * getInternalResources()
Definition: ShaderLightArray.cpp:210
+
void freeSlot(ShaderLightArraySlot *pSlot)
Definition: ShaderLightArray.cpp:216
+
void markSlotAsNeedsUpdate(ShaderLightArraySlot *pSlot)
Definition: ShaderLightArray.cpp:279
+
void onLightsInCameraFrustumCulled(size_t iCurrentFrameResourceIndex)
Definition: ShaderLightArray.cpp:56
+
std::optional< Error > recreateArray(bool bIsInitialization=false)
Definition: ShaderLightArray.cpp:300
+
void updateSlotsMarkedAsNeedsUpdate(size_t iCurrentFrameResourceIndex)
Definition: ShaderLightArray.cpp:469
+
const std::optional< std::function< void(size_t)> > optionalCallbackOnLightsInCameraFrustumCulled
Definition: ShaderLightArray.h:318
+
std::optional< Error > updatePipelineBinding(Pipeline *pPipeline)
Definition: ShaderLightArray.cpp:543
+
Renderer * pRenderer
Definition: ShaderLightArray.h:308
+
std::variant< std::unique_ptr< ShaderLightArraySlot >, Error > reserveNewSlot(Node *pSpawnedOwnerLightNode, size_t iDataSizeInBytes, const std::function< void *()> &startUpdateCallback, const std::function< void()> &finishUpdateCallback)
Definition: ShaderLightArray.cpp:160
+
~ShaderLightArray()
Definition: ShaderLightArray.cpp:98
+
static std::unique_ptr< ShaderLightArray > create(Renderer *pRenderer, const std::string &sShaderLightResourceName, const std::function< void(size_t)> &onSizeChanged, const std::optional< std::pair< std::function< void(size_t)>, std::string > > &optionalOnLightsInCameraFrustumCulled)
Definition: ShaderLightArray.cpp:138
+
const std::function< void(size_t)> onSizeChanged
Definition: ShaderLightArray.h:324
+
size_t iElementSizeInBytes
Definition: ShaderLightArray.h:311
+
const std::string sShaderLightResourceName
Definition: ShaderLightArray.h:327
+
Definition: ShaderLightArray.h:112
+
std::unordered_set< ShaderLightArraySlot * > activeSlots
Definition: ShaderLightArray.h:140
+
ShaderLightsInFrustumSingleType lightsInFrustum
Definition: ShaderLightArray.h:131
+
std::array< std::unique_ptr< UploadBuffer >, FrameResourceManager::getFrameResourceCount()> vGpuArrayLightDataResources
Definition: ShaderLightArray.h:128
+
std::array< std::unordered_set< ShaderLightArraySlot * >, FrameResourceManager::getFrameResourceCount()> vSlotsToBeUpdated
Definition: ShaderLightArray.h:137
+
Definition: ShaderLightsInFrustumSingleType.hpp:18
+
+
+ + + + diff --git a/ShaderLightsInFrustumSingleType_8hpp_source.html b/ShaderLightsInFrustumSingleType_8hpp_source.html new file mode 100644 index 000000000..83fca28ce --- /dev/null +++ b/ShaderLightsInFrustumSingleType_8hpp_source.html @@ -0,0 +1,138 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/resource/ShaderLightsInFrustumSingleType.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShaderLightsInFrustumSingleType.hpp
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <vector>
+
5#include <array>
+
6#include <string>
+
7
+
8// Custom.
+
9#include "render/general/resource/frame/FrameResourceManager.h"
+
10
+
11namespace ne {
+
12 class Node;
+
13
+ +
29 std::vector<Node*> vShaderLightNodeArray;
+
30
+
35 std::vector<unsigned int> vLightIndicesInFrustum;
+
36
+
46 std::array<std::unique_ptr<UploadBuffer>, FrameResourceManager::getFrameResourceCount()>
+ +
48
+ +
55 };
+
56}
+
static constexpr unsigned int getFrameResourceCount()
Definition: FrameResourceManager.h:74
+
Definition: ShaderLightsInFrustumSingleType.hpp:18
+
std::array< std::unique_ptr< UploadBuffer >, FrameResourceManager::getFrameResourceCount()> vGpuResources
Definition: ShaderLightsInFrustumSingleType.hpp:47
+
std::vector< unsigned int > vLightIndicesInFrustum
Definition: ShaderLightsInFrustumSingleType.hpp:35
+
std::vector< Node * > vShaderLightNodeArray
Definition: ShaderLightsInFrustumSingleType.hpp:29
+
std::string sShaderResourceName
Definition: ShaderLightsInFrustumSingleType.hpp:54
+
+
+ + + + diff --git a/ShaderMacro_8h_source.html b/ShaderMacro_8h_source.html new file mode 100644 index 000000000..c3d73a9fc --- /dev/null +++ b/ShaderMacro_8h_source.html @@ -0,0 +1,212 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/ShaderMacro.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShaderMacro.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <string>
+
5#include <vector>
+
6#include <set>
+
7#include <unordered_map>
+
8
+
9namespace ne {
+
10 class Renderer;
+
11
+
30 enum class ShaderMacro : int {
+
31 PS_USE_DIFFUSE_TEXTURE,
+
32 PS_USE_MATERIAL_TRANSPARENCY,
+
33 VS_SHADOW_MAPPING_PASS,
+
34
+
35 // ... add new entries here...
+
36
+
37 // !! also add new entries to convertShaderMacrosToText !!
+
38 // !! also add new entries to valid configuration combinations below !!
+
39 };
+
40
+
48 std::vector<std::string> convertShaderMacrosToText(const std::set<ShaderMacro>& macros);
+
49
+
57 std::string formatShaderMacros(const std::vector<std::string>& macros);
+
58
+ +
61 private:
+
102 static std::set<std::set<ShaderMacro>> combineConfigurations(
+
103 const std::set<std::set<ShaderMacro>>& constantSets,
+
104 const std::set<std::set<ShaderMacro>>& macroSets,
+
105 const std::set<ShaderMacro>& appendToEachSet,
+
106 bool bIncludeEmptyConfiguration);
+
107
+
118 static std::set<std::set<ShaderMacro>> duplicateAndAppendConfiguration(
+
119 const std::set<std::set<ShaderMacro>>& toDuplicateSets,
+
120 const std::set<ShaderMacro>& toAppendToDuplicated);
+
121
+
135 static inline const std::unordered_map<ShaderMacro, ShaderMacro> dependentMacros = {};
+
136
+
137 public:
+
145 static unsigned long long convertConfigurationToHash(const std::set<ShaderMacro>& configuration);
+
146
+
155 static std::string convertConfigurationToText(const std::set<ShaderMacro>& configuration);
+
156
+ +
169 ShaderMacro macro, const std::set<ShaderMacro>& configuration);
+
170
+
176 static inline const std::set<std::set<ShaderMacro>> validVertexShaderMacroConfigurations = {
+
177 {}, {ShaderMacro::VS_SHADOW_MAPPING_PASS}};
+
178
+
184 static inline const std::set<std::set<ShaderMacro>> validPixelShaderMacroConfigurations =
+ +
186 {{ShaderMacro::PS_USE_DIFFUSE_TEXTURE},
+
187 {ShaderMacro::PS_USE_MATERIAL_TRANSPARENCY},
+
188 {ShaderMacro::PS_USE_DIFFUSE_TEXTURE, ShaderMacro::PS_USE_MATERIAL_TRANSPARENCY}},
+
189 {},
+
190 {},
+
191 true);
+
192
+
194 static inline const std::set<std::set<ShaderMacro>> validComputeShaderMacroConfigurations = {{}};
+
195 };
+
196
+ +
199 public:
+
200 ShaderConfiguration() = delete;
+
201
+ +
208
+ +
217
+
219 std::set<ShaderMacro> currentVertexShaderConfiguration;
+
220
+
222 std::set<ShaderMacro> currentPixelShaderConfiguration;
+
223
+
224 private:
+
226 Renderer* pRenderer = nullptr;
+
227 };
+
228
+ +
238 size_t operator()(std::set<ShaderMacro> const& item) const {
+ +
240 }
+
241 };
+
242} // namespace ne
+
Definition: Renderer.h:44
+
Definition: ShaderMacro.h:198
+
Renderer * pRenderer
Definition: ShaderMacro.h:226
+
std::set< ShaderMacro > currentVertexShaderConfiguration
Definition: ShaderMacro.h:219
+
void updateShaderConfiguration()
Definition: ShaderMacro.cpp:139
+
std::set< ShaderMacro > currentPixelShaderConfiguration
Definition: ShaderMacro.h:222
+
ShaderConfiguration(Renderer *pRenderer)
Definition: ShaderMacro.h:207
+
Definition: ShaderMacro.h:60
+
static std::set< std::set< ShaderMacro > > combineConfigurations(const std::set< std::set< ShaderMacro > > &constantSets, const std::set< std::set< ShaderMacro > > &macroSets, const std::set< ShaderMacro > &appendToEachSet, bool bIncludeEmptyConfiguration)
Definition: ShaderMacro.cpp:32
+
static std::set< std::set< ShaderMacro > > duplicateAndAppendConfiguration(const std::set< std::set< ShaderMacro > > &toDuplicateSets, const std::set< ShaderMacro > &toAppendToDuplicated)
Definition: ShaderMacro.cpp:62
+
static const std::set< std::set< ShaderMacro > > validComputeShaderMacroConfigurations
Definition: ShaderMacro.h:194
+
static const std::unordered_map< ShaderMacro, ShaderMacro > dependentMacros
Definition: ShaderMacro.h:135
+
static unsigned long long convertConfigurationToHash(const std::set< ShaderMacro > &configuration)
Definition: ShaderMacro.cpp:83
+
static bool isMacroShouldBeConsideredInConfiguration(ShaderMacro macro, const std::set< ShaderMacro > &configuration)
Definition: ShaderMacro.cpp:107
+
static const std::set< std::set< ShaderMacro > > validVertexShaderMacroConfigurations
Definition: ShaderMacro.h:176
+
static std::string convertConfigurationToText(const std::set< ShaderMacro > &configuration)
Definition: ShaderMacro.cpp:98
+
static const std::set< std::set< ShaderMacro > > validPixelShaderMacroConfigurations
Definition: ShaderMacro.h:184
+
Definition: ShaderMacro.h:230
+
size_t operator()(std::set< ShaderMacro > const &item) const
Definition: ShaderMacro.h:238
+
+
+ + + + diff --git a/ShaderManager_8h_source.html b/ShaderManager_8h_source.html new file mode 100644 index 000000000..9b6d60f12 --- /dev/null +++ b/ShaderManager_8h_source.html @@ -0,0 +1,229 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/shader/ShaderManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShaderManager.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <string>
+
5#include <unordered_map>
+
6#include <memory>
+
7#include <functional>
+
8#include <mutex>
+
9#include <optional>
+
10#include <atomic>
+
11#include <variant>
+
12#include <array>
+
13
+
14// Custom.
+
15#include "misc/Error.h"
+
16#include "shader/ShaderDescription.h"
+
17#include "shader/general/cache/ShaderCacheManager.h"
+
18#include "shader/general/ShaderPack.h"
+
19
+
20namespace ne {
+
21 class Shader;
+
22 class Renderer;
+
23
+ +
26 // Only ShaderUser should be able to work with shaders.
+
27 friend class ShaderUser;
+
28
+
29 // Renderer sets shaders' configuration.
+
30 friend class Renderer;
+
31
+
32 public:
+ +
39
+
40 ShaderManager() = delete;
+
41 ShaderManager(const ShaderManager&) = delete;
+
42 ShaderManager& operator=(const ShaderManager&) = delete;
+
43
+
44 virtual ~ShaderManager() = default;
+
45
+
84 [[nodiscard]] std::optional<Error> compileShaders(
+
85 std::vector<ShaderDescription> vShadersToCompile,
+
86 const std::function<void(size_t iCompiledShaderCount, size_t iTotalShadersToCompile)>& onProgress,
+
87 const std::function<
+
88 void(ShaderDescription shaderDescription, std::variant<std::string, Error> error)>& onError,
+
89 const std::function<void()>& onCompleted);
+
90
+
99 bool isShaderNameCanBeUsed(const std::string& sShaderName);
+
100
+
127 bool markShaderToBeRemoved(const std::string& sShaderName);
+
128
+ +
134
+
135 protected:
+
147 void
+
148 setRendererConfigurationForShaders(const std::set<ShaderMacro>& configuration, ShaderType shaderType);
+
149
+ +
172 size_t iQueryId,
+
173 const std::shared_ptr<std::atomic<size_t>>& pCompiledShaderCount,
+
174 size_t iTotalShaderCount,
+
175 ShaderDescription shaderDescription,
+
176 const std::function<void(size_t iCompiledShaderCount, size_t iTotalShadersToCompile)>& onProgress,
+
177 const std::function<
+
178 void(ShaderDescription shaderDescription, std::variant<std::string, Error> error)>& onError,
+
179 const std::function<void()>& onCompleted);
+
180
+
191 std::shared_ptr<ShaderPack> findShader(const std::string& sShaderName);
+
192
+
199 void releaseShaderBytecodeIfNotUsed(const std::string& sShaderName);
+
200
+
207 void removeShaderIfMarkedToBeRemoved(const std::string& sShaderName);
+
208
+
218 [[nodiscard]] std::optional<Error> refreshShaderCache();
+
219
+
220 private:
+
222 struct ShaderData {
+
230 std::unordered_map<std::string, std::shared_ptr<ShaderPack>> compiledShaders;
+
231
+
236 std::vector<std::string> vShadersToBeRemoved;
+
237 };
+
238
+
240 std::unique_ptr<ShaderCacheManager> pShaderCacheManager;
+
241
+
243 std::pair<std::recursive_mutex, ShaderData> mtxShaderData;
+
244
+
249 std::atomic<size_t> iTotalCompileShadersQueries = 0;
+
250
+
252 Renderer* const pRenderer = nullptr;
+
253
+
259 static inline const std::array<char, 65> vValidCharactersForShaderName = {
+
260 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
+
261 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
+
262 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
+
263 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', '_', '-'};
+
264
+
266 static inline const size_t iMaximumShaderNameLength = 40;
+
267 };
+
268} // namespace ne
+
Definition: Renderer.h:44
+
Definition: ShaderManager.h:25
+
bool markShaderToBeRemoved(const std::string &sShaderName)
Definition: ShaderManager.cpp:106
+
void performSelfValidation()
Definition: ShaderManager.cpp:136
+
std::unique_ptr< ShaderCacheManager > pShaderCacheManager
Definition: ShaderManager.h:240
+
void compileShaderTask(size_t iQueryId, const std::shared_ptr< std::atomic< size_t > > &pCompiledShaderCount, size_t iTotalShaderCount, ShaderDescription shaderDescription, const std::function< void(size_t iCompiledShaderCount, size_t iTotalShadersToCompile)> &onProgress, const std::function< void(ShaderDescription shaderDescription, std::variant< std::string, Error > error)> &onError, const std::function< void()> &onCompleted)
Definition: ShaderManager.cpp:329
+
static const size_t iMaximumShaderNameLength
Definition: ShaderManager.h:266
+
static const std::array< char, 65 > vValidCharactersForShaderName
Definition: ShaderManager.h:259
+
std::atomic< size_t > iTotalCompileShadersQueries
Definition: ShaderManager.h:249
+
std::shared_ptr< ShaderPack > findShader(const std::string &sShaderName)
Definition: ShaderManager.cpp:24
+
void setRendererConfigurationForShaders(const std::set< ShaderMacro > &configuration, ShaderType shaderType)
Definition: ShaderManager.cpp:232
+
Renderer *const pRenderer
Definition: ShaderManager.h:252
+
bool isShaderNameCanBeUsed(const std::string &sShaderName)
Definition: ShaderManager.cpp:98
+
std::optional< Error > compileShaders(std::vector< ShaderDescription > vShadersToCompile, const std::function< void(size_t iCompiledShaderCount, size_t iTotalShadersToCompile)> &onProgress, const std::function< void(ShaderDescription shaderDescription, std::variant< std::string, Error > error)> &onError, const std::function< void()> &onCompleted)
Definition: ShaderManager.cpp:243
+
void removeShaderIfMarkedToBeRemoved(const std::string &sShaderName)
Definition: ShaderManager.cpp:56
+
std::pair< std::recursive_mutex, ShaderData > mtxShaderData
Definition: ShaderManager.h:243
+
void releaseShaderBytecodeIfNotUsed(const std::string &sShaderName)
Definition: ShaderManager.cpp:36
+
std::optional< Error > refreshShaderCache()
Definition: ShaderManager.cpp:86
+
Definition: ShaderUser.h:20
+
Definition: ShaderDescription.h:74
+
Definition: ShaderManager.h:222
+
std::unordered_map< std::string, std::shared_ptr< ShaderPack > > compiledShaders
Definition: ShaderManager.h:230
+
std::vector< std::string > vShadersToBeRemoved
Definition: ShaderManager.h:236
+
+
+ + + + diff --git a/ShaderPack_8h_source.html b/ShaderPack_8h_source.html new file mode 100644 index 000000000..7fc4f9329 --- /dev/null +++ b/ShaderPack_8h_source.html @@ -0,0 +1,206 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/ShaderPack.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShaderPack.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <mutex>
+
5#include <unordered_map>
+
6#include <memory>
+
7#include <optional>
+
8#include <string>
+
9
+
10// Custom.
+
11#include "shader/ShaderDescription.h"
+
12#include "shader/general/ShaderMacro.h"
+
13
+
14namespace ne {
+
15 class Renderer;
+
16 class Shader;
+
17
+
22 class ShaderPack {
+
23 // Shader manager can change shader pack configuration (to tell what shader should be currently used).
+
24 friend class ShaderManager;
+
25
+
26 public:
+ +
29 InternalResources() = default;
+
30
+ +
33
+
35 std::set<ShaderMacro> renderConfiguration;
+
36
+
38 std::unordered_map<std::set<ShaderMacro>, std::shared_ptr<Shader>, ShaderMacroSetHash>
+ +
40 };
+
41
+
42 ShaderPack() = delete;
+
43 ShaderPack(const ShaderPack&) = delete;
+
44 ShaderPack& operator=(const ShaderPack&) = delete;
+
45
+
46 virtual ~ShaderPack() = default;
+
47
+
58 static std::variant<std::shared_ptr<ShaderPack>, std::string, Error>
+
59 compileShaderPack(Renderer* pRenderer, const ShaderDescription& shaderDescription);
+
60
+
73 static std::variant<std::shared_ptr<ShaderPack>, Error> createFromCache(
+
74 Renderer* pRenderer,
+
75 const ShaderDescription& shaderDescription,
+
76 std::optional<ShaderCacheInvalidationReason>& cacheInvalidationReason);
+
77
+ +
87
+
113 std::shared_ptr<Shader> getShader(
+
114 const std::set<ShaderMacro>& additionalConfiguration,
+
115 std::set<ShaderMacro>& fullShaderConfiguration);
+
116
+
122 std::string getShaderName() const;
+
123
+
129 ShaderType getShaderType();
+
130
+
136 std::pair<std::mutex, InternalResources>* getInternalResources();
+
137
+
138 private:
+ +
147 ShaderDescription& description,
+
148 const std::set<ShaderMacro>& shaderConfigurationMacros,
+
149 Renderer* pRenderer);
+
150
+
157 ShaderPack(const std::string& sShaderName, ShaderType shaderType);
+
158
+
169 void setRendererConfiguration(const std::set<ShaderMacro>& renderConfiguration);
+
170
+
172 std::pair<std::mutex, InternalResources> mtxInternalResources;
+
173
+
175 std::string sShaderName;
+
176
+
178 ShaderType shaderType;
+
179 };
+
180} // namespace ne
+
Definition: Error.h:27
+
Definition: Renderer.h:44
+
Definition: ShaderManager.h:25
+
Definition: ShaderPack.h:22
+
static std::variant< std::shared_ptr< ShaderPack >, std::string, Error > compileShaderPack(Renderer *pRenderer, const ShaderDescription &shaderDescription)
Definition: ShaderPack.cpp:96
+
std::pair< std::mutex, InternalResources > mtxInternalResources
Definition: ShaderPack.h:172
+
bool releaseShaderPackDataFromMemoryIfLoaded()
Definition: ShaderPack.cpp:171
+
std::string getShaderName() const
Definition: ShaderPack.cpp:240
+
ShaderType shaderType
Definition: ShaderPack.h:178
+
void setRendererConfiguration(const std::set< ShaderMacro > &renderConfiguration)
Definition: ShaderPack.cpp:154
+
std::string sShaderName
Definition: ShaderPack.h:175
+
ShaderType getShaderType()
Definition: ShaderPack.cpp:242
+
std::shared_ptr< Shader > getShader(const std::set< ShaderMacro > &additionalConfiguration, std::set< ShaderMacro > &fullShaderConfiguration)
Definition: ShaderPack.cpp:184
+
std::pair< std::mutex, InternalResources > * getInternalResources()
Definition: ShaderPack.cpp:244
+
static void addEngineMacrosToShaderDescription(ShaderDescription &description, const std::set< ShaderMacro > &shaderConfigurationMacros, Renderer *pRenderer)
Definition: ShaderPack.cpp:248
+
static std::variant< std::shared_ptr< ShaderPack >, Error > createFromCache(Renderer *pRenderer, const ShaderDescription &shaderDescription, std::optional< ShaderCacheInvalidationReason > &cacheInvalidationReason)
Definition: ShaderPack.cpp:15
+
Definition: ShaderDescription.h:74
+
Definition: ShaderMacro.h:230
+
Definition: ShaderPack.h:28
+
std::set< ShaderMacro > renderConfiguration
Definition: ShaderPack.h:35
+
std::unordered_map< std::set< ShaderMacro >, std::shared_ptr< Shader >, ShaderMacroSetHash > shadersInPack
Definition: ShaderPack.h:39
+
bool bIsRenderConfigurationSet
Definition: ShaderPack.h:32
+
+
+ + + + diff --git a/ShaderResourceBinding_8h_source.html b/ShaderResourceBinding_8h_source.html new file mode 100644 index 000000000..96eb0a377 --- /dev/null +++ b/ShaderResourceBinding_8h_source.html @@ -0,0 +1,166 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/resource/binding/ShaderResourceBinding.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShaderResourceBinding.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <string>
+
5#include <memory>
+
6#include <unordered_set>
+
7#include <optional>
+
8
+
9// Custom.
+
10#include "material/TextureManager.h"
+
11#include "misc/Error.h"
+
12
+
13namespace ne {
+
14 class Pipeline;
+
15 class GpuResource;
+
16 class UploadBuffer;
+
17 class ShaderCpuWriteResourceBindingManager;
+
18
+ +
28 // Only pipeline manager is expected to call `onAfterAllPipelinesRefreshedResources`.
+
29 friend class PipelineManager;
+
30
+
31 public:
+
32 virtual ~ShaderResourceBindingBase() = default;
+
33
+
50 [[nodiscard]] virtual std::optional<Error>
+
51 changeUsedPipelines(const std::unordered_set<Pipeline*>& pipelinesToUse) = 0;
+
52
+
58 std::string getShaderResourceName() const;
+
59
+
60 protected:
+ +
68
+
78 [[nodiscard]] virtual std::optional<Error> onAfterAllPipelinesRefreshedResources() = 0;
+
79
+
80 private:
+
82 const std::string sShaderResourceName;
+
83 };
+
84
+ +
87 public:
+
88 virtual ~ShaderTextureResourceBinding() override = default;
+
89
+
101 [[nodiscard]] virtual std::optional<Error>
+
102 useNewTexture(std::unique_ptr<TextureHandle> pTextureToUse) = 0;
+
103
+
104 protected:
+ +
112 };
+
113} // namespace ne
+
Definition: PipelineManager.h:98
+
Definition: ShaderResourceBinding.h:27
+
std::string getShaderResourceName() const
Definition: ShaderResourceBinding.cpp:11
+
virtual std::optional< Error > changeUsedPipelines(const std::unordered_set< Pipeline * > &pipelinesToUse)=0
+
const std::string sShaderResourceName
Definition: ShaderResourceBinding.h:82
+
virtual std::optional< Error > onAfterAllPipelinesRefreshedResources()=0
+
Definition: ShaderResourceBinding.h:86
+
virtual std::optional< Error > useNewTexture(std::unique_ptr< TextureHandle > pTextureToUse)=0
+
+
+ + + + diff --git a/ShaderTextureResourceBindingManager_8h_source.html b/ShaderTextureResourceBindingManager_8h_source.html new file mode 100644 index 000000000..ca2711b0d --- /dev/null +++ b/ShaderTextureResourceBindingManager_8h_source.html @@ -0,0 +1,177 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/resource/binding/texture/ShaderTextureResourceBindingManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShaderTextureResourceBindingManager.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <memory>
+
5#include <mutex>
+
6#include <unordered_map>
+
7#include <unordered_set>
+
8
+
9// Custom.
+
10#include "shader/general/resource/binding/ShaderResourceBinding.h"
+
11#include "shader/general/resource/binding/texture/ShaderTextureResourceBindingUniquePtr.h"
+
12
+
13namespace ne {
+
14 class Renderer;
+
15
+ +
28 // Only renderer should be allowed to create this manager.
+
29 friend class Renderer;
+
30
+
31 // Unique pointers will notify the manager before destruction.
+ +
33
+
34 public:
+ +
36
+ + +
39
+ +
42
+
55 std::variant<ShaderTextureResourceBindingUniquePtr, Error> createShaderTextureResource(
+
56 const std::string& sShaderResourceName,
+
57 const std::string& sResourceAdditionalInfo,
+
58 const std::unordered_set<Pipeline*>& pipelinesToUse,
+
59 std::unique_ptr<TextureHandle> pTextureToUse);
+
60
+
68 std::pair<
+
69 std::recursive_mutex,
+
70 std::unordered_map<ShaderTextureResourceBinding*, std::unique_ptr<ShaderTextureResourceBinding>>>*
+ +
72
+
73 private:
+ +
80
+
88 std::variant<ShaderTextureResourceBindingUniquePtr, Error>
+
89 handleResourceCreation(std::variant<std::unique_ptr<ShaderTextureResourceBinding>, Error> result);
+
90
+
97 void destroyResource(ShaderTextureResourceBinding* pResourceToDestroy);
+
98
+
100 Renderer* pRenderer = nullptr;
+
101
+
108 std::pair<
+
109 std::recursive_mutex,
+
110 std::unordered_map<ShaderTextureResourceBinding*, std::unique_ptr<ShaderTextureResourceBinding>>>
+ +
112 };
+
113} // namespace ne
+
Definition: Error.h:27
+
Definition: Renderer.h:44
+
Definition: ShaderTextureResourceBindingManager.h:27
+
std::pair< std::recursive_mutex, std::unordered_map< ShaderTextureResourceBinding *, std::unique_ptr< ShaderTextureResourceBinding > > > mtxShaderTextureResources
Definition: ShaderTextureResourceBindingManager.h:111
+
~ShaderTextureResourceBindingManager()
Definition: ShaderTextureResourceBindingManager.cpp:87
+
void destroyResource(ShaderTextureResourceBinding *pResourceToDestroy)
Definition: ShaderTextureResourceBindingManager.cpp:61
+
Renderer * pRenderer
Definition: ShaderTextureResourceBindingManager.h:100
+
std::variant< ShaderTextureResourceBindingUniquePtr, Error > createShaderTextureResource(const std::string &sShaderResourceName, const std::string &sResourceAdditionalInfo, const std::unordered_set< Pipeline * > &pipelinesToUse, std::unique_ptr< TextureHandle > pTextureToUse)
Definition: ShaderTextureResourceBindingManager.cpp:15
+
std::pair< std::recursive_mutex, std::unordered_map< ShaderTextureResourceBinding *, std::unique_ptr< ShaderTextureResourceBinding > > > * getResources()
Definition: ShaderTextureResourceBindingManager.cpp:79
+
std::variant< ShaderTextureResourceBindingUniquePtr, Error > handleResourceCreation(std::variant< std::unique_ptr< ShaderTextureResourceBinding >, Error > result)
Definition: ShaderTextureResourceBindingManager.cpp:40
+
Definition: ShaderTextureResourceBindingUniquePtr.h:14
+
Definition: ShaderResourceBinding.h:86
+
+
+ + + + diff --git a/ShaderTextureResourceBindingUniquePtr_8h_source.html b/ShaderTextureResourceBindingUniquePtr_8h_source.html new file mode 100644 index 000000000..4465e494b --- /dev/null +++ b/ShaderTextureResourceBindingUniquePtr_8h_source.html @@ -0,0 +1,149 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/resource/binding/texture/ShaderTextureResourceBindingUniquePtr.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShaderTextureResourceBindingUniquePtr.h
+
+
+
1#pragma once
+
2
+
3namespace ne {
+
4 class ShaderTextureResourceBindingManager;
+
5 class ShaderTextureResourceBinding;
+
6
+ +
15 // Only manager can create objects of this class.
+ +
17
+
18 public:
+ +
20
+ + +
23 operator=(const ShaderTextureResourceBindingUniquePtr&) = delete;
+
24
+ +
26
+ +
33
+ +
42 operator=(ShaderTextureResourceBindingUniquePtr&& other) noexcept;
+
43
+ +
50
+
51 private:
+ + +
60
+ +
63
+ +
66 };
+
67} // namespace ne
+
Definition: ShaderTextureResourceBindingManager.h:27
+
Definition: ShaderTextureResourceBindingUniquePtr.h:14
+
ShaderTextureResourceBinding * getResource() const
Definition: ShaderTextureResourceBindingUniquePtr.h:49
+
ShaderTextureResourceBindingManager * pManager
Definition: ShaderTextureResourceBindingUniquePtr.h:62
+
ShaderTextureResourceBinding * pResource
Definition: ShaderTextureResourceBindingUniquePtr.h:65
+
Definition: ShaderResourceBinding.h:86
+
+
+ + + + diff --git a/ShaderUser_8h_source.html b/ShaderUser_8h_source.html new file mode 100644 index 000000000..9851b3c46 --- /dev/null +++ b/ShaderUser_8h_source.html @@ -0,0 +1,152 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/ShaderUser.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShaderUser.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <unordered_map>
+
5
+
6// Custom.
+
7#include "shader/general/ShaderPack.h"
+
8#include "shader/ShaderDescription.h"
+
9
+
10namespace ne {
+
11 class ShaderManager;
+
12
+
20 class ShaderUser {
+
21 public:
+
22 ShaderUser() = delete;
+
23 ShaderUser(const ShaderUser&) = delete;
+
24 ShaderUser& operator=(const ShaderUser&) = delete;
+
25
+
26 protected:
+ +
33
+
35 virtual ~ShaderUser();
+
36
+
48 [[nodiscard]] bool addShader(const std::string& sShaderName);
+
49
+
61 ShaderPack* findShader(ShaderType shaderType);
+
62
+
63 private:
+
70 void releaseShader(const std::string& sShaderName) const;
+
71
+
76 std::pair<std::mutex, std::unordered_map<ShaderType, std::shared_ptr<ShaderPack>>> mtxAssignedShaders;
+
77
+ +
80 };
+
81} // namespace ne
+
Definition: ShaderManager.h:25
+
Definition: ShaderPack.h:22
+
Definition: ShaderUser.h:20
+
bool addShader(const std::string &sShaderName)
Definition: ShaderUser.cpp:9
+
ShaderPack * findShader(ShaderType shaderType)
Definition: ShaderUser.cpp:43
+
void releaseShader(const std::string &sShaderName) const
Definition: ShaderUser.cpp:54
+
std::pair< std::mutex, std::unordered_map< ShaderType, std::shared_ptr< ShaderPack > > > mtxAssignedShaders
Definition: ShaderUser.h:76
+
ShaderManager * pShaderManager
Definition: ShaderUser.h:79
+
virtual ~ShaderUser()
Definition: ShaderUser.cpp:59
+
+
+ + + + diff --git a/Shader_8h_source.html b/Shader_8h_source.html new file mode 100644 index 000000000..f08185aa2 --- /dev/null +++ b/Shader_8h_source.html @@ -0,0 +1,245 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/Shader.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Shader.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <filesystem>
+
5#include <memory>
+
6#include <unordered_map>
+
7#include <variant>
+
8
+
9// Custom.
+
10#include "misc/Error.h"
+
11#include "shader/ShaderDescription.h"
+
12#include "shader/general/format/VertexFormat.h"
+
13
+
14namespace ne {
+
15 class Renderer;
+
16 class ConfigManager;
+
17
+
23 class Shader {
+
24 public:
+
25 Shader() = delete;
+
26 Shader(const Shader&) = delete;
+
27 Shader& operator=(const Shader&) = delete;
+
28
+
29 virtual ~Shader() = default;
+
30
+
36 static constexpr const char* getFrameConstantsShaderResourceName() {
+ +
38 }
+
39
+ +
46
+
60 static std::variant<std::shared_ptr<Shader>, std::string, Error> compileShader(
+ +
62 const std::filesystem::path& shaderCacheDirectory,
+
63 const std::string& sConfiguration,
+
64 const ShaderDescription& shaderDescription);
+
65
+
84 static std::variant<std::shared_ptr<Shader>, Error> createFromCache(
+ +
86 const std::filesystem::path& pathToCompiledShaderBytecode,
+
87 ShaderDescription& shaderDescription,
+
88 const std::string& sShaderNameWithoutConfiguration,
+
89 std::optional<ShaderCacheInvalidationReason>& cacheInvalidationReason);
+
90
+
96 std::string getShaderName() const;
+
97
+
103 ShaderType getShaderType() const;
+
104
+
111 std::optional<VertexFormat> getVertexFormat() const;
+
112
+ +
121
+
122 protected:
+
133 Shader(
+ +
135 std::filesystem::path pathToCompiledShader,
+
136 const std::string& sShaderName,
+
137 ShaderType shaderType,
+
138 std::optional<VertexFormat> vertexFormat);
+
139
+ +
145
+ +
151
+
162 [[nodiscard]] virtual std::optional<Error>
+ +
164 return {};
+
165 };
+
166
+
178 [[nodiscard]] virtual std::optional<Error> checkCachedAdditionalCompilationResultsInfo(
+
179 ConfigManager& cacheMetadataConfigManager,
+
180 std::optional<ShaderCacheInvalidationReason>& cacheInvalidationReason) {
+
181 return {};
+
182 };
+
183
+
189 std::variant<std::filesystem::path, Error> getPathToCompiledShader();
+
190
+
196 Renderer* getRenderer() const;
+
197
+
198 private:
+
212 static std::variant<std::shared_ptr<Shader>, std::string, Error> compileRenderDependentShader(
+ +
214 const std::filesystem::path& shaderCacheDirectory,
+
215 const std::string& sConfiguration,
+
216 const ShaderDescription& shaderDescription);
+
217
+
232 static std::variant<std::shared_ptr<Shader>, Error> createRenderDependentShaderFromCache(
+ +
234 const std::filesystem::path& pathToSourceShaderFile,
+
235 const std::filesystem::path& pathToCompiledShaderBytecode,
+
236 const std::string& sShaderName,
+
237 ShaderType shaderType,
+
238 std::optional<VertexFormat> vertexFormat);
+
239
+
241 Renderer* const pRenderer = nullptr;
+
242
+
248 const std::optional<VertexFormat> optionalVertexFormat;
+
249
+
251 const std::string sShaderName;
+
252
+
254 const ShaderType shaderType;
+
255
+
257 const std::filesystem::path pathToCompiledShader;
+
258
+
260 static inline const auto sCompiledBytecodeHashKeyName = "compiled_bytecode_hash";
+
261
+
263 static constexpr auto pFrameConstantBufferName = "frameData";
+
264 };
+
265} // namespace ne
+
Definition: ConfigManager.h:27
+
Definition: Error.h:27
+
Definition: Renderer.h:44
+
Definition: Shader.h:23
+
std::optional< VertexFormat > getVertexFormat() const
Definition: Shader.cpp:311
+
virtual std::optional< Error > checkCachedAdditionalCompilationResultsInfo(ConfigManager &cacheMetadataConfigManager, std::optional< ShaderCacheInvalidationReason > &cacheInvalidationReason)
Definition: Shader.h:178
+
virtual bool releaseShaderDataFromMemoryIfLoaded()=0
+
const std::optional< VertexFormat > optionalVertexFormat
Definition: Shader.h:248
+
static std::variant< std::shared_ptr< Shader >, std::string, Error > compileShader(Renderer *pRenderer, const std::filesystem::path &shaderCacheDirectory, const std::string &sConfiguration, const ShaderDescription &shaderDescription)
Definition: Shader.cpp:81
+
Renderer * getRenderer() const
Definition: Shader.cpp:313
+
const ShaderType shaderType
Definition: Shader.h:254
+
ShaderType getShaderType() const
Definition: Shader.cpp:315
+
std::string getShaderName() const
Definition: Shader.cpp:300
+
static constexpr auto pFrameConstantBufferName
Definition: Shader.h:263
+
virtual std::optional< Error > saveAdditionalCompilationResultsInfo(ConfigManager &cacheMetadataConfigManager)
Definition: Shader.h:163
+
const std::filesystem::path pathToCompiledShader
Definition: Shader.h:257
+
static void notifyShaderBytecodeReleasedFromMemory()
Definition: Shader.cpp:34
+
static const auto sCompiledBytecodeHashKeyName
Definition: Shader.h:260
+
static constexpr const char * getFrameConstantsShaderResourceName()
Definition: Shader.h:36
+
static size_t getCurrentAmountOfShadersInMemory()
Definition: Shader.cpp:30
+
const std::string sShaderName
Definition: Shader.h:251
+
static std::variant< std::shared_ptr< Shader >, std::string, Error > compileRenderDependentShader(Renderer *pRenderer, const std::filesystem::path &shaderCacheDirectory, const std::string &sConfiguration, const ShaderDescription &shaderDescription)
Definition: Shader.cpp:45
+
std::variant< std::filesystem::path, Error > getPathToCompiledShader()
Definition: Shader.cpp:302
+
static std::variant< std::shared_ptr< Shader >, Error > createFromCache(Renderer *pRenderer, const std::filesystem::path &pathToCompiledShaderBytecode, ShaderDescription &shaderDescription, const std::string &sShaderNameWithoutConfiguration, std::optional< ShaderCacheInvalidationReason > &cacheInvalidationReason)
Definition: Shader.cpp:153
+
static void notifyShaderBytecodeLoadedIntoMemory()
Definition: Shader.cpp:32
+
Renderer *const pRenderer
Definition: Shader.h:241
+
static std::variant< std::shared_ptr< Shader >, Error > createRenderDependentShaderFromCache(Renderer *pRenderer, const std::filesystem::path &pathToSourceShaderFile, const std::filesystem::path &pathToCompiledShaderBytecode, const std::string &sShaderName, ShaderType shaderType, std::optional< VertexFormat > vertexFormat)
Definition: Shader.cpp:265
+
Definition: ShaderDescription.h:74
+
+
+ + + + diff --git a/ShadowMapArrayIndexManager_8h_source.html b/ShadowMapArrayIndexManager_8h_source.html new file mode 100644 index 000000000..1bce9326c --- /dev/null +++ b/ShadowMapArrayIndexManager_8h_source.html @@ -0,0 +1,186 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/general/resource/shadow/ShadowMapArrayIndexManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShadowMapArrayIndexManager.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <optional>
+
5#include <variant>
+
6#include <memory>
+
7
+
8// Custom.
+
9#include "misc/Error.h"
+
10
+
11namespace ne {
+
12 class ShadowMapHandle;
+
13 class Pipeline;
+
14 class Renderer;
+
15 class GpuResourceManager;
+
16
+ +
26 // This class is expected to be used by shadow map manager.
+
27 friend class ShadowMapManager;
+
28
+
29 public:
+ +
31
+ + +
34
+ +
36 ShadowMapArrayIndexManager& operator=(ShadowMapArrayIndexManager&&) noexcept = delete;
+
37
+
38 virtual ~ShadowMapArrayIndexManager() = default;
+
39
+
49 static std::variant<std::unique_ptr<ShadowMapArrayIndexManager>, Error> create(
+ +
51 GpuResourceManager* pResourceManager,
+
52 const std::string& sShaderArrayResourceName);
+
53
+
54 protected:
+ +
62
+
70 static void changeShadowMapArrayIndex(ShadowMapHandle* pShadowMapHandle, unsigned int iNewArrayIndex);
+
71
+
87 [[nodiscard]] virtual std::optional<Error>
+ +
89
+
97 [[nodiscard]] virtual std::optional<Error>
+ +
99
+
107 [[nodiscard]] virtual std::optional<Error> bindShadowMapsToPipeline(Pipeline* pPipeline) = 0;
+
108
+
114 [[nodiscard]] virtual std::optional<Error> bindShadowMapsToAllPipelines() = 0;
+
115
+
121 std::string_view getShaderArrayResourceName();
+
122
+
130 Renderer* getRenderer() const;
+
131
+
132 private:
+
134 Renderer* const pRenderer = nullptr;
+
135
+
137 const std::string sShaderArrayResourceName;
+
138 };
+
139}
+
Definition: Error.h:27
+
Definition: GpuResourceManager.h:43
+
Definition: Pipeline.h:20
+
Definition: Renderer.h:44
+
Definition: ShadowMapArrayIndexManager.h:25
+
Renderer * getRenderer() const
Definition: ShadowMapArrayIndexManager.cpp:49
+
virtual std::optional< Error > registerShadowMapResource(ShadowMapHandle *pShadowMapHandle)=0
+
virtual std::optional< Error > bindShadowMapsToAllPipelines()=0
+
virtual std::optional< Error > unregisterShadowMapResource(ShadowMapHandle *pShadowMapHandle)=0
+
virtual std::optional< Error > bindShadowMapsToPipeline(Pipeline *pPipeline)=0
+
Renderer *const pRenderer
Definition: ShadowMapArrayIndexManager.h:134
+
const std::string sShaderArrayResourceName
Definition: ShadowMapArrayIndexManager.h:137
+
static void changeShadowMapArrayIndex(ShadowMapHandle *pShadowMapHandle, unsigned int iNewArrayIndex)
Definition: ShadowMapArrayIndexManager.cpp:51
+
std::string_view getShaderArrayResourceName()
Definition: ShadowMapArrayIndexManager.cpp:45
+
static std::variant< std::unique_ptr< ShadowMapArrayIndexManager >, Error > create(Renderer *pRenderer, GpuResourceManager *pResourceManager, const std::string &sShaderArrayResourceName)
Definition: ShadowMapArrayIndexManager.cpp:18
+
Definition: ShadowMapHandle.h:23
+
Definition: ShadowMapManager.h:29
+
+
+ + + + diff --git a/ShadowMapHandle_8h_source.html b/ShadowMapHandle_8h_source.html new file mode 100644 index 000000000..897ec40fc --- /dev/null +++ b/ShadowMapHandle_8h_source.html @@ -0,0 +1,207 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/general/resource/shadow/ShadowMapHandle.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShadowMapHandle.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <functional>
+
5#include <mutex>
+
6
+
7// Custom.
+
8#include "ShadowMapType.hpp"
+
9
+
10// External.
+
11#include "vulkan/vulkan_core.h"
+
12
+
13namespace ne {
+
14 class ShadowMapManager;
+
15 class GpuResource;
+
16
+ +
24 // Only manager can create and update objects of this class.
+
25 friend class ShadowMapManager;
+
26
+
27 // Index manager updates array index.
+
28 friend class ShadowMapArrayIndexManager;
+
29
+
30 public:
+ +
33 InternalResources() = default;
+
34
+ +
37
+ +
43
+
51 std::vector<VkFramebuffer> vShadowMappingFramebuffers;
+
52 };
+
53
+
54 ShadowMapHandle() = delete;
+
55
+
56 ShadowMapHandle(const ShadowMapHandle&) = delete;
+
57 ShadowMapHandle& operator=(const ShadowMapHandle&) = delete;
+
58
+
59 // Intentionally disallow `move` because manager wraps handles to `std::unique_ptr`
+
60 // to store raw pointer to shadow map handle and we need to make sure nobody will
+
61 // accidentally `move` the handle which will cause the manager's raw pointer to be invalid.
+
62 ShadowMapHandle(ShadowMapHandle&& other) noexcept = delete;
+
63 ShadowMapHandle& operator=(ShadowMapHandle&& other) noexcept = delete;
+
64
+ +
66
+
76 inline std::pair<std::recursive_mutex, InternalResources>* getResources() { return &mtxResources; }
+
77
+
83 inline ShadowMapType getShadowMapType() const { return shadowMapType; }
+
84
+
90 inline size_t getShadowMapSize() const { return iShadowMapSize; }
+
91
+
92 private:
+ + +
107 GpuResource* pDepthTexture,
+
108 ShadowMapType type,
+
109 size_t iTextureSize,
+
110 const std::function<void(unsigned int)>& onArrayIndexChanged,
+
111 GpuResource* pColorTexture = nullptr);
+
112
+
118 void changeArrayIndex(unsigned int iNewArrayIndex);
+
119
+ +
130 GpuResource* pDepthTexture, size_t iShadowMapSize, GpuResource* pColorTexture = nullptr);
+
131
+ +
134
+ +
137
+
139 std::pair<std::recursive_mutex, InternalResources> mtxResources;
+
140
+
142 size_t iShadowMapSize = 0;
+
143
+
148 const std::function<void(unsigned int)> onArrayIndexChanged;
+
149
+
151 const ShadowMapType shadowMapType = ShadowMapType::DIRECTIONAL;
+
152 };
+
153}
+
Definition: GpuResource.h:16
+
Definition: ShadowMapArrayIndexManager.h:25
+
Definition: ShadowMapHandle.h:23
+
std::pair< std::recursive_mutex, InternalResources > * getResources()
Definition: ShadowMapHandle.h:76
+
void recreateFramebuffers()
Definition: ShadowMapHandle.cpp:98
+
std::pair< std::recursive_mutex, InternalResources > mtxResources
Definition: ShadowMapHandle.h:139
+
const std::function< void(unsigned int)> onArrayIndexChanged
Definition: ShadowMapHandle.h:148
+
const ShadowMapType shadowMapType
Definition: ShadowMapHandle.h:151
+
size_t iShadowMapSize
Definition: ShadowMapHandle.h:142
+
void changeArrayIndex(unsigned int iNewArrayIndex)
Definition: ShadowMapHandle.cpp:81
+
ShadowMapManager * pManager
Definition: ShadowMapHandle.h:136
+
ShadowMapType getShadowMapType() const
Definition: ShadowMapHandle.h:83
+
void setUpdatedResources(GpuResource *pDepthTexture, size_t iShadowMapSize, GpuResource *pColorTexture=nullptr)
Definition: ShadowMapHandle.cpp:85
+
size_t getShadowMapSize() const
Definition: ShadowMapHandle.h:90
+
Definition: ShadowMapManager.h:29
+
Definition: ShadowMapHandle.h:32
+
GpuResource * pColorTexture
Definition: ShadowMapHandle.h:42
+
std::vector< VkFramebuffer > vShadowMappingFramebuffers
Definition: ShadowMapHandle.h:51
+
GpuResource * pDepthTexture
Definition: ShadowMapHandle.h:36
+
+
+ + + + diff --git a/ShadowMapManager_8h_source.html b/ShadowMapManager_8h_source.html new file mode 100644 index 000000000..e116fd491 --- /dev/null +++ b/ShadowMapManager_8h_source.html @@ -0,0 +1,262 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/general/resource/shadow/ShadowMapManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShadowMapManager.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <memory>
+
5#include <variant>
+
6#include <optional>
+
7#include <mutex>
+
8#include <functional>
+
9#include <unordered_map>
+
10#include <array>
+
11
+
12// Custom.
+
13#include "misc/Error.h"
+
14#include "render/general/resource/shadow/ShadowMapArrayIndexManager.h"
+
15#include "ShadowMapType.hpp"
+
16
+
17namespace ne {
+
18 class GpuResource;
+
19 class GpuResourceManager;
+
20 class ShadowMapHandle;
+
21
+ +
30 // Unique pointers will notify the manager before destruction.
+
31 friend class ShadowMapHandle;
+
32
+
33 // Renderer will notify us when shadow quality setting is changed.
+
34 friend class Renderer;
+
35
+
36 // Pipeline manager notifies us about new pipelines or re-created pipelines to re-bind descriptors.
+
37 friend class PipelineManager;
+
38
+
39 public:
+ +
43 std::unique_ptr<GpuResource> pDepthTexture;
+
44
+
49 std::unique_ptr<GpuResource> pColorTexture;
+
50 };
+
51
+ +
55 std::unordered_map<ShadowMapHandle*, ShadowMapHandleResources> shadowMaps;
+
56
+
62 std::array<std::unique_ptr<ShadowMapArrayIndexManager>, static_cast<size_t>(ShadowMapType::SIZE)>
+ +
64 };
+
65
+
66 ShadowMapManager() = delete;
+
67 ShadowMapManager(const ShadowMapManager&) = delete;
+
68 ShadowMapManager& operator=(const ShadowMapManager&) = delete;
+
69
+ +
72
+
79 static int getShadowPassDepthBias();
+
80
+
87 static float getShadowPassDepthSlopeFactor();
+
88
+
95 static constexpr const char* getDirectionalShadowMapsShaderResourceName() {
+ +
97 }
+
98
+
104 static constexpr const char* getSpotShadowMapsShaderResourceName() {
+ +
106 }
+
107
+
113 static constexpr const char* getPointShadowMapsShaderResourceName() {
+ +
115 }
+
116
+
123 static constexpr float getVisibleDistanceToNearClipPlaneRatio() {
+ +
125 }
+
126
+
134 static std::variant<std::unique_ptr<ShadowMapManager>, Error>
+ +
136
+
151 std::variant<std::unique_ptr<ShadowMapHandle>, Error> createShadowMap(
+
152 const std::string& sResourceName,
+
153 ShadowMapType type,
+
154 const std::function<void(unsigned int)>& onArrayIndexChanged);
+
155
+
163 inline std::pair<std::recursive_mutex, InternalResources>* getInternalResources() {
+
164 return &mtxInternalResources;
+
165 }
+
166
+
172 Renderer* getRenderer() const;
+
173
+
174 private:
+ + +
183 std::array<std::unique_ptr<ShadowMapArrayIndexManager>, static_cast<size_t>(ShadowMapType::SIZE)>
+
184 vShadowMapArrayIndexManagers);
+
185
+
193 [[nodiscard]] std::optional<Error> bindShadowMapsToPipeline(Pipeline* pPipeline);
+
194
+
200 [[nodiscard]] std::optional<Error> bindShadowMapsToAllPipelines();
+
201
+
208 void onShadowMapHandleBeingDestroyed(ShadowMapHandle* pHandleToResourceDestroy);
+
209
+
216 [[nodiscard]] std::optional<Error> recreateShadowMaps();
+
217
+
227 unsigned int
+
228 correctShadowMapResolutionForType(unsigned int iRenderSettingsShadowMapSize, ShadowMapType type);
+
229
+ +
243
+
253 std::pair<std::recursive_mutex, InternalResources> mtxInternalResources;
+
254
+ +
257
+
259 static constexpr float visibleDistanceToNearClipPlaneRatio = 0.004F; // NOLINT
+
260
+
262 static constexpr auto pDirectionalShadowMapsShaderResourceName = "directionalShadowMaps";
+
263
+
265 static constexpr auto pSpotShadowMapsShaderResourceName = "spotShadowMaps";
+
266
+
268 static constexpr auto pPointShadowMapsShaderResourceName = "pointShadowMaps";
+
269 };
+
270}
+
Definition: Error.h:27
+
Definition: GpuResourceManager.h:43
+
Definition: PipelineManager.h:98
+
Definition: Pipeline.h:20
+
Definition: Renderer.h:44
+
Definition: ShadowMapArrayIndexManager.h:25
+
Definition: ShadowMapHandle.h:23
+
Definition: ShadowMapManager.h:29
+
static constexpr auto pSpotShadowMapsShaderResourceName
Definition: ShadowMapManager.h:265
+
static constexpr auto pPointShadowMapsShaderResourceName
Definition: ShadowMapManager.h:268
+
Renderer * getRenderer() const
Definition: ShadowMapManager.cpp:125
+
std::pair< std::recursive_mutex, InternalResources > * getInternalResources()
Definition: ShadowMapManager.h:163
+
unsigned int correctShadowMapResolutionForType(unsigned int iRenderSettingsShadowMapSize, ShadowMapType type)
Definition: ShadowMapManager.cpp:258
+
void onShadowMapHandleBeingDestroyed(ShadowMapHandle *pHandleToResourceDestroy)
Definition: ShadowMapManager.cpp:142
+
static constexpr float visibleDistanceToNearClipPlaneRatio
Definition: ShadowMapManager.h:259
+
static constexpr const char * getSpotShadowMapsShaderResourceName()
Definition: ShadowMapManager.h:104
+
static constexpr const char * getPointShadowMapsShaderResourceName()
Definition: ShadowMapManager.h:113
+
static float getShadowPassDepthSlopeFactor()
Definition: ShadowMapManager.cpp:317
+
static constexpr auto pDirectionalShadowMapsShaderResourceName
Definition: ShadowMapManager.h:262
+
static int getShadowPassDepthBias()
Definition: ShadowMapManager.cpp:313
+
ShadowMapArrayIndexManager * getArrayIndexManagerBasedOnShadowMapType(ShadowMapType type)
Definition: ShadowMapManager.cpp:128
+
static constexpr float getVisibleDistanceToNearClipPlaneRatio()
Definition: ShadowMapManager.h:123
+
std::optional< Error > bindShadowMapsToAllPipelines()
Definition: ShadowMapManager.cpp:39
+
std::optional< Error > recreateShadowMaps()
Definition: ShadowMapManager.cpp:178
+
std::variant< std::unique_ptr< ShadowMapHandle >, Error > createShadowMap(const std::string &sResourceName, ShadowMapType type, const std::function< void(unsigned int)> &onArrayIndexChanged)
Definition: ShadowMapManager.cpp:54
+
GpuResourceManager * pResourceManager
Definition: ShadowMapManager.h:256
+
std::optional< Error > bindShadowMapsToPipeline(Pipeline *pPipeline)
Definition: ShadowMapManager.cpp:24
+
static constexpr const char * getDirectionalShadowMapsShaderResourceName()
Definition: ShadowMapManager.h:95
+
std::pair< std::recursive_mutex, InternalResources > mtxInternalResources
Definition: ShadowMapManager.h:253
+
~ShadowMapManager()
Definition: ShadowMapManager.cpp:280
+
static std::variant< std::unique_ptr< ShadowMapManager >, Error > create(GpuResourceManager *pResourceManager)
Definition: ShadowMapManager.cpp:322
+
Definition: ShadowMapManager.h:53
+
std::array< std::unique_ptr< ShadowMapArrayIndexManager >, static_cast< size_t >(ShadowMapType::SIZE)> vShadowMapArrayIndexManagers
Definition: ShadowMapManager.h:63
+
std::unordered_map< ShadowMapHandle *, ShadowMapHandleResources > shadowMaps
Definition: ShadowMapManager.h:55
+
Definition: ShadowMapManager.h:41
+
std::unique_ptr< GpuResource > pDepthTexture
Definition: ShadowMapManager.h:43
+
std::unique_ptr< GpuResource > pColorTexture
Definition: ShadowMapManager.h:49
+
+
+ + + + diff --git a/ShadowMapType_8hpp_source.html b/ShadowMapType_8hpp_source.html new file mode 100644 index 000000000..6bc46a84e --- /dev/null +++ b/ShadowMapType_8hpp_source.html @@ -0,0 +1,155 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/general/resource/shadow/ShadowMapType.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShadowMapType.hpp
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <stdexcept>
+
5#include <string>
+
6
+
7// Custom.
+
8#include "misc/Error.h"
+
9
+
10namespace ne {
+
12 enum class ShadowMapType : unsigned int {
+
13 DIRECTIONAL = 0,
+
14 SPOT,
+
15 POINT,
+
16
+
17 // ... new types go here ...
+
18
+
19 SIZE // marks the size of this enum
+
20 };
+
21
+
29 inline std::string shadowMapTypeToString(ShadowMapType type) {
+
30 switch (type) {
+
31 case (ShadowMapType::DIRECTIONAL): {
+
32 return "directional";
+
33 break;
+
34 }
+
35 case (ShadowMapType::SPOT): {
+
36 return "spot";
+
37 break;
+
38 }
+
39 case (ShadowMapType::POINT): {
+
40 return "point";
+
41 break;
+
42 }
+
43 case (ShadowMapType::SIZE): {
+
44 Error error("not a valid type");
+
45 error.showError();
+
46 throw std::runtime_error(error.getFullErrorMessage());
+
47 break;
+
48 }
+
49 }
+
50
+
51 Error error("unknown shadow map type");
+
52 error.showError();
+
53 throw std::runtime_error(error.getFullErrorMessage());
+
54 }
+
55}
+
+
+ + + + diff --git a/SpatialNode_8h_source.html b/SpatialNode_8h_source.html new file mode 100644 index 000000000..8dcd1b523 --- /dev/null +++ b/SpatialNode_8h_source.html @@ -0,0 +1,256 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/game/nodes/SpatialNode.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SpatialNode.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "game/nodes/Node.h"
+
5#include "math/GLMath.hpp"
+
6#include "misc/Globals.h"
+
7
+
8#include "SpatialNode.generated.h"
+
9
+
10namespace ne RNAMESPACE() {
+
12 class RCLASS(Guid("150d647c-f385-4a11-b585-d059d2be88aa")) SpatialNode : public Node {
+
13 // Calls `applyAttachmentRule`.
+
14 friend class Node;
+
15
+
16 public:
+ +
18
+
24 SpatialNode(const std::string& sNodeName);
+
25
+
26 virtual ~SpatialNode() override = default;
+
27
+
35 void setRelativeLocation(const glm::vec3& location);
+
36
+
44 void setRelativeRotation(const glm::vec3& rotation);
+
45
+
53 void setRelativeScale(const glm::vec3& scale);
+
54
+
63 void setWorldLocation(const glm::vec3& location);
+
64
+
73 void setWorldRotation(const glm::vec3& rotation);
+
74
+
83 void setWorldScale(const glm::vec3& scale);
+
84
+
90 inline glm::vec3 getRelativeLocation() const { return relativeLocation; }
+
91
+
98 inline glm::vec3 getRelativeRotation() const { return relativeRotation; }
+
99
+
105 inline glm::vec3 getRelativeScale() const { return relativeScale; }
+
106
+
112 glm::mat4x4 getRelativeRotationMatrix();
+
113
+
122 glm::vec3 getWorldLocation();
+
123
+
133 glm::vec3 getWorldRotation();
+
134
+
140 glm::quat getWorldRotationQuaternion();
+
141
+
150 glm::vec3 getWorldScale();
+
151
+
157 glm::vec3 getWorldForwardDirection();
+
158
+
164 glm::vec3 getWorldRightDirection();
+
165
+
171 glm::vec3 getWorldUpDirection();
+
172
+
179 glm::mat4x4 getWorldMatrix();
+
180
+
194 std::pair<std::recursive_mutex, sgc::GcPtr<SpatialNode>>* getClosestSpatialParent();
+
195
+
196 protected:
+
204 virtual void onAfterDeserialized() override;
+
205
+
216 virtual void onSpawning() override;
+
217
+
231 virtual void onAfterAttachedToNewParent(bool bThisNodeBeingAttached) override;
+
232
+ +
243
+
244 private:
+
256 void applyAttachmentRule(
+
257 Node::AttachmentRule locationRule,
+
258 const glm::vec3& worldLocationBeforeAttachment,
+
259 Node::AttachmentRule rotationRule,
+
260 const glm::vec3& worldRotationBeforeAttachment,
+
261 Node::AttachmentRule scaleRule,
+
262 const glm::vec3& worldScaleBeforeAttachment);
+
263
+
273 void recalculateWorldMatrix(bool bNotifyChildren = true);
+
274
+
276 void recalculateLocalMatrix();
+
277
+
284 void recalculateWorldMatrixForNodeAndNotifyChildren(Node* pNode);
+
285
+
286#if defined(DEBUG)
+
288 void warnIfExceedingWorldBounds();
+
289#endif
+
290
+ +
293 WorldMatrixInformation() = default;
+
294
+
299 glm::vec3 worldLocation = glm::vec3(0.0F, 0.0F, 0.0F);
+
300
+
305 glm::vec3 worldRotation = glm::vec3(0.0F, 0.0F, 0.0F);
+
306
+
311 glm::vec3 worldScale = glm::vec3(1.0F, 1.0F, 1.0F);
+
312
+
314 glm::vec3 worldForward = Globals::WorldDirection::forward;
+
315
+
317 glm::vec3 worldRight = Globals::WorldDirection::right;
+
318
+
320 glm::vec3 worldUp = Globals::WorldDirection::up;
+
321
+
323 glm::quat worldRotationQuaternion = glm::identity<glm::quat>();
+
324
+
329 glm::mat4x4 worldMatrix = glm::identity<glm::mat4x4>();
+
330
+
332 bool bInOnWorldLocationRotationScaleChanged = false;
+
333 };
+
334
+ +
337 LocalSpaceInformation() = default;
+
338
+
340 glm::mat4x4 relativeRotationMatrix = glm::identity<glm::mat4x4>();
+
341
+
343 glm::quat relativeRotationQuaternion = glm::identity<glm::quat>();
+
344 };
+
345
+
351 RPROPERTY(Serialize)
+
352 glm::vec3 relativeLocation = glm::vec3(0.0F, 0.0F, 0.0F);
+
353
+
359 RPROPERTY(Serialize)
+
360 glm::vec3 relativeRotation = glm::vec3(0.0F, 0.0F, 0.0F);
+
361
+
367 RPROPERTY(Serialize)
+
368 glm::vec3 relativeScale = glm::vec3(1.0F, 1.0F, 1.0F);
+
369
+
371 std::pair<std::recursive_mutex, sgc::GcPtr<SpatialNode>> mtxSpatialParent{};
+
372
+
374 std::pair<std::recursive_mutex, LocalSpaceInformation> mtxLocalSpace{};
+
375
+
377 std::pair<std::recursive_mutex, WorldMatrixInformation> mtxWorldMatrix{};
+
378
+
379 ne_SpatialNode_GENERATED
+
380 };
+
381} // namespace ne RNAMESPACE()
+
382
+
383File_SpatialNode_GENERATED
+
Definition: GuidProperty.h:30
+
Definition: Node.h:39
+
AttachmentRule
Definition: Node.h:51
+
Definition: SerializeProperty.h:42
+
Definition: SpatialNode.h:12
+
glm::vec3 getRelativeRotation() const
Definition: SpatialNode.h:98
+
glm::vec3 getRelativeScale() const
Definition: SpatialNode.h:105
+
virtual void onWorldLocationRotationScaleChanged()
Definition: SpatialNode.h:242
+
glm::vec3 getRelativeLocation() const
Definition: SpatialNode.h:90
+
Definition: SpatialNode.h:336
+
Definition: SpatialNode.h:292
+
+
+ + + + diff --git a/SpecialRootParameterSlot_8hpp_source.html b/SpecialRootParameterSlot_8hpp_source.html new file mode 100644 index 000000000..24be1a8b7 --- /dev/null +++ b/SpecialRootParameterSlot_8hpp_source.html @@ -0,0 +1,132 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/hlsl/SpecialRootParameterSlot.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SpecialRootParameterSlot.hpp
+
+
+
1#pragma once
+
2
+
3namespace ne {
+
8 enum class SpecialRootParameterSlot : unsigned int {
+
9 FRAME_DATA = 0,
+
10 GENERAL_LIGHTING,
+
11 POINT_LIGHTS,
+
12 DIRECTIONAL_LIGHTS,
+
13 SPOT_LIGHTS,
+
14 LIGHT_CULLING_POINT_LIGHT_INDEX_LIST,
+
15 LIGHT_CULLING_SPOT_LIGHT_INDEX_LIST,
+
16 LIGHT_CULLING_POINT_LIGHT_GRID,
+
17 LIGHT_CULLING_SPOT_LIGHT_GRID,
+
18 SHADOW_PASS_LIGHT_INFO,
+
19 ROOT_CONSTANTS,
+
20 DIRECTIONAL_SHADOW_MAPS,
+
21 SPOT_SHADOW_MAPS,
+
22 POINT_SHADOW_MAPS,
+
23
+
24 // ... new items go here ...
+
25
+
26 SIZE, // marks the size of this enum
+
27 };
+
28}
+
+
+ + + + diff --git a/Sphere_8h_source.html b/Sphere_8h_source.html new file mode 100644 index 000000000..3b8e550c2 --- /dev/null +++ b/Sphere_8h_source.html @@ -0,0 +1,133 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/misc/shapes/Sphere.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Sphere.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "math/GLMath.hpp"
+
5#include "misc/shapes/Plane.h"
+
6
+
7namespace ne {
+
9 struct Sphere {
+
11 Sphere() = default;
+
12
+
19 Sphere(const glm::vec3& center, float radius);
+
20
+
28 bool isBehindPlane(const Plane& plane) const;
+
29
+
31 glm::vec3 center = glm::vec3(0.0F, 0.0F, 0.0F);
+
32
+
34 float radius = 1.0F;
+
35 };
+
36}
+
Definition: Plane.h:8
+
Definition: Sphere.h:9
+
glm::vec3 center
Definition: Sphere.h:31
+
float radius
Definition: Sphere.h:34
+
bool isBehindPlane(const Plane &plane) const
Definition: Sphere.cpp:10
+
Sphere()=default
+
+
+ + + + diff --git a/SpotlightNode_8h_source.html b/SpotlightNode_8h_source.html new file mode 100644 index 000000000..008edf2d2 --- /dev/null +++ b/SpotlightNode_8h_source.html @@ -0,0 +1,277 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/game/nodes/light/SpotlightNode.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SpotlightNode.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "game/nodes/SpatialNode.h"
+
5#include "math/GLMath.hpp"
+
6#include "shader/VulkanAlignmentConstants.hpp"
+
7#include "shader/general/resource/LightingShaderResourceManager.h"
+
8#include "misc/shapes/Cone.h"
+
9#include "render/general/resource/shadow/ShadowMapHandle.h"
+
10
+
11#include "SpotlightNode.generated.h"
+
12
+
13namespace ne RNAMESPACE() {
+
15 class RCLASS(Guid("e7b203dc-0f47-43f2-b26d-3b09a5ec1661")) SpotlightNode : public SpatialNode {
+
16 // Renderer reads shadow map handle and index into viewProjection matrix array.
+
17 friend class Renderer;
+
18
+
19 public:
+ +
21
+
27 SpotlightNode(const std::string& sNodeName);
+
28
+
29 virtual ~SpotlightNode() override = default;
+
30
+
36 static constexpr float getMaxLightConeAngle() { return maxConeAngle; }
+
37
+
43 void setLightColor(const glm::vec3& color);
+
44
+
50 void setLightIntensity(float intensity);
+
51
+
57 void setLightDistance(float distance);
+
58
+
66 void setLightInnerConeAngle(float innerConeAngle);
+
67
+
75 void setLightOuterConeAngle(float outerConeAngle);
+
76
+
82 glm::vec3 getLightColor() const;
+
83
+
89 float getLightIntensity() const;
+
90
+
96 float getLightDistance() const;
+
97
+
103 float getLightInnerConeAngle() const;
+
104
+
110 float getLightOuterConeAngle() const;
+
111
+
123 std::pair<std::mutex, Cone>* getShape();
+
124
+
125 protected:
+
133 virtual void onAfterDeserialized() override;
+
134
+
147 virtual void onSpawning() override;
+
148
+
158 virtual void onDespawning() override;
+
159
+
169 virtual void onWorldLocationRotationScaleChanged() override;
+
170
+
171 private:
+ +
174 SpotlightShaderData() = default;
+
175
+
180 alignas(iVkMat4Alignment) glm::mat4 viewProjectionMatrix = glm::identity<glm::mat4>();
+
181
+
183 alignas(iVkVec4Alignment) glm::vec4 position = glm::vec4(0.0F, 0.0F, 0.0F, 1.0F);
+
184
+
186 alignas(iVkVec4Alignment) glm::vec4 direction = glm::vec4(0.0F, 0.0F, 0.0F, 0.0F);
+
187
+
189 alignas(iVkVec4Alignment) glm::vec4 color = glm::vec4(1.0F, 1.0F, 1.0F, 1.0F);
+
190
+
192 alignas(iVkScalarAlignment) float intensity = 1.0F;
+
193
+
195 alignas(iVkScalarAlignment) float distance = 1.0F;
+
196
+
203 alignas(iVkScalarAlignment) float cosInnerConeAngle = 0.0F;
+
204
+
211 alignas(iVkScalarAlignment) float cosOuterConeAngle = 0.0F;
+
212
+
214 alignas(iVkScalarAlignment) float coneBottomRadius = 0.0F;
+
215
+
217 alignas(iVkScalarAlignment) unsigned int iShadowMapIndex = 0;
+
218 };
+
219
+
221 struct ShaderData {
+
222 ShaderData() = default;
+
223
+ +
226 ShadowPassDataGroup() = default;
+
227
+
229 std::unique_ptr<ShaderLightArraySlot> pSlot;
+
230
+ +
233 };
+
234
+
236 std::unique_ptr<ShaderLightArraySlot> pSpotlightArraySlot;
+
237
+ +
240
+ +
243 };
+
244
+
252 ShadowMapHandle* getShadowMapHandle() const;
+
253
+
260 unsigned int getIndexIntoShadowPassInfoShaderArray();
+
261
+
267 void onShadowMapArrayIndexChanged(unsigned int iNewIndexIntoArray);
+
268
+
275 void* onStartedUpdatingShaderData();
+
276
+
281 void onFinishedUpdatingShaderData();
+
282
+
289 void* onStartedUpdatingShadowPassData();
+
290
+
295 void onFinishedUpdatingShadowPassData();
+
296
+
302 void recalculateShadowMappingShaderData();
+
303
+
310 void recalculateAndMarkShaderDataToBeCopiedToGpu();
+
311
+
318 void markShaderDataToBeCopiedToGpu();
+
319
+
325 void recalculateShape();
+
326
+
328 std::pair<std::recursive_mutex, ShaderData> mtxShaderData;
+
329
+
335 std::pair<std::mutex, Cone> mtxShape;
+
336
+
342 std::unique_ptr<ShadowMapHandle> pShadowMapHandle;
+
343
+
345 RPROPERTY(Serialize)
+
346 glm::vec3 color = glm::vec3(1.0F, 1.0F, 1.0F);
+
347
+
349 RPROPERTY(Serialize)
+
350 float intensity = 1.0F;
+
351
+
353 RPROPERTY(Serialize)
+
354 float distance = 15.0F; // NOLINT: seems like a pretty good default value
+
355
+
360 RPROPERTY(Serialize)
+
361 float innerConeAngle = 25.0F;
+
362
+
367 RPROPERTY(Serialize)
+
368 float outerConeAngle = 45.0F;
+
369
+
371 static constexpr float maxConeAngle = 80.0F; // NOLINT: max angle that won't cause any visual issues
+
372
+
373 ne_SpotlightNode_GENERATED
+
374 };
+
375}
+
376
+
377File_SpotlightNode_GENERATED
+
Definition: GuidProperty.h:30
+
Definition: Renderer.h:44
+
Definition: SerializeProperty.h:42
+
Definition: ShadowMapHandle.h:23
+
Definition: SpatialNode.h:12
+
Definition: SpotlightNode.h:15
+
std::pair< std::mutex, Cone > mtxShape
Definition: SpotlightNode.h:335
+
std::unique_ptr< ShadowMapHandle > pShadowMapHandle
Definition: SpotlightNode.h:342
+
static constexpr float getMaxLightConeAngle()
Definition: SpotlightNode.h:36
+
std::pair< std::recursive_mutex, ShaderData > mtxShaderData
Definition: SpotlightNode.h:328
+
Definition: LightingShaderResourceManager.h:38
+ +
ShadowPassLightShaderInfo shaderData
Definition: SpotlightNode.h:232
+
std::unique_ptr< ShaderLightArraySlot > pSlot
Definition: SpotlightNode.h:229
+
Definition: SpotlightNode.h:221
+
ShadowPassDataGroup shadowPassData
Definition: SpotlightNode.h:239
+
std::unique_ptr< ShaderLightArraySlot > pSpotlightArraySlot
Definition: SpotlightNode.h:236
+
SpotlightShaderData shaderData
Definition: SpotlightNode.h:242
+
Definition: SpotlightNode.h:173
+
+
+ + + + diff --git a/StdHashes_8hpp_source.html b/StdHashes_8hpp_source.html new file mode 100644 index 000000000..babf74d0c --- /dev/null +++ b/StdHashes_8hpp_source.html @@ -0,0 +1,131 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/misc/StdHashes.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StdHashes.hpp
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <string>
+
5#include <string_view>
+
6#include <cstddef>
+
7
+
8namespace ne {
+ +
12 using is_transparent = void;
+
13
+
19 std::size_t operator()(const char* pText) const { return std::hash<std::string_view>{}(pText); }
+
20
+
26 std::size_t operator()(std::string_view text) const { return std::hash<std::string_view>{}(text); }
+
27
+
33 std::size_t operator()(std::string const& text) const { return std::hash<std::string_view>{}(text); }
+
34 };
+
35}
+
Definition: StdHashes.hpp:10
+
std::size_t operator()(std::string_view text) const
Definition: StdHashes.hpp:26
+
std::size_t operator()(const char *pText) const
Definition: StdHashes.hpp:19
+
std::size_t operator()(std::string const &text) const
Definition: StdHashes.hpp:33
+
void is_transparent
Definition: StdHashes.hpp:12
+
+
+ + + + diff --git a/StringFieldSerializer_8h_source.html b/StringFieldSerializer_8h_source.html new file mode 100644 index 000000000..8dafcf670 --- /dev/null +++ b/StringFieldSerializer_8h_source.html @@ -0,0 +1,164 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/io/serializers/StringFieldSerializer.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StringFieldSerializer.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "io/serializers/IFieldSerializer.hpp"
+
5
+
6namespace ne {
+ +
11 public:
+
12 StringFieldSerializer() = default;
+
13 virtual ~StringFieldSerializer() override = default;
+
14
+
22 virtual bool isFieldTypeSupported(const rfk::Field* pField) override;
+
23
+
42 [[nodiscard]] virtual std::optional<Error> serializeField(
+
43 toml::value* pTomlData,
+
44 Serializable* pFieldOwner,
+
45 const rfk::Field* pField,
+
46 const std::string& sSectionName,
+
47 const std::string& sEntityId,
+
48 size_t& iSubEntityId,
+
49 Serializable* pOriginalObject = nullptr) override;
+
50
+
66 [[nodiscard]] virtual std::optional<Error> deserializeField(
+
67 const toml::value* pTomlDocument,
+
68 const toml::value* pTomlValue,
+
69 Serializable* pFieldOwner,
+
70 const rfk::Field* pField,
+
71 const std::string& sOwnerSectionName,
+
72 const std::string& sEntityId,
+
73 std::unordered_map<std::string, std::string>& customAttributes) override;
+
74
+
85 [[nodiscard]] virtual std::optional<Error> cloneField(
+
86 Serializable* pFromInstance,
+
87 const rfk::Field* pFromField,
+
88 Serializable* pToInstance,
+
89 const rfk::Field* pToField) override;
+
90
+
102 virtual bool isFieldValueEqual(
+
103 Serializable* pFieldAOwner,
+
104 const rfk::Field* pFieldA,
+
105 Serializable* pFieldBOwner,
+
106 const rfk::Field* pFieldB) override;
+
107
+
108 private:
+
110 static inline const std::string sStringCanonicalTypeName = "std::basic_string<char>";
+
111 };
+
112} // namespace ne
+
Definition: IFieldSerializer.hpp:33
+
Definition: Serializable.h:113
+
Definition: StringFieldSerializer.h:10
+
virtual bool isFieldTypeSupported(const rfk::Field *pField) override
Definition: StringFieldSerializer.cpp:7
+
virtual std::optional< Error > cloneField(Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField) override
Definition: StringFieldSerializer.cpp:69
+
virtual bool isFieldValueEqual(Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB) override
Definition: StringFieldSerializer.cpp:89
+
virtual std::optional< Error > serializeField(toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr) override
Definition: StringFieldSerializer.cpp:13
+
virtual std::optional< Error > deserializeField(const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes) override
Definition: StringFieldSerializer.cpp:37
+
static const std::string sStringCanonicalTypeName
Definition: StringFieldSerializer.h:110
+
+
+ + + + diff --git a/TextureHandle_8h_source.html b/TextureHandle_8h_source.html new file mode 100644 index 000000000..5fb4d4efd --- /dev/null +++ b/TextureHandle_8h_source.html @@ -0,0 +1,158 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/material/TextureHandle.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TextureHandle.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <string>
+
5
+
6namespace ne {
+
7 class GpuResource;
+
8 class TextureManager;
+
9
+ +
16 // We expect that only texture manager will create texture handles.
+
17 friend class TextureManager;
+
18
+
19 public:
+
20 TextureHandle() = delete;
+
21
+
22 TextureHandle(const TextureHandle&) = delete;
+
23 TextureHandle& operator=(const TextureHandle&) = delete;
+
24
+
25 TextureHandle(TextureHandle&&) = delete;
+
26 TextureHandle& operator=(TextureHandle&&) = delete;
+
27
+ +
34
+
40 std::string getPathToResourceRelativeRes();
+
41
+ +
44
+
45 private:
+ + +
57 const std::string& sPathToResourceRelativeRes,
+ +
59
+
65 const std::string sPathToResourceRelativeRes;
+
66
+ +
69
+
71 GpuResource* const pTexture = nullptr;
+
72 };
+
73}
+
Definition: GpuResource.h:16
+
Definition: TextureHandle.h:15
+
const std::string sPathToResourceRelativeRes
Definition: TextureHandle.h:65
+
TextureManager *const pTextureManager
Definition: TextureHandle.h:68
+
~TextureHandle()
Definition: TextureHandle.cpp:16
+
GpuResource *const pTexture
Definition: TextureHandle.h:71
+
GpuResource * getResource()
Definition: TextureHandle.cpp:12
+
std::string getPathToResourceRelativeRes()
Definition: TextureHandle.cpp:14
+
Definition: TextureManager.h:20
+
+
+ + + + diff --git a/TextureImporter_8h_source.html b/TextureImporter_8h_source.html new file mode 100644 index 000000000..8ff90ef58 --- /dev/null +++ b/TextureImporter_8h_source.html @@ -0,0 +1,151 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/io/TextureImporter.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TextureImporter.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <optional>
+
5#include <filesystem>
+
6
+
7// Custom.
+
8#include "misc/Error.h"
+
9
+
10namespace ne {
+
11 enum class TextureImportFormat {
+
12 R, //< BC4 compression, only one 8 bit channel, can be used for heightmaps for example.
+
13 RG, //< BC5 compression, 8 bits for R and 8 bits for G channel, can be used for normal maps.
+
14 RGB, //< BC1 compression, bits per channel: 5 for R, 6 for G, 5 for B.
+
15 RGB_1BIT_A, //< BC1 compression, bits per channel: 5 for R, 6 for G, 5 for B and 0 or 1 bit for alpha.
+
16 RGB_8BIT_A, //< BC3 compression, bits per channel: 5 for R, 6 for G, 5 for B and 8 bit for alpha.
+
17 HDR, //< BC6H compression, used for HDR textures.
+
18 RGB_HIGH_QUALITY, //< BC7 compression, high quality of the compressed image but bigger file size and
+
19 // longer import.
+
20 RGBA_HIGH_QUALITY, //< BC7 compression, high quality of the compressed image but bigger file size and
+
21 // longer import.
+
22 };
+
23
+ +
29 public:
+
30 TextureImporter() = delete;
+
31
+
37 static constexpr const char* getImportedFileName() { return pImportedFileName; }
+
38
+
53 [[nodiscard]] static std::optional<Error> importTexture(
+
54 const std::filesystem::path& pathToTexture,
+
55 TextureImportFormat textureImportFormat,
+
56 const std::string& sPathToOutputDirRelativeRes,
+
57 const std::string& sOutputDirectoryName);
+
58
+
59 private:
+
61 static constexpr auto pImportedFileName = "t";
+
62 };
+
63}
+
Definition: TextureImporter.h:28
+
static std::optional< Error > importTexture(const std::filesystem::path &pathToTexture, TextureImportFormat textureImportFormat, const std::string &sPathToOutputDirRelativeRes, const std::string &sOutputDirectoryName)
Definition: TextureImporter.cpp:74
+
static constexpr const char * getImportedFileName()
Definition: TextureImporter.h:37
+
static constexpr auto pImportedFileName
Definition: TextureImporter.h:61
+
+
+ + + + diff --git a/TextureManager_8h_source.html b/TextureManager_8h_source.html new file mode 100644 index 000000000..2a4278e17 --- /dev/null +++ b/TextureManager_8h_source.html @@ -0,0 +1,187 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/material/TextureManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TextureManager.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <unordered_map>
+
5#include <string>
+
6#include <mutex>
+
7#include <memory>
+
8#include <variant>
+
9
+
10// Custom.
+
11#include "misc/Error.h"
+
12#include "render/general/resource/GpuResource.h"
+
13#include "material/TextureHandle.h"
+
14
+
15namespace ne {
+
16 class TextureManager;
+
17 class GpuResourceManager;
+
18
+ +
21 // Texture handles will notify texture manager in destructor to mark referenced texture resource
+
22 // as not used so that texture manager can release the texture resource from memory
+
23 // if no texture handle is referencing it.
+
24 friend class TextureHandle;
+
25
+
26 public:
+
27 TextureManager(const TextureManager&) = delete;
+
28 TextureManager& operator=(const TextureManager&) = delete;
+
29
+
30 TextureManager() = delete;
+
31
+ +
38
+ +
41
+ +
48
+
62 std::variant<std::unique_ptr<TextureHandle>, Error>
+
63 getTexture(const std::string& sPathToResourceRelativeRes);
+
64
+
65 private:
+ +
69 std::unique_ptr<GpuResource> pTexture;
+
70
+ +
73 };
+
74
+
82 void releaseTextureResourceIfNotUsed(const std::string& sPathToResourceRelativeRes);
+
83
+ +
86
+
96 std::unique_ptr<TextureHandle> createNewTextureHandle(const std::string& sPathToResourceRelativeRes);
+
97
+
106 std::variant<std::unique_ptr<TextureHandle>, Error>
+
107 loadTextureAndCreateNewTextureHandle(const std::string& sPathToResourceRelativeRes);
+
108
+
113 std::pair<std::recursive_mutex, std::unordered_map<std::string, TextureResource>> mtxTextureResources;
+
114
+ +
117
+ +
120 };
+
121}
+
Definition: Error.h:27
+
Definition: GpuResourceManager.h:43
+
Definition: TextureHandle.h:15
+
Definition: TextureManager.h:20
+
std::pair< std::recursive_mutex, std::unordered_map< std::string, TextureResource > > mtxTextureResources
Definition: TextureManager.h:113
+
std::variant< std::unique_ptr< TextureHandle >, Error > loadTextureAndCreateNewTextureHandle(const std::string &sPathToResourceRelativeRes)
Definition: TextureManager.cpp:161
+
size_t getTextureInMemoryCount()
Definition: TextureManager.cpp:48
+
~TextureManager()
Definition: TextureManager.cpp:22
+
GpuResourceManager *const pResourceManager
Definition: TextureManager.h:119
+
std::string sTextureFormatExtension
Definition: TextureManager.h:116
+
std::variant< std::unique_ptr< TextureHandle >, Error > getTexture(const std::string &sPathToResourceRelativeRes)
Definition: TextureManager.cpp:55
+
std::unique_ptr< TextureHandle > createNewTextureHandle(const std::string &sPathToResourceRelativeRes)
Definition: TextureManager.cpp:129
+
void determineTextureFormatExtension()
Definition: TextureManager.cpp:120
+
void releaseTextureResourceIfNotUsed(const std::string &sPathToResourceRelativeRes)
Definition: TextureManager.cpp:77
+
Definition: TextureManager.h:67
+
std::unique_ptr< GpuResource > pTexture
Definition: TextureManager.h:69
+
size_t iActiveTextureHandleCount
Definition: TextureManager.h:72
+
+
+ + + + diff --git a/ThreadPool_8h_source.html b/ThreadPool_8h_source.html new file mode 100644 index 000000000..245e4fb5a --- /dev/null +++ b/ThreadPool_8h_source.html @@ -0,0 +1,157 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/misc/ThreadPool.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ThreadPool.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <atomic>
+
5#include <functional>
+
6#include <mutex>
+
7#include <queue>
+
8#include <condition_variable>
+
9
+
10namespace ne {
+
14 class ThreadPool {
+
15 public:
+
17 ThreadPool();
+
18
+
19 ThreadPool(const ThreadPool&) = delete;
+
20 ThreadPool& operator=(const ThreadPool&) = delete;
+
21
+ +
24
+
30 void addTask(const std::function<void()>& task);
+
31
+
37 void stop();
+
38
+
39 protected:
+
44 void processTasksThread();
+
45
+
46 private:
+
48 std::condition_variable cvNewTasks;
+
49
+
51 std::vector<std::thread> vRunningThreads;
+
52
+
57 std::pair<std::mutex, std::queue<std::function<void()>>> mtxTaskQueue;
+
58
+
63 std::atomic_flag bIsShuttingDown;
+
64
+
66 const unsigned int iMinThreadCount = 4;
+
67 };
+
68} // namespace ne
+
Definition: ThreadPool.h:14
+
std::pair< std::mutex, std::queue< std::function< void()> > > mtxTaskQueue
Definition: ThreadPool.h:57
+
std::vector< std::thread > vRunningThreads
Definition: ThreadPool.h:51
+
ThreadPool()
Definition: ThreadPool.cpp:11
+
std::atomic_flag bIsShuttingDown
Definition: ThreadPool.h:63
+
void stop()
Definition: ThreadPool.cpp:61
+
std::condition_variable cvNewTasks
Definition: ThreadPool.h:48
+
~ThreadPool()
Definition: ThreadPool.cpp:77
+
void processTasksThread()
Definition: ThreadPool.cpp:27
+
const unsigned int iMinThreadCount
Definition: ThreadPool.h:66
+
void addTask(const std::function< void()> &task)
Definition: ThreadPool.cpp:50
+
+
+ + + + diff --git a/Timer_8h_source.html b/Timer_8h_source.html new file mode 100644 index 000000000..7b1edb76b --- /dev/null +++ b/Timer_8h_source.html @@ -0,0 +1,227 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/misc/Timer.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Timer.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <future>
+
5#include <optional>
+
6#include <chrono>
+
7#include <vector>
+
8
+
9namespace ne {
+
10 class Node;
+
11
+
13 class Timer {
+
14 // Only node and game instance can create timers because they have some additional protection
+
15 // code to avoid shooting yourself in the foot (like if you forget to stop the timer).
+
16 // Although only nodes and game instances can create timers this does not mean that the timer
+
17 // depends on their functionality - no, the timer is modular and you can use it outside of these
+
18 // classes if you remove `friend class` and move functions from the `protected` section of
+
19 // the timer to the `public` section.
+
20 friend class Node;
+
21 friend class GameInstance;
+
22
+
23 public:
+
24 Timer() = delete;
+
25
+
26 ~Timer();
+
27
+
28 Timer(const Timer&) = delete;
+
29 Timer& operator=(const Timer&) = delete;
+
30
+ +
71 long long iTimeToWaitInMs, const std::function<void()>& callback, bool bIsLooping = false);
+
72
+
81 void start();
+
82
+
94 void stop(bool bDisableTimer = false);
+
95
+
109 std::optional<long long> getElapsedTimeInMs();
+
110
+
116 std::string getName() const;
+
117
+
123 size_t getStartCount();
+
124
+
130 bool isRunning();
+
131
+
138 bool isStopped();
+
139
+
145 bool isEnabled();
+
146
+
147 protected:
+
154 Timer(const std::string& sTimerName);
+
155
+
183 void setCallbackValidator(const std::function<bool(size_t)>& validator);
+
184
+
190 void setEnable(bool bEnable);
+
191
+
192 private:
+
198 void timerThread(std::chrono::milliseconds timeToWaitInMs);
+
199
+
201 std::optional<std::future<void>> timerThreadFuture;
+
202
+
204 std::optional<std::function<void()>> callbackForTimeout;
+
205
+
210 std::optional<std::function<bool(size_t)>> callbackValidator;
+
211
+
213 std::string sTimerName;
+
214
+
219 std::pair<std::mutex, std::optional<std::chrono::steady_clock::time_point>> mtxTimeWhenStarted;
+
220
+
222 size_t iStartCount = 0;
+
223
+ +
226
+
228 std::condition_variable cvTerminateTimerThread;
+
229
+
231 std::atomic_flag bIsShuttingDown{};
+
232
+
234 std::atomic_flag bIsStopRequested{};
+
235
+
237 std::optional<long long> elapsedTimeWhenStopped;
+
238
+
240 long long iTimeToWaitInMs = 0;
+
241
+
243 bool bIsRunning = false;
+
244
+
249 bool bIsEnabled = true;
+
250
+
252 bool bIsLooping = false;
+
253 };
+
254} // namespace ne
+
Definition: GameInstance.h:32
+
Definition: Node.h:39
+
Definition: Timer.h:13
+
std::string sTimerName
Definition: Timer.h:213
+
void stop(bool bDisableTimer=false)
Definition: Timer.cpp:115
+
bool bIsRunning
Definition: Timer.h:243
+
void timerThread(std::chrono::milliseconds timeToWaitInMs)
Definition: Timer.cpp:196
+
void setEnable(bool bEnable)
Definition: Timer.cpp:23
+
bool isEnabled()
Definition: Timer.cpp:191
+
std::condition_variable cvTerminateTimerThread
Definition: Timer.h:228
+
bool isRunning()
Definition: Timer.cpp:181
+
std::optional< std::function< bool(size_t)> > callbackValidator
Definition: Timer.h:210
+
void setCallbackValidator(const std::function< bool(size_t)> &validator)
Definition: Timer.cpp:13
+
size_t iStartCount
Definition: Timer.h:222
+
std::optional< std::function< void()> > callbackForTimeout
Definition: Timer.h:204
+
std::string getName() const
Definition: Timer.cpp:174
+
bool bIsLooping
Definition: Timer.h:252
+
bool bIsEnabled
Definition: Timer.h:249
+
std::mutex mtxTerminateTimerThread
Definition: Timer.h:225
+
std::pair< std::mutex, std::optional< std::chrono::steady_clock::time_point > > mtxTimeWhenStarted
Definition: Timer.h:219
+
std::optional< long long > elapsedTimeWhenStopped
Definition: Timer.h:237
+
bool isStopped()
Definition: Timer.cpp:186
+
long long iTimeToWaitInMs
Definition: Timer.h:240
+
size_t getStartCount()
Definition: Timer.cpp:176
+
void start()
Definition: Timer.cpp:77
+
std::atomic_flag bIsShuttingDown
Definition: Timer.h:231
+
std::optional< std::future< void > > timerThreadFuture
Definition: Timer.h:201
+
void setCallbackForTimeout(long long iTimeToWaitInMs, const std::function< void()> &callback, bool bIsLooping=false)
Definition: Timer.cpp:50
+
std::optional< long long > getElapsedTimeInMs()
Definition: Timer.cpp:155
+
std::atomic_flag bIsStopRequested
Definition: Timer.h:234
+
+
+ + + + diff --git a/UniqueValueGenerator_8h_source.html b/UniqueValueGenerator_8h_source.html new file mode 100644 index 000000000..33b31e0b9 --- /dev/null +++ b/UniqueValueGenerator_8h_source.html @@ -0,0 +1,135 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/misc/UniqueValueGenerator.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UniqueValueGenerator.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <string>
+
5#include <memory>
+
6
+
7namespace ne {
+ +
12 public:
+ +
14 UniqueValueGenerator& operator=(const UniqueValueGenerator&) = delete;
+
15 virtual ~UniqueValueGenerator();
+
16
+
24 static UniqueValueGenerator& get();
+
25
+
31 [[nodiscard]] std::string getUniqueWindowName();
+
32
+
33 private:
+
34 UniqueValueGenerator() = default;
+
35
+
39 unsigned long long iWindowCounter = 0;
+
40 };
+
41} // namespace ne
+
Definition: UniqueValueGenerator.h:11
+
std::string getUniqueWindowName()
Definition: UniqueValueGenerator.cpp:11
+
static UniqueValueGenerator & get()
Definition: UniqueValueGenerator.cpp:6
+
unsigned long long iWindowCounter
Definition: UniqueValueGenerator.h:39
+
+
+ + + + diff --git a/UnorderedMapFieldSerializer_8h_source.html b/UnorderedMapFieldSerializer_8h_source.html new file mode 100644 index 000000000..e67e2d11d --- /dev/null +++ b/UnorderedMapFieldSerializer_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/io/serializers/UnorderedMapFieldSerializer.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UnorderedMapFieldSerializer.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "io/serializers/IFieldSerializer.hpp"
+
5
+
6namespace ne {
+ +
12 public:
+ +
14 virtual ~UnorderedMapFieldSerializer() override = default;
+
15
+
23 virtual bool isFieldTypeSupported(const rfk::Field* pField) override;
+
24
+
43 [[nodiscard]] virtual std::optional<Error> serializeField(
+
44 toml::value* pTomlData,
+
45 Serializable* pFieldOwner,
+
46 const rfk::Field* pField,
+
47 const std::string& sSectionName,
+
48 const std::string& sEntityId,
+
49 size_t& iSubEntityId,
+
50 Serializable* pOriginalObject = nullptr) override;
+
51
+
67 [[nodiscard]] virtual std::optional<Error> deserializeField(
+
68 const toml::value* pTomlDocument,
+
69 const toml::value* pTomlValue,
+
70 Serializable* pFieldOwner,
+
71 const rfk::Field* pField,
+
72 const std::string& sOwnerSectionName,
+
73 const std::string& sEntityId,
+
74 std::unordered_map<std::string, std::string>& customAttributes) override;
+
75
+
86 [[nodiscard]] virtual std::optional<Error> cloneField(
+
87 Serializable* pFromInstance,
+
88 const rfk::Field* pFromField,
+
89 Serializable* pToInstance,
+
90 const rfk::Field* pToField) override;
+
91
+
103 virtual bool isFieldValueEqual(
+
104 Serializable* pFieldAOwner,
+
105 const rfk::Field* pFieldA,
+
106 Serializable* pFieldBOwner,
+
107 const rfk::Field* pFieldB) override;
+
108 };
+
109} // namespace ne
+
Definition: IFieldSerializer.hpp:33
+
Definition: Serializable.h:113
+
Definition: UnorderedMapFieldSerializer.h:11
+
virtual bool isFieldTypeSupported(const rfk::Field *pField) override
Definition: UnorderedMapFieldSerializer.cpp:7
+
virtual std::optional< Error > cloneField(Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField) override
Definition: UnorderedMapFieldSerializer.cpp:342
+
virtual std::optional< Error > serializeField(toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr) override
Definition: UnorderedMapFieldSerializer.cpp:39
+
virtual std::optional< Error > deserializeField(const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes) override
Definition: UnorderedMapFieldSerializer.cpp:263
+
virtual bool isFieldValueEqual(Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB) override
Definition: UnorderedMapFieldSerializer.cpp:384
+
+
+ + + + diff --git a/UploadBuffer_8h_source.html b/UploadBuffer_8h_source.html new file mode 100644 index 000000000..a0814f096 --- /dev/null +++ b/UploadBuffer_8h_source.html @@ -0,0 +1,158 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/general/resource/UploadBuffer.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UploadBuffer.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <memory>
+
5#include <cstring>
+
6
+
7namespace ne {
+
8 class GpuResource;
+
9
+ +
15 public:
+ +
24 std::unique_ptr<GpuResource> pGpuResourceToUse, size_t iElementSizeInBytes, size_t iElementCount);
+
25
+ +
27
+
28 UploadBuffer() = delete;
+
29 UploadBuffer(UploadBuffer&) = delete;
+
30 UploadBuffer& operator=(UploadBuffer&) = delete;
+
31
+
39 inline void copyDataToElement(size_t iElementIndex, const void* pData, size_t iDataSize) {
+
40 std::memcpy(&pMappedResourceData[iElementIndex * iElementSizeInBytes], pData, iDataSize);
+
41 }
+
42
+
48 size_t getElementCount() const;
+
49
+
55 size_t getElementSizeInBytes() const;
+
56
+ +
65
+
66 private:
+
72 std::unique_ptr<GpuResource> pGpuResource;
+
73
+
80 unsigned char* pMappedResourceData = nullptr;
+
81
+ +
84
+
86 size_t iElementCount = 0;
+
87 };
+
88} // namespace ne
+
Definition: GpuResource.h:16
+
Definition: UploadBuffer.h:14
+
void copyDataToElement(size_t iElementIndex, const void *pData, size_t iDataSize)
Definition: UploadBuffer.h:39
+
std::unique_ptr< GpuResource > pGpuResource
Definition: UploadBuffer.h:72
+
size_t getElementSizeInBytes() const
Definition: UploadBuffer.cpp:74
+
unsigned char * pMappedResourceData
Definition: UploadBuffer.h:80
+
size_t getElementCount() const
Definition: UploadBuffer.cpp:72
+
size_t iElementSizeInBytes
Definition: UploadBuffer.h:83
+
size_t iElementCount
Definition: UploadBuffer.h:86
+
GpuResource * getInternalResource() const
Definition: UploadBuffer.cpp:113
+
+
+ + + + diff --git a/VectorFieldSerializer_8h_source.html b/VectorFieldSerializer_8h_source.html new file mode 100644 index 000000000..6ec62fc54 --- /dev/null +++ b/VectorFieldSerializer_8h_source.html @@ -0,0 +1,167 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/io/serializers/VectorFieldSerializer.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VectorFieldSerializer.h
+
+
+
1#pragma once
+
2
+
3// Custom.
+
4#include "io/serializers/IFieldSerializer.hpp"
+
5
+
6namespace ne {
+ +
14 public:
+
15 VectorFieldSerializer() = default;
+
16 virtual ~VectorFieldSerializer() override = default;
+
17
+
25 virtual bool isFieldTypeSupported(const rfk::Field* pField) override;
+
26
+
45 [[nodiscard]] virtual std::optional<Error> serializeField(
+
46 toml::value* pTomlData,
+
47 Serializable* pFieldOwner,
+
48 const rfk::Field* pField,
+
49 const std::string& sSectionName,
+
50 const std::string& sEntityId,
+
51 size_t& iSubEntityId,
+
52 Serializable* pOriginalObject = nullptr) override;
+
53
+
69 [[nodiscard]] virtual std::optional<Error> deserializeField(
+
70 const toml::value* pTomlDocument,
+
71 const toml::value* pTomlValue,
+
72 Serializable* pFieldOwner,
+
73 const rfk::Field* pField,
+
74 const std::string& sOwnerSectionName,
+
75 const std::string& sEntityId,
+
76 std::unordered_map<std::string, std::string>& customAttributes) override;
+
77
+
88 [[nodiscard]] virtual std::optional<Error> cloneField(
+
89 Serializable* pFromInstance,
+
90 const rfk::Field* pFromField,
+
91 Serializable* pToInstance,
+
92 const rfk::Field* pToField) override;
+
93
+
105 virtual bool isFieldValueEqual(
+
106 Serializable* pFieldAOwner,
+
107 const rfk::Field* pFieldA,
+
108 Serializable* pFieldBOwner,
+
109 const rfk::Field* pFieldB) override;
+
110
+
111 private:
+
120 static bool isMostInnerTypeSerializable(const std::string& sFieldCanonicalTypeName);
+
121
+
123 static inline const std::string sStringCanonicalTypeName = "std::basic_string<char>";
+
124 };
+
125} // namespace ne
+
Definition: IFieldSerializer.hpp:33
+
Definition: Serializable.h:113
+
Definition: VectorFieldSerializer.h:13
+
virtual bool isFieldValueEqual(Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB) override
Definition: VectorFieldSerializer.cpp:474
+
virtual std::optional< Error > serializeField(toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr) override
Definition: VectorFieldSerializer.cpp:50
+
static const std::string sStringCanonicalTypeName
Definition: VectorFieldSerializer.h:123
+
virtual std::optional< Error > cloneField(Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField) override
Definition: VectorFieldSerializer.cpp:403
+
static bool isMostInnerTypeSerializable(const std::string &sFieldCanonicalTypeName)
Definition: VectorFieldSerializer.cpp:536
+
virtual bool isFieldTypeSupported(const rfk::Field *pField) override
Definition: VectorFieldSerializer.cpp:12
+
virtual std::optional< Error > deserializeField(const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes) override
Definition: VectorFieldSerializer.cpp:157
+
+
+ + + + diff --git a/VertexFormat_8h_source.html b/VertexFormat_8h_source.html new file mode 100644 index 000000000..43e21643c --- /dev/null +++ b/VertexFormat_8h_source.html @@ -0,0 +1,132 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/format/VertexFormat.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VertexFormat.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <memory>
+
5
+
6namespace ne {
+
7 class Renderer;
+
8
+
10 enum class VertexFormat {
+
11 MESH_NODE, //< Vertex format used by mesh nodes.
+
12 };
+
13
+ +
16 public:
+
17 VertexFormatDescription() = default;
+
18 virtual ~VertexFormatDescription() = default;
+
19
+
28 static std::unique_ptr<VertexFormatDescription>
+
29 createDescription(VertexFormat type, Renderer* pRenderer);
+
30 };
+
31}
+
Definition: Renderer.h:44
+
Definition: VertexFormat.h:15
+
static std::unique_ptr< VertexFormatDescription > createDescription(VertexFormat type, Renderer *pRenderer)
Definition: VertexFormat.cpp:18
+
+
+ + + + diff --git a/VulkanAlignmentConstants_8hpp_source.html b/VulkanAlignmentConstants_8hpp_source.html new file mode 100644 index 000000000..72b58be6f --- /dev/null +++ b/VulkanAlignmentConstants_8hpp_source.html @@ -0,0 +1,122 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/shader/VulkanAlignmentConstants.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VulkanAlignmentConstants.hpp
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <cstddef>
+
5
+
6namespace ne {
+
8 static constexpr size_t iVkScalarAlignment = 4; // NOLINT
+
9
+
11 static constexpr size_t iVkVec2Alignment = 8; // NOLINT
+
12
+
14 static constexpr size_t iVkVec4Alignment = 16; // NOLINT
+
15
+
17 static constexpr size_t iVkMat4Alignment = iVkVec4Alignment;
+
18} // namespace ne
+
+
+ + + + diff --git a/VulkanFrameResource_8h_source.html b/VulkanFrameResource_8h_source.html new file mode 100644 index 000000000..fc673a02a --- /dev/null +++ b/VulkanFrameResource_8h_source.html @@ -0,0 +1,143 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/vulkan/resource/VulkanFrameResource.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VulkanFrameResource.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <optional>
+
5
+
6// Custom.
+
7#include "render/general/resource/frame/FrameResource.h"
+
8#include "misc/Error.h"
+
9
+
10// External.
+
11#include "vulkan/vulkan.h"
+
12
+
13namespace ne {
+
14 class Renderer;
+
15
+ +
18 virtual ~VulkanFrameResource() override;
+
19
+
21 VkCommandBuffer pCommandBuffer = nullptr;
+
22
+
24 VkFence pFence = nullptr;
+
25
+
26 private:
+
34 [[nodiscard]] virtual std::optional<Error> initialize(Renderer* pRenderer) override;
+
35
+
37 Renderer* pRenderer = nullptr;
+
38 };
+
39} // namespace ne
+
Definition: Renderer.h:44
+
Definition: FrameResource.h:15
+
Definition: VulkanFrameResource.h:17
+
Renderer * pRenderer
Definition: VulkanFrameResource.h:37
+
VkCommandBuffer pCommandBuffer
Definition: VulkanFrameResource.h:21
+
VkFence pFence
Definition: VulkanFrameResource.h:24
+
virtual std::optional< Error > initialize(Renderer *pRenderer) override
Definition: VulkanFrameResource.cpp:52
+
+
+ + + + diff --git a/VulkanPipeline_8h_source.html b/VulkanPipeline_8h_source.html new file mode 100644 index 000000000..777ebc901 --- /dev/null +++ b/VulkanPipeline_8h_source.html @@ -0,0 +1,249 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/vulkan/pipeline/VulkanPipeline.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VulkanPipeline.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <memory>
+
5#include <unordered_set>
+
6
+
7// Custom.
+
8#include "render/general/pipeline/Pipeline.h"
+
9#include "render/general/resource/frame/FrameResourceManager.h"
+
10#include "shader/general/resource/ShaderArrayIndexManager.h"
+
11#include "misc/StdHashes.hpp"
+
12
+
13// External.
+
14#include "vulkan/vulkan.h"
+
15
+
16namespace ne {
+
17 class VulkanRenderer;
+
18 class GlslShader;
+
19
+
21 class VulkanPipeline : public Pipeline {
+
22 public:
+ +
25 InternalResources() = default;
+
26
+
28 VkPipelineLayout pPipelineLayout = nullptr;
+
29
+
31 VkPipeline pPipeline = nullptr;
+
32
+
34 VkDescriptorSetLayout pDescriptorSetLayout = nullptr;
+
35
+
37 VkDescriptorPool pDescriptorPool = nullptr;
+
38
+ +
56
+
65 std::unordered_map<std::string, uint32_t, StdStringHash, std::equal_to<>> resourceBindings;
+
66
+
85 std::unordered_map<std::string, std::unique_ptr<ShaderArrayIndexManager>>
+ +
87
+
89 bool bIsReadyForUsage = false;
+
90 };
+
91
+
92 VulkanPipeline() = delete;
+
93 VulkanPipeline(const VulkanPipeline&) = delete;
+
94 VulkanPipeline& operator=(const VulkanPipeline&) = delete;
+
95
+
96 virtual ~VulkanPipeline() override;
+
97
+
108 static std::variant<std::shared_ptr<VulkanPipeline>, Error> createGraphicsPipeline(
+ + +
111 std::unique_ptr<PipelineConfiguration> pPipelineConfiguration);
+
112
+
123 static std::variant<std::shared_ptr<VulkanPipeline>, Error> createComputePipeline(
+
124 Renderer* pRenderer, PipelineManager* pPipelineManager, const std::string& sComputeShaderName);
+
125
+
136 [[nodiscard]] std::optional<Error> bindBuffersIfUsed(
+
137 const std::array<GpuResource*, FrameResourceManager::getFrameResourceCount()>& vResources,
+
138 const std::string& sShaderResourceName,
+
139 VkDescriptorType descriptorType);
+
140
+
153 [[nodiscard]] std::optional<Error> bindImageIfUsed(
+
154 GpuResource* pImageResourceToBind,
+
155 std::string_view sShaderResourceName,
+
156 VkDescriptorType descriptorType,
+
157 VkImageLayout imageLayout,
+
158 VkSampler pSampler);
+
159
+
165 inline std::pair<std::recursive_mutex, InternalResources>* getInternalResources() {
+
166 return &mtxInternalResources;
+
167 }
+
168
+
169 protected:
+
184 [[nodiscard]] virtual std::optional<Error> releaseInternalResources() override;
+
185
+
194 [[nodiscard]] virtual std::optional<Error> restoreInternalResources() override;
+
195
+
196 private:
+ + + +
207 std::unique_ptr<PipelineConfiguration> pPipelineConfiguration);
+
208
+
218 [[nodiscard]] std::optional<Error> generateGraphicsPipeline();
+
219
+
231 [[nodiscard]] std::optional<Error>
+
232 generateComputePipelineForShader(const std::string& sComputeShaderName);
+
233
+
246 [[nodiscard]] std::optional<Error> createGraphicsPipeline(
+
247 VulkanRenderer* pVulkanRenderer,
+
248 GlslShader* pVertexShader,
+
249 GlslShader* pFragmentShader,
+
250 bool bUsePixelBlending);
+
251
+
261 [[nodiscard]] std::optional<Error>
+
262 createComputePipeline(VulkanRenderer* pVulkanRenderer, GlslShader* pComputeShader);
+
263
+
271 [[nodiscard]] std::optional<Error> bindFrameDataDescriptors();
+
272
+
284 std::variant<VkPushConstantRange, Error> definePushConstants(
+
285 const std::unordered_map<std::string, size_t>& pushConstantUintFieldOffsets,
+
286 const std::unordered_map<std::string, uint32_t, StdStringHash, std::equal_to<>>&
+
287 resourceBindings);
+
288
+
293 std::pair<std::recursive_mutex, InternalResources> mtxInternalResources;
+
294 };
+
295} // namespace ne
+
Definition: Error.h:27
+
static constexpr unsigned int getFrameResourceCount()
Definition: FrameResourceManager.h:74
+
Definition: GlslShader.h:20
+
Definition: GpuResource.h:16
+
Definition: PipelineManager.h:98
+
Definition: Pipeline.h:20
+
const std::unique_ptr< PipelineConfiguration > pPipelineConfiguration
Definition: Pipeline.h:299
+
Renderer *const pRenderer
Definition: Pipeline.h:305
+
PipelineManager *const pPipelineManager
Definition: Pipeline.h:302
+
Definition: Renderer.h:44
+
Definition: VulkanPipeline.h:21
+
std::pair< std::recursive_mutex, InternalResources > mtxInternalResources
Definition: VulkanPipeline.h:293
+
static std::variant< std::shared_ptr< VulkanPipeline >, Error > createGraphicsPipeline(Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration)
Definition: VulkanPipeline.cpp:65
+
virtual std::optional< Error > releaseInternalResources() override
Definition: VulkanPipeline.cpp:224
+
std::optional< Error > generateGraphicsPipeline()
Definition: VulkanPipeline.cpp:328
+
std::pair< std::recursive_mutex, InternalResources > * getInternalResources()
Definition: VulkanPipeline.h:165
+
std::optional< Error > bindImageIfUsed(GpuResource *pImageResourceToBind, std::string_view sShaderResourceName, VkDescriptorType descriptorType, VkImageLayout imageLayout, VkSampler pSampler)
Definition: VulkanPipeline.cpp:164
+
std::variant< VkPushConstantRange, Error > definePushConstants(const std::unordered_map< std::string, size_t > &pushConstantUintFieldOffsets, const std::unordered_map< std::string, uint32_t, StdStringHash, std::equal_to<> > &resourceBindings)
Definition: VulkanPipeline.cpp:297
+
std::optional< Error > bindFrameDataDescriptors()
Definition: VulkanPipeline.cpp:1051
+
std::optional< Error > generateComputePipelineForShader(const std::string &sComputeShaderName)
Definition: VulkanPipeline.cpp:416
+
std::optional< Error > bindBuffersIfUsed(const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> &vResources, const std::string &sShaderResourceName, VkDescriptorType descriptorType)
Definition: VulkanPipeline.cpp:99
+
static std::variant< std::shared_ptr< VulkanPipeline >, Error > createComputePipeline(Renderer *pRenderer, PipelineManager *pPipelineManager, const std::string &sComputeShaderName)
Definition: VulkanPipeline.cpp:83
+
virtual std::optional< Error > restoreInternalResources() override
Definition: VulkanPipeline.cpp:283
+
Definition: VulkanRenderer.h:26
+
Definition: StdHashes.hpp:10
+
Definition: VulkanPipeline.h:24
+
std::array< VkDescriptorSet, FrameResourceManager::getFrameResourceCount()> vDescriptorSets
Definition: VulkanPipeline.h:55
+
bool bIsReadyForUsage
Definition: VulkanPipeline.h:89
+
VkPipelineLayout pPipelineLayout
Definition: VulkanPipeline.h:28
+
VkDescriptorPool pDescriptorPool
Definition: VulkanPipeline.h:37
+
VkDescriptorSetLayout pDescriptorSetLayout
Definition: VulkanPipeline.h:34
+
std::unordered_map< std::string, uint32_t, StdStringHash, std::equal_to<> > resourceBindings
Definition: VulkanPipeline.h:65
+
std::unordered_map< std::string, std::unique_ptr< ShaderArrayIndexManager > > shaderArrayIndexManagers
Definition: VulkanPipeline.h:86
+
VkPipeline pPipeline
Definition: VulkanPipeline.h:31
+
+
+ + + + diff --git a/VulkanRenderer_8h_source.html b/VulkanRenderer_8h_source.html new file mode 100644 index 000000000..226c211e2 --- /dev/null +++ b/VulkanRenderer_8h_source.html @@ -0,0 +1,661 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/vulkan/VulkanRenderer.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VulkanRenderer.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <vector>
+
5
+
6// Custom.
+
7#include "render/Renderer.h"
+
8#include "render/general/resource/frame/FrameResourceManager.h"
+
9#include "render/vulkan/resource/VulkanResource.h"
+
10#include "material/Material.h"
+
11
+
12// External.
+
13#include "vulkan/vulkan.h"
+
14#include "VulkanMemoryAllocator/include/vk_mem_alloc.h"
+
15
+
16namespace ne {
+
17 class CameraProperties;
+
18 class VulkanPipeline;
+
19 struct VulkanFrameResource;
+
20 struct QueuedForExecutionComputeShaders;
+
21 class ComputeShaderInterface;
+
22 class MeshNode;
+
23 class Pipeline;
+
24
+
26 class VulkanRenderer : public Renderer {
+
27 public:
+
28 VulkanRenderer() = delete;
+
29 VulkanRenderer(const VulkanRenderer&) = delete;
+
30 VulkanRenderer& operator=(const VulkanRenderer&) = delete;
+
31
+
32 virtual ~VulkanRenderer() override;
+
33
+
39 static uint32_t getUsedVulkanVersion();
+
40
+
46 static constexpr VkFormat getDepthImageFormat() { return depthImageFormat; }
+
47
+
53 static constexpr VkFormat getShadowMapFormat() { return shadowMapFormat; }
+
54
+
61 static constexpr VkFormat getShadowMappingPointLightColorTargetFormat() {
+ +
63 }
+
64
+
76 static std::variant<std::unique_ptr<Renderer>, std::pair<Error, std::string>>
+
77 create(GameManager* pGameManager, const std::vector<std::string>& vBlacklistedGpuNames);
+
78
+
89 static void setObjectDebugOnlyName(
+
90 Renderer* pRenderer, void* pObject, VkObjectType objectType, const std::string& sResourceName);
+
91
+
97 VkSampler getTextureSampler();
+
98
+
107 virtual std::vector<std::string> getSupportedGpuNames() const override;
+
108
+
114 virtual std::variant<std::set<std::pair<unsigned int, unsigned int>>, Error>
+
115 getSupportedRenderResolutions() const override;
+
116
+
125 virtual std::variant<std::set<std::pair<unsigned int, unsigned int>>, Error>
+
126 getSupportedRefreshRates() const override;
+
127
+
133 virtual RendererType getType() const override;
+
134
+
143 virtual std::string getUsedApiVersion() const override;
+
144
+
150 virtual std::string getCurrentlyUsedGpuName() const override;
+
151
+
157 virtual void waitForGpuToFinishWorkUpToThisPoint() override;
+
158
+
165 std::variant<VkCommandBuffer, Error> createOneTimeSubmitCommandBuffer();
+
166
+
177 [[nodiscard]] std::optional<Error>
+
178 submitWaitDestroyOneTimeSubmitCommandBuffer(VkCommandBuffer pOneTimeSubmitCommandBuffer);
+
179
+
193 [[nodiscard]] std::optional<Error> transitionImageLayout(
+
194 VkImage pImage,
+
195 VkFormat imageFormat,
+
196 VkImageAspectFlags aspect,
+
197 uint32_t levelCount,
+
198 uint32_t layerCount,
+
199 VkImageLayout oldLayout,
+
200 VkImageLayout newLayout);
+
201
+
207 virtual std::pair<unsigned int, unsigned int> getRenderTargetSize() const override;
+
208
+
214 VkDevice getLogicalDevice() const;
+
215
+
221 VkPhysicalDevice getPhysicalDevice() const;
+
222
+
228 VkInstance getInstance() const;
+
229
+
235 VkRenderPass getMainRenderPass() const;
+
236
+
242 VkRenderPass getDepthOnlyRenderPass() const;
+
243
+
253 VkRenderPass getShadowMappingRenderPass(bool bIsForPointLights) const;
+
254
+
260 VkCommandPool getCommandPool() const;
+
261
+
267 VkQueue getGraphicsQueue() const;
+
268
+
278 VkSampler getComputeTextureSampler() const;
+
279
+
287 VkSampler getShadowTextureSampler() const;
+
288
+
295 std::optional<VkExtent2D> getSwapChainExtent() const;
+
296
+
302 VkSampleCountFlagBits getMsaaSampleCount() const;
+
303
+ +
317
+
318 protected:
+ +
327
+
337 virtual std::variant<AntialiasingQuality, Error> getMaxSupportedAntialiasingQuality() const override;
+
338
+
345 virtual void onFramebufferSizeChangedDerived(int iWidth, int iHeight) override;
+
346
+
353 [[nodiscard]] virtual std::optional<Error> onRenderSettingsChangedDerived() override;
+
354
+
364 virtual void waitForGpuToFinishUsingFrameResource(FrameResource* pFrameResource) override;
+
365
+
374 virtual bool isInitialized() const override;
+
375
+
376 private:
+ +
380 VkSurfaceCapabilitiesKHR capabilities;
+
381
+
383 std::vector<VkSurfaceFormatKHR> vSupportedFormats;
+
384
+
386 std::vector<VkPresentModeKHR> vSupportedPresentModes;
+
387 };
+
388
+ +
394 QueueFamilyIndices() = default;
+
395
+
401 bool isComplete() const {
+
402 return iGraphicsFamilyIndex.has_value() && iPresentFamilyIndex.has_value();
+
403 }
+
404
+
406 std::optional<uint32_t> iGraphicsFamilyIndex;
+
407
+
412 std::optional<uint32_t> iPresentFamilyIndex;
+
413 };
+
414
+ +
422 VkSemaphore pAcquireImageSemaphore = nullptr;
+
423
+
429 VkSemaphore pQueueSubmitSemaphore = nullptr;
+
430
+ +
436 };
+
437
+
443 static std::variant<std::vector<const char*>, Error> getRequiredVulkanInstanceExtensions();
+
444
+
454 static std::variant<std::string, Error>
+
455 isGpuSupportsUsedDeviceExtensions(VkPhysicalDevice pGpuDevice);
+
456
+ +
468 VkRenderPass pShadowMappingRenderPass,
+
469 VkCommandBuffer pCommandBuffer,
+
470 VkFramebuffer pFramebufferToUse,
+
471 uint32_t iShadowMapSize);
+
472
+
473#if defined(DEBUG)
+
480 [[nodiscard]] static std::optional<Error> makeSureUsedValidationLayersSupported();
+
481
+
492 static VkResult createDebugUtilsMessengerEXT(
+
493 VkInstance pInstance,
+
494 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
+
495 const VkAllocationCallbacks* pAllocator,
+
496 VkDebugUtilsMessengerEXT* pDebugMessenger);
+
497
+
505 static void destroyDebugUtilsMessengerEXT(
+
506 VkInstance pInstance,
+
507 VkDebugUtilsMessengerEXT pDebugMessenger,
+
508 const VkAllocationCallbacks* pAllocator);
+
509
+
517 static PFN_vkCmdBeginDebugUtilsLabelEXT requestVkCmdBeginDebugUtilsLabelEXT(VkInstance pInstance);
+
518
+
526 static PFN_vkCmdEndDebugUtilsLabelEXT requestVkCmdEndDebugUtilsLabelEXT(VkInstance pInstance);
+
527#endif
+
528
+
541 [[nodiscard]] std::optional<Error> initialize(const std::vector<std::string>& vBlacklistedGpuNames);
+
542
+
551 [[nodiscard]] std::optional<Error>
+
552 initializeVulkan(const std::vector<std::string>& vBlacklistedGpuNames);
+
553
+
559 [[nodiscard]] std::optional<Error> createVulkanInstance();
+
560
+
569 [[nodiscard]] std::optional<Error> createWindowSurface();
+
570
+
579 size_t rateGpuSuitability(VkPhysicalDevice pGpuDevice);
+
580
+
590 std::variant<std::string, Error> isDeviceSuitable(VkPhysicalDevice pGpu);
+
591
+
604 std::variant<SwapChainSupportDetails, Error> querySwapChainSupportDetails(VkPhysicalDevice pGpu);
+
605
+
616 std::variant<VulkanRenderer::QueueFamilyIndices, Error>
+
617 queryQueueFamilyIndices(VkPhysicalDevice pGpu);
+
618
+
633 std::variant<std::string, Error> isGpuSupportsSwapChain(VkPhysicalDevice pGpu);
+
634
+
645 [[nodiscard]] std::optional<Error>
+
646 pickPhysicalDevice(const std::vector<std::string>& vBlacklistedGpuNames);
+
647
+
655 [[nodiscard]] std::optional<Error> createLogicalDevice();
+
656
+
664 [[nodiscard]] std::optional<Error> createSwapChain();
+
665
+
673 [[nodiscard]] std::optional<Error> createCommandPool();
+
674
+
682 std::variant<VkExtent2D, Error>
+
683 pickSwapChainExtent(const VkSurfaceCapabilitiesKHR& surfaceCapabilities);
+
684
+
696 [[nodiscard]] std::optional<Error> createRenderPasses(bool bIsRendererInitialization);
+
697
+
705 [[nodiscard]] std::optional<Error> createMainRenderPass();
+
706
+
714 [[nodiscard]] std::optional<Error> createDepthOnlyRenderPass();
+
715
+
723 [[nodiscard]] std::optional<Error> createShadowMappingRenderPasses();
+
724
+
734 void destroySwapChainAndDependentResources(bool bDestroyPipelineManager);
+
735
+
743 [[nodiscard]] std::optional<Error> createTextureSampler();
+
744
+
754 [[nodiscard]] std::optional<Error> createComputeTextureSampler();
+
755
+
765 [[nodiscard]] std::optional<Error> createShadowTextureSampler();
+
766
+ +
773
+
781 [[nodiscard]] std::optional<Error> createDepthImage();
+
782
+
791 [[nodiscard]] std::optional<Error> createMsaaImage();
+
792
+
799 [[nodiscard]] std::optional<Error> recreateSwapChainAndDependentResources();
+
800
+
806 [[nodiscard]] std::optional<Error> createSwapChainFramebuffers();
+
807
+
814 virtual void prepareRenderTargetForNextFrame() override;
+
815
+
827 virtual void prepareForDrawingNextFrame(
+
828 CameraProperties* pCameraProperties, FrameResource* pCurrentFrameResource) override;
+
829
+
836 void startMainRenderPass(VkCommandBuffer pCommandBuffer, size_t iAcquiredImageIndex);
+
837
+
844 void startDepthOnlyRenderPass(VkCommandBuffer pCommandBuffer, size_t iAcquiredImageIndex);
+
845
+
854 virtual void drawShadowMappingPass(
+
855 FrameResource* pCurrentFrameResource,
+
856 size_t iCurrentFrameResourceIndex,
+
857 GraphicsPipelineRegistry* pGraphicsPipelines) override;
+
858
+
866 virtual void drawMeshesDepthPrepass(
+
867 FrameResource* pCurrentFrameResource,
+
868 size_t iCurrentFrameResourceIndex,
+
869 const std::vector<Renderer::MeshesInFrustum::PipelineInFrustumInfo>& vOpaquePipelines) override;
+
870
+ +
881 FrameResource* pCurrentFrameResource,
+
882 size_t iCurrentFrameResourceIndex,
+
883 ComputeExecutionStage stage) override;
+
884
+
893 virtual void drawMeshesMainPass(
+
894 FrameResource* pCurrentFrameResource,
+
895 size_t iCurrentFrameResourceIndex,
+
896 const std::vector<Renderer::MeshesInFrustum::PipelineInFrustumInfo>& vOpaquePipelines,
+
897 const std::vector<Renderer::MeshesInFrustum::PipelineInFrustumInfo>& vTransparentPipelines)
+
898 override;
+
899
+
906 virtual void
+
907 present(FrameResource* pCurrentFrameResource, size_t iCurrentFrameResourceIndex) override;
+
908
+ +
917 const std::vector<Renderer::MeshesInFrustum::PipelineInFrustumInfo>& pipelinesOfSpecificType,
+
918 VkCommandBuffer pCommandBuffer,
+
919 size_t iCurrentFrameResourceIndex);
+
920
+
926 [[nodiscard]] std::optional<Error> updateMsaaSampleCount();
+
927
+ +
938 VulkanFrameResource* pCurrentFrameResource,
+
939 size_t iCurrentFrameResourceIndex,
+
940 std::unordered_map<Pipeline*, std::unordered_set<ComputeShaderInterface*>>&
+
941 computePipelinesToSubmit);
+
942
+
944 VkInstance pInstance = nullptr;
+
945
+
947 VkSurfaceKHR pWindowSurface = nullptr;
+
948
+
950 VkPhysicalDevice pPhysicalDevice = nullptr;
+
951
+
953 VkDevice pLogicalDevice = nullptr;
+
954
+
956 VkQueue pGraphicsQueue = nullptr;
+
957
+
959 VkQueue pPresentQueue = nullptr;
+
960
+
962 VkSwapchainKHR pSwapChain = nullptr;
+
963
+
965 std::unique_ptr<VulkanResource> pDepthImage = nullptr;
+
966
+
975 std::unique_ptr<VulkanResource> pDepthImageNoMultisampling = nullptr;
+
976
+
978 std::unique_ptr<VulkanResource> pMsaaImage = nullptr;
+
979
+
981 VkRenderPass pDepthOnlyRenderPass = nullptr;
+
982
+
984 VkRenderPass pMainRenderPass = nullptr;
+
985
+ +
988
+
990 VkRenderPass pShadowMappingPointRenderPass = nullptr;
+
991
+
993 VkCommandPool pCommandPool = nullptr;
+
994
+
996 VkSampler pTextureSampler = nullptr;
+
997
+
1003 VkSampler pComputeTextureSampler = nullptr;
+
1004
+
1010 VkSampler pShadowTextureSampler = nullptr;
+
1011
+
1012#if defined(DEBUG)
+
1017 VkDebugUtilsMessengerEXT pValidationLayerDebugMessenger = nullptr;
+
1018#endif
+
1019
+
1025 std::vector<VkImage> vSwapChainImages;
+
1026
+
1032 std::vector<VkImageView> vSwapChainImageViews;
+
1033
+
1039 std::vector<VkFramebuffer> vSwapChainFramebuffersMainRenderPass;
+
1040
+ +
1047
+
1056 std::vector<std::pair<VkFence, size_t>> vSwapChainImageFenceRefs;
+
1057
+
1063 std::vector<SwapChainImageSemaphores> vImageSemaphores;
+
1064
+ +
1067
+
1069 std::vector<std::string> vSupportedGpuNames;
+
1070
+
1072 std::string sUsedGpuName;
+
1073
+ +
1076
+
1078 std::optional<VkExtent2D> swapChainExtent;
+
1079
+
1081 VkSampleCountFlagBits msaaSampleCount = VK_SAMPLE_COUNT_1_BIT;
+
1082
+ +
1085
+ +
1088
+ +
1091
+ +
1097
+ +
1100
+
1102 bool bIsBeingDestroyed = false;
+
1103
+
1105 static constexpr size_t iMainRenderPassColorAttachmentIndex = 0;
+
1106
+
1108 static constexpr size_t iMainRenderPassDepthAttachmentIndex = 1;
+
1109
+ +
1112
+ +
1115
+ +
1118
+
1120 static constexpr auto swapChainImageFormat = VK_FORMAT_B8G8R8A8_UNORM;
+
1121
+
1123 static constexpr auto swapChainImageColorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
+
1124
+
1126 static constexpr auto depthImageFormat = VK_FORMAT_D32_SFLOAT;
+
1127
+
1129 static constexpr auto shadowMapFormat = VK_FORMAT_D32_SFLOAT;
+
1130
+
1134 static constexpr auto shadowMappingPointLightColorTargetFormat = VK_FORMAT_R32_SFLOAT;
+
1135
+
1137 static constexpr auto depthImageTiling = VK_IMAGE_TILING_OPTIMAL;
+
1138
+
1140 static constexpr auto indexTypeFormat = VK_INDEX_TYPE_UINT32;
+
1141
+
1143 static constexpr auto depthResolveMode = VK_RESOLVE_MODE_MAX_BIT;
+
1144
+
1146 static constexpr auto stencilResolveMode = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT;
+
1147
+
1149 static constexpr uint32_t iUsedVulkanVersion = VK_API_VERSION_1_2;
+
1150
+
1152 static inline const std::vector<const char*> vUsedDeviceExtensionNames = {
+
1153 VK_KHR_SWAPCHAIN_EXTENSION_NAME};
+
1154
+
1155#if defined(DEBUG)
+
1161 static inline const std::vector<const char*> vUsedValidationLayerNames = {
+
1162 "VK_LAYER_KHRONOS_validation"};
+
1163#endif
+
1164 };
+
1165} // namespace ne
+
Definition: CameraProperties.h:22
+
Definition: Error.h:27
+
Definition: GameManager.h:34
+
Definition: GpuResource.h:16
+
Definition: Pipeline.h:20
+
Definition: Renderer.h:44
+
GameManager * pGameManager
Definition: Renderer.h:899
+
Definition: VulkanRenderer.h:26
+
std::vector< VkImageView > vSwapChainImageViews
Definition: VulkanRenderer.h:1032
+
std::variant< std::string, Error > isGpuSupportsSwapChain(VkPhysicalDevice pGpu)
Definition: VulkanRenderer.cpp:816
+
virtual std::optional< Error > onRenderSettingsChangedDerived() override
Definition: VulkanRenderer.cpp:3989
+
virtual void executeComputeShadersOnGraphicsQueue(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, ComputeExecutionStage stage) override
Definition: VulkanRenderer.cpp:3500
+
VkInstance getInstance() const
Definition: VulkanRenderer.cpp:2760
+
VkRenderPass pShadowMappingPointRenderPass
Definition: VulkanRenderer.h:990
+
VkSampler getTextureSampler()
Definition: VulkanRenderer.cpp:2680
+
std::optional< Error > createSwapChain()
Definition: VulkanRenderer.cpp:1214
+
std::variant< VulkanRenderer::QueueFamilyIndices, Error > queryQueueFamilyIndices(VkPhysicalDevice pGpu)
Definition: VulkanRenderer.cpp:761
+
std::optional< Error > createComputeTextureSampler()
Definition: VulkanRenderer.cpp:2018
+
virtual void present(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex) override
Definition: VulkanRenderer.cpp:3602
+
std::optional< Error > createSwapChainFramebuffers()
Definition: VulkanRenderer.cpp:2316
+
static constexpr size_t iMainRenderPassColorAttachmentIndex
Definition: VulkanRenderer.h:1105
+
virtual void drawShadowMappingPass(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, GraphicsPipelineRegistry *pGraphicsPipelines) override
Definition: VulkanRenderer.cpp:3000
+
static constexpr VkFormat getShadowMappingPointLightColorTargetFormat()
Definition: VulkanRenderer.h:61
+
VkRenderPass getDepthOnlyRenderPass() const
Definition: VulkanRenderer.cpp:2764
+
VkRenderPass getShadowMappingRenderPass(bool bIsForPointLights) const
Definition: VulkanRenderer.cpp:2766
+
void destroySwapChainAndDependentResources(bool bDestroyPipelineManager)
Definition: VulkanRenderer.cpp:1871
+
bool bIsVulkanInitialized
Definition: VulkanRenderer.h:1090
+
bool bNeedToRecreateSwapchain
Definition: VulkanRenderer.h:1096
+
virtual GpuResource * getDepthTextureNoMultisampling() override
Definition: VulkanRenderer.cpp:2785
+
VkCommandPool pCommandPool
Definition: VulkanRenderer.h:993
+
static constexpr auto depthImageFormat
Definition: VulkanRenderer.h:1126
+
std::optional< VkExtent2D > swapChainExtent
Definition: VulkanRenderer.h:1078
+
std::optional< Error > pickPhysicalDevice(const std::vector< std::string > &vBlacklistedGpuNames)
Definition: VulkanRenderer.cpp:892
+
static constexpr VkFormat getShadowMapFormat()
Definition: VulkanRenderer.h:53
+
std::optional< Error > createShadowMappingRenderPasses()
Definition: VulkanRenderer.cpp:1743
+
VkRenderPass getMainRenderPass() const
Definition: VulkanRenderer.cpp:2762
+
uint32_t iSwapChainImageCount
Definition: VulkanRenderer.h:1084
+
std::optional< Error > transitionImageLayout(VkImage pImage, VkFormat imageFormat, VkImageAspectFlags aspect, uint32_t levelCount, uint32_t layerCount, VkImageLayout oldLayout, VkImageLayout newLayout)
Definition: VulkanRenderer.cpp:2886
+
std::unique_ptr< VulkanResource > pDepthImage
Definition: VulkanRenderer.h:965
+
virtual void waitForGpuToFinishWorkUpToThisPoint() override
Definition: VulkanRenderer.cpp:2709
+
std::optional< Error > createDepthImage()
Definition: VulkanRenderer.cpp:2138
+
std::optional< Error > initialize(const std::vector< std::string > &vBlacklistedGpuNames)
Definition: VulkanRenderer.cpp:203
+
VkSampleCountFlagBits getMsaaSampleCount() const
Definition: VulkanRenderer.cpp:2783
+
std::optional< Error > initializeVulkan(const std::vector< std::string > &vBlacklistedGpuNames)
Definition: VulkanRenderer.cpp:224
+
size_t rateGpuSuitability(VkPhysicalDevice pGpuDevice)
Definition: VulkanRenderer.cpp:494
+
std::variant< SwapChainSupportDetails, Error > querySwapChainSupportDetails(VkPhysicalDevice pGpu)
Definition: VulkanRenderer.cpp:690
+
static constexpr auto swapChainImageColorSpace
Definition: VulkanRenderer.h:1123
+
VkDevice pLogicalDevice
Definition: VulkanRenderer.h:953
+
VkCommandPool getCommandPool() const
Definition: VulkanRenderer.cpp:2773
+
bool bIsBeingDestroyed
Definition: VulkanRenderer.h:1102
+
void startDepthOnlyRenderPass(VkCommandBuffer pCommandBuffer, size_t iAcquiredImageIndex)
Definition: VulkanRenderer.cpp:2606
+
virtual std::variant< AntialiasingQuality, Error > getMaxSupportedAntialiasingQuality() const override
Definition: VulkanRenderer.cpp:97
+
bool isUsedDepthImageFormatSupported()
Definition: VulkanRenderer.cpp:2123
+
std::unique_ptr< VulkanResource > pMsaaImage
Definition: VulkanRenderer.h:978
+
VkQueue pPresentQueue
Definition: VulkanRenderer.h:959
+
std::optional< Error > createWindowSurface()
Definition: VulkanRenderer.cpp:466
+
static constexpr auto depthImageTiling
Definition: VulkanRenderer.h:1137
+
VkSampler pComputeTextureSampler
Definition: VulkanRenderer.h:1003
+
std::optional< Error > submitWaitDestroyOneTimeSubmitCommandBuffer(VkCommandBuffer pOneTimeSubmitCommandBuffer)
Definition: VulkanRenderer.cpp:2836
+
std::vector< std::string > vSupportedGpuNames
Definition: VulkanRenderer.h:1069
+
static constexpr auto depthResolveMode
Definition: VulkanRenderer.h:1143
+
virtual std::string getCurrentlyUsedGpuName() const override
Definition: VulkanRenderer.cpp:2707
+
VkDevice getLogicalDevice() const
Definition: VulkanRenderer.cpp:2756
+
virtual std::vector< std::string > getSupportedGpuNames() const override
Definition: VulkanRenderer.cpp:2682
+
VkRenderPass pShadowMappingDirectionalSpotRenderPass
Definition: VulkanRenderer.h:987
+
virtual std::variant< std::set< std::pair< unsigned int, unsigned int > >, Error > getSupportedRenderResolutions() const override
Definition: VulkanRenderer.cpp:2685
+
std::variant< VkCommandBuffer, Error > createOneTimeSubmitCommandBuffer()
Definition: VulkanRenderer.cpp:2798
+
std::unique_ptr< VulkanResource > pDepthImageNoMultisampling
Definition: VulkanRenderer.h:975
+
VkSampler pTextureSampler
Definition: VulkanRenderer.h:996
+
static bool dispatchComputeShadersOnGraphicsQueue(VulkanFrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, std::unordered_map< Pipeline *, std::unordered_set< ComputeShaderInterface * > > &computePipelinesToSubmit)
Definition: VulkanRenderer.cpp:3941
+
static std::variant< std::unique_ptr< Renderer >, std::pair< Error, std::string > > create(GameManager *pGameManager, const std::vector< std::string > &vBlacklistedGpuNames)
Definition: VulkanRenderer.cpp:2665
+
std::optional< Error > createTextureSampler()
Definition: VulkanRenderer.cpp:1934
+
static void setObjectDebugOnlyName(Renderer *pRenderer, void *pObject, VkObjectType objectType, const std::string &sResourceName)
Definition: VulkanRenderer.cpp:3304
+
bool bIsUsingMsaaRenderTarget
Definition: VulkanRenderer.h:1099
+
static constexpr size_t iDepthOnlyRenderPassDepthImageAttachmentIndex
Definition: VulkanRenderer.h:1114
+
static const std::vector< const char * > vUsedDeviceExtensionNames
Definition: VulkanRenderer.h:1152
+
uint32_t iLastAcquiredImageIndex
Definition: VulkanRenderer.h:1087
+
virtual std::variant< std::set< std::pair< unsigned int, unsigned int > >, Error > getSupportedRefreshRates() const override
Definition: VulkanRenderer.cpp:2695
+
std::variant< std::string, Error > isDeviceSuitable(VkPhysicalDevice pGpu)
Definition: VulkanRenderer.cpp:550
+
VkSampler getComputeTextureSampler() const
Definition: VulkanRenderer.cpp:2777
+
static constexpr VkFormat getDepthImageFormat()
Definition: VulkanRenderer.h:46
+
QueueFamilyIndices physicalDeviceQueueFamilyIndices
Definition: VulkanRenderer.h:1075
+
virtual RendererType getType() const override
Definition: VulkanRenderer.cpp:2700
+
std::optional< Error > updateMsaaSampleCount()
Definition: VulkanRenderer.cpp:3883
+
static constexpr auto shadowMappingPointLightColorTargetFormat
Definition: VulkanRenderer.h:1134
+
std::vector< SwapChainImageSemaphores > vImageSemaphores
Definition: VulkanRenderer.h:1063
+
static constexpr size_t iMainRenderPassDepthAttachmentIndex
Definition: VulkanRenderer.h:1108
+
static constexpr auto indexTypeFormat
Definition: VulkanRenderer.h:1140
+
std::optional< Error > createVulkanInstance()
Definition: VulkanRenderer.cpp:367
+
virtual void drawMeshesDepthPrepass(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vOpaquePipelines) override
Definition: VulkanRenderer.cpp:3358
+
VkSampleCountFlagBits msaaSampleCount
Definition: VulkanRenderer.h:1081
+
std::optional< Error > createMsaaImage()
Definition: VulkanRenderer.cpp:2197
+
VkPhysicalDevice getPhysicalDevice() const
Definition: VulkanRenderer.cpp:2758
+
static constexpr size_t iDepthOnlyRenderPassDepthResolveTargetAttachmentIndex
Definition: VulkanRenderer.h:1117
+
VkPhysicalDevice pPhysicalDevice
Definition: VulkanRenderer.h:950
+
virtual void drawMeshesMainPass(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vOpaquePipelines, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vTransparentPipelines) override
Definition: VulkanRenderer.cpp:3567
+
std::vector< VkFramebuffer > vSwapChainFramebuffersDepthOnlyRenderPass
Definition: VulkanRenderer.h:1046
+
std::optional< Error > recreateSwapChainAndDependentResources()
Definition: VulkanRenderer.cpp:2241
+
std::optional< Error > createRenderPasses(bool bIsRendererInitialization)
Definition: VulkanRenderer.cpp:1452
+
static std::variant< std::string, Error > isGpuSupportsUsedDeviceExtensions(VkPhysicalDevice pGpuDevice)
Definition: VulkanRenderer.cpp:4067
+
virtual bool isInitialized() const override
Definition: VulkanRenderer.cpp:4038
+
VkQueue getGraphicsQueue() const
Definition: VulkanRenderer.cpp:2775
+
static constexpr auto stencilResolveMode
Definition: VulkanRenderer.h:1146
+
void startMainRenderPass(VkCommandBuffer pCommandBuffer, size_t iAcquiredImageIndex)
Definition: VulkanRenderer.cpp:2575
+
std::optional< Error > createLogicalDevice()
Definition: VulkanRenderer.cpp:1126
+
std::optional< Error > createMainRenderPass()
Definition: VulkanRenderer.cpp:1482
+
std::string sUsedGpuName
Definition: VulkanRenderer.h:1072
+
virtual void onFramebufferSizeChangedDerived(int iWidth, int iHeight) override
Definition: VulkanRenderer.cpp:3858
+
std::variant< VkExtent2D, Error > pickSwapChainExtent(const VkSurfaceCapabilitiesKHR &surfaceCapabilities)
Definition: VulkanRenderer.cpp:1417
+
VkSwapchainKHR pSwapChain
Definition: VulkanRenderer.h:962
+
std::optional< VkExtent2D > getSwapChainExtent() const
Definition: VulkanRenderer.cpp:2781
+
static uint32_t getUsedVulkanVersion()
Definition: VulkanRenderer.cpp:201
+
std::vector< VkImage > vSwapChainImages
Definition: VulkanRenderer.h:1025
+
static std::variant< std::vector< const char * >, Error > getRequiredVulkanInstanceExtensions()
Definition: VulkanRenderer.cpp:4040
+
size_t iCurrentImageSemaphore
Definition: VulkanRenderer.h:1066
+
virtual std::string getUsedApiVersion() const override
Definition: VulkanRenderer.cpp:2702
+
static void startShadowMappingRenderPass(VkRenderPass pShadowMappingRenderPass, VkCommandBuffer pCommandBuffer, VkFramebuffer pFramebufferToUse, uint32_t iShadowMapSize)
Definition: VulkanRenderer.cpp:2634
+
VkSurfaceKHR pWindowSurface
Definition: VulkanRenderer.h:947
+
std::optional< Error > createCommandPool()
Definition: VulkanRenderer.cpp:1400
+
static constexpr size_t iMainRenderPassColorResolveTargetAttachmentIndex
Definition: VulkanRenderer.h:1111
+
static constexpr auto shadowMapFormat
Definition: VulkanRenderer.h:1129
+
VkInstance pInstance
Definition: VulkanRenderer.h:944
+
VkSampler getShadowTextureSampler() const
Definition: VulkanRenderer.cpp:2779
+
static constexpr auto swapChainImageFormat
Definition: VulkanRenderer.h:1120
+
std::optional< Error > createDepthOnlyRenderPass()
Definition: VulkanRenderer.cpp:1610
+
VkRenderPass pMainRenderPass
Definition: VulkanRenderer.h:984
+
virtual void prepareRenderTargetForNextFrame() override
Definition: VulkanRenderer.cpp:2465
+
virtual void prepareForDrawingNextFrame(CameraProperties *pCameraProperties, FrameResource *pCurrentFrameResource) override
Definition: VulkanRenderer.cpp:2487
+
VkRenderPass pDepthOnlyRenderPass
Definition: VulkanRenderer.h:981
+
std::vector< std::pair< VkFence, size_t > > vSwapChainImageFenceRefs
Definition: VulkanRenderer.h:1056
+
static constexpr uint32_t iUsedVulkanVersion
Definition: VulkanRenderer.h:1149
+
std::vector< VkFramebuffer > vSwapChainFramebuffersMainRenderPass
Definition: VulkanRenderer.h:1039
+
VkQueue pGraphicsQueue
Definition: VulkanRenderer.h:956
+
void drawMeshesMainPassSpecificPipelines(const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &pipelinesOfSpecificType, VkCommandBuffer pCommandBuffer, size_t iCurrentFrameResourceIndex)
Definition: VulkanRenderer.cpp:3714
+
virtual void waitForGpuToFinishUsingFrameResource(FrameResource *pFrameResource) override
Definition: VulkanRenderer.cpp:4024
+
std::optional< Error > createShadowTextureSampler()
Definition: VulkanRenderer.cpp:2069
+
virtual std::pair< unsigned int, unsigned int > getRenderTargetSize() const override
Definition: VulkanRenderer.cpp:2993
+
VkSampler pShadowTextureSampler
Definition: VulkanRenderer.h:1010
+
Definition: FrameResource.h:15
+
Definition: PipelineRegistry.hpp:31
+
Definition: VulkanFrameResource.h:17
+
Definition: VulkanRenderer.h:393
+
std::optional< uint32_t > iPresentFamilyIndex
Definition: VulkanRenderer.h:412
+
bool isComplete() const
Definition: VulkanRenderer.h:401
+
std::optional< uint32_t > iGraphicsFamilyIndex
Definition: VulkanRenderer.h:406
+
Definition: VulkanRenderer.h:416
+
VkSemaphore pQueueSubmitSemaphore
Definition: VulkanRenderer.h:429
+
size_t iUsedFrameResourceIndex
Definition: VulkanRenderer.h:435
+
VkSemaphore pAcquireImageSemaphore
Definition: VulkanRenderer.h:422
+
Definition: VulkanRenderer.h:378
+
std::vector< VkPresentModeKHR > vSupportedPresentModes
Definition: VulkanRenderer.h:386
+
std::vector< VkSurfaceFormatKHR > vSupportedFormats
Definition: VulkanRenderer.h:383
+
VkSurfaceCapabilitiesKHR capabilities
Definition: VulkanRenderer.h:380
+
+
+ + + + diff --git a/VulkanResourceManager_8h_source.html b/VulkanResourceManager_8h_source.html new file mode 100644 index 000000000..26783f7c7 --- /dev/null +++ b/VulkanResourceManager_8h_source.html @@ -0,0 +1,245 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/vulkan/resource/VulkanResourceManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VulkanResourceManager.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <atomic>
+
5#include <optional>
+
6
+
7// Custom.
+
8#include "render/general/resource/GpuResourceManager.h"
+
9
+
10// External.
+
11#include "VulkanMemoryAllocator/include/vk_mem_alloc.h"
+
12
+
13namespace ne {
+
14 class VulkanRenderer;
+
15 class VulkanResource;
+
16
+ +
19 // Resource will request a memory allocator object during destruction.
+
20 friend class VulkanResource;
+
21
+
22 // Upload buffer needs access to memory allocator object for map/unmap operations.
+
23 friend class UploadBuffer;
+
24
+
25 // Uses memory allocator to load KTX textures.
+
26 friend class KtxLoadingCallbackManager;
+
27
+
28 public:
+
29 VulkanResourceManager() = delete;
+ +
31 VulkanResourceManager& operator=(const VulkanResourceManager&) = delete;
+
32
+
33 virtual ~VulkanResourceManager() override;
+
34
+
42 static VkFormat convertTextureResourceFormatToVkFormat(ShaderReadWriteTextureResourceFormat format);
+
43
+
51 static std::variant<std::unique_ptr<VulkanResourceManager>, Error> create(VulkanRenderer* pRenderer);
+
52
+
58 virtual size_t getTotalVideoMemoryInMb() const override;
+
59
+
65 virtual size_t getUsedVideoMemoryInMb() const override;
+
66
+
80 std::variant<std::unique_ptr<VulkanResource>, Error> createBuffer(
+
81 const std::string& sResourceName,
+
82 const VkBufferCreateInfo& bufferInfo,
+
83 const VmaAllocationCreateInfo& allocationInfo,
+
84 unsigned int iElementSizeInBytes,
+
85 unsigned int iElementCount);
+
86
+
103 std::variant<std::unique_ptr<VulkanResource>, Error> createImage(
+
104 const std::string& sResourceName,
+
105 uint32_t iImageWidth,
+
106 uint32_t iImageHeight,
+
107 uint32_t iTextureMipLevelCount,
+
108 VkSampleCountFlagBits sampleCount,
+
109 VkFormat imageFormat,
+
110 VkImageTiling imageTilingMode,
+
111 VkImageUsageFlags imageUsage,
+
112 std::optional<VkImageAspectFlags> viewDescription,
+
113 bool bIsCubeMap = false);
+
114
+
123 virtual std::variant<std::unique_ptr<GpuResource>, Error> loadTextureFromDisk(
+
124 const std::string& sResourceName, const std::filesystem::path& pathToTextureFile) override;
+
125
+
154 virtual std::variant<std::unique_ptr<UploadBuffer>, Error> createResourceWithCpuWriteAccess(
+
155 const std::string& sResourceName,
+
156 size_t iElementSizeInBytes,
+
157 size_t iElementCount,
+
158 std::optional<bool> isUsedInShadersAsArrayResource) override;
+
159
+
185 virtual std::variant<std::unique_ptr<GpuResource>, Error> createResourceWithData(
+
186 const std::string& sResourceName,
+
187 const void* pBufferData,
+
188 size_t iElementSizeInBytes,
+
189 size_t iElementCount,
+
190 ResourceUsageType usage,
+
191 bool bIsShaderReadWriteResource) override;
+
192
+
208 virtual std::variant<std::unique_ptr<GpuResource>, Error> createResource(
+
209 const std::string& sResourceName,
+
210 size_t iElementSizeInBytes,
+
211 size_t iElementCount,
+
212 ResourceUsageType usage,
+
213 bool bIsShaderReadWriteResource) override;
+
214
+
225 virtual std::variant<std::unique_ptr<GpuResource>, Error> createShaderReadWriteTextureResource(
+
226 const std::string& sResourceName,
+
227 unsigned int iWidth,
+
228 unsigned int iHeight,
+
229 ShaderReadWriteTextureResourceFormat format) override;
+
230
+
236 virtual std::string getCurrentStateInfo() override;
+
237
+
238 private:
+ +
246
+
254 static std::optional<VkBufferUsageFlagBits>
+
255 convertResourceUsageTypeToVkBufferUsageType(ResourceUsageType usage);
+
256
+
268 virtual std::variant<std::unique_ptr<GpuResource>, Error> createShadowMapTexture(
+
269 const std::string& sResourceName,
+
270 unsigned int iTextureSize,
+
271 bool bPointLightColorCubemap) override;
+
272
+
289 std::variant<std::unique_ptr<VulkanResource>, Error> createBuffer(
+
290 const std::string& sResourceName,
+
291 VkDeviceSize iBufferSize,
+
292 VkBufferUsageFlags bufferUsage,
+
293 bool bAllowCpuWrite,
+
294 unsigned int iElementSizeInBytes,
+
295 unsigned int iElementCount);
+
296
+
298 VmaAllocator pMemoryAllocator = nullptr;
+
299 };
+
300} // namespace ne
+
Definition: Error.h:27
+
Definition: GpuResourceManager.h:43
+
Renderer *const pRenderer
Definition: GpuResourceManager.h:300
+
Definition: KtxLoadingCallbackManager.h:17
+
Definition: UploadBuffer.h:14
+
Definition: VulkanRenderer.h:26
+
Definition: VulkanResourceManager.h:18
+
static std::optional< VkBufferUsageFlagBits > convertResourceUsageTypeToVkBufferUsageType(ResourceUsageType usage)
Definition: VulkanResourceManager.cpp:63
+
virtual std::variant< std::unique_ptr< GpuResource >, Error > loadTextureFromDisk(const std::string &sResourceName, const std::filesystem::path &pathToTextureFile) override
Definition: VulkanResourceManager.cpp:604
+
virtual std::variant< std::unique_ptr< UploadBuffer >, Error > createResourceWithCpuWriteAccess(const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, std::optional< bool > isUsedInShadersAsArrayResource) override
Definition: VulkanResourceManager.cpp:281
+
virtual std::variant< std::unique_ptr< GpuResource >, Error > createShadowMapTexture(const std::string &sResourceName, unsigned int iTextureSize, bool bPointLightColorCubemap) override
Definition: VulkanResourceManager.cpp:519
+
std::variant< std::unique_ptr< VulkanResource >, Error > createBuffer(const std::string &sResourceName, const VkBufferCreateInfo &bufferInfo, const VmaAllocationCreateInfo &allocationInfo, unsigned int iElementSizeInBytes, unsigned int iElementCount)
Definition: VulkanResourceManager.cpp:258
+
VmaAllocator pMemoryAllocator
Definition: VulkanResourceManager.h:298
+
virtual std::variant< std::unique_ptr< GpuResource >, Error > createResourceWithData(const std::string &sResourceName, const void *pBufferData, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource) override
Definition: VulkanResourceManager.cpp:347
+
virtual std::variant< std::unique_ptr< GpuResource >, Error > createShaderReadWriteTextureResource(const std::string &sResourceName, unsigned int iWidth, unsigned int iHeight, ShaderReadWriteTextureResourceFormat format) override
Definition: VulkanResourceManager.cpp:466
+
static VkFormat convertTextureResourceFormatToVkFormat(ShaderReadWriteTextureResourceFormat format)
Definition: VulkanResourceManager.cpp:117
+
virtual std::string getCurrentStateInfo() override
Definition: VulkanResourceManager.cpp:824
+
std::variant< std::unique_ptr< VulkanResource >, Error > createImage(const std::string &sResourceName, uint32_t iImageWidth, uint32_t iImageHeight, uint32_t iTextureMipLevelCount, VkSampleCountFlagBits sampleCount, VkFormat imageFormat, VkImageTiling imageTilingMode, VkImageUsageFlags imageUsage, std::optional< VkImageAspectFlags > viewDescription, bool bIsCubeMap=false)
Definition: VulkanResourceManager.cpp:559
+
virtual size_t getUsedVideoMemoryInMb() const override
Definition: VulkanResourceManager.cpp:219
+
virtual std::variant< std::unique_ptr< GpuResource >, Error > createResource(const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource) override
Definition: VulkanResourceManager.cpp:428
+
static std::variant< std::unique_ptr< VulkanResourceManager >, Error > create(VulkanRenderer *pRenderer)
Definition: VulkanResourceManager.cpp:142
+
virtual size_t getTotalVideoMemoryInMb() const override
Definition: VulkanResourceManager.cpp:180
+
Definition: VulkanResource.h:23
+
+
+ + + + diff --git a/VulkanResource_8h_source.html b/VulkanResource_8h_source.html new file mode 100644 index 000000000..9b21a2320 --- /dev/null +++ b/VulkanResource_8h_source.html @@ -0,0 +1,268 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/vulkan/resource/VulkanResource.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VulkanResource.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <variant>
+
5#include <memory>
+
6#include <mutex>
+
7#include <format>
+
8#include <string>
+
9
+
10// Custom.
+
11#include "render/general/resource/GpuResource.h"
+
12#include "io/Logger.h"
+
13
+
14// External.
+
15#include "VulkanMemoryAllocator/include/vk_mem_alloc.h"
+
16#include "ktxvulkan.h"
+
17
+
18namespace ne {
+
19 class VulkanResourceManager;
+
20 class Renderer;
+
21
+
23 class VulkanResource : public GpuResource {
+
24 // Only resource manager can create this resource
+
25 // (simply because only manager has a memory allocator object).
+
26 friend class VulkanResourceManager;
+
27
+
28 public:
+
29 VulkanResource() = delete;
+
30 VulkanResource(const VulkanResource&) = delete;
+
31 VulkanResource& operator=(const VulkanResource&) = delete;
+
32
+
33 virtual ~VulkanResource() override;
+
34
+
45 inline VkBuffer getInternalBufferResource() const { return pBufferResource; };
+
46
+
57 inline VkImageView getInternalImageView() const { return pImageView; }
+
58
+
71 inline VkImageView getInternalCubemapImageView(size_t iCubemapFaceIndex = 0) {
+
72 // Make sure we won't access out of bounds.
+
73 if (iCubemapFaceIndex >= vCubeMapViews.size()) [[unlikely]] { // <- remove if no log
+
74 // Log an error because this case is marked as unlikely.
+
75 // ! REMOVE [[unlikely]] IF REMOVING LOG !
+
76 Logger::get().error(std::format(
+
77 "cubemap view was requested on resource \"{}\" with an out of bounds index "
+
78 "{} while cubemap view count is {}",
+ +
80 iCubemapFaceIndex,
+
81 vCubeMapViews.size()));
+
82 return nullptr;
+
83 }
+
84
+
85 return vCubeMapViews[iCubemapFaceIndex];
+
86 }
+
87
+
98 inline VkImageView getInternalImageViewDepthAspect() const { return pDepthAspectImageView; }
+
99
+
110 inline VkImage getInternalImage() const { return pImageResource; }
+
111
+
117 bool isStorageResource() const;
+
118
+
128 inline std::pair<std::recursive_mutex, VmaAllocation>* getInternalResourceMemory() {
+
129 // Self check:
+
130 if (optionalKtxTexture.has_value()) [[unlikely]] {
+
131 Error error(std::format(
+
132 "failed to query VmaAllocation of resource \"{}\" because "
+
133 "this resource is a KTX texture that was loaded via external library "
+
134 "(accessing VmaAllocation of such object is complicated, if you want "
+
135 "to access VkDeviceMemory it's a good time to implement such a getter "
+
136 "because VkDeviceMemory is available for KTX textures)",
+
137 getResourceName()));
+
138 error.showError();
+
139 throw std::runtime_error(error.getFullErrorMessage());
+
140 }
+
141
+
142 return &mtxResourceMemory;
+
143 }
+
144
+
145 private:
+ +
160 VulkanResourceManager* pResourceManager,
+
161 const std::string& sResourceName,
+
162 std::variant<VkBuffer, VkImage> pInternalResource,
+ +
164 VmaAllocation pResourceMemory,
+
165 unsigned int iElementSizeInBytes,
+
166 unsigned int iElementCount);
+
167
+ +
177 VulkanResourceManager* pResourceManager,
+
178 const std::string& sResourceName,
+
179 ktxVulkanTexture ktxTexture);
+
180
+
196 static std::variant<std::unique_ptr<VulkanResource>, Error> create(
+
197 VulkanResourceManager* pResourceManager,
+
198 const std::string& sResourceName,
+
199 VmaAllocator pMemoryAllocator,
+
200 const VkBufferCreateInfo& bufferInfo,
+
201 const VmaAllocationCreateInfo& allocationInfo,
+
202 unsigned int iElementSizeInBytes,
+
203 unsigned int iElementCount);
+
204
+
219 static std::variant<std::unique_ptr<VulkanResource>, Error> create(
+
220 VulkanResourceManager* pResourceManager,
+
221 const std::string& sResourceName,
+
222 VmaAllocator pMemoryAllocator,
+
223 const VkImageCreateInfo& imageInfo,
+
224 const VmaAllocationCreateInfo& allocationInfo,
+
225 std::optional<VkImageAspectFlags> viewDescription,
+
226 bool bIsCubeMapView = false);
+
227
+
238 static std::variant<std::unique_ptr<VulkanResource>, Error> create(
+
239 VulkanResourceManager* pResourceManager,
+
240 const std::string& sResourceName,
+
241 ktxVulkanTexture ktxTexture);
+
242
+
244 std::optional<ktxVulkanTexture> optionalKtxTexture;
+
245
+
251 VkBuffer pBufferResource = nullptr;
+
252
+
258 VkImage pImageResource = nullptr;
+
259
+
261 VkImageView pImageView = nullptr;
+
262
+
268 VkImageView pDepthAspectImageView = nullptr;
+
269
+
271 std::vector<VkImageView> vCubeMapViews;
+
272
+
278 std::pair<std::recursive_mutex, VmaAllocation> mtxResourceMemory;
+
279
+
281 const bool isUsedAsStorageResource = false;
+
282 };
+
283} // namespace ne
+
Definition: Error.h:27
+
std::string getFullErrorMessage() const
Definition: Error.cpp:84
+
void showError() const
Definition: Error.cpp:102
+
Definition: GpuResource.h:16
+
const std::string sResourceName
Definition: GpuResource.h:97
+
std::string getResourceName() const
Definition: GpuResource.cpp:30
+
const unsigned int iElementCount
Definition: GpuResource.h:94
+
const unsigned int iElementSizeInBytes
Definition: GpuResource.h:91
+
void error(std::string_view sText, const std::source_location location=std::source_location::current()) const
Definition: Logger.cpp:75
+
static Logger & get()
Definition: Logger.cpp:41
+
Definition: VulkanResourceManager.h:18
+
Definition: VulkanResource.h:23
+
std::pair< std::recursive_mutex, VmaAllocation > * getInternalResourceMemory()
Definition: VulkanResource.h:128
+
bool isStorageResource() const
Definition: VulkanResource.cpp:114
+
std::pair< std::recursive_mutex, VmaAllocation > mtxResourceMemory
Definition: VulkanResource.h:278
+
VkImageView pDepthAspectImageView
Definition: VulkanResource.h:268
+
VkImage getInternalImage() const
Definition: VulkanResource.h:110
+
VkBuffer getInternalBufferResource() const
Definition: VulkanResource.h:45
+
static std::variant< std::unique_ptr< VulkanResource >, Error > create(VulkanResourceManager *pResourceManager, const std::string &sResourceName, VmaAllocator pMemoryAllocator, const VkBufferCreateInfo &bufferInfo, const VmaAllocationCreateInfo &allocationInfo, unsigned int iElementSizeInBytes, unsigned int iElementCount)
Definition: VulkanResource.cpp:116
+
std::vector< VkImageView > vCubeMapViews
Definition: VulkanResource.h:271
+
std::optional< ktxVulkanTexture > optionalKtxTexture
Definition: VulkanResource.h:244
+
const bool isUsedAsStorageResource
Definition: VulkanResource.h:281
+
VkImage pImageResource
Definition: VulkanResource.h:258
+
VkImageView getInternalImageView() const
Definition: VulkanResource.h:57
+
VkBuffer pBufferResource
Definition: VulkanResource.h:251
+
VkImageView pImageView
Definition: VulkanResource.h:261
+
VkImageView getInternalCubemapImageView(size_t iCubemapFaceIndex=0)
Definition: VulkanResource.h:71
+
VkImageView getInternalImageViewDepthAspect() const
Definition: VulkanResource.h:98
+
+
+ + + + diff --git a/VulkanShadowMapArrayIndexManager_8h_source.html b/VulkanShadowMapArrayIndexManager_8h_source.html new file mode 100644 index 000000000..02297a892 --- /dev/null +++ b/VulkanShadowMapArrayIndexManager_8h_source.html @@ -0,0 +1,185 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/vulkan/resource/shadow/VulkanShadowMapArrayIndexManager.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VulkanShadowMapArrayIndexManager.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <unordered_map>
+
5
+
6// Custom.
+
7#include "render/general/resource/shadow/ShadowMapArrayIndexManager.h"
+
8#include "shader/general/resource/ShaderArrayIndexManager.h"
+
9#include "render/general/resource/frame/FrameResourceManager.h"
+
10
+
11// External.
+
12#include "vulkan/vulkan.h"
+
13
+
14namespace ne {
+
15 class VulkanPipeline;
+
16
+ +
19 public:
+ +
21
+ + +
24
+ + +
27
+
28 virtual ~VulkanShadowMapArrayIndexManager() override;
+
29
+ +
37
+
38 protected:
+
50 [[nodiscard]] virtual std::optional<Error>
+
51 registerShadowMapResource(ShadowMapHandle* pShadowMapHandle) override;
+
52
+
60 [[nodiscard]] virtual std::optional<Error>
+
61 unregisterShadowMapResource(ShadowMapHandle* pShadowMapHandle) override;
+
62
+
70 [[nodiscard]] virtual std::optional<Error> bindShadowMapsToPipeline(Pipeline* pPipeline) override;
+
71
+
77 [[nodiscard]] virtual std::optional<Error> bindShadowMapsToAllPipelines() override;
+
78
+
79 private:
+
81 struct InternalData {
+
91 std::unique_ptr<ShaderArrayIndexManager> pIndexManager;
+
92
+
94 std::unordered_map<ShadowMapHandle*, std::unique_ptr<ShaderArrayIndex>> registeredShadowMaps;
+
95 };
+
96
+
106 [[nodiscard]] std::optional<Error>
+
107 bindShadowMapsToAllPipelines(ShadowMapHandle* pOnlyBindThisShadowMap);
+
108
+
119 [[nodiscard]] std::optional<Error>
+
120 bindShadowMapsToPipeline(Pipeline* pPipeline, ShadowMapHandle* pOnlyBindThisShadowMap);
+
121
+
131 [[nodiscard]] std::optional<Error> bindShadowMapToPipelineIfUsed(
+
132 ShadowMapHandle* pShadowMapHandle, VulkanPipeline* pPipeline, VkSampler pSampler);
+
133
+
135 std::pair<std::recursive_mutex, InternalData> mtxInternalData;
+
136 };
+
137}
+
Definition: Pipeline.h:20
+
Definition: Renderer.h:44
+
Definition: ShadowMapArrayIndexManager.h:25
+
Renderer *const pRenderer
Definition: ShadowMapArrayIndexManager.h:134
+
const std::string sShaderArrayResourceName
Definition: ShadowMapArrayIndexManager.h:137
+
Definition: ShadowMapHandle.h:23
+
Definition: VulkanPipeline.h:21
+
Definition: VulkanShadowMapArrayIndexManager.h:18
+
virtual std::optional< Error > bindShadowMapsToPipeline(Pipeline *pPipeline) override
Definition: VulkanShadowMapArrayIndexManager.cpp:94
+
virtual std::optional< Error > registerShadowMapResource(ShadowMapHandle *pShadowMapHandle) override
Definition: VulkanShadowMapArrayIndexManager.cpp:37
+
virtual std::optional< Error > bindShadowMapsToAllPipelines() override
Definition: VulkanShadowMapArrayIndexManager.cpp:98
+
virtual std::optional< Error > unregisterShadowMapResource(ShadowMapHandle *pShadowMapHandle) override
Definition: VulkanShadowMapArrayIndexManager.cpp:76
+
std::pair< std::recursive_mutex, InternalData > mtxInternalData
Definition: VulkanShadowMapArrayIndexManager.h:135
+
std::optional< Error > bindShadowMapToPipelineIfUsed(ShadowMapHandle *pShadowMapHandle, VulkanPipeline *pPipeline, VkSampler pSampler)
Definition: VulkanShadowMapArrayIndexManager.cpp:184
+
Definition: VulkanShadowMapArrayIndexManager.h:81
+
std::unique_ptr< ShaderArrayIndexManager > pIndexManager
Definition: VulkanShadowMapArrayIndexManager.h:91
+
std::unordered_map< ShadowMapHandle *, std::unique_ptr< ShaderArrayIndex > > registeredShadowMaps
Definition: VulkanShadowMapArrayIndexManager.h:94
+
+
+ + + + diff --git a/Window_8h_source.html b/Window_8h_source.html new file mode 100644 index 000000000..b3baba58e --- /dev/null +++ b/Window_8h_source.html @@ -0,0 +1,448 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/game/Window.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Window.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <variant>
+
5#include <memory>
+
6#include <optional>
+
7#include <utility>
+
8
+
9// Custom.
+
10#include "misc/Error.h"
+
11#include "game/GameManager.h"
+
12#include "render/Renderer.h"
+
13#include "window/GLFW.hpp"
+
14#include "game/GameInstance.h"
+
15#include "input/KeyboardKey.hpp"
+
16#include "input/MouseButton.hpp"
+
17
+
18namespace ne {
+
19 class Error;
+
20 class GameInstance;
+
21
+ +
26 // Only Window can directly create instances of this class.
+
27 // For users we provide a separate function.
+
28 friend class Window;
+
29
+
30 public:
+
31 WindowCursor() = delete;
+
32 WindowCursor(const WindowCursor&) = delete;
+
33 WindowCursor& operator=(const WindowCursor&) = delete;
+
34
+ +
37
+
38 protected:
+
52 static std::variant<std::unique_ptr<WindowCursor>, Error>
+
53 create(const std::filesystem::path& pathToIcon);
+
54
+
60 void releaseCursor();
+
61
+
67 GLFWcursor* getCursor() const;
+
68
+
69 private:
+
75 WindowCursor(GLFWcursor* pCursor);
+
76
+
78 GLFWcursor* pCursor = nullptr;
+
79 };
+
80
+ +
86 int iWindowWidth = 800;
+
88 int iWindowHeight = 600;
+
90 std::string_view sWindowTitle;
+
92 std::filesystem::path pathToWindowIcon;
+
94 bool bShowWindow = true;
+
96 bool bMaximized = false;
+
98 bool bFullscreen = false;
+
100 bool bIsSplashScreen = false;
+
101 };
+
102
+
103 class Window;
+
104
+ +
109 public:
+
110 WindowBuilder() = default;
+
111
+
120 WindowBuilder& withSize(int iWidth, int iHeight);
+
121
+
129 WindowBuilder& withTitle(std::string_view sWindowTitle);
+
130
+
138 WindowBuilder& withIcon(const std::filesystem::path& pathToIcon);
+
139
+
148 WindowBuilder& withVisibility(bool bShow);
+
149
+
158 WindowBuilder& withMaximizedState(bool bMaximized);
+
159
+
169 WindowBuilder& withSplashScreenMode(bool bIsSplashScreen);
+
170
+
181 WindowBuilder& withFullscreenMode(bool bEnableFullscreen);
+
182
+
190 std::variant<std::unique_ptr<Window>, Error> build();
+
191
+
192 private:
+ +
195 };
+
196
+
198 class Window {
+
199 // Builder will create new instances.
+
200 friend class WindowBuilder;
+
201
+
202 public:
+
203 Window() = delete;
+
204 Window(const Window&) = delete;
+
205 Window& operator=(const Window&) = delete;
+
206
+
207 virtual ~Window();
+
208
+
216 static WindowBuilder getBuilder();
+
217
+
237 void setPreferredRenderer(const std::optional<RendererType>& preferredRenderer);
+
238
+
246 template <typename MyGameInstance>
+
247 requires std::derived_from<MyGameInstance, GameInstance>
+
248 void processEvents();
+
249
+
256 void setOpacity(float opacity) const;
+
257
+
263 void setTitle(const std::string& sNewTitle);
+
264
+
277 [[nodiscard]] std::optional<Error> setIcon(const std::filesystem::path& pathToIcon) const;
+
278
+
294 std::variant<WindowCursor*, Error> createCursor(const std::filesystem::path& pathToIcon);
+
295
+
306 void setCursor(WindowCursor* pCursor);
+
307
+
313 void setDefaultCursor();
+
314
+
321 void setCursorVisibility(bool bIsVisible) const;
+
322
+
329 void minimize() const;
+
330
+
337 void maximize() const;
+
338
+
346 void restore() const;
+
347
+
355 void hide() const;
+
356
+
363 void show() const;
+
364
+
369 void close() const;
+
370
+
379 std::pair<int, int> getSize() const;
+
380
+
390 std::pair<double, double> getCursorPosition() const;
+
391
+
397 std::string getTitle() const;
+
398
+
404 float getOpacity() const;
+
405
+
411 Renderer* getRenderer() const;
+
412
+
413#if defined(WIN32)
+
419 HWND getWindowHandle() const;
+
420#endif
+
421
+
429 GLFWwindow* getGlfwWindow() const;
+
430
+
440 void onKeyboardInput(KeyboardKey key, KeyboardModifiers modifiers, bool bIsPressedDown) const;
+
441
+
451 void onMouseInput(MouseButton button, KeyboardModifiers modifiers, bool bIsPressedDown) const;
+
452
+
460 void onMouseScrollMove(int iOffset) const;
+
461
+
462 private:
+
472 static void
+
473 glfwWindowKeyboardCallback(GLFWwindow* pGlfwWindow, int iKey, int iScancode, int iAction, int iMods);
+
474
+
483 static void glfwWindowMouseCallback(GLFWwindow* pGlfwWindow, int iButton, int iAction, int iMods);
+
484
+
491 static void glfwWindowFocusCallback(GLFWwindow* pGlfwWindow, int iFocused);
+
492
+
500 static void glfwWindowMouseCursorPosCallback(GLFWwindow* pGlfwWindow, double xPos, double yPos);
+
501
+
509 static void glfwWindowMouseScrollCallback(GLFWwindow* pGlfwWindow, double xOffset, double yOffset);
+
510
+
518 static void glfwFramebufferResizeCallback(GLFWwindow* pGlfwWindow, int iWidth, int iHeight);
+
519
+
525 void bindToWindowEvents();
+
526
+ +
533
+
538 void showErrorIfNotOnMainThread() const;
+
539
+
546 void onMouseMove(double xPos, double yPos);
+
547
+
553 void onWindowFocusChanged(bool bIsFocused) const;
+
554
+
561 void onFramebufferSizeChanged(int iWidth, int iHeight) const;
+
562
+
570 static std::variant<std::unique_ptr<Window>, Error> create(WindowBuilderParameters& params);
+
571
+
578 Window(GLFWwindow* pGlfwWindow, const std::string& sWindowTitle);
+
579
+
581 std::unique_ptr<GameManager> pGameManager;
+
582
+
584 GLFWwindow* pGlfwWindow = nullptr;
+
585
+
587 std::vector<std::unique_ptr<WindowCursor>> vCreatedCursors;
+
588
+
590 std::thread::id mainThreadId;
+
591
+
593 std::string sWindowTitle;
+
594
+
596 std::optional<RendererType> preferredRenderer;
+
597
+
599 double lastMouseXPos = 0.0;
+
600
+
602 double lastMouseYPos = 0.0;
+
603 };
+
604
+
605 template <typename MyGameInstance>
+
606 requires std::derived_from<MyGameInstance, GameInstance>
+ +
608 // Create game manager.
+
609 pGameManager = std::unique_ptr<GameManager>(new GameManager(this));
+
610 auto optionalError = pGameManager->initialize(preferredRenderer);
+
611 if (optionalError.has_value()) [[unlikely]] {
+
612 optionalError->addCurrentLocationToErrorStack();
+
613 optionalError->showError();
+
614 throw std::runtime_error(optionalError->getFullErrorMessage());
+
615 }
+
616
+
617 // ... initialize other GameManager fields here ...
+
618
+
619 // Finally create Game Instance when engine (GameManager) is fully initialized.
+
620 // So that the user can call engine functions in Game Instance constructor.
+
621 pGameManager->setGameInstance<MyGameInstance>();
+
622
+
623 // Now bind to window events because game manager/instance is created.
+ +
625
+
626 // After enabling window events notify game instance about game being ready to start.
+
627 pGameManager->onGameStarted();
+
628
+
629 // Prepare reference to renderer.
+
630 const auto pRenderer = getRenderer();
+
631
+
632 // Used for tick.
+
633 float currentTimeInSec = 0.0f;
+
634 float prevTimeInSec = static_cast<float>(glfwGetTime());
+
635
+
636 while (!glfwWindowShouldClose(pGlfwWindow)) {
+
637 // Execute deferred tasks before processing input and ticking
+
638 // because some deferred tasks are used to remove despawned nodes from world,
+
639 // this way we won't trigger input events/tick on despawned nodes.
+
640 pGameManager->executeDeferredTasks();
+
641
+
642 // Process window events.
+
643 glfwPollEvents();
+
644
+
645 // Tick.
+
646 currentTimeInSec = static_cast<float>(glfwGetTime());
+
647 pGameManager->onBeforeNewFrame(currentTimeInSec - prevTimeInSec);
+
648 prevTimeInSec = currentTimeInSec;
+
649
+
650 // Draw next frame.
+
651 pRenderer->drawNextFrame();
+
652
+
653 // Notify game manager about tick finish.
+
654 pGameManager->onTickFinished();
+
655 }
+
656
+
657 // Notify game manager about window closed.
+
658 pGameManager->onWindowClose();
+
659
+
660 // Unbind from callbacks before destroying the game manager/game instance.
+ +
662
+
663 // Destroy game manager.
+
664 pGameManager->destroy(); // explicitly destroy here to run GC for the last time (before everything
+
665 pGameManager = nullptr; // else is destroyed)
+
666 Logger::get().info("game manager is destroyed");
+
667 }
+
668} // namespace ne
+
Definition: Error.h:27
+
Definition: GameManager.h:34
+
Definition: KeyboardKey.hpp:10
+
void info(std::string_view sText, const std::source_location location=std::source_location::current()) const
Definition: Logger.cpp:50
+
static Logger & get()
Definition: Logger.cpp:41
+
Definition: Renderer.h:44
+
Definition: Window.h:108
+
WindowBuilder & withTitle(std::string_view sWindowTitle)
Definition: Window.cpp:27
+
WindowBuilder & withFullscreenMode(bool bEnableFullscreen)
Definition: Window.cpp:57
+
WindowBuilderParameters params
Definition: Window.h:194
+
WindowBuilder & withVisibility(bool bShow)
Definition: Window.cpp:39
+
std::variant< std::unique_ptr< Window >, Error > build()
Definition: Window.cpp:63
+
WindowBuilder & withMaximizedState(bool bMaximized)
Definition: Window.cpp:45
+
WindowBuilder & withIcon(const std::filesystem::path &pathToIcon)
Definition: Window.cpp:33
+
WindowBuilder & withSize(int iWidth, int iHeight)
Definition: Window.cpp:20
+
WindowBuilder & withSplashScreenMode(bool bIsSplashScreen)
Definition: Window.cpp:51
+
Definition: Window.h:25
+
void releaseCursor()
Definition: Window.cpp:526
+
static std::variant< std::unique_ptr< WindowCursor >, Error > create(const std::filesystem::path &pathToIcon)
Definition: Window.cpp:503
+
GLFWcursor * pCursor
Definition: Window.h:78
+
GLFWcursor * getCursor() const
Definition: Window.cpp:531
+
~WindowCursor()
Definition: Window.cpp:494
+
Definition: Window.h:198
+
std::unique_ptr< GameManager > pGameManager
Definition: Window.h:581
+
Renderer * getRenderer() const
Definition: Window.cpp:104
+
void bindToWindowEvents()
Definition: Window.cpp:207
+
std::string getTitle() const
Definition: Window.cpp:100
+
std::vector< std::unique_ptr< WindowCursor > > vCreatedCursors
Definition: Window.h:587
+
void setPreferredRenderer(const std::optional< RendererType > &preferredRenderer)
Definition: Window.cpp:394
+
std::pair< int, int > getSize() const
Definition: Window.cpp:72
+
void onMouseMove(double xPos, double yPos)
Definition: Window.cpp:126
+
std::variant< WindowCursor *, Error > createCursor(const std::filesystem::path &pathToIcon)
Definition: Window.cpp:428
+
void unbindFromWindowEvents()
Definition: Window.cpp:251
+
double lastMouseXPos
Definition: Window.h:599
+
static void glfwWindowFocusCallback(GLFWwindow *pGlfwWindow, int iFocused)
Definition: Window.cpp:171
+
void restore() const
Definition: Window.cpp:481
+
static void glfwWindowMouseScrollCallback(GLFWwindow *pGlfwWindow, double xOffset, double yOffset)
Definition: Window.cpp:189
+
void show() const
Definition: Window.cpp:398
+
void setDefaultCursor()
Definition: Window.cpp:453
+
void hide() const
Definition: Window.cpp:65
+
void setCursor(WindowCursor *pCursor)
Definition: Window.cpp:447
+
GLFWwindow * getGlfwWindow() const
Definition: Window.cpp:116
+
std::pair< double, double > getCursorPosition() const
Definition: Window.cpp:83
+
void setOpacity(float opacity) const
Definition: Window.cpp:400
+
static WindowBuilder getBuilder()
Definition: Window.cpp:392
+
void setCursorVisibility(bool bIsVisible) const
Definition: Window.cpp:455
+
float getOpacity() const
Definition: Window.cpp:102
+
void onFramebufferSizeChanged(int iWidth, int iHeight) const
Definition: Window.cpp:141
+
void showErrorIfNotOnMainThread() const
Definition: Window.cpp:292
+
void onWindowFocusChanged(bool bIsFocused) const
Definition: Window.cpp:137
+
std::string sWindowTitle
Definition: Window.h:593
+
void onMouseScrollMove(int iOffset) const
Definition: Window.cpp:135
+
static std::variant< std::unique_ptr< Window >, Error > create(WindowBuilderParameters &params)
Definition: Window.cpp:305
+
std::optional< RendererType > preferredRenderer
Definition: Window.h:596
+
void processEvents()
Definition: Window.h:607
+
static void glfwWindowMouseCallback(GLFWwindow *pGlfwWindow, int iButton, int iAction, int iMods)
Definition: Window.cpp:161
+
void close() const
Definition: Window.cpp:70
+
void onKeyboardInput(KeyboardKey key, KeyboardModifiers modifiers, bool bIsPressedDown) const
Definition: Window.cpp:118
+
static void glfwWindowMouseCursorPosCallback(GLFWwindow *pGlfwWindow, double xPos, double yPos)
Definition: Window.cpp:180
+
std::thread::id mainThreadId
Definition: Window.h:590
+
void minimize() const
Definition: Window.cpp:471
+
static void glfwFramebufferResizeCallback(GLFWwindow *pGlfwWindow, int iWidth, int iHeight)
Definition: Window.cpp:198
+
void onMouseInput(MouseButton button, KeyboardModifiers modifiers, bool bIsPressedDown) const
Definition: Window.cpp:122
+
GLFWwindow * pGlfwWindow
Definition: Window.h:584
+
static void glfwWindowKeyboardCallback(GLFWwindow *pGlfwWindow, int iKey, int iScancode, int iAction, int iMods)
Definition: Window.cpp:146
+
void setTitle(const std::string &sNewTitle)
Definition: Window.cpp:402
+
void maximize() const
Definition: Window.cpp:476
+
double lastMouseYPos
Definition: Window.h:602
+
std::optional< Error > setIcon(const std::filesystem::path &pathToIcon) const
Definition: Window.cpp:407
+
Definition: Window.h:84
+
bool bShowWindow
Definition: Window.h:94
+
std::filesystem::path pathToWindowIcon
Definition: Window.h:92
+
int iWindowWidth
Definition: Window.h:86
+
bool bIsSplashScreen
Definition: Window.h:100
+
std::string_view sWindowTitle
Definition: Window.h:90
+
int iWindowHeight
Definition: Window.h:88
+
bool bMaximized
Definition: Window.h:96
+
bool bFullscreen
Definition: Window.h:98
+
+
+ + + + diff --git a/World_8h_source.html b/World_8h_source.html new file mode 100644 index 000000000..3f4e70687 --- /dev/null +++ b/World_8h_source.html @@ -0,0 +1,258 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/game/World.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
World.h
+
+
+
1#pragma once
+
2
+
3// Standard.
+
4#include <memory>
+
5#include <chrono>
+
6#include <string>
+
7#include <variant>
+
8#include <filesystem>
+
9#include <unordered_set>
+
10#include <mutex>
+
11#include <atomic>
+
12
+
13// Custom.
+
14#include "misc/Globals.h"
+
15#include "misc/Error.h"
+
16
+
17// External.
+
18#include "GcPtr.h"
+
19
+
20namespace ne {
+
21 class GameManager;
+
22 class Node;
+
23
+ +
26 CalledEveryFrameNodes() = default;
+
27
+ +
29 CalledEveryFrameNodes& operator=(const CalledEveryFrameNodes&) = delete;
+
30
+
32 std::pair<std::recursive_mutex, std::unordered_set<Node*>> mtxFirstTickGroup;
+
33
+
35 std::pair<std::recursive_mutex, std::unordered_set<Node*>> mtxSecondTickGroup;
+
36 };
+
37
+
43 class World {
+
44 // Nodes notify the world about being spawned/despawned.
+
45 friend class Node;
+
46
+
47 public:
+
48 World() = delete;
+
49
+
50 World(const World&) = delete;
+
51 World& operator=(const World&) = delete;
+
52
+
53 World(World&&) = delete;
+
54 World& operator=(World&&) = delete;
+
55
+
57 ~World();
+
58
+
73 static std::unique_ptr<World>
+ +
75
+
94 static std::variant<std::unique_ptr<World>, Error> loadNodeTreeAsWorld(
+ +
96 const std::filesystem::path& pathToNodeTree,
+ +
98
+ +
105
+
114 void destroyWorld();
+
115
+ +
122
+
128 std::pair<std::recursive_mutex, std::unordered_set<Node*>>* getReceivingInputNodes();
+
129
+
135 sgc::GcPtr<Node> getRootNode();
+
136
+ +
143
+
149 float getWorldTimeInSeconds() const;
+
150
+
156 size_t getWorldSize() const;
+
157
+
165 bool isNodeSpawned(size_t iNodeId);
+
166
+
167 private:
+
176 World(GameManager* pGameManager, sgc::GcPtr<Node> pRootNode, size_t iWorldSize);
+
177
+
183 void onNodeSpawned(Node* pNode);
+
184
+
190 void onNodeDespawned(Node* pNode);
+
191
+ +
202
+ +
213
+ +
221
+ +
229
+ +
237
+ +
245
+ +
248
+
250 std::pair<std::recursive_mutex, bool> mtxIsDestroyed;
+
251
+
253 std::pair<std::mutex, sgc::GcPtr<Node>> mtxRootNode;
+
254
+ +
257
+
259 std::pair<std::recursive_mutex, std::unordered_set<Node*>> mtxReceivingInputNodes;
+
260
+
262 std::pair<std::recursive_mutex, std::unordered_map<size_t, Node*>> mtxSpawnedNodes;
+
263
+
265 std::atomic<size_t> iTotalSpawnedNodeCount{0};
+
266
+
268 const size_t iWorldSize = 0;
+
269
+
271 std::chrono::steady_clock::time_point timeWhenWorldCreated;
+
272 };
+
273} // namespace ne
+
Definition: Error.h:27
+
Definition: GameManager.h:34
+
static constexpr size_t getDefaultWorldSize()
Definition: Globals.h:33
+
Definition: Node.h:39
+
Definition: World.h:43
+
void destroyWorld()
Definition: World.cpp:123
+
std::pair< std::recursive_mutex, std::unordered_map< size_t, Node * > > mtxSpawnedNodes
Definition: World.h:262
+
static std::variant< std::unique_ptr< World >, Error > loadNodeTreeAsWorld(GameManager *pGameManager, const std::filesystem::path &pathToNodeTree, size_t iWorldSize=Globals::getDefaultWorldSize())
Definition: World.cpp:77
+
sgc::GcPtr< Node > getRootNode()
Definition: World.cpp:94
+
float getWorldTimeInSeconds() const
Definition: World.cpp:106
+
void addNodeToCalledEveryFrameArrays(Node *pNode)
Definition: World.cpp:358
+
std::atomic< size_t > iTotalSpawnedNodeCount
Definition: World.h:265
+
const size_t iWorldSize
Definition: World.h:268
+
std::chrono::steady_clock::time_point timeWhenWorldCreated
Definition: World.h:271
+
CalledEveryFrameNodes * getCalledEveryFrameNodes()
Definition: World.cpp:143
+
~World()
Definition: World.cpp:47
+
void onNodeSpawned(Node *pNode)
Definition: World.cpp:149
+
void onNodeDespawned(Node *pNode)
Definition: World.cpp:201
+
std::pair< std::recursive_mutex, std::unordered_set< Node * > > * getReceivingInputNodes()
Definition: World.cpp:145
+
size_t getCalledEveryFrameNodeCount()
Definition: World.cpp:99
+
void onSpawnedNodeChangedIsReceivingInput(Node *pNode)
Definition: World.cpp:300
+
CalledEveryFrameNodes calledEveryFrameNodes
Definition: World.h:256
+
void addNodeToReceivingInputArray(Node *pNode)
Definition: World.cpp:346
+
size_t getTotalSpawnedNodeCount()
Definition: World.cpp:92
+
std::pair< std::recursive_mutex, bool > mtxIsDestroyed
Definition: World.h:250
+
void removeNodeFromReceivingInputArray(Node *pNode)
Definition: World.cpp:407
+
void removeNodeFromCalledEveryFrameArrays(Node *pNode)
Definition: World.cpp:378
+
GameManager * pGameManager
Definition: World.h:247
+
bool isNodeSpawned(size_t iNodeId)
Definition: World.cpp:115
+
void onSpawnedNodeChangedIsCalledEveryFrame(Node *pNode)
Definition: World.cpp:254
+
std::pair< std::recursive_mutex, std::unordered_set< Node * > > mtxReceivingInputNodes
Definition: World.h:259
+
std::pair< std::mutex, sgc::GcPtr< Node > > mtxRootNode
Definition: World.h:253
+
size_t getWorldSize() const
Definition: World.cpp:113
+
static std::unique_ptr< World > createWorld(GameManager *pGameManager, size_t iWorldSize=Globals::getDefaultWorldSize())
Definition: World.cpp:73
+
Definition: World.h:25
+
std::pair< std::recursive_mutex, std::unordered_set< Node * > > mtxFirstTickGroup
Definition: World.h:32
+
std::pair< std::recursive_mutex, std::unordered_set< Node * > > mtxSecondTickGroup
Definition: World.h:35
+
+
+ + + + diff --git a/annotated.html b/annotated.html new file mode 100644 index 000000000..5c662da60 --- /dev/null +++ b/annotated.html @@ -0,0 +1,375 @@ + + + + + + + +Nameless Engine: Class List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 12345]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Nne
+
+
+
+ + + + diff --git a/annotated_dup.js b/annotated_dup.js new file mode 100644 index 000000000..79b1236b7 --- /dev/null +++ b/annotated_dup.js @@ -0,0 +1,175 @@ +var annotated_dup = +[ + [ "ne", null, [ + [ "AABB", "structne_1_1AABB.html", "structne_1_1AABB" ], + [ "ActionState", "classne_1_1ActionState.html", "classne_1_1ActionState" ], + [ "AxisState", "classne_1_1AxisState.html", "classne_1_1AxisState" ], + [ "CalledEveryFrameNodes", "structne_1_1CalledEveryFrameNodes.html", "structne_1_1CalledEveryFrameNodes" ], + [ "CameraManager", "classne_1_1CameraManager.html", "classne_1_1CameraManager" ], + [ "CameraNode", "classne_1_1CameraNode.html", "classne_1_1CameraNode" ], + [ "CameraProperties", "classne_1_1CameraProperties.html", "classne_1_1CameraProperties" ], + [ "ColorPipelineConfiguration", "classne_1_1ColorPipelineConfiguration.html", "classne_1_1ColorPipelineConfiguration" ], + [ "CompressonatorSingleton", "classne_1_1CompressonatorSingleton.html", "classne_1_1CompressonatorSingleton" ], + [ "ComputePipelineConfiguration", "classne_1_1ComputePipelineConfiguration.html", "classne_1_1ComputePipelineConfiguration" ], + [ "ComputeShaderInterface", "classne_1_1ComputeShaderInterface.html", "classne_1_1ComputeShaderInterface" ], + [ "Cone", "structne_1_1Cone.html", "structne_1_1Cone" ], + [ "ConfigManager", "classne_1_1ConfigManager.html", "classne_1_1ConfigManager" ], + [ "ContinuousDirectXDescriptorRange", "classne_1_1ContinuousDirectXDescriptorRange.html", "classne_1_1ContinuousDirectXDescriptorRange" ], + [ "DelayedPipelineResourcesCreation", "classne_1_1DelayedPipelineResourcesCreation.html", "classne_1_1DelayedPipelineResourcesCreation" ], + [ "DepthPipelineConfiguration", "classne_1_1DepthPipelineConfiguration.html", "classne_1_1DepthPipelineConfiguration" ], + [ "DescriptorConstants", "structne_1_1DescriptorConstants.html", "structne_1_1DescriptorConstants" ], + [ "DescriptorSetLayoutGenerator", "classne_1_1DescriptorSetLayoutGenerator.html", "classne_1_1DescriptorSetLayoutGenerator" ], + [ "DeserializedObjectInformation", "structne_1_1DeserializedObjectInformation.html", "structne_1_1DeserializedObjectInformation" ], + [ "DesktopNotification", "classne_1_1DesktopNotification.html", "classne_1_1DesktopNotification" ], + [ "DirectionalLightNode", "classne_1_1DirectionalLightNode.html", "classne_1_1DirectionalLightNode" ], + [ "DirectXDescriptor", "classne_1_1DirectXDescriptor.html", "classne_1_1DirectXDescriptor" ], + [ "DirectXDescriptorHeap", "classne_1_1DirectXDescriptorHeap.html", "classne_1_1DirectXDescriptorHeap" ], + [ "DirectXFrameResource", "structne_1_1DirectXFrameResource.html", "structne_1_1DirectXFrameResource" ], + [ "DirectXPso", "classne_1_1DirectXPso.html", "classne_1_1DirectXPso" ], + [ "DirectXRenderer", "classne_1_1DirectXRenderer.html", "classne_1_1DirectXRenderer" ], + [ "DirectXResource", "classne_1_1DirectXResource.html", "classne_1_1DirectXResource" ], + [ "DirectXResourceManager", "classne_1_1DirectXResourceManager.html", "classne_1_1DirectXResourceManager" ], + [ "DirectXShadowMapArrayIndexManager", "classne_1_1DirectXShadowMapArrayIndexManager.html", "classne_1_1DirectXShadowMapArrayIndexManager" ], + [ "DynamicCpuWriteShaderResourceArray", "classne_1_1DynamicCpuWriteShaderResourceArray.html", "classne_1_1DynamicCpuWriteShaderResourceArray" ], + [ "DynamicCpuWriteShaderResourceArrayManager", "classne_1_1DynamicCpuWriteShaderResourceArrayManager.html", "classne_1_1DynamicCpuWriteShaderResourceArrayManager" ], + [ "DynamicCpuWriteShaderResourceArraySlot", "classne_1_1DynamicCpuWriteShaderResourceArraySlot.html", "classne_1_1DynamicCpuWriteShaderResourceArraySlot" ], + [ "EditorCameraNode", "classne_1_1EditorCameraNode.html", "classne_1_1EditorCameraNode" ], + [ "EditorGameInstance", "classne_1_1EditorGameInstance.html", "classne_1_1EditorGameInstance" ], + [ "EditorInputEventIds", "structne_1_1EditorInputEventIds.html", "structne_1_1EditorInputEventIds" ], + [ "EditorNodeCreationHelpers", "classne_1_1EditorNodeCreationHelpers.html", "classne_1_1EditorNodeCreationHelpers" ], + [ "EngineShaderConstantMacros", "classne_1_1EngineShaderConstantMacros.html", "classne_1_1EngineShaderConstantMacros" ], + [ "EngineShaderNames", "classne_1_1EngineShaderNames.html", "classne_1_1EngineShaderNames" ], + [ "EngineShaders", "classne_1_1EngineShaders.html", "classne_1_1EngineShaders" ], + [ "EnvironmentNode", "classne_1_1EnvironmentNode.html", "classne_1_1EnvironmentNode" ], + [ "Error", "classne_1_1Error.html", "classne_1_1Error" ], + [ "FieldSerializerManager", "classne_1_1FieldSerializerManager.html", "classne_1_1FieldSerializerManager" ], + [ "FileDialog", "classne_1_1FileDialog.html", "classne_1_1FileDialog" ], + [ "FrameConstants", "structne_1_1FrameConstants.html", "structne_1_1FrameConstants" ], + [ "FrameResource", "structne_1_1FrameResource.html", "structne_1_1FrameResource" ], + [ "FrameResourceManager", "classne_1_1FrameResourceManager.html", "classne_1_1FrameResourceManager" ], + [ "Frustum", "structne_1_1Frustum.html", "structne_1_1Frustum" ], + [ "GameInstance", "classne_1_1GameInstance.html", "classne_1_1GameInstance" ], + [ "GameManager", "classne_1_1GameManager.html", "classne_1_1GameManager" ], + [ "GLFW", "classne_1_1GLFW.html", "classne_1_1GLFW" ], + [ "GlmVecFieldSerializer", "classne_1_1GlmVecFieldSerializer.html", "classne_1_1GlmVecFieldSerializer" ], + [ "Globals", "classne_1_1Globals.html", "classne_1_1Globals" ], + [ "GlobalShaderResourceBinding", "classne_1_1GlobalShaderResourceBinding.html", "classne_1_1GlobalShaderResourceBinding" ], + [ "GlobalShaderResourceBindingManager", "classne_1_1GlobalShaderResourceBindingManager.html", "classne_1_1GlobalShaderResourceBindingManager" ], + [ "GlslComputeShaderInterface", "classne_1_1GlslComputeShaderInterface.html", "classne_1_1GlslComputeShaderInterface" ], + [ "GlslGlobalShaderResourceBinding", "classne_1_1GlslGlobalShaderResourceBinding.html", "classne_1_1GlslGlobalShaderResourceBinding" ], + [ "GlslShader", "classne_1_1GlslShader.html", "classne_1_1GlslShader" ], + [ "GlslShaderCacheManager", "classne_1_1GlslShaderCacheManager.html", "classne_1_1GlslShaderCacheManager" ], + [ "GlslShaderTextureResourceBinding", "classne_1_1GlslShaderTextureResourceBinding.html", "classne_1_1GlslShaderTextureResourceBinding" ], + [ "GlslVertexFormatDescription", "classne_1_1GlslVertexFormatDescription.html", "classne_1_1GlslVertexFormatDescription" ], + [ "GpuResource", "classne_1_1GpuResource.html", "classne_1_1GpuResource" ], + [ "GpuResourceManager", "classne_1_1GpuResourceManager.html", "classne_1_1GpuResourceManager" ], + [ "GraphicsPipelineRegistry", "structne_1_1GraphicsPipelineRegistry.html", "structne_1_1GraphicsPipelineRegistry" ], + [ "Guid", "classne_1_1Guid.html", "classne_1_1Guid" ], + [ "HlslComputeShaderInterface", "classne_1_1HlslComputeShaderInterface.html", "classne_1_1HlslComputeShaderInterface" ], + [ "HlslGlobalShaderResourceBinding", "classne_1_1HlslGlobalShaderResourceBinding.html", "classne_1_1HlslGlobalShaderResourceBinding" ], + [ "HlslShader", "classne_1_1HlslShader.html", "classne_1_1HlslShader" ], + [ "HlslShaderCacheManager", "classne_1_1HlslShaderCacheManager.html", "classne_1_1HlslShaderCacheManager" ], + [ "HlslShaderTextureResourceBinding", "classne_1_1HlslShaderTextureResourceBinding.html", "classne_1_1HlslShaderTextureResourceBinding" ], + [ "HlslVertexFormatDescription", "classne_1_1HlslVertexFormatDescription.html", "classne_1_1HlslVertexFormatDescription" ], + [ "IBinaryFieldSerializer", "classne_1_1IBinaryFieldSerializer.html", "classne_1_1IBinaryFieldSerializer" ], + [ "IFieldSerializer", "classne_1_1IFieldSerializer.html", "classne_1_1IFieldSerializer" ], + [ "InputManager", "classne_1_1InputManager.html", "classne_1_1InputManager" ], + [ "KeyboardModifiers", "classne_1_1KeyboardModifiers.html", "classne_1_1KeyboardModifiers" ], + [ "KtxLoadingCallbackManager", "classne_1_1KtxLoadingCallbackManager.html", "classne_1_1KtxLoadingCallbackManager" ], + [ "LightingShaderResourceManager", "classne_1_1LightingShaderResourceManager.html", "classne_1_1LightingShaderResourceManager" ], + [ "Logger", "classne_1_1Logger.html", "classne_1_1Logger" ], + [ "Material", "classne_1_1Material.html", "classne_1_1Material" ], + [ "MathHelpers", "classne_1_1MathHelpers.html", "classne_1_1MathHelpers" ], + [ "MeshData", "classne_1_1MeshData.html", "classne_1_1MeshData" ], + [ "MeshDataBinaryFieldSerializer", "classne_1_1MeshDataBinaryFieldSerializer.html", "classne_1_1MeshDataBinaryFieldSerializer" ], + [ "MeshImporter", "classne_1_1MeshImporter.html", "classne_1_1MeshImporter" ], + [ "MeshIndexBufferInfo", "structne_1_1MeshIndexBufferInfo.html", "structne_1_1MeshIndexBufferInfo" ], + [ "MeshNode", "classne_1_1MeshNode.html", "classne_1_1MeshNode" ], + [ "MeshNodeGlslVertexFormatDescription", "classne_1_1MeshNodeGlslVertexFormatDescription.html", "classne_1_1MeshNodeGlslVertexFormatDescription" ], + [ "MeshNodeHlslVertexFormatDescription", "classne_1_1MeshNodeHlslVertexFormatDescription.html", "classne_1_1MeshNodeHlslVertexFormatDescription" ], + [ "MeshNodesThatUseThisMaterial", "structne_1_1MeshNodesThatUseThisMaterial.html", "structne_1_1MeshNodesThatUseThisMaterial" ], + [ "MeshVertex", "structne_1_1MeshVertex.html", "structne_1_1MeshVertex" ], + [ "MessageBox", "classne_1_1MessageBox.html", "classne_1_1MessageBox" ], + [ "Node", "classne_1_1Node.html", "classne_1_1Node" ], + [ "NodeFunction", "classne_1_1NodeFunction.html", null ], + [ "NodeFunction< FunctionReturnType(FunctionArgs...)>", "classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html", "classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4" ], + [ "NodeNotificationBroadcaster", "classne_1_1NodeNotificationBroadcaster.html", null ], + [ "NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>", "classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html", "classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4" ], + [ "NodeNotificationBroadcasterBase", "classne_1_1NodeNotificationBroadcasterBase.html", "classne_1_1NodeNotificationBroadcasterBase" ], + [ "OpenLinkInBrowser", "classne_1_1OpenLinkInBrowser.html", "classne_1_1OpenLinkInBrowser" ], + [ "Pipeline", "classne_1_1Pipeline.html", "classne_1_1Pipeline" ], + [ "PipelineConfiguration", "classne_1_1PipelineConfiguration.html", "classne_1_1PipelineConfiguration" ], + [ "PipelineManager", "classne_1_1PipelineManager.html", "classne_1_1PipelineManager" ], + [ "PipelineShaderConstantsManager", "classne_1_1PipelineShaderConstantsManager.html", "classne_1_1PipelineShaderConstantsManager" ], + [ "PipelineSharedPtr", "classne_1_1PipelineSharedPtr.html", "classne_1_1PipelineSharedPtr" ], + [ "Plane", "structne_1_1Plane.html", "structne_1_1Plane" ], + [ "PointLightNode", "classne_1_1PointLightNode.html", "classne_1_1PointLightNode" ], + [ "PrimitiveFieldSerializer", "classne_1_1PrimitiveFieldSerializer.html", "classne_1_1PrimitiveFieldSerializer" ], + [ "PrimitiveMeshGenerator", "classne_1_1PrimitiveMeshGenerator.html", "classne_1_1PrimitiveMeshGenerator" ], + [ "ProjectPaths", "classne_1_1ProjectPaths.html", "classne_1_1ProjectPaths" ], + [ "QueuedForExecutionComputeShaders", "structne_1_1QueuedForExecutionComputeShaders.html", "structne_1_1QueuedForExecutionComputeShaders" ], + [ "Renderer", "classne_1_1Renderer.html", "classne_1_1Renderer" ], + [ "RenderSettings", "classne_1_1RenderSettings.html", "classne_1_1RenderSettings" ], + [ "RenderStatistics", "classne_1_1RenderStatistics.html", "classne_1_1RenderStatistics" ], + [ "RootSignatureGenerator", "classne_1_1RootSignatureGenerator.html", "classne_1_1RootSignatureGenerator" ], + [ "Serializable", "classne_1_1Serializable.html", "classne_1_1Serializable" ], + [ "SerializableObjectFieldSerializer", "classne_1_1SerializableObjectFieldSerializer.html", "classne_1_1SerializableObjectFieldSerializer" ], + [ "SerializableObjectInformation", "structne_1_1SerializableObjectInformation.html", "structne_1_1SerializableObjectInformation" ], + [ "Serialize", "classne_1_1Serialize.html", "classne_1_1Serialize" ], + [ "Shader", "classne_1_1Shader.html", "classne_1_1Shader" ], + [ "ShaderArrayIndex", "classne_1_1ShaderArrayIndex.html", "classne_1_1ShaderArrayIndex" ], + [ "ShaderArrayIndexManager", "classne_1_1ShaderArrayIndexManager.html", "classne_1_1ShaderArrayIndexManager" ], + [ "ShaderCacheInvalidationReasonDescription", "structne_1_1ShaderCacheInvalidationReasonDescription.html", "structne_1_1ShaderCacheInvalidationReasonDescription" ], + [ "ShaderCacheManager", "classne_1_1ShaderCacheManager.html", "classne_1_1ShaderCacheManager" ], + [ "ShaderConfiguration", "classne_1_1ShaderConfiguration.html", "classne_1_1ShaderConfiguration" ], + [ "ShaderCpuWriteResourceBinding", "classne_1_1ShaderCpuWriteResourceBinding.html", "classne_1_1ShaderCpuWriteResourceBinding" ], + [ "ShaderCpuWriteResourceBindingManager", "classne_1_1ShaderCpuWriteResourceBindingManager.html", "classne_1_1ShaderCpuWriteResourceBindingManager" ], + [ "ShaderCpuWriteResourceBindingUniquePtr", "classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html", "classne_1_1ShaderCpuWriteResourceBindingUniquePtr" ], + [ "ShaderDescription", "structne_1_1ShaderDescription.html", "structne_1_1ShaderDescription" ], + [ "ShaderFilesystemPaths", "classne_1_1ShaderFilesystemPaths.html", "classne_1_1ShaderFilesystemPaths" ], + [ "ShaderLightArray", "classne_1_1ShaderLightArray.html", "classne_1_1ShaderLightArray" ], + [ "ShaderLightArraySlot", "classne_1_1ShaderLightArraySlot.html", "classne_1_1ShaderLightArraySlot" ], + [ "ShaderLightsInFrustumSingleType", "structne_1_1ShaderLightsInFrustumSingleType.html", "structne_1_1ShaderLightsInFrustumSingleType" ], + [ "ShaderMacroConfigurations", "structne_1_1ShaderMacroConfigurations.html", "structne_1_1ShaderMacroConfigurations" ], + [ "ShaderMacroSetHash", "structne_1_1ShaderMacroSetHash.html", "structne_1_1ShaderMacroSetHash" ], + [ "ShaderManager", "classne_1_1ShaderManager.html", "classne_1_1ShaderManager" ], + [ "ShaderPack", "classne_1_1ShaderPack.html", "classne_1_1ShaderPack" ], + [ "ShaderPipelines", "structne_1_1ShaderPipelines.html", "structne_1_1ShaderPipelines" ], + [ "ShaderResourceBindingBase", "classne_1_1ShaderResourceBindingBase.html", "classne_1_1ShaderResourceBindingBase" ], + [ "ShaderTextureResourceBinding", "classne_1_1ShaderTextureResourceBinding.html", "classne_1_1ShaderTextureResourceBinding" ], + [ "ShaderTextureResourceBindingManager", "classne_1_1ShaderTextureResourceBindingManager.html", "classne_1_1ShaderTextureResourceBindingManager" ], + [ "ShaderTextureResourceBindingUniquePtr", "classne_1_1ShaderTextureResourceBindingUniquePtr.html", "classne_1_1ShaderTextureResourceBindingUniquePtr" ], + [ "ShaderUser", "classne_1_1ShaderUser.html", "classne_1_1ShaderUser" ], + [ "ShadowMapArrayIndexManager", "classne_1_1ShadowMapArrayIndexManager.html", "classne_1_1ShadowMapArrayIndexManager" ], + [ "ShadowMapHandle", "classne_1_1ShadowMapHandle.html", "classne_1_1ShadowMapHandle" ], + [ "ShadowMapManager", "classne_1_1ShadowMapManager.html", "classne_1_1ShadowMapManager" ], + [ "ShadowPassLightShaderInfo", "structne_1_1ShadowPassLightShaderInfo.html", "structne_1_1ShadowPassLightShaderInfo" ], + [ "SourceLocationInfo", "structne_1_1SourceLocationInfo.html", "structne_1_1SourceLocationInfo" ], + [ "SpatialNode", "classne_1_1SpatialNode.html", "classne_1_1SpatialNode" ], + [ "Sphere", "structne_1_1Sphere.html", "structne_1_1Sphere" ], + [ "SpotlightNode", "classne_1_1SpotlightNode.html", "classne_1_1SpotlightNode" ], + [ "StdStringHash", "structne_1_1StdStringHash.html", "structne_1_1StdStringHash" ], + [ "StringFieldSerializer", "classne_1_1StringFieldSerializer.html", "classne_1_1StringFieldSerializer" ], + [ "TextureHandle", "classne_1_1TextureHandle.html", "classne_1_1TextureHandle" ], + [ "TextureImporter", "classne_1_1TextureImporter.html", "classne_1_1TextureImporter" ], + [ "TextureManager", "classne_1_1TextureManager.html", "classne_1_1TextureManager" ], + [ "ThreadPool", "classne_1_1ThreadPool.html", "classne_1_1ThreadPool" ], + [ "Timer", "classne_1_1Timer.html", "classne_1_1Timer" ], + [ "UniqueValueGenerator", "classne_1_1UniqueValueGenerator.html", "classne_1_1UniqueValueGenerator" ], + [ "UnorderedMapFieldSerializer", "classne_1_1UnorderedMapFieldSerializer.html", "classne_1_1UnorderedMapFieldSerializer" ], + [ "UploadBuffer", "classne_1_1UploadBuffer.html", "classne_1_1UploadBuffer" ], + [ "VectorFieldSerializer", "classne_1_1VectorFieldSerializer.html", "classne_1_1VectorFieldSerializer" ], + [ "VertexFormatDescription", "classne_1_1VertexFormatDescription.html", "classne_1_1VertexFormatDescription" ], + [ "VulkanFrameResource", "structne_1_1VulkanFrameResource.html", "structne_1_1VulkanFrameResource" ], + [ "VulkanPipeline", "classne_1_1VulkanPipeline.html", "classne_1_1VulkanPipeline" ], + [ "VulkanRenderer", "classne_1_1VulkanRenderer.html", "classne_1_1VulkanRenderer" ], + [ "VulkanResource", "classne_1_1VulkanResource.html", "classne_1_1VulkanResource" ], + [ "VulkanResourceManager", "classne_1_1VulkanResourceManager.html", "classne_1_1VulkanResourceManager" ], + [ "VulkanShadowMapArrayIndexManager", "classne_1_1VulkanShadowMapArrayIndexManager.html", "classne_1_1VulkanShadowMapArrayIndexManager" ], + [ "Window", "classne_1_1Window.html", "classne_1_1Window" ], + [ "WindowBuilder", "classne_1_1WindowBuilder.html", "classne_1_1WindowBuilder" ], + [ "WindowBuilderParameters", "structne_1_1WindowBuilderParameters.html", "structne_1_1WindowBuilderParameters" ], + [ "WindowCursor", "classne_1_1WindowCursor.html", "classne_1_1WindowCursor" ], + [ "World", "classne_1_1World.html", "classne_1_1World" ] + ] ] +]; \ No newline at end of file diff --git a/bc_s.png b/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/bc_sd.png b/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/bdwn.png b/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +Nameless Engine: Class Index + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Index
+
+
+
A | C | D | E | F | G | H | I | K | L | M | N | O | P | Q | R | S | T | U | V | W
+
+
+
A
+
AABB (ne)
ActionState (ne)
AxisState (ne)
+
+
C
+
CalledEveryFrameNodes (ne)
CameraManager (ne)
CameraNode (ne)
CameraProperties (ne)
DescriptorSetLayoutGenerator::Collected (ne)
RootSignatureGenerator::CollectedInfo (ne)
ColorPipelineConfiguration (ne)
CompressonatorSingleton (ne)
LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeInfo (ne)
ComputePipelineConfiguration (ne)
PipelineManager::ComputePipelines (ne)
LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader (ne)
LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader (ne)
LightingShaderResourceManager::ComputeShaderData (ne)
ComputeShaderInterface (ne)
Cone (ne)
ConfigManager (ne)
ContinuousDirectXDescriptorRange (ne)
RenderStatistics::Counters (ne)
FrameResourceManager::CurrentFrameResource (ne)
+
+
D
+
KtxLoadingCallbackManager::Data (ne)
CameraProperties::Data (ne)
DelayedPipelineResourcesCreation (ne)
DepthPipelineConfiguration (ne)
DescriptorConstants (ne)
DescriptorSetLayoutGenerator::Collected::DescriptorSetLayoutBindingInfo (ne)
DescriptorSetLayoutGenerator (ne)
DirectXResource::DescriptorsSameType (ne)
DeserializedObjectInformation (ne)
DesktopNotification (ne)
DirectionalLightNode::DirecionalLightShaderData (ne)
DirectionalLightNode (ne)
DirectXDescriptor (ne)
DirectXDescriptorHeap (ne)
DirectXFrameResource (ne)
DirectXPso (ne)
DirectXRenderer (ne)
DirectXResource (ne)
DirectXResourceManager (ne)
DirectXShadowMapArrayIndexManager (ne)
DynamicCpuWriteShaderResourceArray (ne)
DynamicCpuWriteShaderResourceArrayManager (ne)
DynamicCpuWriteShaderResourceArraySlot (ne)
+
+
E
+
EditorCameraNode (ne)
EditorGameInstance (ne)
EditorGameInstance::EditorGcPointers (ne)
EditorInputEventIds (ne)
EditorNodeCreationHelpers (ne)
EngineShaderConstantMacros (ne)
EngineShaderNames (ne)
EngineShaders (ne)
EnvironmentNode (ne)
Error (ne)
+
+
F
+
FieldSerializerManager (ne)
FileDialog (ne)
EngineShaderConstantMacros::ForwardPlus (ne)
EngineShaderNames::ForwardPlus (ne)
EngineShaders::ForwardPlus (ne)
RenderStatistics::FpsLimitInfo (ne)
FrameConstants (ne)
FrameResource (ne)
FrameResourceManager (ne)
RenderStatistics::FramesPerSecondInfo (ne)
RenderStatistics::FrameTemporaryStatistics (ne)
Frustum (ne)
LightingShaderResourceManager::ComputeShaderData::Frustum (ne)
LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader (ne)
+
+
G
+
GameInstance (ne)
GameManager (ne)
LightingShaderResourceManager::GeneralLightingShaderData (ne)
DescriptorSetLayoutGenerator::Generated (ne)
RootSignatureGenerator::Generated (ne)
GLFW (ne)
GlmVecFieldSerializer (ne)
LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::GlobalCountersIntoLightIndexList (ne)
Globals (ne)
HlslShaderCacheManager::GlobalShaderCacheParameterNames (ne)
ShaderCacheManager::GlobalShaderCacheParameterNames (ne)
GlobalShaderResourceBinding (ne)
GlobalShaderResourceBindingManager (ne)
GlslComputeShaderInterface (ne)
GlslGlobalShaderResourceBinding (ne)
GlslShader (ne)
GlslShaderCacheManager (ne)
GlslShaderTextureResourceBinding (ne)
GlslVertexFormatDescription (ne)
LightingShaderResourceManager::GpuData (ne)
GpuResource (ne)
GpuResourceManager (ne)
Material::GpuResources (ne)
MeshNode::GpuResources (ne)
GraphicsPipelineRegistry (ne)
Guid (ne)
+
+
H
+
HlslComputeShaderInterface (ne)
HlslGlobalShaderResourceBinding (ne)
HlslShader (ne)
HlslShaderCacheManager (ne)
HlslShaderTextureResourceBinding (ne)
HlslVertexFormatDescription (ne)
+
+
I
+
IBinaryFieldSerializer (ne)
IFieldSerializer (ne)
InputManager (ne)
ContinuousDirectXDescriptorRange::InternalData (ne)
DirectXDescriptorHeap::InternalData (ne)
ShaderArrayIndexManager::InternalData (ne)
VulkanShadowMapArrayIndexManager::InternalData (ne)
DirectXPso::InternalResources (ne)
DynamicCpuWriteShaderResourceArray::InternalResources (ne)
Material::InternalResources (ne)
ShaderPack::InternalResources (ne)
ShadowMapHandle::InternalResources (ne)
ShadowMapManager::InternalResources (ne)
VulkanPipeline::InternalResources (ne)
+
+
K
+
KeyboardModifiers (ne)
KtxLoadingCallbackManager (ne)
+
+
L
+
LightingShaderResourceManager::LightArrays (ne)
LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader (ne)
LightingShaderResourceManager (ne)
Renderer::LightsInFrustum (ne)
SpatialNode::LocalSpaceInformation (ne)
Logger (ne)
+
+
M
+
Material (ne)
Renderer::MeshesInFrustum::MaterialInFrustumInfo (ne)
Material::MaterialShaderConstants (ne)
MathHelpers (ne)
MeshNode::GpuResources::Mesh (ne)
MeshData (ne)
MeshDataBinaryFieldSerializer (ne)
Renderer::MeshesInFrustum (ne)
MeshImporter (ne)
MeshIndexBufferInfo (ne)
Renderer::MeshesInFrustum::MeshInFrustumInfo (ne)
EngineShaderNames::MeshNode (ne)
EngineShaders::MeshNode (ne)
MeshNode (ne)
MeshNodeGlslVertexFormatDescription (ne)
MeshNodeHlslVertexFormatDescription (ne)
MeshNodesThatUseThisMaterial (ne)
MeshNode::MeshShaderConstants (ne)
MeshVertex (ne)
MessageBox (ne)
+
+
N
+
Node (ne)
NodeFunction (ne)
NodeFunction< FunctionReturnType(FunctionArgs...)> (ne)
NodeNotificationBroadcaster (ne)
NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)> (ne)
NodeNotificationBroadcasterBase (ne)
+
+
O
+
OpenLinkInBrowser (ne)
CameraProperties::Data::OrbitalModeData (ne)
+
+
P
+
Pipeline (ne)
PipelineConfiguration (ne)
Renderer::MeshesInFrustum::PipelineInFrustumInfo (ne)
PipelineManager (ne)
PipelineShaderConstantsManager (ne)
PipelineSharedPtr (ne)
LightingShaderResourceManager::ComputeShaderData::Plane (ne)
Plane (ne)
EngineShaderNames::PointLight (ne)
EngineShaders::PointLight (ne)
PointLightNode (ne)
PointLightNode::PointLightShaderData (ne)
PrimitiveFieldSerializer (ne)
PrimitiveMeshGenerator (ne)
CameraProperties::Data::ProjectionData (ne)
ProjectPaths (ne)
GlslShaderTextureResourceBinding::PushConstantIndices (ne)
+
+
Q
+
QueuedForExecutionComputeShaders (ne)
VulkanRenderer::QueueFamilyIndices (ne)
+
+
R
+
Renderer (ne)
RenderSettings (ne)
RenderStatistics (ne)
PipelineManager::ComputePipelines::Resources (ne)
ShaderCpuWriteResourceBindingManager::Resources (ne)
ShaderLightArray::Resources (ne)
RootSignatureGenerator::RootParameter (ne)
RootSignatureGenerator (ne)
+
+
S
+
LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ScreenToViewData (ne)
Serializable (ne)
SerializableObjectFieldSerializer (ne)
SerializableObjectInformation (ne)
Node::SerializableObjectInformationWithGcPointer (ne)
Serialize (ne)
Shader (ne)
ShaderArrayIndex (ne)
ShaderArrayIndexManager (ne)
ShaderCacheInvalidationReasonDescription (ne)
ShaderCacheManager (ne)
ShaderConfiguration (ne)
Pipeline::ShaderConstantsData (ne)
ShaderCpuWriteResourceBinding (ne)
ShaderCpuWriteResourceBindingManager (ne)
ShaderCpuWriteResourceBindingUniquePtr (ne)
DirectionalLightNode::ShaderData (ne)
PointLightNode::ShaderData (ne)
ShaderManager::ShaderData (ne)
SpotlightNode::ShaderData (ne)
ShaderDescription (ne)
ShaderFilesystemPaths (ne)
ShaderLightArray (ne)
ShaderLightArraySlot (ne)
ShaderLightsInFrustumSingleType (ne)
ShaderMacroConfigurations (ne)
ShaderMacroSetHash (ne)
ShaderManager (ne)
ShaderPack (ne)
ShaderPipelines (ne)
ShaderResourceBindingBase (ne)
LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ShaderResources (ne)
LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources (ne)
Material::GpuResources::ShaderResources (ne)
MeshNode::GpuResources::ShaderResources (ne)
ShaderTextureResourceBinding (ne)
ShaderTextureResourceBindingManager (ne)
ShaderTextureResourceBindingUniquePtr (ne)
ShaderUser (ne)
ShadowMapArrayIndexManager (ne)
ShadowMapHandle (ne)
ShadowMapManager::ShadowMapHandleResources (ne)
ShadowMapManager (ne)
DirectionalLightNode::ShaderData::ShadowPassDataGroup (ne)
SpotlightNode::ShaderData::ShadowPassDataGroup (ne)
PointLightNode::ShaderData::ShadowPassDataGroup (ne)
ShadowPassLightShaderInfo (ne)
SourceLocationInfo (ne)
SpatialNode (ne)
PipelineShaderConstantsManager::SpecialConstantsNames (ne)
Sphere (ne)
SpotlightNode (ne)
SpotlightNode::SpotlightShaderData (ne)
StdStringHash (ne)
StringFieldSerializer (ne)
VulkanRenderer::SwapChainImageSemaphores (ne)
VulkanRenderer::SwapChainSupportDetails (ne)
+
+
T
+
RenderStatistics::TaskTimeInfo (ne)
TextureHandle (ne)
TextureImporter (ne)
TextureManager (ne)
TextureManager::TextureResource (ne)
LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ThreadGroupCount (ne)
ThreadPool (ne)
Timer (ne)
+
+
U
+
UniqueValueGenerator (ne)
UnorderedMapFieldSerializer (ne)
UploadBuffer (ne)
+
+
V
+
VectorFieldSerializer (ne)
VertexFormatDescription (ne)
CameraProperties::Data::ViewData (ne)
VulkanFrameResource (ne)
VulkanPipeline (ne)
VulkanRenderer (ne)
VulkanResource (ne)
VulkanResourceManager (ne)
VulkanShadowMapArrayIndexManager (ne)
+
+
W
+
Window (ne)
WindowBuilder (ne)
WindowBuilderParameters (ne)
WindowCursor (ne)
World (ne)
Globals::WorldDirection (ne)
SpatialNode::WorldMatrixInformation (ne)
+
+
+
+ + + + diff --git a/classne_1_1ActionState-members.html b/classne_1_1ActionState-members.html new file mode 100644 index 000000000..a182c8ebf --- /dev/null +++ b/classne_1_1ActionState-members.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ActionState Member List
+
+
+ +

This is the complete list of members for ne::ActionState, including all inherited members.

+ + + + + +
ActionState()=delete (defined in ne::ActionState)ne::ActionState
ActionState(std::variant< KeyboardKey, MouseButton > key)ne::ActionStateinline
bIsPressedne::ActionState
keyne::ActionState
+
+ + + + diff --git a/classne_1_1ActionState.html b/classne_1_1ActionState.html new file mode 100644 index 000000000..0b84a8963 --- /dev/null +++ b/classne_1_1ActionState.html @@ -0,0 +1,197 @@ + + + + + + + +Nameless Engine: ne::ActionState Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::ActionState Class Reference
+
+
+ +

#include <InputManager.h>

+ + + + +

+Public Member Functions

 ActionState (std::variant< KeyboardKey, MouseButton > key)
 
+ + + + + +

+Public Attributes

bool bIsPressed
 
std::variant< KeyboardKey, MouseButton > key
 
+

Detailed Description

+

Holds current action state.

+

Constructor & Destructor Documentation

+ +

◆ ActionState()

+ +
+
+ + + + + +
+ + + + + + + + +
ne::ActionState::ActionState (std::variant< KeyboardKey, MouseButton > key)
+
+inline
+
+

Initialize action state.

+
Parameters
+ + +
keyAction key.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ bIsPressed

+ +
+
+ + + + +
bool ne::ActionState::bIsPressed
+
+

Whether the key is pressed or not.

+ +
+
+ +

◆ key

+ +
+
+ + + + +
std::variant<KeyboardKey, MouseButton> ne::ActionState::key
+
+

Action key.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classne_1_1ActionState.js b/classne_1_1ActionState.js new file mode 100644 index 000000000..d90eed654 --- /dev/null +++ b/classne_1_1ActionState.js @@ -0,0 +1,6 @@ +var classne_1_1ActionState = +[ + [ "ActionState", "classne_1_1ActionState.html#aad7da26eea3f54bc3a62b93001280e39", null ], + [ "bIsPressed", "classne_1_1ActionState.html#a74806e9ae9fd398330ed7e5624d0a228", null ], + [ "key", "classne_1_1ActionState.html#a888b3a37b42550ea2386cd76dcea7c64", null ] +]; \ No newline at end of file diff --git a/classne_1_1AxisState-members.html b/classne_1_1AxisState-members.html new file mode 100644 index 000000000..657ce910a --- /dev/null +++ b/classne_1_1AxisState-members.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::AxisState Member List
+
+
+ +

This is the complete list of members for ne::AxisState, including all inherited members.

+ + + + + + + +
AxisState()=delete (defined in ne::AxisState)ne::AxisState
AxisState(KeyboardKey plusKey, KeyboardKey minusKey)ne::AxisStateinline
bIsMinusKeyPressedne::AxisState
bIsPlusKeyPressedne::AxisState
minusKeyne::AxisState
plusKeyne::AxisState
+
+ + + + diff --git a/classne_1_1AxisState.html b/classne_1_1AxisState.html new file mode 100644 index 000000000..439a81e0c --- /dev/null +++ b/classne_1_1AxisState.html @@ -0,0 +1,242 @@ + + + + + + + +Nameless Engine: ne::AxisState Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::AxisState Class Reference
+
+
+ +

#include <InputManager.h>

+ + + + +

+Public Member Functions

 AxisState (KeyboardKey plusKey, KeyboardKey minusKey)
 
+ + + + + + + + + +

+Public Attributes

KeyboardKey plusKey
 
KeyboardKey minusKey
 
bool bIsPlusKeyPressed
 
bool bIsMinusKeyPressed
 
+

Detailed Description

+

Holds current axis event state.

+

Constructor & Destructor Documentation

+ +

◆ AxisState()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ne::AxisState::AxisState (KeyboardKey plusKey,
KeyboardKey minusKey 
)
+
+inline
+
+

Initializes axis event state.

+
Parameters
+ + + +
plusKeyKey for '+1' input.
minusKeyKey for '-1' input.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ bIsMinusKeyPressed

+ +
+
+ + + + +
bool ne::AxisState::bIsMinusKeyPressed
+
+

Whether minusKey is currently pressed or not.

+ +
+
+ +

◆ bIsPlusKeyPressed

+ +
+
+ + + + +
bool ne::AxisState::bIsPlusKeyPressed
+
+

Whether plusKey is currently pressed or not.

+ +
+
+ +

◆ minusKey

+ +
+
+ + + + +
KeyboardKey ne::AxisState::minusKey
+
+

Plus key (triggers input value '-1').

+ +
+
+ +

◆ plusKey

+ +
+
+ + + + +
KeyboardKey ne::AxisState::plusKey
+
+

Plus key (triggers input value '+1').

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classne_1_1AxisState.js b/classne_1_1AxisState.js new file mode 100644 index 000000000..ff4b239cb --- /dev/null +++ b/classne_1_1AxisState.js @@ -0,0 +1,8 @@ +var classne_1_1AxisState = +[ + [ "AxisState", "classne_1_1AxisState.html#ad00936b0ee3e548a80755ea39c5537fa", null ], + [ "bIsMinusKeyPressed", "classne_1_1AxisState.html#acf4131e37774d3851819c503f89a99bd", null ], + [ "bIsPlusKeyPressed", "classne_1_1AxisState.html#a7721daebc4ca92d0799ca407c30b543e", null ], + [ "minusKey", "classne_1_1AxisState.html#a61729c5d8d492f9f3f68d8569c0e27d0", null ], + [ "plusKey", "classne_1_1AxisState.html#a5180a63f5c3d86e079aa52bc24287c85", null ] +]; \ No newline at end of file diff --git a/classne_1_1CameraManager-members.html b/classne_1_1CameraManager-members.html new file mode 100644 index 000000000..19cd35847 --- /dev/null +++ b/classne_1_1CameraManager-members.html @@ -0,0 +1,119 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::CameraManager Member List
+
+
+ +

This is the complete list of members for ne::CameraManager, including all inherited members.

+ + + + + + + + + + +
CameraManager()=delete (defined in ne::CameraManager)ne::CameraManager
CameraManager(Renderer *pRenderer)ne::CameraManager
CameraNode (defined in ne::CameraManager)ne::CameraManagerfriend
clearActiveCamera()ne::CameraManager
getActiveCamera()ne::CameraManager
mtxActiveCamerane::CameraManagerprivate
onCameraNodeDespawning(CameraNode *pCameraNode)ne::CameraManagerprivate
pRendererne::CameraManagerprivate
setActiveCamera(const sgc::GcPtr< CameraNode > &pCameraNode)ne::CameraManager
+
+ + + + diff --git a/classne_1_1CameraManager.html b/classne_1_1CameraManager.html new file mode 100644 index 000000000..715b855b4 --- /dev/null +++ b/classne_1_1CameraManager.html @@ -0,0 +1,327 @@ + + + + + + + +Nameless Engine: ne::CameraManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <CameraManager.h>

+ + + + + + + + + + +

+Public Member Functions

 CameraManager (Renderer *pRenderer)
 
void setActiveCamera (const sgc::GcPtr< CameraNode > &pCameraNode)
 
void clearActiveCamera ()
 
std::pair< std::recursive_mutex, sgc::GcPtr< CameraNode > > * getActiveCamera ()
 
+ + + +

+Private Member Functions

void onCameraNodeDespawning (CameraNode *pCameraNode)
 
+ + + + + +

+Private Attributes

RendererpRenderer = nullptr
 
std::pair< std::recursive_mutex, sgc::GcPtr< CameraNode > > mtxActiveCamera
 
+ + + +

+Friends

+class CameraNode
 
+

Detailed Description

+

Determines what camera is used to draw on the screen.

+

Constructor & Destructor Documentation

+ +

◆ CameraManager()

+ +
+
+ + + + + + + + +
ne::CameraManager::CameraManager (RendererpRenderer)
+
+

Creates a new manager.

+
Parameters
+ + +
pRendererUsed renderer.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ clearActiveCamera()

+ +
+
+ + + + + + + +
void ne::CameraManager::clearActiveCamera ()
+
+

Removes the currently active camera so that there will be no active camera.

+ +
+
+ +

◆ getActiveCamera()

+ +
+
+ + + + + + + +
std::pair< std::recursive_mutex, sgc::GcPtr< CameraNode > > * ne::CameraManager::getActiveCamera ()
+
+

Returns the currently active camera.

+
Warning
Don't change pointers to cameras in returned object, only copy pointers or modify camera/node properties.
+
+Must be used with the mutex.
+
Returns
nullptr if there is no active camera, otherwise valid camera.
+ +
+
+ +

◆ onCameraNodeDespawning()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::CameraManager::onCameraNodeDespawning (CameraNodepCameraNode)
+
+private
+
+

Called by an active camera node when it's being despawned.

+
Parameters
+ + +
pCameraNodeCamera node that's being despawned.
+
+
+ +
+
+ +

◆ setActiveCamera()

+ +
+
+ + + + + + + + +
void ne::CameraManager::setActiveCamera (const sgc::GcPtr< CameraNode > & pCameraNode)
+
+

Makes a camera node to be the primary camera.

+
Remarks
Only spawned camera nodes can be used here, otherwise an error will be shown.
+
+Previously active camera (if there was one) will become inactive.
+
Parameters
+ + +
pCameraNodeSpawned camera node to make active.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ mtxActiveCamera

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, sgc::GcPtr<CameraNode> > ne::CameraManager::mtxActiveCamera
+
+private
+
+

Stores active camera.

+ +
+
+ +

◆ pRenderer

+ +
+
+ + + + + +
+ + + + +
Renderer* ne::CameraManager::pRenderer = nullptr
+
+private
+
+

Used renderer.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/game/camera/CameraManager.h
  • +
  • src/engine_lib/private/game/camera/CameraManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1CameraManager.js b/classne_1_1CameraManager.js new file mode 100644 index 000000000..2d1e2cef9 --- /dev/null +++ b/classne_1_1CameraManager.js @@ -0,0 +1,10 @@ +var classne_1_1CameraManager = +[ + [ "CameraManager", "classne_1_1CameraManager.html#a72ffaa75c6f90e592e015c81cdf1451b", null ], + [ "clearActiveCamera", "classne_1_1CameraManager.html#ac8d1c44db8825d68771422dcf1acf0d8", null ], + [ "getActiveCamera", "classne_1_1CameraManager.html#a01a07e47ef74699df66d3d84a127d903", null ], + [ "onCameraNodeDespawning", "classne_1_1CameraManager.html#a2906fa6c31c8fab04105c42ea23e33bb", null ], + [ "setActiveCamera", "classne_1_1CameraManager.html#a5e5b95f80a0d2bb1ede34a07f1c48668", null ], + [ "mtxActiveCamera", "classne_1_1CameraManager.html#a43472a1a4b0ef3935dd4c82d526ab99b", null ], + [ "pRenderer", "classne_1_1CameraManager.html#a8d260bedb94ed5c4a1da2d50dab95644", null ] +]; \ No newline at end of file diff --git a/classne_1_1CameraNode-members.html b/classne_1_1CameraNode-members.html new file mode 100644 index 000000000..c644807de --- /dev/null +++ b/classne_1_1CameraNode-members.html @@ -0,0 +1,258 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::CameraNode Member List
+
+
+ +

This is the complete list of members for ne::CameraNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addChildNode(const sgc::GcPtr< Node > &pNode, AttachmentRule locationRule=AttachmentRule::KEEP_WORLD, AttachmentRule rotationRule=AttachmentRule::KEEP_WORLD, AttachmentRule scaleRule=AttachmentRule::KEEP_WORLD)ne::Node
applyAttachmentRule(Node::AttachmentRule locationRule, const glm::vec3 &worldLocationBeforeAttachment, Node::AttachmentRule rotationRule, const glm::vec3 &worldRotationBeforeAttachment, Node::AttachmentRule scaleRule, const glm::vec3 &worldScaleBeforeAttachment)ne::SpatialNodeprivate
AttachmentRule enum namene::Node
bSerializene::Nodeprivate
CameraManager (defined in ne::CameraNode)ne::CameraNodefriend
CameraNode() (defined in ne::CameraNode)ne::CameraNode
CameraNode(const std::string &sNodeName)ne::CameraNode
cameraPropertiesne::CameraNodeprivate
clearOrbitalTargetLocation()ne::CameraNode
createNotificationBroadcaster()ne::Nodeinlineprotected
createTimer(const std::string &sTimerName)ne::Nodeprotected
deserialize(const std::filesystem::path &pathToFile)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)ne::Serializablestatic
deserialize(std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, const std::string &sEntityId)ne::Serializablestatic
deserialize(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})ne::Serializablestatic
deserializeFromSection(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sSectionName, const std::string &sTypeGuid, const std::string &sEntityId, const std::optional< std::filesystem::path > &optionalPathToFile)ne::Serializableprivatestatic
deserializeMultiple(std::filesystem::path pathToFile)ne::Serializablestatic
deserializeNodeTree(const std::filesystem::path &pathToFile)ne::Nodestatic
despawn()ne::Nodeprivate
detachFromParentAndDespawn()ne::Node
enableTimer(Timer *pTimer, bool bEnable)ne::Nodeprivate
findValidWorld()ne::Nodeprivate
getActionEventBindings()ne::Nodeprotected
getAliveNodeCount()ne::Nodestatic
getAxisEventBindings()ne::Nodeprotected
getCameraProperties()ne::CameraNode
getChildNodeOfType(const std::string &sChildNodeName="")ne::Node
getChildNodes()ne::Node
getClassForGuid(const std::string &sGuid)ne::Serializableprivatestatic
getClassForGuid(const rfk::Struct *pArchetypeToAnalyze, const std::string &sGuid)ne::Serializableprivatestatic
getClosestSpatialParent()ne::SpatialNode
getGameInstance()ne::Nodestatic
getIdsFromFile(std::filesystem::path pathToFile)ne::Serializablestatic
getInformationForSerialization(size_t &iId, std::optional< size_t > iParentId)ne::Nodeprivate
getNodeId() constne::Node
getNodeName() constne::Node
getOrbitalTargetLocation()ne::CameraNode
getParentNode()ne::Node
getParentNodeOfType(const std::string &sParentNodeName="")ne::Node
getPathDeserializedFromRelativeToRes() constne::Serializable
getRelativeLocation() constne::SpatialNodeinline
getRelativeRotation() constne::SpatialNodeinline
getRelativeRotationMatrix()ne::SpatialNode
getRelativeScale() constne::SpatialNodeinline
getSpawnDespawnMutex()ne::Nodeprotected
getTickGroup() constne::Node
getWorldForwardDirection()ne::SpatialNode
getWorldLocation()ne::SpatialNode
getWorldMatrix()ne::SpatialNode
getWorldRightDirection()ne::SpatialNode
getWorldRootNode()ne::Node
getWorldRotation()ne::SpatialNode
getWorldRotationQuaternion()ne::SpatialNode
getWorldScale()ne::SpatialNode
getWorldUpDirection()ne::SpatialNode
iNodeIdne::Nodeprivate
isCalledEveryFrame()ne::Node
isChildOf(Node *pNode)ne::Node
isParentOf(Node *pNode)ne::Node
isReceivingInput()ne::Node
isSerialized() constne::Node
isSpawned()ne::Node
isTreeDeserializedFromOneFile(const std::string &sPathRelativeToRes)ne::Nodeprivate
localSpaceOriginInWorldSpacene::CameraNodeprivate
lockChildren()ne::Nodeprivate
makeActive()ne::CameraNode
mtxBindedActionEventsne::Nodeprivate
mtxBindedAxisEventsne::Nodeprivate
mtxChildNodesne::Nodeprivate
mtxCreatedBroadcastersne::Nodeprivate
mtxCreatedTimersne::Nodeprivate
mtxIsActivene::CameraNodeprivate
mtxIsCalledEveryFramene::Nodeprivate
mtxIsReceivingInputne::Nodeprivate
mtxIsSpawnedne::Nodeprivate
mtxLocalSpacene::SpatialNodeprivate
mtxParentNodene::Nodeprivate
mtxSpatialParentne::SpatialNodeprivate
mtxWorldMatrixne::SpatialNodeprivate
ne::Node::Node(const std::string &sName)ne::Node
Node(const Node &)=delete (defined in ne::Node)ne::Node
Node(Node &&)=delete (defined in ne::Node)ne::Node
notifyAboutAttachedToNewParent(bool bThisNodeBeingAttached)ne::Nodeprivate
notifyAboutDetachingFromParent(bool bThisNodeBeingDetached)ne::Nodeprivate
onAfterAttachedToNewParent(bool bThisNodeBeingAttached) overridene::SpatialNodeprotectedvirtual
onAfterDeserialized() overridene::SpatialNodeprotectedvirtual
onBeforeDetachedFromParent(bool bThisNodeBeingDetached)ne::Nodeinlineprotectedvirtual
onBeforeNewFrame(float timeSincePrevFrameInSec)ne::Nodeinlineprotectedvirtual
onChildNodesSpawned()ne::Nodeinlineprotectedvirtual
onDespawning() overridene::CameraNodeprotectedvirtual
onInputActionEvent(unsigned int iActionId, KeyboardModifiers modifiers, bool bIsPressedDown)ne::Nodeprivate
onInputAxisEvent(unsigned int iAxisEventId, KeyboardModifiers modifiers, float input)ne::Nodeprivate
onMouseMove(double xOffset, double yOffset)ne::Nodeinlineprotectedvirtual
onMouseScrollMove(int iOffset)ne::Nodeinlineprotectedvirtual
onSpawning() overridene::SpatialNodeprotectedvirtual
onWorldLocationRotationScaleChanged() overridene::CameraNodeprotectedvirtual
operator=(const Node &)=delete (defined in ne::Node)ne::Node
operator=(Node &&)=delete (defined in ne::Node)ne::Node
orbitalCameraTargetInWorldSpacene::CameraNodeprivate
pathDeserializedFromRelativeToResne::Serializableprivate
pWorldne::Nodeprivate
recalculateLocalMatrix()ne::SpatialNodeprivate
recalculateWorldMatrix(bool bNotifyChildren=true)ne::SpatialNodeprivate
recalculateWorldMatrixForNodeAndNotifyChildren(Node *pNode)ne::SpatialNodeprivate
relativeLocationne::SpatialNodeprivate
relativeRotationne::SpatialNodeprivate
relativeScalene::SpatialNodeprivate
resolvePathToToml(std::filesystem::path &pathToFile)ne::Serializableprivatestatic
rotationDeltane::CameraNodeinlineprivatestatic
sCustomAttributePrefixne::Serializableprivatestatic
Serializable()=default (defined in ne::Serializable)ne::Serializable
serialize(std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})ne::Serializable
serialize(toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serialize(toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serializeMultiple(std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)ne::Serializablestatic
serializeNodeTree(const std::filesystem::path &pathToFile, bool bEnableBackup)ne::Node
setCameraMode(CameraMode mode)ne::CameraNode
setIsCalledEveryFrame(bool bEnable)ne::Nodeprotected
setIsReceivingInput(bool bEnable)ne::Nodeprotected
setNodeName(const std::string &sName)ne::Node
setOrbitalDistanceToTarget(float distanceToTarget)ne::CameraNode
setOrbitalRotation(float phi, float theta)ne::CameraNode
setOrbitalTargetLocation(const glm::vec3 &targetPointLocation)ne::CameraNode
setRelativeLocation(const glm::vec3 &location)ne::SpatialNode
setRelativeRotation(const glm::vec3 &rotation)ne::SpatialNode
setRelativeScale(const glm::vec3 &scale)ne::SpatialNode
setSerialize(bool bSerialize)ne::Node
setTickGroup(TickGroup tickGroup)ne::Nodeprotected
setWorldLocation(const glm::vec3 &location)ne::SpatialNode
setWorldRotation(const glm::vec3 &rotation)ne::SpatialNode
setWorldScale(const glm::vec3 &scale)ne::SpatialNode
sExternalNodeTreePathAttributeNamene::Nodeinlineprivatestatic
sNodeNamene::Nodeprivate
sNothingToSerializeKeyne::Serializableinlineprivatestatic
sParentNodeIdAttributeNamene::Nodeinlineprivatestatic
sPathRelativeToResKeyne::Serializableinlineprivatestatic
SpatialNode() (defined in ne::SpatialNode)ne::SpatialNode
SpatialNode(const std::string &sNodeName)ne::SpatialNode
spawn()ne::Nodeprivate
sSubEntityFieldNameKeyne::Serializableinlineprivatestatic
tickGroupne::Nodeprivate
unlockChildren()ne::Nodeprivate
updateCameraProperties()ne::CameraNodeprivate
~CameraNode() override=default (defined in ne::CameraNode)ne::CameraNodevirtual
~Node() overridene::Nodevirtual
~Serializable() override=default (defined in ne::Serializable)ne::Serializablevirtual
~SpatialNode() override=default (defined in ne::SpatialNode)ne::SpatialNodevirtual
+
+ + + + diff --git a/classne_1_1CameraNode.html b/classne_1_1CameraNode.html new file mode 100644 index 000000000..f03690cbb --- /dev/null +++ b/classne_1_1CameraNode.html @@ -0,0 +1,818 @@ + + + + + + + +Nameless Engine: ne::CameraNode Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <CameraNode.h>

+
+Inheritance diagram for ne::CameraNode:
+
+
+ + +ne::SpatialNode +ne::Node +ne::Serializable +ne::EditorCameraNode + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 CameraNode (const std::string &sNodeName)
 
void makeActive ()
 
void setCameraMode (CameraMode mode)
 
void setOrbitalTargetLocation (const glm::vec3 &targetPointLocation)
 
void clearOrbitalTargetLocation ()
 
void setOrbitalRotation (float phi, float theta)
 
void setOrbitalDistanceToTarget (float distanceToTarget)
 
glm::vec3 getOrbitalTargetLocation ()
 
CameraPropertiesgetCameraProperties ()
 
- Public Member Functions inherited from ne::SpatialNode
 SpatialNode (const std::string &sNodeName)
 
void setRelativeLocation (const glm::vec3 &location)
 
void setRelativeRotation (const glm::vec3 &rotation)
 
void setRelativeScale (const glm::vec3 &scale)
 
void setWorldLocation (const glm::vec3 &location)
 
void setWorldRotation (const glm::vec3 &rotation)
 
void setWorldScale (const glm::vec3 &scale)
 
glm::vec3 getRelativeLocation () const
 
glm::vec3 getRelativeRotation () const
 
glm::vec3 getRelativeScale () const
 
glm::mat4x4 getRelativeRotationMatrix ()
 
glm::vec3 getWorldLocation ()
 
glm::vec3 getWorldRotation ()
 
glm::quat getWorldRotationQuaternion ()
 
glm::vec3 getWorldScale ()
 
glm::vec3 getWorldForwardDirection ()
 
glm::vec3 getWorldRightDirection ()
 
glm::vec3 getWorldUpDirection ()
 
glm::mat4x4 getWorldMatrix ()
 
std::pair< std::recursive_mutex, sgc::GcPtr< SpatialNode > > * getClosestSpatialParent ()
 
- Public Member Functions inherited from ne::Node
 Node ()
 
 Node (const std::string &sName)
 
Node (const Node &)=delete
 
+Nodeoperator= (const Node &)=delete
 
Node (Node &&)=delete
 
+Nodeoperator= (Node &&)=delete
 
virtual ~Node () override
 
void setNodeName (const std::string &sName)
 
void detachFromParentAndDespawn ()
 
void addChildNode (const sgc::GcPtr< Node > &pNode, AttachmentRule locationRule=AttachmentRule::KEEP_WORLD, AttachmentRule rotationRule=AttachmentRule::KEEP_WORLD, AttachmentRule scaleRule=AttachmentRule::KEEP_WORLD)
 
void setSerialize (bool bSerialize)
 
std::optional< ErrorserializeNodeTree (const std::filesystem::path &pathToFile, bool bEnableBackup)
 
std::string getNodeName () const
 
sgc::GcPtr< NodegetWorldRootNode ()
 
std::pair< std::recursive_mutex, sgc::GcPtr< Node > > * getParentNode ()
 
std::pair< std::recursive_mutex, sgc::GcVector< sgc::GcPtr< Node > > > * getChildNodes ()
 
template<typename NodeType >
+requires std::derived_from<NodeType, Node>
sgc::GcPtr< NodeType > getParentNodeOfType (const std::string &sParentNodeName="")
 
template<typename NodeType >
+requires std::derived_from<NodeType, Node>
sgc::GcPtr< NodeType > getChildNodeOfType (const std::string &sChildNodeName="")
 
TickGroup getTickGroup () const
 
std::optional< size_t > getNodeId () const
 
bool isCalledEveryFrame ()
 
bool isReceivingInput ()
 
bool isSpawned ()
 
bool isParentOf (Node *pNode)
 
bool isChildOf (Node *pNode)
 
bool isSerialized () const
 
- Public Member Functions inherited from ne::Serializable
std::optional< Errorserialize (std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})
 
std::variant< std::string, Errorserialize (toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::variant< std::string, Errorserialize (toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::optional< std::pair< std::string, std::string > > getPathDeserializedFromRelativeToRes () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void onWorldLocationRotationScaleChanged () override
 
virtual void onDespawning () override
 
- Protected Member Functions inherited from ne::SpatialNode
virtual void onAfterDeserialized () override
 
virtual void onSpawning () override
 
virtual void onAfterAttachedToNewParent (bool bThisNodeBeingAttached) override
 
virtual void onWorldLocationRotationScaleChanged ()
 
- Protected Member Functions inherited from ne::Node
void setIsCalledEveryFrame (bool bEnable)
 
void setTickGroup (TickGroup tickGroup)
 
void setIsReceivingInput (bool bEnable)
 
TimercreateTimer (const std::string &sTimerName)
 
template<typename FunctionType >
NodeNotificationBroadcaster< FunctionType > * createNotificationBroadcaster ()
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, bool)> > > * getActionEventBindings ()
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, float)> > > * getAxisEventBindings ()
 
std::recursive_mutex * getSpawnDespawnMutex ()
 
virtual void onMouseMove (double xOffset, double yOffset)
 
virtual void onMouseScrollMove (int iOffset)
 
virtual void onBeforeNewFrame (float timeSincePrevFrameInSec)
 
virtual void onSpawning ()
 
virtual void onChildNodesSpawned ()
 
virtual void onDespawning ()
 
virtual void onBeforeDetachedFromParent (bool bThisNodeBeingDetached)
 
virtual void onAfterAttachedToNewParent (bool bThisNodeBeingAttached)
 
virtual void onAfterDeserialized ()
 
+ + + +

+Private Member Functions

void updateCameraProperties ()
 
+ + + + + + + + + +

+Private Attributes

CameraProperties cameraProperties
 
std::optional< glm::vec3 > orbitalCameraTargetInWorldSpace = {}
 
glm::vec3 localSpaceOriginInWorldSpace = glm::vec3(0.0F, 0.0F, 0.0F)
 
std::pair< std::recursive_mutex, bool > mtxIsActive
 
+ + + +

+Static Private Attributes

static constexpr float rotationDelta = 0.0001F
 
+ + + +

+Friends

+class CameraManager
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ne::Node
enum class  AttachmentRule { RESET_RELATIVE +, KEEP_RELATIVE +, KEEP_WORLD + }
 
- Static Public Member Functions inherited from ne::Node
static size_t getAliveNodeCount ()
 
static std::variant< sgc::GcPtr< Node >, ErrordeserializeNodeTree (const std::filesystem::path &pathToFile)
 
static GameInstancegetGameInstance ()
 
- Static Public Member Functions inherited from ne::Serializable
static std::variant< std::pair< std::set< std::string >, toml::value >, ErrorgetIdsFromFile (std::filesystem::path pathToFile)
 
static std::optional< ErrorserializeMultiple (std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::same_as<SmartPointer, sgc::GcPtr<Serializable>> || std::same_as<SmartPointer, std::unique_ptr<Serializable>>
static std::variant< std::vector< DeserializedObjectInformation< SmartPointer > >, ErrordeserializeMultiple (std::filesystem::path pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})
 
+

Detailed Description

+

Represents a camera in 3D space.

+

Constructor & Destructor Documentation

+ +

◆ CameraNode()

+ +
+
+ + + + + + + + +
ne::CameraNode::CameraNode (const std::string & sNodeName)
+
+

Creates a new node with the specified name.

+
Parameters
+ + +
sNodeNameName of this node.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ clearOrbitalTargetLocation()

+ +
+
+ + + + + + + +
void ne::CameraNode::clearOrbitalTargetLocation ()
+
+

Resets target point specified in setOrbitalTargetLocation so that orbital camera will look at node's local space origin.

+
Remarks
Only works if the current camera mode is orbital (see setCameraMode), otherwise logs a warning.
+ +
+
+ +

◆ getCameraProperties()

+ +
+
+ + + + + + + +
CameraProperties * ne::CameraNode::getCameraProperties ()
+
+

Returns camera properties.

+
Warning
Do not delete returned pointer.
+
Returns
Camera properties.
+ +
+
+ +

◆ getOrbitalTargetLocation()

+ +
+
+ + + + + + + +
glm::vec3 ne::CameraNode::getOrbitalTargetLocation ()
+
+

Returns location in world space to where the orbital camera looks at (also see setOrbitalTargetLocation).

+
Remarks
Only works if the current camera mode is orbital (see setCameraMode), otherwise logs a warning.
+
Returns
Location in world space.
+ +
+
+ +

◆ makeActive()

+ +
+
+ + + + + + + +
void ne::CameraNode::makeActive ()
+
+

Makes the camera of this node to be the primary camera and you will see what this camera sees on the game window.

+
Remarks
Only spawned camera nodes can be primary (active), otherwise an error will be shown.
+
+Previously active camera (if there was one) will become inactive.
+ +
+
+ +

◆ onDespawning()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::CameraNode::onDespawning ()
+
+overrideprotectedvirtual
+
+

Called before this node is despawned from the world to execute custom despawn logic.

+
Remarks
This node will be marked as despawned after this function is called.
+
+This function is called after all child nodes were despawned.
+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +

Reimplemented from ne::Node.

+ +
+
+ +

◆ onWorldLocationRotationScaleChanged()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::CameraNode::onWorldLocationRotationScaleChanged ()
+
+overrideprotectedvirtual
+
+

Called after node's world location/rotation/scale was changed.

+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +

Reimplemented from ne::SpatialNode.

+ +
+
+ +

◆ setCameraMode()

+ +
+
+ + + + + + + + +
void ne::CameraNode::setCameraMode (CameraMode mode)
+
+

Sets how the camera can move and rotate.

+
Parameters
+ + +
modeNew mode.
+
+
+ +
+
+ +

◆ setOrbitalDistanceToTarget()

+ +
+
+ + + + + + + + +
void ne::CameraNode::setOrbitalDistanceToTarget (float distanceToTarget)
+
+

Sets orbital camera's radial distance or distance from camera to camera's target point (see setOrbitalTargetLocation).

+
Remarks
Only works if the current camera mode is orbital (see setCameraMode), otherwise logs a warning.
+
Parameters
+ + +
distanceToTargetRadial distance or distance from camera to camera's target point.
+
+
+ +
+
+ +

◆ setOrbitalRotation()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ne::CameraNode::setOrbitalRotation (float phi,
float theta 
)
+
+

Sets orbital camera's rotation by specifying tilt and rotation around camera's target point (see setOrbitalTargetLocation).

+
Remarks
Only works if the current camera mode is orbital (see setCameraMode), otherwise logs a warning.
+
Parameters
+ + + +
phiAzimuthal angle (in degrees).
thetaPolar angle (in degrees).
+
+
+ +
+
+ +

◆ setOrbitalTargetLocation()

+ +
+
+ + + + + + + + +
void ne::CameraNode::setOrbitalTargetLocation (const glm::vec3 & targetPointLocation)
+
+

Sets a location in world space that orbital camera should look at (when not set, orbital camera looks at the node's local space origin, see clearOrbitalTargetLocation).

+
Remarks
Only works if the current camera mode is orbital (see setCameraMode), otherwise logs a warning.
+
Parameters
+ + +
targetPointLocationLocation in world space to look at.
+
+
+ +
+
+ +

◆ updateCameraProperties()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::CameraNode::updateCameraProperties ()
+
+private
+
+

Applies current location/rotation to camera properties based on the current camera mode.

+ +
+
+

Member Data Documentation

+ +

◆ cameraProperties

+ +
+
+ + + + + +
+ + + + +
CameraProperties ne::CameraNode::cameraProperties
+
+private
+
+

Camera properties.

+ +
+
+ +

◆ localSpaceOriginInWorldSpace

+ +
+
+ + + + + +
+ + + + +
glm::vec3 ne::CameraNode::localSpaceOriginInWorldSpace = glm::vec3(0.0F, 0.0F, 0.0F)
+
+private
+
+

(0.0F, 0.0F, 0.0F) in local space converted to world space.

+ +
+
+ +

◆ mtxIsActive

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, bool> ne::CameraNode::mtxIsActive
+
+private
+
+

Whether this camera is used by the camera manager or not.

+
Warning
Only camera manager can change this value.
+ +
+
+ +

◆ orbitalCameraTargetInWorldSpace

+ +
+
+ + + + + +
+ + + + +
std::optional<glm::vec3> ne::CameraNode::orbitalCameraTargetInWorldSpace = {}
+
+private
+
+

If not empty used instead of localSpaceOriginInWorldSpace.

+ +
+
+ +

◆ rotationDelta

+ +
+
+ + + + + +
+ + + + +
constexpr float ne::CameraNode::rotationDelta = 0.0001F
+
+inlinestaticconstexprprivate
+
+

Delta to compare rotations.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/game/nodes/CameraNode.h
  • +
  • src/engine_lib/private/game/nodes/CameraNode.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1CameraNode.js b/classne_1_1CameraNode.js new file mode 100644 index 000000000..4cfcd13fd --- /dev/null +++ b/classne_1_1CameraNode.js @@ -0,0 +1,20 @@ +var classne_1_1CameraNode = +[ + [ "CameraNode", "classne_1_1CameraNode.html#a66cf208b54020efbc30846cf6c2eb194", null ], + [ "clearOrbitalTargetLocation", "classne_1_1CameraNode.html#afd09e5fb6b075bcd8eeb89d738264e2e", null ], + [ "getCameraProperties", "classne_1_1CameraNode.html#a67679c00bce3038f336dc4bef7a96315", null ], + [ "getOrbitalTargetLocation", "classne_1_1CameraNode.html#a75181ed55e2f12b7c910816c3be830e1", null ], + [ "makeActive", "classne_1_1CameraNode.html#ae921cadd3b2cec25e034d01e9e9b35e3", null ], + [ "onDespawning", "classne_1_1CameraNode.html#a163b51874818ad22d1e4bcc83774a78f", null ], + [ "onWorldLocationRotationScaleChanged", "classne_1_1CameraNode.html#a9410fa3451b9d607ebdf851819cd03d2", null ], + [ "setCameraMode", "classne_1_1CameraNode.html#a95c8976cf155363baf45bc5775a273b7", null ], + [ "setOrbitalDistanceToTarget", "classne_1_1CameraNode.html#adc8a5c0555ee5de59db5568193884768", null ], + [ "setOrbitalRotation", "classne_1_1CameraNode.html#a0d076da378e660ce49629bdebde38340", null ], + [ "setOrbitalTargetLocation", "classne_1_1CameraNode.html#a55ef742db7eefc40844697b5c6062276", null ], + [ "updateCameraProperties", "classne_1_1CameraNode.html#ad018c29c128fa28032e2ad3c8e96ec5c", null ], + [ "cameraProperties", "classne_1_1CameraNode.html#afadfdfd64b38e96bf3c13e2150c064fe", null ], + [ "localSpaceOriginInWorldSpace", "classne_1_1CameraNode.html#a5c06303ff1bbddcf29e14c44f3f359e7", null ], + [ "mtxIsActive", "classne_1_1CameraNode.html#a797519c82747e6c3255ca833e5d55bcf", null ], + [ "orbitalCameraTargetInWorldSpace", "classne_1_1CameraNode.html#afb9d8361569162d17cf76d53b69b300c", null ], + [ "rotationDelta", "classne_1_1CameraNode.html#af2ec1e3b89fbc504f63183fc65356bac", null ] +]; \ No newline at end of file diff --git a/classne_1_1CameraNode.png b/classne_1_1CameraNode.png new file mode 100644 index 0000000000000000000000000000000000000000..b5d4355ed2082a865a3733bb94341ffae93791fe GIT binary patch literal 1604 zcmcIkX;70_6#aq)QIS%tfT%1csf5vw9gGTE1ha`FiwLp=ixI(%5Dc4u3hFQ*fryDh z2rfhoARr(nVlY}3AuJNZPM{h>AP`b10Z}1MJ5Hz0wEfrj)m^4RmAsfvO;~?mpP#2%t=7QtDb-oZ%lq4G5z!{}wsAh6 zuetZ7zImX@t%&v6?+a+oe=ZlT0ucaccVaw#^oxfm3g1#otqpVvDAsQmi$0jH)n0xr zo?3@H<(19rB5oLf#4H)Q>!$5SBUqNv^gN#`4i1Y5JYAQbGqBlgeb~Y<=!u?$bt9J6U<5L;>MiKmqfo-Crr`w@({PBo+qnNZlb%>XzwE7}_WB$P&7QB1v?s z<0RHUqph@h5p-4Gem>~m$Cc<;J21Mbd zj<;Qd&2o#)Y(5Gf5}!qQPWlKH1!$r68SV|~VeQhTBGk~HZc*}Gn_~+9Gb!)q#5<_5 zjS6H*h;{yV1#4Aem2fI|ah@=OLUmN#9Z0VE{He)}T5R4B0&95(QjZdiF;#kFhT&P^ zz^}+Pd<(r%doRf=&0eYpb)aS{q36y1rPr^=uyhNTWv8#@O})(jQhDJb?!i*69p>o^ zmtfk3)M0pDZf}L*;NFotzm3ST)L}`vAUMUfwnDlM#Eo;P#V%YiJyGOJc6LNkXQ`>N z3FiiGoMn?>6L9q~-M4Je7?W6}Z1b*mPl@N9Od1XN;rSy9Y$EmN|Gg2e!f=cNb85?l za_}_?a|ld3v6sL;-s*he3U0H)fqo#$ztAe8o!4B{+?~&vCG0?SI z^(!-BA<=Q!WV-RBG{6TRVxyYtOU28RYZ&wf-o_CzO2hLceii2Fl{z%FQC&oXWoiJy zmTnThVcGf4n}E&{3wop}>X-#RkYI8%H~5@6WH$OAMEf<78a>Y}4{_H$VxWtZ?fhn% zO6o9*Ye7Z`yy(qQok&@4S>&miOq7zlg{yR}+@9JD&x<+;EvbfYmwo@-eij-%6oj}W zFJ+M2NQx@`>a{yTGMgYel^)(F&yaM@#9zNj>WE;@vdTph#8+Im{I(oYa$g05W1sPSL&pDxUA>Q+; zS7}em=dmQ^iBDECMykmlZ_TV5WmGqY#B}uA-@xfwWSFAJa{Qp@j}THO^dK;`GcN5qXi> zCjU&sS+#U0O-GPUMz+R~1o7!5A~=V&kXjAuGsZ;}ePOdGAiCM_`4rf}Y%^TpXl@sbYCMa97OnNj^M^JV`kX q#e5`uF({+BT$slC?3%Xes3DtV>kQ=93uiTc4`4j^dz8C}UHl#Nej`Hw literal 0 HcmV?d00001 diff --git a/classne_1_1CameraProperties-members.html b/classne_1_1CameraProperties-members.html new file mode 100644 index 000000000..63cf13a2a --- /dev/null +++ b/classne_1_1CameraProperties-members.html @@ -0,0 +1,131 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::CameraProperties Member List
+
+ +
+ + + + diff --git a/classne_1_1CameraProperties.html b/classne_1_1CameraProperties.html new file mode 100644 index 000000000..1c3ed1902 --- /dev/null +++ b/classne_1_1CameraProperties.html @@ -0,0 +1,619 @@ + + + + + + + +Nameless Engine: ne::CameraProperties Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <CameraProperties.h>

+ + + + +

+Classes

struct  Data
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void setFov (unsigned int iVerticalFov)
 
void setNearClipPlaneDistance (float nearClipPlaneDistance)
 
void setFarClipPlaneDistance (float farClipPlaneDistance)
 
unsigned int getVerticalFov ()
 
float getNearClipPlaneDistance ()
 
float getFarClipPlaneDistance ()
 
CameraMode getCurrentCameraMode ()
 
Data::OrbitalModeData getOrbitalModeProperties ()
 
glm::vec3 getWorldLocation ()
 
glm::mat4x4 getViewMatrix ()
 
glm::mat4x4 getProjectionMatrix ()
 
FrustumgetCameraFrustum ()
 
+ + + + + + + + + +

+Private Member Functions

void setRenderTargetSize (unsigned int iRenderTargetWidth, unsigned int iRenderTargetHeight)
 
void makeSureViewMatrixIsUpToDate ()
 
void makeSureProjectionMatrixAndClipPlanesAreUpToDate ()
 
void recalculateFrustum ()
 
+ + + +

+Private Attributes

std::pair< std::recursive_mutex, DatamtxData {}
 
+ + + +

+Static Private Attributes

static constexpr float floatDelta = 0.00001F
 
+ + + + + +

+Friends

+class CameraNode
 
+class Renderer
 
+

Detailed Description

+

Defines camera settings, base axis, location, modes, etc.

+

Member Function Documentation

+ +

◆ getCameraFrustum()

+ +
+
+ + + + + +
+ + + + + + + +
Frustum * ne::CameraProperties::getCameraFrustum ()
+
+inline
+
+

Returns camera's frustum for fast read-only access.

+
Warning
Returned frustum may be outdated (does not include changes made during the last frame), generally you would use this function when you know that frustum is updated (contains latest changes), if not sure call getViewMatrix or getProjectionMatrix that will make sure frustum is updated but since you would call a different function this might have a small performance penalty.
+
Remarks
Do not delete (free) returned pointer.
+
Returns
Camera's frustum.
+ +
+
+ +

◆ getCurrentCameraMode()

+ +
+
+ + + + + + + +
CameraMode ne::CameraProperties::getCurrentCameraMode ()
+
+

Returns the current camera mode.

+
Returns
Camera mode.
+ +
+
+ +

◆ getFarClipPlaneDistance()

+ +
+
+ + + + + + + +
float ne::CameraProperties::getFarClipPlaneDistance ()
+
+

Returns distance from camera (view) space origin to camera's far clip plane.

+
Returns
Distance to far clip plane.
+ +
+
+ +

◆ getNearClipPlaneDistance()

+ +
+
+ + + + + + + +
float ne::CameraProperties::getNearClipPlaneDistance ()
+
+

Returns distance from camera (view) space origin to camera's near clip plane.

+
Returns
Distance to near clip plane.
+ +
+
+ +

◆ getOrbitalModeProperties()

+ +
+
+ + + + + + + +
CameraProperties::Data::OrbitalModeData ne::CameraProperties::getOrbitalModeProperties ()
+
+

Returns orbital camera properties.

+
Returns
Orbital camera properties.
+ +
+
+ +

◆ getProjectionMatrix()

+ +
+
+ + + + + + + +
glm::mat4x4 ne::CameraProperties::getProjectionMatrix ()
+
+

Returns a matrix that transforms positions from view (camera) space to 2D projection window (homogeneous clip space).

+
Returns
Projection matrix.
+ +
+
+ +

◆ getVerticalFov()

+ +
+
+ + + + + + + +
unsigned int ne::CameraProperties::getVerticalFov ()
+
+

Returns vertical field of view of the camera.

+
Returns
Vertical field of view.
+ +
+
+ +

◆ getViewMatrix()

+ +
+
+ + + + + + + +
glm::mat4x4 ne::CameraProperties::getViewMatrix ()
+
+

Returns a matrix that transforms positions to view (camera) space.

+
Returns
View matrix.
+ +
+
+ +

◆ getWorldLocation()

+ +
+
+ + + + + + + +
glm::vec3 ne::CameraProperties::getWorldLocation ()
+
+

Returns camera's world location.

+
Returns
Location in world space.
+ +
+
+ +

◆ makeSureProjectionMatrixAndClipPlanesAreUpToDate()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::CameraProperties::makeSureProjectionMatrixAndClipPlanesAreUpToDate ()
+
+private
+
+

Recalculates camera's projection matrix and clip plane heights if they need to be updated.

+
Remarks
This function can ignore the call if there's no need to recalculate this data.
+ +
+
+ +

◆ makeSureViewMatrixIsUpToDate()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::CameraProperties::makeSureViewMatrixIsUpToDate ()
+
+private
+
+

Recalculates camera's view matrix if it needs to be updated.

+
Remarks
This function can ignore the call if there's no need to recalculate view matrix.
+ +
+
+ +

◆ recalculateFrustum()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::CameraProperties::recalculateFrustum ()
+
+private
+
+

Recalculates camera's frustum.

+
Remarks
Called after view or projection data is updated.
+ +
+
+ +

◆ setFarClipPlaneDistance()

+ +
+
+ + + + + + + + +
void ne::CameraProperties::setFarClipPlaneDistance (float farClipPlaneDistance)
+
+

Sets distance from camera (view) space origin to camera's far clip plane.

+
Parameters
+ + +
farClipPlaneDistanceFar Z distance. Should be a positive value.
+
+
+ +
+
+ +

◆ setFov()

+ +
+
+ + + + + + + + +
void ne::CameraProperties::setFov (unsigned int iVerticalFov)
+
+

Sets camera's vertical field of view.

+
Parameters
+ + +
iVerticalFovVertical field of view.
+
+
+ +
+
+ +

◆ setNearClipPlaneDistance()

+ +
+
+ + + + + + + + +
void ne::CameraProperties::setNearClipPlaneDistance (float nearClipPlaneDistance)
+
+

Sets distance from camera (view) space origin to camera's near clip plane.

+
Parameters
+ + +
nearClipPlaneDistanceNear Z distance. Should be a positive value.
+
+
+ +
+
+ +

◆ setRenderTargetSize()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::CameraProperties::setRenderTargetSize (unsigned int iRenderTargetWidth,
unsigned int iRenderTargetHeight 
)
+
+private
+
+

Sets size of the render target for projection matrix calculations.

+
Remarks
Does nothing if the specified size is the same as the previous one.
+
+Called by the renderer to set render target size.
+
Parameters
+ + + +
iRenderTargetWidthWidth of the buffer we are rendering the image to.
iRenderTargetHeightHeight of the buffer we are rendering the image to.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ floatDelta

+ +
+
+ + + + + +
+ + + + +
constexpr float ne::CameraProperties::floatDelta = 0.00001F
+
+inlinestaticconstexprprivate
+
+

Delta to compare input to zero.

+ +
+
+ +

◆ mtxData

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, Data> ne::CameraProperties::mtxData {}
+
+private
+
+

Internal properties.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/game/camera/CameraProperties.h
  • +
  • src/engine_lib/private/game/camera/CameraProperties.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1CameraProperties.js b/classne_1_1CameraProperties.js new file mode 100644 index 000000000..aecfff1a9 --- /dev/null +++ b/classne_1_1CameraProperties.js @@ -0,0 +1,22 @@ +var classne_1_1CameraProperties = +[ + [ "Data", "structne_1_1CameraProperties_1_1Data.html", "structne_1_1CameraProperties_1_1Data" ], + [ "getCameraFrustum", "classne_1_1CameraProperties.html#a99286d96919503b9ce07c32fd7e9f2cf", null ], + [ "getCurrentCameraMode", "classne_1_1CameraProperties.html#ae671a0422c76e0e69a2dae283c2508a6", null ], + [ "getFarClipPlaneDistance", "classne_1_1CameraProperties.html#a45d9ee38bba5b4779b0818ffb40ae18d", null ], + [ "getNearClipPlaneDistance", "classne_1_1CameraProperties.html#af8edd62c67ffd4750c8d687c7e537751", null ], + [ "getOrbitalModeProperties", "classne_1_1CameraProperties.html#a056330e6889e12a897abf0cc5d907b7f", null ], + [ "getProjectionMatrix", "classne_1_1CameraProperties.html#aef602d4e9cc65aa0782eb4d5b90a6056", null ], + [ "getVerticalFov", "classne_1_1CameraProperties.html#af43b56792db43a694f9e5f4a5514f091", null ], + [ "getViewMatrix", "classne_1_1CameraProperties.html#a0ca9e5d4a3ebfb520b8e39cd8497ec86", null ], + [ "getWorldLocation", "classne_1_1CameraProperties.html#a9a2919ade3eb2d1247533bb99ca4e3d8", null ], + [ "makeSureProjectionMatrixAndClipPlanesAreUpToDate", "classne_1_1CameraProperties.html#a7b1491114da9fc4e459fafa2328ef4ce", null ], + [ "makeSureViewMatrixIsUpToDate", "classne_1_1CameraProperties.html#a5ef5cedc69836074ceecedc91682084f", null ], + [ "recalculateFrustum", "classne_1_1CameraProperties.html#aed83a8c2ef397ea0aae6fd15ad626cdc", null ], + [ "setFarClipPlaneDistance", "classne_1_1CameraProperties.html#ac53a9666cf237128fc51aa723114770e", null ], + [ "setFov", "classne_1_1CameraProperties.html#a0f4b92ad961e55ec6b561f95aac21fd1", null ], + [ "setNearClipPlaneDistance", "classne_1_1CameraProperties.html#afe001448fa25b4a8ed57966220e2cba5", null ], + [ "setRenderTargetSize", "classne_1_1CameraProperties.html#a8949fc9efca6bc167ba6bd32e3f9e646", null ], + [ "floatDelta", "classne_1_1CameraProperties.html#aa1ccfc9d71287bd1ef4b5dd1a41f44cb", null ], + [ "mtxData", "classne_1_1CameraProperties.html#a756d10f45555f0aafdc9d695009b302d", null ] +]; \ No newline at end of file diff --git a/classne_1_1ColorPipelineConfiguration-members.html b/classne_1_1ColorPipelineConfiguration-members.html new file mode 100644 index 000000000..65d989fc4 --- /dev/null +++ b/classne_1_1ColorPipelineConfiguration-members.html @@ -0,0 +1,130 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ColorPipelineConfiguration Member List
+
+
+ +

This is the complete list of members for ne::ColorPipelineConfiguration, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
additionalPixelShaderMacrosne::ColorPipelineConfigurationprotected
additionalVertexShaderMacrosne::PipelineConfigurationprotected
bUsePixelBlendingne::ColorPipelineConfigurationprotected
ColorPipelineConfiguration()=delete (defined in ne::ColorPipelineConfiguration)ne::ColorPipelineConfiguration
ColorPipelineConfiguration(const std::string &sVertexShaderName, const std::set< ShaderMacro > &additionalVertexShaderMacros, const std::string &sPixelShaderName, std::set< ShaderMacro > additionalPixelShaderMacros, bool bUsePixelBlending)ne::ColorPipelineConfiguration
getAdditionalPixelShaderMacros() const overridene::ColorPipelineConfigurationvirtual
getAdditionalVertexShaderMacros() constne::PipelineConfigurationinline
getComputeShaderName() constne::PipelineConfigurationinlinevirtual
getGraphicsType() const overridene::ColorPipelineConfigurationvirtual
getPixelShaderName() const overridene::ColorPipelineConfigurationvirtual
getShadowMappingUsage() constne::PipelineConfigurationinlinevirtual
getVertexShaderName() constne::PipelineConfigurationinline
isDepthBiasEnabled() constne::PipelineConfigurationinlinevirtual
isPixelBlendingEnabled() const overridene::ColorPipelineConfigurationvirtual
PipelineConfiguration()=delete (defined in ne::PipelineConfiguration)ne::PipelineConfiguration
PipelineConfiguration(const std::string &sVertexShaderName, const std::set< ShaderMacro > &additionalVertexShaderMacros)ne::PipelineConfigurationprotected
sPixelShaderNamene::ColorPipelineConfigurationprotected
sVertexShaderNamene::PipelineConfigurationprotected
~ColorPipelineConfiguration() override=default (defined in ne::ColorPipelineConfiguration)ne::ColorPipelineConfigurationvirtual
~PipelineConfiguration()=default (defined in ne::PipelineConfiguration)ne::PipelineConfigurationvirtual
+
+ + + + diff --git a/classne_1_1ColorPipelineConfiguration.html b/classne_1_1ColorPipelineConfiguration.html new file mode 100644 index 000000000..47f6e9b94 --- /dev/null +++ b/classne_1_1ColorPipelineConfiguration.html @@ -0,0 +1,427 @@ + + + + + + + +Nameless Engine: ne::ColorPipelineConfiguration Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::ColorPipelineConfiguration Class Reference
+
+
+ +

#include <PipelineConfiguration.h>

+
+Inheritance diagram for ne::ColorPipelineConfiguration:
+
+
+ + +ne::PipelineConfiguration + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ColorPipelineConfiguration (const std::string &sVertexShaderName, const std::set< ShaderMacro > &additionalVertexShaderMacros, const std::string &sPixelShaderName, std::set< ShaderMacro > additionalPixelShaderMacros, bool bUsePixelBlending)
 
virtual std::optional< GraphicsPipelineType > getGraphicsType () const override
 
virtual std::set< ShaderMacro > getAdditionalPixelShaderMacros () const override
 
virtual std::string_view getPixelShaderName () const override
 
virtual bool isPixelBlendingEnabled () const override
 
- Public Member Functions inherited from ne::PipelineConfiguration
std::set< ShaderMacro > getAdditionalVertexShaderMacros () const
 
std::string_view getVertexShaderName () const
 
virtual std::optional< GraphicsPipelineType > getGraphicsType () const =0
 
virtual std::set< ShaderMacro > getAdditionalPixelShaderMacros () const
 
virtual std::string_view getPixelShaderName () const
 
virtual std::string_view getComputeShaderName () const
 
virtual bool isPixelBlendingEnabled () const
 
virtual bool isDepthBiasEnabled () const
 
virtual std::optional< PipelineShadowMappingUsage > getShadowMappingUsage () const
 
+ + + + + + + + + + + + +

+Protected Attributes

std::set< ShaderMacro > additionalPixelShaderMacros
 
const std::string sPixelShaderName
 
const bool bUsePixelBlending
 
- Protected Attributes inherited from ne::PipelineConfiguration
std::set< ShaderMacro > additionalVertexShaderMacros
 
const std::string sVertexShaderName
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from ne::PipelineConfiguration
 PipelineConfiguration (const std::string &sVertexShaderName, const std::set< ShaderMacro > &additionalVertexShaderMacros)
 
+

Detailed Description

+

Pipeline that uses pixel/fragment shaders to draw color.

+

Constructor & Destructor Documentation

+ +

◆ ColorPipelineConfiguration()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ne::ColorPipelineConfiguration::ColorPipelineConfiguration (const std::string & sVertexShaderName,
const std::set< ShaderMacro > & additionalVertexShaderMacros,
const std::string & sPixelShaderName,
std::set< ShaderMacro > additionalPixelShaderMacros,
bool bUsePixelBlending 
)
+
+

Initializes options.

+
Parameters
+ + + + + + +
sVertexShaderNameName of the compiled vertex shader to use.
additionalVertexShaderMacrosAdditional macros to enable for vertex shader configuration.
sPixelShaderNameName of the compiled pixel shader to use.
additionalPixelShaderMacrosAdditional macros to enable for pixel shader configuration.
bUsePixelBlendingtrue to enable transparency, false to disable.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getAdditionalPixelShaderMacros()

+ +
+
+ + + + + +
+ + + + + + + +
std::set< ShaderMacro > ne::ColorPipelineConfiguration::getAdditionalPixelShaderMacros () const
+
+overridevirtual
+
+

Returns additional macros to enable for pixel/fragment shader configuration (if pixel/fragment shader is used).

+
Returns
Macros.
+ +

Reimplemented from ne::PipelineConfiguration.

+ +
+
+ +

◆ getGraphicsType()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< GraphicsPipelineType > ne::ColorPipelineConfiguration::getGraphicsType () const
+
+overridevirtual
+
+

Returns type of the pipeline that the object describes.

+
Returns
Pipeline type.
+ +

Implements ne::PipelineConfiguration.

+ +
+
+ +

◆ getPixelShaderName()

+ +
+
+ + + + + +
+ + + + + + + +
std::string_view ne::ColorPipelineConfiguration::getPixelShaderName () const
+
+overridevirtual
+
+

Returns name of the pixel/fragment shader that should be used.

+
Returns
Empty string if pixel/fragment shader is not used, otherwise name of the compiled shader.
+ +

Reimplemented from ne::PipelineConfiguration.

+ +
+
+ +

◆ isPixelBlendingEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
bool ne::ColorPipelineConfiguration::isPixelBlendingEnabled () const
+
+overridevirtual
+
+

Tells whether pixel blending should be enabled or not.

+
Returns
true to enable, false to disable.
+ +

Reimplemented from ne::PipelineConfiguration.

+ +
+
+

Member Data Documentation

+ +

◆ additionalPixelShaderMacros

+ +
+
+ + + + + +
+ + + + +
std::set<ShaderMacro> ne::ColorPipelineConfiguration::additionalPixelShaderMacros
+
+protected
+
+

Additional macros to enable for pixel shader configuration.

+ +
+
+ +

◆ bUsePixelBlending

+ +
+
+ + + + + +
+ + + + +
const bool ne::ColorPipelineConfiguration::bUsePixelBlending
+
+protected
+
+

true to enable transparency, false to disable.

+ +
+
+ +

◆ sPixelShaderName

+ +
+
+ + + + + +
+ + + + +
const std::string ne::ColorPipelineConfiguration::sPixelShaderName
+
+protected
+
+

Name of the compiled pixel shader to use.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/general/pipeline/PipelineConfiguration.h
  • +
  • src/engine_lib/private/render/general/pipeline/PipelineConfiguration.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ColorPipelineConfiguration.js b/classne_1_1ColorPipelineConfiguration.js new file mode 100644 index 000000000..f596847d2 --- /dev/null +++ b/classne_1_1ColorPipelineConfiguration.js @@ -0,0 +1,11 @@ +var classne_1_1ColorPipelineConfiguration = +[ + [ "ColorPipelineConfiguration", "classne_1_1ColorPipelineConfiguration.html#ad5312e34d5a37663d9e04e8c3a0fc7b9", null ], + [ "getAdditionalPixelShaderMacros", "classne_1_1ColorPipelineConfiguration.html#a209c072abbe6ef7fab06039d74ffc572", null ], + [ "getGraphicsType", "classne_1_1ColorPipelineConfiguration.html#ae90627a023da52b08a5b5d3cbafc18b0", null ], + [ "getPixelShaderName", "classne_1_1ColorPipelineConfiguration.html#a0d6eb5eb6800ca3738d902630f6ee7fd", null ], + [ "isPixelBlendingEnabled", "classne_1_1ColorPipelineConfiguration.html#a89c4e0055032ef40592407231dd539c6", null ], + [ "additionalPixelShaderMacros", "classne_1_1ColorPipelineConfiguration.html#a7382a79f0c389a8db3c075df76ac41da", null ], + [ "bUsePixelBlending", "classne_1_1ColorPipelineConfiguration.html#a82a2ba6f3c36f1be236e84fdc26f5bba", null ], + [ "sPixelShaderName", "classne_1_1ColorPipelineConfiguration.html#a1bdcc647e6d7ba77af2db317d3e0645d", null ] +]; \ No newline at end of file diff --git a/classne_1_1ColorPipelineConfiguration.png b/classne_1_1ColorPipelineConfiguration.png new file mode 100644 index 0000000000000000000000000000000000000000..076ef3dc45fa075fd03169c6f329791f694626b2 GIT binary patch literal 761 zcmeAS@N?(olHy`uVBq!ia0vp^JAgQVgBeK9{pBwOq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB)gAJU%_w`~`*3VEiO#5_{@t64RZMoW9(w^(o+0{?ZEGn2ZXQlOnhd;l+ z@f6GDH`%B>SH=6Sp|aH{rISJ151g-8DK(y-lFq;I-lBaB_g@#;M26}vJhH6adSlGb z%LZ}BZ%6!?QgLTVOR|l>(n+`24=m1XSI>E8@92Aa-84O;;B}x@yNdQ#?RC7fOz)M1 zohdTfZM^fb>!hu2531Uye#_di>e5cRca70;^P8i8FVkGT)h(|%zQ%Uan$ql*8XwMy zWvsfP?kBdNIZjr3)q!g(7cGBMY%|~JY1x(7Q{DTH7Qb(r{G|1sZLa60<^Mnb5c=V& z>G_GbcJ-rQ?Y%1bubm4f{aGh7MOPWgl{HZ)0U;*uRXOVacpYV<>-=PYq_K2gb$eDJuv@v_}$Kqtis~$ z4__W8?TFBoUHZXi^;?VQFYBpHcRIxW|zro@0}&tR_(Z`=v0?@Lh4c8 z4@JG^b454HrIe)?9Y4)-JvxIW?%jNw-LRk)fAH*Bh4db+5Xs%_bsxXBdAqKE#8{Eu zZW8)NSiPJ7V0W?N{JqCk28G_S3hk1d7QRuobo!@7`Hfc_x;tvt%{SQj{GDQINfK@boL*>M9Sdl>gTe~DWM4f DujyP1 literal 0 HcmV?d00001 diff --git a/classne_1_1CompressonatorSingleton-members.html b/classne_1_1CompressonatorSingleton-members.html new file mode 100644 index 000000000..ad416d18d --- /dev/null +++ b/classne_1_1CompressonatorSingleton-members.html @@ -0,0 +1,115 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::CompressonatorSingleton Member List
+
+
+ +

This is the complete list of members for ne::CompressonatorSingleton, including all inherited members.

+ + + + + + +
CompressonatorSingleton(const CompressonatorSingleton &)=delete (defined in ne::CompressonatorSingleton)ne::CompressonatorSingleton
CompressonatorSingleton()ne::CompressonatorSingletoninlineprivate
initialize()ne::CompressonatorSingletoninlinestatic
operator=(const CompressonatorSingleton &)=delete (defined in ne::CompressonatorSingleton)ne::CompressonatorSingleton
~CompressonatorSingleton()=default (defined in ne::CompressonatorSingleton)ne::CompressonatorSingleton
+
+ + + + diff --git a/classne_1_1CompressonatorSingleton.html b/classne_1_1CompressonatorSingleton.html new file mode 100644 index 000000000..f0d6d1c69 --- /dev/null +++ b/classne_1_1CompressonatorSingleton.html @@ -0,0 +1,192 @@ + + + + + + + +Nameless Engine: ne::CompressonatorSingleton Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::CompressonatorSingleton Class Reference
+
+
+ + + + + + +

+Public Member Functions

CompressonatorSingleton (const CompressonatorSingleton &)=delete
 
+CompressonatorSingletonoperator= (const CompressonatorSingleton &)=delete
 
+ + + +

+Static Public Member Functions

static void initialize ()
 
+ + + +

+Private Member Functions

 CompressonatorSingleton ()
 
+

Detailed Description

+

Singleton helper class to globally initialize Compressonator.

+

Constructor & Destructor Documentation

+ +

◆ CompressonatorSingleton()

+ +
+
+ + + + + +
+ + + + + + + +
ne::CompressonatorSingleton::CompressonatorSingleton ()
+
+inlineprivate
+
+

Initializes Compressonator.

+ +
+
+

Member Function Documentation

+ +

◆ initialize()

+ +
+
+ + + + + +
+ + + + + + + +
static void ne::CompressonatorSingleton::initialize ()
+
+inlinestatic
+
+

Creates a static Profiler instance.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • src/engine_lib/private/io/TextureImporter.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1CompressonatorSingleton.js b/classne_1_1CompressonatorSingleton.js new file mode 100644 index 000000000..17087a96a --- /dev/null +++ b/classne_1_1CompressonatorSingleton.js @@ -0,0 +1,5 @@ +var classne_1_1CompressonatorSingleton = +[ + [ "CompressonatorSingleton", "classne_1_1CompressonatorSingleton.html#ae69a53d901f8a4403f9e39791015023c", null ], + [ "initialize", "classne_1_1CompressonatorSingleton.html#a6be025a845b117943553144f0b7594bf", null ] +]; \ No newline at end of file diff --git a/classne_1_1ComputePipelineConfiguration-members.html b/classne_1_1ComputePipelineConfiguration-members.html new file mode 100644 index 000000000..dd5a5cd81 --- /dev/null +++ b/classne_1_1ComputePipelineConfiguration-members.html @@ -0,0 +1,128 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ComputePipelineConfiguration Member List
+
+
+ +

This is the complete list of members for ne::ComputePipelineConfiguration, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
additionalVertexShaderMacrosne::PipelineConfigurationprotected
ComputePipelineConfiguration()=delete (defined in ne::ComputePipelineConfiguration)ne::ComputePipelineConfiguration
ComputePipelineConfiguration(const std::string &sComputeShaderName)ne::ComputePipelineConfiguration
getAdditionalPixelShaderMacros() constne::PipelineConfigurationinlinevirtual
getAdditionalVertexShaderMacros() constne::PipelineConfigurationinline
getComputeShaderName() const overridene::ComputePipelineConfigurationvirtual
getGraphicsType() const overridene::ComputePipelineConfigurationvirtual
getPixelShaderName() constne::PipelineConfigurationinlinevirtual
getShadowMappingUsage() constne::PipelineConfigurationinlinevirtual
getVertexShaderName() constne::PipelineConfigurationinline
isDepthBiasEnabled() constne::PipelineConfigurationinlinevirtual
isPixelBlendingEnabled() constne::PipelineConfigurationinlinevirtual
PipelineConfiguration()=delete (defined in ne::PipelineConfiguration)ne::PipelineConfiguration
PipelineConfiguration(const std::string &sVertexShaderName, const std::set< ShaderMacro > &additionalVertexShaderMacros)ne::PipelineConfigurationprotected
sComputeShaderNamene::ComputePipelineConfigurationprivate
sVertexShaderNamene::PipelineConfigurationprotected
~ComputePipelineConfiguration() override=default (defined in ne::ComputePipelineConfiguration)ne::ComputePipelineConfigurationvirtual
~PipelineConfiguration()=default (defined in ne::PipelineConfiguration)ne::PipelineConfigurationvirtual
+
+ + + + diff --git a/classne_1_1ComputePipelineConfiguration.html b/classne_1_1ComputePipelineConfiguration.html new file mode 100644 index 000000000..afef541e0 --- /dev/null +++ b/classne_1_1ComputePipelineConfiguration.html @@ -0,0 +1,283 @@ + + + + + + + +Nameless Engine: ne::ComputePipelineConfiguration Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::ComputePipelineConfiguration Class Reference
+
+
+ +

#include <PipelineConfiguration.h>

+
+Inheritance diagram for ne::ComputePipelineConfiguration:
+
+
+ + +ne::PipelineConfiguration + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ComputePipelineConfiguration (const std::string &sComputeShaderName)
 
virtual std::optional< GraphicsPipelineType > getGraphicsType () const override
 
virtual std::string_view getComputeShaderName () const override
 
- Public Member Functions inherited from ne::PipelineConfiguration
std::set< ShaderMacro > getAdditionalVertexShaderMacros () const
 
std::string_view getVertexShaderName () const
 
virtual std::optional< GraphicsPipelineType > getGraphicsType () const =0
 
virtual std::set< ShaderMacro > getAdditionalPixelShaderMacros () const
 
virtual std::string_view getPixelShaderName () const
 
virtual std::string_view getComputeShaderName () const
 
virtual bool isPixelBlendingEnabled () const
 
virtual bool isDepthBiasEnabled () const
 
virtual std::optional< PipelineShadowMappingUsage > getShadowMappingUsage () const
 
+ + + +

+Private Attributes

const std::string sComputeShaderName
 
+ + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from ne::PipelineConfiguration
 PipelineConfiguration (const std::string &sVertexShaderName, const std::set< ShaderMacro > &additionalVertexShaderMacros)
 
- Protected Attributes inherited from ne::PipelineConfiguration
std::set< ShaderMacro > additionalVertexShaderMacros
 
const std::string sVertexShaderName
 
+

Detailed Description

+

Pipeline that uses a compute shader.

+

Constructor & Destructor Documentation

+ +

◆ ComputePipelineConfiguration()

+ +
+
+ + + + + + + + +
ne::ComputePipelineConfiguration::ComputePipelineConfiguration (const std::string & sComputeShaderName)
+
+

Initializes options.

+
Parameters
+ + +
sComputeShaderNameName of the compute shader to use.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getComputeShaderName()

+ +
+
+ + + + + +
+ + + + + + + +
std::string_view ne::ComputePipelineConfiguration::getComputeShaderName () const
+
+overridevirtual
+
+

Returns name of the compute shader that should be used.

+
Returns
Empty string if compute shader is not used, otherwise name of the compiled shader.
+ +

Reimplemented from ne::PipelineConfiguration.

+ +
+
+ +

◆ getGraphicsType()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< GraphicsPipelineType > ne::ComputePipelineConfiguration::getGraphicsType () const
+
+overridevirtual
+
+

Returns type of the pipeline that the object describes.

+
Returns
Pipeline type.
+ +

Implements ne::PipelineConfiguration.

+ +
+
+

Member Data Documentation

+ +

◆ sComputeShaderName

+ +
+
+ + + + + +
+ + + + +
const std::string ne::ComputePipelineConfiguration::sComputeShaderName
+
+private
+
+

Name of a compiled compute shader to use.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/general/pipeline/PipelineConfiguration.h
  • +
  • src/engine_lib/private/render/general/pipeline/PipelineConfiguration.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ComputePipelineConfiguration.js b/classne_1_1ComputePipelineConfiguration.js new file mode 100644 index 000000000..e13065007 --- /dev/null +++ b/classne_1_1ComputePipelineConfiguration.js @@ -0,0 +1,7 @@ +var classne_1_1ComputePipelineConfiguration = +[ + [ "ComputePipelineConfiguration", "classne_1_1ComputePipelineConfiguration.html#a100e198b2f025cbe568233c752f699b5", null ], + [ "getComputeShaderName", "classne_1_1ComputePipelineConfiguration.html#abca07a14787e1efeb10cef56bbc3b3cd", null ], + [ "getGraphicsType", "classne_1_1ComputePipelineConfiguration.html#a792e7db372e8fc28a6cef460f74a443c", null ], + [ "sComputeShaderName", "classne_1_1ComputePipelineConfiguration.html#ae603d0ac5fe2e2617e8ba4f7048079b8", null ] +]; \ No newline at end of file diff --git a/classne_1_1ComputePipelineConfiguration.png b/classne_1_1ComputePipelineConfiguration.png new file mode 100644 index 0000000000000000000000000000000000000000..daad26fe83a27ef53f276238558375cbcce8f174 GIT binary patch literal 790 zcmV+x1L^#UP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0007^ zNklyR%TLOxbmuNq!0Oe#I~h!#jk5B;TNp zLXz3kQAjeI9-)-a-{(ovwK1@Z&FLiRHO7MInHNbm^bBSBN7A-%?l}8&nfExZpp1Jr zuf^js1)EJ`$$ z$sx&>E}V+B+})MkBZ@^%;bTc|c#&jNmr?B9^%I)z%}y?F(LI#N>o-xN8@b#1=*_x~ za&W>V+0?Ta%%C)`(r%~Q4AtUap=?T&IfST!*&*xi%39IgKe6F9OkYo~d6q3xQjzW^zG@=Z{FuXzl@b~ov0PoOy zP`o8bFGA@R3;^<}qX0lQbrb-|rj7yt+0;=0Ae%Z00Ay1~0f21kC;*U6 z9R&cgsiOcuHgyyL$fk}00NK=00N{p7DdinPk)$`MqexOVbrea;rW2G;VUVOltr=4x zagjA8@QK~W*zuY|uQQaX@07)$wDRM*!=4+{NiuCg8Mk7#HXG%(d(N4I-^umkC%T@- zoa6l(v8{VGn!cLZ>eMx1?l&v(D0Mcen6@%aE_H$+c^U8>iTw7--hDH|qC{&mIsQ~^ z#^zMECO+93+d~Mq<^bj3u_QOVLKJ%yZ=lS>{Di(Eirqwsybe&p3wG&Lc6;YLqS!r@ zgA+b|!R))QBGXP@|JGfJcDl__Egqt{inCUJUx!R7TBdYGsae779D%z}a*vu + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ComputeShaderInterface Member List
+
+
+ +

This is the complete list of members for ne::ComputeShaderInterface, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bindResource(GpuResource *pResource, const std::string &sShaderResourceName, ComputeResourceUsage usage, bool bUpdateOnlyCurrentFrameResourceDescriptors=false)=0ne::ComputeShaderInterfacepure virtual
ComputeShaderInterface()=delete (defined in ne::ComputeShaderInterface)ne::ComputeShaderInterface
ComputeShaderInterface(const ComputeShaderInterface &)=delete (defined in ne::ComputeShaderInterface)ne::ComputeShaderInterface
ComputeShaderInterface(Renderer *pRenderer, const std::string &sComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup)ne::ComputeShaderInterfaceprotected
createPartiallyInitializedRenderSpecificInterface(Renderer *pRenderer, const std::string &sComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup)ne::ComputeShaderInterfaceprotectedstatic
createRenderSpecificInterface(Renderer *pRenderer, const std::string &sComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup)ne::ComputeShaderInterfaceprotectedstatic
createUsingGraphicsQueue(Renderer *pRenderer, const std::string &sCompiledComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup=ComputeExecutionGroup::FIRST)ne::ComputeShaderInterfacestatic
executionGroupne::ComputeShaderInterfaceprivate
executionStagene::ComputeShaderInterfaceprivate
getComputeShaderName() constne::ComputeShaderInterface
getExecutionGroup() constne::ComputeShaderInterface
getExecutionStage() constne::ComputeShaderInterface
getPipeline() constne::ComputeShaderInterfaceprotected
getRenderer()ne::ComputeShaderInterfaceprotected
getThreadGroupCountX() constne::ComputeShaderInterfaceinlineprotected
getThreadGroupCountY() constne::ComputeShaderInterfaceinlineprotected
getThreadGroupCountZ() constne::ComputeShaderInterfaceinlineprotected
getUsedPipeline() constne::ComputeShaderInterface
iThreadGroupCountXne::ComputeShaderInterfaceprivate
iThreadGroupCountYne::ComputeShaderInterfaceprivate
iThreadGroupCountZne::ComputeShaderInterfaceprivate
operator=(const ComputeShaderInterface &)=delete (defined in ne::ComputeShaderInterface)ne::ComputeShaderInterface
pPipelinene::ComputeShaderInterfaceprivate
pRendererne::ComputeShaderInterfaceprivate
sComputeShaderNamene::ComputeShaderInterfaceprivate
submitForExecution(unsigned int iThreadGroupCountX, unsigned int iThreadGroupCountY, unsigned int iThreadGroupCountZ)ne::ComputeShaderInterface
~ComputeShaderInterface() (defined in ne::ComputeShaderInterface)ne::ComputeShaderInterfacevirtual
+
+ + + + diff --git a/classne_1_1ComputeShaderInterface.html b/classne_1_1ComputeShaderInterface.html new file mode 100644 index 000000000..025762c2e --- /dev/null +++ b/classne_1_1ComputeShaderInterface.html @@ -0,0 +1,942 @@ + + + + + + + +Nameless Engine: ne::ComputeShaderInterface Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <ComputeShaderInterface.h>

+
+Inheritance diagram for ne::ComputeShaderInterface:
+
+
+ + +ne::GlslComputeShaderInterface +ne::HlslComputeShaderInterface + +
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

ComputeShaderInterface (const ComputeShaderInterface &)=delete
 
+ComputeShaderInterfaceoperator= (const ComputeShaderInterface &)=delete
 
virtual std::optional< ErrorbindResource (GpuResource *pResource, const std::string &sShaderResourceName, ComputeResourceUsage usage, bool bUpdateOnlyCurrentFrameResourceDescriptors=false)=0
 
void submitForExecution (unsigned int iThreadGroupCountX, unsigned int iThreadGroupCountY, unsigned int iThreadGroupCountZ)
 
ComputeExecutionGroup getExecutionGroup () const
 
ComputeExecutionStage getExecutionStage () const
 
std::string getComputeShaderName () const
 
PipelinegetUsedPipeline () const
 
+ + + +

+Static Public Member Functions

static std::variant< std::unique_ptr< ComputeShaderInterface >, ErrorcreateUsingGraphicsQueue (Renderer *pRenderer, const std::string &sCompiledComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup=ComputeExecutionGroup::FIRST)
 
+ + + + + + + + + + + + + +

+Protected Member Functions

 ComputeShaderInterface (Renderer *pRenderer, const std::string &sComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup)
 
RenderergetRenderer ()
 
PipelinegetPipeline () const
 
unsigned int getThreadGroupCountX () const
 
unsigned int getThreadGroupCountY () const
 
unsigned int getThreadGroupCountZ () const
 
+ + + + + +

+Static Protected Member Functions

static std::variant< std::unique_ptr< ComputeShaderInterface >, ErrorcreateRenderSpecificInterface (Renderer *pRenderer, const std::string &sComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup)
 
static std::unique_ptr< ComputeShaderInterfacecreatePartiallyInitializedRenderSpecificInterface (Renderer *pRenderer, const std::string &sComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup)
 
+ + + + + + + + + + + + + + + + + +

+Private Attributes

RendererpRenderer = nullptr
 
PipelineSharedPtr pPipeline
 
unsigned int iThreadGroupCountX = 0
 
unsigned int iThreadGroupCountY = 0
 
unsigned int iThreadGroupCountZ = 0
 
const ComputeExecutionStage executionStage = ComputeExecutionStage::AFTER_DEPTH_PREPASS
 
const ComputeExecutionGroup executionGroup = ComputeExecutionGroup::FIRST
 
const std::string sComputeShaderName
 
+

Detailed Description

+

Interface to configure and run a compute shader.

+

Constructor & Destructor Documentation

+ +

◆ ComputeShaderInterface()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ne::ComputeShaderInterface::ComputeShaderInterface (RendererpRenderer,
const std::string & sComputeShaderName,
ComputeExecutionStage executionStage,
ComputeExecutionGroup executionGroup 
)
+
+protected
+
+

Initializes everything except for pPipeline which is expected to be initialized right after object creation.

+
Parameters
+ + + + + +
pRendererUsed renderer.
sComputeShaderNameName of the compiled compute shader to use.
executionStageDetermines when the shader will be executed.
executionGroupExecution order.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ bindResource()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::optional< Error > ne::ComputeShaderInterface::bindResource (GpuResourcepResource,
const std::string & sShaderResourceName,
ComputeResourceUsage usage,
bool bUpdateOnlyCurrentFrameResourceDescriptors = false 
)
+
+pure virtual
+
+

Binds the specified resource to be available in compute shaders.

+
Warning
This overload is used in cases where you cannot transfer resource ownership to the compute shader interface. In this case you must guarantee that the resource will not be deleted while this compute shader interface exists and while the GPU is processing this compute shader.
+
Parameters
+ + + + + +
pResourceResource to bind to compute shader.
sShaderResourceNameResource name from shader.
usageResource usage.
bUpdateOnlyCurrentFrameResourceDescriptorsSpecify true if you guarantee that you will bind a different GPU resource on the next frame, specify false if you are not sure if you will rebind the resource on the next frame or not. When true is specified only descriptors of the current frame resource will be updated (because descriptors of other frame resources might be in use and it's invalid to update them), when false descriptors of all frame resources will be updated.
+
+
+
Returns
Error if something went wrong.
+ +

Implemented in ne::GlslComputeShaderInterface, and ne::HlslComputeShaderInterface.

+ +
+
+ +

◆ createPartiallyInitializedRenderSpecificInterface()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::unique_ptr< ComputeShaderInterface > ne::ComputeShaderInterface::createPartiallyInitializedRenderSpecificInterface (RendererpRenderer,
const std::string & sComputeShaderName,
ComputeExecutionStage executionStage,
ComputeExecutionGroup executionGroup 
)
+
+staticprotected
+
+

Creates a new interface and initializes everything except for pPipeline which is expected to be initialized right after object creation.

+
Parameters
+ + + + + +
pRendererUsed renderer.
sComputeShaderNameName of the compiled compute shader to use.
executionStageDetermines when the shader will be executed.
executionGroupDetermines execution group of this shader where shaders of the first group will be executed before shaders from the second group and so on.
+
+
+
Returns
Created interface.
+ +
+
+ +

◆ createRenderSpecificInterface()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< ComputeShaderInterface >, Error > ne::ComputeShaderInterface::createRenderSpecificInterface (RendererpRenderer,
const std::string & sComputeShaderName,
ComputeExecutionStage executionStage,
ComputeExecutionGroup executionGroup 
)
+
+staticprotected
+
+

Creates a new fully initialized render-specific compute shader interface.

+
Parameters
+ + + + + +
pRendererUsed renderer.
sComputeShaderNameName of the compiled compute shader to use.
executionStageDetermines when the shader will be executed.
executionGroupDetermines execution group of this shader where shaders of the first group will be executed before shaders from the second group and so on.
+
+
+
Returns
Error if something went wrong, otherwise created interface.
+ +
+
+ +

◆ createUsingGraphicsQueue()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< ComputeShaderInterface >, Error > ne::ComputeShaderInterface::createUsingGraphicsQueue (RendererpRenderer,
const std::string & sCompiledComputeShaderName,
ComputeExecutionStage executionStage,
ComputeExecutionGroup executionGroup = ComputeExecutionGroup::FIRST 
)
+
+static
+
+

Creates a new render-specific interface to a compute shader that will be run in the graphics queue (the same queue that the rendering uses), this compute shader will run synchronously to the rendering operations (on the GPU).

+
Remarks
You might want to run your compute shader in the graphics queue if you need to make sure that some rendering operation(s) are run strictly before or after the compute shader (for example if you need to calculate some data that the rendering will use then use the graphics queue).
+
Parameters
+ + + + + +
pRendererUsed renderer.
sCompiledComputeShaderNameName of the compiled compute shader to later run.
executionStageDetermines when the shader will be executed.
executionGroupDetermines execution group of this shader where shaders of the first group will be executed before shaders from the second group and so on.
+
+
+
Returns
Error if something went wrong, otherwise created interface.
+ +
+
+ +

◆ getComputeShaderName()

+ +
+
+ + + + + + + +
std::string ne::ComputeShaderInterface::getComputeShaderName () const
+
+

Returns name of the compiled compute shader that this interface uses.

+
Returns
Compute shader name.
+ +
+
+ +

◆ getExecutionGroup()

+ +
+
+ + + + + + + +
ComputeExecutionGroup ne::ComputeShaderInterface::getExecutionGroup () const
+
+

Returns execution group of this shader where shaders of the first group will be executed before shaders from the second group and so on.

+
Returns
Execution group.
+ +
+
+ +

◆ getExecutionStage()

+ +
+
+ + + + + + + +
ComputeExecutionStage ne::ComputeShaderInterface::getExecutionStage () const
+
+

Returns execution stage of this shader.

+
Returns
Execution stage.
+ +
+
+ +

◆ getPipeline()

+ +
+
+ + + + + +
+ + + + + + + +
Pipeline * ne::ComputeShaderInterface::getPipeline () const
+
+protected
+
+

Returns used compute pipeline.

+
Returns
Pipeline.
+ +
+
+ +

◆ getRenderer()

+ +
+
+ + + + + +
+ + + + + + + +
Renderer * ne::ComputeShaderInterface::getRenderer ()
+
+protected
+
+

Returns used renderer.

+
Warning
Do not delete (free) returned pointer.
+
Returns
Non-owning pointer to the renderer.
+ +
+
+ +

◆ getThreadGroupCountX()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int ne::ComputeShaderInterface::getThreadGroupCountX () const
+
+inlineprotected
+
+

Returns the number of thread groups dispatched in the X direction.

+
Returns
Group count.
+ +
+
+ +

◆ getThreadGroupCountY()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int ne::ComputeShaderInterface::getThreadGroupCountY () const
+
+inlineprotected
+
+

Returns the number of thread groups dispatched in the Y direction.

+
Returns
Group count.
+ +
+
+ +

◆ getThreadGroupCountZ()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int ne::ComputeShaderInterface::getThreadGroupCountZ () const
+
+inlineprotected
+
+

Returns the number of thread groups dispatched in the Z direction.

+
Returns
Group count.
+ +
+
+ +

◆ getUsedPipeline()

+ +
+
+ + + + + + + +
Pipeline * ne::ComputeShaderInterface::getUsedPipeline () const
+
+

Returns compute pipeline that this shader is referencing.

+
Returns
Compute pipeline (always valid pointer unless this object is being destroyed).
+ +
+
+ +

◆ submitForExecution()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::ComputeShaderInterface::submitForExecution (unsigned int iThreadGroupCountX,
unsigned int iThreadGroupCountY,
unsigned int iThreadGroupCountZ 
)
+
+

Adds this compute shader to the GPU queue to be executed.

+
Remarks
This function queues the shader to be executed only once, if you want to queue this shader again you need to call this function later (if using graphics queue - after a new frame is drawn, otherwise later when you need it). Calling this function again right after calling it the first time will do nothing if graphics queue is used but override the specified thread group counts, if compute queue is used it will queue it again (so it will be executed twice).
+
Parameters
+ + + + +
iThreadGroupCountXThe number of thread groups dispatched in the X direction.
iThreadGroupCountYThe number of thread groups dispatched in the Y direction.
iThreadGroupCountZThe number of thread groups dispatched in the Z direction.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ executionGroup

+ +
+
+ + + + + +
+ + + + +
const ComputeExecutionGroup ne::ComputeShaderInterface::executionGroup = ComputeExecutionGroup::FIRST
+
+private
+
+

Describes order of execution.

+ +
+
+ +

◆ executionStage

+ +
+
+ + + + + +
+ + + + +
const ComputeExecutionStage ne::ComputeShaderInterface::executionStage = ComputeExecutionStage::AFTER_DEPTH_PREPASS
+
+private
+
+

Describes when shader should be executed.

+ +
+
+ +

◆ iThreadGroupCountX

+ +
+
+ + + + + +
+ + + + +
unsigned int ne::ComputeShaderInterface::iThreadGroupCountX = 0
+
+private
+
+

The number of thread groups dispatched in the X direction.

+ +
+
+ +

◆ iThreadGroupCountY

+ +
+
+ + + + + +
+ + + + +
unsigned int ne::ComputeShaderInterface::iThreadGroupCountY = 0
+
+private
+
+

The number of thread groups dispatched in the Y direction.

+ +
+
+ +

◆ iThreadGroupCountZ

+ +
+
+ + + + + +
+ + + + +
unsigned int ne::ComputeShaderInterface::iThreadGroupCountZ = 0
+
+private
+
+

The number of thread groups dispatched in the Z direction.

+ +
+
+ +

◆ pPipeline

+ +
+
+ + + + + +
+ + + + +
PipelineSharedPtr ne::ComputeShaderInterface::pPipeline
+
+private
+
+

Compute pipeline that this interface is using.

+ +
+
+ +

◆ pRenderer

+ +
+
+ + + + + +
+ + + + +
Renderer* ne::ComputeShaderInterface::pRenderer = nullptr
+
+private
+
+

Do not delete (free) this pointer. A non-owning pointer to the renderer.

+ +
+
+ +

◆ sComputeShaderName

+ +
+
+ + + + + +
+ + + + +
const std::string ne::ComputeShaderInterface::sComputeShaderName
+
+private
+
+

Name of the compiled compute shader to run.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/shader/ComputeShaderInterface.h
  • +
  • src/engine_lib/private/shader/general/ComputeShaderInterface.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ComputeShaderInterface.js b/classne_1_1ComputeShaderInterface.js new file mode 100644 index 000000000..4bddd4e97 --- /dev/null +++ b/classne_1_1ComputeShaderInterface.js @@ -0,0 +1,26 @@ +var classne_1_1ComputeShaderInterface = +[ + [ "ComputeShaderInterface", "classne_1_1ComputeShaderInterface.html#a8f8f7fe121d6032e64d7094658f10f7f", null ], + [ "bindResource", "classne_1_1ComputeShaderInterface.html#a91277887a773e2aba5158ad0a53d16f9", null ], + [ "createPartiallyInitializedRenderSpecificInterface", "classne_1_1ComputeShaderInterface.html#afdf3e809c7c7a335aba188bdd38865cb", null ], + [ "createRenderSpecificInterface", "classne_1_1ComputeShaderInterface.html#a11355f0efb3b89792fb562512a63da5b", null ], + [ "createUsingGraphicsQueue", "classne_1_1ComputeShaderInterface.html#ad1cfd5a57d56a66433d3da5744f5092d", null ], + [ "getComputeShaderName", "classne_1_1ComputeShaderInterface.html#a127554f5a4ba6616f68bcf61787a9498", null ], + [ "getExecutionGroup", "classne_1_1ComputeShaderInterface.html#a24a573e7f0ac4191e37300041b96be65", null ], + [ "getExecutionStage", "classne_1_1ComputeShaderInterface.html#a7117d4df5768fb441629262b698d2cd1", null ], + [ "getPipeline", "classne_1_1ComputeShaderInterface.html#a33f98db82d4e0b1a9ab2127cea23c1cf", null ], + [ "getRenderer", "classne_1_1ComputeShaderInterface.html#a7e94e5fd200126e11e57baac6adda2f8", null ], + [ "getThreadGroupCountX", "classne_1_1ComputeShaderInterface.html#a3b78b8d2ee0eb431952adc91bde0f529", null ], + [ "getThreadGroupCountY", "classne_1_1ComputeShaderInterface.html#a4b90c488898283e8b9618283f90e244c", null ], + [ "getThreadGroupCountZ", "classne_1_1ComputeShaderInterface.html#acc01e4dc8dc119c674b9f6393318be54", null ], + [ "getUsedPipeline", "classne_1_1ComputeShaderInterface.html#af3a736d157ba281acfba473e8ca66598", null ], + [ "submitForExecution", "classne_1_1ComputeShaderInterface.html#a0181a3c1bebad87d5824ba71ab73cf3d", null ], + [ "executionGroup", "classne_1_1ComputeShaderInterface.html#a5a9b540d76e10789c209144e46dfbdbd", null ], + [ "executionStage", "classne_1_1ComputeShaderInterface.html#a7963d75f4fa00078dc11da0a9bc8b9f6", null ], + [ "iThreadGroupCountX", "classne_1_1ComputeShaderInterface.html#a731c89afc984daccc2878980f5b97cdc", null ], + [ "iThreadGroupCountY", "classne_1_1ComputeShaderInterface.html#a1fe7ed137867517cef4af303b0a4d172", null ], + [ "iThreadGroupCountZ", "classne_1_1ComputeShaderInterface.html#ab6713b855cc72f2c52e1bbc32aa8f014", null ], + [ "pPipeline", "classne_1_1ComputeShaderInterface.html#ac4115168862b8aa468c9d7a93e488421", null ], + [ "pRenderer", "classne_1_1ComputeShaderInterface.html#a45b8cf2fcac7d1fcf27a229daf4170d7", null ], + [ "sComputeShaderName", "classne_1_1ComputeShaderInterface.html#af5993988c3a9bda596bd0f6e98260fd1", null ] +]; \ No newline at end of file diff --git a/classne_1_1ComputeShaderInterface.png b/classne_1_1ComputeShaderInterface.png new file mode 100644 index 0000000000000000000000000000000000000000..5e5634ec6b1182bb997b2d63fb6d5ec9bf973fd5 GIT binary patch literal 1064 zcmeAS@N?(olHy`uVBq!ia0y~yVC(_112~w0q;1Zo89+)pz$e7@|Ns9$=8HF9OZyKk zw=mEwkeGhv#eo9{fa1ZEF0TN}ah3%61v3EoU|`NP`w9aC^JY&M$B+ufw{zca+GNG! zCeCl{_wIjJe>C?J-38UvHM|n-OPwxXD*5_Y|G;m_wnPgPhV(=OV`~G=!)J6j(1`mQ z$vf)KoGB|5RNc4!vQ1>(?F;JnzArV(3*>j6J#lZ{-`HcDwZGjlYBN&*8&vTBREs`y zY}4}n_Wr9yFPfD7-8XgG?v-*;JL96)HLjofu>Vc`iGr)EcD_sd zEwVYXQtsQ*sGUC_O}#i@(tmBwGluxTFRv%WUpTT}{^kAczH52%w%;!=GYjjxnIL-m zcE~)*y!4OE(c3uwe<}0re?D>E<5h}tnWrtgy|HZSU9-?_>!03Dd$zv#w1IK;tm|2` zXYTbnYje!v?6FZMyd@ z1`fwl3>^ory53^wa5%-l;k=50!wEU32ux z_S_fue$Sg+nE&9Hto2k|$?tsTl0N*ZnX{K!@0%E(zTx+#@RSzsr6~p?>2<5F$m;Jc zKl(JVG9qfmzkfDsmj!-qd;NXy%}I%w>Fc(OOi7z{D|qwXp0^>(=C%2zo_cVvf9dSA zI#IP1yZ7(?`fqu5;>p^zdpcL%%HWDIjo+o0Y&_L5YhA+1GnZHD&Wd`mIWv1pY_`=# zpQ9^_?oT~?>T630@0$}5-cSE^&hwhwXn*P3^>2@PVxq6I6b7es-CVOL=WX%U%pCcX z771E^OKw?xHM{ohT}hVT-mCNL%)Ybw?s@&}-6@MGE$i&vx0qf(nreHKwM;YD$2>FO z=(k({&d%Jp@v)b4?NRTg=N8O)`?>pc<1_Qqn@+vDaNE>&-fr{bp?_yEPy4=Awq)wv z=+m>}@9ouI{5F2SFHn7og6I0cT<%F<@?WHST*|J|nL0($(^S)W(m#h&6P76Kac)zo zZ2$^6dPq(ZX@N6V_Y}$;SALw*^VmXe=6?o-izm)GX>Csi=4l2`S3j3^P6 + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ConfigManager Member List
+
+
+ +

This is the complete list of members for ne::ConfigManager, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
ConfigManager()=defaultne::ConfigManager
ConfigManager(const ConfigManager &)=delete (defined in ne::ConfigManager)ne::ConfigManager
constructFilePath(ConfigCategory category, std::string_view sFileName)ne::ConfigManagerprivatestatic
filePathne::ConfigManagerprivate
generateFreeFileName(const std::set< std::string > &usedFileNames, const std::string &sFileNamePrefix="")ne::ConfigManagerprivatestatic
getAllFileNames(ConfigCategory category)ne::ConfigManagerstatic
getAllKeysOfSection(std::string_view sSection) constne::ConfigManager
getAllSections()ne::ConfigManager
getBackupFileExtension()ne::ConfigManagerstatic
getCategoryDirectory(ConfigCategory category)ne::ConfigManagerstatic
getConfigFormatExtension()ne::ConfigManagerstatic
getFilePath() constne::ConfigManager
getFreeProgressProfileName()ne::ConfigManagerstatic
getValue(std::string_view sSection, std::string_view sKey, T defaultValue) constne::ConfigManager
loadFile(ConfigCategory category, std::string_view sFileName)ne::ConfigManager
loadFile(std::filesystem::path pathToConfigFile)ne::ConfigManager
operator=(const ConfigManager &)=delete (defined in ne::ConfigManager)ne::ConfigManager
removeFile(ConfigCategory category, std::string_view sFileName)ne::ConfigManagerstatic
removeFile(std::filesystem::path pathToConfigFile)ne::ConfigManagerstatic
saveFile(ConfigCategory category, std::string_view sFileName)ne::ConfigManager
saveFile(std::filesystem::path pathToConfigFile, bool bEnableBackup)ne::ConfigManager
sBackupFileExtensionne::ConfigManagerinlineprivatestatic
setValue(std::string_view sSection, std::string_view sKey, T value, std::string_view sComment="")ne::ConfigManager
tomlDatane::ConfigManagerprivate
+
+ + + + diff --git a/classne_1_1ConfigManager.html b/classne_1_1ConfigManager.html new file mode 100644 index 000000000..09898bbb8 --- /dev/null +++ b/classne_1_1ConfigManager.html @@ -0,0 +1,965 @@ + + + + + + + +Nameless Engine: ne::ConfigManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <ConfigManager.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ConfigManager ()=default
 
ConfigManager (const ConfigManager &)=delete
 
+ConfigManageroperator= (const ConfigManager &)=delete
 
std::optional< ErrorloadFile (ConfigCategory category, std::string_view sFileName)
 
std::optional< ErrorloadFile (std::filesystem::path pathToConfigFile)
 
template<typename T >
getValue (std::string_view sSection, std::string_view sKey, T defaultValue) const
 
std::vector< std::string > getAllSections ()
 
std::variant< std::vector< std::string >, ErrorgetAllKeysOfSection (std::string_view sSection) const
 
template<typename T >
void setValue (std::string_view sSection, std::string_view sKey, T value, std::string_view sComment="")
 
std::optional< ErrorsaveFile (ConfigCategory category, std::string_view sFileName)
 
std::optional< ErrorsaveFile (std::filesystem::path pathToConfigFile, bool bEnableBackup)
 
std::filesystem::path getFilePath () const
 
+ + + + + + + + + + + + + + + +

+Static Public Member Functions

static std::string getConfigFormatExtension ()
 
static std::string getBackupFileExtension ()
 
static std::set< std::string > getAllFileNames (ConfigCategory category)
 
static std::string getFreeProgressProfileName ()
 
static std::filesystem::path getCategoryDirectory (ConfigCategory category)
 
static std::optional< ErrorremoveFile (ConfigCategory category, std::string_view sFileName)
 
static void removeFile (std::filesystem::path pathToConfigFile)
 
+ + + + + +

+Static Private Member Functions

static std::variant< std::filesystem::path, ErrorconstructFilePath (ConfigCategory category, std::string_view sFileName)
 
static std::string generateFreeFileName (const std::set< std::string > &usedFileNames, const std::string &sFileNamePrefix="")
 
+ + + + + +

+Private Attributes

toml::value tomlData
 
std::filesystem::path filePath
 
+ + + +

+Static Private Attributes

static const char * sBackupFileExtension = ".old"
 
+

Detailed Description

+

Allows saving and loading configuration in key-value style.

+

Constructor & Destructor Documentation

+ +

◆ ConfigManager()

+ +
+
+ + + + + +
+ + + + + + + +
ne::ConfigManager::ConfigManager ()
+
+default
+
+

Constructs an empty configuration, use loadFile to read configuration from a file or setValue methods and then saveFile to save a new configuration.

+ +
+
+

Member Function Documentation

+ +

◆ constructFilePath()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::variant< std::filesystem::path, Error > ne::ConfigManager::constructFilePath (ConfigCategory category,
std::string_view sFileName 
)
+
+staticprivate
+
+

Constructs a file path from file name.

+
Parameters
+ + + +
categoryDirectory in which we will store this file. Use PROGRESS category to save player's game progress and SETTINGS to store player's settings.
sFileNameName of the file, a predefined directory will be appended to the beginning, the .toml extension will be added if the passed name does not have it.
+
+
+
Returns
Error if something went wrong, valid path otherwise.
+ +
+
+ +

◆ generateFreeFileName()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::string ne::ConfigManager::generateFreeFileName (const std::set< std::string > & usedFileNames,
const std::string & sFileNamePrefix = "" 
)
+
+staticprivate
+
+

Generates a free (unused) file name (without extension).

+
Parameters
+ + + +
usedFileNamesFile names (without extension) that cannot be used.
sFileNamePrefixPrefix for generated file name. Final prefix may be different.
+
+
+
Returns
Generated file name (without extension).
+ +
+
+ +

◆ getAllFileNames()

+ +
+
+ + + + + +
+ + + + + + + + +
std::set< std::string > ne::ConfigManager::getAllFileNames (ConfigCategory category)
+
+static
+
+

Returns file names (without extension) that this category (directory) contains.

+
Remarks
Does not include names of backup files.
+
+How backup files are handled: Imagine you had a file player.toml and a backup file (player.toml.old). If for some reason player.toml (the original file) does not exist, but its backup file is there, we will copy the backup file (player.toml.old) as the original file (will copy player.toml.old as player.toml) and return player as a file name.
+
Parameters
+ + +
categoryCategory (directory) in which to look for files.
+
+
+
Returns
All files in the specified category (backup files are excluded).
+ +
+
+ +

◆ getAllKeysOfSection()

+ +
+
+ + + + + + + + +
std::variant< std::vector< std::string >, Error > ne::ConfigManager::getAllKeysOfSection (std::string_view sSection) const
+
+

Returns all keys of the specified section.

+
Parameters
+ + +
sSectionName of the section to look for keys, use getAllSections to get names of all sections.
+
+
+
Returns
Error if something went wrong, a vector of keys otherwise.
+ +
+
+ +

◆ getAllSections()

+ +
+
+ + + + + + + +
std::vector< std::string > ne::ConfigManager::getAllSections ()
+
+

Returns names of all sections.

+
Returns
Names of all sections.
+ +
+
+ +

◆ getBackupFileExtension()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ne::ConfigManager::getBackupFileExtension ()
+
+static
+
+

Returns file extension used to store backup files, for example: ".old".

+
Returns
File extension used to store backup files.
+ +
+
+ +

◆ getCategoryDirectory()

+ +
+
+ + + + + +
+ + + + + + + + +
std::filesystem::path ne::ConfigManager::getCategoryDirectory (ConfigCategory category)
+
+static
+
+

Returns path to the directory used to store specific category of files. Path will be created if not existed before.

+
Parameters
+ + +
categoryCategory for which to return path.
+
+
+
Returns
Path to the directory of the specified category.
+ +
+
+ +

◆ getConfigFormatExtension()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ne::ConfigManager::getConfigFormatExtension ()
+
+static
+
+

Returns file format extension used to store config files.

+
Returns
File extension that starts with a dot, for example: ".toml".
+ +
+
+ +

◆ getFilePath()

+ +
+
+ + + + + + + +
std::filesystem::path ne::ConfigManager::getFilePath () const
+
+

Returns full path to the file if it was loaded using loadFile or saved using saveFile.

+
Returns
Full path to the file.
+ +
+
+ +

◆ getFreeProgressProfileName()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ne::ConfigManager::getFreeProgressProfileName ()
+
+static
+
+

Goes through all existing (on disk) config files used for storing user's progress (PROGRESS category, see getAllFileNames) and returns the name of the file that is not used (free) by existing progress config files.

+
Remarks
This function is useful for getting the name of the new player profile (that will not conflict with existing profiles).
+
Returns
Name of the progress config file without extension.
+ +
+
+ +

◆ getValue()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + + + + + + + +
T ne::ConfigManager::getValue (std::string_view sSection,
std::string_view sKey,
defaultValue 
) const
+
+

Reads a value from the loaded file (see loadFile).

+

Possible value types:

    +
  • integer types (underlying type for integer is std::int64_t),
  • +
  • float/double,
  • +
  • bool,
  • +
  • strings,
  • +
  • date/time,
  • +
  • array containers (vector, list, deque, etc.),
  • +
  • map containers (std::unordered_map<std::string, T>, etc.) (key should be std::string).
  • +
+

In order to use custom user types include ConfigManager and see our ShaderDescription class or: https://github.com/ToruNiina/toml11#conversion-between-toml-value-and-arbitrary-types

+

Example:

// sample.toml:
+
// pi = 3.14
+
// numbers = [1,2,3]
+
// time = 1979-05-27T07:32:00Z
+
// [server]
+
// port = 12312
+
using std::chrono::system_clock;
+
double pi = manager.getValue<double>("", "pi", 0.0);
+
std::vector<int> = manager.getValue<std::vector<int>>("", "numbers", std::vector<int>{});
+
system_clock::time_point time = manager.getValue<time_point>("", "time", system_clock::now());
+
int port = manager.getValue<int>("server", "port", 0);
+
Parameters
+ + + + +
sSectionName of the section (can be empty if the key has no section).
sKeyName of the key.
defaultValueValue that will be returned if the specified key was not found.
+
+
+
Returns
Default value if the specified section/key was not found, otherwise value from file.
+ +
+
+ +

◆ loadFile() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::ConfigManager::loadFile (ConfigCategory category,
std::string_view sFileName 
)
+
+

Loads data from TOML file. File should exist, otherwise an error will be returned (you can use getAllFileNames or getCategoryDirectory to see if files exist). If you used saveFile before and enabled a backup file (see saveFile), if usual file does not exist this function will look for a backup file and if found, will copy this backup file with a name of the usual file.

+
Parameters
+ + + +
categoryDirectory in which we will store this file. Use PROGRESS category to save player's game progress and SETTINGS to store player's settings.
sFileNameName of the file to load. We will load it from a predefined directory that we also use in saveFile (use getFilePath to see full path), the .toml extension will be added if the passed name does not have it.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ loadFile() [2/2]

+ +
+
+ + + + + + + + +
std::optional< Error > ne::ConfigManager::loadFile (std::filesystem::path pathToConfigFile)
+
+

Loads data from file.

+

Prefer to use the other overload (loadFile) that uses a category instead of a path.

+

If you used saveFile before with PROGRESS category, if the usual (original) file does not exist this function will look for a backup file and if found, will copy this backup file with a name of the usual (original) file (so this function will restore the original file if it was deleted).

+
Parameters
+ + +
pathToConfigFilePath to the file to load (should exist). The .toml extension will be added if the passed path does not have it.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ removeFile() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::ConfigManager::removeFile (ConfigCategory category,
std::string_view sFileName 
)
+
+static
+
+

Removes a file.

+
Remarks
This function will also remove the backup file of this file (if exists).
+
Parameters
+ + + +
categoryDirectory in which we will search for this file. Use PROGRESS category to search for player's game progress and SETTINGS to search for player's settings.
sFileNameName of the file to remove. We will search it in a predefined directory that we also use in saveFile (use getFilePath to see full path), the .toml extension will be added if the passed name does not have it.
+
+
+
Returns
Error if something went wrong. No error will be returned if the file does not exist.
+ +
+
+ +

◆ removeFile() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::ConfigManager::removeFile (std::filesystem::path pathToConfigFile)
+
+static
+
+

Removes a file.

+
Remarks
This function will also remove the backup file of this file (if exists).
+
Parameters
+ + +
pathToConfigFilePath to the file to remove. The .toml extension will be added if the passed path does not have it.
+
+
+ +
+
+ +

◆ saveFile() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::ConfigManager::saveFile (ConfigCategory category,
std::string_view sFileName 
)
+
+

Saves the current configuration to a file with a UTF-8 encoding.

+
Remarks
There is no need to save render settings as some parts of the engine save their own configs, for example, renderer will save last applied settings and restore them on start so you don't need to save them manually.
+
+Note that you don't need to save player input settings here, use InputManager for this task, InputManager has save/load functions, for SETTINGS category save settings that InputManager can't handle, for example: mouse sensitivity.
+
Parameters
+ + + +
categoryDirectory in which we will store this file. Use PROGRESS category to save player's game progress and SETTINGS to store player's settings. The difference is that for PROGRESS category we will use backup files, so that if user's progress was deleted we can use a backup file to restore it. SETTINGS category does not use backup files. Backup files handling is used internally so you don't need to worry about it.
sFileNameName of the file to save, prefer to have only ASCII characters in the file name. We will save it to a predefined directory that we also use in loadFile (use getFilePath to see full path), the .toml extension will be added if the passed name does not have it.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ saveFile() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::ConfigManager::saveFile (std::filesystem::path pathToConfigFile,
bool bEnableBackup 
)
+
+

Saves the current configuration to a file with a UTF-8 encoding.

+

Prefer to use the other overload (saveFile) that uses a category instead of a path.

+
Parameters
+ + + +
pathToConfigFilePath to the file to save (if file does not exist, it will be created). The .toml extension will be added if the passed name does not have it.
bEnableBackupIf 'true' will also use a backup (copy) file. loadFile can use backup file if a usual configuration file does not exist. Generally you want to use a backup file if you are saving important information, such as player progress, other cases such as player game settings and etc. usually do not need a backup but you can use it if you want.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ setValue()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ne::ConfigManager::setValue (std::string_view sSection,
std::string_view sKey,
value,
std::string_view sComment = "" 
)
+
+

Sets a value. This value will not be written to file until saveFile is called.

+

If the specified key was already set before (in the specified section), this call will overwrite it with the new value (that can have a different type).

+

Different sections can have keys with the same name (uniqueness per section). Example:

// sample.toml:
+
[section1]
+
test = test1
+
[section2]
+
test = test2
+

Possible value types:

    +
  • integer types (underlying type for integer is std::int64_t),
  • +
  • float/double,
  • +
  • bool,
  • +
  • strings,
  • +
  • date/time,
  • +
  • array containers (vector, list, deque, etc.),
  • +
  • map containers (unordered_map, etc.).
  • +
+

In order to use custom user types include ConfigManager and see our ShaderDescription class or: https://github.com/ToruNiina/toml11#conversion-between-toml-value-and-arbitrary-types

+

Example:

// in order to create this sample.toml:
+
// pi = 3.14
+
// numbers = [1,2,3]
+
// time = 1979-05-27T07:32:00Z
+
// [server]
+
// port = 12312
+
using std::chrono::system_clock;
+
manager.setValue<double>("", "pi", 3.14);
+
manager.setValue<std::vector<int>>("", "numbers", std::vector<int>{1, 2, 3});
+
manager.setValue<time_point>("", "time", system_clock::now());
+
manager.setValue<int>("server", "port", 12312);
+
Parameters
+ + + + + +
sSectionName of the section (can be empty if the key has no section).
sKeyName of the key.
valueValue to set.
sCommentComment to add to this value.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ filePath

+ +
+
+ + + + + +
+ + + + +
std::filesystem::path ne::ConfigManager::filePath
+
+private
+
+

Full path to file.

+ +
+
+ +

◆ sBackupFileExtension

+ +
+
+ + + + + +
+ + + + +
const char* ne::ConfigManager::sBackupFileExtension = ".old"
+
+inlinestaticprivate
+
+

File extension used for backup files.

+ +
+
+ +

◆ tomlData

+ +
+
+ + + + + +
+ + + + +
toml::value ne::ConfigManager::tomlData
+
+private
+
+

Config file structure

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/io/ConfigManager.h
  • +
  • src/engine_lib/private/io/ConfigManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ConfigManager.js b/classne_1_1ConfigManager.js new file mode 100644 index 000000000..5a3677937 --- /dev/null +++ b/classne_1_1ConfigManager.js @@ -0,0 +1,25 @@ +var classne_1_1ConfigManager = +[ + [ "ConfigManager", "classne_1_1ConfigManager.html#ac159e82089e6991b9b22f9e06c16dd65", null ], + [ "constructFilePath", "classne_1_1ConfigManager.html#a0f00e5296531689ef4190a123ef23287", null ], + [ "generateFreeFileName", "classne_1_1ConfigManager.html#ac563ff748a1fe991aabe5629f08d1ce6", null ], + [ "getAllFileNames", "classne_1_1ConfigManager.html#a070d6ddb597e827ce1ead622537d16a5", null ], + [ "getAllKeysOfSection", "classne_1_1ConfigManager.html#ae0612346f4826dd639e6033af0ae3809", null ], + [ "getAllSections", "classne_1_1ConfigManager.html#aa9efb319cadaf29d209c86aefe4d65a6", null ], + [ "getBackupFileExtension", "classne_1_1ConfigManager.html#a0d1770b8889f99ee59c9ca3fb7baa977", null ], + [ "getCategoryDirectory", "classne_1_1ConfigManager.html#a3c1a80a7f4ed3cecf490d4883407fdbb", null ], + [ "getConfigFormatExtension", "classne_1_1ConfigManager.html#a768b2f50bba6590ec86d94fa86995a38", null ], + [ "getFilePath", "classne_1_1ConfigManager.html#a23d1dee3702c1138f50e19ec07dea40a", null ], + [ "getFreeProgressProfileName", "classne_1_1ConfigManager.html#a56c3967d8ed010743046f053311446fe", null ], + [ "getValue", "classne_1_1ConfigManager.html#ac355a5fa94ada2919d3e75a5246a94d2", null ], + [ "loadFile", "classne_1_1ConfigManager.html#a27345612b4ee53e154f32e951b219438", null ], + [ "loadFile", "classne_1_1ConfigManager.html#afeefdbbcf2983386c6cec36a3ebfa323", null ], + [ "removeFile", "classne_1_1ConfigManager.html#ad827081f18e99d095c89e35febf3b126", null ], + [ "removeFile", "classne_1_1ConfigManager.html#a927f98253f753d475b09aad736a0d173", null ], + [ "saveFile", "classne_1_1ConfigManager.html#aafc4701dd102d93a0f23d277821600c0", null ], + [ "saveFile", "classne_1_1ConfigManager.html#ad5fa7616322bc39eb8ed673b17d7df19", null ], + [ "setValue", "classne_1_1ConfigManager.html#a96cb16396d2789a15ef1e0bec6c8c144", null ], + [ "filePath", "classne_1_1ConfigManager.html#a6c625f5bb692ef993f85b519bc809f95", null ], + [ "sBackupFileExtension", "classne_1_1ConfigManager.html#a77b1775ac06e32f5eacabe225f11c1d7", null ], + [ "tomlData", "classne_1_1ConfigManager.html#a61a6adc32acade03f7b1bdac86eb016f", null ] +]; \ No newline at end of file diff --git a/classne_1_1ContinuousDirectXDescriptorRange-members.html b/classne_1_1ContinuousDirectXDescriptorRange-members.html new file mode 100644 index 000000000..ef15f684a --- /dev/null +++ b/classne_1_1ContinuousDirectXDescriptorRange-members.html @@ -0,0 +1,131 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ContinuousDirectXDescriptorRange Member List
+
+
+ +

This is the complete list of members for ne::ContinuousDirectXDescriptorRange, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
ContinuousDirectXDescriptorRange()=delete (defined in ne::ContinuousDirectXDescriptorRange)ne::ContinuousDirectXDescriptorRange
ContinuousDirectXDescriptorRange(const ContinuousDirectXDescriptorRange &other)=delete (defined in ne::ContinuousDirectXDescriptorRange)ne::ContinuousDirectXDescriptorRange
ContinuousDirectXDescriptorRange(ContinuousDirectXDescriptorRange &&other) noexcept=delete (defined in ne::ContinuousDirectXDescriptorRange)ne::ContinuousDirectXDescriptorRange
ContinuousDirectXDescriptorRange(DirectXDescriptorHeap *pHeap, const std::function< void()> &onRangeIndicesChanged, const std::string &sRangeName)ne::ContinuousDirectXDescriptorRangeprivate
DirectXDescriptorHeap (defined in ne::ContinuousDirectXDescriptorRange)ne::ContinuousDirectXDescriptorRangefriend
getGpuDescriptorHandleToRangeStart() constne::ContinuousDirectXDescriptorRange
getRangeCapacity()ne::ContinuousDirectXDescriptorRange
getRangeGrowSize()ne::ContinuousDirectXDescriptorRangeinlinestatic
getRangeSize()ne::ContinuousDirectXDescriptorRange
getRangeStartInHeap()ne::ContinuousDirectXDescriptorRange
getResourceDescriptorOffsetFromRangeStart(DirectXResource *pResource, DirectXDescriptorType descriptorType)ne::ContinuousDirectXDescriptorRange
iRangeGrowSizene::ContinuousDirectXDescriptorRangeprivatestatic
markDescriptorAsUnused(DirectXDescriptor *pDescriptor)ne::ContinuousDirectXDescriptorRangeprivate
mtxInternalDatane::ContinuousDirectXDescriptorRangeprivate
onRangeIndicesChangedne::ContinuousDirectXDescriptorRangeprivate
operator=(const ContinuousDirectXDescriptorRange &other)=delete (defined in ne::ContinuousDirectXDescriptorRange)ne::ContinuousDirectXDescriptorRange
operator=(ContinuousDirectXDescriptorRange &&other) noexcept=delete (defined in ne::ContinuousDirectXDescriptorRange)ne::ContinuousDirectXDescriptorRange
pHeapne::ContinuousDirectXDescriptorRangeprivate
sRangeNamene::ContinuousDirectXDescriptorRangeprivate
tryReserveFreeHeapIndexToCreateDescriptor()ne::ContinuousDirectXDescriptorRangeprivate
~ContinuousDirectXDescriptorRange() (defined in ne::ContinuousDirectXDescriptorRange)ne::ContinuousDirectXDescriptorRange
+
+ + + + diff --git a/classne_1_1ContinuousDirectXDescriptorRange.html b/classne_1_1ContinuousDirectXDescriptorRange.html new file mode 100644 index 000000000..fe3be13db --- /dev/null +++ b/classne_1_1ContinuousDirectXDescriptorRange.html @@ -0,0 +1,566 @@ + + + + + + + +Nameless Engine: ne::ContinuousDirectXDescriptorRange Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <DirectXDescriptorHeap.h>

+ + + + +

+Classes

struct  InternalData
 
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ContinuousDirectXDescriptorRange (const ContinuousDirectXDescriptorRange &other)=delete
 
+ContinuousDirectXDescriptorRangeoperator= (const ContinuousDirectXDescriptorRange &other)=delete
 
ContinuousDirectXDescriptorRange (ContinuousDirectXDescriptorRange &&other) noexcept=delete
 
+ContinuousDirectXDescriptorRangeoperator= (ContinuousDirectXDescriptorRange &&other) noexcept=delete
 
std::variant< unsigned int, ErrorgetResourceDescriptorOffsetFromRangeStart (DirectXResource *pResource, DirectXDescriptorType descriptorType)
 
size_t getRangeSize ()
 
size_t getRangeCapacity ()
 
INT getRangeStartInHeap ()
 
D3D12_GPU_DESCRIPTOR_HANDLE getGpuDescriptorHandleToRangeStart () const
 
+ + + +

+Static Public Member Functions

static constexpr INT getRangeGrowSize ()
 
+ + + + + + + +

+Private Member Functions

 ContinuousDirectXDescriptorRange (DirectXDescriptorHeap *pHeap, const std::function< void()> &onRangeIndicesChanged, const std::string &sRangeName)
 
std::optional< ErrormarkDescriptorAsUnused (DirectXDescriptor *pDescriptor)
 
std::variant< std::optional< INT >, ErrortryReserveFreeHeapIndexToCreateDescriptor ()
 
+ + + + + + + + + +

+Private Attributes

std::pair< std::recursive_mutex, InternalDatamtxInternalData
 
const std::function< void()> onRangeIndicesChanged
 
const std::string sRangeName
 
DirectXDescriptorHeap *const pHeap = nullptr
 
+ + + +

+Static Private Attributes

static constexpr INT iRangeGrowSize = 50
 
+ + + +

+Friends

+class DirectXDescriptorHeap
 
+

Detailed Description

+

Works as a mini descriptor heap that operates on descriptors in a continuous range (can be used for bindless bindings of descriptor arrays).

+
Remarks
Size of this range automatically changes (expands/shrinks) depending on the usage.
+

Constructor & Destructor Documentation

+ +

◆ ContinuousDirectXDescriptorRange()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ne::ContinuousDirectXDescriptorRange::ContinuousDirectXDescriptorRange (DirectXDescriptorHeappHeap,
const std::function< void()> & onRangeIndicesChanged,
const std::string & sRangeName 
)
+
+private
+
+

Creates a new range (with capacity iRangeGrowSize but no descriptor is used) allocated in a descriptor heap.

+
Parameters
+ + + + +
pHeapHeap that allocated the range.
onRangeIndicesChangedCallback that will be called after the range was moved in the heap due to things like heap expand/shrink.
sRangeNameName of this range (used for logging).
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getGpuDescriptorHandleToRangeStart()

+ +
+
+ + + + + + + +
D3D12_GPU_DESCRIPTOR_HANDLE ne::ContinuousDirectXDescriptorRange::getGpuDescriptorHandleToRangeStart () const
+
+

Returns a GPU descriptor handle to the current range start.

+
Warning
Returned handle is only valid for limited amount of time, until range is moved to other place in heap (because heap is being re-created for example).
+
Returns
GPU descriptor handle to range start.
+ +
+
+ +

◆ getRangeCapacity()

+ +
+
+ + + + + + + +
size_t ne::ContinuousDirectXDescriptorRange::getRangeCapacity ()
+
+

Returns the total number of descriptors that this range can currently store.

+
Returns
Total capacity.
+ +
+
+ +

◆ getRangeGrowSize()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr INT ne::ContinuousDirectXDescriptorRange::getRangeGrowSize ()
+
+inlinestaticconstexpr
+
+

Returns grow/shrink size for all continuous descriptor ranges.

+
Returns
Grow/shrink size.
+ +
+
+ +

◆ getRangeSize()

+ +
+
+ + + + + + + +
size_t ne::ContinuousDirectXDescriptorRange::getRangeSize ()
+
+

Returns the number of active (currently in-use) descriptors that were allocated from this range.

+
Returns
Active descriptors.
+ +
+
+ +

◆ getRangeStartInHeap()

+ +
+
+ + + + + + + +
INT ne::ContinuousDirectXDescriptorRange::getRangeStartInHeap ()
+
+

Returns index of the first descriptor of this range in the heap.

+
Returns
Negative if not initialized yet, otherwise descriptor index in the heap.
+ +
+
+ +

◆ getResourceDescriptorOffsetFromRangeStart()

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::variant< unsigned int, Error > ne::ContinuousDirectXDescriptorRange::getResourceDescriptorOffsetFromRangeStart (DirectXResourcepResource,
DirectXDescriptorType descriptorType 
)
+
+

Calculates an offset of the descriptor (of the specified resource) from the start of this range.

+
Parameters
+ + + +
pResourceResource with already binded descriptor within this range.
descriptorTypeType of the descriptor to look for.
+
+
+
Returns
Error if something went wrong, otherwise offset (in descriptors) of the descriptor from range start.
+ +
+
+ +

◆ markDescriptorAsUnused()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::ContinuousDirectXDescriptorRange::markDescriptorAsUnused (DirectXDescriptorpDescriptor)
+
+private
+
+

Removes the specified descriptor from the range and marks descriptor's index as unused.

+
Remarks
Does not shrink the range.
+
Parameters
+ + +
pDescriptorDescriptor to remove.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ tryReserveFreeHeapIndexToCreateDescriptor()

+ +
+
+ + + + + +
+ + + + + + + +
std::variant< std::optional< INT >, Error > ne::ContinuousDirectXDescriptorRange::tryReserveFreeHeapIndexToCreateDescriptor ()
+
+private
+
+

Looks if there is a free index in the range that can be used to create a new descriptor or if there is no space (expansion needed).

+
Remarks
Marks returned index as "in-use" and expects a new descriptor to be assigned to the range after this function.
+
Returns
Error if something went wrong, otherwise empty if no free space (expansion needed) or an index relative to heap start.
+ +
+
+

Member Data Documentation

+ +

◆ iRangeGrowSize

+ +
+
+ + + + + +
+ + + + +
constexpr INT ne::ContinuousDirectXDescriptorRange::iRangeGrowSize = 50
+
+staticconstexprprivate
+
+

Grow/shrink size for all ranges. Constant for all ranges because it causes the heap to be re-created and we want to avoid small ranges and big ranges (due to how heap expands/shrinks) which also depends on the heap grow size.

+ +
+
+ +

◆ mtxInternalData

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, InternalData> ne::ContinuousDirectXDescriptorRange::mtxInternalData
+
+private
+
+

Internal data.

+ +
+
+ +

◆ onRangeIndicesChanged

+ +
+
+ + + + + +
+ + + + +
const std::function<void()> ne::ContinuousDirectXDescriptorRange::onRangeIndicesChanged
+
+private
+
+

Called after the range was moved in the heap due to things like heap expand/shrink.

+ +
+
+ +

◆ pHeap

+ +
+
+ + + + + +
+ + + + +
DirectXDescriptorHeap* const ne::ContinuousDirectXDescriptorRange::pHeap = nullptr
+
+private
+
+

Heap that allocated the range.

+ +
+
+ +

◆ sRangeName

+ +
+
+ + + + + +
+ + + + +
const std::string ne::ContinuousDirectXDescriptorRange::sRangeName
+
+private
+
+

Name of this range (used for logging).

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/directx/descriptors/DirectXDescriptorHeap.h
  • +
  • src/engine_lib/private/render/directx/descriptors/DirectXDescriptorHeap.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ContinuousDirectXDescriptorRange.js b/classne_1_1ContinuousDirectXDescriptorRange.js new file mode 100644 index 000000000..0114d8b98 --- /dev/null +++ b/classne_1_1ContinuousDirectXDescriptorRange.js @@ -0,0 +1,18 @@ +var classne_1_1ContinuousDirectXDescriptorRange = +[ + [ "InternalData", "structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData.html", "structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData" ], + [ "ContinuousDirectXDescriptorRange", "classne_1_1ContinuousDirectXDescriptorRange.html#a03aa5fc76b329c2aa1d52f6ba3b90d39", null ], + [ "getGpuDescriptorHandleToRangeStart", "classne_1_1ContinuousDirectXDescriptorRange.html#a2838e7ed840c64a196737537fcce9961", null ], + [ "getRangeCapacity", "classne_1_1ContinuousDirectXDescriptorRange.html#a25663080f142ddaae9b34d2a8d2c55d0", null ], + [ "getRangeGrowSize", "classne_1_1ContinuousDirectXDescriptorRange.html#a79e3306d5dcd53a0631f77cf20fcd09c", null ], + [ "getRangeSize", "classne_1_1ContinuousDirectXDescriptorRange.html#a02f9c0acfce7f52044002b3225e409e0", null ], + [ "getRangeStartInHeap", "classne_1_1ContinuousDirectXDescriptorRange.html#a252e39d8b79e1c6bbb893268c2b23281", null ], + [ "getResourceDescriptorOffsetFromRangeStart", "classne_1_1ContinuousDirectXDescriptorRange.html#a782221c535345b665a6bc77b9f596df1", null ], + [ "markDescriptorAsUnused", "classne_1_1ContinuousDirectXDescriptorRange.html#a6669cb1a0aac2f621ddaf91693132c80", null ], + [ "tryReserveFreeHeapIndexToCreateDescriptor", "classne_1_1ContinuousDirectXDescriptorRange.html#a1d8cf28f91e2313cdc90fb1351d98717", null ], + [ "iRangeGrowSize", "classne_1_1ContinuousDirectXDescriptorRange.html#a6ee305a8a1e1c625340c1ca6e18c259d", null ], + [ "mtxInternalData", "classne_1_1ContinuousDirectXDescriptorRange.html#a8706d1d376a81add52a155d61b9b8417", null ], + [ "onRangeIndicesChanged", "classne_1_1ContinuousDirectXDescriptorRange.html#a34fb9337ed96dec21dd34ce8b910f0b5", null ], + [ "pHeap", "classne_1_1ContinuousDirectXDescriptorRange.html#a508e8c418cea82aac92b50c97a0e19af", null ], + [ "sRangeName", "classne_1_1ContinuousDirectXDescriptorRange.html#a05ec3596392cdd1ec02ab4409f908608", null ] +]; \ No newline at end of file diff --git a/classne_1_1DelayedPipelineResourcesCreation-members.html b/classne_1_1DelayedPipelineResourcesCreation-members.html new file mode 100644 index 000000000..4eccf1b3f --- /dev/null +++ b/classne_1_1DelayedPipelineResourcesCreation-members.html @@ -0,0 +1,120 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::DelayedPipelineResourcesCreation Member List
+
+
+ +

This is the complete list of members for ne::DelayedPipelineResourcesCreation, including all inherited members.

+ + + + + + + + + + + +
DelayedPipelineResourcesCreation()=delete (defined in ne::DelayedPipelineResourcesCreation)ne::DelayedPipelineResourcesCreation
DelayedPipelineResourcesCreation(const DelayedPipelineResourcesCreation &)=delete (defined in ne::DelayedPipelineResourcesCreation)ne::DelayedPipelineResourcesCreation
DelayedPipelineResourcesCreation(DelayedPipelineResourcesCreation &&other) noexcept=delete (defined in ne::DelayedPipelineResourcesCreation)ne::DelayedPipelineResourcesCreation
DelayedPipelineResourcesCreation(PipelineManager *pPipelineManager)ne::DelayedPipelineResourcesCreationinline
destroy()ne::DelayedPipelineResourcesCreationprivate
initialize()ne::DelayedPipelineResourcesCreationprivate
operator=(const DelayedPipelineResourcesCreation &)=delete (defined in ne::DelayedPipelineResourcesCreation)ne::DelayedPipelineResourcesCreation
operator=(DelayedPipelineResourcesCreation &&other) noexcept=delete (defined in ne::DelayedPipelineResourcesCreation)ne::DelayedPipelineResourcesCreation
pPipelineManagerne::DelayedPipelineResourcesCreationprivate
~DelayedPipelineResourcesCreation() (defined in ne::DelayedPipelineResourcesCreation)ne::DelayedPipelineResourcesCreationinline
+
+ + + + diff --git a/classne_1_1DelayedPipelineResourcesCreation.html b/classne_1_1DelayedPipelineResourcesCreation.html new file mode 100644 index 000000000..7f9493017 --- /dev/null +++ b/classne_1_1DelayedPipelineResourcesCreation.html @@ -0,0 +1,263 @@ + + + + + + + +Nameless Engine: ne::DelayedPipelineResourcesCreation Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::DelayedPipelineResourcesCreation Class Reference
+
+
+ +

#include <PipelineManager.h>

+ + + + + + + + + + + + +

+Public Member Functions

DelayedPipelineResourcesCreation (const DelayedPipelineResourcesCreation &)=delete
 
+DelayedPipelineResourcesCreationoperator= (const DelayedPipelineResourcesCreation &)=delete
 
DelayedPipelineResourcesCreation (DelayedPipelineResourcesCreation &&other) noexcept=delete
 
+DelayedPipelineResourcesCreationoperator= (DelayedPipelineResourcesCreation &&other) noexcept=delete
 
 DelayedPipelineResourcesCreation (PipelineManager *pPipelineManager)
 
+ + + + + +

+Private Member Functions

void initialize ()
 
void destroy ()
 
+ + + +

+Private Attributes

PipelineManagerpPipelineManager = nullptr
 
+

Detailed Description

+

RAII class that once acquired waits for the GPU to finish work up to this point, pauses the rendering, releases all internal resources from all graphics pipelines, then in destructor restores them.

+
Remarks
This can be useful when some render resource (like MSAA state or sample count) has changed or about to be changed so that we can make sure all pipelines are refreshed to use the new/changed resource.
+

Constructor & Destructor Documentation

+ +

◆ DelayedPipelineResourcesCreation()

+ +
+
+ + + + + +
+ + + + + + + + +
ne::DelayedPipelineResourcesCreation::DelayedPipelineResourcesCreation (PipelineManagerpPipelineManager)
+
+inline
+
+

Constructor.

+
Parameters
+ + +
pPipelineManagerPipeline manager to use.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ destroy()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::DelayedPipelineResourcesCreation::destroy ()
+
+private
+
+

Does destruction logic.

+ +
+
+ +

◆ initialize()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::DelayedPipelineResourcesCreation::initialize ()
+
+private
+
+

Does initialization logic.

+ +
+
+

Member Data Documentation

+ +

◆ pPipelineManager

+ +
+
+ + + + + +
+ + + + +
PipelineManager* ne::DelayedPipelineResourcesCreation::pPipelineManager = nullptr
+
+private
+
+

Do not delete (free) this pointer. Non-owning reference to pipeline manager.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/general/pipeline/PipelineManager.h
  • +
  • src/engine_lib/private/render/general/pipeline/PipelineManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1DelayedPipelineResourcesCreation.js b/classne_1_1DelayedPipelineResourcesCreation.js new file mode 100644 index 000000000..aeb0fcf0d --- /dev/null +++ b/classne_1_1DelayedPipelineResourcesCreation.js @@ -0,0 +1,7 @@ +var classne_1_1DelayedPipelineResourcesCreation = +[ + [ "DelayedPipelineResourcesCreation", "classne_1_1DelayedPipelineResourcesCreation.html#ac24112ba84b83dbedcda80e32c31cabd", null ], + [ "destroy", "classne_1_1DelayedPipelineResourcesCreation.html#afaffb5e2c2373aaebb46ff9434db8352", null ], + [ "initialize", "classne_1_1DelayedPipelineResourcesCreation.html#a6f9ad038cfa944be463dd39c25ebd122", null ], + [ "pPipelineManager", "classne_1_1DelayedPipelineResourcesCreation.html#a6a5b319be9e487c9001e1166940a8e20", null ] +]; \ No newline at end of file diff --git a/classne_1_1DepthPipelineConfiguration-members.html b/classne_1_1DepthPipelineConfiguration-members.html new file mode 100644 index 000000000..85837da70 --- /dev/null +++ b/classne_1_1DepthPipelineConfiguration-members.html @@ -0,0 +1,128 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::DepthPipelineConfiguration Member List
+
+
+ +

This is the complete list of members for ne::DepthPipelineConfiguration, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
additionalVertexShaderMacrosne::PipelineConfigurationprotected
DepthPipelineConfiguration()=delete (defined in ne::DepthPipelineConfiguration)ne::DepthPipelineConfiguration
DepthPipelineConfiguration(const std::string &sVertexShaderName, const std::set< ShaderMacro > &additionalVertexShaderMacros, std::optional< PipelineShadowMappingUsage > shadowMappingUsage)ne::DepthPipelineConfiguration
getAdditionalPixelShaderMacros() constne::PipelineConfigurationinlinevirtual
getAdditionalVertexShaderMacros() constne::PipelineConfigurationinline
getComputeShaderName() constne::PipelineConfigurationinlinevirtual
getGraphicsType() const overridene::DepthPipelineConfigurationvirtual
getPixelShaderName() const overridene::DepthPipelineConfigurationvirtual
getShadowMappingUsage() const overridene::DepthPipelineConfigurationvirtual
getVertexShaderName() constne::PipelineConfigurationinline
isDepthBiasEnabled() const overridene::DepthPipelineConfigurationvirtual
isPixelBlendingEnabled() constne::PipelineConfigurationinlinevirtual
PipelineConfiguration()=delete (defined in ne::PipelineConfiguration)ne::PipelineConfiguration
PipelineConfiguration(const std::string &sVertexShaderName, const std::set< ShaderMacro > &additionalVertexShaderMacros)ne::PipelineConfigurationprotected
shadowMappingUsagene::DepthPipelineConfigurationprotected
sVertexShaderNamene::PipelineConfigurationprotected
~DepthPipelineConfiguration() override=default (defined in ne::DepthPipelineConfiguration)ne::DepthPipelineConfigurationvirtual
~PipelineConfiguration()=default (defined in ne::PipelineConfiguration)ne::PipelineConfigurationvirtual
+
+ + + + diff --git a/classne_1_1DepthPipelineConfiguration.html b/classne_1_1DepthPipelineConfiguration.html new file mode 100644 index 000000000..65d983eae --- /dev/null +++ b/classne_1_1DepthPipelineConfiguration.html @@ -0,0 +1,363 @@ + + + + + + + +Nameless Engine: ne::DepthPipelineConfiguration Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::DepthPipelineConfiguration Class Reference
+
+
+ +

#include <PipelineConfiguration.h>

+
+Inheritance diagram for ne::DepthPipelineConfiguration:
+
+
+ + +ne::PipelineConfiguration + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 DepthPipelineConfiguration (const std::string &sVertexShaderName, const std::set< ShaderMacro > &additionalVertexShaderMacros, std::optional< PipelineShadowMappingUsage > shadowMappingUsage)
 
virtual std::optional< GraphicsPipelineType > getGraphicsType () const override
 
virtual bool isDepthBiasEnabled () const override
 
virtual std::string_view getPixelShaderName () const override
 
virtual std::optional< PipelineShadowMappingUsage > getShadowMappingUsage () const override
 
- Public Member Functions inherited from ne::PipelineConfiguration
std::set< ShaderMacro > getAdditionalVertexShaderMacros () const
 
std::string_view getVertexShaderName () const
 
virtual std::optional< GraphicsPipelineType > getGraphicsType () const =0
 
virtual std::set< ShaderMacro > getAdditionalPixelShaderMacros () const
 
virtual std::string_view getPixelShaderName () const
 
virtual std::string_view getComputeShaderName () const
 
virtual bool isPixelBlendingEnabled () const
 
virtual bool isDepthBiasEnabled () const
 
virtual std::optional< PipelineShadowMappingUsage > getShadowMappingUsage () const
 
+ + + + + + + + +

+Protected Attributes

const std::optional< PipelineShadowMappingUsage > shadowMappingUsage
 
- Protected Attributes inherited from ne::PipelineConfiguration
std::set< ShaderMacro > additionalVertexShaderMacros
 
const std::string sVertexShaderName
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from ne::PipelineConfiguration
 PipelineConfiguration (const std::string &sVertexShaderName, const std::set< ShaderMacro > &additionalVertexShaderMacros)
 
+

Detailed Description

+

Pipeline that only uses vertex shader to draw depth.

+

Constructor & Destructor Documentation

+ +

◆ DepthPipelineConfiguration()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ne::DepthPipelineConfiguration::DepthPipelineConfiguration (const std::string & sVertexShaderName,
const std::set< ShaderMacro > & additionalVertexShaderMacros,
std::optional< PipelineShadowMappingUsage > shadowMappingUsage 
)
+
+

Initializes options.

+
Parameters
+ + + + +
sVertexShaderNameName of the compiled vertex shader to use.
additionalVertexShaderMacrosAdditional macros to enable for vertex shader configuration.
shadowMappingUsageSpecify empty if this pipeline is not used in the shadow mapping, otherwise specify which light sources will be able to use this pipeline in shadow mapping and thus shadow bias should be used.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getGraphicsType()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< GraphicsPipelineType > ne::DepthPipelineConfiguration::getGraphicsType () const
+
+overridevirtual
+
+

Returns type of the pipeline that the object describes.

+
Returns
Pipeline type.
+ +

Implements ne::PipelineConfiguration.

+ +
+
+ +

◆ getPixelShaderName()

+ +
+
+ + + + + +
+ + + + + + + +
std::string_view ne::DepthPipelineConfiguration::getPixelShaderName () const
+
+overridevirtual
+
+

Returns name of the pixel/fragment shader that should be used.

+
Returns
Empty string if pixel/fragment shader is not used, otherwise name of the compiled shader.
+ +

Reimplemented from ne::PipelineConfiguration.

+ +
+
+ +

◆ getShadowMappingUsage()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< PipelineShadowMappingUsage > ne::DepthPipelineConfiguration::getShadowMappingUsage () const
+
+overridevirtual
+
+

Tells if this pipeline is used in shadow mapping.

+
Returns
Empty if not used in shadow mapping, otherwise light sources that can use the pipeline for shadow mapping.
+ +

Reimplemented from ne::PipelineConfiguration.

+ +
+
+ +

◆ isDepthBiasEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
bool ne::DepthPipelineConfiguration::isDepthBiasEnabled () const
+
+overridevirtual
+
+

Tells whether depth bias (offset is enabled or not).

+
Returns
true to enable, false to disable.
+ +

Reimplemented from ne::PipelineConfiguration.

+ +
+
+

Member Data Documentation

+ +

◆ shadowMappingUsage

+ +
+
+ + + + + +
+ + + + +
const std::optional<PipelineShadowMappingUsage> ne::DepthPipelineConfiguration::shadowMappingUsage
+
+protected
+
+

Empty if not used for shadow mapping, otherwise light sources that can use it.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/general/pipeline/PipelineConfiguration.h
  • +
  • src/engine_lib/private/render/general/pipeline/PipelineConfiguration.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1DepthPipelineConfiguration.js b/classne_1_1DepthPipelineConfiguration.js new file mode 100644 index 000000000..70029c7cc --- /dev/null +++ b/classne_1_1DepthPipelineConfiguration.js @@ -0,0 +1,9 @@ +var classne_1_1DepthPipelineConfiguration = +[ + [ "DepthPipelineConfiguration", "classne_1_1DepthPipelineConfiguration.html#a4f0ebe4f37534c94b736ff65d5608471", null ], + [ "getGraphicsType", "classne_1_1DepthPipelineConfiguration.html#a9eb2970563f38cdee2e721b65af36626", null ], + [ "getPixelShaderName", "classne_1_1DepthPipelineConfiguration.html#aa6cfdf5f6defa8702cddd2130ab9e3a3", null ], + [ "getShadowMappingUsage", "classne_1_1DepthPipelineConfiguration.html#ae7f82a013e9cabd1ef1c0f711efb1f32", null ], + [ "isDepthBiasEnabled", "classne_1_1DepthPipelineConfiguration.html#a716607d5873fb9fb20f5bd18456b69d5", null ], + [ "shadowMappingUsage", "classne_1_1DepthPipelineConfiguration.html#ad554869e4860489731b6bae33890a8aa", null ] +]; \ No newline at end of file diff --git a/classne_1_1DepthPipelineConfiguration.png b/classne_1_1DepthPipelineConfiguration.png new file mode 100644 index 0000000000000000000000000000000000000000..0ce0db9a0971c4765c6c344ea445b412e8a22a97 GIT binary patch literal 783 zcmV+q1MvKbP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0007- zNklNdX`8#2?|q5&9(N0U&CR~H z$y|ilnjJo|rR*O8x99EOE&0)L|0g=^<7pB});dRzIAk#Gc=U!#TY6!4hDG<5GCm|( zs*!aYqB`qU=h?hSZg)7J#3IQ`m*}?E@&(Lrk*VWU+(Y+b{RZ8upenWANx6;Q*g=x4 zbnn0z^pjGkGI`D%L;MwbafO&9dpC@olJ50%QjwJ8vr|2a4VNG;7n&<$~TN51sdTXKsKyOWS0O+lW4gkG1(E*^hCOQE0)jwLDAYI<3tL*oX3%|yv$foj%UwTnIMCNu-$R?k>`z--U&(!T&*ztSgxQ*%e_~77 z&!WASh&g!;#s7SeJ-$fIVtn$fTaO~^`JfGC zlkC2F1HI85&L^>4bX!UZeYe)=`RUI*J=;xmFIEG+E|9z`uh5HRl{I|_y|IJu9T*$L z3v_JE)q$~<;UBTo{RBO~A&%3Nm3J)pBJ17_V`HX!J>58YVdlZjU6z4W=#q4$mh1oc zDBp|mHR$d~S&~lmJz2NkLP@&REp$ox9!+#f>aB?`NxikAhY-S$`Uh?pm|h*Z1$h7f N002ovPDHLkV1jO@hXDWp literal 0 HcmV?d00001 diff --git a/classne_1_1DescriptorSetLayoutGenerator-members.html b/classne_1_1DescriptorSetLayoutGenerator-members.html new file mode 100644 index 000000000..d6f6548f3 --- /dev/null +++ b/classne_1_1DescriptorSetLayoutGenerator-members.html @@ -0,0 +1,117 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::DescriptorSetLayoutGenerator Member List
+
+
+ +

This is the complete list of members for ne::DescriptorSetLayoutGenerator, including all inherited members.

+ + + + + + + + +
collectInfoFromBytecode(void *pSpirvBytecode, size_t iSizeInBytes)ne::DescriptorSetLayoutGeneratorstatic
DescriptorSetLayoutGenerator()=delete (defined in ne::DescriptorSetLayoutGenerator)ne::DescriptorSetLayoutGenerator
DescriptorSetLayoutGenerator(const DescriptorSetLayoutGenerator &)=delete (defined in ne::DescriptorSetLayoutGenerator)ne::DescriptorSetLayoutGenerator
generateCompute(VulkanRenderer *pRenderer, GlslShader *pComputeShader)ne::DescriptorSetLayoutGeneratorstatic
generateGraphics(VulkanRenderer *pRenderer, GlslShader *pVertexShader, GlslShader *pFragmentShader)ne::DescriptorSetLayoutGeneratorstatic
generateLayoutBinding(uint32_t iBindingIndex, const Collected::DescriptorSetLayoutBindingInfo &bindingInfo, bool bIsComputeShader)ne::DescriptorSetLayoutGeneratorprivatestatic
operator=(const DescriptorSetLayoutGenerator &)=delete (defined in ne::DescriptorSetLayoutGenerator)ne::DescriptorSetLayoutGenerator
+
+ + + + diff --git a/classne_1_1DescriptorSetLayoutGenerator.html b/classne_1_1DescriptorSetLayoutGenerator.html new file mode 100644 index 000000000..f26fea8f3 --- /dev/null +++ b/classne_1_1DescriptorSetLayoutGenerator.html @@ -0,0 +1,350 @@ + + + + + + + +Nameless Engine: ne::DescriptorSetLayoutGenerator Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <DescriptorSetLayoutGenerator.h>

+ + + + + + +

+Classes

struct  Collected
 
struct  Generated
 
+ + + + + +

+Public Member Functions

DescriptorSetLayoutGenerator (const DescriptorSetLayoutGenerator &)=delete
 
+DescriptorSetLayoutGeneratoroperator= (const DescriptorSetLayoutGenerator &)=delete
 
+ + + + + + + +

+Static Public Member Functions

static std::variant< Collected, ErrorcollectInfoFromBytecode (void *pSpirvBytecode, size_t iSizeInBytes)
 
static std::variant< Generated, ErrorgenerateGraphics (VulkanRenderer *pRenderer, GlslShader *pVertexShader, GlslShader *pFragmentShader)
 
static std::variant< Generated, ErrorgenerateCompute (VulkanRenderer *pRenderer, GlslShader *pComputeShader)
 
+ + + +

+Static Private Member Functions

static std::variant< std::pair< VkDescriptorSetLayoutBinding, VkDescriptorBindingFlags >, ErrorgenerateLayoutBinding (uint32_t iBindingIndex, const Collected::DescriptorSetLayoutBindingInfo &bindingInfo, bool bIsComputeShader)
 
+

Detailed Description

+

Generates Descriptor Set Layout based on GLSL code.

+

Member Function Documentation

+ +

◆ collectInfoFromBytecode()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::variant< DescriptorSetLayoutGenerator::Collected, Error > ne::DescriptorSetLayoutGenerator::collectInfoFromBytecode (void * pSpirvBytecode,
size_t iSizeInBytes 
)
+
+static
+
+

Collection information from the specified SPIR-V bytecode that can be used to generate a descriptor set layout.

+
Parameters
+ + + +
pSpirvBytecodeSPIR-V bytecode to analyze.
iSizeInBytesSize of bytecode in bytes.
+
+
+
Returns
Error if something went wrong, otherwise collected info.
+ +
+
+ +

◆ generateCompute()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::variant< DescriptorSetLayoutGenerator::Generated, Error > ne::DescriptorSetLayoutGenerator::generateCompute (VulkanRendererpRenderer,
GlslShaderpComputeShader 
)
+
+static
+
+

Generates a new descriptor layout, pool and descriptor sets using the specified compute shader.

+
Remarks
Expects that descriptor layout information is already collected for both shaders (see collectInfoFromBytecode), otherwise returns error.
+
Parameters
+ + + +
pRendererVulkan renderer.
pComputeShaderCompute shader.
+
+
+
Returns
Error if something went wrong, otherwise generated descriptor layout data.
+ +
+
+ +

◆ generateGraphics()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< DescriptorSetLayoutGenerator::Generated, Error > ne::DescriptorSetLayoutGenerator::generateGraphics (VulkanRendererpRenderer,
GlslShaderpVertexShader,
GlslShaderpFragmentShader 
)
+
+static
+
+

Generates a new descriptor layout, pool and descriptor sets using the specified vertex and fragment shaders.

+
Remarks
Expects that descriptor layout information is already collected for both shaders (see collectInfoFromBytecode), otherwise returns error.
+
Parameters
+ + + + +
pRendererVulkan renderer.
pVertexShaderVertex shader.
pFragmentShaderFragment shader. Specify nullptr to generate descriptor layout only for vertex shader.
+
+
+
Returns
Error if something went wrong, otherwise generated descriptor layout data.
+ +
+
+ +

◆ generateLayoutBinding()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::pair< VkDescriptorSetLayoutBinding, VkDescriptorBindingFlags >, Error > ne::DescriptorSetLayoutGenerator::generateLayoutBinding (uint32_t iBindingIndex,
const Collected::DescriptorSetLayoutBindingInfobindingInfo,
bool bIsComputeShader 
)
+
+staticprivate
+
+

Generates Vulkan layout binding that could be used to create a descriptor set layout.

+
Parameters
+ + + + +
iBindingIndexIndex of the binding that was specified in the GLSL code.
bindingInfoInformation about the GLSL resource used in this binding.
bIsComputeShadertrue if this binding is being generated for a compute shader, otherwise false.
+
+
+
Returns
Error if something went wrong, otherwise generated binding with flags.
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classne_1_1DescriptorSetLayoutGenerator.js b/classne_1_1DescriptorSetLayoutGenerator.js new file mode 100644 index 000000000..53c6d3851 --- /dev/null +++ b/classne_1_1DescriptorSetLayoutGenerator.js @@ -0,0 +1,9 @@ +var classne_1_1DescriptorSetLayoutGenerator = +[ + [ "Collected", "structne_1_1DescriptorSetLayoutGenerator_1_1Collected.html", "structne_1_1DescriptorSetLayoutGenerator_1_1Collected" ], + [ "Generated", "structne_1_1DescriptorSetLayoutGenerator_1_1Generated.html", "structne_1_1DescriptorSetLayoutGenerator_1_1Generated" ], + [ "collectInfoFromBytecode", "classne_1_1DescriptorSetLayoutGenerator.html#a5808697193eca980c68c4e1020c46771", null ], + [ "generateCompute", "classne_1_1DescriptorSetLayoutGenerator.html#aa4a494cb89af4dc2bfdfd96bddbc1712", null ], + [ "generateGraphics", "classne_1_1DescriptorSetLayoutGenerator.html#ab7ad336e157e9fc9aaee7dc5fae40f70", null ], + [ "generateLayoutBinding", "classne_1_1DescriptorSetLayoutGenerator.html#a42e6d69dbd45da013ab4da65a5e3d662", null ] +]; \ No newline at end of file diff --git a/classne_1_1DesktopNotification-members.html b/classne_1_1DesktopNotification-members.html new file mode 100644 index 000000000..9368e448c --- /dev/null +++ b/classne_1_1DesktopNotification-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::DesktopNotification Member List
+
+
+ +

This is the complete list of members for ne::DesktopNotification, including all inherited members.

+ + + + +
error(const std::string &sTitle, const std::string &sText)ne::DesktopNotificationstatic
info(const std::string &sTitle, const std::string &sText)ne::DesktopNotificationstatic
warning(const std::string &sTitle, const std::string &sText)ne::DesktopNotificationstatic
+
+ + + + diff --git a/classne_1_1DesktopNotification.html b/classne_1_1DesktopNotification.html new file mode 100644 index 000000000..3f26e4561 --- /dev/null +++ b/classne_1_1DesktopNotification.html @@ -0,0 +1,262 @@ + + + + + + + +Nameless Engine: ne::DesktopNotification Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::DesktopNotification Class Reference
+
+
+ +

#include <DesktopNotification.h>

+ + + + + + + + +

+Static Public Member Functions

static void info (const std::string &sTitle, const std::string &sText)
 
static void warning (const std::string &sTitle, const std::string &sText)
 
static void error (const std::string &sTitle, const std::string &sText)
 
+

Detailed Description

+

Show desktop notifications (popups).

+

Member Function Documentation

+ +

◆ error()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::DesktopNotification::error (const std::string & sTitle,
const std::string & sText 
)
+
+static
+
+

Show error notification.

+
Parameters
+ + + +
sTitleNotification title.
sTextNotification text (content).
+
+
+ +
+
+ +

◆ info()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::DesktopNotification::info (const std::string & sTitle,
const std::string & sText 
)
+
+static
+
+

Show information notification.

+
Parameters
+ + + +
sTitleNotification title.
sTextNotification text (content).
+
+
+ +
+
+ +

◆ warning()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::DesktopNotification::warning (const std::string & sTitle,
const std::string & sText 
)
+
+static
+
+

Show warning notification.

+
Parameters
+ + + +
sTitleNotification title.
sTextNotification text (content).
+
+
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/misc/DesktopNotification.h
  • +
  • src/engine_lib/private/misc/DesktopNotification.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1DesktopNotification.js b/classne_1_1DesktopNotification.js new file mode 100644 index 000000000..1cc0a1031 --- /dev/null +++ b/classne_1_1DesktopNotification.js @@ -0,0 +1,6 @@ +var classne_1_1DesktopNotification = +[ + [ "error", "classne_1_1DesktopNotification.html#a4b6800bfbe6d91bb6fa6ac9b2e10a419", null ], + [ "info", "classne_1_1DesktopNotification.html#aab9ade90188338b7123e0caf5fc2712d", null ], + [ "warning", "classne_1_1DesktopNotification.html#a7848d7fb797b501873d1afe434391cde", null ] +]; \ No newline at end of file diff --git a/classne_1_1DirectXDescriptor-members.html b/classne_1_1DirectXDescriptor-members.html new file mode 100644 index 000000000..9a37f69b9 --- /dev/null +++ b/classne_1_1DirectXDescriptor-members.html @@ -0,0 +1,127 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::DirectXDescriptor Member List
+
+
+ +

This is the complete list of members for ne::DirectXDescriptor, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
descriptorTypene::DirectXDescriptorprivate
DirectXDescriptor()=delete (defined in ne::DirectXDescriptor)ne::DirectXDescriptor
DirectXDescriptor(const DirectXDescriptor &other)=delete (defined in ne::DirectXDescriptor)ne::DirectXDescriptor
DirectXDescriptor(DirectXDescriptor &&other) noexcept=delete (defined in ne::DirectXDescriptor)ne::DirectXDescriptor
DirectXDescriptor(DirectXDescriptorHeap *pHeap, DirectXDescriptorType descriptorType, DirectXResource *pResource, int iDescriptorOffsetInDescriptors, std::optional< size_t > referencedCubemapFaceIndex, ContinuousDirectXDescriptorRange *pRange=nullptr)ne::DirectXDescriptorprotected
DirectXDescriptorHeap (defined in ne::DirectXDescriptor)ne::DirectXDescriptorfriend
getDescriptorHeap() constne::DirectXDescriptorinline
getDescriptorOffsetInDescriptors() constne::DirectXDescriptorinline
getOwnerResource() constne::DirectXDescriptor
iDescriptorOffsetInDescriptorsne::DirectXDescriptorprivate
operator=(const DirectXDescriptor &other)=delete (defined in ne::DirectXDescriptor)ne::DirectXDescriptor
operator=(DirectXDescriptor &&other) noexcept=delete (defined in ne::DirectXDescriptor)ne::DirectXDescriptor
pHeapne::DirectXDescriptorprivate
pRangene::DirectXDescriptorprivate
pResourcene::DirectXDescriptorprivate
referencedCubemapFaceIndexne::DirectXDescriptorprivate
~DirectXDescriptor()ne::DirectXDescriptor
+
+ + + + diff --git a/classne_1_1DirectXDescriptor.html b/classne_1_1DirectXDescriptor.html new file mode 100644 index 000000000..30d9b0dd9 --- /dev/null +++ b/classne_1_1DirectXDescriptor.html @@ -0,0 +1,476 @@ + + + + + + + +Nameless Engine: ne::DirectXDescriptor Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::DirectXDescriptor Class Reference
+
+
+ +

#include <DirectXDescriptor.h>

+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ~DirectXDescriptor ()
 
DirectXDescriptor (const DirectXDescriptor &other)=delete
 
+DirectXDescriptoroperator= (const DirectXDescriptor &other)=delete
 
DirectXDescriptor (DirectXDescriptor &&other) noexcept=delete
 
+DirectXDescriptoroperator= (DirectXDescriptor &&other) noexcept=delete
 
int getDescriptorOffsetInDescriptors () const
 
DirectXDescriptorHeapgetDescriptorHeap () const
 
DirectXResourcegetOwnerResource () const
 
+ + + +

+Protected Member Functions

 DirectXDescriptor (DirectXDescriptorHeap *pHeap, DirectXDescriptorType descriptorType, DirectXResource *pResource, int iDescriptorOffsetInDescriptors, std::optional< size_t > referencedCubemapFaceIndex, ContinuousDirectXDescriptorRange *pRange=nullptr)
 
+ + + + + + + + + + + + + +

+Private Attributes

int iDescriptorOffsetInDescriptors
 
DirectXResourcepResource = nullptr
 
DirectXDescriptorHeap *const pHeap = nullptr
 
ContinuousDirectXDescriptorRange *const pRange = nullptr
 
const std::optional< size_t > referencedCubemapFaceIndex
 
const DirectXDescriptorType descriptorType
 
+ + + +

+Friends

+class DirectXDescriptorHeap
 
+

Detailed Description

+

Represents a descriptor (to a resource) that is stored in a descriptor heap. Automatically marked as unused in destructor.

+

Constructor & Destructor Documentation

+ +

◆ ~DirectXDescriptor()

+ +
+
+ + + + + + + +
ne::DirectXDescriptor::~DirectXDescriptor ()
+
+

Notifies the heap.

+ +
+
+ +

◆ DirectXDescriptor()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ne::DirectXDescriptor::DirectXDescriptor (DirectXDescriptorHeappHeap,
DirectXDescriptorType descriptorType,
DirectXResourcepResource,
int iDescriptorOffsetInDescriptors,
std::optional< size_t > referencedCubemapFaceIndex,
ContinuousDirectXDescriptorRangepRange = nullptr 
)
+
+protected
+
+

Constructor.

+
Parameters
+ + + + + + + +
pHeapHeap of this descriptor.
descriptorTypeType of this descriptor.
pResourceOwner resource of this descriptor.
iDescriptorOffsetInDescriptorsOffset of this descriptor from the heap start (offset is specified in descriptors, not an actual index).
referencedCubemapFaceIndexSpecify empty if this descriptor does not reference a cubemap, otherwise index of cubemap's face that it references.
pRangeRange that this descriptor was allocated from. nullptr if allocated as a single descriptor (not part of some range).
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getDescriptorHeap()

+ +
+
+ + + + + +
+ + + + + + + +
DirectXDescriptorHeap * ne::DirectXDescriptor::getDescriptorHeap () const
+
+inline
+
+

Returns heap that this descriptor uses.

+
Returns
Descriptor heap.
+ +
+
+ +

◆ getDescriptorOffsetInDescriptors()

+ +
+
+ + + + + +
+ + + + + + + +
int ne::DirectXDescriptor::getDescriptorOffsetInDescriptors () const
+
+inline
+
+

Returns offset of this descriptor from the heap start (offset is specified in descriptors, not an actual index).

+
Returns
Descriptor offset.
+ +
+
+ +

◆ getOwnerResource()

+ +
+
+ + + + + + + +
DirectXResource * ne::DirectXDescriptor::getOwnerResource () const
+
+

Returns resource that owns this descriptor.

+
Returns
Owner resource.
+ +
+
+

Member Data Documentation

+ +

◆ descriptorType

+ +
+
+ + + + + +
+ + + + +
const DirectXDescriptorType ne::DirectXDescriptor::descriptorType
+
+private
+
+

Type of this descriptor.

+ +
+
+ +

◆ iDescriptorOffsetInDescriptors

+ +
+
+ + + + + +
+ + + + +
int ne::DirectXDescriptor::iDescriptorOffsetInDescriptors
+
+private
+
+

Offset of this descriptor from the heap start (offset is specified in descriptors, not an actual index).

+ +
+
+ +

◆ pHeap

+ +
+
+ + + + + +
+ + + + +
DirectXDescriptorHeap* const ne::DirectXDescriptor::pHeap = nullptr
+
+private
+
+

Do not delete. Heap of this descriptor.

+ +
+
+ +

◆ pRange

+ +
+
+ + + + + +
+ + + + +
ContinuousDirectXDescriptorRange* const ne::DirectXDescriptor::pRange = nullptr
+
+private
+
+

Do not delete. Range that allocated this descriptor (nullptr if allocated as a single descriptor).

+ +
+
+ +

◆ pResource

+ +
+
+ + + + + +
+ + + + +
DirectXResource* ne::DirectXDescriptor::pResource = nullptr
+
+private
+
+

Do not delete. Owner resource of this descriptor.

+ +
+
+ +

◆ referencedCubemapFaceIndex

+ +
+
+ + + + + +
+ + + + +
const std::optional<size_t> ne::DirectXDescriptor::referencedCubemapFaceIndex
+
+private
+
+

Not empty if this descriptor references a cubemap's face.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/directx/descriptors/DirectXDescriptor.h
  • +
  • src/engine_lib/private/render/directx/descriptors/DirectXDescriptor.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1DirectXDescriptor.js b/classne_1_1DirectXDescriptor.js new file mode 100644 index 000000000..9c3850135 --- /dev/null +++ b/classne_1_1DirectXDescriptor.js @@ -0,0 +1,14 @@ +var classne_1_1DirectXDescriptor = +[ + [ "~DirectXDescriptor", "classne_1_1DirectXDescriptor.html#aac99e0444589184bf2db2af6d6156d99", null ], + [ "DirectXDescriptor", "classne_1_1DirectXDescriptor.html#a1653dd29d1ee727a98111b7192b438cc", null ], + [ "getDescriptorHeap", "classne_1_1DirectXDescriptor.html#a899e303aa3c9dbe190b97a1ff7a1e472", null ], + [ "getDescriptorOffsetInDescriptors", "classne_1_1DirectXDescriptor.html#a23428da422839a2b3266644047d3fc5d", null ], + [ "getOwnerResource", "classne_1_1DirectXDescriptor.html#a58f7bcabf3e97bb889ed8b26fe212449", null ], + [ "descriptorType", "classne_1_1DirectXDescriptor.html#ad280c5ca971c8006ec6152f2db2cbe44", null ], + [ "iDescriptorOffsetInDescriptors", "classne_1_1DirectXDescriptor.html#a9d96255d7fa015cfb5cf1020e3bd33a2", null ], + [ "pHeap", "classne_1_1DirectXDescriptor.html#abc0548df41567e1682b85d6ec5cc1282", null ], + [ "pRange", "classne_1_1DirectXDescriptor.html#a5723495d27d4b5137adb341ebabaed4d", null ], + [ "pResource", "classne_1_1DirectXDescriptor.html#a23305c4ab8028e3202cfcbedbb4a69a9", null ], + [ "referencedCubemapFaceIndex", "classne_1_1DirectXDescriptor.html#a9edbcff3698ad59c48d8522a4baee0f9", null ] +]; \ No newline at end of file diff --git a/classne_1_1DirectXDescriptorHeap-members.html b/classne_1_1DirectXDescriptorHeap-members.html new file mode 100644 index 000000000..50376fde0 --- /dev/null +++ b/classne_1_1DirectXDescriptorHeap-members.html @@ -0,0 +1,146 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::DirectXDescriptorHeap Member List
+
+
+ +

This is the complete list of members for ne::DirectXDescriptorHeap, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
allocateContinuousDescriptorRange(const std::string &sRangeName, const std::function< void()> &onRangeIndicesChanged)ne::DirectXDescriptorHeap
assignDescriptor(DirectXResource *pResource, DirectXDescriptorType descriptorType, ContinuousDirectXDescriptorRange *pRange=nullptr, bool bBindDescriptorsToCubemapFaces=true)ne::DirectXDescriptorHeapprivate
ContinuousDirectXDescriptorRange (defined in ne::DirectXDescriptorHeap)ne::DirectXDescriptorHeapfriend
convertHeapTypeToString(DescriptorHeapType heapType)ne::DirectXDescriptorHeapprotectedstatic
create(DirectXRenderer *pRenderer, DescriptorHeapType heapType)ne::DirectXDescriptorHeapstatic
createHeap(INT iCapacity, ContinuousDirectXDescriptorRange *pChangedRange)ne::DirectXDescriptorHeapprotected
createView(CD3DX12_CPU_DESCRIPTOR_HANDLE heapHandle, const DirectXResource *pResource, DirectXDescriptorType descriptorType, std::optional< size_t > cubemapFaceIndex) constne::DirectXDescriptorHeapprotected
d3dHeapTypene::DirectXDescriptorHeapprivate
DirectXDescriptor (defined in ne::DirectXDescriptorHeap)ne::DirectXDescriptorHeapfriend
DirectXDescriptorHeap()=delete (defined in ne::DirectXDescriptorHeap)ne::DirectXDescriptorHeap
DirectXDescriptorHeap(const DirectXDescriptorHeap &)=delete (defined in ne::DirectXDescriptorHeap)ne::DirectXDescriptorHeap
DirectXDescriptorHeap(DirectXRenderer *pRenderer, DescriptorHeapType heapType)ne::DirectXDescriptorHeapprotected
DirectXResource (defined in ne::DirectXDescriptorHeap)ne::DirectXDescriptorHeapfriend
expandHeap(ContinuousDirectXDescriptorRange *pChangedRange)ne::DirectXDescriptorHeapprotected
expandRange(ContinuousDirectXDescriptorRange *pRange)ne::DirectXDescriptorHeapprivate
getDescriptorSize() constne::DirectXDescriptorHeapinline
getDescriptorTypesHandledByThisHeap() constne::DirectXDescriptorHeapprotected
getHeapCapacity()ne::DirectXDescriptorHeap
getHeapGrowSize()ne::DirectXDescriptorHeapinlinestatic
getHeapSize()ne::DirectXDescriptorHeap
getInternalData()ne::DirectXDescriptorHeapinline
getInternalHeap() constne::DirectXDescriptorHeapinline
getNoLongerUsedDescriptorCount()ne::DirectXDescriptorHeap
heapTypene::DirectXDescriptorHeapprivate
iDescriptorSizene::DirectXDescriptorHeapprivate
iHeapGrowSizene::DirectXDescriptorHeapprivatestatic
isShrinkingPossible(INT iSize, INT iCapacity, INT iGrowSize)ne::DirectXDescriptorHeapprivatestatic
mtxInternalDatane::DirectXDescriptorHeapprivate
onDescriptorBeingDestroyed(DirectXDescriptor *pDescriptor, ContinuousDirectXDescriptorRange *pRange=nullptr)ne::DirectXDescriptorHeapprotected
onDescriptorRangeBeingDestroyed(ContinuousDirectXDescriptorRange *pRange)ne::DirectXDescriptorHeapprotected
operator=(const DirectXDescriptorHeap &)=delete (defined in ne::DirectXDescriptorHeap)ne::DirectXDescriptorHeap
pRendererne::DirectXDescriptorHeapprivate
rebindViewsUpdateIndices()ne::DirectXDescriptorHeapprotected
sHeapTypene::DirectXDescriptorHeapprivate
shrinkHeapIfPossible(ContinuousDirectXDescriptorRange *pChangedRange)ne::DirectXDescriptorHeapprotected
~DirectXDescriptorHeap()ne::DirectXDescriptorHeap
+
+ + + + diff --git a/classne_1_1DirectXDescriptorHeap.html b/classne_1_1DirectXDescriptorHeap.html new file mode 100644 index 000000000..98974738f --- /dev/null +++ b/classne_1_1DirectXDescriptorHeap.html @@ -0,0 +1,1200 @@ + + + + + + + +Nameless Engine: ne::DirectXDescriptorHeap Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <DirectXDescriptorHeap.h>

+ + + + +

+Classes

struct  InternalData
 
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

DirectXDescriptorHeap (const DirectXDescriptorHeap &)=delete
 
+DirectXDescriptorHeapoperator= (const DirectXDescriptorHeap &)=delete
 
 ~DirectXDescriptorHeap ()
 
std::variant< std::unique_ptr< ContinuousDirectXDescriptorRange >, ErrorallocateContinuousDescriptorRange (const std::string &sRangeName, const std::function< void()> &onRangeIndicesChanged)
 
INT getHeapCapacity ()
 
INT getHeapSize ()
 
size_t getNoLongerUsedDescriptorCount ()
 
UINT getDescriptorSize () const
 
ID3D12DescriptorHeap * getInternalHeap () const
 
std::pair< std::recursive_mutex, InternalData > * getInternalData ()
 
+ + + + + +

+Static Public Member Functions

static constexpr INT getHeapGrowSize ()
 
static std::variant< std::unique_ptr< DirectXDescriptorHeap >, Errorcreate (DirectXRenderer *pRenderer, DescriptorHeapType heapType)
 
+ + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

 DirectXDescriptorHeap (DirectXRenderer *pRenderer, DescriptorHeapType heapType)
 
void onDescriptorBeingDestroyed (DirectXDescriptor *pDescriptor, ContinuousDirectXDescriptorRange *pRange=nullptr)
 
void onDescriptorRangeBeingDestroyed (ContinuousDirectXDescriptorRange *pRange)
 
void createView (CD3DX12_CPU_DESCRIPTOR_HANDLE heapHandle, const DirectXResource *pResource, DirectXDescriptorType descriptorType, std::optional< size_t > cubemapFaceIndex) const
 
std::optional< ErrorexpandHeap (ContinuousDirectXDescriptorRange *pChangedRange)
 
std::variant< bool, ErrorshrinkHeapIfPossible (ContinuousDirectXDescriptorRange *pChangedRange)
 
std::optional< ErrorcreateHeap (INT iCapacity, ContinuousDirectXDescriptorRange *pChangedRange)
 
std::vector< DirectXDescriptorType > getDescriptorTypesHandledByThisHeap () const
 
std::optional< ErrorrebindViewsUpdateIndices ()
 
+ + + +

+Static Protected Member Functions

static std::string convertHeapTypeToString (DescriptorHeapType heapType)
 
+ + + + + +

+Private Member Functions

std::optional< ErrorassignDescriptor (DirectXResource *pResource, DirectXDescriptorType descriptorType, ContinuousDirectXDescriptorRange *pRange=nullptr, bool bBindDescriptorsToCubemapFaces=true)
 
std::optional< ErrorexpandRange (ContinuousDirectXDescriptorRange *pRange)
 
+ + + +

+Static Private Member Functions

static bool isShrinkingPossible (INT iSize, INT iCapacity, INT iGrowSize)
 
+ + + + + + + + + + + + + +

+Private Attributes

DirectXRendererpRenderer
 
std::pair< std::recursive_mutex, InternalDatamtxInternalData
 
UINT iDescriptorSize = 0
 
DescriptorHeapType heapType
 
std::string sHeapType
 
D3D12_DESCRIPTOR_HEAP_TYPE d3dHeapType
 
+ + + +

+Static Private Attributes

static constexpr INT iHeapGrowSize = 300
 
+ + + + + + + +

+Friends

+class DirectXDescriptor
 
+class ContinuousDirectXDescriptorRange
 
+class DirectXResource
 
+

Detailed Description

+

Represents a descriptor heap.

+

Constructor & Destructor Documentation

+ +

◆ ~DirectXDescriptorHeap()

+ +
+
+ + + + + + + +
ne::DirectXDescriptorHeap::~DirectXDescriptorHeap ()
+
+

Makes sure no descriptor or range exists.

+ +
+
+ +

◆ DirectXDescriptorHeap()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ne::DirectXDescriptorHeap::DirectXDescriptorHeap (DirectXRendererpRenderer,
DescriptorHeapType heapType 
)
+
+protected
+
+

Constructor.

+
Parameters
+ + + +
pRendererDirectX renderer that owns this manager.
heapTypeType of the heap.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ allocateContinuousDescriptorRange()

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< ContinuousDirectXDescriptorRange >, Error > ne::DirectXDescriptorHeap::allocateContinuousDescriptorRange (const std::string & sRangeName,
const std::function< void()> & onRangeIndicesChanged 
)
+
+

Allocates a continuous range of descriptors that can be used for bindless bindings of descriptor arrays.

+
Parameters
+ + + +
sRangeNameName of the range (used for logging).
onRangeIndicesChangedCallback that will be called after the range was moved in the heap due to things like heap expand/shrink.
+
+
+
Returns
Error if something went wrong, otherwise allocated descriptor range.
+ +
+
+ +

◆ assignDescriptor()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::DirectXDescriptorHeap::assignDescriptor (DirectXResourcepResource,
DirectXDescriptorType descriptorType,
ContinuousDirectXDescriptorRangepRange = nullptr,
bool bBindDescriptorsToCubemapFaces = true 
)
+
+private
+
+

Creates a new descriptor that points to the given resource, the descriptor is saved in the resource.

+
Remarks
You can use this function to assign a different descriptor to already created resource. For example: create SRV resource using resource manager and use RTV heap to assign a RTV descriptor to this resource so it will have 2 different descriptors.
+
Parameters
+ + + + + +
pResourceResource to point new descriptor to.
descriptorTypeType of the new descriptor.
pRangeSpecify in order to allocate a descriptor from this range.
bBindDescriptorsToCubemapFacesIf this resource is a cubemap, specify true to also bind descriptors that reference specific cubemap faces, specify false to only bind 1 descriptor that references the entire resource.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ convertHeapTypeToString()

+ +
+
+ + + + + +
+ + + + + + + + +
std::string ne::DirectXDescriptorHeap::convertHeapTypeToString (DescriptorHeapType heapType)
+
+staticprotected
+
+

Converts heap type to string.

+
Parameters
+ + +
heapTypeHeap type to convert to text.
+
+
+
Returns
Heap type text.
+ +
+
+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< DirectXDescriptorHeap >, Error > ne::DirectXDescriptorHeap::create (DirectXRendererpRenderer,
DescriptorHeapType heapType 
)
+
+static
+
+

Creates a new manager that controls a specific heap.

+
Parameters
+ + + +
pRendererDirectX renderer that owns this manager.
heapTypeHeap type that this manager will control.
+
+
+
Returns
Error if something went wrong, otherwise pointer to the manager.
+ +
+
+ +

◆ createHeap()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::DirectXDescriptorHeap::createHeap (INT iCapacity,
ContinuousDirectXDescriptorRangepChangedRange 
)
+
+protected
+
+

(Re)creates the heap with the specified capacity.

+
Remarks
Only updates the heap resource, internal capacity and updates old descriptors (if any), other internal values are not changed and should be corrected afterwards.
+
Parameters
+ + + +
iCapacitySize of the heap (in descriptors).
pChangedRangeIf this event was caused by changes in descriptor range, specify one for logging purposes.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ createView()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ne::DirectXDescriptorHeap::createView (CD3DX12_CPU_DESCRIPTOR_HANDLE heapHandle,
const DirectXResourcepResource,
DirectXDescriptorType descriptorType,
std::optional< size_t > cubemapFaceIndex 
) const
+
+protected
+
+

Creates a new view using the specified descriptor handle that will point to the specified resource.

+
Parameters
+ + + + + +
heapHandleA place in the heap to create view.
pResourceResource to bind to the new view.
descriptorTypeDescriptor type.
cubemapFaceIndexSpecify empty if creating a view for the entire resource, otherwise specify index of the cubemap face to bind the descriptor to.
+
+
+ +
+
+ +

◆ expandHeap()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::DirectXDescriptorHeap::expandHeap (ContinuousDirectXDescriptorRangepChangedRange)
+
+protected
+
+

Re-creates the heap to expand its capacity to support iHeapGrowSize more descriptors.

+
Remarks
All internal values and old descriptors will be updated.
+
Parameters
+ + +
pChangedRangeIf this event was caused by changes in descriptor range, specify one for logging purposes.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ expandRange()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::DirectXDescriptorHeap::expandRange (ContinuousDirectXDescriptorRangepRange)
+
+private
+
+

Expands the specified descriptor range and expands or re-creates the heap to support updated range.

+
Parameters
+ + +
pRangeRange to expand.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ getDescriptorSize()

+ +
+
+ + + + + +
+ + + + + + + +
UINT ne::DirectXDescriptorHeap::getDescriptorSize () const
+
+inline
+
+

Returns size of one descriptor in this heap.

+
Returns
Descriptor size.
+ +
+
+ +

◆ getDescriptorTypesHandledByThisHeap()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< DirectXDescriptorType > ne::DirectXDescriptorHeap::getDescriptorTypesHandledByThisHeap () const
+
+protected
+
+

Returns an array of descriptor types that this heap handles. For example: for RTV heap it will only be RTV descriptor type, for DSV - DSV, for CBV/UAV/SRV heap it will be CBV, UAV and SRV (3 types).

+
Returns
Descriptor types that this heap handles.
+ +
+
+ +

◆ getHeapCapacity()

+ +
+
+ + + + + + + +
INT ne::DirectXDescriptorHeap::getHeapCapacity ()
+
+

Returns current heap capacity (allocated heap size).

+

This function is used for engine testing and generally should not be used outside of testing.

+
Returns
Heap capacity.
+ +
+
+ +

◆ getHeapGrowSize()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr INT ne::DirectXDescriptorHeap::getHeapGrowSize ()
+
+inlinestaticconstexpr
+
+

Returns grow/shrink size for the heap.

+
Returns
Grow/shrink size.
+ +
+
+ +

◆ getHeapSize()

+ +
+
+ + + + + + + +
INT ne::DirectXDescriptorHeap::getHeapSize ()
+
+

Returns current heap size (actually used heap size).

+

This function is used for engine testing and generally should not be used outside of testing.

+
Returns
Heap size.
+ +
+
+ +

◆ getInternalData()

+ +
+
+ + + + + +
+ + + + + + + +
std::pair< std::recursive_mutex, InternalData > * ne::DirectXDescriptorHeap::getInternalData ()
+
+inline
+
+

Returns internal data of the object.

+
Warning
Only used for read-only purposes of automated-tests.
+
Returns
Internal data.
+ +
+
+ +

◆ getInternalHeap()

+ +
+
+ + + + + +
+ + + + + + + +
ID3D12DescriptorHeap * ne::DirectXDescriptorHeap::getInternalHeap () const
+
+inline
+
+

Returns internal DirectX heap.

+
Returns
DirectX heap.
+ +
+
+ +

◆ getNoLongerUsedDescriptorCount()

+ +
+
+ + + + + + + +
size_t ne::DirectXDescriptorHeap::getNoLongerUsedDescriptorCount ()
+
+

Returns amount of descriptors that were created but no longer being used.

+
Returns
Descriptor count.
+ +
+
+ +

◆ isShrinkingPossible()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool ne::DirectXDescriptorHeap::isShrinkingPossible (INT iSize,
INT iCapacity,
INT iGrowSize 
)
+
+staticprivate
+
+

Checks shrink condition: if capacity can be decremented by grow size with the current size.

+
Parameters
+ + + + +
iSizeCurrent size.
iCapacityCurrent capacity.
iGrowSizeGrow/shrink size. Expected to be even.
+
+
+
Returns
true if capacity can be decremented by one grow size, false if not yet.
+ +
+
+ +

◆ onDescriptorBeingDestroyed()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::DirectXDescriptorHeap::onDescriptorBeingDestroyed (DirectXDescriptorpDescriptor,
ContinuousDirectXDescriptorRangepRange = nullptr 
)
+
+protected
+
+

Marks resource descriptor as no longer being used so the descriptor's index can be reused by some other descriptor.

+
Remarks
Called from DirectXDescriptor destructor.
+
Parameters
+ + + +
pDescriptorDescriptor that is being destroyed.
pRangeRange that allocated the descriptor (if the descriptor was allocated from a range).
+
+
+ +
+
+ +

◆ onDescriptorRangeBeingDestroyed()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::DirectXDescriptorHeap::onDescriptorRangeBeingDestroyed (ContinuousDirectXDescriptorRangepRange)
+
+protected
+
+

Notifies the heap about some range being destroyed.

+
Remarks
Called from range destructor.
+
Parameters
+ + +
pRangeRange that is being destroyed.
+
+
+ +
+
+ +

◆ rebindViewsUpdateIndices()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::DirectXDescriptorHeap::rebindViewsUpdateIndices ()
+
+protected
+
+

Recreates views for previously created descriptors so that they will reference the new re-created heap and reference the correct index inside of the heap.

+
Remarks
Also updates next free descriptor index and queue of unused indices.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ shrinkHeapIfPossible()

+ +
+
+ + + + + +
+ + + + + + + + +
std::variant< bool, Error > ne::DirectXDescriptorHeap::shrinkHeapIfPossible (ContinuousDirectXDescriptorRangepChangedRange)
+
+protected
+
+

Checks if the heap can be shrinked (based on the current internal state mtxInternalData) and if possible re-creates the heap to shrink its capacity to support iHeapGrowSize less descriptors.

+
Remarks
All internal values and old descriptors will be updated.
+
Parameters
+ + +
pChangedRangeIf this event was caused by changes in descriptor range, specify one for logging purposes.
+
+
+
Returns
Error if something went wrong, otherwise true if heap was shrinked, false if no shrinking is needed yet.
+ +
+
+

Member Data Documentation

+ +

◆ d3dHeapType

+ +
+
+ + + + + +
+ + + + +
D3D12_DESCRIPTOR_HEAP_TYPE ne::DirectXDescriptorHeap::d3dHeapType
+
+private
+
+

Direct3D type of this heap.

+ +
+
+ +

◆ heapType

+ +
+
+ + + + + +
+ + + + +
DescriptorHeapType ne::DirectXDescriptorHeap::heapType
+
+private
+
+

Type of the heap.

+ +
+
+ +

◆ iDescriptorSize

+ +
+
+ + + + + +
+ + + + +
UINT ne::DirectXDescriptorHeap::iDescriptorSize = 0
+
+private
+
+

Size of one descriptor.

+ +
+
+ +

◆ iHeapGrowSize

+ +
+
+ + + + + +
+ + + + +
constexpr INT ne::DirectXDescriptorHeap::iHeapGrowSize = 300
+
+staticconstexprprivate
+
+

Number of descriptors to add to the heap when there is no more free space left.

+ +
+
+ +

◆ mtxInternalData

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, InternalData> ne::DirectXDescriptorHeap::mtxInternalData
+
+private
+
+

Descriptor heap internal resources.

+ +
+
+ +

◆ pRenderer

+ +
+
+ + + + + +
+ + + + +
DirectXRenderer* ne::DirectXDescriptorHeap::pRenderer
+
+private
+
+

Do not delete. Owner renderer.

+ +
+
+ +

◆ sHeapType

+ +
+
+ + + + + +
+ + + + +
std::string ne::DirectXDescriptorHeap::sHeapType
+
+private
+
+

String version of heap type (used for logging).

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/directx/descriptors/DirectXDescriptorHeap.h
  • +
  • src/engine_lib/private/render/directx/descriptors/DirectXDescriptorHeap.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1DirectXDescriptorHeap.js b/classne_1_1DirectXDescriptorHeap.js new file mode 100644 index 000000000..146a9f612 --- /dev/null +++ b/classne_1_1DirectXDescriptorHeap.js @@ -0,0 +1,34 @@ +var classne_1_1DirectXDescriptorHeap = +[ + [ "InternalData", "structne_1_1DirectXDescriptorHeap_1_1InternalData.html", "structne_1_1DirectXDescriptorHeap_1_1InternalData" ], + [ "~DirectXDescriptorHeap", "classne_1_1DirectXDescriptorHeap.html#a7cdcaa8bf2f6be6e4c1d063079042d9f", null ], + [ "DirectXDescriptorHeap", "classne_1_1DirectXDescriptorHeap.html#a4180de8457a89d357473ebd7d1c218ab", null ], + [ "allocateContinuousDescriptorRange", "classne_1_1DirectXDescriptorHeap.html#ab42d4fafa16c177531598a10ed00c8af", null ], + [ "assignDescriptor", "classne_1_1DirectXDescriptorHeap.html#aa22837b542496371413ae59dc1078cf2", null ], + [ "convertHeapTypeToString", "classne_1_1DirectXDescriptorHeap.html#a03fea39d2e3f0d752f285b623f2ebdcc", null ], + [ "create", "classne_1_1DirectXDescriptorHeap.html#a0d29feace5aaf5fb2951bec7b4c0d3a3", null ], + [ "createHeap", "classne_1_1DirectXDescriptorHeap.html#af2e838b499904e1cda555aca59be14e3", null ], + [ "createView", "classne_1_1DirectXDescriptorHeap.html#ae620d73736459a50de75807f8ea4d5a6", null ], + [ "expandHeap", "classne_1_1DirectXDescriptorHeap.html#ab67c669279ff6c6779b5943a6678d245", null ], + [ "expandRange", "classne_1_1DirectXDescriptorHeap.html#a4fc8e9f42963ca0db93b71232e50cd75", null ], + [ "getDescriptorSize", "classne_1_1DirectXDescriptorHeap.html#a962349564c7a269466e7eb7d9be5dece", null ], + [ "getDescriptorTypesHandledByThisHeap", "classne_1_1DirectXDescriptorHeap.html#a7ea4e5d3212c4304e674cb7777e483cd", null ], + [ "getHeapCapacity", "classne_1_1DirectXDescriptorHeap.html#aeb1c71536a10ff8b86c8240f5fab61ae", null ], + [ "getHeapGrowSize", "classne_1_1DirectXDescriptorHeap.html#a23c0364843a97bb4862760b6f521a579", null ], + [ "getHeapSize", "classne_1_1DirectXDescriptorHeap.html#a0001e8830f2783b006c1659a7d6805f4", null ], + [ "getInternalData", "classne_1_1DirectXDescriptorHeap.html#ab3a024bf67085d61777247dd20a52e2b", null ], + [ "getInternalHeap", "classne_1_1DirectXDescriptorHeap.html#ae55ad33f9d3df0e5305c788d23fe3ef8", null ], + [ "getNoLongerUsedDescriptorCount", "classne_1_1DirectXDescriptorHeap.html#acd26be333f36c68a8e50c527ba21d6cb", null ], + [ "isShrinkingPossible", "classne_1_1DirectXDescriptorHeap.html#aa60448ca77ae760185fb335c27055ba0", null ], + [ "onDescriptorBeingDestroyed", "classne_1_1DirectXDescriptorHeap.html#a2f77d06c9122f0badd958b8ee5efc88e", null ], + [ "onDescriptorRangeBeingDestroyed", "classne_1_1DirectXDescriptorHeap.html#a0817166531ea8947342962e195ab98d4", null ], + [ "rebindViewsUpdateIndices", "classne_1_1DirectXDescriptorHeap.html#ade3f95e4e392a02ffb9c44c493063e50", null ], + [ "shrinkHeapIfPossible", "classne_1_1DirectXDescriptorHeap.html#a65b75fd5fba26eb90482730d7636079d", null ], + [ "d3dHeapType", "classne_1_1DirectXDescriptorHeap.html#a421fc2ff7dde83239ddaa608e80759ad", null ], + [ "heapType", "classne_1_1DirectXDescriptorHeap.html#ab2522511d156c74628a0dd5b09c4a666", null ], + [ "iDescriptorSize", "classne_1_1DirectXDescriptorHeap.html#ae40c806a0fbaa2c14c771573cba5541b", null ], + [ "iHeapGrowSize", "classne_1_1DirectXDescriptorHeap.html#af1077548bbd695a09d0805a69881f463", null ], + [ "mtxInternalData", "classne_1_1DirectXDescriptorHeap.html#ab1d2ab617880d628ef21750774779bf2", null ], + [ "pRenderer", "classne_1_1DirectXDescriptorHeap.html#a1d2182a2b5b1da00959c472431d0ef5e", null ], + [ "sHeapType", "classne_1_1DirectXDescriptorHeap.html#a4b93027e11cc694ad917892352412563", null ] +]; \ No newline at end of file diff --git a/classne_1_1DirectXPso-members.html b/classne_1_1DirectXPso-members.html new file mode 100644 index 000000000..5c1d7a5d2 --- /dev/null +++ b/classne_1_1DirectXPso-members.html @@ -0,0 +1,164 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::DirectXPso Member List
+
+
+ +

This is the complete list of members for ne::DirectXPso, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addShader(const std::string &sShaderName)ne::ShaderUserprotected
bindGlobalShaderResourceViews(const ComPtr< ID3D12GraphicsCommandList > &pCommandList, size_t iCurrentFrameResourceIndex) constne::DirectXPsoinlineprivate
combineShaderNames(std::string_view sVertexShaderName, std::string_view sPixelShaderName, std::string_view sComputeShaderName="")ne::Pipelinestatic
createComputePipeline(Renderer *pRenderer, PipelineManager *pPipelineManager, const std::string &sComputeShaderName)ne::Pipelineprivatestatic
createComputePso(Renderer *pRenderer, PipelineManager *pPipelineManager, const std::string &sComputeShaderName)ne::DirectXPsostatic
createGraphicsPipeline(Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration)ne::Pipelineprivatestatic
createGraphicsPso(Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration)ne::DirectXPsostatic
DirectXPso()=delete (defined in ne::DirectXPso)ne::DirectXPso
DirectXPso(const DirectXPso &)=delete (defined in ne::DirectXPso)ne::DirectXPso
DirectXPso(Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration)ne::DirectXPsoexplicitprivate
DirectXRenderer (defined in ne::DirectXPso)ne::DirectXPsofriend
findShader(ShaderType shaderType)ne::ShaderUserprotected
generateComputePso()ne::DirectXPsoprivate
generateGraphicsPso()ne::DirectXPsoprivate
getConfiguration() constne::Pipeline
getCurrentShaderConfiguration(ShaderType shaderType)ne::Pipeline
getInternalResources()ne::DirectXPsoinline
getMaterialsThatUseThisPipeline()ne::Pipeline
getPipelineIdentifier() constne::Pipeline
getRenderer() constne::Pipeline
getRootParameterIndex(const std::string &sShaderResourceName)ne::DirectXPso
getShaderConstants()ne::Pipeline
getUintConstantOffset(const std::string &sConstantName)ne::Pipeline
mtxAssignedShadersne::ShaderUserprivate
mtxComputeShadersThatUseThisPipelinene::Pipelineprivate
mtxInternalResourcesne::DirectXPsoprivate
mtxMaterialsThatUseThisPipelinene::Pipelineprivate
mtxShaderConstantsDatane::Pipelineprivate
onComputeShaderNoLongerUsingPipeline(ComputeShaderInterface *pComputeShaderInterface)ne::Pipelineprivate
onComputeShaderUsingPipeline(ComputeShaderInterface *pComputeShaderInterface)ne::Pipelineprivate
onMaterialNoLongerUsingPipeline(Material *pMaterial)ne::Pipelineprivate
onMaterialUsingPipeline(Material *pMaterial)ne::Pipelineprivate
operator=(const DirectXPso &)=delete (defined in ne::DirectXPso)ne::DirectXPso
operator=(const Pipeline &)=delete (defined in ne::Pipeline)ne::Pipeline
operator=(const ShaderUser &)=delete (defined in ne::ShaderUser)ne::ShaderUser
Pipeline()=delete (defined in ne::Pipeline)ne::Pipeline
Pipeline(const Pipeline &)=delete (defined in ne::Pipeline)ne::Pipeline
Pipeline(Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration)ne::Pipelineexplicitprotected
pPipelineConfigurationne::Pipelineprivate
pPipelineManagerne::Pipelineprivate
pRendererne::Pipelineprivate
pShaderManagerne::ShaderUserprivate
releaseInternalResources() overridene::DirectXPsoprotectedvirtual
releaseShader(const std::string &sShaderName) constne::ShaderUserprivate
restoreInternalResources() overridene::DirectXPsoprotectedvirtual
saveUsedShaderConfiguration(ShaderType shaderType, std::set< ShaderMacro > &&fullConfiguration)ne::Pipelineprotected
setShaderConstants(const std::unordered_map< std::string, size_t > &uintConstantsOffsets)ne::Pipelineprotected
ShaderUser()=delete (defined in ne::ShaderUser)ne::ShaderUser
ShaderUser(const ShaderUser &)=delete (defined in ne::ShaderUser)ne::ShaderUser
ShaderUser(ShaderManager *pShaderManager)ne::ShaderUserprotected
usedShaderConfigurationne::Pipelineprivate
~DirectXPso() override (defined in ne::DirectXPso)ne::DirectXPsovirtual
~Pipeline() override=default (defined in ne::Pipeline)ne::Pipelinevirtual
~ShaderUser()ne::ShaderUserprotectedvirtual
+
+ + + + diff --git a/classne_1_1DirectXPso.html b/classne_1_1DirectXPso.html new file mode 100644 index 000000000..f319419b0 --- /dev/null +++ b/classne_1_1DirectXPso.html @@ -0,0 +1,637 @@ + + + + + + + +Nameless Engine: ne::DirectXPso Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <DirectXPso.h>

+
+Inheritance diagram for ne::DirectXPso:
+
+
+ + +ne::Pipeline +ne::ShaderUser + +
+ + + + +

+Classes

struct  InternalResources
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

DirectXPso (const DirectXPso &)=delete
 
+DirectXPsooperator= (const DirectXPso &)=delete
 
std::variant< unsigned int, ErrorgetRootParameterIndex (const std::string &sShaderResourceName)
 
std::pair< std::recursive_mutex, InternalResources > * getInternalResources ()
 
- Public Member Functions inherited from ne::Pipeline
Pipeline (const Pipeline &)=delete
 
+Pipelineoperator= (const Pipeline &)=delete
 
std::optional< std::set< ShaderMacro > > getCurrentShaderConfiguration (ShaderType shaderType)
 
std::variant< size_t, ErrorgetUintConstantOffset (const std::string &sConstantName)
 
std::pair< std::mutex, std::unordered_set< Material * > > * getMaterialsThatUseThisPipeline ()
 
std::string getPipelineIdentifier () const
 
RenderergetRenderer () const
 
const PipelineConfigurationgetConfiguration () const
 
std::pair< std::mutex, std::optional< ShaderConstantsData > > * getShaderConstants ()
 
- Public Member Functions inherited from ne::ShaderUser
ShaderUser (const ShaderUser &)=delete
 
+ShaderUseroperator= (const ShaderUser &)=delete
 
+ + + + + + + + +

+Static Public Member Functions

static std::variant< std::shared_ptr< DirectXPso >, ErrorcreateGraphicsPso (Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration)
 
static std::variant< std::shared_ptr< DirectXPso >, ErrorcreateComputePso (Renderer *pRenderer, PipelineManager *pPipelineManager, const std::string &sComputeShaderName)
 
- Static Public Member Functions inherited from ne::Pipeline
static std::string combineShaderNames (std::string_view sVertexShaderName, std::string_view sPixelShaderName, std::string_view sComputeShaderName="")
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual std::optional< ErrorreleaseInternalResources () override
 
virtual std::optional< ErrorrestoreInternalResources () override
 
- Protected Member Functions inherited from ne::Pipeline
 Pipeline (Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration)
 
void saveUsedShaderConfiguration (ShaderType shaderType, std::set< ShaderMacro > &&fullConfiguration)
 
virtual std::optional< ErrorreleaseInternalResources ()=0
 
virtual std::optional< ErrorrestoreInternalResources ()=0
 
void setShaderConstants (const std::unordered_map< std::string, size_t > &uintConstantsOffsets)
 
- Protected Member Functions inherited from ne::ShaderUser
 ShaderUser (ShaderManager *pShaderManager)
 
virtual ~ShaderUser ()
 
bool addShader (const std::string &sShaderName)
 
ShaderPackfindShader (ShaderType shaderType)
 
+ + + + + + + + + +

+Private Member Functions

 DirectXPso (Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration)
 
void bindGlobalShaderResourceViews (const ComPtr< ID3D12GraphicsCommandList > &pCommandList, size_t iCurrentFrameResourceIndex) const
 
std::optional< ErrorgenerateGraphicsPso ()
 
std::optional< ErrorgenerateComputePso ()
 
+ + + +

+Private Attributes

std::pair< std::recursive_mutex, InternalResourcesmtxInternalResources
 
+ + + +

+Friends

+class DirectXRenderer
 
+

Detailed Description

+

DirectX pipeline state object (PSO) wrapper.

+

Constructor & Destructor Documentation

+ +

◆ DirectXPso()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ne::DirectXPso::DirectXPso (RendererpRenderer,
PipelineManagerpPipelineManager,
std::unique_ptr< PipelineConfigurationpPipelineConfiguration 
)
+
+explicitprivate
+
+

Constructs uninitialized pipeline.

+
Parameters
+ + + + +
pRendererUsed renderer.
pPipelineManagerPipeline manager that owns this PSO.
pPipelineConfigurationSettings and usage details.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ bindGlobalShaderResourceViews()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::DirectXPso::bindGlobalShaderResourceViews (const ComPtr< ID3D12GraphicsCommandList > & pCommandList,
size_t iCurrentFrameResourceIndex 
) const
+
+inlineprivate
+
+

Sets views of global shader resource bindings.

+
Warning
Expects that the pipeline's internal resources mutex is already locked by the caller.
+
Parameters
+ + + +
pCommandListCommand list to set views to.
iCurrentFrameResourceIndexIndex of the frame resource that is currently being used to submit a new frame.
+
+
+ +
+
+ +

◆ createComputePso()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::shared_ptr< DirectXPso >, Error > ne::DirectXPso::createComputePso (RendererpRenderer,
PipelineManagerpPipelineManager,
const std::string & sComputeShaderName 
)
+
+static
+
+

Assigns compute shader to create a compute PSO.

+
Parameters
+ + + + +
pRendererUsed renderer.
pPipelineManagerPipeline manager that owns this PSO.
sComputeShaderNameName of the compiled compute shader (see ShaderManager::compileShaders).
+
+
+
Returns
Error if shader was not found in ShaderManager or if failed to generate PSO, otherwise created PSO.
+ +
+
+ +

◆ createGraphicsPso()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::shared_ptr< DirectXPso >, Error > ne::DirectXPso::createGraphicsPso (RendererpRenderer,
PipelineManagerpPipelineManager,
std::unique_ptr< PipelineConfigurationpPipelineConfiguration 
)
+
+static
+
+

Assigns vertex and pixel shaders to create a graphics PSO (for usual rendering).

+
Parameters
+ + + + +
pRendererUsed renderer.
pPipelineManagerPipeline manager that owns this PSO.
pPipelineConfigurationSettings that determine pipeline usage and usage details.
+
+
+
Returns
Error if one or both were not found in ShaderManager or if failed to generate PSO, otherwise created PSO.
+ +
+
+ +

◆ generateComputePso()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::DirectXPso::generateComputePso ()
+
+private
+
+

(Re)generates DirectX compute pipeline state object.

+
Warning
If a shader of some type was already added it will be replaced with the new one. When shader is replaced the old shader gets freed from the memory and a new PSO is immediately generated. Make sure the GPU is not using old shader/PSO.
+
Returns
Error if failed to generate PSO.
+ +
+
+ +

◆ generateGraphicsPso()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::DirectXPso::generateGraphicsPso ()
+
+private
+
+

(Re)generates DirectX graphics pipeline state object.

+
Warning
If a shader of some type was already added it will be replaced with the new one. When shader is replaced the old shader gets freed from the memory and a new PSO is immediately generated. Make sure the GPU is not using old shader/PSO.
+
Returns
Error if failed to generate PSO.
+ +
+
+ +

◆ getInternalResources()

+ +
+
+ + + + + +
+ + + + + + + +
std::pair< std::recursive_mutex, InternalResources > * ne::DirectXPso::getInternalResources ()
+
+inline
+
+

Returns internal resources that this PSO uses.

+
Returns
Internal resources.
+ +
+
+ +

◆ getRootParameterIndex()

+ +
+
+ + + + + + + + +
std::variant< unsigned int, Error > ne::DirectXPso::getRootParameterIndex (const std::string & sShaderResourceName)
+
+

Looks for a root parameter that is used for a shader resource with the specified name.

+
Parameters
+ + +
sShaderResourceNameShader resource name (from the shader code) to look for.
+
+
+
Returns
Error if something went wrong, otherwise root parameter index of the resource with the specified name.
+ +
+
+ +

◆ releaseInternalResources()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::DirectXPso::releaseInternalResources ()
+
+overrideprotectedvirtual
+
+

Releases internal resources such as root signature or descriptor layout, internal pipeline object and etc.

+
Warning
Expects that the GPU is not referencing this Pipeline (command queue is empty) and that no drawing will occur until restoreInternalResources is called.
+
Remarks
Typically used before (!) changing something in the pipeline. Often it's a shader configuration change due to a change in some settings, for example when a material that uses this pipeline requested to use a diffuse texture, thus we need to define a "use diffuse texture" shader macro and for that we change the shader variant.
+
Returns
Error if something went wrong.
+ +

Implements ne::Pipeline.

+ +
+
+ +

◆ restoreInternalResources()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::DirectXPso::restoreInternalResources ()
+
+overrideprotectedvirtual
+
+

Creates internal resources using the current shader configuration.

+
Remarks
Called after releaseInternalResources to create resources that will now reference changed (new) resources.
+
Returns
Error if something went wrong.
+ +

Implements ne::Pipeline.

+ +
+
+

Member Data Documentation

+ +

◆ mtxInternalResources

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, InternalResources> ne::DirectXPso::mtxInternalResources
+
+private
+
+

Internal resources. Must be used with mutex when changing.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/directx/pipeline/DirectXPso.h
  • +
  • src/engine_lib/private/render/directx/pipeline/DirectXPso.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1DirectXPso.js b/classne_1_1DirectXPso.js new file mode 100644 index 000000000..32e386f5d --- /dev/null +++ b/classne_1_1DirectXPso.js @@ -0,0 +1,15 @@ +var classne_1_1DirectXPso = +[ + [ "InternalResources", "structne_1_1DirectXPso_1_1InternalResources.html", "structne_1_1DirectXPso_1_1InternalResources" ], + [ "DirectXPso", "classne_1_1DirectXPso.html#ab94bbd234d8696b0ac7e8890c79fe008", null ], + [ "bindGlobalShaderResourceViews", "classne_1_1DirectXPso.html#adaa2fc853ef7eff6885030bfbc3dce8a", null ], + [ "createComputePso", "classne_1_1DirectXPso.html#a75b11d16db493ab2643361ad3fd22eef", null ], + [ "createGraphicsPso", "classne_1_1DirectXPso.html#a4960728fd4cbefb43b371fdf589095f3", null ], + [ "generateComputePso", "classne_1_1DirectXPso.html#aeddc74b51dd0863dd3e7278aae05aafd", null ], + [ "generateGraphicsPso", "classne_1_1DirectXPso.html#a610740c80cb68074f2097cdbf967a8ce", null ], + [ "getInternalResources", "classne_1_1DirectXPso.html#a7a2a02d39350c678b23ff2d5939d743a", null ], + [ "getRootParameterIndex", "classne_1_1DirectXPso.html#a9d3a1c982c009a497d913ed335aef373", null ], + [ "releaseInternalResources", "classne_1_1DirectXPso.html#aafe18306adda795d5e81710f28586888", null ], + [ "restoreInternalResources", "classne_1_1DirectXPso.html#a50174336a707116161760fa2737c6b4e", null ], + [ "mtxInternalResources", "classne_1_1DirectXPso.html#a77195b4ea5e5c135d3c9f0fc9fba207b", null ] +]; \ No newline at end of file diff --git a/classne_1_1DirectXPso.png b/classne_1_1DirectXPso.png new file mode 100644 index 0000000000000000000000000000000000000000..5a16dcd1db6e2ed0d2d88adaa819f5463a166c59 GIT binary patch literal 732 zcmeAS@N?(olHy`uVBq!ia0vp^$w1t}!3-piq%D00q@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB)5Yb~~EGnKzra>bN0x3V&9I!`eF z>l+bnJ(q;j&z>!`xmVWoa`mel-$MWFS2|fP!ZYd1%Vr77=QiOCALfZM%vd8WaoR|} zh&kESr~S^sA2arGu`yVP@-TeRlwf!eY`}0}c>+U&|3Lu$)oxLB>-y!+wDf*oBQ5qlG2-q%NLS?6RanaR8KNS>toj@5@V@8Hf0g(W?FYclD31oHP04|H$~xjx&J + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::DirectXRenderer Member List
+
+
+ +

This is the complete list of members for ne::DirectXRenderer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
backBufferFillColorne::DirectXRendererprivate
backBufferFormatne::DirectXRendererprivatestatic
bIsDirectXInitializedne::DirectXRendererprivate
bIsUsingMsaaRenderTargetne::DirectXRendererprivate
bIsWindowMinimizedne::Rendererprivate
calculateFrameStatistics()ne::Rendererprivate
clampSettingsToMaxSupported()ne::Rendererprotected
compileEngineShaders() constne::Rendererprotected
create(GameManager *pGameManager, const std::vector< std::string > &vBlacklistedGpuNames)ne::DirectXRendererstatic
ne::Renderer::create(GameManager *pGameManager, std::optional< RendererType > preferredRenderer)ne::Rendererstatic
createCommandList()ne::DirectXRendererprivate
createCommandQueue()ne::DirectXRendererprivate
createDepthStencilBuffer()ne::DirectXRendererprivate
createRenderer(GameManager *pGameManager, std::optional< RendererType > preferredRenderer)ne::Rendererprivatestatic
createRenderer(RendererType type, GameManager *pGameManager, const std::vector< std::string > &vBlacklistedGpuNames)ne::Rendererprivatestatic
createSwapChain()ne::DirectXRendererprivate
cullLightsOutsideCameraFrustum(CameraProperties *pActiveCameraProperties, size_t iCurrentFrameResourceIndex)ne::Rendererprotected
depthBufferNoMultisamplingFormatne::DirectXRendererprivatestatic
depthStencilBufferFormatne::DirectXRendererprivatestatic
DirectXRenderer()=delete (defined in ne::DirectXRenderer)ne::DirectXRenderer
DirectXRenderer(const DirectXRenderer &)=delete (defined in ne::DirectXRenderer)ne::DirectXRenderer
DirectXRenderer(GameManager *pGameManager)ne::DirectXRendererprotected
dispatchComputeShadersOnGraphicsQueue(ID3D12CommandAllocator *pCommandAllocator, std::unordered_map< Pipeline *, std::unordered_set< ComputeShaderInterface * > > &computePipelinesToSubmit)ne::DirectXRendererprivate
drawMeshesDepthPrepass(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vOpaquePipelines) overridene::DirectXRendererprotectedvirtual
drawMeshesMainPass(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vOpaquePipelines, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vTransparentPipelines) overridene::DirectXRendererprotectedvirtual
drawMeshesMainPassSpecificPipelines(DirectXFrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &pipelinesOfSpecificType, D3D12_GPU_DESCRIPTOR_HANDLE directionalShadowMapsHandle, D3D12_GPU_DESCRIPTOR_HANDLE spotShadowMapsHandle, D3D12_GPU_DESCRIPTOR_HANDLE pointShadowMapsGpuHandle, const bool bIsDrawingTransparentMeshes)ne::DirectXRendererprotected
drawNextFrame()ne::Rendererprotected
drawShadowMappingPass(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, GraphicsPipelineRegistry *pGraphicsPipelines) overridene::DirectXRendererprotectedvirtual
executeComputeShadersOnGraphicsQueue(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, ComputeExecutionStage stage) overridene::DirectXRendererprotectedvirtual
executeGraphicsCommandList(ID3D12GraphicsCommandList *pCommandListToExecute)ne::DirectXRendererprivate
getBackBufferFormat()ne::DirectXRendererinlinestatic
getCurrentBackBufferResource()ne::DirectXRendererprivate
getCurrentlyUsedGpuName() const overridene::DirectXRenderervirtual
getD3dCommandList()ne::DirectXRenderer
getD3dCommandQueue()ne::DirectXRenderer
getD3dDevice() constne::DirectXRenderer
getDepthBufferFormatNoMultisampling()ne::DirectXRendererinlinestatic
getDepthStencilBufferFormat()ne::DirectXRendererinlinestatic
getDepthTextureNoMultisampling() overridene::DirectXRenderervirtual
getDirectionalLightNodeShadowMappingInfo(DirectionalLightNode *pNode, ShadowMapHandle *&pShadowMapHandle, unsigned int &iShadowPassLightInfoArrayIndex)ne::Rendererprotectedstatic
getDrawCallCounter()ne::Rendererinlineprotected
getFrameConstants()ne::Rendererinlineprotected
getFrameResourceManager() constne::Renderer
getGameManager() constne::Renderer
getGlobalShaderResourceBindingManager() constne::Renderer
getLightingShaderResourceManager() constne::Renderer
getMaxDepth()ne::Rendererinlinestatic
getMaxSupportedAntialiasingQuality() const overridene::DirectXRendererprotectedvirtual
getMeshesInCameraFrustum(CameraProperties *pActiveCameraProperties, GraphicsPipelineRegistry *pGraphicsPipelines)ne::Rendererprotected
getMinDepth()ne::Rendererinlinestatic
getMsaaQualityLevel() constne::DirectXRenderer
getPipelineManager() constne::Renderer
getPointLightNodeShadowMapHandle(PointLightNode *pNode)ne::Rendererprotectedstatic
getPointLightShadowPassLightInfoArrayIndex(PointLightNode *pNode, size_t iCubemapFaceIndex)ne::Rendererprotectedstatic
getRecommendedSwapChainBufferCount()ne::Rendererinlineprotectedstatic
getRenderResourcesMutex()ne::Renderer
getRenderSettings()ne::Renderer
getRenderStatistics()ne::Renderer
getRenderTargetSize() const overridene::DirectXRenderervirtual
getResourceManager() constne::Renderer
getShaderConfiguration()ne::Renderer
getShaderCpuWriteResourceManager() constne::Renderer
getShaderManager() constne::Renderer
getShaderTextureResourceManager() constne::Renderer
getShadowMapFormat()ne::DirectXRendererinlinestatic
getShadowMappingPointLightColorTargetFormat()ne::DirectXRendererinlinestatic
getSpotlightNodeShadowMappingInfo(SpotlightNode *pNode, ShadowMapHandle *&pShadowMapHandle, unsigned int &iShadowPassLightInfoArrayIndex)ne::Rendererprotectedstatic
getSupportedDisplayModes() constne::DirectXRendererprivate
getSupportedGpuNames() const overridene::DirectXRenderervirtual
getSupportedRefreshRates() const overridene::DirectXRenderervirtual
getSupportedRenderResolutions() const overridene::DirectXRenderervirtual
getTotalVideoMemoryInMb() constne::Renderer
getType() const overridene::DirectXRenderervirtual
getUsedApiVersion() const overridene::DirectXRenderervirtual
getUsedVideoMemoryInMb() constne::Renderer
getVideoAdapter() constne::DirectXRenderer
getWindow() constne::Renderer
iMsaaQualityLevelsCountne::DirectXRendererprivate
initialize(const std::vector< std::string > &vBlacklistedGpuNames)ne::DirectXRendererprivate
initializeDirectX(const std::vector< std::string > &vBlacklistedGpuNames)ne::DirectXRendererprivate
initializeRenderer()ne::Rendererprotected
initializeRenderSettings()ne::Rendererprivate
initializeResourceManagers()ne::Rendererprotected
iPresentFlagsne::DirectXRendererprivate
iPresentSyncIntervalne::DirectXRendererprivate
iRecommendedSwapChainBufferCountne::Rendererprivatestatic
isInitialized() const overridene::DirectXRendererprotectedvirtual
maxDepthne::Rendererprivatestatic
meshesInFrustumLastFramene::Rendererprivate
minDepthne::Rendererprivatestatic
mtxCurrentFenceValuene::DirectXRendererprivate
mtxFrameConstantsne::Rendererprivate
mtxRenderSettingsne::Rendererprivate
mtxRwRenderResourcesne::Rendererprivate
mtxShaderConfigurationne::Rendererprivate
mtxSpawnedEnvironmentNodene::Rendererprivate
onActiveCameraChanged()ne::Rendererprivate
onFramebufferSizeChanged(int iWidth, int iHeight)ne::Rendererprotected
onFramebufferSizeChangedDerived(int iWidth, int iHeight)ne::Rendererinlineprotectedvirtual
onRenderSettingsChanged(bool bShadowMapSizeChanged=false)ne::Rendererprotected
onRenderSettingsChangedDerived() overridene::DirectXRendererprotectedvirtual
operator=(const DirectXRenderer &)=delete (defined in ne::DirectXRenderer)ne::DirectXRenderer
operator=(const Renderer &)=delete (defined in ne::Renderer)ne::Renderer
pCommandListne::DirectXRendererprivate
pCommandQueuene::DirectXRendererprivate
pComputeCommandListne::DirectXRendererprivate
pDepthBufferNoMultisamplingne::DirectXRendererprivate
pDepthStencilBufferne::DirectXRendererprivate
pDevicene::DirectXRendererprivate
pFactoryne::DirectXRendererprivate
pFencene::DirectXRendererprivate
pFrameResourceManagerne::Rendererprivate
pGameManagerne::Rendererprivate
pGlobalShaderResourceBindingManagerne::Rendererprivate
pickVideoAdapter(const std::vector< std::string > &vBlacklistedGpuNames)ne::DirectXRendererprivate
pLightingShaderResourceManagerne::Rendererprivate
pMsaaRenderBufferne::DirectXRendererprivate
pOutputAdapterne::DirectXRendererprivate
pPipelineManagerne::Rendererprivate
prepareForDrawingNextFrame(CameraProperties *pCameraProperties, FrameResource *pCurrentFrameResource) overridene::DirectXRendererprivatevirtual
prepareRenderTargetForNextFrame()ne::Rendererinlineprotectedvirtual
present(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex) overridene::DirectXRendererprotectedvirtual
pResourceManagerne::Rendererprivate
pShaderCpuWriteResourceManagerne::Rendererprivate
pShaderManagerne::Rendererprivate
pShaderTextureResourceManagerne::Rendererprivate
pSwapChainne::DirectXRendererprivate
pVideoAdapterne::DirectXRendererprivate
rateGpuSuitability(DXGI_ADAPTER_DESC1 adapterDesc)ne::DirectXRendererprivatestatic
recalculateLightTileFrustums()ne::Rendererprotected
Renderer()=delete (defined in ne::Renderer)ne::Renderer
Renderer(const Renderer &)=delete (defined in ne::Renderer)ne::Renderer
Renderer(GameManager *pGameManager)ne::Rendererprotected
rendererD3dFeatureLevelne::DirectXRendererprivatestatic
renderStatsne::Rendererprivate
renderTargetSizene::DirectXRendererprivate
resetCommandListForGraphics(DirectXFrameResource *pCurrentFrameResource)ne::DirectXRendererprivate
resetFrameResourceManager()ne::Rendererprotected
resetGpuResourceManager()ne::Rendererprotected
resetLightingShaderResourceManager()ne::Rendererprotected
resetPipelineManager()ne::Rendererprotected
scissorRectne::DirectXRendererprivate
screenViewportne::DirectXRendererprivate
setOutputAdapter()ne::DirectXRendererprivate
setupRenderStats()ne::Rendererprivate
shadowMapFormatne::DirectXRendererprivatestatic
shadowMappingPointLightColorTargetFormatne::DirectXRendererprivatestatic
sUsedVideoAdapterne::DirectXRendererprivate
updateFrameConstantsBuffer(FrameResource *pCurrentFrameResource, CameraProperties *pCameraProperties)ne::Rendererprotected
updateMsaaQualityLevelCount()ne::DirectXRendererprivate
updateResourcesForNextFrame(unsigned int iRenderTargetWidth, unsigned int iRenderTargetHeight, CameraProperties *pCameraProperties)ne::Rendererprivate
updateShaderConfiguration()ne::Rendererprivate
updateTargetTimeToRenderFrame()ne::Rendererprivate
usedScalingne::DirectXRendererprivatestatic
usedScanlineOrderingne::DirectXRendererprivatestatic
vSupportedGpuNamesne::DirectXRendererprivate
vSwapChainBuffersne::DirectXRendererprivate
waitForFenceValue(UINT64 iFenceToWaitFor)ne::DirectXRendererprivate
waitForGpuToFinishUsingFrameResource(FrameResource *pFrameResource) overridene::DirectXRendererprotectedvirtual
waitForGpuToFinishWorkUpToThisPoint() overridene::DirectXRenderervirtual
~DirectXRenderer() override (defined in ne::DirectXRenderer)ne::DirectXRenderervirtual
~Renderer() (defined in ne::Renderer)ne::Renderervirtual
+
+ + + + diff --git a/classne_1_1DirectXRenderer.html b/classne_1_1DirectXRenderer.html new file mode 100644 index 000000000..33e9be8cc --- /dev/null +++ b/classne_1_1DirectXRenderer.html @@ -0,0 +1,2823 @@ + + + + + + + +Nameless Engine: ne::DirectXRenderer Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <DirectXRenderer.h>

+
+Inheritance diagram for ne::DirectXRenderer:
+
+
+ + +ne::Renderer + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

DirectXRenderer (const DirectXRenderer &)=delete
 
+DirectXRendereroperator= (const DirectXRenderer &)=delete
 
virtual std::vector< std::string > getSupportedGpuNames () const override
 
virtual std::variant< std::set< std::pair< unsigned int, unsigned int > >, ErrorgetSupportedRenderResolutions () const override
 
virtual std::variant< std::set< std::pair< unsigned int, unsigned int > >, ErrorgetSupportedRefreshRates () const override
 
virtual std::string getCurrentlyUsedGpuName () const override
 
virtual void waitForGpuToFinishWorkUpToThisPoint () override
 
virtual RendererType getType () const override
 
virtual std::string getUsedApiVersion () const override
 
ID3D12Device * getD3dDevice () const
 
ID3D12GraphicsCommandList * getD3dCommandList ()
 
ID3D12CommandQueue * getD3dCommandQueue ()
 
IDXGIAdapter3 * getVideoAdapter () const
 
UINT getMsaaQualityLevel () const
 
virtual GpuResourcegetDepthTextureNoMultisampling () override
 
virtual std::pair< unsigned int, unsigned int > getRenderTargetSize () const override
 
- Public Member Functions inherited from ne::Renderer
Renderer (const Renderer &)=delete
 
+Rendereroperator= (const Renderer &)=delete
 
virtual std::vector< std::string > getSupportedGpuNames () const =0
 
virtual std::variant< std::set< std::pair< unsigned int, unsigned int > >, ErrorgetSupportedRenderResolutions () const =0
 
virtual std::variant< std::set< std::pair< unsigned int, unsigned int > >, ErrorgetSupportedRefreshRates () const =0
 
virtual RendererType getType () const =0
 
virtual std::string getUsedApiVersion () const =0
 
std::pair< std::recursive_mutex *, RenderSettings * > getRenderSettings ()
 
RenderStatisticsgetRenderStatistics ()
 
virtual std::string getCurrentlyUsedGpuName () const =0
 
size_t getTotalVideoMemoryInMb () const
 
size_t getUsedVideoMemoryInMb () const
 
virtual void waitForGpuToFinishWorkUpToThisPoint ()=0
 
std::pair< std::recursive_mutex, std::unique_ptr< ShaderConfiguration > > * getShaderConfiguration ()
 
virtual std::pair< unsigned int, unsigned int > getRenderTargetSize () const =0
 
WindowgetWindow () const
 
GameManagergetGameManager () const
 
ShaderManagergetShaderManager () const
 
PipelineManagergetPipelineManager () const
 
GpuResourceManagergetResourceManager () const
 
FrameResourceManagergetFrameResourceManager () const
 
ShaderCpuWriteResourceBindingManagergetShaderCpuWriteResourceManager () const
 
ShaderTextureResourceBindingManagergetShaderTextureResourceManager () const
 
LightingShaderResourceManagergetLightingShaderResourceManager () const
 
GlobalShaderResourceBindingManagergetGlobalShaderResourceBindingManager () const
 
std::recursive_mutex * getRenderResourcesMutex ()
 
virtual GpuResourcegetDepthTextureNoMultisampling ()=0
 
+ + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static std::variant< std::unique_ptr< Renderer >, std::pair< Error, std::string > > create (GameManager *pGameManager, const std::vector< std::string > &vBlacklistedGpuNames)
 
static constexpr DXGI_FORMAT getBackBufferFormat ()
 
static constexpr DXGI_FORMAT getDepthStencilBufferFormat ()
 
static constexpr DXGI_FORMAT getDepthBufferFormatNoMultisampling ()
 
static constexpr DXGI_FORMAT getShadowMapFormat ()
 
static constexpr DXGI_FORMAT getShadowMappingPointLightColorTargetFormat ()
 
- Static Public Member Functions inherited from ne::Renderer
static constexpr float getMinDepth ()
 
static constexpr float getMaxDepth ()
 
static std::variant< std::unique_ptr< Renderer >, Errorcreate (GameManager *pGameManager, std::optional< RendererType > preferredRenderer)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

 DirectXRenderer (GameManager *pGameManager)
 
virtual void drawShadowMappingPass (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, GraphicsPipelineRegistry *pGraphicsPipelines) override
 
virtual void drawMeshesDepthPrepass (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vOpaquePipelines) override
 
virtual void executeComputeShadersOnGraphicsQueue (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, ComputeExecutionStage stage) override
 
virtual void drawMeshesMainPass (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vOpaquePipelines, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vTransparentPipelines) override
 
virtual void present (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex) override
 
void drawMeshesMainPassSpecificPipelines (DirectXFrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &pipelinesOfSpecificType, D3D12_GPU_DESCRIPTOR_HANDLE directionalShadowMapsHandle, D3D12_GPU_DESCRIPTOR_HANDLE spotShadowMapsHandle, D3D12_GPU_DESCRIPTOR_HANDLE pointShadowMapsGpuHandle, const bool bIsDrawingTransparentMeshes)
 
virtual std::optional< ErroronRenderSettingsChangedDerived () override
 
virtual void waitForGpuToFinishUsingFrameResource (FrameResource *pFrameResource) override
 
virtual std::variant< AntialiasingQuality, ErrorgetMaxSupportedAntialiasingQuality () const override
 
virtual bool isInitialized () const override
 
- Protected Member Functions inherited from ne::Renderer
 Renderer (GameManager *pGameManager)
 
std::optional< ErrorcompileEngineShaders () const
 
void updateFrameConstantsBuffer (FrameResource *pCurrentFrameResource, CameraProperties *pCameraProperties)
 
void resetGpuResourceManager ()
 
void resetPipelineManager ()
 
void resetFrameResourceManager ()
 
void resetLightingShaderResourceManager ()
 
virtual std::variant< AntialiasingQuality, ErrorgetMaxSupportedAntialiasingQuality () const =0
 
void onFramebufferSizeChanged (int iWidth, int iHeight)
 
virtual void onFramebufferSizeChangedDerived (int iWidth, int iHeight)
 
void drawNextFrame ()
 
virtual void prepareRenderTargetForNextFrame ()
 
virtual void prepareForDrawingNextFrame (CameraProperties *pCameraProperties, FrameResource *pCurrentFrameResource)=0
 
virtual void drawShadowMappingPass (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, GraphicsPipelineRegistry *pGraphicsPipelines)=0
 
virtual void drawMeshesDepthPrepass (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vOpaquePipelines)=0
 
virtual void executeComputeShadersOnGraphicsQueue (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, ComputeExecutionStage stage)=0
 
virtual void drawMeshesMainPass (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vOpaquePipelines, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vTransparentPipelines)=0
 
virtual void present (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex)=0
 
std::optional< ErroronRenderSettingsChanged (bool bShadowMapSizeChanged=false)
 
virtual std::optional< ErroronRenderSettingsChangedDerived ()=0
 
virtual void waitForGpuToFinishUsingFrameResource (FrameResource *pFrameResource)=0
 
virtual bool isInitialized () const =0
 
std::optional< ErrorinitializeRenderer ()
 
std::optional< ErrorinitializeResourceManagers ()
 
std::optional< ErrorclampSettingsToMaxSupported ()
 
std::optional< ErrorrecalculateLightTileFrustums ()
 
MeshesInFrustumgetMeshesInCameraFrustum (CameraProperties *pActiveCameraProperties, GraphicsPipelineRegistry *pGraphicsPipelines)
 
void cullLightsOutsideCameraFrustum (CameraProperties *pActiveCameraProperties, size_t iCurrentFrameResourceIndex)
 
std::pair< std::mutex, FrameConstants > * getFrameConstants ()
 
std::atomic< size_t > * getDrawCallCounter ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

std::optional< Errorinitialize (const std::vector< std::string > &vBlacklistedGpuNames)
 
std::optional< ErrorcreateDepthStencilBuffer ()
 
std::optional< ErrorpickVideoAdapter (const std::vector< std::string > &vBlacklistedGpuNames)
 
std::optional< ErrorsetOutputAdapter ()
 
std::optional< ErrorcreateCommandQueue ()
 
std::optional< ErrorcreateCommandList ()
 
std::optional< ErrorcreateSwapChain ()
 
std::optional< ErrorinitializeDirectX (const std::vector< std::string > &vBlacklistedGpuNames)
 
virtual void prepareForDrawingNextFrame (CameraProperties *pCameraProperties, FrameResource *pCurrentFrameResource) override
 
void resetCommandListForGraphics (DirectXFrameResource *pCurrentFrameResource)
 
void executeGraphicsCommandList (ID3D12GraphicsCommandList *pCommandListToExecute)
 
std::optional< ErrorupdateMsaaQualityLevelCount ()
 
void waitForFenceValue (UINT64 iFenceToWaitFor)
 
void dispatchComputeShadersOnGraphicsQueue (ID3D12CommandAllocator *pCommandAllocator, std::unordered_map< Pipeline *, std::unordered_set< ComputeShaderInterface * > > &computePipelinesToSubmit)
 
std::variant< std::vector< DXGI_MODE_DESC >, ErrorgetSupportedDisplayModes () const
 
DirectXResourcegetCurrentBackBufferResource ()
 
+ + + +

+Static Private Member Functions

static size_t rateGpuSuitability (DXGI_ADAPTER_DESC1 adapterDesc)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

ComPtr< IDXGIFactory4 > pFactory
 
ComPtr< ID3D12Device > pDevice
 
ComPtr< IDXGIAdapter3 > pVideoAdapter
 
ComPtr< IDXGIOutput > pOutputAdapter
 
ComPtr< IDXGISwapChain3 > pSwapChain
 
ComPtr< ID3D12CommandQueue > pCommandQueue
 
ComPtr< ID3D12GraphicsCommandList > pCommandList
 
ComPtr< ID3D12GraphicsCommandList > pComputeCommandList
 
ComPtr< ID3D12Fence > pFence
 
std::pair< std::recursive_mutex, UINT64 > mtxCurrentFenceValue
 
std::vector< std::unique_ptr< DirectXResource > > vSwapChainBuffers
 
std::unique_ptr< DirectXResourcepDepthStencilBuffer
 
std::unique_ptr< DirectXResourcepDepthBufferNoMultisampling
 
float backBufferFillColor [4] = {0.0F, 0.0F, 0.0F, 1.0F}
 
std::unique_ptr< DirectXResourcepMsaaRenderBuffer
 
std::vector< std::string > vSupportedGpuNames
 
std::pair< unsigned int, unsigned int > renderTargetSize = {0, 0}
 
UINT iMsaaQualityLevelsCount = 0
 
D3D12_VIEWPORT screenViewport
 
D3D12_RECT scissorRect
 
std::string sUsedVideoAdapter
 
UINT iPresentSyncInterval = 0
 
UINT iPresentFlags = 0
 
bool bIsUsingMsaaRenderTarget = true
 
bool bIsDirectXInitialized = false
 
+ + + + + + + + + + + + + + + + + +

+Static Private Attributes

static constexpr DXGI_FORMAT backBufferFormat = DXGI_FORMAT_R8G8B8A8_UNORM
 
static constexpr DXGI_FORMAT depthStencilBufferFormat = DXGI_FORMAT_D32_FLOAT
 
static constexpr DXGI_FORMAT shadowMapFormat = DXGI_FORMAT_D32_FLOAT
 
static constexpr DXGI_FORMAT shadowMappingPointLightColorTargetFormat = DXGI_FORMAT_R32_FLOAT
 
static constexpr DXGI_FORMAT depthBufferNoMultisamplingFormat = DXGI_FORMAT_R32_FLOAT
 
static constexpr DXGI_MODE_SCALING usedScaling = DXGI_MODE_SCALING_UNSPECIFIED
 
static constexpr DXGI_MODE_SCANLINE_ORDER usedScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE
 
static constexpr D3D_FEATURE_LEVEL rendererD3dFeatureLevel
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Static Protected Member Functions inherited from ne::Renderer
static consteval unsigned int getRecommendedSwapChainBufferCount ()
 
static void getDirectionalLightNodeShadowMappingInfo (DirectionalLightNode *pNode, ShadowMapHandle *&pShadowMapHandle, unsigned int &iShadowPassLightInfoArrayIndex)
 
static void getSpotlightNodeShadowMappingInfo (SpotlightNode *pNode, ShadowMapHandle *&pShadowMapHandle, unsigned int &iShadowPassLightInfoArrayIndex)
 
static unsigned int getPointLightShadowPassLightInfoArrayIndex (PointLightNode *pNode, size_t iCubemapFaceIndex)
 
static ShadowMapHandlegetPointLightNodeShadowMapHandle (PointLightNode *pNode)
 
+

Detailed Description

+

Renderer made with DirectX 12 API.

+

Constructor & Destructor Documentation

+ +

◆ DirectXRenderer()

+ +
+
+ + + + + +
+ + + + + + + + +
ne::DirectXRenderer::DirectXRenderer (GameManagerpGameManager)
+
+protected
+
+

Creates an empty (uninitialized) renderer.

+
Remarks
Use initialize to initialize the renderer.
+
Parameters
+ + +
pGameManagerGameManager object that owns this renderer.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< Renderer >, std::pair< Error, std::string > > ne::DirectXRenderer::create (GameManagerpGameManager,
const std::vector< std::string > & vBlacklistedGpuNames 
)
+
+static
+
+

Creates a new DirectX renderer.

+
Parameters
+ + + +
pGameManagerGameManager object that owns this renderer.
vBlacklistedGpuNamesNames of GPUs that should not be used, generally this means that these GPUs were previously used to create the renderer but something went wrong.
+
+
+
Returns
Created renderer if successful, otherwise multiple values in a pair: error and a name of the GPU that the renderer tried to use (can be empty if failed before picking a GPU or if all supported GPUs are blacklisted).
+ +
+
+ +

◆ createCommandList()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::DirectXRenderer::createCommandList ()
+
+private
+
+

Creates and initializes command list.

+
Remarks
Requires frame resources to be created.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ createCommandQueue()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::DirectXRenderer::createCommandQueue ()
+
+private
+
+

Creates and initializes command queue.

+
Returns
Error if something went wrong.
+ +
+
+ +

◆ createDepthStencilBuffer()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::DirectXRenderer::createDepthStencilBuffer ()
+
+private
+
+

(Re)creates the depth/stencil buffer with the "depth write" initial state and binds a DSV to it.

+
Remarks
Make sure that the old depth/stencil buffer (if was) is not used by the GPU before calling this function.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ createSwapChain()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::DirectXRenderer::createSwapChain ()
+
+private
+
+

Creates and initializes the swap chain.

+
Returns
Error if something went wrong.
+ +
+
+ +

◆ dispatchComputeShadersOnGraphicsQueue()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::DirectXRenderer::dispatchComputeShadersOnGraphicsQueue (ID3D12CommandAllocator * pCommandAllocator,
std::unordered_map< Pipeline *, std::unordered_set< ComputeShaderInterface * > > & computePipelinesToSubmit 
)
+
+private
+
+

Submits compute dispatch commands using pCommandQueue.

+
Parameters
+ + + +
pCommandAllocatorCommand allocator to reset pComputeCommandList.
computePipelinesToSubmitCompute shaders and their pipelines to dispatch.
+
+
+ +
+
+ +

◆ drawMeshesDepthPrepass()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::DirectXRenderer::drawMeshesDepthPrepass (FrameResourcepCurrentFrameResource,
size_t iCurrentFrameResourceIndex,
const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > & vOpaquePipelines 
)
+
+overrideprotectedvirtual
+
+

Submits commands to draw meshes and the specified depth only (vertex shader only) pipelines.

+
Parameters
+ + + + +
pCurrentFrameResourceFrame resource of the frame being submitted.
iCurrentFrameResourceIndexIndex of the current frame resource.
vOpaquePipelinesOpaque pipelines (depth pipeline will be retrieved from them).
+
+
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ drawMeshesMainPass()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ne::DirectXRenderer::drawMeshesMainPass (FrameResourcepCurrentFrameResource,
size_t iCurrentFrameResourceIndex,
const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > & vOpaquePipelines,
const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > & vTransparentPipelines 
)
+
+overrideprotectedvirtual
+
+

Submits commands to draw meshes for main (color) pass.

+
Parameters
+ + + + + +
pCurrentFrameResourceFrame resource of the frame being submitted.
iCurrentFrameResourceIndexIndex of the current frame resource.
vOpaquePipelinesOpaque pipelines to draw.
vTransparentPipelinesTransparent pipelines to draw.
+
+
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ drawMeshesMainPassSpecificPipelines()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ne::DirectXRenderer::drawMeshesMainPassSpecificPipelines (DirectXFrameResourcepCurrentFrameResource,
size_t iCurrentFrameResourceIndex,
const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > & pipelinesOfSpecificType,
D3D12_GPU_DESCRIPTOR_HANDLE directionalShadowMapsHandle,
D3D12_GPU_DESCRIPTOR_HANDLE spotShadowMapsHandle,
D3D12_GPU_DESCRIPTOR_HANDLE pointShadowMapsGpuHandle,
const bool bIsDrawingTransparentMeshes 
)
+
+protected
+
+

Submits commands to draw meshes and pipelines of specific types (only opaque or transparent).

+
Parameters
+ + + + + + + + +
pCurrentFrameResourceFrame resource of the frame being submitted.
iCurrentFrameResourceIndexIndex of the current frame resource.
pipelinesOfSpecificTypePipelines to use.
directionalShadowMapsHandleGPU handle to array of directional shadow maps.
spotShadowMapsHandleGPU handle to array of spot shadow maps.
pointShadowMapsGpuHandleGPU handle to array of point shadow maps.
bIsDrawingTransparentMeshestrue if transparent pipelines are used, false otherwise.
+
+
+ +
+
+ +

◆ drawShadowMappingPass()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::DirectXRenderer::drawShadowMappingPass (FrameResourcepCurrentFrameResource,
size_t iCurrentFrameResourceIndex,
GraphicsPipelineRegistrypGraphicsPipelines 
)
+
+overrideprotectedvirtual
+
+

Submits commands to draw world from the perspective of all spawned light sources to capture shadow maps.

+
Parameters
+ + + + +
pCurrentFrameResourceFrame resource of the frame being submitted.
iCurrentFrameResourceIndexIndex of the current frame resource.
pGraphicsPipelinesGraphics pipelines to draw.
+
+
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ executeComputeShadersOnGraphicsQueue()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::DirectXRenderer::executeComputeShadersOnGraphicsQueue (FrameResourcepCurrentFrameResource,
size_t iCurrentFrameResourceIndex,
ComputeExecutionStage stage 
)
+
+overrideprotectedvirtual
+
+

Executes compute shaders of the specified stage.

+
Warning
Expects that mutex for compute shaders is locked.
+
Parameters
+ + + + +
pCurrentFrameResourceFrame resource of the frame being submitted.
iCurrentFrameResourceIndexIndex of the current frame resource.
stageStage of compute shaders to execute.
+
+
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ executeGraphicsCommandList()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::DirectXRenderer::executeGraphicsCommandList (ID3D12GraphicsCommandList * pCommandListToExecute)
+
+private
+
+

Closes and executes the specified command list on pCommandQueue.

+
Parameters
+ + +
pCommandListToExecuteCommand list to execute.
+
+
+ +
+
+ +

◆ getBackBufferFormat()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr DXGI_FORMAT ne::DirectXRenderer::getBackBufferFormat ()
+
+inlinestaticconstexpr
+
+

Returns used back buffer format.

+
Returns
Back buffer format.
+ +
+
+ +

◆ getCurrentBackBufferResource()

+ +
+
+ + + + + +
+ + + + + + + +
DirectXResource * ne::DirectXRenderer::getCurrentBackBufferResource ()
+
+private
+
+

Returns current buffer to draw to: either MSAA render buffer of swap chain's buffer.

+
Returns
GPU resource.
+ +
+
+ +

◆ getCurrentlyUsedGpuName()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ne::DirectXRenderer::getCurrentlyUsedGpuName () const
+
+overridevirtual
+
+

Returns the name of the GPU that is being currently used.

+
Returns
Name of the GPU.
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ getD3dCommandList()

+ +
+
+ + + + + + + +
ID3D12GraphicsCommandList * ne::DirectXRenderer::getD3dCommandList ()
+
+

Returns DirectX command list.

+
Returns
Do not delete (free) this pointer. Render's internal command list.
+ +
+
+ +

◆ getD3dCommandQueue()

+ +
+
+ + + + + + + +
ID3D12CommandQueue * ne::DirectXRenderer::getD3dCommandQueue ()
+
+

Returns DirectX command queue.

+
Returns
Do not delete (free) this pointer. Render's internal command queue.
+ +
+
+ +

◆ getD3dDevice()

+ +
+
+ + + + + + + +
ID3D12Device * ne::DirectXRenderer::getD3dDevice () const
+
+

Returns DirectX device.

+
Returns
Do not delete (free) this pointer. Render's internal device.
+ +
+
+ +

◆ getDepthBufferFormatNoMultisampling()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr DXGI_FORMAT ne::DirectXRenderer::getDepthBufferFormatNoMultisampling ()
+
+inlinestaticconstexpr
+
+

Returns used depth buffer format for resolved depth buffer.

+
Returns
Depth buffer format.
+ +
+
+ +

◆ getDepthStencilBufferFormat()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr DXGI_FORMAT ne::DirectXRenderer::getDepthStencilBufferFormat ()
+
+inlinestaticconstexpr
+
+

Returns used depth/stencil buffer format.

+
Returns
Depth/stencil buffer format.
+ +
+
+ +

◆ getDepthTextureNoMultisampling()

+ +
+
+ + + + + +
+ + + + + + + +
GpuResource * ne::DirectXRenderer::getDepthTextureNoMultisampling ()
+
+overridevirtual
+
+

Returns pointer to the texture resource that represents renderer's depth texture without multisampling (resolved resource).

+
Warning
If MSAA is enabled this function will return one resource (pointer to a separate depth resolved resource), if it's disabled it will return the other resource (pointer to depth texture). So it may be a good idea to query this pointer every time you need it instead of saving it and reusing it because every frame this pointer may change (due to other reasons such as render target resize and etc).
+
Returns
Pointer to depth texture.
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ getMaxSupportedAntialiasingQuality()

+ +
+
+ + + + + +
+ + + + + + + +
std::variant< AntialiasingQuality, Error > ne::DirectXRenderer::getMaxSupportedAntialiasingQuality () const
+
+overrideprotectedvirtual
+
+

Returns the maximum anti-aliasing quality that can be used on the picked GPU (getCurrentlyUsedGpuName).

+
Remarks
Note that the maximum supported AA quality can differ depending on the used GPU/renderer.
+
Returns
Error if something went wrong, otherwise DISABLED if AA is not supported or the maximum supported AA quality.
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ getMsaaQualityLevel()

+ +
+
+ + + + + + + +
UINT ne::DirectXRenderer::getMsaaQualityLevel () const
+
+

Returns quality level count for the current MSAA sample count.

+
Returns
MSAA quality level count.
+ +
+
+ +

◆ getRenderTargetSize()

+ +
+
+ + + + + +
+ + + + + + + +
std::pair< unsigned int, unsigned int > ne::DirectXRenderer::getRenderTargetSize () const
+
+overridevirtual
+
+

Returns size of the render target (size of the underlying render image).

+
Returns
Render image size in pixels (width and height).
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ getShadowMapFormat()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr DXGI_FORMAT ne::DirectXRenderer::getShadowMapFormat ()
+
+inlinestaticconstexpr
+
+

Returns texture format used for shadow maps.

+
Returns
Shadow map format.
+ +
+
+ +

◆ getShadowMappingPointLightColorTargetFormat()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr DXGI_FORMAT ne::DirectXRenderer::getShadowMappingPointLightColorTargetFormat ()
+
+inlinestaticconstexpr
+
+

Returns texture format used for point lights as "color" target (does not actually store color) during shadow pass.

+
Returns
Shadow map format.
+ +
+
+ +

◆ getSupportedDisplayModes()

+ +
+
+ + + + + +
+ + + + + + + +
std::variant< std::vector< DXGI_MODE_DESC >, Error > ne::DirectXRenderer::getSupportedDisplayModes () const
+
+private
+
+

Returns a vector of display modes that the current output adapter supports for current back buffer format.

+
Returns
Error if something went wrong, vector of display modes otherwise.
+ +
+
+ +

◆ getSupportedGpuNames()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< std::string > ne::DirectXRenderer::getSupportedGpuNames () const
+
+overridevirtual
+
+

Looks for video adapters (GPUs) that support this renderer.

+
Remarks
Note that returned array might differ depending on the used renderer.
+
Returns
Empty array if no GPU supports used renderer, otherwise array with GPU names that can be used for this renderer.
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ getSupportedRefreshRates()

+ +
+
+ + + + + +
+ + + + + + + +
std::variant< std::set< std::pair< unsigned int, unsigned int > >, Error > ne::DirectXRenderer::getSupportedRefreshRates () const
+
+overridevirtual
+
+

Returns a list of supported screen refresh rates (pairs of numerator and denominator).

+
Remarks
The list of supported refresh rates depends on the currently used GPU, so if changing used GPU this list might return different values.
+
Returns
Error if something went wrong, otherwise refresh rates.
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ getSupportedRenderResolutions()

+ +
+
+ + + + + +
+ + + + + + + +
std::variant< std::set< std::pair< unsigned int, unsigned int > >, Error > ne::DirectXRenderer::getSupportedRenderResolutions () const
+
+overridevirtual
+
+

Returns a list of supported render resolution (pairs of width and height).

+
Returns
Error if something went wrong, otherwise render mode.
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
RendererType ne::DirectXRenderer::getType () const
+
+overridevirtual
+
+

Returns renderer's type.

+
Returns
Renderer's type.
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ getUsedApiVersion()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ne::DirectXRenderer::getUsedApiVersion () const
+
+overridevirtual
+
+

Returns API version or a feature level that the renderer uses.

+

For example DirectX renderer will return used feature level and Vulkan renderer will return used Vulkan API version.

+
Returns
Used API version.
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ getVideoAdapter()

+ +
+
+ + + + + + + +
IDXGIAdapter3 * ne::DirectXRenderer::getVideoAdapter () const
+
+

Returns DirectX video adapter.

+
Returns
Do not delete (free) this pointer. Video adapter.
+ +
+
+ +

◆ initialize()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::DirectXRenderer::initialize (const std::vector< std::string > & vBlacklistedGpuNames)
+
+private
+
+

Initializes the renderer.

+
Remarks
This function is usually called after constructing a new empty (uninitialized) DirectX renderer.
+
Parameters
+ + +
vBlacklistedGpuNamesNames of GPUs that should not be used, generally this means that these GPUs were previously used to create the renderer but something went wrong.
+
+
+
Returns
Error if something went wrong (for ex. if the hardware does not support this renderer).
+ +
+
+ +

◆ initializeDirectX()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::DirectXRenderer::initializeDirectX (const std::vector< std::string > & vBlacklistedGpuNames)
+
+private
+
+

Initializes DirectX.

+
Parameters
+ + +
vBlacklistedGpuNamesNames of GPUs that should not be used, generally this means that these GPUs were previously used to create the renderer but something went wrong.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ isInitialized()

+ +
+
+ + + + + +
+ + + + + + + +
bool ne::DirectXRenderer::isInitialized () const
+
+overrideprotectedvirtual
+
+

Tells whether the renderer is initialized or not.

+

Initialized renderer means that the hardware supports it and it's safe to use renderer functionality such as onRenderSettingsChanged.

+
Returns
Whether the renderer is initialized or not.
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ onRenderSettingsChangedDerived()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::DirectXRenderer::onRenderSettingsChangedDerived ()
+
+overrideprotectedvirtual
+
+

Called after some render setting is changed to recreate internal resources to match the current settings.

+
Returns
Error if something went wrong.
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ pickVideoAdapter()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::DirectXRenderer::pickVideoAdapter (const std::vector< std::string > & vBlacklistedGpuNames)
+
+private
+
+

Rates available GPUs and picks the best one to be used (also considers GPU specified in RenderSettings).

+
Parameters
+ + +
vBlacklistedGpuNamesNames of GPUs that should not be used, generally this means that these GPUs were previously used to create the renderer but something went wrong.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ prepareForDrawingNextFrame()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::DirectXRenderer::prepareForDrawingNextFrame (CameraPropertiespCameraProperties,
FrameResourcepCurrentFrameResource 
)
+
+overrideprivatevirtual
+
+

Setups everything for render commands to be recorded (resets command buffers and etc.).

+
Warning
Expects that render resources mutex is locked.
+
Remarks
When this function is called this means that the current frame resource is no longer used by the GPU.
+
Parameters
+ + + +
pCameraPropertiesCamera properties to use.
pCurrentFrameResourceFrame resource of the frame being submitted.
+
+
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ present()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::DirectXRenderer::present (FrameResourcepCurrentFrameResource,
size_t iCurrentFrameResourceIndex 
)
+
+overrideprotectedvirtual
+
+

Does the final frame rendering logic to present the frame on the screen.

+
Parameters
+ + + +
pCurrentFrameResourceFrame resource of the frame being submitted.
iCurrentFrameResourceIndexIndex of the current frame resource.
+
+
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ rateGpuSuitability()

+ +
+
+ + + + + +
+ + + + + + + + +
size_t ne::DirectXRenderer::rateGpuSuitability (DXGI_ADAPTER_DESC1 adapterDesc)
+
+staticprivate
+
+

Rates the specified GPU and gives it a suitability score.

+
Parameters
+ + +
adapterDescGPU description.
+
+
+
Returns
0 if the GPU is not suitable for the renderer, otherwise GPU's suitability score.
+ +
+
+ +

◆ resetCommandListForGraphics()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::DirectXRenderer::resetCommandListForGraphics (DirectXFrameResourcepCurrentFrameResource)
+
+private
+
+

Resets pCommandList and adds initial commands like set descriptor heaps for graphics commands.

+
Parameters
+ + +
pCurrentFrameResourceFrame resource for the current frame.
+
+
+ +
+
+ +

◆ setOutputAdapter()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::DirectXRenderer::setOutputAdapter ()
+
+private
+
+

Sets first found output adapter (monitor).

+
Returns
Error if something went wrong or no output adapter was found.
+ +
+
+ +

◆ updateMsaaQualityLevelCount()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::DirectXRenderer::updateMsaaQualityLevelCount ()
+
+private
+
+

Queries the current render settings for MSAA quality and updates iMsaaQualityLevelsCount.

+
Returns
Error if something went wrong.
+ +
+
+ +

◆ waitForFenceValue()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::DirectXRenderer::waitForFenceValue (UINT64 iFenceToWaitFor)
+
+private
+
+

Waits until the GPU has completed commands up to the specified fence point.

+
Parameters
+ + +
iFenceToWaitForFence value to wait for.
+
+
+ +
+
+ +

◆ waitForGpuToFinishUsingFrameResource()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::DirectXRenderer::waitForGpuToFinishUsingFrameResource (FrameResourcepFrameResource)
+
+overrideprotectedvirtual
+
+

Blocks the current thread until the GPU is finished using the specified frame resource.

+
Remarks
Generally the current frame resource will be passed and so the current frame resource mutex will be locked at the time of calling and until the function is not finished it will not be unlocked.
+
Parameters
+ + +
pFrameResourceFrame resource to wait for.
+
+
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ waitForGpuToFinishWorkUpToThisPoint()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::DirectXRenderer::waitForGpuToFinishWorkUpToThisPoint ()
+
+overridevirtual
+
+

Blocks the current thread until the GPU finishes executing all queued commands up to this point.

+ +

Implements ne::Renderer.

+ +
+
+

Member Data Documentation

+ +

◆ backBufferFillColor

+ +
+
+ + + + + +
+ + + + +
float ne::DirectXRenderer::backBufferFillColor[4] = {0.0F, 0.0F, 0.0F, 1.0F}
+
+private
+
+

Default back buffer fill color.

+ +
+
+ +

◆ backBufferFormat

+ +
+
+ + + + + +
+ + + + +
constexpr DXGI_FORMAT ne::DirectXRenderer::backBufferFormat = DXGI_FORMAT_R8G8B8A8_UNORM
+
+staticconstexprprivate
+
+

Back buffer format.

+ +
+
+ +

◆ bIsDirectXInitialized

+ +
+
+ + + + + +
+ + + + +
bool ne::DirectXRenderer::bIsDirectXInitialized = false
+
+private
+
+

Whether initializeDirectX was finished without errors or not.

+ +
+
+ +

◆ bIsUsingMsaaRenderTarget

+ +
+
+ + + + + +
+ + + + +
bool ne::DirectXRenderer::bIsUsingMsaaRenderTarget = true
+
+private
+
+

Whether MSAA enabled and we use pMsaaRenderBuffer as render buffer or not and we use pSwapChain as render buffer.

+ +
+
+ +

◆ depthBufferNoMultisamplingFormat

+ +
+
+ + + + + +
+ + + + +
constexpr DXGI_FORMAT ne::DirectXRenderer::depthBufferNoMultisamplingFormat = DXGI_FORMAT_R32_FLOAT
+
+staticconstexprprivate
+
+

Depth buffer format for pDepthBufferNoMultisampling.

+
Remarks
This format is based on depthStencilBufferFormat but we need to consider some additional things such as:
    +
  • MSAA resolve is only supported for non-integer and non-stencil types (use X8_TYPELESS or similar with stencil),
  • +
  • replace the depth component with the red component.
  • +
+
+ +
+
+ +

◆ depthStencilBufferFormat

+ +
+
+ + + + + +
+ + + + +
constexpr DXGI_FORMAT ne::DirectXRenderer::depthStencilBufferFormat = DXGI_FORMAT_D32_FLOAT
+
+staticconstexprprivate
+
+

Depth/stencil buffer format.

+ +
+
+ +

◆ iMsaaQualityLevelsCount

+ +
+
+ + + + + +
+ + + + +
UINT ne::DirectXRenderer::iMsaaQualityLevelsCount = 0
+
+private
+
+

The number of supported quality levels for the current MSAA sample count.

+ +
+
+ +

◆ iPresentFlags

+ +
+
+ + + + + +
+ + + + +
UINT ne::DirectXRenderer::iPresentFlags = 0
+
+private
+
+

Used to prevent tearing when VSync is enabled.

+ +
+
+ +

◆ iPresentSyncInterval

+ +
+
+ + + + + +
+ + + + +
UINT ne::DirectXRenderer::iPresentSyncInterval = 0
+
+private
+
+

Synchronize presentation for at least N vertical blanks. Used when VSync is enabled.

+ +
+
+ +

◆ mtxCurrentFenceValue

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, UINT64> ne::DirectXRenderer::mtxCurrentFenceValue
+
+private
+
+

Fence counter.

+ +
+
+ +

◆ pCommandList

+ +
+
+ + + + + +
+ + + + +
ComPtr<ID3D12GraphicsCommandList> ne::DirectXRenderer::pCommandList
+
+private
+
+

Contains commands for the GPU.

+ +
+
+ +

◆ pCommandQueue

+ +
+
+ + + + + +
+ + + + +
ComPtr<ID3D12CommandQueue> ne::DirectXRenderer::pCommandQueue
+
+private
+
+

GPU command queue.

+ +
+
+ +

◆ pComputeCommandList

+ +
+
+ + + + + +
+ + + + +
ComPtr<ID3D12GraphicsCommandList> ne::DirectXRenderer::pComputeCommandList
+
+private
+
+
+ +

◆ pDepthBufferNoMultisampling

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<DirectXResource> ne::DirectXRenderer::pDepthBufferNoMultisampling
+
+private
+
+

Depth buffer without multisampling (for light culing compute shader).

+
Warning
When pDepthStencilBuffer does not use multisampling this buffer is not used and does not store contents of pDepthStencilBuffer.
+
Remarks
Stores non-multisampled depth data from pDepthStencilBuffer for shaders.
+ +
+
+ +

◆ pDepthStencilBuffer

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<DirectXResource> ne::DirectXRenderer::pDepthStencilBuffer
+
+private
+
+

Depth stencil buffer.

+ +
+
+ +

◆ pDevice

+ +
+
+ + + + + +
+ + + + +
ComPtr<ID3D12Device> ne::DirectXRenderer::pDevice
+
+private
+
+

D3D12 Device.

+ +
+
+ +

◆ pFactory

+ +
+
+ + + + + +
+ + + + +
ComPtr<IDXGIFactory4> ne::DirectXRenderer::pFactory
+
+private
+
+

DXGI Factory.

+ +
+
+ +

◆ pFence

+ +
+
+ + + + + +
+ + + + +
ComPtr<ID3D12Fence> ne::DirectXRenderer::pFence
+
+private
+
+

Fence object.

+ +
+
+ +

◆ pMsaaRenderBuffer

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<DirectXResource> ne::DirectXRenderer::pMsaaRenderBuffer
+
+private
+
+

Render target when MSAA is enabled because our swap chain does not support multisampling.

+ +
+
+ +

◆ pOutputAdapter

+ +
+
+ + + + + +
+ + + + +
ComPtr<IDXGIOutput> ne::DirectXRenderer::pOutputAdapter
+
+private
+
+

Monitor.

+ +
+
+ +

◆ pSwapChain

+ +
+
+ + + + + +
+ + + + +
ComPtr<IDXGISwapChain3> ne::DirectXRenderer::pSwapChain
+
+private
+
+

Swap chain.

+ +
+
+ +

◆ pVideoAdapter

+ +
+
+ + + + + +
+ + + + +
ComPtr<IDXGIAdapter3> ne::DirectXRenderer::pVideoAdapter
+
+private
+
+

GPU.

+ +
+
+ +

◆ rendererD3dFeatureLevel

+ +
+
+ + + + + +
+ + + + +
constexpr D3D_FEATURE_LEVEL ne::DirectXRenderer::rendererD3dFeatureLevel
+
+staticconstexprprivate
+
+Initial value:
=
+
D3D_FEATURE_LEVEL::D3D_FEATURE_LEVEL_12_1
+

D3D feature level that we use (required feature level).

+ +
+
+ +

◆ renderTargetSize

+ +
+
+ + + + + +
+ + + + +
std::pair<unsigned int, unsigned int> ne::DirectXRenderer::renderTargetSize = {0, 0}
+
+private
+
+

Last set size of the underlying swap chain buffer.

+ +
+
+ +

◆ scissorRect

+ +
+
+ + + + + +
+ + + + +
D3D12_RECT ne::DirectXRenderer::scissorRect
+
+private
+
+

Scissor rectangle for viewport.

+ +
+
+ +

◆ screenViewport

+ +
+
+ + + + + +
+ + + + +
D3D12_VIEWPORT ne::DirectXRenderer::screenViewport
+
+private
+
+

Screen viewport size and depth range.

+ +
+
+ +

◆ shadowMapFormat

+ +
+
+ + + + + +
+ + + + +
constexpr DXGI_FORMAT ne::DirectXRenderer::shadowMapFormat = DXGI_FORMAT_D32_FLOAT
+
+staticconstexprprivate
+
+

Format used for shadow maps.

+ +
+
+ +

◆ shadowMappingPointLightColorTargetFormat

+ +
+
+ + + + + +
+ + + + +
constexpr DXGI_FORMAT ne::DirectXRenderer::shadowMappingPointLightColorTargetFormat = DXGI_FORMAT_R32_FLOAT
+
+staticconstexprprivate
+
+

Format used for point lights as "color" target (does not actually store color) during shadow pass.

+ +
+
+ +

◆ sUsedVideoAdapter

+ +
+
+ + + + + +
+ + + + +
std::string ne::DirectXRenderer::sUsedVideoAdapter
+
+private
+
+

Name of the GPU we are currently using.

+ +
+
+ +

◆ usedScaling

+ +
+
+ + + + + +
+ + + + +
constexpr DXGI_MODE_SCALING ne::DirectXRenderer::usedScaling = DXGI_MODE_SCALING_UNSPECIFIED
+
+staticconstexprprivate
+
+

Use only display modes that use this scaling.

+ +
+
+ +

◆ usedScanlineOrdering

+ +
+
+ + + + + +
+ + + + +
constexpr DXGI_MODE_SCANLINE_ORDER ne::DirectXRenderer::usedScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE
+
+staticconstexprprivate
+
+

Use only display modes that use this scanline ordering.

+ +
+
+ +

◆ vSupportedGpuNames

+ +
+
+ + + + + +
+ + + + +
std::vector<std::string> ne::DirectXRenderer::vSupportedGpuNames
+
+private
+
+

List of supported GPUs, filled during pickVideoAdapter.

+ +
+
+ +

◆ vSwapChainBuffers

+ +
+
+ + + + + +
+ + + + +
std::vector<std::unique_ptr<DirectXResource> > ne::DirectXRenderer::vSwapChainBuffers
+
+private
+
+

Swap chain buffer.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/directx/DirectXRenderer.h
  • +
  • src/engine_lib/private/render/directx/DirectXRenderer.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1DirectXRenderer.js b/classne_1_1DirectXRenderer.js new file mode 100644 index 000000000..7296bfe72 --- /dev/null +++ b/classne_1_1DirectXRenderer.js @@ -0,0 +1,84 @@ +var classne_1_1DirectXRenderer = +[ + [ "DirectXRenderer", "classne_1_1DirectXRenderer.html#aa5b10bcccb9602f1aadf2422db1fda03", null ], + [ "create", "classne_1_1DirectXRenderer.html#a563340fbc530d8ffc266b275349e578a", null ], + [ "createCommandList", "classne_1_1DirectXRenderer.html#a5f66a037cf7681ad65cb871756b137bb", null ], + [ "createCommandQueue", "classne_1_1DirectXRenderer.html#a98d4301fc8204a56f223097eb3cb5bc2", null ], + [ "createDepthStencilBuffer", "classne_1_1DirectXRenderer.html#af772fa96f6b1e7d98993850c49938c06", null ], + [ "createSwapChain", "classne_1_1DirectXRenderer.html#aae666e59658c23839e96be3853bf01c3", null ], + [ "dispatchComputeShadersOnGraphicsQueue", "classne_1_1DirectXRenderer.html#a912463203e9ede50d9abed4f6c3b9854", null ], + [ "drawMeshesDepthPrepass", "classne_1_1DirectXRenderer.html#ab6c0ca6bb384356ecfa2daf5096babab", null ], + [ "drawMeshesMainPass", "classne_1_1DirectXRenderer.html#aeb61c86daba65a036adaf0733e335188", null ], + [ "drawMeshesMainPassSpecificPipelines", "classne_1_1DirectXRenderer.html#a449781a0b56051b054faf5d4b6fff786", null ], + [ "drawShadowMappingPass", "classne_1_1DirectXRenderer.html#a6213bc74d1b269f37e8baff654803c60", null ], + [ "executeComputeShadersOnGraphicsQueue", "classne_1_1DirectXRenderer.html#ac60f6b10d7b48fab48253a3ff0e031d9", null ], + [ "executeGraphicsCommandList", "classne_1_1DirectXRenderer.html#ab9493948abc31d91c435160568f579c5", null ], + [ "getBackBufferFormat", "classne_1_1DirectXRenderer.html#a243147e850a9d3751472d126b3c03f40", null ], + [ "getCurrentBackBufferResource", "classne_1_1DirectXRenderer.html#a501564c57f5930bb4c37e6430f92711d", null ], + [ "getCurrentlyUsedGpuName", "classne_1_1DirectXRenderer.html#a88cfe7d4e46ccb9f1d9229228f1e5db0", null ], + [ "getD3dCommandList", "classne_1_1DirectXRenderer.html#afb9c21dc0d41cc85e24b097cff26f732", null ], + [ "getD3dCommandQueue", "classne_1_1DirectXRenderer.html#a4ab37cf018996f17dbe1bcb15b603420", null ], + [ "getD3dDevice", "classne_1_1DirectXRenderer.html#a47db7ffc60c01f0370cbe98e6c2e40bd", null ], + [ "getDepthBufferFormatNoMultisampling", "classne_1_1DirectXRenderer.html#a9541f211398419d7dcbfc3430f5b0b1a", null ], + [ "getDepthStencilBufferFormat", "classne_1_1DirectXRenderer.html#ac667bc2de2a52d1f29845eaead3f6d06", null ], + [ "getDepthTextureNoMultisampling", "classne_1_1DirectXRenderer.html#a6cc0a84715bba5c6ab4ca4197c98c7d5", null ], + [ "getMaxSupportedAntialiasingQuality", "classne_1_1DirectXRenderer.html#a5ca63e8979f15ea9ecde3a12a02b0d1b", null ], + [ "getMsaaQualityLevel", "classne_1_1DirectXRenderer.html#ae8105874906ab58893e4c393f97fab6a", null ], + [ "getRenderTargetSize", "classne_1_1DirectXRenderer.html#a16174eb607292f2da7dd92ef41291e0c", null ], + [ "getShadowMapFormat", "classne_1_1DirectXRenderer.html#a568b5472e5ab5a0884e92eef18738902", null ], + [ "getShadowMappingPointLightColorTargetFormat", "classne_1_1DirectXRenderer.html#a63c6cac3c9f97ee01374409a38e8f495", null ], + [ "getSupportedDisplayModes", "classne_1_1DirectXRenderer.html#a88b530ed531a1779c6167c680180c9c8", null ], + [ "getSupportedGpuNames", "classne_1_1DirectXRenderer.html#a1781ea7494d8f9e1b97c4eb0ca08c154", null ], + [ "getSupportedRefreshRates", "classne_1_1DirectXRenderer.html#a8276c58de1c600500b718a5b5e615d7c", null ], + [ "getSupportedRenderResolutions", "classne_1_1DirectXRenderer.html#a4520b9aceab7912cc891eab113084c30", null ], + [ "getType", "classne_1_1DirectXRenderer.html#a0daa57b10444b533e5c84e4e943aedf8", null ], + [ "getUsedApiVersion", "classne_1_1DirectXRenderer.html#aca706b99fc421f2fbd3c87ed5802d6f5", null ], + [ "getVideoAdapter", "classne_1_1DirectXRenderer.html#aaefff1d150a755ead34aaee472e6fa77", null ], + [ "initialize", "classne_1_1DirectXRenderer.html#abfdd71c29b6db28deef396aafb389b30", null ], + [ "initializeDirectX", "classne_1_1DirectXRenderer.html#a7cac5d3cfd84b04f0a40c5ce05681d11", null ], + [ "isInitialized", "classne_1_1DirectXRenderer.html#ab985c5f8075d699d4c97844dbbf5fbff", null ], + [ "onRenderSettingsChangedDerived", "classne_1_1DirectXRenderer.html#a9af23af0c2fd8c0584de1cfaeae27fa0", null ], + [ "pickVideoAdapter", "classne_1_1DirectXRenderer.html#a4eb291cb6cafdeca3db5965dc26c9e33", null ], + [ "prepareForDrawingNextFrame", "classne_1_1DirectXRenderer.html#ac56bdae6b7900b59a326be6d8d2fd6aa", null ], + [ "present", "classne_1_1DirectXRenderer.html#a8c62f8526ed5b4b208aef449ea712e5b", null ], + [ "rateGpuSuitability", "classne_1_1DirectXRenderer.html#aa7ce37db86a74d8ec1dec1bb9db4e0c3", null ], + [ "resetCommandListForGraphics", "classne_1_1DirectXRenderer.html#a849c0fe971f23e51a074c5ee0a5c9fae", null ], + [ "setOutputAdapter", "classne_1_1DirectXRenderer.html#a942ec924b07f40819458bd780037d26c", null ], + [ "updateMsaaQualityLevelCount", "classne_1_1DirectXRenderer.html#a1e14b11fc60b1c51260bd1bb788b8b51", null ], + [ "waitForFenceValue", "classne_1_1DirectXRenderer.html#acad252aed765ced403e6e21ac74230a1", null ], + [ "waitForGpuToFinishUsingFrameResource", "classne_1_1DirectXRenderer.html#a64dccc90232ee6345bf67382d8df2d6d", null ], + [ "waitForGpuToFinishWorkUpToThisPoint", "classne_1_1DirectXRenderer.html#aae18afc489996ebedd1504305ba34d85", null ], + [ "backBufferFillColor", "classne_1_1DirectXRenderer.html#ad29a55fef55b2b9cd7d04c707c435f85", null ], + [ "backBufferFormat", "classne_1_1DirectXRenderer.html#a43ded335f4450711acef5377c5e27132", null ], + [ "bIsDirectXInitialized", "classne_1_1DirectXRenderer.html#a9c88d579b35447e3818dbe2f1a0f9b0b", null ], + [ "bIsUsingMsaaRenderTarget", "classne_1_1DirectXRenderer.html#ad6ed49ffb6a20286392c137c0d7903cb", null ], + [ "depthBufferNoMultisamplingFormat", "classne_1_1DirectXRenderer.html#aaa55f165ca5a2b877a69ff845a0f7aad", null ], + [ "depthStencilBufferFormat", "classne_1_1DirectXRenderer.html#a93419e64ab13c80b70295b017dae8280", null ], + [ "iMsaaQualityLevelsCount", "classne_1_1DirectXRenderer.html#a4f43b54789969661447b136ddaadf3ce", null ], + [ "iPresentFlags", "classne_1_1DirectXRenderer.html#ac1d666a4632cbbd91c353fe2ccb95817", null ], + [ "iPresentSyncInterval", "classne_1_1DirectXRenderer.html#af40f54365a2fb8c5cf78713da454e2bc", null ], + [ "mtxCurrentFenceValue", "classne_1_1DirectXRenderer.html#a1c7cb9cdb3aa6146806e6e8ea54f36f8", null ], + [ "pCommandList", "classne_1_1DirectXRenderer.html#a9466a6883c11e93768c79b50be096091", null ], + [ "pCommandQueue", "classne_1_1DirectXRenderer.html#a08927085e32ccdfab95609f5fe9b5d24", null ], + [ "pComputeCommandList", "classne_1_1DirectXRenderer.html#aae66a211a653272448cfc098c3405d29", null ], + [ "pDepthBufferNoMultisampling", "classne_1_1DirectXRenderer.html#aebe43e71c56812c262f42c342d731e6b", null ], + [ "pDepthStencilBuffer", "classne_1_1DirectXRenderer.html#ac5e941eeb2d94f9ac3c01beb00f6948e", null ], + [ "pDevice", "classne_1_1DirectXRenderer.html#a18d709bf89f24a01d803884dfcc069a1", null ], + [ "pFactory", "classne_1_1DirectXRenderer.html#a615ccae12f4293415a0408ddb6542646", null ], + [ "pFence", "classne_1_1DirectXRenderer.html#a2095dee93557381b4bb2b2126a99ffef", null ], + [ "pMsaaRenderBuffer", "classne_1_1DirectXRenderer.html#abf7e53de5dd9ce9352db41ea7b80d4b0", null ], + [ "pOutputAdapter", "classne_1_1DirectXRenderer.html#acd216d2479e084a675ad2feaa00985a6", null ], + [ "pSwapChain", "classne_1_1DirectXRenderer.html#ac74713bec3906f825d08cfbcb3e2c325", null ], + [ "pVideoAdapter", "classne_1_1DirectXRenderer.html#ad699fa06e2fddf1b6c7bdf57939e1fa5", null ], + [ "rendererD3dFeatureLevel", "classne_1_1DirectXRenderer.html#a1f611fa3a3e45d473ce623089f8e0af1", null ], + [ "renderTargetSize", "classne_1_1DirectXRenderer.html#ad585fdd90e93aadb0c10568bc266f2bd", null ], + [ "scissorRect", "classne_1_1DirectXRenderer.html#afd1a20f48d9b551d9bd792feaeddb9f6", null ], + [ "screenViewport", "classne_1_1DirectXRenderer.html#a98d18e23fa56be362ebaf4ea6814fc8d", null ], + [ "shadowMapFormat", "classne_1_1DirectXRenderer.html#a5919744c5b533cdb65adcc005a14d59e", null ], + [ "shadowMappingPointLightColorTargetFormat", "classne_1_1DirectXRenderer.html#a2b01c134f0356954739bdcf1ffa0ac91", null ], + [ "sUsedVideoAdapter", "classne_1_1DirectXRenderer.html#a943eacc1a620265461ca279437b2b197", null ], + [ "usedScaling", "classne_1_1DirectXRenderer.html#a72e7838631c1babf3a3fb0ae99342dbf", null ], + [ "usedScanlineOrdering", "classne_1_1DirectXRenderer.html#a71cb29043322d521d62f3def959ce8cc", null ], + [ "vSupportedGpuNames", "classne_1_1DirectXRenderer.html#aae2f8fa8f7ab90274a1a388daefa0a09", null ], + [ "vSwapChainBuffers", "classne_1_1DirectXRenderer.html#ae8e412e7fd30168c609f3c41f7069b79", null ] +]; \ No newline at end of file diff --git a/classne_1_1DirectXRenderer.png b/classne_1_1DirectXRenderer.png new file mode 100644 index 0000000000000000000000000000000000000000..949c73039c7624a86a8f70a9b343461d9b245041 GIT binary patch literal 529 zcmeAS@N?(olHy`uVBq!ia0vp^4L}^g!3-py-Rr#uq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB))_kpEn#>+mG_PSv&9`Ul;R!Yde?IQjw&2zGwU~4_>y@s7 zA%l)+{82^$2F3t}qH{L`HJ5%-&(&P|L^Ho3w^;21o5t_oLOYm`L<1F|qW_Ey9Vdc2 zXUzNybanxE!HzE+GiIt!&Cz}17=P-_nlA+hsvCZ@Rl8>G{i4e-)p<+s?DX4?r<*oc z{aGn5wqTvaU6-KkFYfv`+*)fY{l90;s(DYZt*HNU>4l=EZ;qORw2u0Ma5_$Y zF}X&J9>!-GwrVjRVL8KP$?vHCXf)icN15IbXhd<@N(dK8DJGJRu5nccA^{m6`9>NKFF8F@vY8pUXO@ GgeCw6b>RpA literal 0 HcmV?d00001 diff --git a/classne_1_1DirectXResource-members.html b/classne_1_1DirectXResource-members.html new file mode 100644 index 000000000..092a45b02 --- /dev/null +++ b/classne_1_1DirectXResource-members.html @@ -0,0 +1,143 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::DirectXResource Member List
+
+
+ +

This is the complete list of members for ne::DirectXResource, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bindDescriptor(DirectXDescriptorType descriptorType, ContinuousDirectXDescriptorRange *pRange=nullptr, bool bBindDescriptorsToCubemapFaces=true)ne::DirectXResource
create(DirectXResourceManager *pResourceManager, const std::string &sResourceName, D3D12MA::Allocator *pMemoryAllocator, const D3D12MA::ALLOCATION_DESC &allocationDesc, const D3D12_RESOURCE_DESC &resourceDesc, const D3D12_RESOURCE_STATES &initialResourceState, std::optional< D3D12_CLEAR_VALUE > resourceClearValue, size_t iElementSizeInBytes=0, size_t iElementCount=0)ne::DirectXResourceprivatestatic
createResourceFromSwapChainBuffer(DirectXResourceManager *pResourceManager, DirectXDescriptorHeap *pRtvHeap, const ComPtr< ID3D12Resource > &pSwapChainBuffer)ne::DirectXResourceprivatestatic
DirectXDescriptorHeap (defined in ne::DirectXResource)ne::DirectXResourcefriend
DirectXResource()=delete (defined in ne::DirectXResource)ne::DirectXResource
DirectXResource(const DirectXResource &)=delete (defined in ne::DirectXResource)ne::DirectXResource
DirectXResource(DirectXResourceManager *pResourceManager, const std::string &sResourceName, UINT iElementSizeInBytes, UINT iElementCount)ne::DirectXResourceprivate
DirectXResourceManager (defined in ne::DirectXResource)ne::DirectXResourcefriend
getBindedCubemapFaceDescriptorCpuHandle(DirectXDescriptorType descriptorType, size_t iCubemapFaceIndex)ne::DirectXResource
getBindedDescriptorCpuHandle(DirectXDescriptorType descriptorType)ne::DirectXResource
getBindedDescriptorGpuHandle(DirectXDescriptorType descriptorType)ne::DirectXResource
getDescriptor(DirectXDescriptorType descriptorType)ne::DirectXResource
getElementCount() constne::GpuResource
getElementSizeInBytes() constne::GpuResource
getInternalResource() constne::DirectXResourceinline
getResourceManager() constne::GpuResource
getResourceName() constne::GpuResource
GpuResource()=delete (defined in ne::GpuResource)ne::GpuResource
GpuResource(GpuResourceManager *pManager, const std::string &sResourceName, unsigned int iElementSizeInBytes, unsigned int iElementCount)ne::GpuResource
GpuResource(GpuResource &)=delete (defined in ne::GpuResource)ne::GpuResource
iElementCountne::GpuResourceprivate
iElementSizeInBytesne::GpuResourceprivate
mtxHeapDescriptorsne::DirectXResourceprivate
operator=(const DirectXResource &)=delete (defined in ne::DirectXResource)ne::DirectXResource
operator=(GpuResource &)=delete (defined in ne::GpuResource)ne::GpuResource
pAllocatedResourcene::DirectXResourceprivate
pGlobalShaderResourceBindingne::GpuResourceprivate
pInternalResourcene::DirectXResourceprivate
pManagerne::GpuResourceprivate
pSwapChainBufferne::DirectXResourceprivate
sResourceNamene::GpuResourceprivate
~DirectXResource() override (defined in ne::DirectXResource)ne::DirectXResourcevirtual
~GpuResource() (defined in ne::GpuResource)ne::GpuResourcevirtual
+
+ + + + diff --git a/classne_1_1DirectXResource.html b/classne_1_1DirectXResource.html new file mode 100644 index 000000000..e7644f33d --- /dev/null +++ b/classne_1_1DirectXResource.html @@ -0,0 +1,704 @@ + + + + + + + +Nameless Engine: ne::DirectXResource Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <DirectXResource.h>

+
+Inheritance diagram for ne::DirectXResource:
+
+
+ + +ne::GpuResource + +
+ + + + +

+Classes

struct  DescriptorsSameType
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

DirectXResource (const DirectXResource &)=delete
 
+DirectXResourceoperator= (const DirectXResource &)=delete
 
std::optional< ErrorbindDescriptor (DirectXDescriptorType descriptorType, ContinuousDirectXDescriptorRange *pRange=nullptr, bool bBindDescriptorsToCubemapFaces=true)
 
std::optional< D3D12_CPU_DESCRIPTOR_HANDLE > getBindedDescriptorCpuHandle (DirectXDescriptorType descriptorType)
 
std::optional< D3D12_CPU_DESCRIPTOR_HANDLE > getBindedCubemapFaceDescriptorCpuHandle (DirectXDescriptorType descriptorType, size_t iCubemapFaceIndex)
 
std::optional< D3D12_GPU_DESCRIPTOR_HANDLE > getBindedDescriptorGpuHandle (DirectXDescriptorType descriptorType)
 
ID3D12Resource * getInternalResource () const
 
DirectXDescriptorgetDescriptor (DirectXDescriptorType descriptorType)
 
- Public Member Functions inherited from ne::GpuResource
 GpuResource (GpuResourceManager *pManager, const std::string &sResourceName, unsigned int iElementSizeInBytes, unsigned int iElementCount)
 
GpuResource (GpuResource &)=delete
 
+GpuResourceoperator= (GpuResource &)=delete
 
std::string getResourceName () const
 
unsigned int getElementSizeInBytes () const
 
unsigned int getElementCount () const
 
GpuResourceManagergetResourceManager () const
 
+ + + +

+Private Member Functions

 DirectXResource (DirectXResourceManager *pResourceManager, const std::string &sResourceName, UINT iElementSizeInBytes, UINT iElementCount)
 
+ + + + + +

+Static Private Member Functions

static std::variant< std::unique_ptr< DirectXResource >, Errorcreate (DirectXResourceManager *pResourceManager, const std::string &sResourceName, D3D12MA::Allocator *pMemoryAllocator, const D3D12MA::ALLOCATION_DESC &allocationDesc, const D3D12_RESOURCE_DESC &resourceDesc, const D3D12_RESOURCE_STATES &initialResourceState, std::optional< D3D12_CLEAR_VALUE > resourceClearValue, size_t iElementSizeInBytes=0, size_t iElementCount=0)
 
static std::variant< std::unique_ptr< DirectXResource >, ErrorcreateResourceFromSwapChainBuffer (DirectXResourceManager *pResourceManager, DirectXDescriptorHeap *pRtvHeap, const ComPtr< ID3D12Resource > &pSwapChainBuffer)
 
+ + + + + + + + + +

+Private Attributes

std::pair< std::recursive_mutex, std::array< DescriptorsSameType, static_cast< size_t >(DirectXDescriptorType::END)> > mtxHeapDescriptors
 
ComPtr< D3D12MA::Allocation > pAllocatedResource
 
ComPtr< ID3D12Resource > pSwapChainBuffer
 
ID3D12Resource * pInternalResource = nullptr
 
+ + + + + +

+Friends

+class DirectXDescriptorHeap
 
+class DirectXResourceManager
 
+

Detailed Description

+

D3D resource wrapper with automatic descriptor binding.

+

Constructor & Destructor Documentation

+ +

◆ DirectXResource()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ne::DirectXResource::DirectXResource (DirectXResourceManagerpResourceManager,
const std::string & sResourceName,
UINT iElementSizeInBytes,
UINT iElementCount 
)
+
+private
+
+

Constructor. Creates an empty resource.

+
Parameters
+ + + + + +
pResourceManagerOwner resource manager.
sResourceNameName of this resource.
iElementSizeInBytesResource size information. Size of one array element (if array), otherwise specify size of the whole resource.
iElementCountResource size information. Total number of elements in the array (if array), otherwise specify 1.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ bindDescriptor()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::DirectXResource::bindDescriptor (DirectXDescriptorType descriptorType,
ContinuousDirectXDescriptorRangepRange = nullptr,
bool bBindDescriptorsToCubemapFaces = true 
)
+
+

Creates a new descriptor and binds it to this resource.

+
Remarks
Does nothing if a descriptor of this type is already binded.
+
Parameters
+ + + + +
descriptorTypeType of descriptor to bind.
pRangeSpecify in order to allocate a descriptor from this range.
bBindDescriptorsToCubemapFacesIf this resource is a cubemap, specify true to also bind descriptors that reference specific cubemap faces, specify false to only bind 1 descriptor that references the entire resource.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< DirectXResource >, Error > ne::DirectXResource::create (DirectXResourceManagerpResourceManager,
const std::string & sResourceName,
D3D12MA::Allocator * pMemoryAllocator,
const D3D12MA::ALLOCATION_DESC & allocationDesc,
const D3D12_RESOURCE_DESC & resourceDesc,
const D3D12_RESOURCE_STATES & initialResourceState,
std::optional< D3D12_CLEAR_VALUE > resourceClearValue,
size_t iElementSizeInBytes = 0,
size_t iElementCount = 0 
)
+
+staticprivate
+
+

Creates a new resource (without binding a descriptor to it).

+
Parameters
+ + + + + + + + + + +
pResourceManagerOwner resource manager.
sResourceNameResource name, used for logging.
pMemoryAllocatorAllocator to create resource.
allocationDescAllocation description.
resourceDescResource description.
initialResourceStateInitial state of this resource.
resourceClearValueOptimized clear value. Pass empty if creating CBV/SRV/UAV resource.
iElementSizeInBytesOptional parameter. Specify if this resource represents an array. Used for SRV creation.
iElementCountOptional parameter. Specify if this resource represents an array. Used for SRV creation.
+
+
+
Returns
Error if something went wrong, otherwise created resource.
+ +
+
+ +

◆ createResourceFromSwapChainBuffer()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< DirectXResource >, Error > ne::DirectXResource::createResourceFromSwapChainBuffer (DirectXResourceManagerpResourceManager,
DirectXDescriptorHeappRtvHeap,
const ComPtr< ID3D12Resource > & pSwapChainBuffer 
)
+
+staticprivate
+
+

Creates a new resource instance by wrapping existing swap chain buffer, also binds RTV to the specified resource.

+
Parameters
+ + + + +
pResourceManagerOwner resource manager.
pRtvHeapRender target view heap manager.
pSwapChainBufferSwap chain buffer to wrap.
+
+
+
Returns
Error if something went wrong, otherwise created resource.
+ +
+
+ +

◆ getBindedCubemapFaceDescriptorCpuHandle()

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::optional< D3D12_CPU_DESCRIPTOR_HANDLE > ne::DirectXResource::getBindedCubemapFaceDescriptorCpuHandle (DirectXDescriptorType descriptorType,
size_t iCubemapFaceIndex 
)
+
+

Returns descriptor handle to a cubemap face that was previously binded using bindDescriptor.

+
Parameters
+ + + +
descriptorTypeType of descriptor to get.
iCubemapFaceIndexIndex of the cubemap face to get descriptor handle to.
+
+
+
Returns
Empty this is not a cubemap resource or descriptor was not binded previously, otherwise descriptor handle.
+ +
+
+ +

◆ getBindedDescriptorCpuHandle()

+ +
+
+ + + + + + + + +
std::optional< D3D12_CPU_DESCRIPTOR_HANDLE > ne::DirectXResource::getBindedDescriptorCpuHandle (DirectXDescriptorType descriptorType)
+
+

Returns descriptor handle to the descriptor that was previously binded using bindDescriptor.

+
Parameters
+ + +
descriptorTypeType of descriptor to get.
+
+
+
Returns
Empty if descriptor if this type was not binded to this resource, otherwise descriptor handle.
+ +
+
+ +

◆ getBindedDescriptorGpuHandle()

+ +
+
+ + + + + + + + +
std::optional< D3D12_GPU_DESCRIPTOR_HANDLE > ne::DirectXResource::getBindedDescriptorGpuHandle (DirectXDescriptorType descriptorType)
+
+

Returns descriptor handle to the descriptor that was previously binded using bindDescriptor.

+
Parameters
+ + +
descriptorTypeType of descriptor to get.
+
+
+
Returns
Empty if descriptor if this type was not binded to this resource, otherwise descriptor handle.
+ +
+
+ +

◆ getDescriptor()

+ +
+
+ + + + + + + + +
DirectXDescriptor * ne::DirectXResource::getDescriptor (DirectXDescriptorType descriptorType)
+
+

Returns a raw (non-owning) pointer to a binded descriptor.

+
Remarks
Do not delete (free) returned pointer.
+
Parameters
+ + +
descriptorTypeType of descriptor to query.
+
+
+
Returns
nullptr if a descriptor of this type was not binded to this resource, otherwise valid pointer.
+ +
+
+ +

◆ getInternalResource()

+ +
+
+ + + + + +
+ + + + + + + +
ID3D12Resource * ne::DirectXResource::getInternalResource () const
+
+inline
+
+

Returns internal resource.

+
Remarks
Do not delete (free) this pointer.
+
+Returned pointer is only valid while this object is valid.
+
Returns
Internal resource.
+ +
+
+

Member Data Documentation

+ +

◆ mtxHeapDescriptors

+ +
+
+ + + + + +
+ + + + +
std::pair< std::recursive_mutex, std::array<DescriptorsSameType, static_cast<size_t>(DirectXDescriptorType::END)> > ne::DirectXResource::mtxHeapDescriptors
+
+private
+
+

Array of descriptors used by this resource.

+
Remarks
Access elements like this: "vHeapDescriptors[DirectXDescriptorType::SRV]".
+
+Some descriptors are nullptr. nullptr descriptor means that it's not set (not used).
+
+There might be 6 descriptors of the same type if this resource is a cubemap, then each descriptor will reference a specific cubemap face.
+ +
+
+ +

◆ pAllocatedResource

+ +
+
+ + + + + +
+ + + + +
ComPtr<D3D12MA::Allocation> ne::DirectXResource::pAllocatedResource
+
+private
+
+

Created resource (can be empty if pSwapChainBuffer is used).

+ +
+
+ +

◆ pInternalResource

+ +
+
+ + + + + +
+ + + + +
ID3D12Resource* ne::DirectXResource::pInternalResource = nullptr
+
+private
+
+

Pointer to pSwapChainBuffer or pAllocatedResource used for fast access to internal resource.

+ +
+
+ +

◆ pSwapChainBuffer

+ +
+
+ + + + + +
+ + + + +
ComPtr<ID3D12Resource> ne::DirectXResource::pSwapChainBuffer
+
+private
+
+

Used when resource was created from swap chain buffer (can be empty if pAllocatedResource is used).

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/directx/resource/DirectXResource.h
  • +
  • src/engine_lib/private/render/directx/resource/DirectXResource.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1DirectXResource.js b/classne_1_1DirectXResource.js new file mode 100644 index 000000000..d7057e710 --- /dev/null +++ b/classne_1_1DirectXResource.js @@ -0,0 +1,17 @@ +var classne_1_1DirectXResource = +[ + [ "DescriptorsSameType", "structne_1_1DirectXResource_1_1DescriptorsSameType.html", "structne_1_1DirectXResource_1_1DescriptorsSameType" ], + [ "DirectXResource", "classne_1_1DirectXResource.html#a64e30c33040fa4213f57ba3d736403b5", null ], + [ "bindDescriptor", "classne_1_1DirectXResource.html#a584fc36f4a22a38f68b9a2f0ed9e623c", null ], + [ "create", "classne_1_1DirectXResource.html#a7bea5e130871494072e59a7a86cd2cf3", null ], + [ "createResourceFromSwapChainBuffer", "classne_1_1DirectXResource.html#a8fc3c9641487eac5be9f0e90ae086c27", null ], + [ "getBindedCubemapFaceDescriptorCpuHandle", "classne_1_1DirectXResource.html#a44ab736799802e22a37fa6430dbd4802", null ], + [ "getBindedDescriptorCpuHandle", "classne_1_1DirectXResource.html#a3e742527bbb00f2f6b36c29f4bb1a16a", null ], + [ "getBindedDescriptorGpuHandle", "classne_1_1DirectXResource.html#a1afca035bead505995bc62336c4bf14d", null ], + [ "getDescriptor", "classne_1_1DirectXResource.html#a6a2a8b20d5e4b2749e56b70225544e8b", null ], + [ "getInternalResource", "classne_1_1DirectXResource.html#ade04211fc7ac802cc9805c24320bdb53", null ], + [ "mtxHeapDescriptors", "classne_1_1DirectXResource.html#ad5fcc47d76cb6ab3b214b5dc41e0ada3", null ], + [ "pAllocatedResource", "classne_1_1DirectXResource.html#a139b6ee043fc9a4d06deb98bd6adc175", null ], + [ "pInternalResource", "classne_1_1DirectXResource.html#a83046b2b67adf89670801e38ced04c17", null ], + [ "pSwapChainBuffer", "classne_1_1DirectXResource.html#a27a9bd97380eb486ff9e3b2473906aec", null ] +]; \ No newline at end of file diff --git a/classne_1_1DirectXResource.png b/classne_1_1DirectXResource.png new file mode 100644 index 0000000000000000000000000000000000000000..2760468d389195468892abdcaecc72ff03b5515f GIT binary patch literal 557 zcmeAS@N?(olHy`uVBq!ia0vp^jX)g0!3-ohWuCnNQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1xR&CkY6wZkPimtOtY^rFfi`$ba4!+V0=6GZr))9p4N|! ztN#4+-(&LU2fLH-*QS-9u53=ZvC;m6XZh@+bCs)u*cy7dniMKr9FFrdNbD6q9?Gy| z{ce`@`3rB>h%&s(c5*m=?G;;p+thX5zW;g*2bS*p`;U=fwL-`LUdIpp96(nt5Au4c zy*J1!bM-diJ#o7Qw+YKI%ohA6d}Ox(iz66ms($5cQs4liAEr!7i`IG_IkP7aC@IhB zw|buWnKR9OSA{C>ZwX0z<{l*+Q=Tul)>X^+bE_4j?Cll5x3T1|c6aKZH~rIT;V(Rz zYDJ#4>og`njxgN@xNAlA`x7 literal 0 HcmV?d00001 diff --git a/classne_1_1DirectXResourceManager-members.html b/classne_1_1DirectXResourceManager-members.html new file mode 100644 index 000000000..fb72b8d1a --- /dev/null +++ b/classne_1_1DirectXResourceManager-members.html @@ -0,0 +1,153 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::DirectXResourceManager Member List
+
+
+ +

This is the complete list of members for ne::DirectXResourceManager, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
convertTextureResourceFormatToDxFormat(ShaderReadWriteTextureResourceFormat format)ne::DirectXResourceManagerstatic
create(DirectXRenderer *pRenderer)ne::DirectXResourceManagerstatic
ne::GpuResourceManager::create(Renderer *pRenderer)ne::GpuResourceManagerprotectedstatic
createRendererSpecificManager(Renderer *pRenderer)ne::GpuResourceManagerprotectedstatic
createResource(const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource) overridene::DirectXResourceManagervirtual
createResource(const std::string &sResourceName, const D3D12MA::ALLOCATION_DESC &allocationDesc, const D3D12_RESOURCE_DESC &resourceDesc, const D3D12_RESOURCE_STATES &initialResourceState, const std::optional< D3D12_CLEAR_VALUE > &resourceClearValue)ne::DirectXResourceManager
createResourceWithCpuWriteAccess(const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, std::optional< bool > isUsedInShadersAsArrayResource) overridene::DirectXResourceManagervirtual
createResourceWithData(const std::string &sResourceName, const void *pBufferData, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource) overridene::DirectXResourceManagervirtual
createResourceWithData(const std::string &sResourceName, const D3D12_RESOURCE_DESC &finalResourceDescription, const std::vector< D3D12_SUBRESOURCE_DATA > &vSubresourcesToCopy, const D3D12_RESOURCE_DESC &uploadResourceDescription, bool bIsTextureResource, size_t iElementSizeInBytes=0, size_t iElementCount=0)ne::DirectXResourceManagerprivate
createShaderReadWriteTextureResource(const std::string &sResourceName, unsigned int iWidth, unsigned int iHeight, ShaderReadWriteTextureResourceFormat format) overridene::DirectXResourceManagervirtual
createShadowMapTexture(const std::string &sResourceName, unsigned int iTextureSize, bool bPointLightColorCubemap) overridene::DirectXResourceManagerprivatevirtual
DirectXResourceManager()=delete (defined in ne::DirectXResourceManager)ne::DirectXResourceManager
DirectXResourceManager(const DirectXResourceManager &)=delete (defined in ne::DirectXResourceManager)ne::DirectXResourceManager
DirectXResourceManager(DirectXRenderer *pRenderer, ComPtr< D3D12MA::Allocator > &&pMemoryAllocator, std::unique_ptr< DirectXDescriptorHeap > &&pRtvHeap, std::unique_ptr< DirectXDescriptorHeap > &&pDsvHeap, std::unique_ptr< DirectXDescriptorHeap > &&pCbvSrvUavHeap)ne::DirectXResourceManagerprivate
getCbvSrvUavHeap() constne::DirectXResourceManager
getCurrentStateInfo() overridene::DirectXResourceManagervirtual
getDsvHeap() constne::DirectXResourceManager
getDynamicCpuWriteShaderResourceArrayManager() constne::GpuResourceManager
getRenderer() constne::GpuResourceManager
getRtvHeap() constne::DirectXResourceManager
getShadowMapManager() constne::GpuResourceManager
getTextureManager() constne::GpuResourceManager
getTotalAliveResourceCount()ne::GpuResourceManager
getTotalVideoMemoryInMb() const overridene::DirectXResourceManagervirtual
getUsedVideoMemoryInMb() const overridene::DirectXResourceManagervirtual
GpuResourceManager()=delete (defined in ne::GpuResourceManager)ne::GpuResourceManager
GpuResourceManager(Renderer *pRenderer)ne::GpuResourceManagerprotected
iAliveResourceCountne::GpuResourceManagerprivate
loadTextureFromDisk(const std::string &sResourceName, const std::filesystem::path &pathToTextureFile) overridene::DirectXResourceManagervirtual
makeMultipleOf256(size_t iNumber)ne::DirectXResourceManagerinlineprivatestatic
makeRtvResourcesFromSwapChainBuffer(IDXGISwapChain3 *pSwapChain, unsigned int iSwapChainBufferCount)ne::DirectXResourceManager
operator=(const DirectXResourceManager &)=delete (defined in ne::DirectXResourceManager)ne::DirectXResourceManager
pCbvSrvUavHeapne::DirectXResourceManagerprivate
pDsvHeapne::DirectXResourceManagerprivate
pDynamicCpuWriteShaderResourceArrayManagerne::GpuResourceManagerprivate
pMemoryAllocatorne::DirectXResourceManagerprivate
pRendererne::GpuResourceManagerprivate
pRtvHeapne::DirectXResourceManagerprivate
pShadowMapManagerne::GpuResourceManagerprivate
pTextureManagerne::GpuResourceManagerprivate
resetManagers()ne::GpuResourceManagerprotected
~DirectXResourceManager() override (defined in ne::DirectXResourceManager)ne::DirectXResourceManagervirtual
~GpuResourceManager()=default (defined in ne::GpuResourceManager)ne::GpuResourceManagervirtual
+
+ + + + diff --git a/classne_1_1DirectXResourceManager.html b/classne_1_1DirectXResourceManager.html new file mode 100644 index 000000000..65025b82e --- /dev/null +++ b/classne_1_1DirectXResourceManager.html @@ -0,0 +1,1211 @@ + + + + + + + +Nameless Engine: ne::DirectXResourceManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <DirectXResourceManager.h>

+
+Inheritance diagram for ne::DirectXResourceManager:
+
+
+ + +ne::GpuResourceManager + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

DirectXResourceManager (const DirectXResourceManager &)=delete
 
+DirectXResourceManageroperator= (const DirectXResourceManager &)=delete
 
virtual std::variant< std::unique_ptr< GpuResource >, ErrorloadTextureFromDisk (const std::string &sResourceName, const std::filesystem::path &pathToTextureFile) override
 
virtual std::variant< std::unique_ptr< UploadBuffer >, ErrorcreateResourceWithCpuWriteAccess (const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, std::optional< bool > isUsedInShadersAsArrayResource) override
 
virtual std::variant< std::unique_ptr< GpuResource >, ErrorcreateResourceWithData (const std::string &sResourceName, const void *pBufferData, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource) override
 
virtual std::variant< std::unique_ptr< GpuResource >, ErrorcreateResource (const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource) override
 
virtual std::variant< std::unique_ptr< GpuResource >, ErrorcreateShaderReadWriteTextureResource (const std::string &sResourceName, unsigned int iWidth, unsigned int iHeight, ShaderReadWriteTextureResourceFormat format) override
 
virtual size_t getTotalVideoMemoryInMb () const override
 
virtual size_t getUsedVideoMemoryInMb () const override
 
std::variant< std::unique_ptr< DirectXResource >, ErrorcreateResource (const std::string &sResourceName, const D3D12MA::ALLOCATION_DESC &allocationDesc, const D3D12_RESOURCE_DESC &resourceDesc, const D3D12_RESOURCE_STATES &initialResourceState, const std::optional< D3D12_CLEAR_VALUE > &resourceClearValue)
 
std::variant< std::vector< std::unique_ptr< DirectXResource > >, ErrormakeRtvResourcesFromSwapChainBuffer (IDXGISwapChain3 *pSwapChain, unsigned int iSwapChainBufferCount)
 
DirectXDescriptorHeapgetRtvHeap () const
 
DirectXDescriptorHeapgetDsvHeap () const
 
DirectXDescriptorHeapgetCbvSrvUavHeap () const
 
virtual std::string getCurrentStateInfo () override
 
- Public Member Functions inherited from ne::GpuResourceManager
virtual size_t getTotalVideoMemoryInMb () const =0
 
virtual size_t getUsedVideoMemoryInMb () const =0
 
virtual std::variant< std::unique_ptr< GpuResource >, ErrorloadTextureFromDisk (const std::string &sResourceName, const std::filesystem::path &pathToTextureFile)=0
 
virtual std::variant< std::unique_ptr< UploadBuffer >, ErrorcreateResourceWithCpuWriteAccess (const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, std::optional< bool > isUsedInShadersAsArrayResource)=0
 
virtual std::variant< std::unique_ptr< GpuResource >, ErrorcreateResourceWithData (const std::string &sResourceName, const void *pBufferData, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource)=0
 
virtual std::variant< std::unique_ptr< GpuResource >, ErrorcreateResource (const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource)=0
 
virtual std::variant< std::unique_ptr< GpuResource >, ErrorcreateShaderReadWriteTextureResource (const std::string &sResourceName, unsigned int iWidth, unsigned int iHeight, ShaderReadWriteTextureResourceFormat format)=0
 
virtual std::string getCurrentStateInfo ()=0
 
RenderergetRenderer () const
 
TextureManagergetTextureManager () const
 
ShadowMapManagergetShadowMapManager () const
 
DynamicCpuWriteShaderResourceArrayManagergetDynamicCpuWriteShaderResourceArrayManager () const
 
size_t getTotalAliveResourceCount ()
 
+ + + + + +

+Static Public Member Functions

static DXGI_FORMAT convertTextureResourceFormatToDxFormat (ShaderReadWriteTextureResourceFormat format)
 
static std::variant< std::unique_ptr< DirectXResourceManager >, Errorcreate (DirectXRenderer *pRenderer)
 
+ + + + + + + +

+Private Member Functions

 DirectXResourceManager (DirectXRenderer *pRenderer, ComPtr< D3D12MA::Allocator > &&pMemoryAllocator, std::unique_ptr< DirectXDescriptorHeap > &&pRtvHeap, std::unique_ptr< DirectXDescriptorHeap > &&pDsvHeap, std::unique_ptr< DirectXDescriptorHeap > &&pCbvSrvUavHeap)
 
virtual std::variant< std::unique_ptr< GpuResource >, ErrorcreateShadowMapTexture (const std::string &sResourceName, unsigned int iTextureSize, bool bPointLightColorCubemap) override
 
std::variant< std::unique_ptr< GpuResource >, ErrorcreateResourceWithData (const std::string &sResourceName, const D3D12_RESOURCE_DESC &finalResourceDescription, const std::vector< D3D12_SUBRESOURCE_DATA > &vSubresourcesToCopy, const D3D12_RESOURCE_DESC &uploadResourceDescription, bool bIsTextureResource, size_t iElementSizeInBytes=0, size_t iElementCount=0)
 
+ + + +

+Static Private Member Functions

static size_t makeMultipleOf256 (size_t iNumber)
 
+ + + + + + + + + +

+Private Attributes

ComPtr< D3D12MA::Allocator > pMemoryAllocator
 
std::unique_ptr< DirectXDescriptorHeappRtvHeap
 
std::unique_ptr< DirectXDescriptorHeappDsvHeap
 
std::unique_ptr< DirectXDescriptorHeappCbvSrvUavHeap
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from ne::GpuResourceManager
virtual std::variant< std::unique_ptr< GpuResource >, ErrorcreateShadowMapTexture (const std::string &sResourceName, unsigned int iTextureSize, bool bPointLightColorCubemap)=0
 
 GpuResourceManager (Renderer *pRenderer)
 
void resetManagers ()
 
- Static Protected Member Functions inherited from ne::GpuResourceManager
static std::variant< std::unique_ptr< GpuResourceManager >, Errorcreate (Renderer *pRenderer)
 
static std::variant< std::unique_ptr< GpuResourceManager >, ErrorcreateRendererSpecificManager (Renderer *pRenderer)
 
+

Detailed Description

+

Controls resource creation and descriptors heaps.

+

Constructor & Destructor Documentation

+ +

◆ DirectXResourceManager()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ne::DirectXResourceManager::DirectXResourceManager (DirectXRendererpRenderer,
ComPtr< D3D12MA::Allocator > && pMemoryAllocator,
std::unique_ptr< DirectXDescriptorHeap > && pRtvHeap,
std::unique_ptr< DirectXDescriptorHeap > && pDsvHeap,
std::unique_ptr< DirectXDescriptorHeap > && pCbvSrvUavHeap 
)
+
+private
+
+

Constructor.

+
Parameters
+ + + + + + +
pRendererDirectX renderer.
pMemoryAllocatorCreated memory allocator to use.
pRtvHeapCreated RTV heap manager.
pDsvHeapCreated DSV heap manager.
pCbvSrvUavHeapCreated CBV/SRV/UAV heap.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ convertTextureResourceFormatToDxFormat()

+ +
+
+ + + + + +
+ + + + + + + + +
DXGI_FORMAT ne::DirectXResourceManager::convertTextureResourceFormatToDxFormat (ShaderReadWriteTextureResourceFormat format)
+
+static
+
+

Converts texture resource format to DirectX format.

+
Parameters
+ + +
formatFormat to convert.
+
+
+
Returns
DirectX format.
+ +
+
+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + +
std::variant< std::unique_ptr< DirectXResourceManager >, Error > ne::DirectXResourceManager::create (DirectXRendererpRenderer)
+
+static
+
+

Creates a new resource manager.

+
Parameters
+ + +
pRendererDirectX renderer.
+
+
+
Returns
Error if something went wrong, otherwise created resource manager.
+ +
+
+ +

◆ createResource() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< DirectXResource >, Error > ne::DirectXResourceManager::createResource (const std::string & sResourceName,
const D3D12MA::ALLOCATION_DESC & allocationDesc,
const D3D12_RESOURCE_DESC & resourceDesc,
const D3D12_RESOURCE_STATES & initialResourceState,
const std::optional< D3D12_CLEAR_VALUE > & resourceClearValue 
)
+
+

Creates a new GPU resource.

+
Parameters
+ + + + + + +
sResourceNameResource name, used for logging.
allocationDescAllocation description.
resourceDescResource description.
initialResourceStateInitial resource state.
resourceClearValueClear value for render target or depth/stencil resources.
+
+
+
Returns
Error if something went wrong, otherwise created resource.
+ +
+
+ +

◆ createResource() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< GpuResource >, Error > ne::DirectXResourceManager::createResource (const std::string & sResourceName,
size_t iElementSizeInBytes,
size_t iElementCount,
ResourceUsageType usage,
bool bIsShaderReadWriteResource 
)
+
+overridevirtual
+
+

Creates a new GPU resource (buffer, not a texture) without any initial data.

+
Remarks
This function can be useful if you plan to create a resource to be filled from a (compute) shader and then use this data in some other shader.
+
Parameters
+ + + + + + +
sResourceNameResource name, used for logging.
iElementSizeInBytesSize of one buffer element in bytes.
iElementCountNumber of elements in the resulting buffer.
usageDescribes how you plan to use this resource.
bIsShaderReadWriteResourceSpecify true if you plan to modify the resource from shaders, otherwise false.
+
+
+
Returns
Error if something went wrong, otherwise created resource with filled data.
+ +

Implements ne::GpuResourceManager.

+ +
+
+ +

◆ createResourceWithCpuWriteAccess()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< UploadBuffer >, Error > ne::DirectXResourceManager::createResourceWithCpuWriteAccess (const std::string & sResourceName,
size_t iElementSizeInBytes,
size_t iElementCount,
std::optional< bool > isUsedInShadersAsArrayResource 
)
+
+overridevirtual
+
+

Creates a new GPU resource with available CPU write access (only CPU write not read), typically used for resources that needs to be frequently updated from the CPU side.

+

Example:

struct ObjectData{
+
glm::mat4x4 world;
+
};
+
+
auto result = pResourceManager->createResourceWithCpuWriteAccess(
+
"object constant data",
+
sizeof(ObjectData),
+
1,
+
false);
+
Remarks
This resource can be used as a cbuffer in shaders if bIsUsedInShadersAsReadOnlyData is true.
+
Parameters
+ + + + + +
sResourceNameResource name, used for logging.
iElementSizeInBytesSize of one buffer element in bytes.
iElementCountNumber of elements in the resulting buffer.
isUsedInShadersAsArrayResourceSpecify empty if this resource is not going to be used in shaders, false if this resource will be used in shaders as a single (non-array) resource (cbuffer, uniform, might cause padding to 256 bytes and size limitation up to 64 KB) and true if this resource will be used in shaders as an array resource (StructuredBuffer, storage buffer).
+
+
+
Returns
Error if something went wrong, otherwise created resource.
+ +

Implements ne::GpuResourceManager.

+ +
+
+ +

◆ createResourceWithData() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< GpuResource >, Error > ne::DirectXResourceManager::createResourceWithData (const std::string & sResourceName,
const D3D12_RESOURCE_DESC & finalResourceDescription,
const std::vector< D3D12_SUBRESOURCE_DATA > & vSubresourcesToCopy,
const D3D12_RESOURCE_DESC & uploadResourceDescription,
bool bIsTextureResource,
size_t iElementSizeInBytes = 0,
size_t iElementCount = 0 
)
+
+private
+
+

Creates a new GPU resource and fills it with the specified data.

+
Parameters
+ + + + + + + + +
sResourceNameResource name, used for logging.
finalResourceDescriptionDescription of the final resource to create.
vSubresourcesToCopyDescribes the data that the resulting resource should have.
uploadResourceDescriptionDescription of the upload/staging resource.
bIsTextureResourcetrue if the final resource will be used as a read-only texture in pixel shader, false if the final resource is not a texture.
iElementSizeInBytesOptional size of one buffer element in bytes.
iElementCountOptional number of elements in the resulting buffer.
+
+
+
Returns
Error if something went wrong, otherwise created resource with filled data.
+ +
+
+ +

◆ createResourceWithData() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< GpuResource >, Error > ne::DirectXResourceManager::createResourceWithData (const std::string & sResourceName,
const void * pBufferData,
size_t iElementSizeInBytes,
size_t iElementCount,
ResourceUsageType usage,
bool bIsShaderReadWriteResource 
)
+
+overridevirtual
+
+

Creates a new GPU resource (buffer, not a texture) and fills it with the specified data.

+

Example:

std::vector<glm::vec3> vVertices;
+
+
auto result = pResourceManager->createResourceWithData(
+
"mesh vertex buffer",
+
vVertices.data(),
+
sizeof(glm::vec3),
+
vVertices.size(),
+
true);
+
Parameters
+ + + + + + + +
sResourceNameResource name, used for logging.
pBufferDataPointer to the data that the new resource will contain.
iElementSizeInBytesSize of one buffer element in bytes.
iElementCountNumber of elements in the resulting buffer.
usageDescribes how you plan to use this resource.
bIsShaderReadWriteResourceSpecify true if you plan to modify the resource from shaders, otherwise false.
+
+
+
Returns
Error if something went wrong, otherwise created resource with filled data.
+ +

Implements ne::GpuResourceManager.

+ +
+
+ +

◆ createShaderReadWriteTextureResource()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< GpuResource >, Error > ne::DirectXResourceManager::createShaderReadWriteTextureResource (const std::string & sResourceName,
unsigned int iWidth,
unsigned int iHeight,
ShaderReadWriteTextureResourceFormat format 
)
+
+overridevirtual
+
+

Creates a texture resource that is available as a read/write resource in shaders.

+
Parameters
+ + + + + +
sResourceNameResource name, used for logging.
iWidthWidth of the texture in pixels.
iHeightHeight of the texture in pixels.
formatFormat of the texture.
+
+
+
Returns
Error if something went wrong, otherwise created texture resource.
+ +

Implements ne::GpuResourceManager.

+ +
+
+ +

◆ createShadowMapTexture()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< GpuResource >, Error > ne::DirectXResourceManager::createShadowMapTexture (const std::string & sResourceName,
unsigned int iTextureSize,
bool bPointLightColorCubemap 
)
+
+overrideprivatevirtual
+
+

Creates a GPU resource to be used as a shadow map.

+
Parameters
+ + + + +
sResourceNameResource name, used for logging.
iTextureSizeSize of one dimension of the texture in pixels. Must be power of 2 (128, 256, 512, 1024, 2048, etc.).
bPointLightColorCubemapfalse is you need a single 2D texture resource or true to have 6 2D textures arranged as a cube map specifically for point lights.
+
+
+
Returns
Error if something went wrong, otherwise created texture resource.
+ +

Implements ne::GpuResourceManager.

+ +
+
+ +

◆ getCbvSrvUavHeap()

+ +
+
+ + + + + + + +
DirectXDescriptorHeap * ne::DirectXResourceManager::getCbvSrvUavHeap () const
+
+

Returns CBV/SRV/UAV heap.

+
Returns
CBV/SRV/UAV heap. Do not delete returned pointer.
+ +
+
+ +

◆ getCurrentStateInfo()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ne::DirectXResourceManager::getCurrentStateInfo ()
+
+overridevirtual
+
+

Dumps internal state of the resource manager in JSON format.

+
Returns
JSON string.
+ +

Implements ne::GpuResourceManager.

+ +
+
+ +

◆ getDsvHeap()

+ +
+
+ + + + + + + +
DirectXDescriptorHeap * ne::DirectXResourceManager::getDsvHeap () const
+
+

Returns DSV heap.

+
Returns
DSV heap. Do not delete returned pointer.
+ +
+
+ +

◆ getRtvHeap()

+ +
+
+ + + + + + + +
DirectXDescriptorHeap * ne::DirectXResourceManager::getRtvHeap () const
+
+

Returns RTV heap.

+
Returns
RTV heap. Do not delete returned pointer.
+ +
+
+ +

◆ getTotalVideoMemoryInMb()

+ +
+
+ + + + + +
+ + + + + + + +
size_t ne::DirectXResourceManager::getTotalVideoMemoryInMb () const
+
+overridevirtual
+
+

Returns total video memory size (VRAM) in megabytes.

+
Returns
Total video memory size in megabytes.
+ +

Implements ne::GpuResourceManager.

+ +
+
+ +

◆ getUsedVideoMemoryInMb()

+ +
+
+ + + + + +
+ + + + + + + +
size_t ne::DirectXResourceManager::getUsedVideoMemoryInMb () const
+
+overridevirtual
+
+

Returns the amount of video memory (VRAM) occupied by all currently allocated resources.

+
Returns
Size of the video memory used by allocated resources.
+ +

Implements ne::GpuResourceManager.

+ +
+
+ +

◆ loadTextureFromDisk()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< GpuResource >, Error > ne::DirectXResourceManager::loadTextureFromDisk (const std::string & sResourceName,
const std::filesystem::path & pathToTextureFile 
)
+
+overridevirtual
+
+

Loads a texture from a DDS file in the GPU memory.

+
Parameters
+ + + +
sResourceNameResource name, used for logging.
pathToTextureFilePath to the image file that stores texture data.
+
+
+
Returns
Error if something went wrong, otherwise created GPU resource that stores texture data.
+ +

Implements ne::GpuResourceManager.

+ +
+
+ +

◆ makeMultipleOf256()

+ +
+
+ + + + + +
+ + + + + + + + +
static size_t ne::DirectXResourceManager::makeMultipleOf256 (size_t iNumber)
+
+inlinestaticprivate
+
+

Modifies the value to be a multiple of 256.

+

Example:

const auto iResult = makeMultipleOf256(300);
+
assert(iResult == 512);
+
static size_t makeMultipleOf256(size_t iNumber)
Definition: DirectXResourceManager.h:276
+
Parameters
+ + +
iNumberValue to make a multiple of 256.
+
+
+
Returns
Resulting value.
+ +
+
+ +

◆ makeRtvResourcesFromSwapChainBuffer()

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::variant< std::vector< std::unique_ptr< DirectXResource > >, Error > ne::DirectXResourceManager::makeRtvResourcesFromSwapChainBuffer (IDXGISwapChain3 * pSwapChain,
unsigned int iSwapChainBufferCount 
)
+
+

Creates new resources by wrapping swap chain buffers and binding a RTV descriptor to each buffer.

+
Parameters
+ + + +
pSwapChainSwap chain.
iSwapChainBufferCountNumber of buffers swap chain has.
+
+
+
Returns
Error if something went wrong, otherwise created resources.
+ +
+
+

Member Data Documentation

+ +

◆ pCbvSrvUavHeap

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<DirectXDescriptorHeap> ne::DirectXResourceManager::pCbvSrvUavHeap
+
+private
+
+

CBV/SRV/UAV heap manager.

+ +
+
+ +

◆ pDsvHeap

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<DirectXDescriptorHeap> ne::DirectXResourceManager::pDsvHeap
+
+private
+
+

DSV heap manager.

+ +
+
+ +

◆ pMemoryAllocator

+ +
+
+ + + + + +
+ + + + +
ComPtr<D3D12MA::Allocator> ne::DirectXResourceManager::pMemoryAllocator
+
+private
+
+

Allocator for GPU resources.

+ +
+
+ +

◆ pRtvHeap

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<DirectXDescriptorHeap> ne::DirectXResourceManager::pRtvHeap
+
+private
+
+

RTV heap manager.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/directx/resource/DirectXResourceManager.h
  • +
  • src/engine_lib/private/render/directx/resource/DirectXResourceManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1DirectXResourceManager.js b/classne_1_1DirectXResourceManager.js new file mode 100644 index 000000000..c7aa76639 --- /dev/null +++ b/classne_1_1DirectXResourceManager.js @@ -0,0 +1,26 @@ +var classne_1_1DirectXResourceManager = +[ + [ "DirectXResourceManager", "classne_1_1DirectXResourceManager.html#a01f42f11f72e1766795c391ea2978c05", null ], + [ "convertTextureResourceFormatToDxFormat", "classne_1_1DirectXResourceManager.html#a7527c3da0a394fa0a226b9cad10ec5cc", null ], + [ "create", "classne_1_1DirectXResourceManager.html#a03dac55b0407fbad02a7163f1408d897", null ], + [ "createResource", "classne_1_1DirectXResourceManager.html#a6c2d9741e1b106aaad80641e6ec86a75", null ], + [ "createResource", "classne_1_1DirectXResourceManager.html#acd9f6c63e16d7c4300dba39f0a44fbb2", null ], + [ "createResourceWithCpuWriteAccess", "classne_1_1DirectXResourceManager.html#a054542cccba822248ab956d4e7a20a77", null ], + [ "createResourceWithData", "classne_1_1DirectXResourceManager.html#a4b1608b20346b9e8a8e4c17cd54dcbd0", null ], + [ "createResourceWithData", "classne_1_1DirectXResourceManager.html#ad8a2540c34c3a75ef33332a799116b4a", null ], + [ "createShaderReadWriteTextureResource", "classne_1_1DirectXResourceManager.html#a0be34ba9f11f44ca032c048bb1c7f760", null ], + [ "createShadowMapTexture", "classne_1_1DirectXResourceManager.html#ada5ed605700ba61b32343256e1f167e5", null ], + [ "getCbvSrvUavHeap", "classne_1_1DirectXResourceManager.html#aa6d30f7a66a65dcd84fd6187affdf0ae", null ], + [ "getCurrentStateInfo", "classne_1_1DirectXResourceManager.html#ac85dd77c5153331d54ad99c25b76c1a8", null ], + [ "getDsvHeap", "classne_1_1DirectXResourceManager.html#a7541f40bfcc1a066d58160c7887ec4eb", null ], + [ "getRtvHeap", "classne_1_1DirectXResourceManager.html#a5a5c3ebf98c7239375e8aefd7f49e1aa", null ], + [ "getTotalVideoMemoryInMb", "classne_1_1DirectXResourceManager.html#adcb41f6caedbddf9be768f7f4cbce593", null ], + [ "getUsedVideoMemoryInMb", "classne_1_1DirectXResourceManager.html#abde91d9fe0065f1edc51ae2cb427ca7c", null ], + [ "loadTextureFromDisk", "classne_1_1DirectXResourceManager.html#ab9b690e2c5578e44eb7adf100ffcac75", null ], + [ "makeMultipleOf256", "classne_1_1DirectXResourceManager.html#ae0a340ec70ed691ca3f23b628404cdf9", null ], + [ "makeRtvResourcesFromSwapChainBuffer", "classne_1_1DirectXResourceManager.html#af1c93f50b5afb8cf81bd50f338a1e27e", null ], + [ "pCbvSrvUavHeap", "classne_1_1DirectXResourceManager.html#aa9df706ca4877b2369ea4784ce0534e0", null ], + [ "pDsvHeap", "classne_1_1DirectXResourceManager.html#ab675d4fbb32401c0d8966c9657cb6a06", null ], + [ "pMemoryAllocator", "classne_1_1DirectXResourceManager.html#a06f94642e84fbb8b6235d8016fafca9b", null ], + [ "pRtvHeap", "classne_1_1DirectXResourceManager.html#aa71b8a7aa6c023f77c196984411ce6e9", null ] +]; \ No newline at end of file diff --git a/classne_1_1DirectXResourceManager.png b/classne_1_1DirectXResourceManager.png new file mode 100644 index 0000000000000000000000000000000000000000..1cfcac1ce007b4c77851adb09656099923c4ad1a GIT binary patch literal 784 zcmV+r1MmEaP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0007; zNklyE4-5QK{|nbi9~@o|((H=sLivYa7dW9bM@^HJO2Uu@g9%_eLlIhPhR zNsiEhCdm={7&`2KBWpii2@mFT*i{n+wIBV12eOl)bUtP+qkSJ!DbX=&?B zA8XpKp@A-WT4=xM#sUxV3AEj08K?Fvuc!RuZ=lbx#GOX^JY7dfn(N-_s;0ZpKDKX^ zaoU)DtdN}(@(&-wy90GY`pB9-7es_B0Gr%9Beb9aV1yPl0CR;9!fZm2q`9=9C252fv?PttE%dQd zj~|lMXm33`-ak^PBz>$j;^D}9==+549;>Hwzn5wslJt=>bcjQ(Va3NYAom`R^HxLW zh?1B5LT8yM?Z1YTU744Yb`*E%e!Ip^eifBL2s(p>v{QvoAOMW*xb5`l_ZYixng% zKfZ5NlOaL3l~>i_576G}AgR(7%ymsy8?uw(>e1}>4s_Y@wpI#OwfEis;_CFsXF!{w znz+QBZ_Vj3%NMc3_ubI0SZ9HDpSo$FC8^bdmZT9{(2_JlJ9G#kOs0R+7nAx6Hr2xb O0000 + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::DirectXShadowMapArrayIndexManager Member List
+
+
+ +

This is the complete list of members for ne::DirectXShadowMapArrayIndexManager, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bindShadowMapsToAllPipelines() overridene::DirectXShadowMapArrayIndexManagerprotectedvirtual
bindShadowMapsToPipeline(Pipeline *pPipeline) overridene::DirectXShadowMapArrayIndexManagerprotectedvirtual
changeShadowMapArrayIndex(ShadowMapHandle *pShadowMapHandle, unsigned int iNewArrayIndex)ne::ShadowMapArrayIndexManagerprotectedstatic
create(Renderer *pRenderer, GpuResourceManager *pResourceManager, const std::string &sShaderArrayResourceName)ne::DirectXShadowMapArrayIndexManagerstatic
DirectXShadowMapArrayIndexManager()=delete (defined in ne::DirectXShadowMapArrayIndexManager)ne::DirectXShadowMapArrayIndexManager
DirectXShadowMapArrayIndexManager(const DirectXShadowMapArrayIndexManager &)=delete (defined in ne::DirectXShadowMapArrayIndexManager)ne::DirectXShadowMapArrayIndexManager
DirectXShadowMapArrayIndexManager(DirectXShadowMapArrayIndexManager &&) noexcept=delete (defined in ne::DirectXShadowMapArrayIndexManager)ne::DirectXShadowMapArrayIndexManager
DirectXShadowMapArrayIndexManager(Renderer *pRenderer, const std::string &sShaderArrayResourceName)ne::DirectXShadowMapArrayIndexManagerprotected
getRenderer() constne::ShadowMapArrayIndexManagerprotected
getShaderArrayResourceName()ne::ShadowMapArrayIndexManagerprotected
getSrvDescriptorRange() constne::DirectXShadowMapArrayIndexManagerinline
mtxRegisteredShadowMapsne::DirectXShadowMapArrayIndexManagerprivate
onSrvRangeIndicesChanged()ne::DirectXShadowMapArrayIndexManagerprivate
operator=(const DirectXShadowMapArrayIndexManager &)=delete (defined in ne::DirectXShadowMapArrayIndexManager)ne::DirectXShadowMapArrayIndexManager
operator=(DirectXShadowMapArrayIndexManager &&) noexcept=delete (defined in ne::DirectXShadowMapArrayIndexManager)ne::DirectXShadowMapArrayIndexManager
operator=(const ShadowMapArrayIndexManager &)=delete (defined in ne::ShadowMapArrayIndexManager)ne::ShadowMapArrayIndexManager
operator=(ShadowMapArrayIndexManager &&) noexcept=delete (defined in ne::ShadowMapArrayIndexManager)ne::ShadowMapArrayIndexManager
pRendererne::ShadowMapArrayIndexManagerprivate
pSrvRangene::DirectXShadowMapArrayIndexManagerprivate
registerShadowMapResource(ShadowMapHandle *pShadowMapHandle) overridene::DirectXShadowMapArrayIndexManagerprotectedvirtual
ShadowMapArrayIndexManager()=delete (defined in ne::ShadowMapArrayIndexManager)ne::ShadowMapArrayIndexManager
ShadowMapArrayIndexManager(const ShadowMapArrayIndexManager &)=delete (defined in ne::ShadowMapArrayIndexManager)ne::ShadowMapArrayIndexManager
ShadowMapArrayIndexManager(ShadowMapArrayIndexManager &&) noexcept=delete (defined in ne::ShadowMapArrayIndexManager)ne::ShadowMapArrayIndexManager
ShadowMapArrayIndexManager(Renderer *pRenderer, const std::string &sShaderArrayResourceName)ne::ShadowMapArrayIndexManagerprotected
sShaderArrayResourceNamene::ShadowMapArrayIndexManagerprivate
unregisterShadowMapResource(ShadowMapHandle *pShadowMapHandle) overridene::DirectXShadowMapArrayIndexManagerprotectedvirtual
~DirectXShadowMapArrayIndexManager() overridene::DirectXShadowMapArrayIndexManagervirtual
~ShadowMapArrayIndexManager()=default (defined in ne::ShadowMapArrayIndexManager)ne::ShadowMapArrayIndexManagervirtual
+
+ + + + diff --git a/classne_1_1DirectXShadowMapArrayIndexManager.html b/classne_1_1DirectXShadowMapArrayIndexManager.html new file mode 100644 index 000000000..2d186331d --- /dev/null +++ b/classne_1_1DirectXShadowMapArrayIndexManager.html @@ -0,0 +1,583 @@ + + + + + + + +Nameless Engine: ne::DirectXShadowMapArrayIndexManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <DirectXShadowMapArrayIndexManager.h>

+
+Inheritance diagram for ne::DirectXShadowMapArrayIndexManager:
+
+
+ + +ne::ShadowMapArrayIndexManager + +
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

DirectXShadowMapArrayIndexManager (const DirectXShadowMapArrayIndexManager &)=delete
 
+DirectXShadowMapArrayIndexManageroperator= (const DirectXShadowMapArrayIndexManager &)=delete
 
DirectXShadowMapArrayIndexManager (DirectXShadowMapArrayIndexManager &&) noexcept=delete
 
+DirectXShadowMapArrayIndexManageroperator= (DirectXShadowMapArrayIndexManager &&) noexcept=delete
 
virtual ~DirectXShadowMapArrayIndexManager () override
 
ContinuousDirectXDescriptorRangegetSrvDescriptorRange () const
 
- Public Member Functions inherited from ne::ShadowMapArrayIndexManager
ShadowMapArrayIndexManager (const ShadowMapArrayIndexManager &)=delete
 
+ShadowMapArrayIndexManageroperator= (const ShadowMapArrayIndexManager &)=delete
 
ShadowMapArrayIndexManager (ShadowMapArrayIndexManager &&) noexcept=delete
 
+ShadowMapArrayIndexManageroperator= (ShadowMapArrayIndexManager &&) noexcept=delete
 
+ + + + + + +

+Static Public Member Functions

static std::variant< std::unique_ptr< DirectXShadowMapArrayIndexManager >, Errorcreate (Renderer *pRenderer, GpuResourceManager *pResourceManager, const std::string &sShaderArrayResourceName)
 
- Static Public Member Functions inherited from ne::ShadowMapArrayIndexManager
static std::variant< std::unique_ptr< ShadowMapArrayIndexManager >, Errorcreate (Renderer *pRenderer, GpuResourceManager *pResourceManager, const std::string &sShaderArrayResourceName)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

 DirectXShadowMapArrayIndexManager (Renderer *pRenderer, const std::string &sShaderArrayResourceName)
 
virtual std::optional< ErrorregisterShadowMapResource (ShadowMapHandle *pShadowMapHandle) override
 
virtual std::optional< ErrorunregisterShadowMapResource (ShadowMapHandle *pShadowMapHandle) override
 
virtual std::optional< ErrorbindShadowMapsToPipeline (Pipeline *pPipeline) override
 
virtual std::optional< ErrorbindShadowMapsToAllPipelines () override
 
- Protected Member Functions inherited from ne::ShadowMapArrayIndexManager
 ShadowMapArrayIndexManager (Renderer *pRenderer, const std::string &sShaderArrayResourceName)
 
virtual std::optional< ErrorregisterShadowMapResource (ShadowMapHandle *pShadowMapHandle)=0
 
virtual std::optional< ErrorunregisterShadowMapResource (ShadowMapHandle *pShadowMapHandle)=0
 
virtual std::optional< ErrorbindShadowMapsToPipeline (Pipeline *pPipeline)=0
 
virtual std::optional< ErrorbindShadowMapsToAllPipelines ()=0
 
std::string_view getShaderArrayResourceName ()
 
RenderergetRenderer () const
 
+ + + +

+Private Member Functions

void onSrvRangeIndicesChanged ()
 
+ + + + + +

+Private Attributes

std::unique_ptr< ContinuousDirectXDescriptorRangepSrvRange
 
std::pair< std::recursive_mutex, std::unordered_set< ShadowMapHandle * > > mtxRegisteredShadowMaps
 
+ + + + +

+Additional Inherited Members

- Static Protected Member Functions inherited from ne::ShadowMapArrayIndexManager
static void changeShadowMapArrayIndex (ShadowMapHandle *pShadowMapHandle, unsigned int iNewArrayIndex)
 
+

Detailed Description

+

Manages indices of shadows maps into a descriptor array used by shaders.

+

Constructor & Destructor Documentation

+ +

◆ ~DirectXShadowMapArrayIndexManager()

+ +
+
+ + + + + +
+ + + + + + + +
ne::DirectXShadowMapArrayIndexManager::~DirectXShadowMapArrayIndexManager ()
+
+overridevirtual
+
+

Makes sure no descriptor is registered.

+ +
+
+ +

◆ DirectXShadowMapArrayIndexManager()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ne::DirectXShadowMapArrayIndexManager::DirectXShadowMapArrayIndexManager (RendererpRenderer,
const std::string & sShaderArrayResourceName 
)
+
+protected
+
+

Initializes the manager except for SRV range which is expected to be initialized after construction.

+
Warning
Only used internally, prefer to use create.
+
Parameters
+ + + +
pRendererRenderer.
sShaderArrayResourceNameName of the array (defined in shaders) that this manager controls.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ bindShadowMapsToAllPipelines()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::DirectXShadowMapArrayIndexManager::bindShadowMapsToAllPipelines ()
+
+overrideprotectedvirtual
+
+

Goes through all graphics pipelines ad binds shadow maps to pipelines that use them.

+
Returns
Error if something went wrong.
+ +

Implements ne::ShadowMapArrayIndexManager.

+ +
+
+ +

◆ bindShadowMapsToPipeline()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::DirectXShadowMapArrayIndexManager::bindShadowMapsToPipeline (PipelinepPipeline)
+
+overrideprotectedvirtual
+
+

Looks if the specified pipeline uses shadow maps and if uses binds shadow maps to the pipeline.

+
Parameters
+ + +
pPipelinePipeline to bind shadow maps to.
+
+
+
Returns
Error if something went wrong.
+ +

Implements ne::ShadowMapArrayIndexManager.

+ +
+
+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< DirectXShadowMapArrayIndexManager >, Error > ne::DirectXShadowMapArrayIndexManager::create (RendererpRenderer,
GpuResourceManagerpResourceManager,
const std::string & sShaderArrayResourceName 
)
+
+static
+
+

Creates a new index manager.

+
Parameters
+ + + + +
pRendererRenderer.
pResourceManagerResource manager.
sShaderArrayResourceNameName of the array (defined in shaders) that this manager controls.
+
+
+
Returns
Error if something went wrong, otherwise created manager.
+ +
+
+ +

◆ getSrvDescriptorRange()

+ +
+
+ + + + + +
+ + + + + + + +
ContinuousDirectXDescriptorRange * ne::DirectXShadowMapArrayIndexManager::getSrvDescriptorRange () const
+
+inline
+
+

Returns internal SRV descriptor range to the array of shadow maps.

+
Returns
SRV descriptor range.
+ +
+
+ +

◆ onSrvRangeIndicesChanged()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::DirectXShadowMapArrayIndexManager::onSrvRangeIndicesChanged ()
+
+private
+
+

Called after SRV range changed its location in the heap.

+ +
+
+ +

◆ registerShadowMapResource()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::DirectXShadowMapArrayIndexManager::registerShadowMapResource (ShadowMapHandlepShadowMapHandle)
+
+overrideprotectedvirtual
+
+

Reserves an index into a descriptor array for the shadow map resource of the specified handle and bind internal GPU shadow map resource (if the handle) to that descriptor.

+
Remarks
Use unregisterShadowMapResource to unregister it later (must be done before this manager is destroyed) when shadow map is being destroyed.
+
Parameters
+ + +
pShadowMapHandleShadow map to register.
+
+
+
Returns
Error if something went wrong.
+ +

Implements ne::ShadowMapArrayIndexManager.

+ +
+
+ +

◆ unregisterShadowMapResource()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::DirectXShadowMapArrayIndexManager::unregisterShadowMapResource (ShadowMapHandlepShadowMapHandle)
+
+overrideprotectedvirtual
+
+

Unregisters a shadow map and frees its index into a descriptor array to be used by others.

+
Parameters
+ + +
pShadowMapHandleShadow map to unregister.
+
+
+
Returns
Error if something went wrong.
+ +

Implements ne::ShadowMapArrayIndexManager.

+ +
+
+

Member Data Documentation

+ +

◆ mtxRegisteredShadowMaps

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, std::unordered_set<ShadowMapHandle*> > ne::DirectXShadowMapArrayIndexManager::mtxRegisteredShadowMaps
+
+private
+
+

Info about shadows maps that take place in this array.

+ +
+
+ +

◆ pSrvRange

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<ContinuousDirectXDescriptorRange> ne::DirectXShadowMapArrayIndexManager::pSrvRange
+
+private
+
+

Continuous SRV descriptor range of registered shadow maps for shaders.

+
Remarks
Always valid, never changing pointer.
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/directx/resource/shadow/DirectXShadowMapArrayIndexManager.h
  • +
  • src/engine_lib/private/render/directx/resource/shadow/DirectXShadowMapArrayIndexManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1DirectXShadowMapArrayIndexManager.js b/classne_1_1DirectXShadowMapArrayIndexManager.js new file mode 100644 index 000000000..660ee7819 --- /dev/null +++ b/classne_1_1DirectXShadowMapArrayIndexManager.js @@ -0,0 +1,14 @@ +var classne_1_1DirectXShadowMapArrayIndexManager = +[ + [ "~DirectXShadowMapArrayIndexManager", "classne_1_1DirectXShadowMapArrayIndexManager.html#a97be552860a91c2516a4832231e4fad9", null ], + [ "DirectXShadowMapArrayIndexManager", "classne_1_1DirectXShadowMapArrayIndexManager.html#a49a1df0ef8c6ceeb226defc52eeabd36", null ], + [ "bindShadowMapsToAllPipelines", "classne_1_1DirectXShadowMapArrayIndexManager.html#a46e6d305747093b638fde6040f04de9e", null ], + [ "bindShadowMapsToPipeline", "classne_1_1DirectXShadowMapArrayIndexManager.html#afbbb79f5322dade315bb41c8d31f4dcc", null ], + [ "create", "classne_1_1DirectXShadowMapArrayIndexManager.html#aec6ba090fa1681274b6b3c2d2ff86d27", null ], + [ "getSrvDescriptorRange", "classne_1_1DirectXShadowMapArrayIndexManager.html#a8f23a478ce9332b11b68c8bdcb120f5b", null ], + [ "onSrvRangeIndicesChanged", "classne_1_1DirectXShadowMapArrayIndexManager.html#a66afc43c6e8e3b971e7b3ed121ad67fd", null ], + [ "registerShadowMapResource", "classne_1_1DirectXShadowMapArrayIndexManager.html#aca5bcd3d1658998fb438a82c6d032417", null ], + [ "unregisterShadowMapResource", "classne_1_1DirectXShadowMapArrayIndexManager.html#ad3640175d6093d4a9ac48964706ffdf9", null ], + [ "mtxRegisteredShadowMaps", "classne_1_1DirectXShadowMapArrayIndexManager.html#a82078a70bb424fbc09ad4a9db8fa30b0", null ], + [ "pSrvRange", "classne_1_1DirectXShadowMapArrayIndexManager.html#aadb4593349672386299166e727c94b78", null ] +]; \ No newline at end of file diff --git a/classne_1_1DirectXShadowMapArrayIndexManager.png b/classne_1_1DirectXShadowMapArrayIndexManager.png new file mode 100644 index 0000000000000000000000000000000000000000..d55a780210022d4608eda2b497a0678e65370d91 GIT binary patch literal 946 zcmeAS@N?(olHy`uVBq!ia0y~yU}Ofe12{mWR?-6zASE5(6XN>+|9>F!#hb6C{fCxY z7-$wqOh5DDz<~om@!(09R{-TWOM?7@8Gw8+FlU;5g@J+D*3-o?q=ND7+}C}t6?j?_ zmDc|G=U;QFVDrHVA<}cprbZrJcskWUe%ojBoZH)M?;K)d=r=P`U^Y@{jyLG|eSbA0 zLvphJ+oHBR`)+2~moMdJ$iMlUr!V*WbyK#L`sNI`gs-z(BpO_2ZTOyZHsQOmY-H}W zbq9LhzE`%2`#;q{GdL*t(DE;-OBegDmx}jX{5E0f^j&?{>3jSoMABzPKjV87@z>ul z!!~tM;+1m?r>#n4gSIu10eT4wt=BO&tc>kr-mZ3T_8hiT*9()xd90e3 zX}fL9wqI9cckg_wX0zR8Yw6G5teB&-e2&gEbAHIka9z(ZLv*+6Y)S9vSx!7IC1pM* zzury^m{N7>UHQR_wuS5rHPOZl4YS`K68}4`|DUu`{D}vAEYCSVT;+M!+4RqujluZ$ zdme@dr+au#H1M2oFubuXw|ZNvz@hZF>Ma6tc_{*QbsUX6aU62|jXV*;CxL1jc$_$1 zDFQ=Isz6#HNTFqc99%{}Ss=NGf4hLIi(GDs0~-)cmymJ&{6kU6=*GR-Y;o^x zO6R;>qZ>Q#%`dMvpjgsYGTLa`yfwkH*tWX0=$OLd;*UD~1&0#W0VOt{O1N(`*IDyQ zwBPcYzX6jkc^gZlekfMUHTFsl9Jwp1E65L)F zh-URpy~y!;J)5cjo5E+s7SY>e-xMT1ds+2vOGRMeg7n>m3Hm2P+z3k6 zI=7|pb;a=oQxoS(tO{AF79J^^>!y~Q$+gjA%DFzxopshcT|xdg|LR%nQhz7Grld4~ zGq>NJC(D&Tr%T* + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::DirectionalLightNode Member List
+
+
+ +

This is the complete list of members for ne::DirectionalLightNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addChildNode(const sgc::GcPtr< Node > &pNode, AttachmentRule locationRule=AttachmentRule::KEEP_WORLD, AttachmentRule rotationRule=AttachmentRule::KEEP_WORLD, AttachmentRule scaleRule=AttachmentRule::KEEP_WORLD)ne::Node
applyAttachmentRule(Node::AttachmentRule locationRule, const glm::vec3 &worldLocationBeforeAttachment, Node::AttachmentRule rotationRule, const glm::vec3 &worldRotationBeforeAttachment, Node::AttachmentRule scaleRule, const glm::vec3 &worldScaleBeforeAttachment)ne::SpatialNodeprivate
AttachmentRule enum namene::Node
bSerializene::Nodeprivate
colorne::DirectionalLightNodeprivate
createNotificationBroadcaster()ne::Nodeinlineprotected
createTimer(const std::string &sTimerName)ne::Nodeprotected
deserialize(const std::filesystem::path &pathToFile)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)ne::Serializablestatic
deserialize(std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, const std::string &sEntityId)ne::Serializablestatic
deserialize(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})ne::Serializablestatic
deserializeFromSection(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sSectionName, const std::string &sTypeGuid, const std::string &sEntityId, const std::optional< std::filesystem::path > &optionalPathToFile)ne::Serializableprivatestatic
deserializeMultiple(std::filesystem::path pathToFile)ne::Serializablestatic
deserializeNodeTree(const std::filesystem::path &pathToFile)ne::Nodestatic
despawn()ne::Nodeprivate
detachFromParentAndDespawn()ne::Node
DirectionalLightNode() (defined in ne::DirectionalLightNode)ne::DirectionalLightNode
DirectionalLightNode(const std::string &sNodeName)ne::DirectionalLightNode
enableTimer(Timer *pTimer, bool bEnable)ne::Nodeprivate
findValidWorld()ne::Nodeprivate
getActionEventBindings()ne::Nodeprotected
getAliveNodeCount()ne::Nodestatic
getAxisEventBindings()ne::Nodeprotected
getChildNodeOfType(const std::string &sChildNodeName="")ne::Node
getChildNodes()ne::Node
getClassForGuid(const std::string &sGuid)ne::Serializableprivatestatic
getClassForGuid(const rfk::Struct *pArchetypeToAnalyze, const std::string &sGuid)ne::Serializableprivatestatic
getClosestSpatialParent()ne::SpatialNode
getGameInstance()ne::Nodestatic
getIdsFromFile(std::filesystem::path pathToFile)ne::Serializablestatic
getIndexIntoShadowPassInfoShaderArray()ne::DirectionalLightNodeprivate
getInformationForSerialization(size_t &iId, std::optional< size_t > iParentId)ne::Nodeprivate
getLightColor() constne::DirectionalLightNode
getLightIntensity() constne::DirectionalLightNode
getNodeId() constne::Node
getNodeName() constne::Node
getParentNode()ne::Node
getParentNodeOfType(const std::string &sParentNodeName="")ne::Node
getPathDeserializedFromRelativeToRes() constne::Serializable
getRelativeLocation() constne::SpatialNodeinline
getRelativeRotation() constne::SpatialNodeinline
getRelativeRotationMatrix()ne::SpatialNode
getRelativeScale() constne::SpatialNodeinline
getShadowMapHandle() constne::DirectionalLightNodeprivate
getSpawnDespawnMutex()ne::Nodeprotected
getTickGroup() constne::Node
getWorldForwardDirection()ne::SpatialNode
getWorldLocation()ne::SpatialNode
getWorldMatrix()ne::SpatialNode
getWorldRightDirection()ne::SpatialNode
getWorldRootNode()ne::Node
getWorldRotation()ne::SpatialNode
getWorldRotationQuaternion()ne::SpatialNode
getWorldScale()ne::SpatialNode
getWorldUpDirection()ne::SpatialNode
iNodeIdne::Nodeprivate
intensityne::DirectionalLightNodeprivate
isCalledEveryFrame()ne::Node
isChildOf(Node *pNode)ne::Node
isParentOf(Node *pNode)ne::Node
isReceivingInput()ne::Node
isSerialized() constne::Node
isSpawned()ne::Node
isTreeDeserializedFromOneFile(const std::string &sPathRelativeToRes)ne::Nodeprivate
lockChildren()ne::Nodeprivate
markShaderDataToBeCopiedToGpu()ne::DirectionalLightNodeprivate
markShadowPassDataToBeCopiedToGpu()ne::DirectionalLightNodeprivate
mtxBindedActionEventsne::Nodeprivate
mtxBindedAxisEventsne::Nodeprivate
mtxChildNodesne::Nodeprivate
mtxCreatedBroadcastersne::Nodeprivate
mtxCreatedTimersne::Nodeprivate
mtxIsCalledEveryFramene::Nodeprivate
mtxIsReceivingInputne::Nodeprivate
mtxIsSpawnedne::Nodeprivate
mtxLocalSpacene::SpatialNodeprivate
mtxParentNodene::Nodeprivate
mtxShaderDatane::DirectionalLightNodeprivate
mtxSpatialParentne::SpatialNodeprivate
mtxWorldMatrixne::SpatialNodeprivate
ne::Node::Node(const std::string &sName)ne::Node
Node(const Node &)=delete (defined in ne::Node)ne::Node
Node(Node &&)=delete (defined in ne::Node)ne::Node
notifyAboutAttachedToNewParent(bool bThisNodeBeingAttached)ne::Nodeprivate
notifyAboutDetachingFromParent(bool bThisNodeBeingDetached)ne::Nodeprivate
onAfterAttachedToNewParent(bool bThisNodeBeingAttached) overridene::SpatialNodeprotectedvirtual
onAfterDeserialized() overridene::DirectionalLightNodeprotectedvirtual
onBeforeDetachedFromParent(bool bThisNodeBeingDetached)ne::Nodeinlineprotectedvirtual
onBeforeNewFrame(float timeSincePrevFrameInSec)ne::Nodeinlineprotectedvirtual
onChildNodesSpawned()ne::Nodeinlineprotectedvirtual
onDespawning() overridene::DirectionalLightNodeprotectedvirtual
onFinishedUpdatingShaderData()ne::DirectionalLightNodeprivate
onFinishedUpdatingShadowPassData()ne::DirectionalLightNodeprivate
onInputActionEvent(unsigned int iActionId, KeyboardModifiers modifiers, bool bIsPressedDown)ne::Nodeprivate
onInputAxisEvent(unsigned int iAxisEventId, KeyboardModifiers modifiers, float input)ne::Nodeprivate
onMouseMove(double xOffset, double yOffset)ne::Nodeinlineprotectedvirtual
onMouseScrollMove(int iOffset)ne::Nodeinlineprotectedvirtual
onShadowMapArrayIndexChanged(unsigned int iNewIndexIntoArray)ne::DirectionalLightNodeprivate
onSpawning() overridene::DirectionalLightNodeprotectedvirtual
onStartedUpdatingShaderData()ne::DirectionalLightNodeprivate
onStartedUpdatingShadowPassData()ne::DirectionalLightNodeprivate
onWorldLocationRotationScaleChanged() overridene::DirectionalLightNodeprotectedvirtual
operator=(const Node &)=delete (defined in ne::Node)ne::Node
operator=(Node &&)=delete (defined in ne::Node)ne::Node
pathDeserializedFromRelativeToResne::Serializableprivate
pShadowMapHandlene::DirectionalLightNodeprivate
pWorldne::Nodeprivate
recalculateLocalMatrix()ne::SpatialNodeprivate
recalculateShadowMappingShaderData()ne::DirectionalLightNodeprivate
recalculateWorldMatrix(bool bNotifyChildren=true)ne::SpatialNodeprivate
recalculateWorldMatrixForNodeAndNotifyChildren(Node *pNode)ne::SpatialNodeprivate
relativeLocationne::SpatialNodeprivate
relativeRotationne::SpatialNodeprivate
relativeScalene::SpatialNodeprivate
Renderer (defined in ne::DirectionalLightNode)ne::DirectionalLightNodefriend
resolvePathToToml(std::filesystem::path &pathToFile)ne::Serializableprivatestatic
sCustomAttributePrefixne::Serializableprivatestatic
Serializable()=default (defined in ne::Serializable)ne::Serializable
serialize(std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})ne::Serializable
serialize(toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serialize(toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serializeMultiple(std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)ne::Serializablestatic
serializeNodeTree(const std::filesystem::path &pathToFile, bool bEnableBackup)ne::Node
setIsCalledEveryFrame(bool bEnable)ne::Nodeprotected
setIsReceivingInput(bool bEnable)ne::Nodeprotected
setLightColor(const glm::vec3 &color)ne::DirectionalLightNode
setLightIntensity(float intensity)ne::DirectionalLightNode
setNodeName(const std::string &sName)ne::Node
setRelativeLocation(const glm::vec3 &location)ne::SpatialNode
setRelativeRotation(const glm::vec3 &rotation)ne::SpatialNode
setRelativeScale(const glm::vec3 &scale)ne::SpatialNode
setSerialize(bool bSerialize)ne::Node
setTickGroup(TickGroup tickGroup)ne::Nodeprotected
setWorldLocation(const glm::vec3 &location)ne::SpatialNode
setWorldRotation(const glm::vec3 &rotation)ne::SpatialNode
setWorldScale(const glm::vec3 &scale)ne::SpatialNode
sExternalNodeTreePathAttributeNamene::Nodeinlineprivatestatic
sNodeNamene::Nodeprivate
sNothingToSerializeKeyne::Serializableinlineprivatestatic
sParentNodeIdAttributeNamene::Nodeinlineprivatestatic
sPathRelativeToResKeyne::Serializableinlineprivatestatic
SpatialNode() (defined in ne::SpatialNode)ne::SpatialNode
SpatialNode(const std::string &sNodeName)ne::SpatialNode
spawn()ne::Nodeprivate
sSubEntityFieldNameKeyne::Serializableinlineprivatestatic
tickGroupne::Nodeprivate
unlockChildren()ne::Nodeprivate
~DirectionalLightNode() override=default (defined in ne::DirectionalLightNode)ne::DirectionalLightNodevirtual
~Node() overridene::Nodevirtual
~Serializable() override=default (defined in ne::Serializable)ne::Serializablevirtual
~SpatialNode() override=default (defined in ne::SpatialNode)ne::SpatialNodevirtual
+
+ + + + diff --git a/classne_1_1DirectionalLightNode.html b/classne_1_1DirectionalLightNode.html new file mode 100644 index 000000000..00148e32a --- /dev/null +++ b/classne_1_1DirectionalLightNode.html @@ -0,0 +1,1016 @@ + + + + + + + +Nameless Engine: ne::DirectionalLightNode Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <DirectionalLightNode.h>

+
+Inheritance diagram for ne::DirectionalLightNode:
+
+
+ + +ne::SpatialNode +ne::Node +ne::Serializable + +
+ + + + + + +

+Classes

struct  DirecionalLightShaderData
 
struct  ShaderData
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 DirectionalLightNode (const std::string &sNodeName)
 
void setLightColor (const glm::vec3 &color)
 
void setLightIntensity (float intensity)
 
glm::vec3 getLightColor () const
 
float getLightIntensity () const
 
- Public Member Functions inherited from ne::SpatialNode
 SpatialNode (const std::string &sNodeName)
 
void setRelativeLocation (const glm::vec3 &location)
 
void setRelativeRotation (const glm::vec3 &rotation)
 
void setRelativeScale (const glm::vec3 &scale)
 
void setWorldLocation (const glm::vec3 &location)
 
void setWorldRotation (const glm::vec3 &rotation)
 
void setWorldScale (const glm::vec3 &scale)
 
glm::vec3 getRelativeLocation () const
 
glm::vec3 getRelativeRotation () const
 
glm::vec3 getRelativeScale () const
 
glm::mat4x4 getRelativeRotationMatrix ()
 
glm::vec3 getWorldLocation ()
 
glm::vec3 getWorldRotation ()
 
glm::quat getWorldRotationQuaternion ()
 
glm::vec3 getWorldScale ()
 
glm::vec3 getWorldForwardDirection ()
 
glm::vec3 getWorldRightDirection ()
 
glm::vec3 getWorldUpDirection ()
 
glm::mat4x4 getWorldMatrix ()
 
std::pair< std::recursive_mutex, sgc::GcPtr< SpatialNode > > * getClosestSpatialParent ()
 
- Public Member Functions inherited from ne::Node
 Node ()
 
 Node (const std::string &sName)
 
Node (const Node &)=delete
 
+Nodeoperator= (const Node &)=delete
 
Node (Node &&)=delete
 
+Nodeoperator= (Node &&)=delete
 
virtual ~Node () override
 
void setNodeName (const std::string &sName)
 
void detachFromParentAndDespawn ()
 
void addChildNode (const sgc::GcPtr< Node > &pNode, AttachmentRule locationRule=AttachmentRule::KEEP_WORLD, AttachmentRule rotationRule=AttachmentRule::KEEP_WORLD, AttachmentRule scaleRule=AttachmentRule::KEEP_WORLD)
 
void setSerialize (bool bSerialize)
 
std::optional< ErrorserializeNodeTree (const std::filesystem::path &pathToFile, bool bEnableBackup)
 
std::string getNodeName () const
 
sgc::GcPtr< NodegetWorldRootNode ()
 
std::pair< std::recursive_mutex, sgc::GcPtr< Node > > * getParentNode ()
 
std::pair< std::recursive_mutex, sgc::GcVector< sgc::GcPtr< Node > > > * getChildNodes ()
 
template<typename NodeType >
+requires std::derived_from<NodeType, Node>
sgc::GcPtr< NodeType > getParentNodeOfType (const std::string &sParentNodeName="")
 
template<typename NodeType >
+requires std::derived_from<NodeType, Node>
sgc::GcPtr< NodeType > getChildNodeOfType (const std::string &sChildNodeName="")
 
TickGroup getTickGroup () const
 
std::optional< size_t > getNodeId () const
 
bool isCalledEveryFrame ()
 
bool isReceivingInput ()
 
bool isSpawned ()
 
bool isParentOf (Node *pNode)
 
bool isChildOf (Node *pNode)
 
bool isSerialized () const
 
- Public Member Functions inherited from ne::Serializable
std::optional< Errorserialize (std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})
 
std::variant< std::string, Errorserialize (toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::variant< std::string, Errorserialize (toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::optional< std::pair< std::string, std::string > > getPathDeserializedFromRelativeToRes () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void onAfterDeserialized () override
 
virtual void onSpawning () override
 
virtual void onDespawning () override
 
virtual void onWorldLocationRotationScaleChanged () override
 
- Protected Member Functions inherited from ne::SpatialNode
virtual void onAfterDeserialized () override
 
virtual void onSpawning () override
 
virtual void onAfterAttachedToNewParent (bool bThisNodeBeingAttached) override
 
virtual void onWorldLocationRotationScaleChanged ()
 
- Protected Member Functions inherited from ne::Node
void setIsCalledEveryFrame (bool bEnable)
 
void setTickGroup (TickGroup tickGroup)
 
void setIsReceivingInput (bool bEnable)
 
TimercreateTimer (const std::string &sTimerName)
 
template<typename FunctionType >
NodeNotificationBroadcaster< FunctionType > * createNotificationBroadcaster ()
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, bool)> > > * getActionEventBindings ()
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, float)> > > * getAxisEventBindings ()
 
std::recursive_mutex * getSpawnDespawnMutex ()
 
virtual void onMouseMove (double xOffset, double yOffset)
 
virtual void onMouseScrollMove (int iOffset)
 
virtual void onBeforeNewFrame (float timeSincePrevFrameInSec)
 
virtual void onSpawning ()
 
virtual void onChildNodesSpawned ()
 
virtual void onDespawning ()
 
virtual void onBeforeDetachedFromParent (bool bThisNodeBeingDetached)
 
virtual void onAfterAttachedToNewParent (bool bThisNodeBeingAttached)
 
virtual void onAfterDeserialized ()
 
+ + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

ShadowMapHandlegetShadowMapHandle () const
 
unsigned int getIndexIntoShadowPassInfoShaderArray ()
 
void * onStartedUpdatingShaderData ()
 
void onFinishedUpdatingShaderData ()
 
void * onStartedUpdatingShadowPassData ()
 
void onFinishedUpdatingShadowPassData ()
 
void markShadowPassDataToBeCopiedToGpu ()
 
void markShaderDataToBeCopiedToGpu ()
 
void onShadowMapArrayIndexChanged (unsigned int iNewIndexIntoArray)
 
void recalculateShadowMappingShaderData ()
 
+ + + + + + + + + +

+Private Attributes

std::pair< std::recursive_mutex, ShaderDatamtxShaderData
 
std::unique_ptr< ShadowMapHandlepShadowMapHandle
 
glm::vec3 color = glm::vec3(1.0F, 1.0F, 1.0F)
 
float intensity = 1.0F
 
+ + + +

+Friends

+class Renderer
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ne::Node
enum class  AttachmentRule { RESET_RELATIVE +, KEEP_RELATIVE +, KEEP_WORLD + }
 
- Static Public Member Functions inherited from ne::Node
static size_t getAliveNodeCount ()
 
static std::variant< sgc::GcPtr< Node >, ErrordeserializeNodeTree (const std::filesystem::path &pathToFile)
 
static GameInstancegetGameInstance ()
 
- Static Public Member Functions inherited from ne::Serializable
static std::variant< std::pair< std::set< std::string >, toml::value >, ErrorgetIdsFromFile (std::filesystem::path pathToFile)
 
static std::optional< ErrorserializeMultiple (std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::same_as<SmartPointer, sgc::GcPtr<Serializable>> || std::same_as<SmartPointer, std::unique_ptr<Serializable>>
static std::variant< std::vector< DeserializedObjectInformation< SmartPointer > >, ErrordeserializeMultiple (std::filesystem::path pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})
 
+

Detailed Description

+

Represents a directional light source in world.

+

Constructor & Destructor Documentation

+ +

◆ DirectionalLightNode()

+ +
+
+ + + + + + + + +
ne::DirectionalLightNode::DirectionalLightNode (const std::string & sNodeName)
+
+

Creates a new node with the specified name.

+
Parameters
+ + +
sNodeNameName of this node.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getIndexIntoShadowPassInfoShaderArray()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int ne::DirectionalLightNode::getIndexIntoShadowPassInfoShaderArray ()
+
+private
+
+

Used by renderer and returns the current index (because it may change later) into the shader array that stores shadow pass info of spawned light sources.

+
Returns
Index into array.
+ +
+
+ +

◆ getLightColor()

+ +
+
+ + + + + + + +
glm::vec3 ne::DirectionalLightNode::getLightColor () const
+
+

Returns color of this light source.

+
Returns
Color in RGB format in range [0.0; 1.0].
+ +
+
+ +

◆ getLightIntensity()

+ +
+
+ + + + + + + +
float ne::DirectionalLightNode::getLightIntensity () const
+
+

Returns intensity of this light source.

+
Returns
Intensity in range [0.0; 1.0].
+ +
+
+ +

◆ getShadowMapHandle()

+ +
+
+ + + + + +
+ + + + + + + +
ShadowMapHandle * ne::DirectionalLightNode::getShadowMapHandle () const
+
+private
+
+

Used by renderer and returns handle to shadow map texture that this light source uses.

+
Remarks
Do not delete (free) returned pointer.
+
Returns
nullptr if node is not spawned, otherwise valid pointer.
+ +
+
+ +

◆ markShaderDataToBeCopiedToGpu()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::DirectionalLightNode::markShaderDataToBeCopiedToGpu ()
+
+private
+
+

Marks array slot at mtxShaderData as "needs update" (if the slot is created) to later be copied to the GPU resource.

+
Remarks
Does nothing if the slot is nullptr.
+ +
+
+ +

◆ markShadowPassDataToBeCopiedToGpu()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::DirectionalLightNode::markShadowPassDataToBeCopiedToGpu ()
+
+private
+
+

Marks array slot at mtxShaderData for shadow pass data as "needs +update" (if the slot is created) to later be copied to the GPU resource.

+
Remarks
Does nothing if the slot is nullptr.
+ +
+
+ +

◆ onAfterDeserialized()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::DirectionalLightNode::onAfterDeserialized ()
+
+overrideprotectedvirtual
+
+

Called after the object was successfully deserialized. Used to execute post-deserialization logic.

+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +

Reimplemented from ne::SpatialNode.

+ +
+
+ +

◆ onDespawning()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::DirectionalLightNode::onDespawning ()
+
+overrideprotectedvirtual
+
+

Called before this node is despawned from the world to execute custom despawn logic.

+
Remarks
This node will be marked as despawned after this function is called.
+
+This function is called after all child nodes were despawned.
+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +

Reimplemented from ne::Node.

+ +
+
+ +

◆ onFinishedUpdatingShaderData()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::DirectionalLightNode::onFinishedUpdatingShaderData ()
+
+private
+
+

Called after onStartedUpdatingShaderData to notify this node that the renderer has finished copying the data to the GPU resource.

+ +
+
+ +

◆ onFinishedUpdatingShadowPassData()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::DirectionalLightNode::onFinishedUpdatingShadowPassData ()
+
+private
+
+

Called after onStartedUpdatingShadowPassData to notify this node that the renderer has finished copying the data to the GPU resource.

+ +
+
+ +

◆ onShadowMapArrayIndexChanged()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::DirectionalLightNode::onShadowMapArrayIndexChanged (unsigned int iNewIndexIntoArray)
+
+private
+
+

Called after the index into a descriptor array of pShadowMapHandle was initialized/changed.

+
Parameters
+ + +
iNewIndexIntoArrayNew index to use.
+
+
+ +
+
+ +

◆ onSpawning()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::DirectionalLightNode::onSpawning ()
+
+overrideprotectedvirtual
+
+

Called when this node was not spawned previously and it was either attached to a parent node that is spawned or set as world's root node to execute custom spawn logic.

+
Remarks
This node will be marked as spawned before this function is called.
+
+This function is called before any of the child nodes are spawned. If you need to do some logic after child nodes are spawned use onChildNodesSpawned.
+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +

Reimplemented from ne::SpatialNode.

+ +
+
+ +

◆ onStartedUpdatingShaderData()

+ +
+
+ + + + + +
+ + + + + + + +
void * ne::DirectionalLightNode::onStartedUpdatingShaderData ()
+
+private
+
+

Callback that will be called by the renderer when it's ready to copy new (updated) mtxShaderData to the GPU resource.

+
Returns
Pointer to the shader data at mtxShaderData.
+ +
+
+ +

◆ onStartedUpdatingShadowPassData()

+ +
+
+ + + + + +
+ + + + + + + +
void * ne::DirectionalLightNode::onStartedUpdatingShadowPassData ()
+
+private
+
+

Callback that will be called by the renderer when it's ready to copy new (updated) shadow pass data of the light source to the GPU resource.

+
Returns
Pointer to the shadow pass data at mtxShaderData.
+ +
+
+ +

◆ onWorldLocationRotationScaleChanged()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::DirectionalLightNode::onWorldLocationRotationScaleChanged ()
+
+overrideprotectedvirtual
+
+

Called after node's world location/rotation/scale was changed.

+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+
Remarks
If you change location/rotation/scale inside of this function, this function will not be called again (no recursion will occur).
+ +

Reimplemented from ne::SpatialNode.

+ +
+
+ +

◆ recalculateShadowMappingShaderData()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::DirectionalLightNode::recalculateShadowMappingShaderData ()
+
+private
+
+

(Re)calculates data used by shaders in shadow pass and shadow mapping.

+
Remarks
Does not call markShadowPassDataToBeCopiedToGpu or markShaderDataToBeCopiedToGpu.
+ +
+
+ +

◆ setLightColor()

+ +
+
+ + + + + + + + +
void ne::DirectionalLightNode::setLightColor (const glm::vec3 & color)
+
+

Sets light's color.

+
Parameters
+ + +
colorColor in RGB format in range [0.0; 1.0].
+
+
+ +
+
+ +

◆ setLightIntensity()

+ +
+
+ + + + + + + + +
void ne::DirectionalLightNode::setLightIntensity (float intensity)
+
+

Sets light's intensity.

+
Parameters
+ + +
intensityIntensity in range [0.0; 1.0] (will be clamped if outside of the range).
+
+
+ +
+
+

Member Data Documentation

+ +

◆ color

+ +
+
+ + + + + +
+ + + + +
glm::vec3 ne::DirectionalLightNode::color = glm::vec3(1.0F, 1.0F, 1.0F)
+
+private
+
+

Color of the light source.

+ +
+
+ +

◆ intensity

+ +
+
+ + + + + +
+ + + + +
float ne::DirectionalLightNode::intensity = 1.0F
+
+private
+
+

Light intensity, valid values range is [0.0F; 1.0F].

+ +
+
+ +

◆ mtxShaderData

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, ShaderData> ne::DirectionalLightNode::mtxShaderData
+
+private
+
+

Only valid while spawned. Up to date data that will be copied to the GPU.

+ +
+
+ +

◆ pShadowMapHandle

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<ShadowMapHandle> ne::DirectionalLightNode::pShadowMapHandle
+
+private
+
+

References shadow map of the light source.

+
Remarks
Only valid while spawned.
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/game/nodes/light/DirectionalLightNode.h
  • +
  • src/engine_lib/private/game/nodes/light/DirectionalLightNode.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1DirectionalLightNode.js b/classne_1_1DirectionalLightNode.js new file mode 100644 index 000000000..c6ca03e38 --- /dev/null +++ b/classne_1_1DirectionalLightNode.js @@ -0,0 +1,28 @@ +var classne_1_1DirectionalLightNode = +[ + [ "DirecionalLightShaderData", "structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData.html", "structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData" ], + [ "ShaderData", "structne_1_1DirectionalLightNode_1_1ShaderData.html", "structne_1_1DirectionalLightNode_1_1ShaderData" ], + [ "DirectionalLightNode", "classne_1_1DirectionalLightNode.html#a3aaaab3578d22d40515c645997414c82", null ], + [ "getIndexIntoShadowPassInfoShaderArray", "classne_1_1DirectionalLightNode.html#ac2cec88c06759cb8bc625563f9903b1c", null ], + [ "getLightColor", "classne_1_1DirectionalLightNode.html#a299423d36a013e8ae159aa0f5e3006e6", null ], + [ "getLightIntensity", "classne_1_1DirectionalLightNode.html#aa07507fda65b3f4c8ee8ab430ecff03a", null ], + [ "getShadowMapHandle", "classne_1_1DirectionalLightNode.html#aa8accc71d63ece80c100b5fd155f56d7", null ], + [ "markShaderDataToBeCopiedToGpu", "classne_1_1DirectionalLightNode.html#a3c9be0e86ae2e5f1579c0e77ac0eaf34", null ], + [ "markShadowPassDataToBeCopiedToGpu", "classne_1_1DirectionalLightNode.html#aff21b412eff00fd17a16e8413d376d3c", null ], + [ "onAfterDeserialized", "classne_1_1DirectionalLightNode.html#a5371921a835741ed94bc0c823e8f5424", null ], + [ "onDespawning", "classne_1_1DirectionalLightNode.html#a8ecbc829b192d1caf811746b58b8a475", null ], + [ "onFinishedUpdatingShaderData", "classne_1_1DirectionalLightNode.html#a3d3f12064a238c4c35a2d76878e53338", null ], + [ "onFinishedUpdatingShadowPassData", "classne_1_1DirectionalLightNode.html#a7ee385a787777c41b87a5e05a0b197ec", null ], + [ "onShadowMapArrayIndexChanged", "classne_1_1DirectionalLightNode.html#a653214da27f58550d0844ec942cc8dd1", null ], + [ "onSpawning", "classne_1_1DirectionalLightNode.html#a87cfb909061175db5c5ec9a0fc9ef899", null ], + [ "onStartedUpdatingShaderData", "classne_1_1DirectionalLightNode.html#ad043b455bc7abf31320709162ae142c8", null ], + [ "onStartedUpdatingShadowPassData", "classne_1_1DirectionalLightNode.html#ae0e66d75c49bd454ad92df320dbb3f69", null ], + [ "onWorldLocationRotationScaleChanged", "classne_1_1DirectionalLightNode.html#a50234389cb5b38e47185e56802605663", null ], + [ "recalculateShadowMappingShaderData", "classne_1_1DirectionalLightNode.html#a4fae44a2efa51bf7329b13ed343ee567", null ], + [ "setLightColor", "classne_1_1DirectionalLightNode.html#abdf4d81d4378056e13447c6ab21e1e91", null ], + [ "setLightIntensity", "classne_1_1DirectionalLightNode.html#a6d6675f5537e58c71b0282e221e65bcb", null ], + [ "color", "classne_1_1DirectionalLightNode.html#a98b61a649843ca9767bfc2cf0369a6b1", null ], + [ "intensity", "classne_1_1DirectionalLightNode.html#a982292ca92956b6aa0c39439c490aadf", null ], + [ "mtxShaderData", "classne_1_1DirectionalLightNode.html#aaefd19ac77e5ae3a9c16b33f43e4dbdc", null ], + [ "pShadowMapHandle", "classne_1_1DirectionalLightNode.html#afc0e26a3adb732f937ce54a84539c2f7", null ] +]; \ No newline at end of file diff --git a/classne_1_1DirectionalLightNode.png b/classne_1_1DirectionalLightNode.png new file mode 100644 index 0000000000000000000000000000000000000000..cf3956637429df7a7ff3ba38c5255e21bcb3ef16 GIT binary patch literal 1386 zcma)6dsLEV82?P0 zUEw90;Dvw;Axkk@N@(qkYZ944Ze{gwuS$`ZEpNY->rF4%IG76U0 zJR+4!_3uPRdzn7AnojT~0{Z)3YxfFP2LPDN;5_#GpEsH)fTGpgtyZ$WX7=lf=9;?Go$+f$(v66NNlNfr2|SlM$o4oqv==7(fE&b0{^ z<2UGtVBc|d-vYUSfG?^S5%7)pC*amgZMMMFDPSZUE4otbEx?LAxpop)#XG#o{Xq~Q z9s5+8PBjXop#c;`+`N_XqwC&KrX}WL;Z4aHAHT3^y}yFHa-N z>+lz9YersQML?M>u>D=$g?xH#Fe7c-iGsgG;c-arJqp`Ym&z!FacuSw~@?1nGZ%q8qmxR<8w-iWFmNDIu*xQZ}_P$ zya7gu2Wm5n?(AFW*m%W3qPM(6&8YuN)MwJH|LXe#C_|Q^`ZTFli1OXXyczeZbKyr4 zSfsMvo}b{7ruS9$SA!L1-1@~zne`2XYaJPlOZ@HvIOwYuCHauU_{G06O32l>c;JbQ zi4aQ)yixYB%1*E=uA}1lA;z_-Gt>=kExB;X3%4z&Vs58QMW6#nSsjk#yYOV|k6;_B zYPjnunZFsmb@=4s(g=|Xd#o8HQmaN^afxVw2jKRv-2IbS=Ds`nG`jscCB0E-oL;sJ zgKA;Hj1DJHd=#~6FiQxBr0%@1>1S)c=`W6T9*+c12GupSCU$Dvd+m4${W-j$GX*{7 z*Gs(3LG@sl7$nt=b2km8STJ+pL8lr?5<2CmX-2!e@|EjR97EeB(zDrpa+I^3U#=kn{J6x(V9L}7l8Bg0ZJ z!y$|Tg2kiD6$t320e^^$lEG?>`-98@-K$ci6CF~NDnk`NlS{$lX+Yfn5w!uB)UQyN ztQLN_9wV3h4!XRFXb?rqRZT=*xjl!KAA@!B6xiqSo$s0q*ThZoXZ*)ND515S#*TgP z_A)8Zv~`Q3EhK{`Rk|hb?d4=4mGW~!jAg!8voLo@h~%*%v<1b)jGcC*k|i#GMDuLA z;+ZPpVaV0NAFPQ`82bqo=HcQ#UczR&HbkE2AW{-j_?TI2d$;G_PEhXAL)2nlDix}3 za_7x+Nq%FR7r}e$ugCP#62*n#BGVZ6VXaW%Pf*tcbVAN$yn5$Uba$k{9;5z(f*8(M zn + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::DynamicCpuWriteShaderResourceArray Member List
+
+
+ +

This is the complete list of members for ne::DynamicCpuWriteShaderResourceArray, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
calculateCapacityStepSize(size_t iElementSizeInBytes)ne::DynamicCpuWriteShaderResourceArrayprivatestatic
create(GpuResourceManager *pResourceManager, const std::string &sHandledShaderResourceName, size_t iElementSizeInBytes)ne::DynamicCpuWriteShaderResourceArrayprivatestatic
createArray(size_t iCapacity)ne::DynamicCpuWriteShaderResourceArrayprivate
DynamicCpuWriteShaderResourceArray()=delete (defined in ne::DynamicCpuWriteShaderResourceArray)ne::DynamicCpuWriteShaderResourceArray
DynamicCpuWriteShaderResourceArray(const DynamicCpuWriteShaderResourceArray &)=delete (defined in ne::DynamicCpuWriteShaderResourceArray)ne::DynamicCpuWriteShaderResourceArray
DynamicCpuWriteShaderResourceArray(GpuResourceManager *pResourceManager, const std::string &sHandledShaderResourceName, size_t iElementSizeInBytes, size_t iCapacityStepSize)ne::DynamicCpuWriteShaderResourceArrayprivate
DynamicCpuWriteShaderResourceArrayManager (defined in ne::DynamicCpuWriteShaderResourceArray)ne::DynamicCpuWriteShaderResourceArrayfriend
DynamicCpuWriteShaderResourceArraySlot (defined in ne::DynamicCpuWriteShaderResourceArray)ne::DynamicCpuWriteShaderResourceArrayfriend
expandArray()ne::DynamicCpuWriteShaderResourceArrayprivate
formatBytesToKilobytes(size_t iSizeInBytes)ne::DynamicCpuWriteShaderResourceArrayprivatestatic
getCapacity()ne::DynamicCpuWriteShaderResourceArray
getCapacityStepSize() constne::DynamicCpuWriteShaderResourceArray
getElementSize() constne::DynamicCpuWriteShaderResourceArray
getHandledShaderResourceName() constne::DynamicCpuWriteShaderResourceArray
getInternalResources()ne::DynamicCpuWriteShaderResourceArray
getSize()ne::DynamicCpuWriteShaderResourceArray
getSizeInBytes()ne::DynamicCpuWriteShaderResourceArray
iCapacityStepSizene::DynamicCpuWriteShaderResourceArrayprivate
iElementSizeInBytesne::DynamicCpuWriteShaderResourceArrayprivate
insert(ShaderCpuWriteResourceBinding *pShaderResource)ne::DynamicCpuWriteShaderResourceArrayprivate
markSlotAsNoLongerBeingUsed(DynamicCpuWriteShaderResourceArraySlot *pSlot)ne::DynamicCpuWriteShaderResourceArrayprivate
mtxInternalResourcesne::DynamicCpuWriteShaderResourceArrayprivate
operator=(const DynamicCpuWriteShaderResourceArray &)=delete (defined in ne::DynamicCpuWriteShaderResourceArray)ne::DynamicCpuWriteShaderResourceArray
pResourceManagerne::DynamicCpuWriteShaderResourceArrayprivate
sHandledShaderResourceNamene::DynamicCpuWriteShaderResourceArrayprivate
shrinkArray()ne::DynamicCpuWriteShaderResourceArrayprivate
updateSlotData(DynamicCpuWriteShaderResourceArraySlot *pSlot, void *pData)ne::DynamicCpuWriteShaderResourceArrayprivate
+
+ + + + diff --git a/classne_1_1DynamicCpuWriteShaderResourceArray.html b/classne_1_1DynamicCpuWriteShaderResourceArray.html new file mode 100644 index 000000000..936fd9195 --- /dev/null +++ b/classne_1_1DynamicCpuWriteShaderResourceArray.html @@ -0,0 +1,845 @@ + + + + + + + +Nameless Engine: ne::DynamicCpuWriteShaderResourceArray Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::DynamicCpuWriteShaderResourceArray Class Reference
+
+
+ +

#include <DynamicCpuWriteShaderResourceArray.h>

+ + + + +

+Classes

struct  InternalResources
 
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

DynamicCpuWriteShaderResourceArray (const DynamicCpuWriteShaderResourceArray &)=delete
 
+DynamicCpuWriteShaderResourceArrayoperator= (const DynamicCpuWriteShaderResourceArray &)=delete
 
size_t getSize ()
 
size_t getCapacity ()
 
size_t getSizeInBytes ()
 
size_t getElementSize () const
 
size_t getCapacityStepSize () const
 
std::string_view getHandledShaderResourceName () const
 
std::pair< std::recursive_mutex, InternalResources > * getInternalResources ()
 
+ + + + + + + + + + + + + + + +

+Private Member Functions

 DynamicCpuWriteShaderResourceArray (GpuResourceManager *pResourceManager, const std::string &sHandledShaderResourceName, size_t iElementSizeInBytes, size_t iCapacityStepSize)
 
std::variant< std::unique_ptr< DynamicCpuWriteShaderResourceArraySlot >, Errorinsert (ShaderCpuWriteResourceBinding *pShaderResource)
 
void markSlotAsNoLongerBeingUsed (DynamicCpuWriteShaderResourceArraySlot *pSlot)
 
void updateSlotData (DynamicCpuWriteShaderResourceArraySlot *pSlot, void *pData)
 
std::optional< ErrorcreateArray (size_t iCapacity)
 
std::optional< ErrorexpandArray ()
 
std::optional< ErrorshrinkArray ()
 
+ + + + + + + +

+Static Private Member Functions

static std::variant< std::unique_ptr< DynamicCpuWriteShaderResourceArray >, Errorcreate (GpuResourceManager *pResourceManager, const std::string &sHandledShaderResourceName, size_t iElementSizeInBytes)
 
static std::string formatBytesToKilobytes (size_t iSizeInBytes)
 
static std::variant< size_t, ErrorcalculateCapacityStepSize (size_t iElementSizeInBytes)
 
+ + + + + + + + + + + +

+Private Attributes

std::pair< std::recursive_mutex, InternalResourcesmtxInternalResources
 
GpuResourceManager *const pResourceManager = nullptr
 
const size_t iCapacityStepSize = 0
 
const std::string sHandledShaderResourceName
 
const size_t iElementSizeInBytes = 0
 
+ + + + + +

+Friends

+class DynamicCpuWriteShaderResourceArraySlot
 
+class DynamicCpuWriteShaderResourceArrayManager
 
+

Detailed Description

+

Allows storing elements of the same size in one GPU buffer.

+
Remarks
Automatically handles binding the array to the specified shader resource.
+
+Dynamically grows and shrinks when adding/removing elements from the array.
+

Constructor & Destructor Documentation

+ +

◆ DynamicCpuWriteShaderResourceArray()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ne::DynamicCpuWriteShaderResourceArray::DynamicCpuWriteShaderResourceArray (GpuResourceManagerpResourceManager,
const std::string & sHandledShaderResourceName,
size_t iElementSizeInBytes,
size_t iCapacityStepSize 
)
+
+private
+
+

Creates initialized array.

+
Remarks
Only used internally, for creating new arrays use create.
+
Parameters
+ + + + + +
pResourceManagerResource manager that will allocate GPU buffers.
sHandledShaderResourceNameName of the shader resource this array handles. It will be used to bind the array to pipelines.
iElementSizeInBytesSize (in bytes) of one element in the array.
iCapacityStepSizeCapacity step size to use. Expecting it to be even and not zero.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ calculateCapacityStepSize()

+ +
+
+ + + + + +
+ + + + + + + + +
std::variant< size_t, Error > ne::DynamicCpuWriteShaderResourceArray::calculateCapacityStepSize (size_t iElementSizeInBytes)
+
+staticprivate
+
+

Calculates array capacity step size depending on the size of the elements in the array.

+
Parameters
+ + +
iElementSizeInBytesSize (in bytes) of one element in the array.
+
+
+
Returns
Error if something went wrong, otherwise capacity step size to add/remove this value when expanding/shrinking the array.
+ +
+
+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< DynamicCpuWriteShaderResourceArray >, Error > ne::DynamicCpuWriteShaderResourceArray::create (GpuResourceManagerpResourceManager,
const std::string & sHandledShaderResourceName,
size_t iElementSizeInBytes 
)
+
+staticprivate
+
+

Creates a new initialized array.

+
Parameters
+ + + + +
pResourceManagerResource manager that will be used to allocate GPU buffers.
sHandledShaderResourceNameName of the shader resource this array handles. It will be used to bind the array to pipelines.
iElementSizeInBytesSize (in bytes) of one element in the array.
+
+
+
Returns
Error if something went wrong, otherwise created array.
+ +
+
+ +

◆ createArray()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::DynamicCpuWriteShaderResourceArray::createArray (size_t iCapacity)
+
+private
+
+

(Re)creates the internal GPU buffer with the specified capacity.

+
Remarks
Indices in the currently active slots (created with insert) will be updated to reference new indices in the array.
+
+Only updates the GPU buffer, internal capacity and all active slots (if any), other internal values are not changed and should be corrected afterwards if needed.
+
Parameters
+ + +
iCapacitySize of the array (in elements, not bytes).
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ expandArray()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::DynamicCpuWriteShaderResourceArray::expandArray ()
+
+private
+
+

Recreates the array to expand its capacity to support iCapacityStepSize more elements.

+
Remarks
All internal values and active slots will be updated.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ formatBytesToKilobytes()

+ +
+
+ + + + + +
+ + + + + + + + +
std::string ne::DynamicCpuWriteShaderResourceArray::formatBytesToKilobytes (size_t iSizeInBytes)
+
+staticprivate
+
+

Formats the specified size in bytes to the following format: "<number> KB", for example the number 1512 will be formatted to the following text: "1.47 KB".

+
Parameters
+ + +
iSizeInBytesSize in bytes to format.
+
+
+
Returns
Formatted text.
+ +
+
+ +

◆ getCapacity()

+ +
+
+ + + + + + + +
size_t ne::DynamicCpuWriteShaderResourceArray::getCapacity ()
+
+

Returns the maximum number of elements that could be added to the array without expanding (recreating with a bigger size) the buffer.

+
Returns
The maximum possible number of elements without expanding.
+ +
+
+ +

◆ getCapacityStepSize()

+ +
+
+ + + + + + + +
size_t ne::DynamicCpuWriteShaderResourceArray::getCapacityStepSize () const
+
+

Returns the capacity to add to the new (expanded) array when there is no more free space left in the current array or capacity to remove from the new (shrinked) array when shrinking.

+
Returns
Capacity step size.
+ +
+
+ +

◆ getElementSize()

+ +
+
+ + + + + + + +
size_t ne::DynamicCpuWriteShaderResourceArray::getElementSize () const
+
+

Returns size (in bytes) of one element in the array.

+
Returns
Size in bytes of one element.
+ +
+
+ +

◆ getHandledShaderResourceName()

+ +
+
+ + + + + + + +
std::string_view ne::DynamicCpuWriteShaderResourceArray::getHandledShaderResourceName () const
+
+

Returns name of the shader resource (from shader code) this array handles.

+
Returns
Shader resource name.
+ +
+
+ +

◆ getInternalResources()

+ +
+
+ + + + + + + +
std::pair< std::recursive_mutex, DynamicCpuWriteShaderResourceArray::InternalResources > * ne::DynamicCpuWriteShaderResourceArray::getInternalResources ()
+
+

Returns internal resources.

+
Remarks
Generally used by automated tests.
+
+Do not delete (free) returned pointer.
+
Returns
Internal resources.
+ +
+
+ +

◆ getSize()

+ +
+
+ + + + + + + +
size_t ne::DynamicCpuWriteShaderResourceArray::getSize ()
+
+

Returns the actual number of elements in the array (smaller or equal to getCapacity).

+
Returns
The actual number of elements in the array.
+ +
+
+ +

◆ getSizeInBytes()

+ +
+
+ + + + + + + +
size_t ne::DynamicCpuWriteShaderResourceArray::getSizeInBytes ()
+
+

Returns size in bytes that this array takes up.

+
Returns
Size of array in bytes.
+ +
+
+ +

◆ insert()

+ +
+
+ + + + + +
+ + + + + + + + +
std::variant< std::unique_ptr< DynamicCpuWriteShaderResourceArraySlot >, Error > ne::DynamicCpuWriteShaderResourceArray::insert (ShaderCpuWriteResourceBindingpShaderResource)
+
+private
+
+

Inserts a new element in the array.

+
Remarks
There is no erase function because slot destruction automatically uses internal erase, see documentation on the returned slot object.
+
Parameters
+ + +
pShaderResourceShader resource that requires a slot in the array. If the array will resize the specified resource (if it has an active slot in the array) will be marked as "needs update" through the shader resource manager.
+
+
+
Returns
Error if something went wrong, otherwise slot of the newly added element in the array.
+ +
+
+ +

◆ markSlotAsNoLongerBeingUsed()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::DynamicCpuWriteShaderResourceArray::markSlotAsNoLongerBeingUsed (DynamicCpuWriteShaderResourceArraySlotpSlot)
+
+private
+
+

Called by slots in their destructors to notify the array that the slot can be reused.

+
Parameters
+ + +
pSlotSlot that can be reused now.
+
+
+ +
+
+ +

◆ shrinkArray()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::DynamicCpuWriteShaderResourceArray::shrinkArray ()
+
+private
+
+

Recreates the array to shrink its capacity to support iCapacityStepSize less elements.

+
Remarks
All internal values and active slots will be updated.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ updateSlotData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::DynamicCpuWriteShaderResourceArray::updateSlotData (DynamicCpuWriteShaderResourceArraySlotpSlot,
void * pData 
)
+
+private
+
+

Called by slots to update their data.

+
Parameters
+ + + +
pSlotSlot that needs to be updated.
pDataData to copy to slot.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ iCapacityStepSize

+ +
+
+ + + + + +
+ + + + +
const size_t ne::DynamicCpuWriteShaderResourceArray::iCapacityStepSize = 0
+
+private
+
+

Used for 2 things:

    +
  1. Capacity to add for the new (expanded) GPU buffer when there is no more free space left in the current GPU buffer
  2. +
  3. Capacity to remove for the new (shrinked) GPU buffer when shrinking.
  4. +
+ +
+
+ +

◆ iElementSizeInBytes

+ +
+
+ + + + + +
+ + + + +
const size_t ne::DynamicCpuWriteShaderResourceArray::iElementSizeInBytes = 0
+
+private
+
+

Size in bytes of one element in the array.

+ +
+
+ +

◆ mtxInternalResources

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, InternalResources> ne::DynamicCpuWriteShaderResourceArray::mtxInternalResources
+
+private
+
+

Internal resources of the array.

+ +
+
+ +

◆ pResourceManager

+ +
+
+ + + + + +
+ + + + +
GpuResourceManager* const ne::DynamicCpuWriteShaderResourceArray::pResourceManager = nullptr
+
+private
+
+

Used to allocate GPU buffers.

+ +
+
+ +

◆ sHandledShaderResourceName

+ +
+
+ + + + + +
+ + + + +
const std::string ne::DynamicCpuWriteShaderResourceArray::sHandledShaderResourceName
+
+private
+
+

Name of the shader resource (from shader code) this array handles.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/general/resource/cpuwrite/DynamicCpuWriteShaderResourceArray.h
  • +
  • src/engine_lib/private/shader/general/resource/cpuwrite/DynamicCpuWriteShaderResourceArray.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1DynamicCpuWriteShaderResourceArray.js b/classne_1_1DynamicCpuWriteShaderResourceArray.js new file mode 100644 index 000000000..0bde8a1ed --- /dev/null +++ b/classne_1_1DynamicCpuWriteShaderResourceArray.js @@ -0,0 +1,26 @@ +var classne_1_1DynamicCpuWriteShaderResourceArray = +[ + [ "InternalResources", "structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources.html", "structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources" ], + [ "DynamicCpuWriteShaderResourceArray", "classne_1_1DynamicCpuWriteShaderResourceArray.html#ac7069aaeb5cd0f6fa0a343b6a7f4d7d0", null ], + [ "calculateCapacityStepSize", "classne_1_1DynamicCpuWriteShaderResourceArray.html#a7e53a422c30c87a8dbba0e4bacfc25cd", null ], + [ "create", "classne_1_1DynamicCpuWriteShaderResourceArray.html#a8b7de3f21b7402de2cb7dd7630bf99ea", null ], + [ "createArray", "classne_1_1DynamicCpuWriteShaderResourceArray.html#a8b8464857538cd06ccc5a875804d5c6d", null ], + [ "expandArray", "classne_1_1DynamicCpuWriteShaderResourceArray.html#adac22230c0160ba49541df70eac168a9", null ], + [ "formatBytesToKilobytes", "classne_1_1DynamicCpuWriteShaderResourceArray.html#a8ac9a04da60f0f69e9c35776e4949cf0", null ], + [ "getCapacity", "classne_1_1DynamicCpuWriteShaderResourceArray.html#afbbc127aa1fafba7f89a2d85b6e5b17c", null ], + [ "getCapacityStepSize", "classne_1_1DynamicCpuWriteShaderResourceArray.html#a07d4d8a7281982cdef1ae64a9a6d2249", null ], + [ "getElementSize", "classne_1_1DynamicCpuWriteShaderResourceArray.html#a40f8d0c16e8c0902483fb39a13c91cf1", null ], + [ "getHandledShaderResourceName", "classne_1_1DynamicCpuWriteShaderResourceArray.html#a422f2b1e5a1585614212a8b1862ba525", null ], + [ "getInternalResources", "classne_1_1DynamicCpuWriteShaderResourceArray.html#a4a65f3e3f217b25e6b62cb4ee2422e19", null ], + [ "getSize", "classne_1_1DynamicCpuWriteShaderResourceArray.html#a8996d41a781867fdd7b57bea25dffc8c", null ], + [ "getSizeInBytes", "classne_1_1DynamicCpuWriteShaderResourceArray.html#a2b4ce0a39e1cf4dfb93293af186deed6", null ], + [ "insert", "classne_1_1DynamicCpuWriteShaderResourceArray.html#a36439f2bb2419b7d518e968c27df86bb", null ], + [ "markSlotAsNoLongerBeingUsed", "classne_1_1DynamicCpuWriteShaderResourceArray.html#acef60155637b8544bdc5d3d78d5ef901", null ], + [ "shrinkArray", "classne_1_1DynamicCpuWriteShaderResourceArray.html#ac52e605871bb0ec51f51800741dcbe25", null ], + [ "updateSlotData", "classne_1_1DynamicCpuWriteShaderResourceArray.html#a007cd2ff002832ac03c2584e9b2a51a5", null ], + [ "iCapacityStepSize", "classne_1_1DynamicCpuWriteShaderResourceArray.html#a77ed3e7bbaf5d1f8bb6360dbf93ff9c1", null ], + [ "iElementSizeInBytes", "classne_1_1DynamicCpuWriteShaderResourceArray.html#af70464f545138b705c620b7425b1318e", null ], + [ "mtxInternalResources", "classne_1_1DynamicCpuWriteShaderResourceArray.html#a63d6257bfa63b25ab971fa75a8c38c97", null ], + [ "pResourceManager", "classne_1_1DynamicCpuWriteShaderResourceArray.html#aca4d0768b6f3712c171ba33b487801db", null ], + [ "sHandledShaderResourceName", "classne_1_1DynamicCpuWriteShaderResourceArray.html#a3cc604b5b0fd60c0a88c9a132d1bf4d0", null ] +]; \ No newline at end of file diff --git a/classne_1_1DynamicCpuWriteShaderResourceArrayManager-members.html b/classne_1_1DynamicCpuWriteShaderResourceArrayManager-members.html new file mode 100644 index 000000000..7d49f4375 --- /dev/null +++ b/classne_1_1DynamicCpuWriteShaderResourceArrayManager-members.html @@ -0,0 +1,122 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::DynamicCpuWriteShaderResourceArrayManager Member List
+
+
+ +

This is the complete list of members for ne::DynamicCpuWriteShaderResourceArrayManager, including all inherited members.

+ + + + + + + + + + + + + +
DynamicCpuWriteShaderResourceArrayManager()=delete (defined in ne::DynamicCpuWriteShaderResourceArrayManager)ne::DynamicCpuWriteShaderResourceArrayManager
DynamicCpuWriteShaderResourceArrayManager(const DynamicCpuWriteShaderResourceArrayManager &)=delete (defined in ne::DynamicCpuWriteShaderResourceArrayManager)ne::DynamicCpuWriteShaderResourceArrayManager
DynamicCpuWriteShaderResourceArrayManager(GpuResourceManager *pResourceManager)ne::DynamicCpuWriteShaderResourceArrayManagerprivate
formatBytesToMegabytes(size_t iSizeInBytes)ne::DynamicCpuWriteShaderResourceArrayManagerprivatestatic
getArrayForShaderResource(const std::string &sShaderResourceName)ne::DynamicCpuWriteShaderResourceArrayManager
GpuResourceManager (defined in ne::DynamicCpuWriteShaderResourceArrayManager)ne::DynamicCpuWriteShaderResourceArrayManagerfriend
mtxCpuWriteShaderResourceArraysne::DynamicCpuWriteShaderResourceArrayManagerprivate
operator=(const DynamicCpuWriteShaderResourceArrayManager &)=delete (defined in ne::DynamicCpuWriteShaderResourceArrayManager)ne::DynamicCpuWriteShaderResourceArrayManager
pResourceManagerne::DynamicCpuWriteShaderResourceArrayManagerprivate
removeEmptyArrays()ne::DynamicCpuWriteShaderResourceArrayManagerprivate
reserveSlotsInArray(ShaderCpuWriteResourceBinding *pShaderResource)ne::DynamicCpuWriteShaderResourceArrayManager
~DynamicCpuWriteShaderResourceArrayManager() (defined in ne::DynamicCpuWriteShaderResourceArrayManager)ne::DynamicCpuWriteShaderResourceArrayManager
+
+ + + + diff --git a/classne_1_1DynamicCpuWriteShaderResourceArrayManager.html b/classne_1_1DynamicCpuWriteShaderResourceArrayManager.html new file mode 100644 index 000000000..6e1047cbe --- /dev/null +++ b/classne_1_1DynamicCpuWriteShaderResourceArrayManager.html @@ -0,0 +1,359 @@ + + + + + + + +Nameless Engine: ne::DynamicCpuWriteShaderResourceArrayManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::DynamicCpuWriteShaderResourceArrayManager Class Reference
+
+
+ +

#include <DynamicCpuWriteShaderResourceArrayManager.h>

+ + + + + + + + + + +

+Public Member Functions

DynamicCpuWriteShaderResourceArrayManager (const DynamicCpuWriteShaderResourceArrayManager &)=delete
 
+DynamicCpuWriteShaderResourceArrayManageroperator= (const DynamicCpuWriteShaderResourceArrayManager &)=delete
 
std::variant< std::unique_ptr< DynamicCpuWriteShaderResourceArraySlot >, ErrorreserveSlotsInArray (ShaderCpuWriteResourceBinding *pShaderResource)
 
DynamicCpuWriteShaderResourceArraygetArrayForShaderResource (const std::string &sShaderResourceName)
 
+ + + + + +

+Private Member Functions

 DynamicCpuWriteShaderResourceArrayManager (GpuResourceManager *pResourceManager)
 
void removeEmptyArrays ()
 
+ + + +

+Static Private Member Functions

static std::string formatBytesToMegabytes (size_t iSizeInBytes)
 
+ + + + + +

+Private Attributes

GpuResourceManager *const pResourceManager = nullptr
 
std::pair< std::recursive_mutex, std::unordered_map< std::string, std::unique_ptr< DynamicCpuWriteShaderResourceArray > > > mtxCpuWriteShaderResourceArrays
 
+ + + +

+Friends

+class GpuResourceManager
 
+

Detailed Description

+

Manages CPU-write arrays to shader resource arrays.

+

Its main purpose is to avoid possible duplication of shader resource arrays (when 2 or more arrays handle the same shader resource).

+

Constructor & Destructor Documentation

+ +

◆ DynamicCpuWriteShaderResourceArrayManager()

+ +
+
+ + + + + +
+ + + + + + + + +
ne::DynamicCpuWriteShaderResourceArrayManager::DynamicCpuWriteShaderResourceArrayManager (GpuResourceManagerpResourceManager)
+
+private
+
+

Resource manager that owns this manager

+
Parameters
+ + +
pResourceManagerOwner manager.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ formatBytesToMegabytes()

+ +
+
+ + + + + +
+ + + + + + + + +
std::string ne::DynamicCpuWriteShaderResourceArrayManager::formatBytesToMegabytes (size_t iSizeInBytes)
+
+staticprivate
+
+

Formats the specified size in bytes to the following format: "<number> MB", for example the number 1512 will be formatted to the following text: "0.0014 MB".

+
Parameters
+ + +
iSizeInBytesSize in bytes to format.
+
+
+
Returns
Formatted text.
+ +
+
+ +

◆ getArrayForShaderResource()

+ +
+
+ + + + + + + + +
DynamicCpuWriteShaderResourceArray * ne::DynamicCpuWriteShaderResourceArrayManager::getArrayForShaderResource (const std::string & sShaderResourceName)
+
+

Attempts to find an array that handles shader resource of the specified name.

+
Remarks
Mostly used for automated testing.
+
Parameters
+ + +
sShaderResourceNameName of the shader resource (from shader code).
+
+
+
Returns
nullptr if not found, otherwise a valid pointer.
+ +
+
+ +

◆ removeEmptyArrays()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::DynamicCpuWriteShaderResourceArrayManager::removeEmptyArrays ()
+
+private
+
+

Goes through all arrays in mtxCpuWriteShaderResourceArrays and removed empty ones.

+ +
+
+ +

◆ reserveSlotsInArray()

+ +
+
+ + + + + + + + +
std::variant< std::unique_ptr< DynamicCpuWriteShaderResourceArraySlot >, Error > ne::DynamicCpuWriteShaderResourceArrayManager::reserveSlotsInArray (ShaderCpuWriteResourceBindingpShaderResource)
+
+

Requests a new slot in the array to be reserved for use by the specified shader resource.

+
Remarks
There is no erase function because slot destruction automatically uses internal erase, see documentation on the returned slot object.
+
Parameters
+ + +
pShaderResourceShader resource that requires a slot in the array. If the array will resize, the specified resource (if it has an active slot in the array) will be automatically marked as "needs update" through the shader resource manager.
+
+
+
Returns
Error if something went wrong, otherwise slot of the newly added element in the array.
+ +
+
+

Member Data Documentation

+ +

◆ mtxCpuWriteShaderResourceArrays

+ +
+
+ + + + + +
+ + + + +
std::pair< std::recursive_mutex, std::unordered_map<std::string, std::unique_ptr<DynamicCpuWriteShaderResourceArray> > > ne::DynamicCpuWriteShaderResourceArrayManager::mtxCpuWriteShaderResourceArrays
+
+private
+
+

Stores pairs of "shader resource name" - "array that handles the shader resource", where "shader resource name" is the name of the resource written in the shader file.

+ +
+
+ +

◆ pResourceManager

+ +
+
+ + + + + +
+ + + + +
GpuResourceManager* const ne::DynamicCpuWriteShaderResourceArrayManager::pResourceManager = nullptr
+
+private
+
+

Owner of this manager.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classne_1_1DynamicCpuWriteShaderResourceArrayManager.js b/classne_1_1DynamicCpuWriteShaderResourceArrayManager.js new file mode 100644 index 000000000..115a3e36d --- /dev/null +++ b/classne_1_1DynamicCpuWriteShaderResourceArrayManager.js @@ -0,0 +1,10 @@ +var classne_1_1DynamicCpuWriteShaderResourceArrayManager = +[ + [ "DynamicCpuWriteShaderResourceArrayManager", "classne_1_1DynamicCpuWriteShaderResourceArrayManager.html#a23ccad251759dad28a838bba4707595f", null ], + [ "formatBytesToMegabytes", "classne_1_1DynamicCpuWriteShaderResourceArrayManager.html#a997069c09e8bc1e087ef3ba74165fae0", null ], + [ "getArrayForShaderResource", "classne_1_1DynamicCpuWriteShaderResourceArrayManager.html#a656266f96634a2bac890181a028d17eb", null ], + [ "removeEmptyArrays", "classne_1_1DynamicCpuWriteShaderResourceArrayManager.html#aef0cf7c6e1f1b987f64cd189aa33c95f", null ], + [ "reserveSlotsInArray", "classne_1_1DynamicCpuWriteShaderResourceArrayManager.html#a99cd6f7a677bf97ab36c9ee8b0cca10a", null ], + [ "mtxCpuWriteShaderResourceArrays", "classne_1_1DynamicCpuWriteShaderResourceArrayManager.html#aa2ba191348b2a3c44ad938c0ac6d0d04", null ], + [ "pResourceManager", "classne_1_1DynamicCpuWriteShaderResourceArrayManager.html#a72c1e9f423b132a8b28bdb05ab7974e5", null ] +]; \ No newline at end of file diff --git a/classne_1_1DynamicCpuWriteShaderResourceArraySlot-members.html b/classne_1_1DynamicCpuWriteShaderResourceArraySlot-members.html new file mode 100644 index 000000000..553a40235 --- /dev/null +++ b/classne_1_1DynamicCpuWriteShaderResourceArraySlot-members.html @@ -0,0 +1,122 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::DynamicCpuWriteShaderResourceArraySlot Member List
+
+
+ +

This is the complete list of members for ne::DynamicCpuWriteShaderResourceArraySlot, including all inherited members.

+ + + + + + + + + + + + + +
DynamicCpuWriteShaderResourceArray (defined in ne::DynamicCpuWriteShaderResourceArraySlot)ne::DynamicCpuWriteShaderResourceArraySlotfriend
DynamicCpuWriteShaderResourceArraySlot()=delete (defined in ne::DynamicCpuWriteShaderResourceArraySlot)ne::DynamicCpuWriteShaderResourceArraySlot
DynamicCpuWriteShaderResourceArraySlot(const DynamicCpuWriteShaderResourceArraySlot &)=delete (defined in ne::DynamicCpuWriteShaderResourceArraySlot)ne::DynamicCpuWriteShaderResourceArraySlot
DynamicCpuWriteShaderResourceArraySlot(DynamicCpuWriteShaderResourceArray *pArray, size_t iIndexInArray, ShaderCpuWriteResourceBinding *pShaderResource)ne::DynamicCpuWriteShaderResourceArraySlotprivate
getIndexIntoArray() constne::DynamicCpuWriteShaderResourceArraySlotinline
iIndexInArrayne::DynamicCpuWriteShaderResourceArraySlotprivate
operator=(const DynamicCpuWriteShaderResourceArraySlot &)=delete (defined in ne::DynamicCpuWriteShaderResourceArraySlot)ne::DynamicCpuWriteShaderResourceArraySlot
pArrayne::DynamicCpuWriteShaderResourceArraySlotprivate
pShaderResourcene::DynamicCpuWriteShaderResourceArraySlotprivate
updateData(void *pData)ne::DynamicCpuWriteShaderResourceArraySlot
updateIndex(size_t iNewIndex)ne::DynamicCpuWriteShaderResourceArraySlotinlineprivate
~DynamicCpuWriteShaderResourceArraySlot() (defined in ne::DynamicCpuWriteShaderResourceArraySlot)ne::DynamicCpuWriteShaderResourceArraySlot
+
+ + + + diff --git a/classne_1_1DynamicCpuWriteShaderResourceArraySlot.html b/classne_1_1DynamicCpuWriteShaderResourceArraySlot.html new file mode 100644 index 000000000..37e41f920 --- /dev/null +++ b/classne_1_1DynamicCpuWriteShaderResourceArraySlot.html @@ -0,0 +1,371 @@ + + + + + + + +Nameless Engine: ne::DynamicCpuWriteShaderResourceArraySlot Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::DynamicCpuWriteShaderResourceArraySlot Class Reference
+
+
+ +

#include <DynamicCpuWriteShaderResourceArray.h>

+ + + + + + + + + + +

+Public Member Functions

DynamicCpuWriteShaderResourceArraySlot (const DynamicCpuWriteShaderResourceArraySlot &)=delete
 
+DynamicCpuWriteShaderResourceArraySlotoperator= (const DynamicCpuWriteShaderResourceArraySlot &)=delete
 
void updateData (void *pData)
 
unsigned int getIndexIntoArray () const
 
+ + + + + +

+Private Member Functions

 DynamicCpuWriteShaderResourceArraySlot (DynamicCpuWriteShaderResourceArray *pArray, size_t iIndexInArray, ShaderCpuWriteResourceBinding *pShaderResource)
 
void updateIndex (size_t iNewIndex)
 
+ + + + + + + +

+Private Attributes

DynamicCpuWriteShaderResourceArray *const pArray = nullptr
 
ShaderCpuWriteResourceBinding *const pShaderResource = nullptr
 
unsigned int iIndexInArray = 0
 
+ + + +

+Friends

+class DynamicCpuWriteShaderResourceArray
 
+

Detailed Description

+

Represents a used slot (place) in a shader resource array.

+
Remarks
Automatically notifies the array to free the slot (mark as unused) in destructor.
+

Constructor & Destructor Documentation

+ +

◆ DynamicCpuWriteShaderResourceArraySlot()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ne::DynamicCpuWriteShaderResourceArraySlot::DynamicCpuWriteShaderResourceArraySlot (DynamicCpuWriteShaderResourceArraypArray,
size_t iIndexInArray,
ShaderCpuWriteResourceBindingpShaderResource 
)
+
+private
+
+

Initializes the slot.

+
Parameters
+ + + + +
pArrayArray in which the slot resides.
iIndexInArrayInto into the array to access the slot's data.
pShaderResourceShader resource that uses this slot.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getIndexIntoArray()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int ne::DynamicCpuWriteShaderResourceArraySlot::getIndexIntoArray () const
+
+inline
+
+

Returns index into the array (that owns this slot) to access the slot's data.

+
Returns
Index into the array.
+ +
+
+ +

◆ updateData()

+ +
+
+ + + + + + + + +
void ne::DynamicCpuWriteShaderResourceArraySlot::updateData (void * pData)
+
+

Copies the specified data to slot's memory.

+
Warning
Should only be called when shader resource manager tells that it's the time to update shader resource data.
+
Parameters
+ + +
pDataData to copy.
+
+
+ +
+
+ +

◆ updateIndex()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::DynamicCpuWriteShaderResourceArraySlot::updateIndex (size_t iNewIndex)
+
+inlineprivate
+
+

Should be called by array to update the index.

+
Parameters
+ + +
iNewIndexNew index.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ iIndexInArray

+ +
+
+ + + + + +
+ + + + +
unsigned int ne::DynamicCpuWriteShaderResourceArraySlot::iIndexInArray = 0
+
+private
+
+

Index into pArray to access the slot's data.

+
Remarks
Updated by array when it's resizing (use updateIndex).
+
+Using unsigned int because it will be copied to root/push constants which store uints.
+ +
+
+ +

◆ pArray

+ +
+
+ + + + + +
+ + + + +
DynamicCpuWriteShaderResourceArray* const ne::DynamicCpuWriteShaderResourceArraySlot::pArray = nullptr
+
+private
+
+

Array in which the slot resides.

+ +
+
+ +

◆ pShaderResource

+ +
+
+ + + + + +
+ + + + +
ShaderCpuWriteResourceBinding* const ne::DynamicCpuWriteShaderResourceArraySlot::pShaderResource = nullptr
+
+private
+
+

Shader resource that uses this slot.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/general/resource/cpuwrite/DynamicCpuWriteShaderResourceArray.h
  • +
  • src/engine_lib/private/shader/general/resource/cpuwrite/DynamicCpuWriteShaderResourceArray.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1DynamicCpuWriteShaderResourceArraySlot.js b/classne_1_1DynamicCpuWriteShaderResourceArraySlot.js new file mode 100644 index 000000000..80fcb4cd9 --- /dev/null +++ b/classne_1_1DynamicCpuWriteShaderResourceArraySlot.js @@ -0,0 +1,10 @@ +var classne_1_1DynamicCpuWriteShaderResourceArraySlot = +[ + [ "DynamicCpuWriteShaderResourceArraySlot", "classne_1_1DynamicCpuWriteShaderResourceArraySlot.html#a280ae578906d453b83c8c93e64d6dfc0", null ], + [ "getIndexIntoArray", "classne_1_1DynamicCpuWriteShaderResourceArraySlot.html#a3ab49e829204f8c419a713c28f308305", null ], + [ "updateData", "classne_1_1DynamicCpuWriteShaderResourceArraySlot.html#a8087b79c633ad3deb6d0d396280eb3d5", null ], + [ "updateIndex", "classne_1_1DynamicCpuWriteShaderResourceArraySlot.html#ab5817f7d2faf274dfc0f368abbe8ffd6", null ], + [ "iIndexInArray", "classne_1_1DynamicCpuWriteShaderResourceArraySlot.html#a526670f53efd8c3cc11add52bf3ae5bd", null ], + [ "pArray", "classne_1_1DynamicCpuWriteShaderResourceArraySlot.html#a48b0b51b0fa6e7d47f39ae4dc2ea6722", null ], + [ "pShaderResource", "classne_1_1DynamicCpuWriteShaderResourceArraySlot.html#afbf9c89b88b778814b3e116a1974e347", null ] +]; \ No newline at end of file diff --git a/classne_1_1EditorCameraNode-members.html b/classne_1_1EditorCameraNode-members.html new file mode 100644 index 000000000..1026ea4b7 --- /dev/null +++ b/classne_1_1EditorCameraNode-members.html @@ -0,0 +1,269 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::EditorCameraNode Member List
+
+
+ +

This is the complete list of members for ne::EditorCameraNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addChildNode(const sgc::GcPtr< Node > &pNode, AttachmentRule locationRule=AttachmentRule::KEEP_WORLD, AttachmentRule rotationRule=AttachmentRule::KEEP_WORLD, AttachmentRule scaleRule=AttachmentRule::KEEP_WORLD)ne::Node
applyAttachmentRule(Node::AttachmentRule locationRule, const glm::vec3 &worldLocationBeforeAttachment, Node::AttachmentRule rotationRule, const glm::vec3 &worldRotationBeforeAttachment, Node::AttachmentRule scaleRule, const glm::vec3 &worldScaleBeforeAttachment)ne::SpatialNodeprivate
AttachmentRule enum namene::Node
bIgnoreInputne::EditorCameraNodeprivate
bSerializene::Nodeprivate
CameraNode() (defined in ne::CameraNode)ne::CameraNode
CameraNode(const std::string &sNodeName)ne::CameraNode
cameraPropertiesne::CameraNodeprivate
clearOrbitalTargetLocation()ne::CameraNode
createNotificationBroadcaster()ne::Nodeinlineprotected
createTimer(const std::string &sTimerName)ne::Nodeprotected
currentMovementSpeedne::EditorCameraNodeprivate
currentMovementSpeedMultiplierne::EditorCameraNodeprivate
deserialize(const std::filesystem::path &pathToFile)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)ne::Serializablestatic
deserialize(std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, const std::string &sEntityId)ne::Serializablestatic
deserialize(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})ne::Serializablestatic
deserializeFromSection(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sSectionName, const std::string &sTypeGuid, const std::string &sEntityId, const std::optional< std::filesystem::path > &optionalPathToFile)ne::Serializableprivatestatic
deserializeMultiple(std::filesystem::path pathToFile)ne::Serializablestatic
deserializeNodeTree(const std::filesystem::path &pathToFile)ne::Nodestatic
despawn()ne::Nodeprivate
detachFromParentAndDespawn()ne::Node
EditorCameraNode() (defined in ne::EditorCameraNode)ne::EditorCameraNode
EditorCameraNode(const std::string &sNodeName)ne::EditorCameraNode
enableTimer(Timer *pTimer, bool bEnable)ne::Nodeprivate
findValidWorld()ne::Nodeprivate
getActionEventBindings()ne::Nodeprotected
getAliveNodeCount()ne::Nodestatic
getAxisEventBindings()ne::Nodeprotected
getCameraProperties()ne::CameraNode
getChildNodeOfType(const std::string &sChildNodeName="")ne::Node
getChildNodes()ne::Node
getClassForGuid(const std::string &sGuid)ne::Serializableprivatestatic
getClassForGuid(const rfk::Struct *pArchetypeToAnalyze, const std::string &sGuid)ne::Serializableprivatestatic
getClosestSpatialParent()ne::SpatialNode
getGameInstance()ne::Nodestatic
getIdsFromFile(std::filesystem::path pathToFile)ne::Serializablestatic
getInformationForSerialization(size_t &iId, std::optional< size_t > iParentId)ne::Nodeprivate
getNodeId() constne::Node
getNodeName() constne::Node
getOrbitalTargetLocation()ne::CameraNode
getParentNode()ne::Node
getParentNodeOfType(const std::string &sParentNodeName="")ne::Node
getPathDeserializedFromRelativeToRes() constne::Serializable
getRelativeLocation() constne::SpatialNodeinline
getRelativeRotation() constne::SpatialNodeinline
getRelativeRotationMatrix()ne::SpatialNode
getRelativeScale() constne::SpatialNodeinline
getSpawnDespawnMutex()ne::Nodeprotected
getTickGroup() constne::Node
getWorldForwardDirection()ne::SpatialNode
getWorldLocation()ne::SpatialNode
getWorldMatrix()ne::SpatialNode
getWorldRightDirection()ne::SpatialNode
getWorldRootNode()ne::Node
getWorldRotation()ne::SpatialNode
getWorldRotationQuaternion()ne::SpatialNode
getWorldScale()ne::SpatialNode
getWorldUpDirection()ne::SpatialNode
iNodeIdne::Nodeprivate
isCalledEveryFrame()ne::Node
isChildOf(Node *pNode)ne::Node
isParentOf(Node *pNode)ne::Node
isReceivingInput()ne::Node
isSerialized() constne::Node
isSpawned()ne::Node
isTreeDeserializedFromOneFile(const std::string &sPathRelativeToRes)ne::Nodeprivate
lastInputDirectionne::EditorCameraNodeprivate
localSpaceOriginInWorldSpacene::CameraNodeprivate
lockChildren()ne::Nodeprivate
makeActive()ne::CameraNode
movementSpeedne::EditorCameraNodeprivatestatic
mtxBindedActionEventsne::Nodeprivate
mtxBindedAxisEventsne::Nodeprivate
mtxChildNodesne::Nodeprivate
mtxCreatedBroadcastersne::Nodeprivate
mtxCreatedTimersne::Nodeprivate
mtxIsActivene::CameraNodeprivate
mtxIsCalledEveryFramene::Nodeprivate
mtxIsReceivingInputne::Nodeprivate
mtxIsSpawnedne::Nodeprivate
mtxLocalSpacene::SpatialNodeprivate
mtxParentNodene::Nodeprivate
mtxSpatialParentne::SpatialNodeprivate
mtxWorldMatrixne::SpatialNodeprivate
ne::Node::Node(const std::string &sName)ne::Node
Node(const Node &)=delete (defined in ne::Node)ne::Node
Node(Node &&)=delete (defined in ne::Node)ne::Node
notifyAboutAttachedToNewParent(bool bThisNodeBeingAttached)ne::Nodeprivate
notifyAboutDetachingFromParent(bool bThisNodeBeingDetached)ne::Nodeprivate
onAfterAttachedToNewParent(bool bThisNodeBeingAttached) overridene::EditorCameraNodeprotectedvirtual
onAfterDeserialized() overridene::SpatialNodeprotectedvirtual
onBeforeDetachedFromParent(bool bThisNodeBeingDetached)ne::Nodeinlineprotectedvirtual
onBeforeNewFrame(float timeSincePrevFrameInSec) overridene::EditorCameraNodeprotectedvirtual
onChildNodesSpawned()ne::Nodeinlineprotectedvirtual
onDespawning() overridene::CameraNodeprotectedvirtual
onInputActionEvent(unsigned int iActionId, KeyboardModifiers modifiers, bool bIsPressedDown)ne::Nodeprivate
onInputAxisEvent(unsigned int iAxisEventId, KeyboardModifiers modifiers, float input)ne::Nodeprivate
onMouseMove(double xOffset, double yOffset) overridene::EditorCameraNodeprotectedvirtual
onMouseScrollMove(int iOffset)ne::Nodeinlineprotectedvirtual
onSpawning() overridene::SpatialNodeprotectedvirtual
onWorldLocationRotationScaleChanged() overridene::CameraNodeprotectedvirtual
operator=(const Node &)=delete (defined in ne::Node)ne::Node
operator=(Node &&)=delete (defined in ne::Node)ne::Node
orbitalCameraTargetInWorldSpacene::CameraNodeprivate
pathDeserializedFromRelativeToResne::Serializableprivate
pWorldne::Nodeprivate
recalculateLocalMatrix()ne::SpatialNodeprivate
recalculateWorldMatrix(bool bNotifyChildren=true)ne::SpatialNodeprivate
recalculateWorldMatrixForNodeAndNotifyChildren(Node *pNode)ne::SpatialNodeprivate
relativeLocationne::SpatialNodeprivate
relativeRotationne::SpatialNodeprivate
relativeScalene::SpatialNodeprivate
resolvePathToToml(std::filesystem::path &pathToFile)ne::Serializableprivatestatic
rotationDeltane::CameraNodeinlineprivatestatic
rotationSensitivityne::EditorCameraNodeprivatestatic
sCustomAttributePrefixne::Serializableprivatestatic
Serializable()=default (defined in ne::Serializable)ne::Serializable
serialize(std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})ne::Serializable
serialize(toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serialize(toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serializeMultiple(std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)ne::Serializablestatic
serializeNodeTree(const std::filesystem::path &pathToFile, bool bEnableBackup)ne::Node
setCameraMode(CameraMode mode)ne::CameraNode
setIgnoreInput(bool bIgnore)ne::EditorCameraNode
setIsCalledEveryFrame(bool bEnable)ne::Nodeprotected
setIsReceivingInput(bool bEnable)ne::Nodeprotected
setNodeName(const std::string &sName)ne::Node
setOrbitalDistanceToTarget(float distanceToTarget)ne::CameraNode
setOrbitalRotation(float phi, float theta)ne::CameraNode
setOrbitalTargetLocation(const glm::vec3 &targetPointLocation)ne::CameraNode
setRelativeLocation(const glm::vec3 &location)ne::SpatialNode
setRelativeRotation(const glm::vec3 &rotation)ne::SpatialNode
setRelativeScale(const glm::vec3 &scale)ne::SpatialNode
setSerialize(bool bSerialize)ne::Node
setTickGroup(TickGroup tickGroup)ne::Nodeprotected
setWorldLocation(const glm::vec3 &location)ne::SpatialNode
setWorldRotation(const glm::vec3 &rotation)ne::SpatialNode
setWorldScale(const glm::vec3 &scale)ne::SpatialNode
sExternalNodeTreePathAttributeNamene::Nodeinlineprivatestatic
sNodeNamene::Nodeprivate
sNothingToSerializeKeyne::Serializableinlineprivatestatic
sParentNodeIdAttributeNamene::Nodeinlineprivatestatic
sPathRelativeToResKeyne::Serializableinlineprivatestatic
SpatialNode() (defined in ne::SpatialNode)ne::SpatialNode
SpatialNode(const std::string &sNodeName)ne::SpatialNode
spawn()ne::Nodeprivate
speedDecreaseMultiplierne::EditorCameraNodeprivatestatic
speedIncreaseMultiplierne::EditorCameraNodeprivatestatic
sSubEntityFieldNameKeyne::Serializableinlineprivatestatic
tickGroupne::Nodeprivate
unlockChildren()ne::Nodeprivate
updateCameraProperties()ne::CameraNodeprivate
~CameraNode() override=default (defined in ne::CameraNode)ne::CameraNodevirtual
~EditorCameraNode() override=default (defined in ne::EditorCameraNode)ne::EditorCameraNodevirtual
~Node() overridene::Nodevirtual
~Serializable() override=default (defined in ne::Serializable)ne::Serializablevirtual
~SpatialNode() override=default (defined in ne::SpatialNode)ne::SpatialNodevirtual
+
+ + + + diff --git a/classne_1_1EditorCameraNode.html b/classne_1_1EditorCameraNode.html new file mode 100644 index 000000000..6ca241c66 --- /dev/null +++ b/classne_1_1EditorCameraNode.html @@ -0,0 +1,756 @@ + + + + + + + +Nameless Engine: ne::EditorCameraNode Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <EditorCameraNode.h>

+
+Inheritance diagram for ne::EditorCameraNode:
+
+
+ + +ne::CameraNode +ne::SpatialNode +ne::Node +ne::Serializable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 EditorCameraNode (const std::string &sNodeName)
 
void setIgnoreInput (bool bIgnore)
 
- Public Member Functions inherited from ne::CameraNode
 CameraNode (const std::string &sNodeName)
 
void makeActive ()
 
void setCameraMode (CameraMode mode)
 
void setOrbitalTargetLocation (const glm::vec3 &targetPointLocation)
 
void clearOrbitalTargetLocation ()
 
void setOrbitalRotation (float phi, float theta)
 
void setOrbitalDistanceToTarget (float distanceToTarget)
 
glm::vec3 getOrbitalTargetLocation ()
 
CameraPropertiesgetCameraProperties ()
 
- Public Member Functions inherited from ne::SpatialNode
 SpatialNode (const std::string &sNodeName)
 
void setRelativeLocation (const glm::vec3 &location)
 
void setRelativeRotation (const glm::vec3 &rotation)
 
void setRelativeScale (const glm::vec3 &scale)
 
void setWorldLocation (const glm::vec3 &location)
 
void setWorldRotation (const glm::vec3 &rotation)
 
void setWorldScale (const glm::vec3 &scale)
 
glm::vec3 getRelativeLocation () const
 
glm::vec3 getRelativeRotation () const
 
glm::vec3 getRelativeScale () const
 
glm::mat4x4 getRelativeRotationMatrix ()
 
glm::vec3 getWorldLocation ()
 
glm::vec3 getWorldRotation ()
 
glm::quat getWorldRotationQuaternion ()
 
glm::vec3 getWorldScale ()
 
glm::vec3 getWorldForwardDirection ()
 
glm::vec3 getWorldRightDirection ()
 
glm::vec3 getWorldUpDirection ()
 
glm::mat4x4 getWorldMatrix ()
 
std::pair< std::recursive_mutex, sgc::GcPtr< SpatialNode > > * getClosestSpatialParent ()
 
- Public Member Functions inherited from ne::Node
 Node ()
 
 Node (const std::string &sName)
 
Node (const Node &)=delete
 
+Nodeoperator= (const Node &)=delete
 
Node (Node &&)=delete
 
+Nodeoperator= (Node &&)=delete
 
virtual ~Node () override
 
void setNodeName (const std::string &sName)
 
void detachFromParentAndDespawn ()
 
void addChildNode (const sgc::GcPtr< Node > &pNode, AttachmentRule locationRule=AttachmentRule::KEEP_WORLD, AttachmentRule rotationRule=AttachmentRule::KEEP_WORLD, AttachmentRule scaleRule=AttachmentRule::KEEP_WORLD)
 
void setSerialize (bool bSerialize)
 
std::optional< ErrorserializeNodeTree (const std::filesystem::path &pathToFile, bool bEnableBackup)
 
std::string getNodeName () const
 
sgc::GcPtr< NodegetWorldRootNode ()
 
std::pair< std::recursive_mutex, sgc::GcPtr< Node > > * getParentNode ()
 
std::pair< std::recursive_mutex, sgc::GcVector< sgc::GcPtr< Node > > > * getChildNodes ()
 
template<typename NodeType >
+requires std::derived_from<NodeType, Node>
sgc::GcPtr< NodeType > getParentNodeOfType (const std::string &sParentNodeName="")
 
template<typename NodeType >
+requires std::derived_from<NodeType, Node>
sgc::GcPtr< NodeType > getChildNodeOfType (const std::string &sChildNodeName="")
 
TickGroup getTickGroup () const
 
std::optional< size_t > getNodeId () const
 
bool isCalledEveryFrame ()
 
bool isReceivingInput ()
 
bool isSpawned ()
 
bool isParentOf (Node *pNode)
 
bool isChildOf (Node *pNode)
 
bool isSerialized () const
 
- Public Member Functions inherited from ne::Serializable
std::optional< Errorserialize (std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})
 
std::variant< std::string, Errorserialize (toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::variant< std::string, Errorserialize (toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::optional< std::pair< std::string, std::string > > getPathDeserializedFromRelativeToRes () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void onBeforeNewFrame (float timeSincePrevFrameInSec) override
 
virtual void onMouseMove (double xOffset, double yOffset) override
 
virtual void onAfterAttachedToNewParent (bool bThisNodeBeingAttached) override
 
- Protected Member Functions inherited from ne::CameraNode
virtual void onWorldLocationRotationScaleChanged () override
 
virtual void onDespawning () override
 
- Protected Member Functions inherited from ne::SpatialNode
virtual void onAfterDeserialized () override
 
virtual void onSpawning () override
 
virtual void onAfterAttachedToNewParent (bool bThisNodeBeingAttached) override
 
virtual void onWorldLocationRotationScaleChanged ()
 
- Protected Member Functions inherited from ne::Node
void setIsCalledEveryFrame (bool bEnable)
 
void setTickGroup (TickGroup tickGroup)
 
void setIsReceivingInput (bool bEnable)
 
TimercreateTimer (const std::string &sTimerName)
 
template<typename FunctionType >
NodeNotificationBroadcaster< FunctionType > * createNotificationBroadcaster ()
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, bool)> > > * getActionEventBindings ()
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, float)> > > * getAxisEventBindings ()
 
std::recursive_mutex * getSpawnDespawnMutex ()
 
virtual void onMouseMove (double xOffset, double yOffset)
 
virtual void onMouseScrollMove (int iOffset)
 
virtual void onBeforeNewFrame (float timeSincePrevFrameInSec)
 
virtual void onSpawning ()
 
virtual void onChildNodesSpawned ()
 
virtual void onDespawning ()
 
virtual void onBeforeDetachedFromParent (bool bThisNodeBeingDetached)
 
virtual void onAfterAttachedToNewParent (bool bThisNodeBeingAttached)
 
virtual void onAfterDeserialized ()
 
+ + + + + + + + + +

+Private Attributes

glm::vec3 lastInputDirection = glm::vec3(0.0F, 0.0F, 0.0F)
 
float currentMovementSpeed = 0.0F
 
float currentMovementSpeedMultiplier = 1.0F
 
bool bIgnoreInput = true
 
+ + + + + + + + + +

+Static Private Attributes

static constexpr double rotationSensitivity = 0.1
 
static constexpr float movementSpeed = 5.0F
 
static constexpr float speedIncreaseMultiplier = 2.0F
 
static constexpr float speedDecreaseMultiplier = 0.5F
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ne::Node
enum class  AttachmentRule { RESET_RELATIVE +, KEEP_RELATIVE +, KEEP_WORLD + }
 
- Static Public Member Functions inherited from ne::Node
static size_t getAliveNodeCount ()
 
static std::variant< sgc::GcPtr< Node >, ErrordeserializeNodeTree (const std::filesystem::path &pathToFile)
 
static GameInstancegetGameInstance ()
 
- Static Public Member Functions inherited from ne::Serializable
static std::variant< std::pair< std::set< std::string >, toml::value >, ErrorgetIdsFromFile (std::filesystem::path pathToFile)
 
static std::optional< ErrorserializeMultiple (std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::same_as<SmartPointer, sgc::GcPtr<Serializable>> || std::same_as<SmartPointer, std::unique_ptr<Serializable>>
static std::variant< std::vector< DeserializedObjectInformation< SmartPointer > >, ErrordeserializeMultiple (std::filesystem::path pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})
 
+

Detailed Description

+

Camera used in the editor.

+

Constructor & Destructor Documentation

+ +

◆ EditorCameraNode()

+ +
+
+ + + + + + + + +
ne::EditorCameraNode::EditorCameraNode (const std::string & sNodeName)
+
+

Creates a new node with the specified name.

+
Parameters
+ + +
sNodeNameName of this node.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ onAfterAttachedToNewParent()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::EditorCameraNode::onAfterAttachedToNewParent (bool bThisNodeBeingAttached)
+
+overrideprotectedvirtual
+
+

Called after this node or one of the node's parents (in the parent hierarchy) was attached to a new parent node.

+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+
Remarks
This function will also be called on all child nodes after this function is finished.
+
Parameters
+ + +
bThisNodeBeingAttachedtrue if this node was attached to a parent, false if some node in the parent hierarchy was attached to a parent.
+
+
+ +

Reimplemented from ne::SpatialNode.

+ +
+
+ +

◆ onBeforeNewFrame()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::EditorCameraNode::onBeforeNewFrame (float timeSincePrevFrameInSec)
+
+overrideprotectedvirtual
+
+

Called before a new frame is rendered.

+
Remarks
This function will only be called while this node is spawned.
+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic (if there is any).
+
Parameters
+ + +
timeSincePrevFrameInSecAlso known as deltatime - time in seconds that has passed since the last frame was rendered.
+
+
+ +

Reimplemented from ne::Node.

+ +
+
+ +

◆ onMouseMove()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::EditorCameraNode::onMouseMove (double xOffset,
double yOffset 
)
+
+overrideprotectedvirtual
+
+

Called when the window received mouse movement.

+
Remarks
This function will only be called while this node is spawned.
+
Parameters
+ + + +
xOffsetMouse X movement delta in pixels (plus if moved to the right, minus if moved to the left).
yOffsetMouse Y movement delta in pixels (plus if moved up, minus if moved down).
+
+
+ +

Reimplemented from ne::Node.

+ +
+
+ +

◆ setIgnoreInput()

+ +
+
+ + + + + + + + +
void ne::EditorCameraNode::setIgnoreInput (bool bIgnore)
+
+

Sets whether to ignore user input or not.

+
Parameters
+ + +
bIgnoretrue to ignore, false otherwise.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ bIgnoreInput

+ +
+
+ + + + + +
+ + + + +
bool ne::EditorCameraNode::bIgnoreInput = true
+
+private
+
+

Determines whether the camera should ignore the user input or not. Generally we only want to process user input when some special condition is met (for ex. mouse captured).

+ +
+
+ +

◆ currentMovementSpeed

+ +
+
+ + + + + +
+ + + + +
float ne::EditorCameraNode::currentMovementSpeed = 0.0F
+
+private
+
+

Editor camera's current movement speed.

+ +
+
+ +

◆ currentMovementSpeedMultiplier

+ +
+
+ + + + + +
+ + + + +
float ne::EditorCameraNode::currentMovementSpeedMultiplier = 1.0F
+
+private
+
+

Stores speedIncreaseMultiplier or speedDecreaseMultiplier when the user holds a special button.

+ +
+
+ +

◆ lastInputDirection

+ +
+
+ + + + + +
+ + + + +
glm::vec3 ne::EditorCameraNode::lastInputDirection = glm::vec3(0.0F, 0.0F, 0.0F)
+
+private
+
+

Last received user input direction for moving the camera.

+ +
+
+ +

◆ movementSpeed

+ +
+
+ + + + + +
+ + + + +
constexpr float ne::EditorCameraNode::movementSpeed = 5.0F
+
+staticconstexprprivate
+
+

Speed of editor camera's movement.

+ +
+
+ +

◆ rotationSensitivity

+ +
+
+ + + + + +
+ + + + +
constexpr double ne::EditorCameraNode::rotationSensitivity = 0.1
+
+staticconstexprprivate
+
+

Rotation multiplier for editor's camera.

+ +
+
+ +

◆ speedDecreaseMultiplier

+ +
+
+ + + + + +
+ + + + +
constexpr float ne::EditorCameraNode::speedDecreaseMultiplier = 0.5F
+
+staticconstexprprivate
+
+

Camera speed multiplier when slow movement mode is enabled (for ex. Ctrl is pressed).

+ +
+
+ +

◆ speedIncreaseMultiplier

+ +
+
+ + + + + +
+ + + + +
constexpr float ne::EditorCameraNode::speedIncreaseMultiplier = 2.0F
+
+staticconstexprprivate
+
+

Camera speed multiplier when fast movement mode is enabled (for ex. Shift is pressed).

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/editor_lib/public/nodes/EditorCameraNode.h
  • +
  • src/editor_lib/private/nodes/EditorCameraNode.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1EditorCameraNode.js b/classne_1_1EditorCameraNode.js new file mode 100644 index 000000000..b133f4b3a --- /dev/null +++ b/classne_1_1EditorCameraNode.js @@ -0,0 +1,16 @@ +var classne_1_1EditorCameraNode = +[ + [ "EditorCameraNode", "classne_1_1EditorCameraNode.html#ae76688628b584c4fbd37eee488745a41", null ], + [ "onAfterAttachedToNewParent", "classne_1_1EditorCameraNode.html#a08e4e5ace5a7e1f0c9267a3482f7f4ca", null ], + [ "onBeforeNewFrame", "classne_1_1EditorCameraNode.html#a32c682de69a47481aa8429f56a58f07c", null ], + [ "onMouseMove", "classne_1_1EditorCameraNode.html#acdb9469dbdb548e0e91712f1d93454ec", null ], + [ "setIgnoreInput", "classne_1_1EditorCameraNode.html#a7e74373b5cabafbec454c8bc45595932", null ], + [ "bIgnoreInput", "classne_1_1EditorCameraNode.html#ab742cafbda4c6c8c8aa21d4d09ce7153", null ], + [ "currentMovementSpeed", "classne_1_1EditorCameraNode.html#a5b51d4e57cc3d6c659001f19fb230ad9", null ], + [ "currentMovementSpeedMultiplier", "classne_1_1EditorCameraNode.html#a946b516deda1be96c2f78eedffd6e009", null ], + [ "lastInputDirection", "classne_1_1EditorCameraNode.html#ae6670c5d3a43c866dbf2e83be6c9de54", null ], + [ "movementSpeed", "classne_1_1EditorCameraNode.html#af1f1b3192b4f0e8a0fb12fc22c606fed", null ], + [ "rotationSensitivity", "classne_1_1EditorCameraNode.html#a735eb53b5ffb0f729b2d30bafa93c2f5", null ], + [ "speedDecreaseMultiplier", "classne_1_1EditorCameraNode.html#abf57cb35c798352b8b87c0a8f3098f88", null ], + [ "speedIncreaseMultiplier", "classne_1_1EditorCameraNode.html#a75367bd52da285d673fa6934c1180946", null ] +]; \ No newline at end of file diff --git a/classne_1_1EditorCameraNode.png b/classne_1_1EditorCameraNode.png new file mode 100644 index 0000000000000000000000000000000000000000..52315f97153b30c488ed03a1ea23fb159b2b1bd4 GIT binary patch literal 1593 zcmcIke>l^593Mq0$>|BH6K9jTd`VQhEG2Gcm(wOKHsiENiTSnAth&;9IBQ?>tw#D` z6-A-e*sY@@Wy3Y1#yCGVKW1E=5n}i4o}PQ2p6BkryU!n=_v`a{KhOL5ynZ~N%m9Df zie*;I5D3HyystMAu2~3#o{P~U7~L1gx58y@z&C+DI-L%N!(-Yc&XZf)T+nfrkaW1V zwido8fo-?p-qJ*(KM4V!|5{u1dF=>;&4}a-=(fswNj#yXtp4^oRQZggI01 zzHs@;1}b9XxPBPJ0+A&`kh=|P`~Pk!SJu>94%nEY4jXm*fE&lZz~|2a;S0W{oPpFG zB4LUNL6+GC5Sk@V3fI!&mnN(d1igA8_^qI-zC-fRIYjMuyZi8{uPk#22pNeu??jHK zDc!DNDc0O#Yv);68RMr&A2m^?;rYr8VyiDIgAML16ydseziemSa6Y67icNnrrPvN8 zHfS)VRL9Go@m6aUTG<$PewyBk!?jf2kh31VpL@CkEM8wvMLzEbz=I46e5J9z;vU@P5bGZZnuQVRzE{U$}lM!@^ZU_9heky!QpwxD3@)kD?I0>>7 zQ%=Y)CY2;0M^L&Rh;+Bh0-stmA>CW$m3~}&G;NS<|8oTgIl}(seR04{#>_@PXa*Rvv z>xnERHIA8+3|Xj^WFn2~tetwrrj4>56hQUj&wCX(*k?6uIlktc$QNwT73CwdU_f_) zEF;z}I@x*&VHj=$9k#+9vVjiJEiZ8?C)Vpt#{ENRKQ$80^V=oV@3I-DKY(tF;RKsA zxk$+#$c2p@aX%8wd*A;e4IorZ9}F6r5S}5HMSCX+yoU<<_h+Op&Pn@{AHYK4Bg?5B z;eykR4Zy?fnjhngL$C~wVC#FXs1a%IG#xCW|U6#H7}QjhgvP6RgRSnemme;Nq2}ZWrb?gm&=F`Y`yTjm59)b7q_b&GeJN+l?SqLux literal 0 HcmV?d00001 diff --git a/classne_1_1EditorGameInstance-members.html b/classne_1_1EditorGameInstance-members.html new file mode 100644 index 000000000..6de29c0ab --- /dev/null +++ b/classne_1_1EditorGameInstance-members.html @@ -0,0 +1,161 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::EditorGameInstance Member List
+
+
+ +

This is the complete list of members for ne::EditorGameInstance, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addDeferredTask(const std::function< void()> &task) constne::GameInstance
addTaskToThreadPool(const std::function< void()> &task) constne::GameInstance
bAllowCreatingTimersne::GameInstanceprivate
createTimer(const std::string &sTimerName)ne::GameInstanceprotected
createWorld(const std::function< void(const std::optional< Error > &)> &onCreated, size_t iWorldSize=Globals::getDefaultWorldSize())ne::GameInstance
EditorGameInstance(Window *pWindow, GameManager *pGameManager, InputManager *pInputManager)ne::EditorGameInstance
executeShaderManagerSelfValidation() constne::GameInstance
GameInstance()=delete (defined in ne::GameInstance)ne::GameInstance
GameInstance(Window *pGameWindow, GameManager *pGameManager, InputManager *pInputManager)ne::GameInstance
GameInstance(const GameInstance &)=delete (defined in ne::GameInstance)ne::GameInstance
gcPointersne::EditorGameInstanceprivate
getActionEventBindings()ne::GameInstanceprotected
getAxisEventBindings()ne::GameInstanceprotected
getCalledEveryFrameNodeCount()ne::GameInstance
getCameraManager() constne::GameInstance
getEditorCamera() constne::EditorGameInstance
getEditorWindowTitle()ne::EditorGameInstancestatic
getGarbageCollectorRunIntervalInSec()ne::GameInstance
getInputManager() constne::GameInstance
getTotalApplicationTimeInSec()ne::GameInstancestatic
getTotalSpawnedNodeCount()ne::GameInstance
getWindow() constne::GameInstance
getWorldRootNode() constne::GameInstance
getWorldSize() constne::GameInstance
getWorldTimeInSeconds() constne::GameInstance
loadNodeTreeAsWorld(const std::function< void(const std::optional< Error > &)> &onLoaded, const std::filesystem::path &pathToNodeTree, size_t iWorldSize=Globals::getDefaultWorldSize())ne::GameInstance
mtxBindedActionEventsne::GameInstanceprivate
mtxBindedAxisEventsne::GameInstanceprivate
mtxCreatedTimersne::GameInstanceprivate
onBeforeNewFrame(float timeSincePrevCallInSec) overridene::EditorGameInstanceprotectedvirtual
onFramebufferSizeChanged(int iWidth, int iHeight)ne::GameInstanceinlineprotectedvirtual
onGameStarted() overridene::EditorGameInstanceprotectedvirtual
onInputActionEvent(unsigned int iActionId, KeyboardModifiers modifiers, bool bIsPressedDown)ne::GameInstanceprivate
onInputAxisEvent(unsigned int iAxisEventId, KeyboardModifiers modifiers, float input)ne::GameInstanceprivate
onKeyboardInput(KeyboardKey key, KeyboardModifiers modifiers, bool bIsPressedDown)ne::GameInstanceinlineprotectedvirtual
onMouseInput(MouseButton button, KeyboardModifiers modifiers, bool bIsPressedDown)ne::GameInstanceinlineprotectedvirtual
onMouseMove(double xOffset, double yOffset)ne::GameInstanceinlineprotectedvirtual
onMouseScrollMove(int iOffset)ne::GameInstanceinlineprotectedvirtual
onWindowClose()ne::GameInstanceinlineprotectedvirtual
onWindowFocusChanged(bool bIsFocused)ne::GameInstanceinlineprotectedvirtual
operator=(const GameInstance &)=delete (defined in ne::GameInstance)ne::GameInstance
pEditorWindowTitlene::EditorGameInstanceprivatestatic
pGameManagerne::GameInstanceprivate
pGameWindowne::GameInstanceprivate
pInputManagerne::GameInstanceprivate
queueGarbageCollection(bool bForce, const std::optional< std::function< void()> > &onFinished={})ne::GameInstance
setGarbageCollectorRunInterval(long long iGcRunIntervalInSec)ne::GameInstance
spawnEditorNodesForNewWorld()ne::EditorGameInstanceprivate
stopAndDisableCreatedTimers()ne::GameInstanceprotected
~EditorGameInstance() override=default (defined in ne::EditorGameInstance)ne::EditorGameInstancevirtual
~GameInstance()=default (defined in ne::GameInstance)ne::GameInstancevirtual
+
+ + + + diff --git a/classne_1_1EditorGameInstance.html b/classne_1_1EditorGameInstance.html new file mode 100644 index 000000000..861e00de5 --- /dev/null +++ b/classne_1_1EditorGameInstance.html @@ -0,0 +1,476 @@ + + + + + + + +Nameless Engine: ne::EditorGameInstance Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <EditorGameInstance.h>

+
+Inheritance diagram for ne::EditorGameInstance:
+
+
+ + +ne::GameInstance + +
+ + + + +

+Classes

struct  EditorGcPointers
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 EditorGameInstance (Window *pWindow, GameManager *pGameManager, InputManager *pInputManager)
 
sgc::GcPtr< EditorCameraNodegetEditorCamera () const
 
- Public Member Functions inherited from ne::GameInstance
 GameInstance (Window *pGameWindow, GameManager *pGameManager, InputManager *pInputManager)
 
GameInstance (const GameInstance &)=delete
 
+GameInstanceoperator= (const GameInstance &)=delete
 
void addDeferredTask (const std::function< void()> &task) const
 
void addTaskToThreadPool (const std::function< void()> &task) const
 
void createWorld (const std::function< void(const std::optional< Error > &)> &onCreated, size_t iWorldSize=Globals::getDefaultWorldSize())
 
void loadNodeTreeAsWorld (const std::function< void(const std::optional< Error > &)> &onLoaded, const std::filesystem::path &pathToNodeTree, size_t iWorldSize=Globals::getDefaultWorldSize())
 
void queueGarbageCollection (bool bForce, const std::optional< std::function< void()> > &onFinished={})
 
void setGarbageCollectorRunInterval (long long iGcRunIntervalInSec)
 
void executeShaderManagerSelfValidation () const
 
sgc::GcPtr< NodegetWorldRootNode () const
 
float getWorldTimeInSeconds () const
 
size_t getWorldSize () const
 
size_t getTotalSpawnedNodeCount ()
 
size_t getCalledEveryFrameNodeCount ()
 
WindowgetWindow () const
 
CameraManagergetCameraManager () const
 
InputManagergetInputManager () const
 
long long getGarbageCollectorRunIntervalInSec ()
 
+ + + + + + +

+Static Public Member Functions

static const char * getEditorWindowTitle ()
 
- Static Public Member Functions inherited from ne::GameInstance
static float getTotalApplicationTimeInSec ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void onGameStarted () override
 
virtual void onBeforeNewFrame (float timeSincePrevCallInSec) override
 
- Protected Member Functions inherited from ne::GameInstance
TimercreateTimer (const std::string &sTimerName)
 
void stopAndDisableCreatedTimers ()
 
virtual void onGameStarted ()
 
virtual void onBeforeNewFrame (float timeSincePrevCallInSec)
 
virtual void onKeyboardInput (KeyboardKey key, KeyboardModifiers modifiers, bool bIsPressedDown)
 
virtual void onMouseInput (MouseButton button, KeyboardModifiers modifiers, bool bIsPressedDown)
 
virtual void onMouseMove (double xOffset, double yOffset)
 
virtual void onMouseScrollMove (int iOffset)
 
virtual void onWindowFocusChanged (bool bIsFocused)
 
virtual void onFramebufferSizeChanged (int iWidth, int iHeight)
 
virtual void onWindowClose ()
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, bool)> > > * getActionEventBindings ()
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, float)> > > * getAxisEventBindings ()
 
+ + + +

+Private Member Functions

void spawnEditorNodesForNewWorld ()
 
+ + + +

+Private Attributes

EditorGcPointers gcPointers
 
+ + + +

+Static Private Attributes

static constexpr auto pEditorWindowTitle = "Nameless Editor"
 
+

Detailed Description

+

Defines editor game.

+
Remarks
This node expects to be a child of the world's root node so that parent rotations will not affect the camera.
+

Constructor & Destructor Documentation

+ +

◆ EditorGameInstance()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ne::EditorGameInstance::EditorGameInstance (WindowpWindow,
GameManagerpGameManager,
InputManagerpInputManager 
)
+
+

Constructor.

+
Remarks
There is no need to save window/input manager pointers in derived classes as the base class already saves these pointers and provides getWindow and getInputManager functions.
+
Parameters
+ + + + +
pWindowWindow that owns this game instance.
pGameManagerGameManager that owns this game instance.
pInputManagerInput manager of the owner Game object.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getEditorCamera()

+ +
+
+ + + + + + + +
sgc::GcPtr< EditorCameraNode > ne::EditorGameInstance::getEditorCamera () const
+
+

Returns camera that's used for editor's viewport.

+
Returns
Camera node.
+ +
+
+ +

◆ getEditorWindowTitle()

+ +
+
+ + + + + +
+ + + + + + + +
const char * ne::EditorGameInstance::getEditorWindowTitle ()
+
+static
+
+

Returns title of the editor's window.

+
Returns
Window title.
+ +
+
+ +

◆ onBeforeNewFrame()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::EditorGameInstance::onBeforeNewFrame (float timeSincePrevCallInSec)
+
+overrideprotectedvirtual
+
+

Called before a new frame is rendered.

+
Remarks
Called before nodes that should be called every frame.
+
Parameters
+ + +
timeSincePrevCallInSecTime in seconds that has passed since the last call to this function.
+
+
+ +

Reimplemented from ne::GameInstance.

+ +
+
+ +

◆ onGameStarted()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::EditorGameInstance::onGameStarted ()
+
+overrideprotectedvirtual
+
+

Called after GameInstance's constructor is finished and created GameInstance object was saved in GameManager (that owns GameInstance).

+

At this point you can create and interact with the game world and etc.

+ +

Reimplemented from ne::GameInstance.

+ +
+
+ +

◆ spawnEditorNodesForNewWorld()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::EditorGameInstance::spawnEditorNodesForNewWorld ()
+
+private
+
+

Called after a new world was created to create editor-specific nodes such as camera and etc.

+ +
+
+

Member Data Documentation

+ +

◆ gcPointers

+ +
+
+ + + + + +
+ + + + +
EditorGcPointers ne::EditorGameInstance::gcPointers
+
+private
+
+

All GC pointer that the editor holds.

+ +
+
+ +

◆ pEditorWindowTitle

+ +
+
+ + + + + +
+ + + + +
constexpr auto ne::EditorGameInstance::pEditorWindowTitle = "Nameless Editor"
+
+staticconstexprprivate
+
+

Title of the editor's window.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classne_1_1EditorGameInstance.js b/classne_1_1EditorGameInstance.js new file mode 100644 index 000000000..60d965fc1 --- /dev/null +++ b/classne_1_1EditorGameInstance.js @@ -0,0 +1,12 @@ +var classne_1_1EditorGameInstance = +[ + [ "EditorGcPointers", "structne_1_1EditorGameInstance_1_1EditorGcPointers.html", "structne_1_1EditorGameInstance_1_1EditorGcPointers" ], + [ "EditorGameInstance", "classne_1_1EditorGameInstance.html#a7a5fafe560c718e9762c7dab30074b0c", null ], + [ "getEditorCamera", "classne_1_1EditorGameInstance.html#ad13da9aea3a7dc4275907c873fde63c1", null ], + [ "getEditorWindowTitle", "classne_1_1EditorGameInstance.html#af8bf4f0a4f57cca6516327988a4c6838", null ], + [ "onBeforeNewFrame", "classne_1_1EditorGameInstance.html#a98db763ad2e5b24ba9bb24c5192fb1c5", null ], + [ "onGameStarted", "classne_1_1EditorGameInstance.html#aab5506f886d0c72aa81728232ef7b3b5", null ], + [ "spawnEditorNodesForNewWorld", "classne_1_1EditorGameInstance.html#a396c05b1176a5d1d5b915416106754af", null ], + [ "gcPointers", "classne_1_1EditorGameInstance.html#a36bba30d835f5b4d4c24fdb2b83d4de5", null ], + [ "pEditorWindowTitle", "classne_1_1EditorGameInstance.html#acf42faf2f7dfd17db06affdbb488101c", null ] +]; \ No newline at end of file diff --git a/classne_1_1EditorGameInstance.png b/classne_1_1EditorGameInstance.png new file mode 100644 index 0000000000000000000000000000000000000000..bc90a473760a0d769d026874a236aad788f8c99e GIT binary patch literal 643 zcmeAS@N?(olHy`uVBq!ia0vp^6M#5?gBeI3Ea0&NQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#NuNJY5_^Dj46+eVO;ffTuZ= zP2$7f`4yLswAb`(YcAR7wy?4D7?*7Aw5R`$70Mj1X8UEopv8~X%*!}i~&p8rv#ZK&$zQ6Lq z1?TSOIbIuAMZ_ykig~$Md3AL>-~K&`?3`9MFXruuPr9eG=iN1$^hcgc zVbT{72bGtaKzCm5b2wfoBhATB=c3PW!*e&|-niLZB#SSs3OqaWL4h3NTb~DKLBxK~`{|drFX(HK*sKZ-ES+la@0~Qt{Wj zaQEBKojjgtCe13nQt`FPpY1Mu*>mQ@KW_hqOFM7wd0P2ba`&m?y=VH?PuLiDFvqy~ z^Ie%WezVu5<~qFfc@=DW^ZLy|CEmYfqTjOoF9E~lZ(97qkD;#@c5b?SCG~OFw(aLK zx4mJ!sb?x06eK-YD{RuO4WFYf+{ + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::EditorNodeCreationHelpers Member List
+
+
+ +

This is the complete list of members for ne::EditorNodeCreationHelpers, including all inherited members.

+ + + +
createEditorNode(const std::string &sNodeName)ne::EditorNodeCreationHelpersinlinestatic
EditorNodeCreationHelpers()=delete (defined in ne::EditorNodeCreationHelpers)ne::EditorNodeCreationHelpers
+
+ + + + diff --git a/classne_1_1EditorNodeCreationHelpers.html b/classne_1_1EditorNodeCreationHelpers.html new file mode 100644 index 000000000..bb7ffbff9 --- /dev/null +++ b/classne_1_1EditorNodeCreationHelpers.html @@ -0,0 +1,164 @@ + + + + + + + +Nameless Engine: ne::EditorNodeCreationHelpers Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::EditorNodeCreationHelpers Class Reference
+
+
+ +

#include <EditorNodeCreationHelpers.hpp>

+ + + + + +

+Static Public Member Functions

template<typename NodeType >
+requires std::derived_from<NodeType, Node>
static sgc::GcPtr< NodeType > createEditorNode (const std::string &sNodeName)
 
+

Detailed Description

+

Helper tools for creation nodes in the editor.

+

Member Function Documentation

+ +

◆ createEditorNode()

+ +
+
+
+template<typename NodeType >
+requires std::derived_from<NodeType, Node>
+ + + + + +
+ + + + + + + + +
static sgc::GcPtr< NodeType > ne::EditorNodeCreationHelpers::createEditorNode (const std::string & sNodeName)
+
+inlinestatic
+
+

Creates an editor-owned node (not a game-owned node) with specific node settings like no node serialization and etc. so that it won't affect the game.

+
Parameters
+ + +
sNodeNameName of the node.
+
+
+
Returns
Created node.
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classne_1_1EditorNodeCreationHelpers.js b/classne_1_1EditorNodeCreationHelpers.js new file mode 100644 index 000000000..8055ac52a --- /dev/null +++ b/classne_1_1EditorNodeCreationHelpers.js @@ -0,0 +1,4 @@ +var classne_1_1EditorNodeCreationHelpers = +[ + [ "createEditorNode", "classne_1_1EditorNodeCreationHelpers.html#ac27cd814e1fa939ca533cf7f5e0836a9", null ] +]; \ No newline at end of file diff --git a/classne_1_1EngineShaderConstantMacros-members.html b/classne_1_1EngineShaderConstantMacros-members.html new file mode 100644 index 000000000..3a26e4f2e --- /dev/null +++ b/classne_1_1EngineShaderConstantMacros-members.html @@ -0,0 +1,111 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::EngineShaderConstantMacros Member List
+
+
+ +

This is the complete list of members for ne::EngineShaderConstantMacros, including all inherited members.

+ + +
EngineShaderConstantMacros()=delete (defined in ne::EngineShaderConstantMacros)ne::EngineShaderConstantMacros
+
+ + + + diff --git a/classne_1_1EngineShaderConstantMacros.html b/classne_1_1EngineShaderConstantMacros.html new file mode 100644 index 000000000..a4dce38b6 --- /dev/null +++ b/classne_1_1EngineShaderConstantMacros.html @@ -0,0 +1,124 @@ + + + + + + + +Nameless Engine: ne::EngineShaderConstantMacros Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::EngineShaderConstantMacros Class Reference
+
+
+ +

#include <EngineShaderConstantMacros.hpp>

+ + + + +

+Classes

struct  ForwardPlus
 
+

Detailed Description

+

Stores constant predefined macros (that never change) for some engine shaders.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classne_1_1EngineShaderConstantMacros.js b/classne_1_1EngineShaderConstantMacros.js new file mode 100644 index 000000000..3d808f6d8 --- /dev/null +++ b/classne_1_1EngineShaderConstantMacros.js @@ -0,0 +1,4 @@ +var classne_1_1EngineShaderConstantMacros = +[ + [ "ForwardPlus", "structne_1_1EngineShaderConstantMacros_1_1ForwardPlus.html", "structne_1_1EngineShaderConstantMacros_1_1ForwardPlus" ] +]; \ No newline at end of file diff --git a/classne_1_1EngineShaderNames-members.html b/classne_1_1EngineShaderNames-members.html new file mode 100644 index 000000000..8ac4c7324 --- /dev/null +++ b/classne_1_1EngineShaderNames-members.html @@ -0,0 +1,111 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::EngineShaderNames Member List
+
+
+ +

This is the complete list of members for ne::EngineShaderNames, including all inherited members.

+ + +
EngineShaderNames()=delete (defined in ne::EngineShaderNames)ne::EngineShaderNames
+
+ + + + diff --git a/classne_1_1EngineShaderNames.html b/classne_1_1EngineShaderNames.html new file mode 100644 index 000000000..561117a48 --- /dev/null +++ b/classne_1_1EngineShaderNames.html @@ -0,0 +1,128 @@ + + + + + + + +Nameless Engine: ne::EngineShaderNames Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::EngineShaderNames Class Reference
+
+
+ +

#include <EngineShaderNames.hpp>

+ + + + + + + + +

+Classes

struct  ForwardPlus
 
struct  MeshNode
 
struct  PointLight
 
+

Detailed Description

+

Stores unique names of engine shaders.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classne_1_1EngineShaderNames.js b/classne_1_1EngineShaderNames.js new file mode 100644 index 000000000..8e5b4f237 --- /dev/null +++ b/classne_1_1EngineShaderNames.js @@ -0,0 +1,6 @@ +var classne_1_1EngineShaderNames = +[ + [ "ForwardPlus", "structne_1_1EngineShaderNames_1_1ForwardPlus.html", "structne_1_1EngineShaderNames_1_1ForwardPlus" ], + [ "MeshNode", "structne_1_1EngineShaderNames_1_1MeshNode.html", "structne_1_1EngineShaderNames_1_1MeshNode" ], + [ "PointLight", "structne_1_1EngineShaderNames_1_1PointLight.html", "structne_1_1EngineShaderNames_1_1PointLight" ] +]; \ No newline at end of file diff --git a/classne_1_1EngineShaders-members.html b/classne_1_1EngineShaders-members.html new file mode 100644 index 000000000..598ec30d7 --- /dev/null +++ b/classne_1_1EngineShaders-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::EngineShaders Member List
+
+
+ +

This is the complete list of members for ne::EngineShaders, including all inherited members.

+ + + +
constructPathToShaderSourceFile(bool bIsHlsl, const std::string &sShaderPathRelativeFinal)ne::EngineShadersinlineprivatestatic
EngineShaders()=delete (defined in ne::EngineShaders)ne::EngineShaders
+
+ + + + diff --git a/classne_1_1EngineShaders.html b/classne_1_1EngineShaders.html new file mode 100644 index 000000000..132704f7c --- /dev/null +++ b/classne_1_1EngineShaders.html @@ -0,0 +1,180 @@ + + + + + + + +Nameless Engine: ne::EngineShaders Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::EngineShaders Class Reference
+
+
+ +

#include <EngineShaders.hpp>

+ + + + + + + + +

+Classes

struct  ForwardPlus
 
struct  MeshNode
 
struct  PointLight
 
+ + + +

+Static Private Member Functions

static std::filesystem::path constructPathToShaderSourceFile (bool bIsHlsl, const std::string &sShaderPathRelativeFinal)
 
+

Detailed Description

+

Stores engine shader descriptions.

+

Member Function Documentation

+ +

◆ constructPathToShaderSourceFile()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static std::filesystem::path ne::EngineShaders::constructPathToShaderSourceFile (bool bIsHlsl,
const std::string & sShaderPathRelativeFinal 
)
+
+inlinestaticprivate
+
+

Constructs a path to the shader source file.

+
Parameters
+ + + +
bIsHlsltrue to construct a path to the HLSL file, false to GLSL.
sShaderPathRelativeFinalPath relative final shader directory to the shader without shader language extension, for example: specify "MeshNode.vert" when the real file is "MeshNode.vert.hlsl".
+
+
+
Returns
Path to the shader source file.
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classne_1_1EngineShaders.js b/classne_1_1EngineShaders.js new file mode 100644 index 000000000..392925d6f --- /dev/null +++ b/classne_1_1EngineShaders.js @@ -0,0 +1,7 @@ +var classne_1_1EngineShaders = +[ + [ "ForwardPlus", "structne_1_1EngineShaders_1_1ForwardPlus.html", "structne_1_1EngineShaders_1_1ForwardPlus" ], + [ "MeshNode", "structne_1_1EngineShaders_1_1MeshNode.html", "structne_1_1EngineShaders_1_1MeshNode" ], + [ "PointLight", "structne_1_1EngineShaders_1_1PointLight.html", "structne_1_1EngineShaders_1_1PointLight" ], + [ "constructPathToShaderSourceFile", "classne_1_1EngineShaders.html#ac91ecca64b940b61ed038c984e7e0bb4", null ] +]; \ No newline at end of file diff --git a/classne_1_1EnvironmentNode-members.html b/classne_1_1EnvironmentNode-members.html new file mode 100644 index 000000000..4496c2fb7 --- /dev/null +++ b/classne_1_1EnvironmentNode-members.html @@ -0,0 +1,214 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::EnvironmentNode Member List
+
+
+ +

This is the complete list of members for ne::EnvironmentNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addChildNode(const sgc::GcPtr< Node > &pNode, AttachmentRule locationRule=AttachmentRule::KEEP_WORLD, AttachmentRule rotationRule=AttachmentRule::KEEP_WORLD, AttachmentRule scaleRule=AttachmentRule::KEEP_WORLD)ne::Node
ambientLightne::EnvironmentNodeprivate
AttachmentRule enum namene::Node
bSerializene::Nodeprivate
createNotificationBroadcaster()ne::Nodeinlineprotected
createTimer(const std::string &sTimerName)ne::Nodeprotected
deserialize(const std::filesystem::path &pathToFile)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)ne::Serializablestatic
deserialize(std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, const std::string &sEntityId)ne::Serializablestatic
deserialize(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})ne::Serializablestatic
deserializeFromSection(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sSectionName, const std::string &sTypeGuid, const std::string &sEntityId, const std::optional< std::filesystem::path > &optionalPathToFile)ne::Serializableprivatestatic
deserializeMultiple(std::filesystem::path pathToFile)ne::Serializablestatic
deserializeNodeTree(const std::filesystem::path &pathToFile)ne::Nodestatic
despawn()ne::Nodeprivate
detachFromParentAndDespawn()ne::Node
enableTimer(Timer *pTimer, bool bEnable)ne::Nodeprivate
EnvironmentNode() (defined in ne::EnvironmentNode)ne::EnvironmentNode
EnvironmentNode(const std::string &sNodeName)ne::EnvironmentNode
findValidWorld()ne::Nodeprivate
getActionEventBindings()ne::Nodeprotected
getAliveNodeCount()ne::Nodestatic
getAmbientLight() constne::EnvironmentNode
getAxisEventBindings()ne::Nodeprotected
getChildNodeOfType(const std::string &sChildNodeName="")ne::Node
getChildNodes()ne::Node
getClassForGuid(const std::string &sGuid)ne::Serializableprivatestatic
getClassForGuid(const rfk::Struct *pArchetypeToAnalyze, const std::string &sGuid)ne::Serializableprivatestatic
getGameInstance()ne::Nodestatic
getIdsFromFile(std::filesystem::path pathToFile)ne::Serializablestatic
getInformationForSerialization(size_t &iId, std::optional< size_t > iParentId)ne::Nodeprivate
getNodeId() constne::Node
getNodeName() constne::Node
getParentNode()ne::Node
getParentNodeOfType(const std::string &sParentNodeName="")ne::Node
getPathDeserializedFromRelativeToRes() constne::Serializable
getSpawnDespawnMutex()ne::Nodeprotected
getTickGroup() constne::Node
getWorldRootNode()ne::Node
iNodeIdne::Nodeprivate
isCalledEveryFrame()ne::Node
isChildOf(Node *pNode)ne::Node
isParentOf(Node *pNode)ne::Node
isReceivingInput()ne::Node
isSerialized() constne::Node
isSpawned()ne::Node
isTreeDeserializedFromOneFile(const std::string &sPathRelativeToRes)ne::Nodeprivate
lockChildren()ne::Nodeprivate
mtxBindedActionEventsne::Nodeprivate
mtxBindedAxisEventsne::Nodeprivate
mtxChildNodesne::Nodeprivate
mtxCreatedBroadcastersne::Nodeprivate
mtxCreatedTimersne::Nodeprivate
mtxIsCalledEveryFramene::Nodeprivate
mtxIsReceivingInputne::Nodeprivate
mtxIsSpawnedne::Nodeprivate
mtxParentNodene::Nodeprivate
Node()ne::Node
Node(const std::string &sName)ne::Node
Node(const Node &)=delete (defined in ne::Node)ne::Node
Node(Node &&)=delete (defined in ne::Node)ne::Node
notifyAboutAttachedToNewParent(bool bThisNodeBeingAttached)ne::Nodeprivate
notifyAboutDetachingFromParent(bool bThisNodeBeingDetached)ne::Nodeprivate
onAfterAttachedToNewParent(bool bThisNodeBeingAttached)ne::Nodeinlineprotectedvirtual
onAfterDeserialized()ne::Serializableinlineprotectedvirtual
onBeforeDetachedFromParent(bool bThisNodeBeingDetached)ne::Nodeinlineprotectedvirtual
onBeforeNewFrame(float timeSincePrevFrameInSec)ne::Nodeinlineprotectedvirtual
onChildNodesSpawned()ne::Nodeinlineprotectedvirtual
onDespawning() overridene::EnvironmentNodeprotectedvirtual
onInputActionEvent(unsigned int iActionId, KeyboardModifiers modifiers, bool bIsPressedDown)ne::Nodeprivate
onInputAxisEvent(unsigned int iAxisEventId, KeyboardModifiers modifiers, float input)ne::Nodeprivate
onMouseMove(double xOffset, double yOffset)ne::Nodeinlineprotectedvirtual
onMouseScrollMove(int iOffset)ne::Nodeinlineprotectedvirtual
onSpawning() overridene::EnvironmentNodeprotectedvirtual
operator=(const Node &)=delete (defined in ne::Node)ne::Node
operator=(Node &&)=delete (defined in ne::Node)ne::Node
pathDeserializedFromRelativeToResne::Serializableprivate
pWorldne::Nodeprivate
resolvePathToToml(std::filesystem::path &pathToFile)ne::Serializableprivatestatic
sCustomAttributePrefixne::Serializableprivatestatic
Serializable()=default (defined in ne::Serializable)ne::Serializable
serialize(std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})ne::Serializable
serialize(toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serialize(toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serializeMultiple(std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)ne::Serializablestatic
serializeNodeTree(const std::filesystem::path &pathToFile, bool bEnableBackup)ne::Node
setAmbientLight(const glm::vec3 &ambientLight)ne::EnvironmentNode
setIsCalledEveryFrame(bool bEnable)ne::Nodeprotected
setIsReceivingInput(bool bEnable)ne::Nodeprotected
setNodeName(const std::string &sName)ne::Node
setSerialize(bool bSerialize)ne::Node
setTickGroup(TickGroup tickGroup)ne::Nodeprotected
sExternalNodeTreePathAttributeNamene::Nodeinlineprivatestatic
sNodeNamene::Nodeprivate
sNothingToSerializeKeyne::Serializableinlineprivatestatic
sParentNodeIdAttributeNamene::Nodeinlineprivatestatic
sPathRelativeToResKeyne::Serializableinlineprivatestatic
spawn()ne::Nodeprivate
sSubEntityFieldNameKeyne::Serializableinlineprivatestatic
tickGroupne::Nodeprivate
unlockChildren()ne::Nodeprivate
~EnvironmentNode() override=default (defined in ne::EnvironmentNode)ne::EnvironmentNodevirtual
~Node() overridene::Nodevirtual
~Serializable() override=default (defined in ne::Serializable)ne::Serializablevirtual
+
+ + + + diff --git a/classne_1_1EnvironmentNode.html b/classne_1_1EnvironmentNode.html new file mode 100644 index 000000000..7e2173396 --- /dev/null +++ b/classne_1_1EnvironmentNode.html @@ -0,0 +1,464 @@ + + + + + + + +Nameless Engine: ne::EnvironmentNode Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <EnvironmentNode.h>

+
+Inheritance diagram for ne::EnvironmentNode:
+
+
+ + +ne::Node +ne::Serializable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 EnvironmentNode (const std::string &sNodeName)
 
void setAmbientLight (const glm::vec3 &ambientLight)
 
glm::vec3 getAmbientLight () const
 
- Public Member Functions inherited from ne::Node
 Node ()
 
 Node (const std::string &sName)
 
Node (const Node &)=delete
 
+Nodeoperator= (const Node &)=delete
 
Node (Node &&)=delete
 
+Nodeoperator= (Node &&)=delete
 
virtual ~Node () override
 
void setNodeName (const std::string &sName)
 
void detachFromParentAndDespawn ()
 
void addChildNode (const sgc::GcPtr< Node > &pNode, AttachmentRule locationRule=AttachmentRule::KEEP_WORLD, AttachmentRule rotationRule=AttachmentRule::KEEP_WORLD, AttachmentRule scaleRule=AttachmentRule::KEEP_WORLD)
 
void setSerialize (bool bSerialize)
 
std::optional< ErrorserializeNodeTree (const std::filesystem::path &pathToFile, bool bEnableBackup)
 
std::string getNodeName () const
 
sgc::GcPtr< NodegetWorldRootNode ()
 
std::pair< std::recursive_mutex, sgc::GcPtr< Node > > * getParentNode ()
 
std::pair< std::recursive_mutex, sgc::GcVector< sgc::GcPtr< Node > > > * getChildNodes ()
 
template<typename NodeType >
+requires std::derived_from<NodeType, Node>
sgc::GcPtr< NodeType > getParentNodeOfType (const std::string &sParentNodeName="")
 
template<typename NodeType >
+requires std::derived_from<NodeType, Node>
sgc::GcPtr< NodeType > getChildNodeOfType (const std::string &sChildNodeName="")
 
TickGroup getTickGroup () const
 
std::optional< size_t > getNodeId () const
 
bool isCalledEveryFrame ()
 
bool isReceivingInput ()
 
bool isSpawned ()
 
bool isParentOf (Node *pNode)
 
bool isChildOf (Node *pNode)
 
bool isSerialized () const
 
- Public Member Functions inherited from ne::Serializable
std::optional< Errorserialize (std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})
 
std::variant< std::string, Errorserialize (toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::variant< std::string, Errorserialize (toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::optional< std::pair< std::string, std::string > > getPathDeserializedFromRelativeToRes () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void onSpawning () override
 
virtual void onDespawning () override
 
- Protected Member Functions inherited from ne::Node
void setIsCalledEveryFrame (bool bEnable)
 
void setTickGroup (TickGroup tickGroup)
 
void setIsReceivingInput (bool bEnable)
 
TimercreateTimer (const std::string &sTimerName)
 
template<typename FunctionType >
NodeNotificationBroadcaster< FunctionType > * createNotificationBroadcaster ()
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, bool)> > > * getActionEventBindings ()
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, float)> > > * getAxisEventBindings ()
 
std::recursive_mutex * getSpawnDespawnMutex ()
 
virtual void onMouseMove (double xOffset, double yOffset)
 
virtual void onMouseScrollMove (int iOffset)
 
virtual void onBeforeNewFrame (float timeSincePrevFrameInSec)
 
virtual void onSpawning ()
 
virtual void onChildNodesSpawned ()
 
virtual void onDespawning ()
 
virtual void onBeforeDetachedFromParent (bool bThisNodeBeingDetached)
 
virtual void onAfterAttachedToNewParent (bool bThisNodeBeingAttached)
 
- Protected Member Functions inherited from ne::Serializable
virtual void onAfterDeserialized ()
 
+ + + +

+Private Attributes

glm::vec3 ambientLight = glm::vec3(0.0F, 0.0F, 0.0F)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ne::Node
enum class  AttachmentRule { RESET_RELATIVE +, KEEP_RELATIVE +, KEEP_WORLD + }
 
- Static Public Member Functions inherited from ne::Node
static size_t getAliveNodeCount ()
 
static std::variant< sgc::GcPtr< Node >, ErrordeserializeNodeTree (const std::filesystem::path &pathToFile)
 
static GameInstancegetGameInstance ()
 
- Static Public Member Functions inherited from ne::Serializable
static std::variant< std::pair< std::set< std::string >, toml::value >, ErrorgetIdsFromFile (std::filesystem::path pathToFile)
 
static std::optional< ErrorserializeMultiple (std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::same_as<SmartPointer, sgc::GcPtr<Serializable>> || std::same_as<SmartPointer, std::unique_ptr<Serializable>>
static std::variant< std::vector< DeserializedObjectInformation< SmartPointer > >, ErrordeserializeMultiple (std::filesystem::path pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})
 
+

Detailed Description

+

Allows configuring environment settings such as ambient light, skybox, etc.

+

Constructor & Destructor Documentation

+ +

◆ EnvironmentNode()

+ +
+
+ + + + + + + + +
ne::EnvironmentNode::EnvironmentNode (const std::string & sNodeName)
+
+

Creates a new node with the specified name.

+
Parameters
+ + +
sNodeNameName of this node.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getAmbientLight()

+ +
+
+ + + + + + + +
glm::vec3 ne::EnvironmentNode::getAmbientLight () const
+
+

Returns ambient light color intensity.

+
Returns
Light color intensity in RGB format in range [0.0; 1.0].
+ +
+
+ +

◆ onDespawning()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::EnvironmentNode::onDespawning ()
+
+overrideprotectedvirtual
+
+

Called before this node is despawned from the world to execute custom despawn logic.

+
Remarks
This node will be marked as despawned after this function is called.
+
+This function is called after all child nodes were despawned.
+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +

Reimplemented from ne::Node.

+ +
+
+ +

◆ onSpawning()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::EnvironmentNode::onSpawning ()
+
+overrideprotectedvirtual
+
+

Called when this node was not spawned previously and it was either attached to a parent node that is spawned or set as world's root node to execute custom spawn logic.

+
Remarks
This node will be marked as spawned before this function is called.
+
+This function is called before any of the child nodes are spawned. If you need to do some logic after child nodes are spawned use onChildNodesSpawned.
+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +

Reimplemented from ne::Node.

+ +
+
+ +

◆ setAmbientLight()

+ +
+
+ + + + + + + + +
void ne::EnvironmentNode::setAmbientLight (const glm::vec3 & ambientLight)
+
+

Sets intensity and color of the ambient lighting.

+
Parameters
+ + +
ambientLightLight color intensity in RGB format in range [0.0; 1.0].
+
+
+ +
+
+

Member Data Documentation

+ +

◆ ambientLight

+ +
+
+ + + + + +
+ + + + +
glm::vec3 ne::EnvironmentNode::ambientLight = glm::vec3(0.0F, 0.0F, 0.0F)
+
+private
+
+

Intensity and color of the ambient lighting.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/game/nodes/EnvironmentNode.h
  • +
  • src/engine_lib/private/game/nodes/EnvironmentNode.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1EnvironmentNode.js b/classne_1_1EnvironmentNode.js new file mode 100644 index 000000000..17f9678e5 --- /dev/null +++ b/classne_1_1EnvironmentNode.js @@ -0,0 +1,9 @@ +var classne_1_1EnvironmentNode = +[ + [ "EnvironmentNode", "classne_1_1EnvironmentNode.html#a9e3b14ea64d15d790f31393ee795316e", null ], + [ "getAmbientLight", "classne_1_1EnvironmentNode.html#a3d3ec8182d874479ea206e7b5461c34d", null ], + [ "onDespawning", "classne_1_1EnvironmentNode.html#adbe7bebff6387c0bdca1b8b18af811db", null ], + [ "onSpawning", "classne_1_1EnvironmentNode.html#a095bb987abc897af274a2e9627fadfac", null ], + [ "setAmbientLight", "classne_1_1EnvironmentNode.html#a25cab70a6a87acfb2db3b8a01461e0f6", null ], + [ "ambientLight", "classne_1_1EnvironmentNode.html#afed8db93d9245654b59023cf12a37153", null ] +]; \ No newline at end of file diff --git a/classne_1_1EnvironmentNode.png b/classne_1_1EnvironmentNode.png new file mode 100644 index 0000000000000000000000000000000000000000..d6792ab3513c5cc10555391b381a198d32bac7e1 GIT binary patch literal 969 zcmeAS@N?(olHy`uVBq!ia0vp^EkJyLgBeJE3buX^q@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB)tCL1cvEK`+7DGS2`YmNU zmbpKlb0PbrzN1ZB*F)(8fs^>1*O+pw?h^`b30UD#u*z3L=Kb8_cW2f+FS+@+jboNU zwCrT@=X0#Tw|YHkeb=S?Y|7^TrW<8%?G;xYai3~osdvtD`)6qZUDtKz&8wBdmFG9I zT(Xr-`aGw2-TU+ZlJ?Df{axXn@6!L>T0m!Hh;bzMNair?c*)A(R?XItIT^~3hfTbb*Oc-qsaT)6QCTQ{Xw7NA?)(0en_kZl=H3VTQT*3#*E&zKjlbO|wP@1}uadLvRZb=UzFBXa+h?RUN4V1J(EjM<%_{p- zS_3#HIdK_Ew`{$}XU1^n3lqa)TjnF1d>jm!kDM}?m&CTIyktqYQdY%*h#l^zZLG7zl=R_d(zFmEa7=hTOK5Beif8!{8j7X%T8^9 z+v-Qx@L)u}Dp3_4h|FKivBr7{<~1;U2f< hksN_z62>>`r+8giy`x=ZJ22BRc)I$ztaD0e0su(atg!$9 literal 0 HcmV?d00001 diff --git a/classne_1_1Error-members.html b/classne_1_1Error-members.html new file mode 100644 index 000000000..187b94071 --- /dev/null +++ b/classne_1_1Error-members.html @@ -0,0 +1,124 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::Error Member List
+
+
+ +

This is the complete list of members for ne::Error, including all inherited members.

+ + + + + + + + + + + + + + + +
addCurrentLocationToErrorStack(const std::source_location location=std::source_location::current())ne::Error
Error(std::string_view sMessage, const std::source_location location=std::source_location::current())ne::Error
Error()=delete (defined in ne::Error)ne::Error
Error(const Error &other)=defaultne::Error
Error(Error &&other)=defaultne::Error
getFullErrorMessage() constne::Error
getInitialMessage() constne::Error
operator=(const Error &other)=defaultne::Error
operator=(Error &&other)=defaultne::Error
showError() constne::Error
sMessagene::Errorprivate
sourceLocationToInfo(const std::source_location &location)ne::Errorprotectedstatic
stackne::Errorprivate
~Error()=default (defined in ne::Error)ne::Errorvirtual
+
+ + + + diff --git a/classne_1_1Error.html b/classne_1_1Error.html new file mode 100644 index 000000000..2cba65de2 --- /dev/null +++ b/classne_1_1Error.html @@ -0,0 +1,489 @@ + + + + + + + +Nameless Engine: ne::Error Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <Error.h>

+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Error (std::string_view sMessage, const std::source_location location=std::source_location::current())
 
 Error (const Error &other)=default
 
Erroroperator= (const Error &other)=default
 
 Error (Error &&other)=default
 
Erroroperator= (Error &&other)=default
 
void addCurrentLocationToErrorStack (const std::source_location location=std::source_location::current())
 
std::string getFullErrorMessage () const
 
std::string getInitialMessage () const
 
void showError () const
 
+ + + +

+Static Protected Member Functions

static SourceLocationInfo sourceLocationToInfo (const std::source_location &location)
 
+ + + + + +

+Private Attributes

std::string sMessage
 
std::vector< SourceLocationInfostack
 
+

Detailed Description

+

Helper class for storing and showing error messages.

+

Constructor & Destructor Documentation

+ +

◆ Error() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
ne::Error::Error (std::string_view sMessage,
const std::source_location location = std::source_location::current() 
)
+
+

Constructs a new Error object.

+
Parameters
+ + + +
sMessageError message to show.
locationShould not be specified explicitly (use default value).
+
+
+ +
+
+ +

◆ Error() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + +
ne::Error::Error (const Errorother)
+
+default
+
+

Copy constructor.

+
Parameters
+ + +
otherother object.
+
+
+ +
+
+ +

◆ Error() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + +
ne::Error::Error (Error && other)
+
+default
+
+

Move constructor.

+
Parameters
+ + +
otherother object.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ addCurrentLocationToErrorStack()

+ +
+
+ + + + + + + + +
void ne::Error::addCurrentLocationToErrorStack (const std::source_location location = std::source_location::current())
+
+

Adds the caller's file and line as a new entry to the error location stack.

+
Parameters
+ + +
locationShould not be specified explicitly (use default value).
+
+
+ +
+
+ +

◆ getFullErrorMessage()

+ +
+
+ + + + + + + +
std::string ne::Error::getFullErrorMessage () const
+
+

Creates an error string that contains an error message and an error location stack.

+
Returns
Error message and error stack.
+ +
+
+ +

◆ getInitialMessage()

+ +
+
+ + + + + + + +
std::string ne::Error::getInitialMessage () const
+
+

Returns initial error message that was used to create this error.

+
Returns
Initial error message.
+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Error & ne::Error::operator= (const Errorother)
+
+default
+
+

Copy assignment.

+
Parameters
+ + +
otherother object.
+
+
+
Returns
Result of copy assignment.
+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Error & ne::Error::operator= (Error && other)
+
+default
+
+

Move assignment.

+
Parameters
+ + +
otherother object.
+
+
+
Returns
Result of move assignment.
+ +
+
+ +

◆ showError()

+ +
+
+ + + + + + + +
void ne::Error::showError () const
+
+

Creates an error string, shows it on screen and also writes it to log.

+ +
+
+ +

◆ sourceLocationToInfo()

+ +
+
+ + + + + +
+ + + + + + + + +
SourceLocationInfo ne::Error::sourceLocationToInfo (const std::source_location & location)
+
+staticprotected
+
+

Converts source_location instance to location information.

+
Parameters
+ + +
locationSource location instance.
+
+
+
Returns
Location information.
+ +
+
+

Member Data Documentation

+ +

◆ sMessage

+ +
+
+ + + + + +
+ + + + +
std::string ne::Error::sMessage
+
+private
+
+

Initial error message (string version).

+ +
+
+ +

◆ stack

+ +
+
+ + + + + +
+ + + + +
std::vector<SourceLocationInfo> ne::Error::stack
+
+private
+
+

Error stack.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/misc/Error.h
  • +
  • src/engine_lib/private/misc/Error.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1Error.js b/classne_1_1Error.js new file mode 100644 index 000000000..899b1581d --- /dev/null +++ b/classne_1_1Error.js @@ -0,0 +1,15 @@ +var classne_1_1Error = +[ + [ "Error", "classne_1_1Error.html#a3a8c7572c889c7f1562f7f7206b7e1f2", null ], + [ "Error", "classne_1_1Error.html#abc1af9c0ac9343d134ed153c436ae7f2", null ], + [ "Error", "classne_1_1Error.html#aeab59d878b9909b6ec2c984d85e0cf6e", null ], + [ "addCurrentLocationToErrorStack", "classne_1_1Error.html#ab597ff09fa96e109686cc66081a0ca80", null ], + [ "getFullErrorMessage", "classne_1_1Error.html#a5b6c8b66765051c98f6d4d5bd81e941f", null ], + [ "getInitialMessage", "classne_1_1Error.html#a7f2dd01c28953efe65c5926cab05211e", null ], + [ "operator=", "classne_1_1Error.html#a8a54db84023f6eba40e154d8b1e14da5", null ], + [ "operator=", "classne_1_1Error.html#a63a045f839a8f4ca8ff2f27a6091f50e", null ], + [ "showError", "classne_1_1Error.html#ade90dc178bddb9810268ecdcf987b5ec", null ], + [ "sourceLocationToInfo", "classne_1_1Error.html#a95e64d00cb9ccbab81ee925d5f2deb3f", null ], + [ "sMessage", "classne_1_1Error.html#a900512cdaac67553650f709ed7242bfa", null ], + [ "stack", "classne_1_1Error.html#aa431a33d6e2c5f535034eaabba4eb5c1", null ] +]; \ No newline at end of file diff --git a/classne_1_1FieldSerializerManager-members.html b/classne_1_1FieldSerializerManager-members.html new file mode 100644 index 000000000..ca1c492ec --- /dev/null +++ b/classne_1_1FieldSerializerManager-members.html @@ -0,0 +1,118 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::FieldSerializerManager Member List
+
+
+ +

This is the complete list of members for ne::FieldSerializerManager, including all inherited members.

+ + + + + + + + + +
addBinaryFieldSerializer(std::unique_ptr< IBinaryFieldSerializer > pBinaryFieldSerializer)ne::FieldSerializerManagerstatic
addFieldSerializer(std::unique_ptr< IFieldSerializer > pFieldSerializer)ne::FieldSerializerManagerstatic
FieldSerializerManager()=delete (defined in ne::FieldSerializerManager)ne::FieldSerializerManager
getBinaryFieldSerializers()ne::FieldSerializerManagerstatic
getFieldSerializers()ne::FieldSerializerManagerstatic
mtxBinaryFieldSerializersne::FieldSerializerManagerinlineprivatestatic
mtxFieldSerializersne::FieldSerializerManagerinlineprivatestatic
registerEngineFieldSerializers()ne::FieldSerializerManagerstatic
+
+ + + + diff --git a/classne_1_1FieldSerializerManager.html b/classne_1_1FieldSerializerManager.html new file mode 100644 index 000000000..8047f6f8d --- /dev/null +++ b/classne_1_1FieldSerializerManager.html @@ -0,0 +1,337 @@ + + + + + + + +Nameless Engine: ne::FieldSerializerManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::FieldSerializerManager Class Reference
+
+
+ +

#include <FieldSerializerManager.h>

+ + + + + + + + + + + + +

+Static Public Member Functions

static void registerEngineFieldSerializers ()
 
static void addFieldSerializer (std::unique_ptr< IFieldSerializer > pFieldSerializer)
 
static void addBinaryFieldSerializer (std::unique_ptr< IBinaryFieldSerializer > pBinaryFieldSerializer)
 
static std::vector< IFieldSerializer * > getFieldSerializers ()
 
static std::vector< IBinaryFieldSerializer * > getBinaryFieldSerializers ()
 
+ + + + + +

+Static Private Attributes

static std::pair< std::mutex, std::vector< std::unique_ptr< IFieldSerializer > > > mtxFieldSerializers
 
static std::pair< std::mutex, std::vector< std::unique_ptr< IBinaryFieldSerializer > > > mtxBinaryFieldSerializers
 
+

Detailed Description

+

Stores all enabled field serializers.

+

Member Function Documentation

+ +

◆ addBinaryFieldSerializer()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::FieldSerializerManager::addBinaryFieldSerializer (std::unique_ptr< IBinaryFieldSerializerpBinaryFieldSerializer)
+
+static
+
+

Adds a field serializer that will be automatically used in serialization/deserialization to support specific field types. Use getBinaryFieldSerializers to get array of added serializers.

+
Remarks
If the serializer of the specified type was already added previously it will not be added again so it is safe to call this function multiple times with the same serializer.
+
Parameters
+ + +
pBinaryFieldSerializerField serializer to add.
+
+
+ +
+
+ +

◆ addFieldSerializer()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::FieldSerializerManager::addFieldSerializer (std::unique_ptr< IFieldSerializerpFieldSerializer)
+
+static
+
+

Adds a field serializer that will be automatically used in serialization/deserialization to support specific field types. Use getFieldSerializers to get array of added serializers.

+
Remarks
If the serializer of the specified type was already added previously it will not be added again so it is safe to call this function multiple times with the same serializer.
+
Parameters
+ + +
pFieldSerializerField serializer to add.
+
+
+ +
+
+ +

◆ getBinaryFieldSerializers()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< IBinaryFieldSerializer * > ne::FieldSerializerManager::getBinaryFieldSerializers ()
+
+static
+
+

Returns available binary field serializers that will be automatically used in serialization/deserialization.

+
Returns
Array of available field serializers. Do not delete (free) returned pointers.
+ +
+
+ +

◆ getFieldSerializers()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< IFieldSerializer * > ne::FieldSerializerManager::getFieldSerializers ()
+
+static
+
+

Returns available field serializers that will be automatically used in serialization/deserialization.

+
Returns
Array of available field serializers. Do not delete (free) returned pointers.
+ +
+
+ +

◆ registerEngineFieldSerializers()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::FieldSerializerManager::registerEngineFieldSerializers ()
+
+static
+
+

Uses addFieldSerializer to add all field serializers implemented in the engine.

+ +
+
+

Member Data Documentation

+ +

◆ mtxBinaryFieldSerializers

+ +
+
+ + + + + +
+ + + + +
std::pair<std::mutex, std::vector<std::unique_ptr<IBinaryFieldSerializer> > > ne::FieldSerializerManager::mtxBinaryFieldSerializers
+
+inlinestaticprivate
+
+

Serializers used to serialize/deserialize fields into binary files.

+ +
+
+ +

◆ mtxFieldSerializers

+ +
+
+ + + + + +
+ + + + +
std::pair<std::mutex, std::vector<std::unique_ptr<IFieldSerializer> > > ne::FieldSerializerManager::mtxFieldSerializers
+
+inlinestaticprivate
+
+

Serializers used to serialize/deserialize fields.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classne_1_1FieldSerializerManager.js b/classne_1_1FieldSerializerManager.js new file mode 100644 index 000000000..f14a40d84 --- /dev/null +++ b/classne_1_1FieldSerializerManager.js @@ -0,0 +1,10 @@ +var classne_1_1FieldSerializerManager = +[ + [ "addBinaryFieldSerializer", "classne_1_1FieldSerializerManager.html#a17d522d8a1b3c916fcb2116f2b8f725e", null ], + [ "addFieldSerializer", "classne_1_1FieldSerializerManager.html#aaf579632f4c5798826e599f25ecf6ca6", null ], + [ "getBinaryFieldSerializers", "classne_1_1FieldSerializerManager.html#ad379c0a5fffa68d953ff83e45f4e8e72", null ], + [ "getFieldSerializers", "classne_1_1FieldSerializerManager.html#a5a6d061fef5e818e53e74f1f1afaec65", null ], + [ "registerEngineFieldSerializers", "classne_1_1FieldSerializerManager.html#a6e9c2d63ba77b96244e3205d82b56359", null ], + [ "mtxBinaryFieldSerializers", "classne_1_1FieldSerializerManager.html#a4e94a4341496e0dbb2ca5cbff6d118e0", null ], + [ "mtxFieldSerializers", "classne_1_1FieldSerializerManager.html#af270ed06b02afe7a6c719af3fcbf7c38", null ] +]; \ No newline at end of file diff --git a/classne_1_1FileDialog-members.html b/classne_1_1FileDialog-members.html new file mode 100644 index 000000000..ba547606f --- /dev/null +++ b/classne_1_1FileDialog-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::FileDialog Member List
+
+
+ +

This is the complete list of members for ne::FileDialog, including all inherited members.

+ + + + +
openFile(const std::string &sTitle, const std::vector< std::pair< std::string, std::string > > &vFileTypeFilters={{"All Files", {"*"}}}, const std::filesystem::path &directory=std::filesystem::current_path(), bool bAllowSelectingMultipleFiles=false)ne::FileDialogstatic
saveFile(const std::string &sTitle, const std::pair< std::string, std::string > &fileType={"All Files", {"*"}}, const std::filesystem::path &directory=std::filesystem::current_path())ne::FileDialogstatic
selectDirectory(const std::string &sTitle, const std::filesystem::path &directory=std::filesystem::current_path())ne::FileDialogstatic
+
+ + + + diff --git a/classne_1_1FileDialog.html b/classne_1_1FileDialog.html new file mode 100644 index 000000000..89dc10210 --- /dev/null +++ b/classne_1_1FileDialog.html @@ -0,0 +1,302 @@ + + + + + + + +Nameless Engine: ne::FileDialog Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::FileDialog Class Reference
+
+
+ +

#include <FileDialog.h>

+ + + + + + + + +

+Static Public Member Functions

static std::vector< std::filesystem::path > openFile (const std::string &sTitle, const std::vector< std::pair< std::string, std::string > > &vFileTypeFilters={{"All Files", {"*"}}}, const std::filesystem::path &directory=std::filesystem::current_path(), bool bAllowSelectingMultipleFiles=false)
 
static std::optional< std::filesystem::path > saveFile (const std::string &sTitle, const std::pair< std::string, std::string > &fileType={"All Files", {"*"}}, const std::filesystem::path &directory=std::filesystem::current_path())
 
static std::optional< std::filesystem::path > selectDirectory (const std::string &sTitle, const std::filesystem::path &directory=std::filesystem::current_path())
 
+

Detailed Description

+

Various file dialog windows: open file, save file, select directory and etc.

+

Member Function Documentation

+ +

◆ openFile()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::vector< std::filesystem::path > ne::FileDialog::openFile (const std::string & sTitle,
const std::vector< std::pair< std::string, std::string > > & vFileTypeFilters = {{"All Files", {"*"}}},
const std::filesystem::path & directory = std::filesystem::current_path(),
bool bAllowSelectingMultipleFiles = false 
)
+
+static
+
+

Shows "Open File" dialog window to allow the user to select file(s).

+

Example:

const auto vSelected = ne::FileDialog::openFile(
+
"Select audio and image files",
+
{
+
{"Audio Files", "*.mp3 *.wav *.flac *.ogg"},
+
{"Image Files", "*.png *.jpg *.jpeg *.bmp"}
+
},
+
std::filesystem::current_path(),
+
true);
+
static std::vector< std::filesystem::path > openFile(const std::string &sTitle, const std::vector< std::pair< std::string, std::string > > &vFileTypeFilters={{"All Files", {"*"}}}, const std::filesystem::path &directory=std::filesystem::current_path(), bool bAllowSelectingMultipleFiles=false)
Definition: FileDialog.cpp:16
+
Parameters
+ + + + + +
sTitleTitle of the dialog window.
vFileTypeFiltersFilter that determines which types of files can be selected. Each pair contains filter name and space separated types.
directoryStarting directory to show.
bAllowSelectingMultipleFilesWhether to allow selecting multiple files or not.
+
+
+
Returns
Array of selected files (if bAllowSelectingMultipleFiles is 'true'), one selected file (if bAllowSelectingMultipleFiles is 'false') and empty array if the used clicked "Cancel".
+ +
+
+ +

◆ saveFile()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< std::filesystem::path > ne::FileDialog::saveFile (const std::string & sTitle,
const std::pair< std::string, std::string > & fileType = {"All Files", {"*"}},
const std::filesystem::path & directory = std::filesystem::current_path() 
)
+
+static
+
+

Shows "Save File" dialog window to ask the user where to save a file.

+

Example:

// 3 versions that provide equal result:
+
const auto optional = ne::FileDialog::saveFile("Save Configuration", {"Configuration", "*.toml"});
+
const auto optional = ne::FileDialog::saveFile("Save Configuration", {"Configuration", ".toml"});
+
const auto optional = ne::FileDialog::saveFile("Save Configuration", {"Configuration", "toml"});
+
// Possible result on Windows when the user saves a file with the name "123":
+
"D:\Downloads\123.toml".
+
static std::optional< std::filesystem::path > saveFile(const std::string &sTitle, const std::pair< std::string, std::string > &fileType={"All Files", {"*"}}, const std::filesystem::path &directory=std::filesystem::current_path())
Definition: FileDialog.cpp:43
+
Parameters
+ + + + +
sTitleTitle of the dialog window.
fileTypeA pair of "Name of the file type" and "file extension".
directoryStarting directory to show.
+
+
+
Returns
Empty if the user clicked "Cancel", otherwise path to the file to save (with added extension if the file type was specified).
+ +
+
+ +

◆ selectDirectory()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::optional< std::filesystem::path > ne::FileDialog::selectDirectory (const std::string & sTitle,
const std::filesystem::path & directory = std::filesystem::current_path() 
)
+
+static
+
+

Shows "Select Directory" dialog window to ask the user to select a directory.

+
Parameters
+ + + +
sTitleTitle of the dialog window.
directoryStarting directory to show.
+
+
+
Returns
Empty if the user clicked "Cancel", otherwise path to the selected directory.
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/misc/FileDialog.h
  • +
  • src/engine_lib/private/misc/FileDialog.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1FileDialog.js b/classne_1_1FileDialog.js new file mode 100644 index 000000000..7d4bb1503 --- /dev/null +++ b/classne_1_1FileDialog.js @@ -0,0 +1,6 @@ +var classne_1_1FileDialog = +[ + [ "openFile", "classne_1_1FileDialog.html#a79abaf46ef916fb7081d2423043dae62", null ], + [ "saveFile", "classne_1_1FileDialog.html#a56e46fa4383b6710f56cd5f0e6527d41", null ], + [ "selectDirectory", "classne_1_1FileDialog.html#acc6217d584191571dd382886ecfd6c7c", null ] +]; \ No newline at end of file diff --git a/classne_1_1FrameResourceManager-members.html b/classne_1_1FrameResourceManager-members.html new file mode 100644 index 000000000..4335bc5e1 --- /dev/null +++ b/classne_1_1FrameResourceManager-members.html @@ -0,0 +1,126 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::FrameResourceManager Member List
+
+
+ +

This is the complete list of members for ne::FrameResourceManager, including all inherited members.

+ + + + + + + + + + + + + + + + + +
create(Renderer *pRenderer)ne::FrameResourceManagerstatic
createRenderDependentFrameResources(Renderer *pRenderer)ne::FrameResourceManagerprivatestatic
FrameResourceManager()=delete (defined in ne::FrameResourceManager)ne::FrameResourceManager
FrameResourceManager(const FrameResourceManager &)=delete (defined in ne::FrameResourceManager)ne::FrameResourceManager
FrameResourceManager(Renderer *pRenderer)ne::FrameResourceManagerprivate
getAllFrameResources()ne::FrameResourceManager
getCurrentFrameResource()ne::FrameResourceManager
getFrameResourceCount()ne::FrameResourceManagerinlinestatic
iFrameResourceCountne::FrameResourceManagerprivatestatic
mtxCurrentFrameResourcene::FrameResourceManagerprivate
operator=(const FrameResourceManager &)=delete (defined in ne::FrameResourceManager)ne::FrameResourceManager
pRendererne::FrameResourceManagerprivate
Renderer (defined in ne::FrameResourceManager)ne::FrameResourceManagerfriend
switchToNextFrameResource()ne::FrameResourceManagerprivate
vFrameResourcesne::FrameResourceManagerprivate
VulkanRenderer (defined in ne::FrameResourceManager)ne::FrameResourceManagerfriend
+
+ + + + diff --git a/classne_1_1FrameResourceManager.html b/classne_1_1FrameResourceManager.html new file mode 100644 index 000000000..0acc44994 --- /dev/null +++ b/classne_1_1FrameResourceManager.html @@ -0,0 +1,481 @@ + + + + + + + +Nameless Engine: ne::FrameResourceManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <FrameResourceManager.h>

+ + + + +

+Classes

struct  CurrentFrameResource
 
+ + + + + + + + + +

+Public Member Functions

FrameResourceManager (const FrameResourceManager &)=delete
 
+FrameResourceManageroperator= (const FrameResourceManager &)=delete
 
std::pair< std::recursive_mutex, CurrentFrameResource > * getCurrentFrameResource ()
 
std::pair< std::recursive_mutex *, std::vector< FrameResource * > > getAllFrameResources ()
 
+ + + + + +

+Static Public Member Functions

static constexpr unsigned int getFrameResourceCount ()
 
static std::variant< std::unique_ptr< FrameResourceManager >, Errorcreate (Renderer *pRenderer)
 
+ + + + + +

+Private Member Functions

 FrameResourceManager (Renderer *pRenderer)
 
void switchToNextFrameResource ()
 
+ + + +

+Static Private Member Functions

static std::array< std::unique_ptr< FrameResource >, iFrameResourceCountcreateRenderDependentFrameResources (Renderer *pRenderer)
 
+ + + + + + + +

+Private Attributes

RendererpRenderer = nullptr
 
std::pair< std::recursive_mutex, CurrentFrameResourcemtxCurrentFrameResource
 
std::array< std::unique_ptr< FrameResource >, iFrameResourceCountvFrameResources
 
+ + + +

+Static Private Attributes

static constexpr unsigned int iFrameResourceCount = 2
 
+ + + + + +

+Friends

+class Renderer
 
+class VulkanRenderer
 
+

Detailed Description

+

Controls GPU resources (mostly constant buffers) that contain frame-specific data.

+

Used to not wait for the GPU to finish drawing a frame on the CPU side and instead continue drawing another frame (on the CPU side) without touching resources that can be in use by the GPU because it's drawing the previous frame.

+

Constructor & Destructor Documentation

+ +

◆ FrameResourceManager()

+ +
+
+ + + + + +
+ + + + + + + + +
ne::FrameResourceManager::FrameResourceManager (RendererpRenderer)
+
+private
+
+

Creates uninitialized manager.

+
Parameters
+ + +
pRendererRenderer that owns this manager.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + +
std::variant< std::unique_ptr< FrameResourceManager >, Error > ne::FrameResourceManager::create (RendererpRenderer)
+
+static
+
+

Creates a new frame resources manager.

+
Parameters
+ + +
pRendererRenderer that owns this manager.
+
+
+
Returns
Error if something went wrong, otherwise created manager.
+ +
+
+ +

◆ createRenderDependentFrameResources()

+ +
+
+ + + + + +
+ + + + + + + + +
std::array< std::unique_ptr< FrameResource >, FrameResourceManager::getFrameResourceCount()> ne::FrameResourceManager::createRenderDependentFrameResources (RendererpRenderer)
+
+staticprivate
+
+

Creates a render-specific frame resources depending on the renderer used.

+
Parameters
+ + +
pRendererUsed renderer.
+
+
+
Returns
Render-specific frame resources
+ +
+
+ +

◆ getAllFrameResources()

+ +
+
+ + + + + + + +
std::pair< std::recursive_mutex *, std::vector< FrameResource * > > ne::FrameResourceManager::getAllFrameResources ()
+
+

Returns all frame resources.

+
Remarks
Generally used to reference internal resources of all frame resources.
+
+Do not delete (free) returned pointers.
+
Returns
All frame resources (use with mutex).
+ +
+
+ +

◆ getCurrentFrameResource()

+ +
+
+ + + + + + + +
std::pair< std::recursive_mutex, FrameResourceManager::CurrentFrameResource > * ne::FrameResourceManager::getCurrentFrameResource ()
+
+

Returns currently used frame resource. Must be used with mutex.

+
Returns
Current frame resource.
+ +
+
+ +

◆ getFrameResourceCount()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr unsigned int ne::FrameResourceManager::getFrameResourceCount ()
+
+inlinestaticconstexpr
+
+

Returns the number of used frame resources.

+
Returns
Number of frame resources being used.
+ +
+
+ +

◆ switchToNextFrameResource()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::FrameResourceManager::switchToNextFrameResource ()
+
+private
+
+

Uses mutex from getCurrentFrameResource to switch to the next available frame resource.

+
Remarks
After this function is finished calls to getCurrentFrameResource will return next frame resource.
+
+Next frame resource (that we switched to) can still be used by the GPU, it's up to the caller to check whether the frame resource is used by the GPU or not.
+ +
+
+

Member Data Documentation

+ +

◆ iFrameResourceCount

+ +
+
+ + + + + +
+ + + + +
constexpr unsigned int ne::FrameResourceManager::iFrameResourceCount = 2
+
+staticconstexprprivate
+
+

Number of frames "in-flight" that the CPU can submit to the GPU without waiting.

+ +
+
+ +

◆ mtxCurrentFrameResource

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, CurrentFrameResource> ne::FrameResourceManager::mtxCurrentFrameResource
+
+private
+
+

Points to the currently used item from vFrameResources.

+ +
+
+ +

◆ pRenderer

+ +
+
+ + + + + +
+ + + + +
Renderer* ne::FrameResourceManager::pRenderer = nullptr
+
+private
+
+

Renderer that owns this manager.

+ +
+
+ +

◆ vFrameResources

+ +
+
+ + + + + +
+ + + + +
std::array<std::unique_ptr<FrameResource>, iFrameResourceCount> ne::FrameResourceManager::vFrameResources
+
+private
+
+

Array of frame-specific resources, all contain the same data.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/general/resource/frame/FrameResourceManager.h
  • +
  • src/engine_lib/private/render/general/resource/frame/FrameResourceManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1FrameResourceManager.js b/classne_1_1FrameResourceManager.js new file mode 100644 index 000000000..67beb5544 --- /dev/null +++ b/classne_1_1FrameResourceManager.js @@ -0,0 +1,15 @@ +var classne_1_1FrameResourceManager = +[ + [ "CurrentFrameResource", "structne_1_1FrameResourceManager_1_1CurrentFrameResource.html", "structne_1_1FrameResourceManager_1_1CurrentFrameResource" ], + [ "FrameResourceManager", "classne_1_1FrameResourceManager.html#a7fc075709f514e458505092139a5e507", null ], + [ "create", "classne_1_1FrameResourceManager.html#ad42756d12fceadc03738867da9cfcdfe", null ], + [ "createRenderDependentFrameResources", "classne_1_1FrameResourceManager.html#ad87185a708fba8c76b32202a019b6582", null ], + [ "getAllFrameResources", "classne_1_1FrameResourceManager.html#aa953eaa3de8f8f69d646e26dde1a124c", null ], + [ "getCurrentFrameResource", "classne_1_1FrameResourceManager.html#a911bf789ded20a8a704c504eb337357d", null ], + [ "getFrameResourceCount", "classne_1_1FrameResourceManager.html#a90b23924d591a9a2fc33241c25d7892c", null ], + [ "switchToNextFrameResource", "classne_1_1FrameResourceManager.html#a36f7c0aac591a488fe24dd0048320f7f", null ], + [ "iFrameResourceCount", "classne_1_1FrameResourceManager.html#ae257e43dd6fb325b380780a3b6238708", null ], + [ "mtxCurrentFrameResource", "classne_1_1FrameResourceManager.html#a61c89d9208f648479c167b9c6ab2d4e6", null ], + [ "pRenderer", "classne_1_1FrameResourceManager.html#a93a51c27032c00357bf3fe84dbd75bfd", null ], + [ "vFrameResources", "classne_1_1FrameResourceManager.html#a6728b57c6dada16a75be1d1ab2024b46", null ] +]; \ No newline at end of file diff --git a/classne_1_1GLFW-members.html b/classne_1_1GLFW-members.html new file mode 100644 index 000000000..4540c55cf --- /dev/null +++ b/classne_1_1GLFW-members.html @@ -0,0 +1,115 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::GLFW Member List
+
+
+ +

This is the complete list of members for ne::GLFW, including all inherited members.

+ + + + + + +
get()ne::GLFWinlinestatic
GLFW(const GLFW &)=delete (defined in ne::GLFW)ne::GLFW
GLFW()ne::GLFWinlineprivate
operator=(const GLFW &)=delete (defined in ne::GLFW)ne::GLFW
~GLFW()ne::GLFWinline
+
+ + + + diff --git a/classne_1_1GLFW.html b/classne_1_1GLFW.html new file mode 100644 index 000000000..5e15f53b0 --- /dev/null +++ b/classne_1_1GLFW.html @@ -0,0 +1,223 @@ + + + + + + + +Nameless Engine: ne::GLFW Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <GLFW.hpp>

+ + + + + + + + +

+Public Member Functions

GLFW (const GLFW &)=delete
 
+GLFWoperator= (const GLFW &)=delete
 
 ~GLFW ()
 
+ + + +

+Static Public Member Functions

static GLFWget ()
 
+ + + +

+Private Member Functions

 GLFW ()
 
+

Detailed Description

+

Singleton helper class to globally initialize/terminate GLFW.

+

Constructor & Destructor Documentation

+ +

◆ ~GLFW()

+ +
+
+ + + + + +
+ + + + + + + +
ne::GLFW::~GLFW ()
+
+inline
+
+

Terminates GLFW.

+ +
+
+ +

◆ GLFW()

+ +
+
+ + + + + +
+ + + + + + + +
ne::GLFW::GLFW ()
+
+inlineprivate
+
+

Initializes GLFW.

+ +
+
+

Member Function Documentation

+ +

◆ get()

+ +
+
+ + + + + +
+ + + + + + + +
static GLFW & ne::GLFW::get ()
+
+inlinestatic
+
+

Creates a static GLFW instance and return instance if not created before.

+
Returns
Singleton.
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • src/engine_lib/private/window/GLFW.hpp
  • +
+
+
+ + + + diff --git a/classne_1_1GLFW.js b/classne_1_1GLFW.js new file mode 100644 index 000000000..c33da507b --- /dev/null +++ b/classne_1_1GLFW.js @@ -0,0 +1,6 @@ +var classne_1_1GLFW = +[ + [ "~GLFW", "classne_1_1GLFW.html#a714f4dd30268e0c06e36001bec8bec75", null ], + [ "GLFW", "classne_1_1GLFW.html#a976ddbb5eb5029dfc3575c0acd6d8108", null ], + [ "get", "classne_1_1GLFW.html#af53e48a61258744799475d8ce33c13b5", null ] +]; \ No newline at end of file diff --git a/classne_1_1GameInstance-members.html b/classne_1_1GameInstance-members.html new file mode 100644 index 000000000..461b180a7 --- /dev/null +++ b/classne_1_1GameInstance-members.html @@ -0,0 +1,155 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::GameInstance Member List
+
+
+ +

This is the complete list of members for ne::GameInstance, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addDeferredTask(const std::function< void()> &task) constne::GameInstance
addTaskToThreadPool(const std::function< void()> &task) constne::GameInstance
bAllowCreatingTimersne::GameInstanceprivate
createTimer(const std::string &sTimerName)ne::GameInstanceprotected
createWorld(const std::function< void(const std::optional< Error > &)> &onCreated, size_t iWorldSize=Globals::getDefaultWorldSize())ne::GameInstance
executeShaderManagerSelfValidation() constne::GameInstance
GameInstance()=delete (defined in ne::GameInstance)ne::GameInstance
GameInstance(Window *pGameWindow, GameManager *pGameManager, InputManager *pInputManager)ne::GameInstance
GameInstance(const GameInstance &)=delete (defined in ne::GameInstance)ne::GameInstance
GameManager (defined in ne::GameInstance)ne::GameInstancefriend
getActionEventBindings()ne::GameInstanceprotected
getAxisEventBindings()ne::GameInstanceprotected
getCalledEveryFrameNodeCount()ne::GameInstance
getCameraManager() constne::GameInstance
getGarbageCollectorRunIntervalInSec()ne::GameInstance
getInputManager() constne::GameInstance
getTotalApplicationTimeInSec()ne::GameInstancestatic
getTotalSpawnedNodeCount()ne::GameInstance
getWindow() constne::GameInstance
getWorldRootNode() constne::GameInstance
getWorldSize() constne::GameInstance
getWorldTimeInSeconds() constne::GameInstance
loadNodeTreeAsWorld(const std::function< void(const std::optional< Error > &)> &onLoaded, const std::filesystem::path &pathToNodeTree, size_t iWorldSize=Globals::getDefaultWorldSize())ne::GameInstance
mtxBindedActionEventsne::GameInstanceprivate
mtxBindedAxisEventsne::GameInstanceprivate
mtxCreatedTimersne::GameInstanceprivate
onBeforeNewFrame(float timeSincePrevCallInSec)ne::GameInstanceinlineprotectedvirtual
onFramebufferSizeChanged(int iWidth, int iHeight)ne::GameInstanceinlineprotectedvirtual
onGameStarted()ne::GameInstanceinlineprotectedvirtual
onInputActionEvent(unsigned int iActionId, KeyboardModifiers modifiers, bool bIsPressedDown)ne::GameInstanceprivate
onInputAxisEvent(unsigned int iAxisEventId, KeyboardModifiers modifiers, float input)ne::GameInstanceprivate
onKeyboardInput(KeyboardKey key, KeyboardModifiers modifiers, bool bIsPressedDown)ne::GameInstanceinlineprotectedvirtual
onMouseInput(MouseButton button, KeyboardModifiers modifiers, bool bIsPressedDown)ne::GameInstanceinlineprotectedvirtual
onMouseMove(double xOffset, double yOffset)ne::GameInstanceinlineprotectedvirtual
onMouseScrollMove(int iOffset)ne::GameInstanceinlineprotectedvirtual
onWindowClose()ne::GameInstanceinlineprotectedvirtual
onWindowFocusChanged(bool bIsFocused)ne::GameInstanceinlineprotectedvirtual
operator=(const GameInstance &)=delete (defined in ne::GameInstance)ne::GameInstance
pGameManagerne::GameInstanceprivate
pGameWindowne::GameInstanceprivate
pInputManagerne::GameInstanceprivate
queueGarbageCollection(bool bForce, const std::optional< std::function< void()> > &onFinished={})ne::GameInstance
setGarbageCollectorRunInterval(long long iGcRunIntervalInSec)ne::GameInstance
stopAndDisableCreatedTimers()ne::GameInstanceprotected
~GameInstance()=default (defined in ne::GameInstance)ne::GameInstancevirtual
+
+ + + + diff --git a/classne_1_1GameInstance.html b/classne_1_1GameInstance.html new file mode 100644 index 000000000..0971b0ff2 --- /dev/null +++ b/classne_1_1GameInstance.html @@ -0,0 +1,1506 @@ + + + + + + + +Nameless Engine: ne::GameInstance Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <GameInstance.h>

+
+Inheritance diagram for ne::GameInstance:
+
+
+ + +ne::EditorGameInstance + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 GameInstance (Window *pGameWindow, GameManager *pGameManager, InputManager *pInputManager)
 
GameInstance (const GameInstance &)=delete
 
+GameInstanceoperator= (const GameInstance &)=delete
 
void addDeferredTask (const std::function< void()> &task) const
 
void addTaskToThreadPool (const std::function< void()> &task) const
 
void createWorld (const std::function< void(const std::optional< Error > &)> &onCreated, size_t iWorldSize=Globals::getDefaultWorldSize())
 
void loadNodeTreeAsWorld (const std::function< void(const std::optional< Error > &)> &onLoaded, const std::filesystem::path &pathToNodeTree, size_t iWorldSize=Globals::getDefaultWorldSize())
 
void queueGarbageCollection (bool bForce, const std::optional< std::function< void()> > &onFinished={})
 
void setGarbageCollectorRunInterval (long long iGcRunIntervalInSec)
 
void executeShaderManagerSelfValidation () const
 
sgc::GcPtr< NodegetWorldRootNode () const
 
float getWorldTimeInSeconds () const
 
size_t getWorldSize () const
 
size_t getTotalSpawnedNodeCount ()
 
size_t getCalledEveryFrameNodeCount ()
 
WindowgetWindow () const
 
CameraManagergetCameraManager () const
 
InputManagergetInputManager () const
 
long long getGarbageCollectorRunIntervalInSec ()
 
+ + + +

+Static Public Member Functions

static float getTotalApplicationTimeInSec ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

TimercreateTimer (const std::string &sTimerName)
 
void stopAndDisableCreatedTimers ()
 
virtual void onGameStarted ()
 
virtual void onBeforeNewFrame (float timeSincePrevCallInSec)
 
virtual void onKeyboardInput (KeyboardKey key, KeyboardModifiers modifiers, bool bIsPressedDown)
 
virtual void onMouseInput (MouseButton button, KeyboardModifiers modifiers, bool bIsPressedDown)
 
virtual void onMouseMove (double xOffset, double yOffset)
 
virtual void onMouseScrollMove (int iOffset)
 
virtual void onWindowFocusChanged (bool bIsFocused)
 
virtual void onFramebufferSizeChanged (int iWidth, int iHeight)
 
virtual void onWindowClose ()
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, bool)> > > * getActionEventBindings ()
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, float)> > > * getAxisEventBindings ()
 
+ + + + + +

+Private Member Functions

void onInputActionEvent (unsigned int iActionId, KeyboardModifiers modifiers, bool bIsPressedDown)
 
void onInputAxisEvent (unsigned int iAxisEventId, KeyboardModifiers modifiers, float input)
 
+ + + + + + + + + + + + + + + +

+Private Attributes

std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, bool)> > > mtxBindedActionEvents
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, float)> > > mtxBindedAxisEvents
 
std::pair< std::recursive_mutex, std::vector< std::unique_ptr< Timer > > > mtxCreatedTimers
 
bool bAllowCreatingTimers = true
 
WindowpGameWindow = nullptr
 
GameManagerpGameManager = nullptr
 
InputManagerpInputManager = nullptr
 
+ + + +

+Friends

+class GameManager
 
+

Detailed Description

+

Main game class, exists while the game window is not closed (i.e. while the game is not closed).

+

Reacts to user inputs, window events and etc. Owned by Game object.

+

Constructor & Destructor Documentation

+ +

◆ GameInstance()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ne::GameInstance::GameInstance (WindowpGameWindow,
GameManagerpGameManager,
InputManagerpInputManager 
)
+
+

Constructor.

+
Remarks
There is no need to save window/input manager pointers in derived classes as the base class already saves these pointers and provides getWindow and getInputManager functions.
+
Parameters
+ + + + +
pGameWindowWindow that owns this game instance.
pGameManagerGameManager that owns this game instance.
pInputManagerInput manager of the owner Game object.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ addDeferredTask()

+ +
+
+ + + + + + + + +
void ne::GameInstance::addDeferredTask (const std::function< void()> & task) const
+
+

Adds a function to be executed on the main thread next time onBeforeNewFrame is called.

+
Warning
Don't capture gc pointers in std::function, this is not supported and will cause memory leaks/crashes!
+
+If you are using member functions/fields inside of the task you need to make sure that the owner object of these member functions/fields will not be deleted until this task is finished. If you use GameInstance or Node member functions/fields inside of the task and submitting a deferred tasks from the main thread then ignore this warning, they are safe to use in deferred tasks and will not be deleted until the task is finished. If you are submitting a deferred task that operates on a GameInstance/Node from a non main thread then you need to do a few additional checks inside of your deferred task, for example:
// We are on a non-main thread inside of a node:
+
addDeferredTask([this, iNodeId](){ // capturing `this` to use `Node` (self) functions, also
+
capturing self ID
+
// We are inside of a deferred task (on the main thread) and we don't know if the node (`this`)
+
// was garbage collected or not because we submitted our task from a non-main thread.
+
// REMEMBER: we can't capture `gc` pointers in `std::function`, this is not supported
+
// and will cause memory leaks/crashes!
+
+
const auto pGameManager = GameManager::get(); // using engine's private class `GameManager`
+
+
// `pGameManager` is guaranteed to be valid inside of a deferred task.
+
// Otherwise, if running this code outside of a deferred task you need to do 2 checks:
+
// if (pGameManager == nullptr) return;
+
// if (pGameManager->isBeingDestroyed()) return;
+
+
if (!pGameManager->isNodeSpawned(iNodeId)){
+
// Node was despawned and it may be dangerous to run the callback.
+
return;
+
}
+
+
// Can safely interact with `this` (self) - we are on the main thread.
+
});
+
void addDeferredTask(const std::function< void()> &task) const
Definition: GameInstance.cpp:100
+
GameManager * pGameManager
Definition: GameInstance.h:525
+
static GameManager * get()
Definition: GameManager.cpp:299
+
bool isNodeSpawned(size_t iNodeId)
Definition: GameManager.cpp:598
+
+
Remarks
In the task you don't need to check if the game is being destroyed, the engine makes sure all tasks are finished before the game is destroyed.
+
Parameters
+ + +
taskFunction to execute.
+
+
+ +
+
+ +

◆ addTaskToThreadPool()

+ +
+
+ + + + + + + + +
void ne::GameInstance::addTaskToThreadPool (const std::function< void()> & task) const
+
+

Adds a function to be executed on the thread pool.

+
Warning
Don't capture gc pointers in std::function, this is not supported and will cause memory leaks/crashes!
+
+If you are using a member functions/fields inside of the task you need to make sure that the owner object of these member functions/fields will not be deleted until this task is finished.
+
Remarks
In the task you don't need to check if the game is being destroyed, the engine makes sure all tasks are finished before the game is destroyed.
+
Parameters
+ + +
taskFunction to execute.
+
+
+ +
+
+ +

◆ createTimer()

+ +
+
+ + + + + +
+ + + + + + + + +
Timer * ne::GameInstance::createTimer (const std::string & sTimerName)
+
+protected
+
+

Creates a new timer and saves it inside of this GameInstance.

+
Warning
Do not free (delete) returned pointer.
+
+Do not use returned pointer outside of this object as the timer is only guaranteed to live while the GameInstance (that created the timer) is living.
+
Remarks
This function will not work and will log an error if you would try to create a timer inside of the onWindowClose function.
+
+This function exists to add some protection code to not shoot yourself in the foot, such as: GameInstance will automatically stop and disable created timers before onWindowClose is called by using Timer::stop(true) so that you don't have to remember to stop created timers. Moreover, if you are using a callback function for the timer's timeout event it's guaranteed that this callback function will only be called while the object is valid.
+
+There is no removeTimer function but it may appear in the future (although there's really no point in removing a timer so don't care about it).
+
Parameters
+ + +
sTimerNameName of this timer (used for logging). Don't add "timer" word to your timer's name as it will be appended in the logs.
+
+
+
Returns
nullptr if something went wrong, otherwise a non-owning pointer to the created timer that is guaranteed to be valid while this object is alive.
+ +
+
+ +

◆ createWorld()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ne::GameInstance::createWorld (const std::function< void(const std::optional< Error > &)> & onCreated,
size_t iWorldSize = Globals::getDefaultWorldSize() 
)
+
+

Adds a deferred task (see addDeferredTask) to create a new world that contains only one node - root node.

+
Warning
If you are holding any gc pointers to nodes in your game instance, make sure you clear them (set to nullptr) before calling this function.
+
Remarks
Replaces the old world (if existed).
+
+Engine will execute all deferred tasks before changing the world (before destroying all nodes), so even if deferred tasks queue looks like this: ... – create/load world task – call node's member function task – ..., on create/load world task the engine will finish all other tasks and only when deferred tasks queue is empty start to create/load world so you don't need to care about the order of deferred tasks.
+
Parameters
+ + + +
onCreatedCallback function that will be called on the main thread after the world is created. Contains optional error (if world creation failed) as the only argument. Use GameInstance member functions as callback functions for created worlds, because all nodes and other game objects will be destroyed while the world is changing.
iWorldSizeSize of the new world in game units. Must be power of 2 (128, 256, 512, 1024, 2048, etc.). World size needs to be specified for internal purposes such as Directional Light shadow map size. You don't need to care why we need this information, you only need to know that if you leave world bounds lighting or physics may be incorrect (the editor or engine will warn you if something is leaving world bounds, pay attention to the logs).
+
+
+ +
+
+ +

◆ executeShaderManagerSelfValidation()

+ +
+
+ + + + + + + +
void ne::GameInstance::executeShaderManagerSelfValidation () const
+
+

Analyzes the current state to see if any shader-related errors have place (like unused shaders in memory or etc.). Fixes errors and reports them in log.

+
Remarks
Generally should be called right before you let the player play the game (after all required nodes are spawned).
+ +
+
+ +

◆ getActionEventBindings()

+ +
+
+ + + + + +
+ + + + + + + +
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, bool)> > > * ne::GameInstance::getActionEventBindings ()
+
+protected
+
+

Returns map of action events that this GameInstance is binded to (must be used with mutex). Binded callbacks will be automatically called when an action event is triggered.

+
Remarks
Note that nodes can also have their input event bindings and you may prefer to bind to input in specific nodes instead of binding to them in GameInstance.
+
+Only events in GameInstance's InputManager (GameInstance::getInputManager) will be considered to trigger events in the node.
+
+Called after onKeyboardInput.
+

Example:

const unsigned int iForwardActionId = 0;
+
const auto pMtxActionEvents = getActionEventBindings();
+
+
std::scoped_lock guard(pMtxActionEvents->first);
+
pMtxActionEvents->second[iForwardActionId] = [&](KeyboardModifiers modifiers, bool
+
bIsPressedDown) {
+
moveForward(modifiers, bIsPressedDown);
+
};
+
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, bool)> > > * getActionEventBindings()
Definition: GameInstance.cpp:136
+
Definition: KeyboardKey.hpp:10
+
Returns
Binded action events.
+ +
+
+ +

◆ getAxisEventBindings()

+ +
+
+ + + + + +
+ + + + + + + +
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, float)> > > * ne::GameInstance::getAxisEventBindings ()
+
+protected
+
+

Returns map of axis events that this GameInstance is binded to (must be used with mutex). Binded callbacks will be automatically called when an axis event is triggered.

+
Remarks
Note that nodes can also have their input event bindings and you may prefer to bind to input in specific nodes instead of binding to them in GameInstance.
+
+Only events in GameInstance's InputManager (GameInstance::getInputManager) will be considered to trigger events in the node.
+
+Called after onKeyboardInput.
+

Example:

const auto iForwardAxisEventId = 0;
+
const auto pMtxAxisEvents = getAxisEventBindings();
+
+
std::scoped_lock guard(pMtxAxisEvents->first);
+
pMtxAxisEvents->second[iForwardAxisEventId] = [&](KeyboardModifiers modifiers, float input) {
+
moveForward(modifiers, input);
+
};
+
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, float)> > > * getAxisEventBindings()
Definition: GameInstance.cpp:143
+
Remarks
Input parameter is a value in range [-1.0f; 1.0f] that describes input.
+
Returns
Binded action events.
+ +
+
+ +

◆ getCalledEveryFrameNodeCount()

+ +
+
+ + + + + + + +
size_t ne::GameInstance::getCalledEveryFrameNodeCount ()
+
+

Returns the current amount of spawned nodes that are marked as "should be called every frame".

+
Returns
Amount of spawned nodes that should be called every frame.
+ +
+
+ +

◆ getCameraManager()

+ +
+
+ + + + + + + +
CameraManager * ne::GameInstance::getCameraManager () const
+
+

Returns a reference to the camera manager this game is using.

+
Returns
A pointer to the camera manager, should not be deleted.
+ +
+
+ +

◆ getGarbageCollectorRunIntervalInSec()

+ +
+
+ + + + + + + +
long long ne::GameInstance::getGarbageCollectorRunIntervalInSec ()
+
+

Returns the current interval after which we need to run garbage collector again.

+
Returns
Interval in seconds.
+ +
+
+ +

◆ getInputManager()

+ +
+
+ + + + + + + +
InputManager * ne::GameInstance::getInputManager () const
+
+

Returns a reference to the input manager this game instance is using. Input manager allows binding IDs with multiple input keys that you can receive in onInputActionEvent.

+
Returns
A pointer to the input manager, should not be deleted.
+ +
+
+ +

◆ getTotalApplicationTimeInSec()

+ +
+
+ + + + + +
+ + + + + + + +
float ne::GameInstance::getTotalApplicationTimeInSec ()
+
+static
+
+

Returns the time in seconds that has passed since the very first window was created.

+
Returns
Time in seconds.
+ +
+
+ +

◆ getTotalSpawnedNodeCount()

+ +
+
+ + + + + + + +
size_t ne::GameInstance::getTotalSpawnedNodeCount ()
+
+

Returns total amount of currently spawned nodes.

+
Returns
Total nodes spawned right now.
+ +
+
+ +

◆ getWindow()

+ +
+
+ + + + + + + +
Window * ne::GameInstance::getWindow () const
+
+

Returns a reference to the window this game instance is using.

+
Returns
A pointer to the window, should not be deleted.
+ +
+
+ +

◆ getWorldRootNode()

+ +
+
+ + + + + + + +
sgc::GcPtr< Node > ne::GameInstance::getWorldRootNode () const
+
+

Returns a pointer to world's root node.

+
Returns
nullptr if world is not created or was destroyed (see createWorld), otherwise world's root node.
+ +
+
+ +

◆ getWorldSize()

+ +
+
+ + + + + + + +
size_t ne::GameInstance::getWorldSize () const
+
+

Returns world size in game units.

+
Returns
World size.
+ +
+
+ +

◆ getWorldTimeInSeconds()

+ +
+
+ + + + + + + +
float ne::GameInstance::getWorldTimeInSeconds () const
+
+

Returns time since world creation (in seconds).

+
Returns
Zero if world is not created (see createWorld), otherwise time since world creation (in seconds).
+ +
+
+ +

◆ loadNodeTreeAsWorld()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::GameInstance::loadNodeTreeAsWorld (const std::function< void(const std::optional< Error > &)> & onLoaded,
const std::filesystem::path & pathToNodeTree,
size_t iWorldSize = Globals::getDefaultWorldSize() 
)
+
+

Adds a deferred task (see addDeferredTask) to load and deserialize a node tree to be used as the new world.

+

Node tree's root node will be used as world's root node.

+
Warning
If you are holding any gc pointers to nodes in game instance, make sure you set nullptr to them before calling this function.
+
Remarks
Replaces the old world (if existed).
+
+Engine will execute all deferred tasks before changing the world (before destroying all nodes), so even if deferred tasks queue looks like this: ... – create/load world task – call node's member function task – ..., on create/load world task the engine will finish all other tasks and only when deferred tasks queue is empty start to create/load world so you don't need to care about the order of deferred tasks.
+
Parameters
+ + + + +
onLoadedCallback function that will be called on the main thread after the world is loaded. Contains optional error (if world loading failed) as the only argument. Use GameInstance member functions as callback functions for loaded worlds, because all nodes and other game objects will be destroyed while the world is changing.
pathToNodeTreePath to the file that contains a node tree to load, the ".toml" extension will be automatically added if not specified.
iWorldSizeSize of the world in game units. Must be power of 2 (128, 256, 512, 1024, 2048, etc.). World size needs to be specified for internal purposes such as Directional Light shadow map size. You don't need to care why we need this information, you only need to know that if you leave world bounds lighting or physics may be incorrect (the editor or engine will warn you if something is leaving world bounds, pay attention to the logs).
+
+
+ +
+
+ +

◆ onBeforeNewFrame()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void ne::GameInstance::onBeforeNewFrame (float timeSincePrevCallInSec)
+
+inlineprotectedvirtual
+
+

Called before a new frame is rendered.

+
Remarks
Called before nodes that should be called every frame.
+
Parameters
+ + +
timeSincePrevCallInSecTime in seconds that has passed since the last call to this function.
+
+
+ +

Reimplemented in ne::EditorGameInstance.

+ +
+
+ +

◆ onFramebufferSizeChanged()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void ne::GameInstance::onFramebufferSizeChanged (int iWidth,
int iHeight 
)
+
+inlineprotectedvirtual
+
+

Called when the framebuffer size was changed.

+
Parameters
+ + + +
iWidthNew width of the framebuffer (in pixels).
iHeightNew height of the framebuffer (in pixels).
+
+
+ +
+
+ +

◆ onGameStarted()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void ne::GameInstance::onGameStarted ()
+
+inlineprotectedvirtual
+
+

Called after GameInstance's constructor is finished and created GameInstance object was saved in GameManager (that owns GameInstance).

+

At this point you can create and interact with the game world and etc.

+ +

Reimplemented in ne::EditorGameInstance.

+ +
+
+ +

◆ onInputActionEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::GameInstance::onInputActionEvent (unsigned int iActionId,
KeyboardModifiers modifiers,
bool bIsPressedDown 
)
+
+private
+
+

Called when a window that owns this game instance receives user input and the input key exists as an action event in the InputManager. Called after onKeyboardInput.

+
Parameters
+ + + + +
iActionIdUnique ID of the input action event (from input manager).
modifiersKeyboard modifier keys.
bIsPressedDownWhether the key down event occurred or key up.
+
+
+ +
+
+ +

◆ onInputAxisEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::GameInstance::onInputAxisEvent (unsigned int iAxisEventId,
KeyboardModifiers modifiers,
float input 
)
+
+private
+
+

Called when a window that owns this game instance receives user input and the input key exists as an axis event in the InputManager. Called after onKeyboardInput and after onInputActionEvent.

+
Parameters
+ + + + +
iAxisEventIdUnique ID of the input axis event (from input manager).
modifiersKeyboard modifier keys.
inputA value in range [-1.0f; 1.0f] that describes input.
+
+
+ +
+
+ +

◆ onKeyboardInput()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void ne::GameInstance::onKeyboardInput (KeyboardKey key,
KeyboardModifiers modifiers,
bool bIsPressedDown 
)
+
+inlineprotectedvirtual
+
+

Called when the window receives keyboard input. Called before onInputActionEvent. Prefer to use onInputActionEvent instead of this function.

+
Parameters
+ + + + +
keyKeyboard key.
modifiersKeyboard modifier keys.
bIsPressedDownWhether the key down event occurred or key up.
+
+
+ +
+
+ +

◆ onMouseInput()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void ne::GameInstance::onMouseInput (MouseButton button,
KeyboardModifiers modifiers,
bool bIsPressedDown 
)
+
+inlineprotectedvirtual
+
+

Called when the window receives mouse input. Called before onInputActionEvent. Prefer to use onInputActionEvent instead of this function.

+
Parameters
+ + + + +
buttonMouse button.
modifiersKeyboard modifier keys.
bIsPressedDownWhether the button down event occurred or button up.
+
+
+ +
+
+ +

◆ onMouseMove()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void ne::GameInstance::onMouseMove (double xOffset,
double yOffset 
)
+
+inlineprotectedvirtual
+
+

Called when the window received mouse movement.

+
Parameters
+ + + +
xOffsetMouse X movement delta in pixels (plus if moved to the right, minus if moved to the left).
yOffsetMouse Y movement delta in pixels (plus if moved up, minus if moved down).
+
+
+ +
+
+ +

◆ onMouseScrollMove()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void ne::GameInstance::onMouseScrollMove (int iOffset)
+
+inlineprotectedvirtual
+
+

Called when the window receives mouse scroll movement.

+
Parameters
+ + +
iOffsetMovement offset.
+
+
+ +
+
+ +

◆ onWindowClose()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void ne::GameInstance::onWindowClose ()
+
+inlineprotectedvirtual
+
+

Called when the window that owns this game instance was requested to close (no new frames will be rendered).

+

Prefer to have your destructor logic here, because after this function is finished the world will be destroyed and will be inaccessible (nullptr).

+ +
+
+ +

◆ onWindowFocusChanged()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void ne::GameInstance::onWindowFocusChanged (bool bIsFocused)
+
+inlineprotectedvirtual
+
+

Called when the window focus was changed.

+
Parameters
+ + +
bIsFocusedWhether the window has gained or lost the focus.
+
+
+ +
+
+ +

◆ queueGarbageCollection()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ne::GameInstance::queueGarbageCollection (bool bForce,
const std::optional< std::function< void()> > & onFinished = {} 
)
+
+

Queues a request to run a garbage collection as a deferred task on the main thread using addDeferredTask.

+
Remarks
Typically you don't need to call this function as garbage collection is executed regularly (see setGarbageCollectorRunInterval) but you can still call it anyway.
+
Parameters
+ + + +
bForceForce run garbage collection even if the last garbage collection was run not so long ago.
onFinishedOptional callback that will be triggered on the main thread when garbage collection is finished (queued as addDeferredTask).
+
+
+ +
+
+ +

◆ setGarbageCollectorRunInterval()

+ +
+
+ + + + + + + + +
void ne::GameInstance::setGarbageCollectorRunInterval (long long iGcRunIntervalInSec)
+
+

Modifies the interval after which we need to run garbage collector again. The current value can be retrieved using getGarbageCollectorRunIntervalInSec.

+
Remarks
Interval should be in range [30; 300] seconds (otherwise it will be clamped).
+
+Note that garbage collection will also be executed additionally in some special cases, such as when World is being destructed.
+
Parameters
+ + +
iGcRunIntervalInSecInterval in seconds.
+
+
+ +
+
+ +

◆ stopAndDisableCreatedTimers()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::GameInstance::stopAndDisableCreatedTimers ()
+
+protected
+
+

Called by owner object to stop and disable all created timers, additionally does not allows creating any more timers.

+ +
+
+

Member Data Documentation

+ +

◆ bAllowCreatingTimers

+ +
+
+ + + + + +
+ + + + +
bool ne::GameInstance::bAllowCreatingTimers = true
+
+private
+
+

Whether createTimer works or not.

+ +
+
+ +

◆ mtxBindedActionEvents

+ +
+
+ + + + + +
+ + + + +
std::pair< std::recursive_mutex, std::unordered_map<unsigned int, std::function<void(KeyboardModifiers, bool)> > > ne::GameInstance::mtxBindedActionEvents
+
+private
+
+

Map of action events that this GameInstance is binded to. Must be used with mutex.

+ +
+
+ +

◆ mtxBindedAxisEvents

+ +
+
+ + + + + +
+ + + + +
std::pair< std::recursive_mutex, std::unordered_map<unsigned int, std::function<void(KeyboardModifiers, float)> > > ne::GameInstance::mtxBindedAxisEvents
+
+private
+
+

Map of axis events that this GameInstance is binded to. Must be used with mutex.

+ +
+
+ +

◆ mtxCreatedTimers

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, std::vector<std::unique_ptr<Timer> > > ne::GameInstance::mtxCreatedTimers
+
+private
+
+

Timers creates via createTimer.

+
Warning
Don't remove/erase timers from this array because in callback validator's deferred task we will use the timer to check its state so we need to make sure that stopped timer will not be deleted while the object exists.
+ +
+
+ +

◆ pGameManager

+ +
+
+ + + + + +
+ + + + +
GameManager* ne::GameInstance::pGameManager = nullptr
+
+private
+
+

Do not delete. Owner of this object.

+ +
+
+ +

◆ pGameWindow

+ +
+
+ + + + + +
+ + + + +
Window* ne::GameInstance::pGameWindow = nullptr
+
+private
+
+

Do not delete. Owner of pGameManager object.

+ +
+
+ +

◆ pInputManager

+ +
+
+ + + + + +
+ + + + +
InputManager* ne::GameInstance::pInputManager = nullptr
+
+private
+
+

Do not delete. Input manager of the pGameManager object.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/game/GameInstance.h
  • +
  • src/engine_lib/private/game/GameInstance.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1GameInstance.js b/classne_1_1GameInstance.js new file mode 100644 index 000000000..c74232544 --- /dev/null +++ b/classne_1_1GameInstance.js @@ -0,0 +1,43 @@ +var classne_1_1GameInstance = +[ + [ "GameInstance", "classne_1_1GameInstance.html#a7f00c7df05113dc71320acdf378c24d8", null ], + [ "addDeferredTask", "classne_1_1GameInstance.html#a9f3763b4fa0eedb9735d02a3face9f5a", null ], + [ "addTaskToThreadPool", "classne_1_1GameInstance.html#afeabdd90b1b0bd2d15b04b01d009a2b4", null ], + [ "createTimer", "classne_1_1GameInstance.html#abc2070d12e33c6658ff109040a20b324", null ], + [ "createWorld", "classne_1_1GameInstance.html#aff0fca06776071d01c9e97909806df6a", null ], + [ "executeShaderManagerSelfValidation", "classne_1_1GameInstance.html#a632031102f1943178d5b19d98407babe", null ], + [ "getActionEventBindings", "classne_1_1GameInstance.html#aaf9d328115f9ccfb0a2bcf59696b4706", null ], + [ "getAxisEventBindings", "classne_1_1GameInstance.html#ae937d75eae2f65ede3f1e1409929d7a4", null ], + [ "getCalledEveryFrameNodeCount", "classne_1_1GameInstance.html#a88c6a395c405626e8b9bd9f88bca48a0", null ], + [ "getCameraManager", "classne_1_1GameInstance.html#a20c9104a81b6b32567972bdd09a175ec", null ], + [ "getGarbageCollectorRunIntervalInSec", "classne_1_1GameInstance.html#a16e2423872298e507160249708f6bb1e", null ], + [ "getInputManager", "classne_1_1GameInstance.html#a1914730da5993e3f18f15ce5ee6dbc4e", null ], + [ "getTotalApplicationTimeInSec", "classne_1_1GameInstance.html#a87a26980f1331909ea81f47c550aca3e", null ], + [ "getTotalSpawnedNodeCount", "classne_1_1GameInstance.html#a32886049aa6aa5c63bca94f60c179264", null ], + [ "getWindow", "classne_1_1GameInstance.html#aab1527a8de17aa14bc10fb321f5e80b2", null ], + [ "getWorldRootNode", "classne_1_1GameInstance.html#a1694c7d8efca6ba32e3caff863d8fdfe", null ], + [ "getWorldSize", "classne_1_1GameInstance.html#ae9c6911a64ab45b5d45b9d2e241618c7", null ], + [ "getWorldTimeInSeconds", "classne_1_1GameInstance.html#a16483867d51ac5521d747038f37172ba", null ], + [ "loadNodeTreeAsWorld", "classne_1_1GameInstance.html#a9ac06b2413452cc4d3e041159cc0edd6", null ], + [ "onBeforeNewFrame", "classne_1_1GameInstance.html#a33c3f5c6e96408babf22b3a977f8c5e1", null ], + [ "onFramebufferSizeChanged", "classne_1_1GameInstance.html#a9cdb73a250e0af9c3ff2ce94ee020efc", null ], + [ "onGameStarted", "classne_1_1GameInstance.html#a62e6067d69f8f01c946e80d52397daee", null ], + [ "onInputActionEvent", "classne_1_1GameInstance.html#a5bb595a982b111f00b5dea23e9ea44ed", null ], + [ "onInputAxisEvent", "classne_1_1GameInstance.html#a1d0adc50099fca125b3ed972056ee671", null ], + [ "onKeyboardInput", "classne_1_1GameInstance.html#ac32b017f37cf76d44c6b2b4b9e36bf82", null ], + [ "onMouseInput", "classne_1_1GameInstance.html#a5eb8ba7f0f5601466ae1d5a6b59bd572", null ], + [ "onMouseMove", "classne_1_1GameInstance.html#aca8684ad4a68801bc651b2b31b1031ad", null ], + [ "onMouseScrollMove", "classne_1_1GameInstance.html#abf5324001b1c186881e7f12232cef62f", null ], + [ "onWindowClose", "classne_1_1GameInstance.html#a861a62cb1bd5094ebdaac417f3196675", null ], + [ "onWindowFocusChanged", "classne_1_1GameInstance.html#a1e67e6624e5b7bb018f14a5adfa6db97", null ], + [ "queueGarbageCollection", "classne_1_1GameInstance.html#a3b2b339ea3f41d6d71a36ce7c47acb5e", null ], + [ "setGarbageCollectorRunInterval", "classne_1_1GameInstance.html#adcc2960f6fd8aa93c95b6d7f7eb8ee69", null ], + [ "stopAndDisableCreatedTimers", "classne_1_1GameInstance.html#a2e23df6476d30d752135ac6229e9b20f", null ], + [ "bAllowCreatingTimers", "classne_1_1GameInstance.html#a315aeac9a8ea882a15033ead66ffc8ec", null ], + [ "mtxBindedActionEvents", "classne_1_1GameInstance.html#a9a2b201b1cad1e756f4ecfaa4c019d36", null ], + [ "mtxBindedAxisEvents", "classne_1_1GameInstance.html#af280f5e74bace192c883afce7bbfa179", null ], + [ "mtxCreatedTimers", "classne_1_1GameInstance.html#a57d67eeab693b01a3feea546861566ee", null ], + [ "pGameManager", "classne_1_1GameInstance.html#ac13ef9e4f2be1010406d6e3d62d7a9de", null ], + [ "pGameWindow", "classne_1_1GameInstance.html#a4f65dca260b1f8581b1c30a2be4f5316", null ], + [ "pInputManager", "classne_1_1GameInstance.html#a7e778278348dc1e1b27b1b2183d00625", null ] +]; \ No newline at end of file diff --git a/classne_1_1GameInstance.png b/classne_1_1GameInstance.png new file mode 100644 index 0000000000000000000000000000000000000000..19bf2320f77c0d46f98ed903856b6cbb19fb447e GIT binary patch literal 647 zcmeAS@N?(olHy`uVBq!ia0vp^6M#5?gBeI3Ea0&NQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#Ns@JY5_^Dj46+ecvao$aAFK zvFq92`8%p*be{R&@t(YDMbVKLWqZy3CBFIHGbPB%(_>OeACt!<8`cRbl~sZ-vUyZ8 z*Z;gcf6iCa1&@B)JXp`PbhXr0wb?B9ubp1*c&%JGtatnJyJuH^E?)3HrhJ}txw7`j zQ&M{-nXJ8-^Uvdw(sHNloXX60?@6(zgZby2eb0E)>|N%*wY4|DzcQ$fQb;$e3tG6c z-AsJvl%(*D8=WR?x$GTYHoumA%ln<8FV4zs`W$?J*4C|`A6;F)#xJtBGXIpy%Xp0j zm6O2?o|Bd{Oj7YzXIeVtk|R??{|iP2^_M0Kjz2b7bh$xq-sX-z<}OWUhImF6hIvdJ z3^uF+3>91o3?D=s7#?UgFdPVGU~E{tl(FDW6`;v!c|Y^d}eR)ne<$v!Q)ae z!^9=(;u=%qYxBC7MBZ&wNk2PZ=K6d_-SfA3&R^ccJZ0VCYs%|CPG37^dCeNRc(un- zJy*}}nO(d3f@G)lK@p>%>dGY;mxCz0S#-|F2xew+OF|t8YXs+`7^{ z{Mokv{c~~|_orx2xbIwM^Xvb@-NEge*^e(C%3Gc(U7TvV=h%*5w@Kb3Vf3eQ?teD+@PdXczWEebM{an^LB{Ts5pav)W literal 0 HcmV?d00001 diff --git a/classne_1_1GameManager-members.html b/classne_1_1GameManager-members.html new file mode 100644 index 000000000..5e10284e2 --- /dev/null +++ b/classne_1_1GameManager-members.html @@ -0,0 +1,168 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::GameManager Member List
+
+
+ +

This is the complete list of members for ne::GameManager, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addDeferredTask(const std::function< void()> &task)ne::GameManager
addTaskToThreadPool(const std::function< void()> &task)ne::GameManager
bIsBeingDestroyedne::GameManagerprivate
bIsInitializedne::GameManagerprivate
bShouldAcceptNewDeferredTasksne::GameManagerprivate
createWorld(const std::function< void(const std::optional< Error > &)> &onCreated, size_t iWorldSize=Globals::getDefaultWorldSize())ne::GameManager
destroy()ne::GameManagerprivate
destroyAndCleanExistingWorld()ne::GameManagerprivate
executeDeferredTasks()ne::GameManagerprivate
GameManager(const GameManager &)=delete (defined in ne::GameManager)ne::GameManager
GameManager(Window *pWindow)ne::GameManagerprivate
get()ne::GameManagerstatic
getCalledEveryFrameNodeCount()ne::GameManager
getCameraManager() constne::GameManager
getGameInstance() constne::GameManager
getGarbageCollectorRunIntervalInSec() constne::GameManager
getTimeSincePrevFrameInSec() constne::GameManager
getTotalSpawnedNodeCount()ne::GameManager
getWindow() constne::GameManager
getWorldRootNode()ne::GameManager
getWorldSize()ne::GameManager
getWorldTimeInSeconds()ne::GameManager
iGcRunIntervalInSecne::GameManagerprivate
initialize(std::optional< RendererType > preferredRenderer)ne::GameManagerprivate
inputManagerne::GameManagerprivate
isBeingDestroyed() constne::GameManager
isNodeSpawned(size_t iNodeId)ne::GameManager
lastGcRunTimene::GameManagerprivate
loadNodeTreeAsWorld(const std::function< void(const std::optional< Error > &)> &onLoaded, const std::filesystem::path &pathToNodeTree, size_t iWorldSize=Globals::getDefaultWorldSize())ne::GameManager
mainThreadIdne::GameManagerprivate
mtxDeferredTasksne::GameManagerprivate
mtxWorldne::GameManagerprivate
onBeforeNewFrame(float timeSincePrevCallInSec)ne::GameManagerprivate
onFramebufferSizeChanged(int iWidth, int iHeight) constne::GameManagerprivate
onGameStarted()ne::GameManagerprivate
onKeyboardInput(KeyboardKey key, KeyboardModifiers modifiers, bool bIsPressedDown)ne::GameManagerprivate
onMouseInput(MouseButton button, KeyboardModifiers modifiers, bool bIsPressedDown)ne::GameManagerprivate
onMouseMove(double xOffset, double yOffset)ne::GameManagerprivate
onMouseScrollMove(int iOffset)ne::GameManagerprivate
onTickFinished()ne::GameManagerprivate
onWindowClose() constne::GameManagerprivate
onWindowFocusChanged(bool bIsFocused) constne::GameManagerprivate
operator=(const GameManager &)=delete (defined in ne::GameManager)ne::GameManager
pCameraManagerne::GameManagerprivate
pGameInstancene::GameManagerprivate
pRendererne::GameManagerprivate
pWindowne::GameManagerprivate
queueGarbageCollection(bool bForce, const std::optional< std::function< void()> > &onFinished={})ne::GameManager
runGarbageCollection(bool bForce=false)ne::GameManagerprivate
setGameInstance()ne::GameManagerinlineprivate
setGarbageCollectorRunInterval(long long iGcRunIntervalInSec)ne::GameManager
sGcLeakReasonsne::GameManagerinlineprivatestatic
threadPoolne::GameManagerprivate
timeSincePrevFrameInSecne::GameManagerprivate
triggerActionEvents(std::variant< KeyboardKey, MouseButton > key, KeyboardModifiers modifiers, bool bIsPressedDown)ne::GameManagerprivate
triggerAxisEvents(KeyboardKey key, KeyboardModifiers modifiers, bool bIsPressedDown)ne::GameManagerprivate
Window (defined in ne::GameManager)ne::GameManagerfriend
~GameManager() (defined in ne::GameManager)ne::GameManagervirtual
+
+ + + + diff --git a/classne_1_1GameManager.html b/classne_1_1GameManager.html new file mode 100644 index 000000000..a9fa3aef3 --- /dev/null +++ b/classne_1_1GameManager.html @@ -0,0 +1,1830 @@ + + + + + + + +Nameless Engine: ne::GameManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <GameManager.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

GameManager (const GameManager &)=delete
 
+GameManageroperator= (const GameManager &)=delete
 
void setGarbageCollectorRunInterval (long long iGcRunIntervalInSec)
 
void queueGarbageCollection (bool bForce, const std::optional< std::function< void()> > &onFinished={})
 
void addDeferredTask (const std::function< void()> &task)
 
void addTaskToThreadPool (const std::function< void()> &task)
 
void createWorld (const std::function< void(const std::optional< Error > &)> &onCreated, size_t iWorldSize=Globals::getDefaultWorldSize())
 
void loadNodeTreeAsWorld (const std::function< void(const std::optional< Error > &)> &onLoaded, const std::filesystem::path &pathToNodeTree, size_t iWorldSize=Globals::getDefaultWorldSize())
 
sgc::GcPtr< NodegetWorldRootNode ()
 
float getWorldTimeInSeconds ()
 
size_t getWorldSize ()
 
size_t getTotalSpawnedNodeCount ()
 
size_t getCalledEveryFrameNodeCount ()
 
WindowgetWindow () const
 
GameInstancegetGameInstance () const
 
CameraManagergetCameraManager () const
 
float getTimeSincePrevFrameInSec () const
 
long long getGarbageCollectorRunIntervalInSec () const
 
bool isNodeSpawned (size_t iNodeId)
 
bool isBeingDestroyed () const
 
+ + + +

+Static Public Member Functions

static GameManagerget ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

 GameManager (Window *pWindow)
 
std::optional< Errorinitialize (std::optional< RendererType > preferredRenderer)
 
void destroy ()
 
template<typename MyGameInstance >
+requires std::derived_from<MyGameInstance, GameInstance>
void setGameInstance ()
 
void onGameStarted ()
 
void onBeforeNewFrame (float timeSincePrevCallInSec)
 
void onKeyboardInput (KeyboardKey key, KeyboardModifiers modifiers, bool bIsPressedDown)
 
void onMouseInput (MouseButton button, KeyboardModifiers modifiers, bool bIsPressedDown)
 
void onMouseMove (double xOffset, double yOffset)
 
void onMouseScrollMove (int iOffset)
 
void onWindowFocusChanged (bool bIsFocused) const
 
void onFramebufferSizeChanged (int iWidth, int iHeight) const
 
void onWindowClose () const
 
void onTickFinished ()
 
void runGarbageCollection (bool bForce=false)
 
void executeDeferredTasks ()
 
void triggerActionEvents (std::variant< KeyboardKey, MouseButton > key, KeyboardModifiers modifiers, bool bIsPressedDown)
 
void triggerAxisEvents (KeyboardKey key, KeyboardModifiers modifiers, bool bIsPressedDown)
 
void destroyAndCleanExistingWorld ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

WindowpWindow
 
std::unique_ptr< GameInstancepGameInstance
 
std::pair< std::recursive_mutex, std::unique_ptr< World > > mtxWorld
 
std::unique_ptr< RendererpRenderer
 
std::unique_ptr< CameraManagerpCameraManager
 
ThreadPool threadPool
 
std::pair< std::recursive_mutex, std::queue< std::function< void()> > > mtxDeferredTasks
 
InputManager inputManager
 
std::chrono::steady_clock::time_point lastGcRunTime
 
float timeSincePrevFrameInSec = 0.0F
 
long long iGcRunIntervalInSec = 120
 
std::thread::id mainThreadId
 
bool bShouldAcceptNewDeferredTasks = true
 
bool bIsInitialized = false
 
bool bIsBeingDestroyed = false
 
+ + + +

+Static Private Attributes

static const char * sGcLeakReasons
 
+ + + +

+Friends

+class Window
 
+

Detailed Description

+

Controls main game objects: game instance, input manager, renderer, audio engine, physics engine and etc.

+
Remarks
Owned by Window object.
+

Constructor & Destructor Documentation

+ +

◆ GameManager()

+ +
+
+ + + + + +
+ + + + + + + + +
ne::GameManager::GameManager (WindowpWindow)
+
+private
+
+

Creates uninitialized GameManager.

+
Remarks
Use initialize to initialize the manager.
+
Parameters
+ + +
pWindowWindow that owns this object.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ addDeferredTask()

+ +
+
+ + + + + + + + +
void ne::GameManager::addDeferredTask (const std::function< void()> & task)
+
+

Adds a function to be executed on the main thread next time onBeforeNewFrame is called.

+
Warning
Don't capture gc pointers in std::function, this is not supported and will cause memory leaks/crashes!
+
+If you are using member functions/fields inside of the task you need to make sure that the owner object of these member functions/fields will not be deleted until this task is finished. If you use GameInstance or Node member functions/fields inside of the task and submitting a deferred tasks from the main thread then ignore this warning, they are safe to use in deferred tasks and will not be deleted until the task is finished. If you are submitting a deferred task that operates on a GameInstance/Node from a non main thread then you need to do a few additional checks inside of your deferred task, for example:
// We are on a non-main thread inside of a node:
+
addDeferredTask([this, iNodeId](){ // capturing `this` to use `Node` (self) functions, also
+
capturing self ID
+
// We are inside of a deferred task (on the main thread) and we don't know if the node (`this`)
+
// was garbage collected or not because we submitted our task from a non-main thread.
+
// REMEMBER: we can't capture `gc` pointers in `std::function`, this is not supported
+
// and will cause memory leaks/crashes!
+
+
const auto pGameManager = GameManager::get(); // using engine's private class `GameManager`
+
+
// `pGameManager` is guaranteed to be valid inside of a deferred task.
+
// Otherwise, if running this code outside of a deferred task you need to do 2 checks:
+
// if (pGameManager == nullptr) return;
+
// if (pGameManager->isBeingDestroyed()) return;
+
+
if (!pGameManager->isNodeSpawned(iNodeId)){
+
// Node was despawned and it may be dangerous to run the callback.
+
return;
+
}
+
+
// Can safely interact with `this` (self) - we are on the main thread.
+
});
+
static GameManager * get()
Definition: GameManager.cpp:299
+
void addDeferredTask(const std::function< void()> &task)
Definition: GameManager.cpp:570
+
+
Remarks
In the task you don't need to check if the game is being destroyed, the engine makes sure all tasks are finished before the game is destroyed.
+
Parameters
+ + +
taskFunction to execute.
+
+
+ +
+
+ +

◆ addTaskToThreadPool()

+ +
+
+ + + + + + + + +
void ne::GameManager::addTaskToThreadPool (const std::function< void()> & task)
+
+

Adds a function to be executed on the thread pool.

+
Warning
Don't capture gc pointers in std::function, this is not supported and will cause memory leaks/crashes!
+
+If you are using a member functions/fields inside of the task you need to make sure that the owner object of these member functions/fields will not be deleted until this task is finished.
+
Remarks
In the task you don't need to check if the game is being destroyed, the engine makes sure all tasks are finished before the game is destroyed.
+
Parameters
+ + +
taskFunction to execute.
+
+
+ +
+
+ +

◆ createWorld()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ne::GameManager::createWorld (const std::function< void(const std::optional< Error > &)> & onCreated,
size_t iWorldSize = Globals::getDefaultWorldSize() 
)
+
+

Adds a deferred task (see addDeferredTask) to create a new world that contains only one node - root node.

+
Remarks
Causes GameInstance::onWorldLoaded to be called after the world is loaded.
+
+Replaces the old world (if existed).
+
+Engine will execute all deferred tasks before changing the world (before destroying all nodes), so even if deferred tasks queue looks like this: ... – create/load world task – call node's member function task – ..., on create/load world task the engine will finish all other tasks and only when deferred tasks queue is empty start to create/load world so you don't need to care about the order of deferred tasks.
+
Parameters
+ + + +
onCreatedCallback function that will be called on the main thread after the world is created. Contains optional error (if world creation failed) as the only argument. Use GameInstance member functions as callback functions for created worlds, because all nodes and other game objects will be destroyed while the world is changing.
iWorldSizeSize of the new world in game units. Must be power of 2 (128, 256, 512, 1024, 2048, etc.). World size needs to be specified for internal purposes such as Directional Light shadow map size. You don't need to care why we need this information, you only need to know that if you leave world bounds lighting or physics may be incorrect (the editor or engine will warn you if something is leaving world bounds, pay attention to the logs).
+
+
+ +
+
+ +

◆ destroy()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::GameManager::destroy ()
+
+private
+
+

Contains destructor logic: runs GC for the last time, destroys game instance, etc.

+
Warning
Should be called from the main thread.
+
Remarks
Can be safely called multiple times (additional calls will be ignored).
+
+Can be used to destroy the game without clearing the actual game pointer.
+ +
+
+ +

◆ destroyAndCleanExistingWorld()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::GameManager::destroyAndCleanExistingWorld ()
+
+private
+
+

Destroys the current world (if exists) and runs GC to clean everything up.

+
Warning
This function should be called from the main thread. If this function is called outside of the main thread an error will be shown.
+ +
+
+ +

◆ executeDeferredTasks()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::GameManager::executeDeferredTasks ()
+
+private
+
+

Executes all deferred tasks from mtxDeferredTasks.

+ +
+
+ +

◆ get()

+ +
+
+ + + + + +
+ + + + + + + +
GameManager * ne::GameManager::get ()
+
+static
+
+

Returns the last created game manager object.

+
Warning
Avoid using this getter, use only when there's no other good way to get game manager object.
+
+As an addition to checking returned pointer for nullptr use isBeingDestroyed.
+
Returns
nullptr if no game manager object was created yet, otherwise pointer to game manager object.
+ +
+
+ +

◆ getCalledEveryFrameNodeCount()

+ +
+
+ + + + + + + +
size_t ne::GameManager::getCalledEveryFrameNodeCount ()
+
+

Returns the current amount of spawned nodes that are marked as "should be called every frame".

+
Returns
Amount of spawned nodes that should be called every frame.
+ +
+
+ +

◆ getCameraManager()

+ +
+
+ + + + + + + +
CameraManager * ne::GameManager::getCameraManager () const
+
+

Returns camera manager.

+
Returns
Do not delete this pointer. Camera manager.
+ +
+
+ +

◆ getGameInstance()

+ +
+
+ + + + + + + +
GameInstance * ne::GameManager::getGameInstance () const
+
+

Returns game instance that this game is using (Game owns GameInstance).

+
Returns
Do not delete this pointer. Used game instance.
+ +
+
+ +

◆ getGarbageCollectorRunIntervalInSec()

+ +
+
+ + + + + + + +
long long ne::GameManager::getGarbageCollectorRunIntervalInSec () const
+
+

Returns the current interval after which we need to run garbage collector again.

+
Returns
Interval in seconds.
+ +
+
+ +

◆ getTimeSincePrevFrameInSec()

+ +
+
+ + + + + + + +
float ne::GameManager::getTimeSincePrevFrameInSec () const
+
+

Returns the last time value that was passed to onBeforeNewFrame function(s).

+
Returns
Delta time.
+ +
+
+ +

◆ getTotalSpawnedNodeCount()

+ +
+
+ + + + + + + +
size_t ne::GameManager::getTotalSpawnedNodeCount ()
+
+

Returns total amount of currently spawned nodes.

+
Returns
Total nodes spawned right now.
+ +
+
+ +

◆ getWindow()

+ +
+
+ + + + + + + +
Window * ne::GameManager::getWindow () const
+
+

Returns window that owns this object.

+
Returns
Do not delete this pointer. Window that owns this object.
+ +
+
+ +

◆ getWorldRootNode()

+ +
+
+ + + + + + + +
sgc::GcPtr< Node > ne::GameManager::getWorldRootNode ()
+
+

Returns a pointer to world's root node.

+
Returns
nullptr if world is not created (see createWorld), otherwise world's root node.
+ +
+
+ +

◆ getWorldSize()

+ +
+
+ + + + + + + +
size_t ne::GameManager::getWorldSize ()
+
+

Returns world size in game units.

+
Returns
World size.
+ +
+
+ +

◆ getWorldTimeInSeconds()

+ +
+
+ + + + + + + +
float ne::GameManager::getWorldTimeInSeconds ()
+
+

Returns time since world creation (in seconds).

+
Returns
Zero if world is not created (see createWorld), otherwise time since world creation (in seconds).
+ +
+
+ +

◆ initialize()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::GameManager::initialize (std::optional< RendererType > preferredRenderer)
+
+private
+
+

Initializes the manager.

+
Parameters
+ + +
preferredRendererPreferred renderer to be used.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ isBeingDestroyed()

+ +
+
+ + + + + + + +
bool ne::GameManager::isBeingDestroyed () const
+
+

Tells whether Game's destruction process was started or not.

+
Returns
Whether Game's destruction process was started or not.
+ +
+
+ +

◆ isNodeSpawned()

+ +
+
+ + + + + + + + +
bool ne::GameManager::isNodeSpawned (size_t iNodeId)
+
+

Tells if a node with the specified ID is currently spawned or not.

+
Parameters
+ + +
iNodeIdID of the node to check.
+
+
+
Returns
true if the node is spawned, false otherwise.
+ +
+
+ +

◆ loadNodeTreeAsWorld()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::GameManager::loadNodeTreeAsWorld (const std::function< void(const std::optional< Error > &)> & onLoaded,
const std::filesystem::path & pathToNodeTree,
size_t iWorldSize = Globals::getDefaultWorldSize() 
)
+
+

Adds a deferred task (see addDeferredTask) to load and deserialize a node tree to be used as the new world.

+

Node tree's root node will be used as world's root node.

+
Remarks
Replaces the old world (if existed).
+
+Engine will execute all deferred tasks before changing the world (before destroying all nodes), so even if deferred tasks queue looks like this: ... – create/load world task – call node's member function task – ..., on create/load world task the engine will finish all other tasks and only when deferred tasks queue is empty start to create/load world so you don't need to care about the order of deferred tasks.
+
Parameters
+ + + + +
onLoadedCallback function that will be called on the main thread after the world is loaded. Contains optional error (if world loading failed) as the only argument. Use GameInstance member functions as callback functions for loaded worlds, because all nodes and other game objects will be destroyed while the world is changing.
pathToNodeTreePath to the file that contains a node tree to load, the ".toml" extension will be automatically added if not specified.
iWorldSizeSize of the world in game units. Must be power of 2 (128, 256, 512, 1024, 2048, etc.). World size needs to be specified for internal purposes such as Directional Light shadow map size. You don't need to care why we need this information, you only need to know that if you leave world bounds lighting or physics may be incorrect (the editor or engine will warn you if something is leaving world bounds, pay attention to the logs).
+
+
+ +
+
+ +

◆ onBeforeNewFrame()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::GameManager::onBeforeNewFrame (float timeSincePrevCallInSec)
+
+private
+
+

Called before a new frame is rendered.

+
Parameters
+ + +
timeSincePrevCallInSecTime in seconds that has passed since the last call to this function.
+
+
+ +
+
+ +

◆ onFramebufferSizeChanged()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::GameManager::onFramebufferSizeChanged (int iWidth,
int iHeight 
) const
+
+private
+
+

Called when the framebuffer size was changed.

+
Parameters
+ + + +
iWidthNew width of the framebuffer (in pixels).
iHeightNew height of the framebuffer (in pixels).
+
+
+ +
+
+ +

◆ onGameStarted()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::GameManager::onGameStarted ()
+
+private
+
+

Called by owner Window to notify game instance about game being started (everything is set up).

+
Remarks
Expects game instance to exist.
+ +
+
+ +

◆ onKeyboardInput()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::GameManager::onKeyboardInput (KeyboardKey key,
KeyboardModifiers modifiers,
bool bIsPressedDown 
)
+
+private
+
+

Called when the window (that owns this object) receives keyboard input.

+
Parameters
+ + + + +
keyKeyboard key.
modifiersKeyboard modifier keys.
bIsPressedDownWhether the key down event occurred or key up.
+
+
+ +
+
+ +

◆ onMouseInput()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::GameManager::onMouseInput (MouseButton button,
KeyboardModifiers modifiers,
bool bIsPressedDown 
)
+
+private
+
+

Called when the window (that owns this object) receives mouse input.

+
Parameters
+ + + + +
buttonMouse button.
modifiersKeyboard modifier keys.
bIsPressedDownWhether the button down event occurred or button up.
+
+
+ +
+
+ +

◆ onMouseMove()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::GameManager::onMouseMove (double xOffset,
double yOffset 
)
+
+private
+
+

Called when the window received mouse movement.

+
Parameters
+ + + +
xOffsetMouse X movement delta in pixels (plus if moved to the right, minus if moved to the left).
yOffsetMouse Y movement delta in pixels (plus if moved up, minus if moved down).
+
+
+ +
+
+ +

◆ onMouseScrollMove()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::GameManager::onMouseScrollMove (int iOffset)
+
+private
+
+

Called when the window receives mouse scroll movement.

+
Parameters
+ + +
iOffsetMovement offset.
+
+
+ +
+
+ +

◆ onTickFinished()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::GameManager::onTickFinished ()
+
+private
+
+

Called by the owner when a tick is fully finished.

+
Warning
This function should be called on the main thread.
+ +
+
+ +

◆ onWindowClose()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::GameManager::onWindowClose () const
+
+private
+
+

Called when a window that owns this game instance was requested to close (no new frames will be rendered). Prefer to do your destructor logic here.

+ +
+
+ +

◆ onWindowFocusChanged()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::GameManager::onWindowFocusChanged (bool bIsFocused) const
+
+private
+
+

Called when the window focus was changed.

+
Parameters
+ + +
bIsFocusedWhether the window has gained or lost the focus.
+
+
+ +
+
+ +

◆ queueGarbageCollection()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ne::GameManager::queueGarbageCollection (bool bForce,
const std::optional< std::function< void()> > & onFinished = {} 
)
+
+

Queues a request to run a garbage collection as a deferred task on the main thread using addDeferredTask.

+
Remarks
Typically you don't need to call this function as garbage collection is executed regularly (see setGarbageCollectorRunInterval) but you can still call it anyway.
+
+Note that garbage collection will also be executed additionally in some special cases, such as when World is being destructed or some nodes are being detached and despawned.
+
Parameters
+ + + +
bForceForce run garbage collection even if the last garbage collection was run not so long ago.
onFinishedOptional callback that will be triggered on the main thread when garbage collection is finished (queued as addDeferredTask).
+
+
+ +
+
+ +

◆ runGarbageCollection()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::GameManager::runGarbageCollection (bool bForce = false)
+
+private
+
+

Runs garbage collection if enough time has passed since the last garbage collection (see setGarbageCollectorRunInterval).

+
Warning
This function should be called from the main thread. If this function is called outside of the main thread an error will be shown.
+
Parameters
+ + +
bForceForce run garbage collection even if the last garbage collection was run not so long ago.
+
+
+ +
+
+ +

◆ setGameInstance()

+ +
+
+
+template<typename MyGameInstance >
+requires std::derived_from<MyGameInstance, GameInstance>
+ + + + + +
+ + + + + + + +
void ne::GameManager::setGameInstance ()
+
+inlineprivate
+
+

Set GameInstance derived class to react to user inputs, window events and etc.

+ +
+
+ +

◆ setGarbageCollectorRunInterval()

+ +
+
+ + + + + + + + +
void ne::GameManager::setGarbageCollectorRunInterval (long long iGcRunIntervalInSec)
+
+

Modifies the interval after which we need to run garbage collector again. The current value can be retrieved using getGarbageCollectorRunIntervalInSec.

+
Remarks
Interval should be in range [30; 300] seconds (otherwise it will be clamped).
+
+Note that garbage collection will also be executed additionally in some special cases, such as when World is being destructed or some nodes are being detached and despawned.
+
Parameters
+ + +
iGcRunIntervalInSecInterval in seconds.
+
+
+ +
+
+ +

◆ triggerActionEvents()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::GameManager::triggerActionEvents (std::variant< KeyboardKey, MouseButton > key,
KeyboardModifiers modifiers,
bool bIsPressedDown 
)
+
+private
+
+

Triggers action events from keyboard/mouse input.

+
Parameters
+ + + + +
keyKeyboard/mouse key.
modifiersKeyboard modifier keys.
bIsPressedDownWhether the key down event occurred or key up.
+
+
+ +
+
+ +

◆ triggerAxisEvents()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::GameManager::triggerAxisEvents (KeyboardKey key,
KeyboardModifiers modifiers,
bool bIsPressedDown 
)
+
+private
+
+

Triggers axis events from keyboard input.

+
Parameters
+ + + + +
keyKeyboard key.
modifiersKeyboard modifier keys.
bIsPressedDownWhether the key down event occurred or key up.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ bIsBeingDestroyed

+ +
+
+ + + + + +
+ + + + +
bool ne::GameManager::bIsBeingDestroyed = false
+
+private
+
+

Whether destroy was called or not.

+ +
+
+ +

◆ bIsInitialized

+ +
+
+ + + + + +
+ + + + +
bool ne::GameManager::bIsInitialized = false
+
+private
+
+

Whether initialize was called or not.

+ +
+
+ +

◆ bShouldAcceptNewDeferredTasks

+ +
+
+ + + + + +
+ + + + +
bool ne::GameManager::bShouldAcceptNewDeferredTasks = true
+
+private
+
+

Whether addDeferredTask should accept new tasks or not.

+ +
+
+ +

◆ iGcRunIntervalInSec

+ +
+
+ + + + + +
+ + + + +
long long ne::GameManager::iGcRunIntervalInSec = 120
+
+private
+
+

Interval in seconds after which we need to run garbage collector again.

+ +
+
+ +

◆ inputManager

+ +
+
+ + + + + +
+ + + + +
InputManager ne::GameManager::inputManager
+
+private
+
+

Binds action/axis names with input keys.

+ +
+
+ +

◆ lastGcRunTime

+ +
+
+ + + + + +
+ + + + +
std::chrono::steady_clock::time_point ne::GameManager::lastGcRunTime
+
+private
+
+

Last time we run garbage collector.

+ +
+
+ +

◆ mainThreadId

+ +
+
+ + + + + +
+ + + + +
std::thread::id ne::GameManager::mainThreadId
+
+private
+
+

ID of the main thread.

+ +
+
+ +

◆ mtxDeferredTasks

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, std::queue<std::function<void()> > > ne::GameManager::mtxDeferredTasks
+
+private
+
+

Mutex for read/write operations on deferred tasks queue. Queue of functions to call on the main thread before each frame is rendered.

+ +
+
+ +

◆ mtxWorld

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, std::unique_ptr<World> > ne::GameManager::mtxWorld
+
+private
+
+

Game world, stores world's node tree.

+ +
+
+ +

◆ pCameraManager

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<CameraManager> ne::GameManager::pCameraManager
+
+private
+
+

Determines what camera is used as in-game eyes.

+ +
+
+ +

◆ pGameInstance

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<GameInstance> ne::GameManager::pGameInstance
+
+private
+
+

Reacts to user input, window events and etc.

+ +
+
+ +

◆ pRenderer

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<Renderer> ne::GameManager::pRenderer
+
+private
+
+

Draws graphics on window.

+ +
+
+ +

◆ pWindow

+ +
+
+ + + + + +
+ + + + +
Window* ne::GameManager::pWindow
+
+private
+
+

Do not delete this pointer. Window-owner of this Game.

+ +
+
+ +

◆ sGcLeakReasons

+ +
+
+ + + + + +
+ + + + +
const char* ne::GameManager::sGcLeakReasons
+
+inlinestaticprivate
+
+Initial value:
=
+
"- you are switching a world but your game instance holds some non-nullptr gc pointers,\n"
+
"- you are not using STL container wrappers for gc "
+
"pointers (for example, you need to use `sgc::GcVector<sgc::GcPtr<T>>` instead of "
+
"`std::vector<sgc::GcPtr<T>>`, and other `gc_*` containers when storing gc pointers),\n"
+
"- you are capturing `sgc::GcPtr` pointer(s) in `std::function` (this might leak in some "
+
"special),\n"
+
"- for a more detailed list of possible issues see the \"README\" file at "
+
"https://github.com/Flone-dnb/sgc"
+

Description of reasons why a leak may occur.

+ +
+
+ +

◆ threadPool

+ +
+
+ + + + + +
+ + + + +
ThreadPool ne::GameManager::threadPool
+
+private
+
+

Thread pool to execute tasks.

+ +
+
+ +

◆ timeSincePrevFrameInSec

+ +
+
+ + + + + +
+ + + + +
float ne::GameManager::timeSincePrevFrameInSec = 0.0F
+
+private
+
+

The last time value that was passed to onBeforeNewFrame.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/game/GameManager.h
  • +
  • src/engine_lib/private/game/GameManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1GameManager.js b/classne_1_1GameManager.js new file mode 100644 index 000000000..85026d8ed --- /dev/null +++ b/classne_1_1GameManager.js @@ -0,0 +1,57 @@ +var classne_1_1GameManager = +[ + [ "GameManager", "classne_1_1GameManager.html#a18e4273cc512aa41cec39e2bdbba4296", null ], + [ "addDeferredTask", "classne_1_1GameManager.html#ad6ccd23069578f4131297a56d64d9fe4", null ], + [ "addTaskToThreadPool", "classne_1_1GameManager.html#a0fd6b822a9e3cd5387c29c967cb1d369", null ], + [ "createWorld", "classne_1_1GameManager.html#a56d0b6a09db7a67f1cd036e9414e1be6", null ], + [ "destroy", "classne_1_1GameManager.html#abaeb5caa61c983880af3717cb064dd3d", null ], + [ "destroyAndCleanExistingWorld", "classne_1_1GameManager.html#a9d22383e19aa33ebc740aab88ffdc709", null ], + [ "executeDeferredTasks", "classne_1_1GameManager.html#a3d550fb580a02a05eaa937d5fa6fe1f7", null ], + [ "get", "classne_1_1GameManager.html#a3d76df401f4711a33a9bb896d793923b", null ], + [ "getCalledEveryFrameNodeCount", "classne_1_1GameManager.html#a3851e2ff66e0ec908c30701d08e8d7bb", null ], + [ "getCameraManager", "classne_1_1GameManager.html#a5b1aad14129460108addc870a7cdc2a7", null ], + [ "getGameInstance", "classne_1_1GameManager.html#aae9bad5367d771ea77d603082af45391", null ], + [ "getGarbageCollectorRunIntervalInSec", "classne_1_1GameManager.html#aae8e383cad293ab7b0b9e8f2106fe5ae", null ], + [ "getTimeSincePrevFrameInSec", "classne_1_1GameManager.html#adc20ef5adb9a70e63e0f126e302bd0b2", null ], + [ "getTotalSpawnedNodeCount", "classne_1_1GameManager.html#aa0edbb377ab7b8e1fc1c5e1f583399f5", null ], + [ "getWindow", "classne_1_1GameManager.html#a2410cd7594cc46077cee6c900a0a43da", null ], + [ "getWorldRootNode", "classne_1_1GameManager.html#abb00111cae84200296bf56234908c67e", null ], + [ "getWorldSize", "classne_1_1GameManager.html#aa80ac9bb728d49381e3573c98c741e83", null ], + [ "getWorldTimeInSeconds", "classne_1_1GameManager.html#a0af03153d75a24c9c3c62f3fcf88d297", null ], + [ "initialize", "classne_1_1GameManager.html#a2cacc028e6ebb2353e44e00a12990f05", null ], + [ "isBeingDestroyed", "classne_1_1GameManager.html#afe8a00034541860f0595619e22381ea6", null ], + [ "isNodeSpawned", "classne_1_1GameManager.html#af183d6afc41ca41a4687f3073504f0fe", null ], + [ "loadNodeTreeAsWorld", "classne_1_1GameManager.html#afd64862dab6ec2d0dbdd9d6da07925c5", null ], + [ "onBeforeNewFrame", "classne_1_1GameManager.html#ad5574aec98eb24f9f6a5ac33e24e0a1f", null ], + [ "onFramebufferSizeChanged", "classne_1_1GameManager.html#af375a4afde29577ed3f3d0d23e44bd2a", null ], + [ "onGameStarted", "classne_1_1GameManager.html#a931e5d8a4cf3a264eb43f0e15536dc3c", null ], + [ "onKeyboardInput", "classne_1_1GameManager.html#aec5a9ce9430796de2ec8e28ae516d711", null ], + [ "onMouseInput", "classne_1_1GameManager.html#a4b5d9b861fa1952061473c9169a9b8ae", null ], + [ "onMouseMove", "classne_1_1GameManager.html#a69b185684744bbc5afdf2bed15c2f15c", null ], + [ "onMouseScrollMove", "classne_1_1GameManager.html#a4c537ba44301a3852283dda7ecce9b9f", null ], + [ "onTickFinished", "classne_1_1GameManager.html#ae14d13f580407fd93ae6102feca95d2e", null ], + [ "onWindowClose", "classne_1_1GameManager.html#aa9ecb6c766e07be4246e04bcac82105b", null ], + [ "onWindowFocusChanged", "classne_1_1GameManager.html#aa77a6095cd5ae41739e27292aba1188c", null ], + [ "queueGarbageCollection", "classne_1_1GameManager.html#aa62d3ab261690c22e6db96cd39cc3704", null ], + [ "runGarbageCollection", "classne_1_1GameManager.html#a0230c880a42001e9444bd4d99b4143ab", null ], + [ "setGameInstance", "classne_1_1GameManager.html#aead966795a4312f88b60b003ea0a42d7", null ], + [ "setGarbageCollectorRunInterval", "classne_1_1GameManager.html#a3c41dc82e4e6715a3ba543281b6eb63f", null ], + [ "triggerActionEvents", "classne_1_1GameManager.html#a153301dbfab661f9095d3686dfd9fe24", null ], + [ "triggerAxisEvents", "classne_1_1GameManager.html#aa4399a39cea06629d980609044de20c3", null ], + [ "bIsBeingDestroyed", "classne_1_1GameManager.html#a167a9401fe4ccd3ea03df90160b77873", null ], + [ "bIsInitialized", "classne_1_1GameManager.html#ac9711ea32d947461c80b2cb54becbbfe", null ], + [ "bShouldAcceptNewDeferredTasks", "classne_1_1GameManager.html#a6050d78ba567b16ea5df7efac07373d2", null ], + [ "iGcRunIntervalInSec", "classne_1_1GameManager.html#ac5abc8e3a5c1c4b8249f3ac198981493", null ], + [ "inputManager", "classne_1_1GameManager.html#a39248f46950c1902149b386138f0eb7b", null ], + [ "lastGcRunTime", "classne_1_1GameManager.html#a4ec6375e182f0531eb7a876989c14079", null ], + [ "mainThreadId", "classne_1_1GameManager.html#aaa4102525036bd884533c415e7052998", null ], + [ "mtxDeferredTasks", "classne_1_1GameManager.html#a53a45277ed8a6afce0344d355feb2543", null ], + [ "mtxWorld", "classne_1_1GameManager.html#a2402a69e89bbfe77f7d4bcf576a16ac4", null ], + [ "pCameraManager", "classne_1_1GameManager.html#a21b64aa111fb2a3e65fdf5044d71c8f0", null ], + [ "pGameInstance", "classne_1_1GameManager.html#a0f922618fabec5069d5547b80ebcafa6", null ], + [ "pRenderer", "classne_1_1GameManager.html#a911267408ef42cbb9c2686caba274e68", null ], + [ "pWindow", "classne_1_1GameManager.html#a4f0ad11430695a9e779bec3f15f7a589", null ], + [ "sGcLeakReasons", "classne_1_1GameManager.html#a04a36c5b960cfcbdd888729815cbef08", null ], + [ "threadPool", "classne_1_1GameManager.html#a23a8cccc2169059cc0013aaf8c4aa01d", null ], + [ "timeSincePrevFrameInSec", "classne_1_1GameManager.html#aa9e38923a7fee0c13e5816620103c90c", null ] +]; \ No newline at end of file diff --git a/classne_1_1GlmVecFieldSerializer-members.html b/classne_1_1GlmVecFieldSerializer-members.html new file mode 100644 index 000000000..c1a916eeb --- /dev/null +++ b/classne_1_1GlmVecFieldSerializer-members.html @@ -0,0 +1,126 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::GlmVecFieldSerializer Member List
+
+
+ +

This is the complete list of members for ne::GlmVecFieldSerializer, including all inherited members.

+ + + + + + + + + + + + + + + + + +
cloneField(Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField) overridene::GlmVecFieldSerializervirtual
deserializeField(const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes) overridene::GlmVecFieldSerializervirtual
floatEpsilonne::GlmVecFieldSerializerinlineprivatestatic
GlmVecFieldSerializer()=default (defined in ne::GlmVecFieldSerializer)ne::GlmVecFieldSerializer
IFieldSerializer()=default (defined in ne::IFieldSerializer)ne::IFieldSerializer
isFieldTypeSupported(const rfk::Field *pField) overridene::GlmVecFieldSerializervirtual
isFieldValueEqual(Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB) overridene::GlmVecFieldSerializervirtual
serializeField(toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr) overridene::GlmVecFieldSerializervirtual
sVec2CanonicalTypeName1ne::GlmVecFieldSerializerinlineprivatestatic
sVec2CanonicalTypeName2ne::GlmVecFieldSerializerinlineprivatestatic
sVec3CanonicalTypeName1ne::GlmVecFieldSerializerinlineprivatestatic
sVec3CanonicalTypeName2ne::GlmVecFieldSerializerinlineprivatestatic
sVec4CanonicalTypeName1ne::GlmVecFieldSerializerinlineprivatestatic
sVec4CanonicalTypeName2ne::GlmVecFieldSerializerinlineprivatestatic
~GlmVecFieldSerializer() override=default (defined in ne::GlmVecFieldSerializer)ne::GlmVecFieldSerializervirtual
~IFieldSerializer()=default (defined in ne::IFieldSerializer)ne::IFieldSerializervirtual
+
+ + + + diff --git a/classne_1_1GlmVecFieldSerializer.html b/classne_1_1GlmVecFieldSerializer.html new file mode 100644 index 000000000..5d34bae1f --- /dev/null +++ b/classne_1_1GlmVecFieldSerializer.html @@ -0,0 +1,655 @@ + + + + + + + +Nameless Engine: ne::GlmVecFieldSerializer Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::GlmVecFieldSerializer Class Reference
+
+
+ +

#include <GlmVecFieldSerializer.h>

+
+Inheritance diagram for ne::GlmVecFieldSerializer:
+
+
+ + +ne::IFieldSerializer + +
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual bool isFieldTypeSupported (const rfk::Field *pField) override
 
virtual std::optional< ErrorserializeField (toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr) override
 
virtual std::optional< ErrordeserializeField (const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes) override
 
virtual std::optional< ErrorcloneField (Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField) override
 
virtual bool isFieldValueEqual (Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB) override
 
virtual bool isFieldTypeSupported (const rfk::Field *pField)=0
 
virtual std::optional< ErrorserializeField (toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr)=0
 
virtual std::optional< ErrordeserializeField (const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes)=0
 
virtual std::optional< ErrorcloneField (Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField)=0
 
virtual bool isFieldValueEqual (Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB)=0
 
+ + + + + + + + + + + + + + + +

+Static Private Attributes

static const std::string sVec2CanonicalTypeName1 = "glm::vec<2, float>"
 
static const std::string sVec2CanonicalTypeName2 = "glm::vec<2, float, glm::packed_highp>"
 
static const std::string sVec3CanonicalTypeName1 = "glm::vec<3, float>"
 
static const std::string sVec3CanonicalTypeName2 = "glm::vec<3, float, glm::packed_highp>"
 
static const std::string sVec4CanonicalTypeName1 = "glm::vec<4, float>"
 
static const std::string sVec4CanonicalTypeName2 = "glm::vec<4, float, glm::packed_highp>"
 
static const float floatEpsilon = 0.00001f
 
+

Detailed Description

+

Serializer for glm::vec2, glm::vec3 and glm::vec4 field types.

+

Member Function Documentation

+ +

◆ cloneField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::GlmVecFieldSerializer::cloneField (SerializablepFromInstance,
const rfk::Field * pFromField,
SerializablepToInstance,
const rfk::Field * pToField 
)
+
+overridevirtual
+
+

Clones field's data from one object to another.

+
Parameters
+ + + + + +
pFromInstanceInstance to copy the field from.
pFromFieldField to copy.
pToInstanceInstance to copy to.
pToFieldField to copy to.
+
+
+
Returns
Error if something went wrong, empty otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ deserializeField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::GlmVecFieldSerializer::deserializeField (const toml::value * pTomlDocument,
const toml::value * pTomlValue,
SerializablepFieldOwner,
const rfk::Field * pField,
const std::string & sOwnerSectionName,
const std::string & sEntityId,
std::unordered_map< std::string, std::string > & customAttributes 
)
+
+overridevirtual
+
+

Deserializes field from a TOML value.

+
Parameters
+ + + + + + + + +
pTomlDocumentTOML document that contains a value to deserialize.
pTomlValueTOML value to deserialize the field from.
pFieldOwnerField's owner.
pFieldField to deserialize TOML value to.
sOwnerSectionNameName of the TOML section where is field was found.
sEntityIdCurrent ID string of the entity (field owner) that we are deserializing.
customAttributesPairs of values that were found with this object in TOML data. Only found when deserializing a field of type that derives from Serializable.
+
+
+
Returns
Error if something went wrong, empty otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ isFieldTypeSupported()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ne::GlmVecFieldSerializer::isFieldTypeSupported (const rfk::Field * pField)
+
+overridevirtual
+
+

Tests if this serializer supports serialization/deserialization of this field.

+
Parameters
+ + +
pFieldField to test for serialization/deserialization support.
+
+
+
Returns
true if this serializer can be used to serialize this field, false otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ isFieldValueEqual()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool ne::GlmVecFieldSerializer::isFieldValueEqual (SerializablepFieldAOwner,
const rfk::Field * pFieldA,
SerializablepFieldBOwner,
const rfk::Field * pFieldB 
)
+
+overridevirtual
+
+

Checks if the specified fields' values are equal or not.

+
Parameters
+ + + + + +
pFieldAOwnerOwner of the field A.
pFieldAField A to compare.
pFieldBOwnerOwner of the field B.
pFieldBField B to compare.
+
+
+
Returns
false if some field is unsupported by this serializer or if fields' values are not equal, true otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ serializeField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::GlmVecFieldSerializer::serializeField (toml::value * pTomlData,
SerializablepFieldOwner,
const rfk::Field * pField,
const std::string & sSectionName,
const std::string & sEntityId,
size_t & iSubEntityId,
SerializablepOriginalObject = nullptr 
)
+
+overridevirtual
+
+

Serializes field into a TOML value.

+
Parameters
+ + + + + + + + +
pTomlDataTOML value to serialize the field to.
pFieldOwnerField's owner.
pFieldField to serialize.
sSectionNameName of the section (for TOML value) to use for this field.
sEntityIdCurrent ID string of the entity (field owner) that we are serializing. Only used when serializing a field of type that derives from Serializable.
iSubEntityIdCurrent ID of the sub entity (sub entity of the field owner). Only used when serializing a field of type that derives from Serializable.
pOriginalObjectOptional. Original object of the same type as the object being serialized, this object is a deserialized version of the object being serialized, used to compare serializable fields' values and only serialize changed values. Only used when serializing a field of type that derives from Serializable.
+
+
+
Returns
Error if something went wrong, empty otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+

Member Data Documentation

+ +

◆ floatEpsilon

+ +
+
+ + + + + +
+ + + + +
const float ne::GlmVecFieldSerializer::floatEpsilon = 0.00001f
+
+inlinestaticprivate
+
+

Delta used when comparing floats.

+ +
+
+ +

◆ sVec2CanonicalTypeName1

+ +
+
+ + + + + +
+ + + + +
const std::string ne::GlmVecFieldSerializer::sVec2CanonicalTypeName1 = "glm::vec<2, float>"
+
+inlinestaticprivate
+
+

Canonical type name for glm::vec2 fields. Variant 1.

+ +
+
+ +

◆ sVec2CanonicalTypeName2

+ +
+
+ + + + + +
+ + + + +
const std::string ne::GlmVecFieldSerializer::sVec2CanonicalTypeName2 = "glm::vec<2, float, glm::packed_highp>"
+
+inlinestaticprivate
+
+

Canonical type name for glm::vec2 fields. Variant 2.

+ +
+
+ +

◆ sVec3CanonicalTypeName1

+ +
+
+ + + + + +
+ + + + +
const std::string ne::GlmVecFieldSerializer::sVec3CanonicalTypeName1 = "glm::vec<3, float>"
+
+inlinestaticprivate
+
+

Canonical type name for glm::vec3 fields. Variant 1.

+ +
+
+ +

◆ sVec3CanonicalTypeName2

+ +
+
+ + + + + +
+ + + + +
const std::string ne::GlmVecFieldSerializer::sVec3CanonicalTypeName2 = "glm::vec<3, float, glm::packed_highp>"
+
+inlinestaticprivate
+
+

Canonical type name for glm::vec3 fields. Variant 2.

+ +
+
+ +

◆ sVec4CanonicalTypeName1

+ +
+
+ + + + + +
+ + + + +
const std::string ne::GlmVecFieldSerializer::sVec4CanonicalTypeName1 = "glm::vec<4, float>"
+
+inlinestaticprivate
+
+

Canonical type name for glm::vec4 fields. Variant 1.

+ +
+
+ +

◆ sVec4CanonicalTypeName2

+ +
+
+ + + + + +
+ + + + +
const std::string ne::GlmVecFieldSerializer::sVec4CanonicalTypeName2 = "glm::vec<4, float, glm::packed_highp>"
+
+inlinestaticprivate
+
+

Canonical type name for glm::vec4 fields. Variant 2.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/io/serializers/GlmVecFieldSerializer.h
  • +
  • src/engine_lib/private/io/serializers/GlmVecFieldSerializer.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1GlmVecFieldSerializer.js b/classne_1_1GlmVecFieldSerializer.js new file mode 100644 index 000000000..b20173e22 --- /dev/null +++ b/classne_1_1GlmVecFieldSerializer.js @@ -0,0 +1,15 @@ +var classne_1_1GlmVecFieldSerializer = +[ + [ "cloneField", "classne_1_1GlmVecFieldSerializer.html#ab59602603b35391b468187de31f81d01", null ], + [ "deserializeField", "classne_1_1GlmVecFieldSerializer.html#a8edebb5ee053cdee85781eb7665c41e5", null ], + [ "isFieldTypeSupported", "classne_1_1GlmVecFieldSerializer.html#a10853202d56ccc075f98873af620f86b", null ], + [ "isFieldValueEqual", "classne_1_1GlmVecFieldSerializer.html#a5de2375a9d9ae329236d49051cfbf979", null ], + [ "serializeField", "classne_1_1GlmVecFieldSerializer.html#add662acde6c42fa2b8dde1039a52cc2b", null ], + [ "floatEpsilon", "classne_1_1GlmVecFieldSerializer.html#ada136f5772d070ccdbc3d8c337775504", null ], + [ "sVec2CanonicalTypeName1", "classne_1_1GlmVecFieldSerializer.html#a5207580bc64e83321174d80d8a0fed38", null ], + [ "sVec2CanonicalTypeName2", "classne_1_1GlmVecFieldSerializer.html#afb1ad46c3332c6b52b8c20dd58e94046", null ], + [ "sVec3CanonicalTypeName1", "classne_1_1GlmVecFieldSerializer.html#ab8ed28dc158e51b4b2907447be2dc66b", null ], + [ "sVec3CanonicalTypeName2", "classne_1_1GlmVecFieldSerializer.html#a4e95957d19103536a85ed1238722f9cb", null ], + [ "sVec4CanonicalTypeName1", "classne_1_1GlmVecFieldSerializer.html#a46128e7f81b9c081ee8bb1de87d94f03", null ], + [ "sVec4CanonicalTypeName2", "classne_1_1GlmVecFieldSerializer.html#a623fbf26115be5a9a82d7f5002c1bf05", null ] +]; \ No newline at end of file diff --git a/classne_1_1GlmVecFieldSerializer.png b/classne_1_1GlmVecFieldSerializer.png new file mode 100644 index 0000000000000000000000000000000000000000..bfaba37838c2d0b7ae0ddf6157a04c8d69493672 GIT binary patch literal 696 zcmV;p0!RIcP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0006* zNklDlRdYQtG$6%hkyG?2$CG~Y4$E^&-a8$j;qgMmTd${4hg;7o7%H_hQ56N z^5y!ryYJlNd++GW7FS!l?_83+Ab-?IGD_-^WR%n+$tbBul2KN@Wm%SK0f4{c0RZzd zx8CD1wcp%&tKH0glj~*Y0zjP91Ar*02LMr04*;U19sop1JphQ3dH@h5^#CAB>H$EM z)B}JhsRsa2QV#&4{4>2$N|_fFNt%_^lcXrACrMG>=sla~d9s(x|1R + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::GlobalShaderResourceBinding Member List
+
+
+ +

This is the complete list of members for ne::GlobalShaderResourceBinding, including all inherited members.

+ + + + + + + + + + + + + + + + + +
bindToPipelines(Pipeline *pSpecificPipeline)=0ne::GlobalShaderResourceBindingprotectedpure virtual
create(Renderer *pRenderer, GlobalShaderResourceBindingManager *pManager, const std::string &sShaderResourceName, const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> &vResourcesToBind)ne::GlobalShaderResourceBindingprotectedstatic
getBindedResources() constne::GlobalShaderResourceBindingprotected
getShaderResourceName() constne::GlobalShaderResourceBindingprotected
GlobalShaderResourceBinding()=delete (defined in ne::GlobalShaderResourceBinding)ne::GlobalShaderResourceBinding
GlobalShaderResourceBinding(const GlobalShaderResourceBinding &)=delete (defined in ne::GlobalShaderResourceBinding)ne::GlobalShaderResourceBinding
GlobalShaderResourceBinding(GlobalShaderResourceBinding &&)=delete (defined in ne::GlobalShaderResourceBinding)ne::GlobalShaderResourceBinding
GlobalShaderResourceBinding(GlobalShaderResourceBindingManager *pManager, const std::string &sShaderResourceName, const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> &vResourcesToBind)ne::GlobalShaderResourceBindingprotected
GlobalShaderResourceBindingManager (defined in ne::GlobalShaderResourceBinding)ne::GlobalShaderResourceBindingfriend
operator=(const GlobalShaderResourceBinding &)=delete (defined in ne::GlobalShaderResourceBinding)ne::GlobalShaderResourceBinding
operator=(GlobalShaderResourceBinding &&)=delete (defined in ne::GlobalShaderResourceBinding)ne::GlobalShaderResourceBinding
pManagerne::GlobalShaderResourceBindingprivate
sShaderResourceNamene::GlobalShaderResourceBindingprivate
unregisterBinding()ne::GlobalShaderResourceBindingprotected
vBindedResourcesne::GlobalShaderResourceBindingprivate
~GlobalShaderResourceBinding()=default (defined in ne::GlobalShaderResourceBinding)ne::GlobalShaderResourceBindingvirtual
+
+ + + + diff --git a/classne_1_1GlobalShaderResourceBinding.html b/classne_1_1GlobalShaderResourceBinding.html new file mode 100644 index 000000000..9a188ba59 --- /dev/null +++ b/classne_1_1GlobalShaderResourceBinding.html @@ -0,0 +1,486 @@ + + + + + + + +Nameless Engine: ne::GlobalShaderResourceBinding Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::GlobalShaderResourceBinding Class Referenceabstract
+
+
+ +

#include <GlobalShaderResourceBinding.h>

+
+Inheritance diagram for ne::GlobalShaderResourceBinding:
+
+
+ + +ne::GlslGlobalShaderResourceBinding +ne::HlslGlobalShaderResourceBinding + +
+ + + + + + + + + + +

+Public Member Functions

GlobalShaderResourceBinding (const GlobalShaderResourceBinding &)=delete
 
+GlobalShaderResourceBindingoperator= (const GlobalShaderResourceBinding &)=delete
 
GlobalShaderResourceBinding (GlobalShaderResourceBinding &&)=delete
 
+GlobalShaderResourceBindingoperator= (GlobalShaderResourceBinding &&)=delete
 
+ + + + + + + + + + + +

+Protected Member Functions

 GlobalShaderResourceBinding (GlobalShaderResourceBindingManager *pManager, const std::string &sShaderResourceName, const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> &vResourcesToBind)
 
virtual std::optional< ErrorbindToPipelines (Pipeline *pSpecificPipeline)=0
 
void unregisterBinding ()
 
const std::string & getShaderResourceName () const
 
std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> getBindedResources () const
 
+ + + +

+Static Protected Member Functions

static std::optional< Errorcreate (Renderer *pRenderer, GlobalShaderResourceBindingManager *pManager, const std::string &sShaderResourceName, const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> &vResourcesToBind)
 
+ + + + + + + +

+Private Attributes

const std::string sShaderResourceName
 
const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> vBindedResources
 
GlobalShaderResourceBindingManager *const pManager = nullptr
 
+ + + +

+Friends

+class GlobalShaderResourceBindingManager
 
+

Detailed Description

+

RAII-style type that:

    +
  • during construction: binds a GPU resource to all graphics pipelines that use it and updates the binding if new pipelines are created or old ones are updated
  • +
  • during destruction: removes binding from all graphics pipelines that used it.
  • +
+

Used for binding GPU resources as "global" shader resources (that don't change on a per-object basis).

+

Constructor & Destructor Documentation

+ +

◆ GlobalShaderResourceBinding()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ne::GlobalShaderResourceBinding::GlobalShaderResourceBinding (GlobalShaderResourceBindingManagerpManager,
const std::string & sShaderResourceName,
const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> & vResourcesToBind 
)
+
+protected
+
+

Initializes base entity (derived types will do the binding logic).

+
Remarks
Used internally, instead prefer to use create.
+
Parameters
+ + + + +
pManagerManager that creates this object.
sShaderResourceNameName of the shader resource (name from shader code) to bind the resources.
vResourcesToBindResources to bind to pipelines. This can be the same resource for all frame resources (for example a texture) or a separate resource per frame (can be used for some CPU-write resources).
+
+
+ +
+
+

Member Function Documentation

+ +

◆ bindToPipelines()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual std::optional< Error > ne::GlobalShaderResourceBinding::bindToPipelines (PipelinepSpecificPipeline)
+
+protectedpure virtual
+
+

Binds the resource to a specific pipeline or all graphics pipelines that use it.

+
Parameters
+ + +
pSpecificPipelinenullptr if need to bind to all graphics pipelines, otherwise a valid pointer to bind only to that pipeline.
+
+
+
Returns
Error if something went wrong.
+ +

Implemented in ne::GlslGlobalShaderResourceBinding, and ne::HlslGlobalShaderResourceBinding.

+ +
+
+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::GlobalShaderResourceBinding::create (RendererpRenderer,
GlobalShaderResourceBindingManagerpManager,
const std::string & sShaderResourceName,
const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> & vResourcesToBind 
)
+
+staticprotected
+
+

Creates a new render-specific binding and registers it in the manager. Also assigs this new binding to the specified GPU resource so that the binding will be removed once the resources are destroyed.

+
Parameters
+ + + + + +
pRendererRenderer.
sShaderResourceNameName of the shader resource (name from shader code) to bind the resources.
pManagerManager that creates this object.
vResourcesToBindResources to bind to pipelines. This can be the same resource for all frame resources (for example a texture) or a separate resource per frame (can be used for some CPU-write resources).
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ getBindedResources()

+ +
+
+ + + + + +
+ + + + + + + +
std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> ne::GlobalShaderResourceBinding::getBindedResources () const
+
+protected
+
+

Returns GPU resources that should be binded.

+
Returns
GPU resources.
+ +
+
+ +

◆ getShaderResourceName()

+ +
+
+ + + + + +
+ + + + + + + +
const std::string & ne::GlobalShaderResourceBinding::getShaderResourceName () const
+
+protected
+
+

Returns name of the shader resource (name from shader code) to bind to.

+
Returns
Resource name.
+ +
+
+ +

◆ unregisterBinding()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::GlobalShaderResourceBinding::unregisterBinding ()
+
+protected
+
+

Should be called by derived types in their destructor to unregister the binding in the manager.

+ +
+
+

Member Data Documentation

+ +

◆ pManager

+ +
+
+ + + + + +
+ + + + +
GlobalShaderResourceBindingManager* const ne::GlobalShaderResourceBinding::pManager = nullptr
+
+private
+
+

Manager that created this object.

+ +
+
+ +

◆ sShaderResourceName

+ +
+
+ + + + + +
+ + + + +
const std::string ne::GlobalShaderResourceBinding::sShaderResourceName
+
+private
+
+

Name of the shader resource (name from shader code) to bind vBindedResources to.

+ +
+
+ +

◆ vBindedResources

+ +
+
+ + + + + +
+ + + + +
const std::array<GpuResource*, FrameResourceManager::getFrameResourceCount()> ne::GlobalShaderResourceBinding::vBindedResources
+
+private
+
+

Resources binded to pipelines.

+
Remarks
This can be the same resource for all frame resources (for example a texturee) or a separate resource per frame (usually used for CPU-write resources).
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/general/resource/binding/global/GlobalShaderResourceBinding.h
  • +
  • src/engine_lib/private/shader/general/resource/binding/global/GlobalShaderResourceBinding.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1GlobalShaderResourceBinding.js b/classne_1_1GlobalShaderResourceBinding.js new file mode 100644 index 000000000..65728904b --- /dev/null +++ b/classne_1_1GlobalShaderResourceBinding.js @@ -0,0 +1,12 @@ +var classne_1_1GlobalShaderResourceBinding = +[ + [ "GlobalShaderResourceBinding", "classne_1_1GlobalShaderResourceBinding.html#ac41bfc2a986ce605df3dc1f72a7e4c14", null ], + [ "bindToPipelines", "classne_1_1GlobalShaderResourceBinding.html#ad8695f7ca8d6f45c13822772602cd4b9", null ], + [ "create", "classne_1_1GlobalShaderResourceBinding.html#a753e2e8ad792411db85db6ea1d95414f", null ], + [ "getBindedResources", "classne_1_1GlobalShaderResourceBinding.html#aaa54e850f3768df7fa2411c619809882", null ], + [ "getShaderResourceName", "classne_1_1GlobalShaderResourceBinding.html#a0a9e0f42492b807f4441ddd28c1d5435", null ], + [ "unregisterBinding", "classne_1_1GlobalShaderResourceBinding.html#a9ce6edba5ef9b3d16d58f04a37cb38c8", null ], + [ "pManager", "classne_1_1GlobalShaderResourceBinding.html#a170244afb3894f6ddb17565af7275680", null ], + [ "sShaderResourceName", "classne_1_1GlobalShaderResourceBinding.html#a5571b363ff790b22bf21658916e4d1f9", null ], + [ "vBindedResources", "classne_1_1GlobalShaderResourceBinding.html#a1b5714b440da876bcf60b12797fd2f61", null ] +]; \ No newline at end of file diff --git a/classne_1_1GlobalShaderResourceBinding.png b/classne_1_1GlobalShaderResourceBinding.png new file mode 100644 index 0000000000000000000000000000000000000000..d5dc5bc96c553d55820d2df1328be280127faaf0 GIT binary patch literal 1140 zcmeAS@N?(olHy`uVBq!ia0y~yU_1w82XHV0$>qwatUyXSz$e7@|Ns9$=8HF9OZyKk zw=mEwkeGhv#eo9{fa1ZEF0TN}ah3%61v3EoU|`NP`w9aC^M6kl$B+ufw{zd-wOH`D z^1Dgh{a*hlm94GDa?91c-BORcqT7yad^|_xANL3QjL2!K+Zgf|yG~NlF7yhLQ1$cV zT6{#)GjWQAs%DSSa+T7kZTp|EHu2Cpzk0p-N8k7|`};2M1D)@zj{z#p`noCW+PV0! z^2+KtezR3#Ps@MhH8(%LGl%`51>fUUvdaq$RvVN(-u^%J!sg8lnqph$JNx(7o)=u^ zQXs8z_59t!ebYUnRxP(|UBC6+nLgFhW7F4v-Y$J`V|M)7!>__GE3B-`tGAlnn#=!m z$A_;MbNFsBEMAc1_sH%m!t z!n*GzWm}6k&G_0{b1~lfy^@b#Veocg^#jv?T}zF=zB%&koJToX>Ft+S&i$)dmbE2VTB$cbq8Q9G#GfzVE{$~;~|YgrWT+wj>SL)Zk=ES2lQWjtgy*b zZn&}QvZW_(bp#ChXLr3c_PYJm`U9Mj@P?>$(^gsc>CD6c<-T| z=~tFonD{yERQxS6*UWfx_Rqy>dH;CNoj?86qwwapgBzufIsR7ra>+L8^~R~b&r5#C zv)NjoPU&`i`~1S?$)Sq*F>#*-k1AlTlFUI?U_03qNl4a^9t)+&M$i|nX(~U zJ<^SLeWBOAmnB7a|J&JJ*E_l^EBuh$*1H%^|*>-t&WYMiuATs)w5t~uW?r-xS-on+aw^89Ph{hQ}jJqnq& zKKuES4KsA#es0{kP4nH-ML%xt+r_;i`%ZLuIWQd+N-eLxV6?*XV~+LTH}bw`gz{IY z1JhAK=jM}F_vY9eTvv8A-kdNC6z + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::GlobalShaderResourceBindingManager Member List
+
+
+ +

This is the complete list of members for ne::GlobalShaderResourceBindingManager, including all inherited members.

+ + + + + + + + + + + + + + + +
createGlobalShaderResourceBindingResourcePerFrame(const std::string &sShaderResourceName, std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> vResourcesToBind)ne::GlobalShaderResourceBindingManager
createGlobalShaderResourceBindingSingleResource(const std::string &sShaderResourceName, GpuResource *pResourceToBind)ne::GlobalShaderResourceBindingManager
GlobalShaderResourceBinding (defined in ne::GlobalShaderResourceBindingManager)ne::GlobalShaderResourceBindingManagerfriend
GlobalShaderResourceBindingManager()=delete (defined in ne::GlobalShaderResourceBindingManager)ne::GlobalShaderResourceBindingManager
GlobalShaderResourceBindingManager(PipelineManager *pPipelineManager)ne::GlobalShaderResourceBindingManagerprivate
mtxActiveBindingsne::GlobalShaderResourceBindingManagerprivate
onAllGraphicsPipelinesRecreatedInternalResources()ne::GlobalShaderResourceBindingManagerprivate
onNewGraphicsPipelineCreated(Pipeline *pNewPipeline)ne::GlobalShaderResourceBindingManagerprivate
PipelineManager (defined in ne::GlobalShaderResourceBindingManager)ne::GlobalShaderResourceBindingManagerfriend
pPipelineManagerne::GlobalShaderResourceBindingManagerprivate
registerNewBinding(GlobalShaderResourceBinding *pBinding)ne::GlobalShaderResourceBindingManagerprivate
Renderer (defined in ne::GlobalShaderResourceBindingManager)ne::GlobalShaderResourceBindingManagerfriend
unregisterBinding(GlobalShaderResourceBinding *pBinding)ne::GlobalShaderResourceBindingManagerprivate
~GlobalShaderResourceBindingManager()ne::GlobalShaderResourceBindingManager
+
+ + + + diff --git a/classne_1_1GlobalShaderResourceBindingManager.html b/classne_1_1GlobalShaderResourceBindingManager.html new file mode 100644 index 000000000..09cd8162a --- /dev/null +++ b/classne_1_1GlobalShaderResourceBindingManager.html @@ -0,0 +1,471 @@ + + + + + + + +Nameless Engine: ne::GlobalShaderResourceBindingManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::GlobalShaderResourceBindingManager Class Reference
+
+
+ +

#include <GlobalShaderResourceBindingManager.h>

+ + + + + + + + +

+Public Member Functions

std::optional< ErrorcreateGlobalShaderResourceBindingResourcePerFrame (const std::string &sShaderResourceName, std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> vResourcesToBind)
 
std::optional< ErrorcreateGlobalShaderResourceBindingSingleResource (const std::string &sShaderResourceName, GpuResource *pResourceToBind)
 
 ~GlobalShaderResourceBindingManager ()
 
+ + + + + + + + + + + +

+Private Member Functions

 GlobalShaderResourceBindingManager (PipelineManager *pPipelineManager)
 
std::optional< ErroronNewGraphicsPipelineCreated (Pipeline *pNewPipeline)
 
std::optional< ErroronAllGraphicsPipelinesRecreatedInternalResources ()
 
std::optional< ErrorregisterNewBinding (GlobalShaderResourceBinding *pBinding)
 
void unregisterBinding (GlobalShaderResourceBinding *pBinding)
 
+ + + + + +

+Private Attributes

std::pair< std::recursive_mutex, std::unordered_set< GlobalShaderResourceBinding * > > mtxActiveBindings
 
PipelineManager *const pPipelineManager = nullptr
 
+ + + + + + + +

+Friends

+class Renderer
 
+class PipelineManager
 
+class GlobalShaderResourceBinding
 
+

Detailed Description

+

Manages bindings of GPU resources as global shader resources (that don't change on a per-object basis).

+

Constructor & Destructor Documentation

+ +

◆ ~GlobalShaderResourceBindingManager()

+ +
+
+ + + + + + + +
ne::GlobalShaderResourceBindingManager::~GlobalShaderResourceBindingManager ()
+
+

Makes sure no active binding exists.

+ +
+
+ +

◆ GlobalShaderResourceBindingManager()

+ +
+
+ + + + + +
+ + + + + + + + +
ne::GlobalShaderResourceBindingManager::GlobalShaderResourceBindingManager (PipelineManagerpPipelineManager)
+
+private
+
+

Initializes a new manager.

+
Parameters
+ + +
pPipelineManagerManager used to interact with pipelines.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ createGlobalShaderResourceBindingResourcePerFrame()

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::GlobalShaderResourceBindingManager::createGlobalShaderResourceBindingResourcePerFrame (const std::string & sShaderResourceName,
std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> vResourcesToBind 
)
+
+

Creates a new global shader resource binding (that don't change on a per-object basis) and assigns it to the specified resources. When resources will be destroyed the binding will also be removed.

+
Remarks
If you only need to bind the same GPU resource for all frames in-flight then either use createGlobalShaderResourceBindingSingleResource that accepts a single GPU resource pointer (preferred) or just pass an array of the same pointers.
+
Parameters
+ + + +
sShaderResourceNameName of the shader resource (name from shader code) to bind the resources.
vResourcesToBindResources to bind to pipelines. This function will create a binding that binds a separate GPU resource per frame (can be used for some CPU-write resources). If you have a CPU-write GPU buffer that you plan to update without CPU-GPU synchronization (for example each time the CPU is submitting a new frame) then you need to pass a separate buffer per frame resource to avoid modifying a buffer that may be used by the GPU.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ createGlobalShaderResourceBindingSingleResource()

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::GlobalShaderResourceBindingManager::createGlobalShaderResourceBindingSingleResource (const std::string & sShaderResourceName,
GpuResourcepResourceToBind 
)
+
+

Creates a new global shader resource binding (that don't change on a per-object basis) and assigns it to the specified resources. When resources will be destroyed the binding will also be removed.

+
Remarks
Also see createGlobalShaderResourceBindingResourcePerFrame.
+
Parameters
+ + + +
sShaderResourceNameName of the shader resource (name from shader code) to bind the resource.
pResourceToBindResources to bind to pipelines. This function will create a binding that binds the same GPU resource for all frames in-flight (this can be used for textures or some buffer resources). This is used when you guarantee the CPU-GPU synchronization or don't plan to update the resource's contents.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ onAllGraphicsPipelinesRecreatedInternalResources()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::GlobalShaderResourceBindingManager::onAllGraphicsPipelinesRecreatedInternalResources ()
+
+private
+
+

Called by pipeline manager after all graphics pipelines re-created their internal state to re-bind all global shader resources to all pipelines.

+
Returns
Error if something went wrong.
+ +
+
+ +

◆ onNewGraphicsPipelineCreated()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::GlobalShaderResourceBindingManager::onNewGraphicsPipelineCreated (PipelinepNewPipeline)
+
+private
+
+

Called by pipeline manager when a new graphics pipeline is created to maybe bind some global shader resources to it.

+
Parameters
+ + +
pNewPipelinePipeline to bind to.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ registerNewBinding()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::GlobalShaderResourceBindingManager::registerNewBinding (GlobalShaderResourceBindingpBinding)
+
+private
+
+

Should be called by bindings upon construction.

+

Registers the binding and binds it to all graphics pipelines that might need that binding.

+
Parameters
+ + +
pBindingBinding to register.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ unregisterBinding()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::GlobalShaderResourceBindingManager::unregisterBinding (GlobalShaderResourceBindingpBinding)
+
+private
+
+

Should be called by bindings in their destructor.

+

Unregisters a binding that was previously registered using registerNewBinding.

+
Parameters
+ + +
pBindingBinding to unregister.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ mtxActiveBindings

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, std::unordered_set<GlobalShaderResourceBinding*> > ne::GlobalShaderResourceBindingManager::mtxActiveBindings
+
+private
+
+

Set of all currently existing (active) bindings.

+
Remarks
It's safe to store a raw pointer here because bindings will notify the manager in their destructor.
+ +
+
+ +

◆ pPipelineManager

+ +
+
+ + + + + +
+ + + + +
PipelineManager* const ne::GlobalShaderResourceBindingManager::pPipelineManager = nullptr
+
+private
+
+

Manager used to interact with pipelines.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/general/resource/binding/global/GlobalShaderResourceBindingManager.h
  • +
  • src/engine_lib/private/shader/general/resource/binding/global/GlobalShaderResourceBindingManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1GlobalShaderResourceBindingManager.js b/classne_1_1GlobalShaderResourceBindingManager.js new file mode 100644 index 000000000..808199718 --- /dev/null +++ b/classne_1_1GlobalShaderResourceBindingManager.js @@ -0,0 +1,13 @@ +var classne_1_1GlobalShaderResourceBindingManager = +[ + [ "~GlobalShaderResourceBindingManager", "classne_1_1GlobalShaderResourceBindingManager.html#a1b2f6454d669328c3a4894184090d5ab", null ], + [ "GlobalShaderResourceBindingManager", "classne_1_1GlobalShaderResourceBindingManager.html#ae86dc66da2777c27675e1e45b0c8b2cc", null ], + [ "createGlobalShaderResourceBindingResourcePerFrame", "classne_1_1GlobalShaderResourceBindingManager.html#a50b52be19c6c1758c5db6c4e8bba9968", null ], + [ "createGlobalShaderResourceBindingSingleResource", "classne_1_1GlobalShaderResourceBindingManager.html#a349ec6b21d175bcccb8a3ae4b088128c", null ], + [ "onAllGraphicsPipelinesRecreatedInternalResources", "classne_1_1GlobalShaderResourceBindingManager.html#a57921a52680a1de20d4d9668206a3608", null ], + [ "onNewGraphicsPipelineCreated", "classne_1_1GlobalShaderResourceBindingManager.html#adc0ace29a033866d9e1b17783d41c743", null ], + [ "registerNewBinding", "classne_1_1GlobalShaderResourceBindingManager.html#ab10d2fa079ca6fad271b9e78aad878be", null ], + [ "unregisterBinding", "classne_1_1GlobalShaderResourceBindingManager.html#a418b19ebb88d8e7886ca40c313285021", null ], + [ "mtxActiveBindings", "classne_1_1GlobalShaderResourceBindingManager.html#a0175cd03b1d869d52c13ebb532dea084", null ], + [ "pPipelineManager", "classne_1_1GlobalShaderResourceBindingManager.html#ae032197943227db61564b60bb16546f8", null ] +]; \ No newline at end of file diff --git a/classne_1_1Globals-members.html b/classne_1_1Globals-members.html new file mode 100644 index 000000000..ebc48fc39 --- /dev/null +++ b/classne_1_1Globals-members.html @@ -0,0 +1,122 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::Globals Member List
+
+
+ +

This is the complete list of members for ne::Globals, including all inherited members.

+ + + + + + + + + + + + + +
getApplicationName()ne::Globalsstatic
getDebugOnlyLoggingPrefix()ne::Globalsstatic
getDefaultWorldSize()ne::Globalsinlinestatic
getEngineDirectoryName()ne::Globalsstatic
getResourcesDirectoryName()ne::Globalsstatic
Globals()=delete (defined in ne::Globals)ne::Globalsprivate
iDefaultWorldSizene::Globalsprivatestatic
sBaseEngineDirectoryNamene::Globalsprivatestatic
sDebugOnlyLoggingPrefixne::Globalsprivatestatic
sResDirectoryNamene::Globalsprivatestatic
stringToWstring(const std::string &sText)ne::Globalsstatic
wstringToString(const std::wstring &sText)ne::Globalsstatic
+
+ + + + diff --git a/classne_1_1Globals.html b/classne_1_1Globals.html new file mode 100644 index 000000000..96211c13b --- /dev/null +++ b/classne_1_1Globals.html @@ -0,0 +1,452 @@ + + + + + + + +Nameless Engine: ne::Globals Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <Globals.h>

+ + + + +

+Classes

struct  WorldDirection
 
+ + + + + + + + + + + + + + + +

+Static Public Member Functions

static constexpr size_t getDefaultWorldSize ()
 
static std::string getApplicationName ()
 
static std::string getResourcesDirectoryName ()
 
static std::string getEngineDirectoryName ()
 
static std::string wstringToString (const std::wstring &sText)
 
static std::wstring stringToWstring (const std::string &sText)
 
static std::string getDebugOnlyLoggingPrefix ()
 
+ + + + + + + + + +

+Static Private Attributes

static constexpr auto sBaseEngineDirectoryName = "nameless-engine"
 
static constexpr auto sDebugOnlyLoggingPrefix = "Debug mode only"
 
static constexpr auto sResDirectoryName = "res"
 
static constexpr size_t iDefaultWorldSize = 128
 
+

Detailed Description

+

Provides static helper functions.

+

Member Function Documentation

+ +

◆ getApplicationName()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ne::Globals::getApplicationName ()
+
+static
+
+

Returns the name of this application.

+
Returns
Name of this application.
+ +
+
+ +

◆ getDebugOnlyLoggingPrefix()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ne::Globals::getDebugOnlyLoggingPrefix ()
+
+static
+
+

Returns a text that is typically added in the format "[{}]: ..." for logs that exist only in debug builds.

+
Returns
Text.
+ +
+
+ +

◆ getDefaultWorldSize()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr size_t ne::Globals::getDefaultWorldSize ()
+
+inlinestaticconstexpr
+
+

Returns default size for created/loaded worlds.

+
Returns
World size.
+ +
+
+ +

◆ getEngineDirectoryName()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ne::Globals::getEngineDirectoryName ()
+
+static
+
+

Returns name of the root (base) engine directory for storing configs, logs and etc.

+
Returns
Name of the directory.
+ +
+
+ +

◆ getResourcesDirectoryName()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ne::Globals::getResourcesDirectoryName ()
+
+static
+
+

Returns name of the directory used to store resources.

+
Returns
Name of the directory.
+ +
+
+ +

◆ stringToWstring()

+ +
+
+ + + + + +
+ + + + + + + + +
std::wstring ne::Globals::stringToWstring (const std::string & sText)
+
+static
+
+

Converts string to wstring.

+
Parameters
+ + +
sTextString to convert.
+
+
+
Returns
Converted string.
+ +
+
+ +

◆ wstringToString()

+ +
+
+ + + + + +
+ + + + + + + + +
std::string ne::Globals::wstringToString (const std::wstring & sText)
+
+static
+
+

Converts wstring to its narrow multibyte representation.

+
Parameters
+ + +
sTextString to convert.
+
+
+
Returns
Converted string.
+ +
+
+

Member Data Documentation

+ +

◆ iDefaultWorldSize

+ +
+
+ + + + + +
+ + + + +
constexpr size_t ne::Globals::iDefaultWorldSize = 128
+
+staticconstexprprivate
+
+

Default size of a world.

+ +
+
+ +

◆ sBaseEngineDirectoryName

+ +
+
+ + + + + +
+ + + + +
constexpr auto ne::Globals::sBaseEngineDirectoryName = "nameless-engine"
+
+staticconstexprprivate
+
+

Name of the root (base) engine directory for storing configs, logs and etc.

+ +
+
+ +

◆ sDebugOnlyLoggingPrefix

+ +
+
+ + + + + +
+ + + + +
constexpr auto ne::Globals::sDebugOnlyLoggingPrefix = "Debug mode only"
+
+staticconstexprprivate
+
+

Prefix for logs that exist only in debug builds.

+ +
+
+ +

◆ sResDirectoryName

+ +
+
+ + + + + +
+ + + + +
constexpr auto ne::Globals::sResDirectoryName = "res"
+
+staticconstexprprivate
+
+

Name of the directory used to store resources.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/misc/Globals.h
  • +
  • src/engine_lib/private/misc/Globals.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1Globals.js b/classne_1_1Globals.js new file mode 100644 index 000000000..1853d1bb5 --- /dev/null +++ b/classne_1_1Globals.js @@ -0,0 +1,15 @@ +var classne_1_1Globals = +[ + [ "WorldDirection", "structne_1_1Globals_1_1WorldDirection.html", "structne_1_1Globals_1_1WorldDirection" ], + [ "getApplicationName", "classne_1_1Globals.html#a9978606fda780ac44f7725d33be33fba", null ], + [ "getDebugOnlyLoggingPrefix", "classne_1_1Globals.html#a5b78765ce2be8d944763e039e71e29b1", null ], + [ "getDefaultWorldSize", "classne_1_1Globals.html#a7179df5dd887fdc07ac727435cc2e9bc", null ], + [ "getEngineDirectoryName", "classne_1_1Globals.html#aeafc24c3a3035bf20a65f7515cc54633", null ], + [ "getResourcesDirectoryName", "classne_1_1Globals.html#a3701ce77cd54340119247a2a7bb34f81", null ], + [ "stringToWstring", "classne_1_1Globals.html#ac533ec3312fca7269fb0a17e5e3d439f", null ], + [ "wstringToString", "classne_1_1Globals.html#a7d1befdd956b01e86a7064f91626d133", null ], + [ "iDefaultWorldSize", "classne_1_1Globals.html#ac9c490e97281e07bc3c5f3a6fa208a3e", null ], + [ "sBaseEngineDirectoryName", "classne_1_1Globals.html#ada9bee55c940dd403e0d8921bc4233bf", null ], + [ "sDebugOnlyLoggingPrefix", "classne_1_1Globals.html#ac2e17c7f9f01b048d43630073e575d09", null ], + [ "sResDirectoryName", "classne_1_1Globals.html#a8cd412a05bd2a03d59f5d26f53e4508b", null ] +]; \ No newline at end of file diff --git a/classne_1_1GlslComputeShaderInterface-members.html b/classne_1_1GlslComputeShaderInterface-members.html new file mode 100644 index 000000000..70bb81362 --- /dev/null +++ b/classne_1_1GlslComputeShaderInterface-members.html @@ -0,0 +1,143 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::GlslComputeShaderInterface Member List
+
+
+ +

This is the complete list of members for ne::GlslComputeShaderInterface, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bindResource(GpuResource *pResource, const std::string &sShaderResourceName, ComputeResourceUsage usage, bool bUpdateOnlyCurrentFrameResourceDescriptors=false) overridene::GlslComputeShaderInterfacevirtual
ComputeShaderInterface (defined in ne::GlslComputeShaderInterface)ne::GlslComputeShaderInterfacefriend
ComputeShaderInterface(const ComputeShaderInterface &)=delete (defined in ne::ComputeShaderInterface)ne::ComputeShaderInterface
ne::ComputeShaderInterface::ComputeShaderInterface(Renderer *pRenderer, const std::string &sComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup)ne::ComputeShaderInterfaceprotected
createPartiallyInitializedRenderSpecificInterface(Renderer *pRenderer, const std::string &sComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup)ne::ComputeShaderInterfaceprotectedstatic
createRenderSpecificInterface(Renderer *pRenderer, const std::string &sComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup)ne::ComputeShaderInterfaceprotectedstatic
createUsingGraphicsQueue(Renderer *pRenderer, const std::string &sCompiledComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup=ComputeExecutionGroup::FIRST)ne::ComputeShaderInterfacestatic
dispatchOnGraphicsQueue(VkCommandBuffer pCommandBuffer)ne::GlslComputeShaderInterfaceinline
executionGroupne::ComputeShaderInterfaceprivate
executionStagene::ComputeShaderInterfaceprivate
getComputeShaderName() constne::ComputeShaderInterface
getExecutionGroup() constne::ComputeShaderInterface
getExecutionStage() constne::ComputeShaderInterface
getPipeline() constne::ComputeShaderInterfaceprotected
getRenderer()ne::ComputeShaderInterfaceprotected
getThreadGroupCountX() constne::ComputeShaderInterfaceinlineprotected
getThreadGroupCountY() constne::ComputeShaderInterfaceinlineprotected
getThreadGroupCountZ() constne::ComputeShaderInterfaceinlineprotected
getUsedPipeline() constne::ComputeShaderInterface
GlslComputeShaderInterface()=delete (defined in ne::GlslComputeShaderInterface)ne::GlslComputeShaderInterface
GlslComputeShaderInterface(const GlslComputeShaderInterface &)=delete (defined in ne::GlslComputeShaderInterface)ne::GlslComputeShaderInterface
GlslComputeShaderInterface(Renderer *pRenderer, const std::string &sComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup)ne::GlslComputeShaderInterfaceprotected
iThreadGroupCountXne::ComputeShaderInterfaceprivate
iThreadGroupCountYne::ComputeShaderInterfaceprivate
iThreadGroupCountZne::ComputeShaderInterfaceprivate
operator=(const GlslComputeShaderInterface &)=delete (defined in ne::GlslComputeShaderInterface)ne::GlslComputeShaderInterface
operator=(const ComputeShaderInterface &)=delete (defined in ne::ComputeShaderInterface)ne::ComputeShaderInterface
pPipelinene::ComputeShaderInterfaceprivate
pRendererne::ComputeShaderInterfaceprivate
sComputeShaderNamene::ComputeShaderInterfaceprivate
submitForExecution(unsigned int iThreadGroupCountX, unsigned int iThreadGroupCountY, unsigned int iThreadGroupCountZ)ne::ComputeShaderInterface
~ComputeShaderInterface() (defined in ne::ComputeShaderInterface)ne::ComputeShaderInterfacevirtual
~GlslComputeShaderInterface() override=default (defined in ne::GlslComputeShaderInterface)ne::GlslComputeShaderInterfacevirtual
+
+ + + + diff --git a/classne_1_1GlslComputeShaderInterface.html b/classne_1_1GlslComputeShaderInterface.html new file mode 100644 index 000000000..fbdde8dd1 --- /dev/null +++ b/classne_1_1GlslComputeShaderInterface.html @@ -0,0 +1,354 @@ + + + + + + + +Nameless Engine: ne::GlslComputeShaderInterface Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::GlslComputeShaderInterface Class Reference
+
+
+ +

#include <GlslComputeShaderInterface.h>

+
+Inheritance diagram for ne::GlslComputeShaderInterface:
+
+
+ + +ne::ComputeShaderInterface + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

GlslComputeShaderInterface (const GlslComputeShaderInterface &)=delete
 
+GlslComputeShaderInterfaceoperator= (const GlslComputeShaderInterface &)=delete
 
virtual std::optional< ErrorbindResource (GpuResource *pResource, const std::string &sShaderResourceName, ComputeResourceUsage usage, bool bUpdateOnlyCurrentFrameResourceDescriptors=false) override
 
void dispatchOnGraphicsQueue (VkCommandBuffer pCommandBuffer)
 
- Public Member Functions inherited from ne::ComputeShaderInterface
ComputeShaderInterface (const ComputeShaderInterface &)=delete
 
+ComputeShaderInterfaceoperator= (const ComputeShaderInterface &)=delete
 
virtual std::optional< ErrorbindResource (GpuResource *pResource, const std::string &sShaderResourceName, ComputeResourceUsage usage, bool bUpdateOnlyCurrentFrameResourceDescriptors=false)=0
 
void submitForExecution (unsigned int iThreadGroupCountX, unsigned int iThreadGroupCountY, unsigned int iThreadGroupCountZ)
 
ComputeExecutionGroup getExecutionGroup () const
 
ComputeExecutionStage getExecutionStage () const
 
std::string getComputeShaderName () const
 
PipelinegetUsedPipeline () const
 
+ + + + + + + + + + + + + + + + +

+Protected Member Functions

 GlslComputeShaderInterface (Renderer *pRenderer, const std::string &sComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup)
 
- Protected Member Functions inherited from ne::ComputeShaderInterface
 ComputeShaderInterface (Renderer *pRenderer, const std::string &sComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup)
 
RenderergetRenderer ()
 
PipelinegetPipeline () const
 
unsigned int getThreadGroupCountX () const
 
unsigned int getThreadGroupCountY () const
 
unsigned int getThreadGroupCountZ () const
 
+ + + +

+Friends

+class ComputeShaderInterface
 
+ + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from ne::ComputeShaderInterface
static std::variant< std::unique_ptr< ComputeShaderInterface >, ErrorcreateUsingGraphicsQueue (Renderer *pRenderer, const std::string &sCompiledComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup=ComputeExecutionGroup::FIRST)
 
- Static Protected Member Functions inherited from ne::ComputeShaderInterface
static std::variant< std::unique_ptr< ComputeShaderInterface >, ErrorcreateRenderSpecificInterface (Renderer *pRenderer, const std::string &sComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup)
 
static std::unique_ptr< ComputeShaderInterfacecreatePartiallyInitializedRenderSpecificInterface (Renderer *pRenderer, const std::string &sComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup)
 
+

Detailed Description

+

Interface to configure and run a GLSL compute shader.

+

Constructor & Destructor Documentation

+ +

◆ GlslComputeShaderInterface()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ne::GlslComputeShaderInterface::GlslComputeShaderInterface (RendererpRenderer,
const std::string & sComputeShaderName,
ComputeExecutionStage executionStage,
ComputeExecutionGroup executionGroup 
)
+
+protected
+
+

Initializes the interface.

+
Parameters
+ + + + + +
pRendererUsed renderer.
sComputeShaderNameName of the compiled compute shader to use.
executionStageDetermines when the shader will be executed.
executionGroupDetermines execution group of this shader where shaders of the first group will be executed before shaders from the second group and so on.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ bindResource()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::GlslComputeShaderInterface::bindResource (GpuResourcepResource,
const std::string & sShaderResourceName,
ComputeResourceUsage usage,
bool bUpdateOnlyCurrentFrameResourceDescriptors = false 
)
+
+overridevirtual
+
+

Binds the specified resource to be available in compute shaders.

+
Warning
This overload is used in cases where you cannot transfer resource ownership to the compute shader interface. In this case you must guarantee that the resource will not be deleted while this compute shader interface exists and while the GPU is processing this compute shader.
+
Parameters
+ + + + + +
pResourceResource to bind to compute shader.
sShaderResourceNameResource name from shader.
usageResource usage.
bUpdateOnlyCurrentFrameResourceDescriptorsSpecify true if you guarantee that you will bind a different GPU resource on the next frame, specify false if you are not sure if you will rebind the resource on the next frame or not. When true is specified only descriptors of the current frame resource will be updated (because descriptors of other frame resources might be in use and it's invalid to update them), when false descriptors of all frame resources will be updated.
+
+
+
Returns
Error if something went wrong.
+ +

Implements ne::ComputeShaderInterface.

+ +
+
+ +

◆ dispatchOnGraphicsQueue()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::GlslComputeShaderInterface::dispatchOnGraphicsQueue (VkCommandBuffer pCommandBuffer)
+
+inline
+
+

Adds a dispatch command to the specified command buffer to execute this compute shader.

+
Warning
Expects that pipeline and descriptor layout are set.
+
Parameters
+ + +
pCommandBufferCommand buffer to add dispatch command to.
+
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classne_1_1GlslComputeShaderInterface.js b/classne_1_1GlslComputeShaderInterface.js new file mode 100644 index 000000000..4af33c913 --- /dev/null +++ b/classne_1_1GlslComputeShaderInterface.js @@ -0,0 +1,6 @@ +var classne_1_1GlslComputeShaderInterface = +[ + [ "GlslComputeShaderInterface", "classne_1_1GlslComputeShaderInterface.html#a3c7b25312c0eeea456770d0f7fc1dac1", null ], + [ "bindResource", "classne_1_1GlslComputeShaderInterface.html#afc2c48e069ae78bf4487dd37a1ddc955", null ], + [ "dispatchOnGraphicsQueue", "classne_1_1GlslComputeShaderInterface.html#a80f1d2210e76d4cd0f984b7aac02d405", null ] +]; \ No newline at end of file diff --git a/classne_1_1GlslComputeShaderInterface.png b/classne_1_1GlslComputeShaderInterface.png new file mode 100644 index 0000000000000000000000000000000000000000..15eb56c3ec8678e18590b0ae23daf09d551251b7 GIT binary patch literal 790 zcmeAS@N?(olHy`uVBq!ia0vp^2Z1<%gBeIpU-r-gNJ$6ygt-3y{~ySF@#br3|Doj; z2ATyD)6cv(aNqz?Jb2RO6+k)8k|4ie1|S~{%$a6iVPIfd=;`7ZQo;Ck?(4p{3LLG| zO>RE?JO9U*rmhut-_G>u5LVlKYgI!{+>QE;xwp4%*&ryWyGB7l=~JkHfZ)$phK{%X zcXZ?})j6{7yP@sYOkepk-`gJad^26*nO^_L{@~_6?JS-zzAjp=9~pJhujljgi?`S8 z<=kd}J}~pC#nJVA9ukjj4@e2dob;628W?bHrpnBT8&xbh({g4>q&e(-8K@NW|FG?g zx7JL?>HZ2lT3+){UDQ9Qw+@ZK#XmKF-Lzfd>iRbQcJwO`J)>Q7wmg5B;mLYo z>k7|+>x-;b&sk@_wWH(3#(816N{j9X3as&WaCx#C?%yo+8{2ZDBN;xd{>5{3kxsUJDtOs=yjU9yo_U_AlG-qH#lh&cE!t1 zFgUimMVBR9&eV7Fm&4~a*Pg4YEfLiEopI-eiQ$=sqRWfl%H3EfS6wr`?KAiFS?#<_J8m);^PgecbDOz%a{Ky! z9AB7^#f9(M9eicZg|do*)G3MWCO4Iz9qE0x{KZGx6<-&}R2Fx=df#ZKTdE>18S8iJ z^MvGCQCCz}WKZ-=jq08;vtDhv{C9;P!7OLa@F4=BtZ7P6ROEk#(|6~29X#>(7BB@f Nc)I$ztaD0e0symRbj<(& literal 0 HcmV?d00001 diff --git a/classne_1_1GlslGlobalShaderResourceBinding-members.html b/classne_1_1GlslGlobalShaderResourceBinding-members.html new file mode 100644 index 000000000..ee5018b45 --- /dev/null +++ b/classne_1_1GlslGlobalShaderResourceBinding-members.html @@ -0,0 +1,128 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::GlslGlobalShaderResourceBinding Member List
+
+
+ +

This is the complete list of members for ne::GlslGlobalShaderResourceBinding, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
bindToPipelines(Pipeline *pSpecificPipeline) overridene::GlslGlobalShaderResourceBindingprotectedvirtual
create(Renderer *pRenderer, GlobalShaderResourceBindingManager *pManager, const std::string &sShaderResourceName, const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> &vResourcesToBind)ne::GlobalShaderResourceBindingprotectedstatic
getBindedResources() constne::GlobalShaderResourceBindingprotected
getShaderResourceName() constne::GlobalShaderResourceBindingprotected
GlobalShaderResourceBinding (defined in ne::GlslGlobalShaderResourceBinding)ne::GlslGlobalShaderResourceBindingfriend
GlobalShaderResourceBinding(const GlobalShaderResourceBinding &)=delete (defined in ne::GlobalShaderResourceBinding)ne::GlobalShaderResourceBinding
GlobalShaderResourceBinding(GlobalShaderResourceBinding &&)=delete (defined in ne::GlobalShaderResourceBinding)ne::GlobalShaderResourceBinding
ne::GlobalShaderResourceBinding::GlobalShaderResourceBinding(GlobalShaderResourceBindingManager *pManager, const std::string &sShaderResourceName, const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> &vResourcesToBind)ne::GlobalShaderResourceBindingprotected
GlslGlobalShaderResourceBinding()=delete (defined in ne::GlslGlobalShaderResourceBinding)ne::GlslGlobalShaderResourceBinding
GlslGlobalShaderResourceBinding(GlobalShaderResourceBindingManager *pManager, const std::string &sShaderResourceName, const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> &vResourcesToBind)ne::GlslGlobalShaderResourceBindingprotected
operator=(const GlobalShaderResourceBinding &)=delete (defined in ne::GlobalShaderResourceBinding)ne::GlobalShaderResourceBinding
operator=(GlobalShaderResourceBinding &&)=delete (defined in ne::GlobalShaderResourceBinding)ne::GlobalShaderResourceBinding
pManagerne::GlobalShaderResourceBindingprivate
sShaderResourceNamene::GlobalShaderResourceBindingprivate
unregisterBinding()ne::GlobalShaderResourceBindingprotected
vBindedResourcesne::GlobalShaderResourceBindingprivate
~GlobalShaderResourceBinding()=default (defined in ne::GlobalShaderResourceBinding)ne::GlobalShaderResourceBindingvirtual
~GlslGlobalShaderResourceBinding() override (defined in ne::GlslGlobalShaderResourceBinding)ne::GlslGlobalShaderResourceBindingvirtual
+
+ + + + diff --git a/classne_1_1GlslGlobalShaderResourceBinding.html b/classne_1_1GlslGlobalShaderResourceBinding.html new file mode 100644 index 000000000..2b70fa968 --- /dev/null +++ b/classne_1_1GlslGlobalShaderResourceBinding.html @@ -0,0 +1,262 @@ + + + + + + + +Nameless Engine: ne::GlslGlobalShaderResourceBinding Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::GlslGlobalShaderResourceBinding Class Reference
+
+
+ +

#include <GlslGlobalShaderResourceBinding.h>

+
+Inheritance diagram for ne::GlslGlobalShaderResourceBinding:
+
+
+ + +ne::GlobalShaderResourceBinding + +
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

 GlslGlobalShaderResourceBinding (GlobalShaderResourceBindingManager *pManager, const std::string &sShaderResourceName, const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> &vResourcesToBind)
 
virtual std::optional< ErrorbindToPipelines (Pipeline *pSpecificPipeline) override
 
- Protected Member Functions inherited from ne::GlobalShaderResourceBinding
 GlobalShaderResourceBinding (GlobalShaderResourceBindingManager *pManager, const std::string &sShaderResourceName, const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> &vResourcesToBind)
 
virtual std::optional< ErrorbindToPipelines (Pipeline *pSpecificPipeline)=0
 
void unregisterBinding ()
 
const std::string & getShaderResourceName () const
 
std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> getBindedResources () const
 
+ + + +

+Friends

+class GlobalShaderResourceBinding
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from ne::GlobalShaderResourceBinding
GlobalShaderResourceBinding (const GlobalShaderResourceBinding &)=delete
 
+GlobalShaderResourceBindingoperator= (const GlobalShaderResourceBinding &)=delete
 
GlobalShaderResourceBinding (GlobalShaderResourceBinding &&)=delete
 
+GlobalShaderResourceBindingoperator= (GlobalShaderResourceBinding &&)=delete
 
- Static Protected Member Functions inherited from ne::GlobalShaderResourceBinding
static std::optional< Errorcreate (Renderer *pRenderer, GlobalShaderResourceBindingManager *pManager, const std::string &sShaderResourceName, const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> &vResourcesToBind)
 
+

Detailed Description

+

Used for binding GPU resources as "global" GLSL shader resources (that don't change on a per-object basis).

+

Constructor & Destructor Documentation

+ +

◆ GlslGlobalShaderResourceBinding()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ne::GlslGlobalShaderResourceBinding::GlslGlobalShaderResourceBinding (GlobalShaderResourceBindingManagerpManager,
const std::string & sShaderResourceName,
const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> & vResourcesToBind 
)
+
+protected
+
+

Initializes a new object, does not trigger bindToPipelines.

+
Parameters
+ + + + +
pManagerManager that creates this object.
sShaderResourceNameName of the shader resource (name from shader code) to bind the resources.
vResourcesToBindResources to bind to pipelines. This can be the same resource for all frame resources (for example a texture) or a separate resource per frame (can be used for some CPU-write resources).
+
+
+ +
+
+

Member Function Documentation

+ +

◆ bindToPipelines()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::GlslGlobalShaderResourceBinding::bindToPipelines (PipelinepSpecificPipeline)
+
+overrideprotectedvirtual
+
+

Binds the resource to a specific pipeline or all graphics pipelines that use it.

+
Parameters
+ + +
pSpecificPipelinenullptr if need to bind to all graphics pipelines, otherwise a valid pointer to bind only to that pipeline.
+
+
+
Returns
Error if something went wrong.
+ +

Implements ne::GlobalShaderResourceBinding.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/glsl/resource/binding/global/GlslGlobalShaderResourceBinding.h
  • +
  • src/engine_lib/private/shader/glsl/resource/binding/global/GlslGlobalShaderResourceBinding.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1GlslGlobalShaderResourceBinding.js b/classne_1_1GlslGlobalShaderResourceBinding.js new file mode 100644 index 000000000..303d02616 --- /dev/null +++ b/classne_1_1GlslGlobalShaderResourceBinding.js @@ -0,0 +1,5 @@ +var classne_1_1GlslGlobalShaderResourceBinding = +[ + [ "GlslGlobalShaderResourceBinding", "classne_1_1GlslGlobalShaderResourceBinding.html#a480d229a4d6dc5189af68187e311a312", null ], + [ "bindToPipelines", "classne_1_1GlslGlobalShaderResourceBinding.html#a74baa2557d77b9f62b341c22d59dce2e", null ] +]; \ No newline at end of file diff --git a/classne_1_1GlslGlobalShaderResourceBinding.png b/classne_1_1GlslGlobalShaderResourceBinding.png new file mode 100644 index 0000000000000000000000000000000000000000..c685b944ff174fa0fb3d4c4b3dc3ae067e47a6fa GIT binary patch literal 858 zcmeAS@N?(olHy`uVBq!ia0vp^kAOIUgBeH~pNX6eq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB)lFzsbG9N_kG?H1D+%5 z%^^Sk&i~PHR_!1A>8)2iPcBUogvBW>Y&fUoqvDl-!HLwbFz&4?ebS2Ud+E@VC%HYAxK{GQMGjBmBdx0$I8=8eKzgC zzxB0=Q&PJBwS~KkxK+MR47h<~ceT6myjyWiQCJ3ETuL;hD*hT`nHBkR|{lzi@fhci9>55K^5 z7uJT4TLl;sN_1TqBx1P*8QiWru{2yHN+>=|bLkmf5y6Qww+gtr05ysTO2*0y^f#8w zxmCMu#kzat2UW~%-~Rh2yT813$I8{!N5m&O^K^?Zyfi`1Fj81>XZXI?r+l4te(zqH zuaQ?Js&;to>ZUHqG_j^qy)I#2zcu4|@2?%s z^)X)`sV;iy+CJmUqV;8$x;?||Ubvcz_FI2nxXaZ(@b-n0`-!|+YOAFFpLEH6mUgmq zL)G(z9CCp!DMr41GrlhBIN|f^zeL)<0C6BwC8|S7X>qo@&eAC>zp@MK>^P_FR9*zk O1q`09elF{r5}E+X2$j_U literal 0 HcmV?d00001 diff --git a/classne_1_1GlslShader-members.html b/classne_1_1GlslShader-members.html new file mode 100644 index 000000000..37fc99678 --- /dev/null +++ b/classne_1_1GlslShader-members.html @@ -0,0 +1,151 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::GlslShader Member List
+
+
+ +

This is the complete list of members for ne::GlslShader, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
checkCachedAdditionalCompilationResultsInfo(ConfigManager &cacheMetadataConfigManager, std::optional< ShaderCacheInvalidationReason > &cacheInvalidationReason) overridene::GlslShaderprotectedvirtual
compileRenderDependentShader(Renderer *pRenderer, const std::filesystem::path &shaderCacheDirectory, const std::string &sConfiguration, const ShaderDescription &shaderDescription)ne::Shaderprivatestatic
compileShader(Renderer *pRenderer, const std::filesystem::path &cacheDirectory, const std::string &sConfiguration, const ShaderDescription &shaderDescription)ne::GlslShaderstatic
compileShaderToBytecode(const ShaderDescription &shaderDescription)ne::GlslShaderstatic
convertShaderTypeToShadercShaderKind(ShaderType shaderType)ne::GlslShaderprivatestatic
createFromCache(Renderer *pRenderer, const std::filesystem::path &pathToCompiledShaderBytecode, ShaderDescription &shaderDescription, const std::string &sShaderNameWithoutConfiguration, std::optional< ShaderCacheInvalidationReason > &cacheInvalidationReason)ne::Shaderstatic
createRenderDependentShaderFromCache(Renderer *pRenderer, const std::filesystem::path &pathToSourceShaderFile, const std::filesystem::path &pathToCompiledShaderBytecode, const std::string &sShaderName, ShaderType shaderType, std::optional< VertexFormat > vertexFormat)ne::Shaderprivatestatic
getCompiledBytecode()ne::GlslShader
getCurrentAmountOfShadersInMemory()ne::Shaderstatic
getDescriptorSetLayoutInfo()ne::GlslShader
getFrameConstantsShaderResourceName()ne::Shaderinlinestatic
getPathToCompiledShader()ne::Shaderprotected
getRenderer() constne::Shaderprotected
getShaderName() constne::Shader
getShaderType() constne::Shader
getVertexFormat() constne::Shader
GlslShader(Renderer *pRenderer, std::filesystem::path pathToCompiledShader, const std::string &sShaderName, ShaderType shaderType, const std::optional< VertexFormat > &vertexFormat)ne::GlslShader
GlslShader()=delete (defined in ne::GlslShader)ne::GlslShader
GlslShader(const GlslShader &)=delete (defined in ne::GlslShader)ne::GlslShader
loadShaderDataFromDiskIfNotLoaded()ne::GlslShaderprivate
mtxDescriptorSetLayoutInfone::GlslShaderprivate
mtxSpirvBytecodene::GlslShaderprivate
notifyShaderBytecodeLoadedIntoMemory()ne::Shaderprotectedstatic
notifyShaderBytecodeReleasedFromMemory()ne::Shaderprotectedstatic
operator=(const GlslShader &)=delete (defined in ne::GlslShader)ne::GlslShader
operator=(const Shader &)=delete (defined in ne::Shader)ne::Shader
optionalVertexFormatne::Shaderprivate
pathToCompiledShaderne::Shaderprivate
pFrameConstantBufferNamene::Shaderprivatestatic
pRendererne::Shaderprivate
releaseShaderDataFromMemoryIfLoaded() overridene::GlslShadervirtual
saveAdditionalCompilationResultsInfo(ConfigManager &cacheMetadataConfigManager) overridene::GlslShaderprotectedvirtual
sCompiledBytecodeHashKeyNamene::Shaderinlineprivatestatic
sDescriptorSetLayoutSectionNamene::GlslShaderinlineprivatestatic
Shader()=delete (defined in ne::Shader)ne::Shader
Shader(const Shader &)=delete (defined in ne::Shader)ne::Shader
Shader(Renderer *pRenderer, std::filesystem::path pathToCompiledShader, const std::string &sShaderName, ShaderType shaderType, std::optional< VertexFormat > vertexFormat)ne::Shaderprotected
shaderTypene::Shaderprivate
sShaderNamene::Shaderprivate
~GlslShader() override=default (defined in ne::GlslShader)ne::GlslShadervirtual
~Shader()=default (defined in ne::Shader)ne::Shadervirtual
+
+ + + + diff --git a/classne_1_1GlslShader.html b/classne_1_1GlslShader.html new file mode 100644 index 000000000..67e47f7e2 --- /dev/null +++ b/classne_1_1GlslShader.html @@ -0,0 +1,666 @@ + + + + + + + +Nameless Engine: ne::GlslShader Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <GlslShader.h>

+
+Inheritance diagram for ne::GlslShader:
+
+
+ + +ne::Shader + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 GlslShader (Renderer *pRenderer, std::filesystem::path pathToCompiledShader, const std::string &sShaderName, ShaderType shaderType, const std::optional< VertexFormat > &vertexFormat)
 
GlslShader (const GlslShader &)=delete
 
+GlslShaderoperator= (const GlslShader &)=delete
 
std::variant< std::pair< std::recursive_mutex, std::vector< char > > *, ErrorgetCompiledBytecode ()
 
std::pair< std::mutex, std::optional< DescriptorSetLayoutGenerator::Collected > > * getDescriptorSetLayoutInfo ()
 
virtual bool releaseShaderDataFromMemoryIfLoaded () override
 
- Public Member Functions inherited from ne::Shader
Shader (const Shader &)=delete
 
+Shaderoperator= (const Shader &)=delete
 
std::string getShaderName () const
 
ShaderType getShaderType () const
 
std::optional< VertexFormat > getVertexFormat () const
 
virtual bool releaseShaderDataFromMemoryIfLoaded ()=0
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

static std::variant< std::vector< uint32_t >, std::string, ErrorcompileShaderToBytecode (const ShaderDescription &shaderDescription)
 
static std::variant< std::shared_ptr< Shader >, std::string, ErrorcompileShader (Renderer *pRenderer, const std::filesystem::path &cacheDirectory, const std::string &sConfiguration, const ShaderDescription &shaderDescription)
 
- Static Public Member Functions inherited from ne::Shader
static constexpr const char * getFrameConstantsShaderResourceName ()
 
static size_t getCurrentAmountOfShadersInMemory ()
 
static std::variant< std::shared_ptr< Shader >, std::string, ErrorcompileShader (Renderer *pRenderer, const std::filesystem::path &shaderCacheDirectory, const std::string &sConfiguration, const ShaderDescription &shaderDescription)
 
static std::variant< std::shared_ptr< Shader >, ErrorcreateFromCache (Renderer *pRenderer, const std::filesystem::path &pathToCompiledShaderBytecode, ShaderDescription &shaderDescription, const std::string &sShaderNameWithoutConfiguration, std::optional< ShaderCacheInvalidationReason > &cacheInvalidationReason)
 
+ + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual std::optional< ErrorsaveAdditionalCompilationResultsInfo (ConfigManager &cacheMetadataConfigManager) override
 
virtual std::optional< ErrorcheckCachedAdditionalCompilationResultsInfo (ConfigManager &cacheMetadataConfigManager, std::optional< ShaderCacheInvalidationReason > &cacheInvalidationReason) override
 
- Protected Member Functions inherited from ne::Shader
 Shader (Renderer *pRenderer, std::filesystem::path pathToCompiledShader, const std::string &sShaderName, ShaderType shaderType, std::optional< VertexFormat > vertexFormat)
 
virtual std::optional< ErrorsaveAdditionalCompilationResultsInfo (ConfigManager &cacheMetadataConfigManager)
 
virtual std::optional< ErrorcheckCachedAdditionalCompilationResultsInfo (ConfigManager &cacheMetadataConfigManager, std::optional< ShaderCacheInvalidationReason > &cacheInvalidationReason)
 
std::variant< std::filesystem::path, ErrorgetPathToCompiledShader ()
 
RenderergetRenderer () const
 
+ + + +

+Private Member Functions

std::optional< ErrorloadShaderDataFromDiskIfNotLoaded ()
 
+ + + +

+Static Private Member Functions

static shaderc_shader_kind convertShaderTypeToShadercShaderKind (ShaderType shaderType)
 
+ + + + + +

+Private Attributes

std::pair< std::recursive_mutex, std::vector< char > > mtxSpirvBytecode
 
std::pair< std::mutex, std::optional< DescriptorSetLayoutGenerator::Collected > > mtxDescriptorSetLayoutInfo
 
+ + + +

+Static Private Attributes

static const auto sDescriptorSetLayoutSectionName = "Descriptor Set Layout"
 
+ + + + + + +

+Additional Inherited Members

- Static Protected Member Functions inherited from ne::Shader
static void notifyShaderBytecodeLoadedIntoMemory ()
 
static void notifyShaderBytecodeReleasedFromMemory ()
 
+

Detailed Description

+

Represents a compiled GLSL shader.

+

Constructor & Destructor Documentation

+ +

◆ GlslShader()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ne::GlslShader::GlslShader (RendererpRenderer,
std::filesystem::path pathToCompiledShader,
const std::string & sShaderName,
ShaderType shaderType,
const std::optional< VertexFormat > & vertexFormat 
)
+
+

Constructor. Used to create shader using cache.

+
Parameters
+ + + + + + +
pRendererUsed renderer.
pathToCompiledShaderPath to compiled shader bytecode on disk.
sShaderNameUnique name of this shader.
shaderTypeType of this shader.
vertexFormatVertex format that this shader uses (can be empty if not applicable, for example if this is a compute shader).
+
+
+ +
+
+

Member Function Documentation

+ +

◆ checkCachedAdditionalCompilationResultsInfo()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::GlslShader::checkCachedAdditionalCompilationResultsInfo (ConfigManagercacheMetadataConfigManager,
std::optional< ShaderCacheInvalidationReason > & cacheInvalidationReason 
)
+
+overrideprotectedvirtual
+
+

Used to check cached data of shader language specific (additional) shader compilation results (such as reflection data, i.e. if there are some other compilation results besides compiled shader bytecode which is automatically hashed and checked) whether its valid or not.

+
Parameters
+ + + +
cacheMetadataConfigManagerConfig manager to write the data to.
cacheInvalidationReasonWill be not empty if cache was invalidated (i.e. cache can't be used).
+
+
+
Returns
Error if some internal error occurred.
+ +

Reimplemented from ne::Shader.

+ +
+
+ +

◆ compileShader()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::shared_ptr< Shader >, std::string, Error > ne::GlslShader::compileShader (RendererpRenderer,
const std::filesystem::path & cacheDirectory,
const std::string & sConfiguration,
const ShaderDescriptionshaderDescription 
)
+
+static
+
+

Compiles a shader.

+
Parameters
+ + + + + +
pRendererVulkan renderer.
cacheDirectoryDirectory to store this shader's cache, for example: ".../shader_cache/engine.default".
sConfigurationShader configuration text that will be added to the name.
shaderDescriptionDescription that describes the shader and how the shader should be compiled.
+
+
+
Returns
One of the three values: compiled shader, string containing shader compilation error/warning or an internal error.
+ +
+
+ +

◆ compileShaderToBytecode()

+ +
+
+ + + + + +
+ + + + + + + + +
static std::variant< std::vector< uint32_t >, std::string, Error > ne::GlslShader::compileShaderToBytecode (const ShaderDescriptionshaderDescription)
+
+static
+
+

Compiles the specified shader file to bytecode.

+
Parameters
+ + +
shaderDescriptionDescribes the shader and how the shader should be compiled.
+
+
+
Returns
One of the three values: compiled bytecode, string containing shader compilation error/warning or an internal error.
+ +
+
+ +

◆ convertShaderTypeToShadercShaderKind()

+ +
+
+ + + + + +
+ + + + + + + + +
shaderc_shader_kind ne::GlslShader::convertShaderTypeToShadercShaderKind (ShaderType shaderType)
+
+staticprivate
+
+

Converts shader type to a shader kind type used by shaderc library.

+
Parameters
+ + +
shaderTypeShader type to convert.
+
+
+
Returns
Shader kind.
+ +
+
+ +

◆ getCompiledBytecode()

+ +
+
+ + + + + + + +
std::variant< std::pair< std::recursive_mutex, std::vector< char > > *, Error > ne::GlslShader::getCompiledBytecode ()
+
+

Loads compiled SPIR-V bytecode from disk and stores it in memory. Subsequent calls to this function will just return the bytecode pointer (no disk loading will happen).

+
Remarks
Returned pointer will only be valid while this object is alive.
+
Returns
Error if something went wrong, otherwise a mutex to use while accessing the bytecode and an array of bytes.
+ +
+
+ +

◆ getDescriptorSetLayoutInfo()

+ +
+
+ + + + + + + +
std::pair< std::mutex, std::optional< DescriptorSetLayoutGenerator::Collected > > * ne::GlslShader::getDescriptorSetLayoutInfo ()
+
+

Returns information about descriptor layout that can be used for this shader.

+
Returns
Empty if descriptor layout information was not collected yet, use getCompiledBytecode to collect and load everything, otherwise descriptor layout info.
+ +
+
+ +

◆ loadShaderDataFromDiskIfNotLoaded()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::GlslShader::loadShaderDataFromDiskIfNotLoaded ()
+
+private
+
+

Loads shader data (bytecode, descriptor set layout info, etc.) from disk cache if it's not loaded yet.

+
Returns
Error if something went wrong.
+ +
+
+ +

◆ releaseShaderDataFromMemoryIfLoaded()

+ +
+
+ + + + + +
+ + + + + + + +
bool ne::GlslShader::releaseShaderDataFromMemoryIfLoaded ()
+
+overridevirtual
+
+

Releases underlying shader data (bytecode, root signature, etc.) from memory (this object will not be deleted) if the shader data was loaded into memory. Next time this shader will be needed the data will be loaded from disk.

+
Returns
false if was released from memory, true if was not loaded in memory previously.
+ +

Implements ne::Shader.

+ +
+
+ +

◆ saveAdditionalCompilationResultsInfo()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::GlslShader::saveAdditionalCompilationResultsInfo (ConfigManagercacheMetadataConfigManager)
+
+overrideprotectedvirtual
+
+

Used to save data of shader language specific (additional) shader compilation results (such as reflection data, i.e. if there are some other compilation results besides compiled shader bytecode which is automatically hashed and checked) to later check them in checkCachedAdditionalCompilationResultsInfo.

+
Parameters
+ + +
cacheMetadataConfigManagerConfig manager to write the data to.
+
+
+
Returns
Error if something went wrong.
+ +

Reimplemented from ne::Shader.

+ +
+
+

Member Data Documentation

+ +

◆ mtxDescriptorSetLayoutInfo

+ +
+
+ + + + + +
+ + + + +
std::pair<std::mutex, std::optional<DescriptorSetLayoutGenerator::Collected> > ne::GlslShader::mtxDescriptorSetLayoutInfo
+
+private
+
+

Contains information used to create descriptor set layout.

+
Remarks
Might not be calculated yet, see loadShaderDataFromDiskIfNotLoaded for collecting this information.
+ +
+
+ +

◆ mtxSpirvBytecode

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, std::vector<char> > ne::GlslShader::mtxSpirvBytecode
+
+private
+
+

SPIR-V bytecode (array of bytes) of the compiled shader.

+ +
+
+ +

◆ sDescriptorSetLayoutSectionName

+ +
+
+ + + + + +
+ + + + +
const auto ne::GlslShader::sDescriptorSetLayoutSectionName = "Descriptor Set Layout"
+
+inlinestaticprivate
+
+

Name of the section used to store descriptor set layout info.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/glsl/GlslShader.h
  • +
  • src/engine_lib/private/shader/glsl/GlslShader.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1GlslShader.js b/classne_1_1GlslShader.js new file mode 100644 index 000000000..ba1cbb801 --- /dev/null +++ b/classne_1_1GlslShader.js @@ -0,0 +1,16 @@ +var classne_1_1GlslShader = +[ + [ "GlslShader", "classne_1_1GlslShader.html#a2ae5d270a554619cc5b4378c912b8d8b", null ], + [ "checkCachedAdditionalCompilationResultsInfo", "classne_1_1GlslShader.html#a9988459010db9a0541eb67e33c619486", null ], + [ "compileShader", "classne_1_1GlslShader.html#a2439b253b962cb8892e2d1f5785bc427", null ], + [ "compileShaderToBytecode", "classne_1_1GlslShader.html#ab52ebda25eaf279d3f62fca544879db5", null ], + [ "convertShaderTypeToShadercShaderKind", "classne_1_1GlslShader.html#a36dfc0390f6b430dfdc693f88d9a86d9", null ], + [ "getCompiledBytecode", "classne_1_1GlslShader.html#a01e870cc4e2b610e9984e68dcae59049", null ], + [ "getDescriptorSetLayoutInfo", "classne_1_1GlslShader.html#a09f1eb22fc3973a9d1dfdb19233b613e", null ], + [ "loadShaderDataFromDiskIfNotLoaded", "classne_1_1GlslShader.html#aaca9528861ac6de8bdcd94980f939686", null ], + [ "releaseShaderDataFromMemoryIfLoaded", "classne_1_1GlslShader.html#aa755cdf70f58655629ff99038ffbd8bc", null ], + [ "saveAdditionalCompilationResultsInfo", "classne_1_1GlslShader.html#a725410d50f91868d6f853d1287eac9a6", null ], + [ "mtxDescriptorSetLayoutInfo", "classne_1_1GlslShader.html#a45e33212794299c2b2378df1e292d89f", null ], + [ "mtxSpirvBytecode", "classne_1_1GlslShader.html#a5a4a945cec000f32228a1f3ca46fe6c3", null ], + [ "sDescriptorSetLayoutSectionName", "classne_1_1GlslShader.html#af980f61c94377378a09575c3cc40eafa", null ] +]; \ No newline at end of file diff --git a/classne_1_1GlslShader.png b/classne_1_1GlslShader.png new file mode 100644 index 0000000000000000000000000000000000000000..6baebfe6ca76afc08d6937e088fadd27768d7663 GIT binary patch literal 493 zcmeAS@N?(olHy`uVBq!ia0vp^aX=iv!3-pqvl;0CDd_;85ZC|z{{xvX-h3_XKeXJ! zK(jz%`k5C84jcfA2T!`Z0w~8>666=m0OW&#In(Sb3=E7Fo-U3d6^w7^=H?$(;AuJE z9`f`5|3?#m_{l4bx|3`ByZ}$tm5lKREtudhEmKX?w*UuXH`PE!nhYURu83yO7;4{buf&|G3(G z?n93&OKffKA9i26cTSVu{)jmO@3Z_T#To9q-@bS2x^K5v9lU#1(R2BqXA@Eu9GRT5 zp#S*vpi@SS2dsB79balDLxoFic zug>sL-Y>gyQ7~y_QeR{_WnD>9a!5mw(ImtbU`ppzrV1T_0QW zC$cB|Rn4e=B2uuXt^e%3s@-0*7xQiUTC&{YNXz@)%?9yvgg2D`5|MlKJnrTdf1pQl zuFHv~pN|T8`+wH!Ecpl3ugiUQ3#_wv_SfB^dH3we_hmw_wtMYal?C)ocZbep@x_w9 V_inv + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::GlslShaderCacheManager Member List
+
+
+ +

This is the complete list of members for ne::GlslShaderCacheManager, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
create(Renderer *pRenderer)ne::ShaderCacheManagerprivatestatic
createNewShaderCache()ne::ShaderCacheManagerprivate
GlslShaderCacheManager(const GlslShaderCacheManager &)=delete (defined in ne::GlslShaderCacheManager)ne::GlslShaderCacheManager
GlslShaderCacheManager(Renderer *pRenderer)ne::GlslShaderCacheManagerprivate
isGlobalShaderCacheOutdated(const ConfigManager &cacheConfig)ne::ShaderCacheManagerprivate
isLanguageSpecificGlobalCacheOutdated(const ConfigManager &cacheConfig) overridene::GlslShaderCacheManagerprotectedvirtual
operator=(const GlslShaderCacheManager &)=delete (defined in ne::GlslShaderCacheManager)ne::GlslShaderCacheManager
operator=(const ShaderCacheManager &)=delete (defined in ne::ShaderCacheManager)ne::ShaderCacheManager
pRendererne::ShaderCacheManagerprivate
refreshShaderCache()ne::ShaderCacheManager
sGlobalShaderCacheInfoFileNamene::ShaderCacheManagerprivatestatic
ShaderCacheManager (defined in ne::GlslShaderCacheManager)ne::GlslShaderCacheManagerfriend
ShaderCacheManager(const ShaderCacheManager &)=delete (defined in ne::ShaderCacheManager)ne::ShaderCacheManager
ne::ShaderCacheManager::ShaderCacheManager(Renderer *pRenderer)ne::ShaderCacheManagerprotected
writeLanguageSpecificParameters(ConfigManager &cacheConfig) overridene::GlslShaderCacheManagerprotectedvirtual
~GlslShaderCacheManager() override=default (defined in ne::GlslShaderCacheManager)ne::GlslShaderCacheManagervirtual
~ShaderCacheManager()=default (defined in ne::ShaderCacheManager)ne::ShaderCacheManagervirtual
+
+ + + + diff --git a/classne_1_1GlslShaderCacheManager.html b/classne_1_1GlslShaderCacheManager.html new file mode 100644 index 000000000..f599a1c46 --- /dev/null +++ b/classne_1_1GlslShaderCacheManager.html @@ -0,0 +1,282 @@ + + + + + + + +Nameless Engine: ne::GlslShaderCacheManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::GlslShaderCacheManager Class Reference
+
+
+ +

#include <GlslShaderCacheManager.h>

+
+Inheritance diagram for ne::GlslShaderCacheManager:
+
+
+ + +ne::ShaderCacheManager + +
+ + + + + + + + + + + + + +

+Public Member Functions

GlslShaderCacheManager (const GlslShaderCacheManager &)=delete
 
+GlslShaderCacheManageroperator= (const GlslShaderCacheManager &)=delete
 
- Public Member Functions inherited from ne::ShaderCacheManager
ShaderCacheManager (const ShaderCacheManager &)=delete
 
+ShaderCacheManageroperator= (const ShaderCacheManager &)=delete
 
std::optional< ErrorrefreshShaderCache ()
 
+ + + + + + + + + + + + +

+Protected Member Functions

virtual std::optional< std::string > isLanguageSpecificGlobalCacheOutdated (const ConfigManager &cacheConfig) override
 
virtual std::optional< ErrorwriteLanguageSpecificParameters (ConfigManager &cacheConfig) override
 
- Protected Member Functions inherited from ne::ShaderCacheManager
 ShaderCacheManager (Renderer *pRenderer)
 
virtual std::optional< std::string > isLanguageSpecificGlobalCacheOutdated (const ConfigManager &cacheConfig)=0
 
virtual std::optional< ErrorwriteLanguageSpecificParameters (ConfigManager &cacheConfig)=0
 
+ + + +

+Private Member Functions

 GlslShaderCacheManager (Renderer *pRenderer)
 
+ + + +

+Friends

+class ShaderCacheManager
 
+

Detailed Description

+

Responsible for validating GLSL shader cache, reading and updating the cache.

+

Constructor & Destructor Documentation

+ +

◆ GlslShaderCacheManager()

+ +
+
+ + + + + +
+ + + + + + + + +
ne::GlslShaderCacheManager::GlslShaderCacheManager (RendererpRenderer)
+
+private
+
+

Constructs a new manager.

+
Parameters
+ + +
pRendererUsed renderer.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ isLanguageSpecificGlobalCacheOutdated()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< std::string > ne::GlslShaderCacheManager::isLanguageSpecificGlobalCacheOutdated (const ConfigManagercacheConfig)
+
+overrideprotectedvirtual
+
+

Makes sure that the cache was generated using the same parameters as the current renderer's state and that the cache can be safely used. This function checks shader language specific parameters that might have changed.

+
Parameters
+ + +
cacheConfigConfig that stores global cache parameters.
+
+
+
Returns
Empty if cache can be safely used, otherwise reason why it's outdated and cache can't be used.
+ +

Implements ne::ShaderCacheManager.

+ +
+
+ +

◆ writeLanguageSpecificParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::GlslShaderCacheManager::writeLanguageSpecificParameters (ConfigManagercacheConfig)
+
+overrideprotectedvirtual
+
+

Writes shader language specific parameters that affect shader cache into the specified config.

+
Parameters
+ + +
cacheConfigConfig that stores global cache parameters.
+
+
+
Returns
Error if something went wrong.
+ +

Implements ne::ShaderCacheManager.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/glsl/cache/GlslShaderCacheManager.h
  • +
  • src/engine_lib/private/shader/glsl/cache/GlslShaderCacheManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1GlslShaderCacheManager.js b/classne_1_1GlslShaderCacheManager.js new file mode 100644 index 000000000..b7aebdcdf --- /dev/null +++ b/classne_1_1GlslShaderCacheManager.js @@ -0,0 +1,6 @@ +var classne_1_1GlslShaderCacheManager = +[ + [ "GlslShaderCacheManager", "classne_1_1GlslShaderCacheManager.html#ac42e9bc934ff4b50db12c2be7c81fc59", null ], + [ "isLanguageSpecificGlobalCacheOutdated", "classne_1_1GlslShaderCacheManager.html#a8c5156f783168cd27e4a78aaf6f0c511", null ], + [ "writeLanguageSpecificParameters", "classne_1_1GlslShaderCacheManager.html#a6385a8cd94368608ae658f702cd42cfc", null ] +]; \ No newline at end of file diff --git a/classne_1_1GlslShaderCacheManager.png b/classne_1_1GlslShaderCacheManager.png new file mode 100644 index 0000000000000000000000000000000000000000..2f1c4654f03504fbb02832fa9db66c5bc724cdde GIT binary patch literal 782 zcmeAS@N?(olHy`uVBq!ia0vp^+kiNLgBeIR8`rM{QqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#Nsldb&75`X1l#x9})3XEpO&7nCshiI(kAzvuVk zT_?F6o-5-SBwD?E%Q1^dHH+GBTxWUy)V!=yWu;ept@+%i6Q2lM-q8I0a?RF1GxmM1 zvTeSz>tE=#=+xtxIqUC#R9)HKUYl!-3Io3 zD$$j1!$1AD{yX)?)Wr^`^0{$W#uGK@-Cl!k}qTJuid)4LZJb? zJLh%A=E+xuO7fzX%slF0Z&9w)nmhN|KD}*rZla<2lkWYKyTH5shHlD?6%+XVitk5m z+r4*f@LgG8DCf=ldO_<(@ZodcpQ~NGeI>8r{PiWP>iPe!*!PuxA77d6xynnw6=wTh zdfO~?X>P^ed+QYc?s#VqlgMB5{fC!TOaAe1`;WgrzwO_j+!kFWBdratF2Ilj5-*SV eX)b;HMP9gSYMSbjBmKaX%i!ti=d#Wzp$PzeR(yE? literal 0 HcmV?d00001 diff --git a/classne_1_1GlslShaderTextureResourceBinding-members.html b/classne_1_1GlslShaderTextureResourceBinding-members.html new file mode 100644 index 000000000..0ce0fa0c9 --- /dev/null +++ b/classne_1_1GlslShaderTextureResourceBinding-members.html @@ -0,0 +1,129 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::GlslShaderTextureResourceBinding Member List
+
+
+ +

This is the complete list of members for ne::GlslShaderTextureResourceBinding, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
bindTextureToShaderDescriptorArray(const std::string &sShaderResourceName, VulkanPipeline *pPipelineWithDescriptors, VkImageView pTextureView, unsigned int iIndexIntoShaderArray)ne::GlslShaderTextureResourceBindingprivatestatic
changeUsedPipelines(const std::unordered_set< Pipeline * > &pipelinesToUse) overridene::GlslShaderTextureResourceBindingvirtual
copyResourceIndexToPushConstants(PipelineShaderConstantsManager *pPushConstantsManager, VulkanPipeline *pUsedPipeline)ne::GlslShaderTextureResourceBindinginline
create(const std::string &sShaderResourceName, const std::unordered_set< Pipeline * > &pipelinesToUse, std::unique_ptr< TextureHandle > pTextureToUse)ne::GlslShaderTextureResourceBindingprivatestatic
getPathToTextureResource()ne::GlslShaderTextureResourceBinding
getShaderResourceName() constne::ShaderResourceBindingBase
getTextureIndexInShaderArray(const std::string &sShaderResourceName, VulkanPipeline *pPipelineToLookIn)ne::GlslShaderTextureResourceBindingprivatestatic
GlslShaderTextureResourceBinding(const std::string &sResourceName, std::unique_ptr< TextureHandle > pTextureToUse, std::unordered_map< VulkanPipeline *, PushConstantIndices > pushConstantIndices)ne::GlslShaderTextureResourceBindingprotected
mtxPushConstantIndicesne::GlslShaderTextureResourceBindingprivate
mtxUsedTexturene::GlslShaderTextureResourceBindingprivate
onAfterAllPipelinesRefreshedResources() overridene::GlslShaderTextureResourceBindingprotectedvirtual
ShaderResourceBindingBase(const std::string &sShaderResourceName)ne::ShaderResourceBindingBaseprotected
ShaderTextureResourceBinding(const std::string &sShaderResourceName)ne::ShaderTextureResourceBindingprotected
ShaderTextureResourceBindingManager (defined in ne::GlslShaderTextureResourceBinding)ne::GlslShaderTextureResourceBindingfriend
sShaderResourceNamene::ShaderResourceBindingBaseprivate
useNewTexture(std::unique_ptr< TextureHandle > pTextureToUse) overridene::GlslShaderTextureResourceBindingvirtual
~GlslShaderTextureResourceBinding() override=default (defined in ne::GlslShaderTextureResourceBinding)ne::GlslShaderTextureResourceBindingvirtual
~ShaderResourceBindingBase()=default (defined in ne::ShaderResourceBindingBase)ne::ShaderResourceBindingBasevirtual
~ShaderTextureResourceBinding() override=default (defined in ne::ShaderTextureResourceBinding)ne::ShaderTextureResourceBindingvirtual
+
+ + + + diff --git a/classne_1_1GlslShaderTextureResourceBinding.html b/classne_1_1GlslShaderTextureResourceBinding.html new file mode 100644 index 000000000..549378bce --- /dev/null +++ b/classne_1_1GlslShaderTextureResourceBinding.html @@ -0,0 +1,619 @@ + + + + + + + +Nameless Engine: ne::GlslShaderTextureResourceBinding Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <GlslShaderTextureResourceBinding.h>

+
+Inheritance diagram for ne::GlslShaderTextureResourceBinding:
+
+
+ + +ne::ShaderTextureResourceBinding +ne::ShaderResourceBindingBase + +
+ + + + +

+Classes

struct  PushConstantIndices
 
+ + + + + + + + + + + + + + + + +

+Public Member Functions

std::string getPathToTextureResource ()
 
void copyResourceIndexToPushConstants (PipelineShaderConstantsManager *pPushConstantsManager, VulkanPipeline *pUsedPipeline)
 
virtual std::optional< ErroruseNewTexture (std::unique_ptr< TextureHandle > pTextureToUse) override
 
virtual std::optional< ErrorchangeUsedPipelines (const std::unordered_set< Pipeline * > &pipelinesToUse) override
 
virtual std::optional< ErroruseNewTexture (std::unique_ptr< TextureHandle > pTextureToUse)=0
 
- Public Member Functions inherited from ne::ShaderResourceBindingBase
virtual std::optional< ErrorchangeUsedPipelines (const std::unordered_set< Pipeline * > &pipelinesToUse)=0
 
std::string getShaderResourceName () const
 
+ + + + + + + + + + + + + +

+Protected Member Functions

 GlslShaderTextureResourceBinding (const std::string &sResourceName, std::unique_ptr< TextureHandle > pTextureToUse, std::unordered_map< VulkanPipeline *, PushConstantIndices > pushConstantIndices)
 
virtual std::optional< ErroronAfterAllPipelinesRefreshedResources () override
 
- Protected Member Functions inherited from ne::ShaderTextureResourceBinding
 ShaderTextureResourceBinding (const std::string &sShaderResourceName)
 
- Protected Member Functions inherited from ne::ShaderResourceBindingBase
 ShaderResourceBindingBase (const std::string &sShaderResourceName)
 
virtual std::optional< ErroronAfterAllPipelinesRefreshedResources ()=0
 
+ + + + + + + +

+Static Private Member Functions

static std::variant< std::unique_ptr< ShaderTextureResourceBinding >, Errorcreate (const std::string &sShaderResourceName, const std::unordered_set< Pipeline * > &pipelinesToUse, std::unique_ptr< TextureHandle > pTextureToUse)
 
static std::variant< std::unique_ptr< ShaderArrayIndex >, ErrorgetTextureIndexInShaderArray (const std::string &sShaderResourceName, VulkanPipeline *pPipelineToLookIn)
 
static std::optional< ErrorbindTextureToShaderDescriptorArray (const std::string &sShaderResourceName, VulkanPipeline *pPipelineWithDescriptors, VkImageView pTextureView, unsigned int iIndexIntoShaderArray)
 
+ + + + + +

+Private Attributes

std::pair< std::mutex, std::unique_ptr< TextureHandle > > mtxUsedTexture
 
std::pair< std::recursive_mutex, std::unordered_map< VulkanPipeline *, PushConstantIndices > > mtxPushConstantIndices
 
+ + + +

+Friends

+class ShaderTextureResourceBindingManager
 
+

Detailed Description

+

References some texture from shader code.

+

Constructor & Destructor Documentation

+ +

◆ GlslShaderTextureResourceBinding()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ne::GlslShaderTextureResourceBinding::GlslShaderTextureResourceBinding (const std::string & sResourceName,
std::unique_ptr< TextureHandlepTextureToUse,
std::unordered_map< VulkanPipeline *, PushConstantIndicespushConstantIndices 
)
+
+protected
+
+

Initializes the resource.

+
Remarks
Used internally, for outside usage prefer to use create.
+
Parameters
+ + + + +
sResourceNameName of the resource we are referencing (should be exactly the same as the resource name written in the shader file we are referencing).
pTextureToUseTexture that should be binded to a descriptor in shader array.
pushConstantIndicesIndices of push constants (per-pipeline) to copy texture index to.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ bindTextureToShaderDescriptorArray()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::GlslShaderTextureResourceBinding::bindTextureToShaderDescriptorArray (const std::string & sShaderResourceName,
VulkanPipelinepPipelineWithDescriptors,
VkImageView pTextureView,
unsigned int iIndexIntoShaderArray 
)
+
+staticprivate
+
+

Binds the specified image view to the sampler descriptor of the specified pipeline for binding that corresponds to the specified shader resource name.

+
Parameters
+ + + + + +
sShaderResourceNameName of the shader resource to get binding index in descriptor set.
pPipelineWithDescriptorsPipeline which descriptors to use.
pTextureViewTexture view to bind.
iIndexIntoShaderArrayIndex to a descriptor (in the shader texture array) to bind.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ changeUsedPipelines()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::GlslShaderTextureResourceBinding::changeUsedPipelines (const std::unordered_set< Pipeline * > & pipelinesToUse)
+
+overridevirtual
+
+

Called to make the resource to discard currently used pipelines and bind/reference other pipelines.

+
Warning
Expects that the caller is using some mutex to protect this shader resource from being used in the draw function while this function is not finished (i.e. make sure the CPU will not queue a new frame while this function is not finished).
+
Remarks
For example, for this function can be called from a mesh node that changed its geometry and thus added/removed some material slots, or if some material that mesh node is using changed its pipeline.
+
Parameters
+ + +
pipelinesToUsePipelines to use instead of the current ones.
+
+
+
Returns
Error if something went wrong.
+ +

Implements ne::ShaderResourceBindingBase.

+ +
+
+ +

◆ copyResourceIndexToPushConstants()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::GlslShaderTextureResourceBinding::copyResourceIndexToPushConstants (PipelineShaderConstantsManagerpPushConstantsManager,
VulkanPipelinepUsedPipeline 
)
+
+inline
+
+

Copies resource index (into shader arrays) to a push constant.

+
Parameters
+ + + +
pPushConstantsManagerPush constants manager.
pUsedPipelineCurrent pipeline.
+
+
+ +
+
+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< ShaderTextureResourceBinding >, Error > ne::GlslShaderTextureResourceBinding::create (const std::string & sShaderResourceName,
const std::unordered_set< Pipeline * > & pipelinesToUse,
std::unique_ptr< TextureHandlepTextureToUse 
)
+
+staticprivate
+
+

Creates a GLSL shader resource for referencing texture in shader array.

+
Parameters
+ + + + +
sShaderResourceNameName of the resource we are referencing (should be exactly the same as the resource name written in the shader file we are referencing).
pipelinesToUsePipelines that use shader/parameters we are referencing.
pTextureToUseTexture that should be binded to a descriptor in shader array.
+
+
+
Returns
Error if something went wrong, otherwise created shader resource.
+ +
+
+ +

◆ getPathToTextureResource()

+ +
+
+ + + + + + + +
std::string ne::GlslShaderTextureResourceBinding::getPathToTextureResource ()
+
+

Returns path to a file/directory that stores used texture resource.

+
Returns
Path relative to the res directory.
+ +
+
+ +

◆ getTextureIndexInShaderArray()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< ShaderArrayIndex >, Error > ne::GlslShaderTextureResourceBinding::getTextureIndexInShaderArray (const std::string & sShaderResourceName,
VulkanPipelinepPipelineToLookIn 
)
+
+staticprivate
+
+

Asks the index manager for an index into the requested shader array resource.

+
Parameters
+ + + +
sShaderResourceNameName of the shader array resource defined in GLSL.
pPipelineToLookInPipeline to look for an index manager that will provide the index into shader array.
+
+
+
Returns
Error if something went wrong, otherwise received index into shader array.
+ +
+
+ +

◆ onAfterAllPipelinesRefreshedResources()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::GlslShaderTextureResourceBinding::onAfterAllPipelinesRefreshedResources ()
+
+overrideprotectedvirtual
+
+

Called from pipeline manager to notify that all pipelines released their internal resources and now restored them so their internal resources (for example push constants) might be different now and shader resource now needs to check that everything that it needs is still there and possibly re-bind to pipeline's descriptors since these might have been also re-created.

+
Returns
Error if something went wrong.
+ +

Implements ne::ShaderResourceBindingBase.

+ +
+
+ +

◆ useNewTexture()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::GlslShaderTextureResourceBinding::useNewTexture (std::unique_ptr< TextureHandlepTextureToUse)
+
+overridevirtual
+
+

Makes the shader resource to reference the new (specified) texture.

+
Warning
Expects that the caller is using some mutex to protect this shader resource from being used in the draw function while this function is not finished (i.e. make sure the CPU will not queue a new frame while this function is not finished).
+
Parameters
+ + +
pTextureToUseTexture to reference.
+
+
+
Returns
Error if something went wrong.
+ +

Implements ne::ShaderTextureResourceBinding.

+ +
+
+

Member Data Documentation

+ +

◆ mtxPushConstantIndices

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, std::unordered_map<VulkanPipeline*, PushConstantIndices> > ne::GlslShaderTextureResourceBinding::mtxPushConstantIndices
+
+private
+
+

Index of push constant (per-pipeline) to copy index into shader array.

+ +
+
+ +

◆ mtxUsedTexture

+ +
+
+ + + + + +
+ + + + +
std::pair<std::mutex, std::unique_ptr<TextureHandle> > ne::GlslShaderTextureResourceBinding::mtxUsedTexture
+
+private
+
+

Texture that we bind to descriptor.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/glsl/resource/binding/texture/GlslShaderTextureResourceBinding.h
  • +
  • src/engine_lib/private/shader/glsl/resource/binding/texture/GlslShaderTextureResourceBinding.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1GlslShaderTextureResourceBinding.js b/classne_1_1GlslShaderTextureResourceBinding.js new file mode 100644 index 000000000..5ba454f9e --- /dev/null +++ b/classne_1_1GlslShaderTextureResourceBinding.js @@ -0,0 +1,15 @@ +var classne_1_1GlslShaderTextureResourceBinding = +[ + [ "PushConstantIndices", "structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.html", "structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices" ], + [ "GlslShaderTextureResourceBinding", "classne_1_1GlslShaderTextureResourceBinding.html#ad1944b0ed6f014801b6bfcf117d82808", null ], + [ "bindTextureToShaderDescriptorArray", "classne_1_1GlslShaderTextureResourceBinding.html#aefc86111ccf47cf222f5254cef395e92", null ], + [ "changeUsedPipelines", "classne_1_1GlslShaderTextureResourceBinding.html#a4b72c64b7d785dce01fde577c3988c9f", null ], + [ "copyResourceIndexToPushConstants", "classne_1_1GlslShaderTextureResourceBinding.html#a145dda4a9f6868404db29cd0b1588621", null ], + [ "create", "classne_1_1GlslShaderTextureResourceBinding.html#a3c821a0fa63e7de55ec3c83cd917f2ba", null ], + [ "getPathToTextureResource", "classne_1_1GlslShaderTextureResourceBinding.html#a01eb6c04b78151d3402cbdedea9867dc", null ], + [ "getTextureIndexInShaderArray", "classne_1_1GlslShaderTextureResourceBinding.html#afd12447a47da8fc586344fa986bef8d4", null ], + [ "onAfterAllPipelinesRefreshedResources", "classne_1_1GlslShaderTextureResourceBinding.html#acdcec2ee9f7c94f9dad2bbe1637a7505", null ], + [ "useNewTexture", "classne_1_1GlslShaderTextureResourceBinding.html#af63076ba6c94ff19e3b1268b77be8041", null ], + [ "mtxPushConstantIndices", "classne_1_1GlslShaderTextureResourceBinding.html#aa9761cda29f21727e708d17bcfbe524d", null ], + [ "mtxUsedTexture", "classne_1_1GlslShaderTextureResourceBinding.html#ad8d3fed85b5b7719de489029a716260a", null ] +]; \ No newline at end of file diff --git a/classne_1_1GlslShaderTextureResourceBinding.png b/classne_1_1GlslShaderTextureResourceBinding.png new file mode 100644 index 0000000000000000000000000000000000000000..b66d79f269430d9c94d0cb04126d27c7e6926aa8 GIT binary patch literal 1281 zcmeAS@N?(olHy`uVBq!ia0vp^FMzm%gBeKPY7Q3wQqloFA+G=b{|Cvv`C8h4Xt{-f zW`V@?GcOJtH~!=C$S;@y$Oi*+rrB2*7+88dT^vIy7~jtQIBB&G&(Z$l zGyU%U?_9rCiL)i_{r9)$a!;&VuBFl<-||EMT4`*$K-i?7^(?9ja;Pkie zdnPUky!>g)>t2sfbGxR0y>oBZ!gu}k{3Y_Yx$iVu<*NLQ+c(|(%-@g47o6UfbNo@M z;p}~H%kOtQ&i!w{X7$mZL0@AwZF?SZTq^O3fy{iB>b;D*j9G7t7F-U$fA0CY-TNf0 zt2Z;RTD~pO!p`$s)%L~fw%?qRH%s);n|m8=`sVhA?%frAdBM31YoP2eo?Eijn>DMV zb>^_2riUL~m9e0iyF*U=OF>lk~!CpUYvCcoTM~P{l!@`c`qzvM#u;K4jwcIUigYkP zXX&w=@$4#YhK*AeFbH^ZaxqLKg<-$6H1@h=%T$%e+K!$^lZ2+ID8JNtvFWdEzDj0F z^t?3v(+fKdRZm81#rfU{oN#-=Z-aLQv8P#uja5A3roS&ulwdEpIqhx4p1dW?@_*l* z{=K4l@06+fo2%@m_5JmH+xabw+4@=U^}3gyCA=zMpEinZw@RAX28;-=8Nv-QS4wAH z*=N`Hs`$*>@VVZVMj$2cR&Xx+S-RL*cXo_=b#lc_^fX7-m|Su3OR)s$^*>bhsEURLvFtXlUgv~rvMs!4x#zOs6DbhY*3U9VoT zP5QO#hpg(!{7WJWrk~gFtlN5Pz3Y=Js-CN99vi8V(NxI(Ah($T8e4_odHiweZ=3y!ug}CA>B*`@F_?d7b;* zDLLCuuzfFfnf+gW!8WOtCH4GS-XY-K*A4aK?n+(_4L7g(*VolivwIoC*K;d6JZ!G|d;GcL8z4Bb l!3#)u+;W(n8mV?cKHl`z(j^nLS%8HVgQu&X%Q~loCIIw5VpsqG literal 0 HcmV?d00001 diff --git a/classne_1_1GlslVertexFormatDescription-members.html b/classne_1_1GlslVertexFormatDescription-members.html new file mode 100644 index 000000000..4927bcef0 --- /dev/null +++ b/classne_1_1GlslVertexFormatDescription-members.html @@ -0,0 +1,121 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::GlslVertexFormatDescription Member List
+
+
+ +

This is the complete list of members for ne::GlslVertexFormatDescription, including all inherited members.

+ + + + + + + + + + + + +
createDescription(VertexFormat type)ne::GlslVertexFormatDescriptionstatic
ne::VertexFormatDescription::createDescription(VertexFormat type, Renderer *pRenderer)ne::VertexFormatDescriptionstatic
getVertexAttributeDescriptions()=0ne::GlslVertexFormatDescriptionpure virtual
getVertexBindingDescription()=0ne::GlslVertexFormatDescriptionpure virtual
getVertexBindingIndex()ne::GlslVertexFormatDescriptioninlineprotectedstatic
getVertexLayoutBindingIndexMacros()=0ne::GlslVertexFormatDescriptionpure virtual
GlslVertexFormatDescription()=default (defined in ne::GlslVertexFormatDescription)ne::GlslVertexFormatDescription
iVertexBindingIndexne::GlslVertexFormatDescriptionprivatestatic
VertexFormatDescription()=default (defined in ne::VertexFormatDescription)ne::VertexFormatDescription
~GlslVertexFormatDescription() override=default (defined in ne::GlslVertexFormatDescription)ne::GlslVertexFormatDescriptionvirtual
~VertexFormatDescription()=default (defined in ne::VertexFormatDescription)ne::VertexFormatDescriptionvirtual
+
+ + + + diff --git a/classne_1_1GlslVertexFormatDescription.html b/classne_1_1GlslVertexFormatDescription.html new file mode 100644 index 000000000..eb275cc20 --- /dev/null +++ b/classne_1_1GlslVertexFormatDescription.html @@ -0,0 +1,333 @@ + + + + + + + +Nameless Engine: ne::GlslVertexFormatDescription Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <GlslVertexFormatDescription.h>

+
+Inheritance diagram for ne::GlslVertexFormatDescription:
+
+
+ + +ne::VertexFormatDescription +ne::MeshNodeGlslVertexFormatDescription + +
+ + + + + + + + +

+Public Member Functions

virtual std::vector< std::string > getVertexLayoutBindingIndexMacros ()=0
 
virtual VkVertexInputBindingDescription getVertexBindingDescription ()=0
 
virtual std::vector< VkVertexInputAttributeDescription > getVertexAttributeDescriptions ()=0
 
+ + + + + + +

+Static Public Member Functions

static std::unique_ptr< GlslVertexFormatDescriptioncreateDescription (VertexFormat type)
 
- Static Public Member Functions inherited from ne::VertexFormatDescription
static std::unique_ptr< VertexFormatDescriptioncreateDescription (VertexFormat type, Renderer *pRenderer)
 
+ + + +

+Static Protected Member Functions

static constexpr uint32_t getVertexBindingIndex ()
 
+ + + +

+Static Private Attributes

static constexpr uint32_t iVertexBindingIndex = 0
 
+

Detailed Description

+

Describes a vertex format for Vulkan/GLSL.

+

Member Function Documentation

+ +

◆ createDescription()

+ +
+
+ + + + + +
+ + + + + + + + +
std::unique_ptr< GlslVertexFormatDescription > ne::GlslVertexFormatDescription::createDescription (VertexFormat type)
+
+static
+
+

Creates vertex format description.

+
Parameters
+ + +
typeType of the vertex format.
+
+
+
Returns
Vertex format description.
+ +
+
+ +

◆ getVertexAttributeDescriptions()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::vector< VkVertexInputAttributeDescription > ne::GlslVertexFormatDescription::getVertexAttributeDescriptions ()
+
+pure virtual
+
+

Returns description of all vertex attributes.

+
Returns
Vertex attribute descriptions.
+ +

Implemented in ne::MeshNodeGlslVertexFormatDescription.

+ +
+
+ +

◆ getVertexBindingDescription()

+ +
+
+ + + + + +
+ + + + + + + +
virtual VkVertexInputBindingDescription ne::GlslVertexFormatDescription::getVertexBindingDescription ()
+
+pure virtual
+
+

Returns vertex description for vertex input binding.

+
Returns
Vertex input binding description.
+ +

Implemented in ne::MeshNodeGlslVertexFormatDescription.

+ +
+
+ +

◆ getVertexBindingIndex()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr uint32_t ne::GlslVertexFormatDescription::getVertexBindingIndex ()
+
+inlinestaticconstexprprotected
+
+

Returns index of the vertex input binding.

+
Returns
Binding index.
+ +
+
+ +

◆ getVertexLayoutBindingIndexMacros()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::vector< std::string > ne::GlslVertexFormatDescription::getVertexLayoutBindingIndexMacros ()
+
+pure virtual
+
+

Returns an array of macros (related to vertex format) used in GLSL shader.

+
Returns
Array of macro names where index in the array means binding location (index).
+ +

Implemented in ne::MeshNodeGlslVertexFormatDescription.

+ +
+
+

Member Data Documentation

+ +

◆ iVertexBindingIndex

+ +
+
+ + + + + +
+ + + + +
constexpr uint32_t ne::GlslVertexFormatDescription::iVertexBindingIndex = 0
+
+staticconstexprprivate
+
+

Index of the vertex input binding.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/glsl/format/GlslVertexFormatDescription.h
  • +
  • src/engine_lib/private/shader/glsl/format/GlslVertexFormatDescription.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1GlslVertexFormatDescription.js b/classne_1_1GlslVertexFormatDescription.js new file mode 100644 index 000000000..235ee2975 --- /dev/null +++ b/classne_1_1GlslVertexFormatDescription.js @@ -0,0 +1,9 @@ +var classne_1_1GlslVertexFormatDescription = +[ + [ "createDescription", "classne_1_1GlslVertexFormatDescription.html#a223d2e61d5bf728e421b950aa5ed1b36", null ], + [ "getVertexAttributeDescriptions", "classne_1_1GlslVertexFormatDescription.html#a9b1fda390bdf44fb5044ffbe07f687ff", null ], + [ "getVertexBindingDescription", "classne_1_1GlslVertexFormatDescription.html#a7c3d520315c44fbbf5d3a67905be9f3e", null ], + [ "getVertexBindingIndex", "classne_1_1GlslVertexFormatDescription.html#a37c641b0543ae0fc1a8b10b2b34aba96", null ], + [ "getVertexLayoutBindingIndexMacros", "classne_1_1GlslVertexFormatDescription.html#a6b41b4f5d80d7d7a5b17cff12af3981f", null ], + [ "iVertexBindingIndex", "classne_1_1GlslVertexFormatDescription.html#a1d2995f3588a5a3bd35c94a80f550cf2", null ] +]; \ No newline at end of file diff --git a/classne_1_1GlslVertexFormatDescription.png b/classne_1_1GlslVertexFormatDescription.png new file mode 100644 index 0000000000000000000000000000000000000000..9de07a1b073123c102f3127b12cbbbbb019e0588 GIT binary patch literal 1262 zcmeAS@N?(olHy`uVBq!ia0vp^|A4rIgBeJEFkZGFNJ$6ygt-3y{~ySF@#br3|Doj; z2ATyD)6cv(aNqz?Jb2RO6+k)8k|4ie1|S~{%$a6iVPIgX^mK6ysbG9N_vNI=3Op^d zmuW5iUjOLpK}A0K$uoP)-Mx0oGCRF6cKX*Xk-SCQWzrU{ChZA$wv+R#?YHe84sWv0G`?+7@;+;e-P`R~7GF~M zp0l^~QPt}8Mz>4*zH8p9kw4uy@k#97#{KMb8eRvl?hNc(yYXg{+?})P*~c5NOn;?( z@^)4F_t_OzOTw&P6s>Td{p7hoyzW)2ck!RtKi=k=I%%7;j<4)38GBi=-g={-l{J%I zo%#{HxcSL^Ws}|ZB0uUmwFy3hKD`{TQo^?duM-2PTDjcKm;?Z~I^C)KaN z`!(dOcKxi0=Us(Qv48OVR9O4F`TdW+|N9?Je&T=PqvxenGV@i|W*zJ|blc3-p#GJK zVfUuq|5Y=eZSUQGA^Mql-}|ZZ3~x?-WIV7+MxJ2}DGa$_4#gXyO&uMfmiu5tEqA@{ z+}H7$&!3-5-+v^o#MPy5>#to~RxM7=6rA|`7vDd#;Putg@h(rCZeBn8;og!Ro$}Mx zdi*w9wXY5a@G{S~YAv&(I>KA)PO_N4gYk?)&-C@KA4woiQD z`;Geal|Jp0iFY}&3QUOo5pXilW~d0#XV{>9`^Wm}nRT~+aPLj6d;BBrC*y&2q(%TJ zwjLNBm3Z7-1tf}{R3M2PoXV|^^53n$zW@K$=3S!G=D&-QOAB`Ue!E|#9~K>xepwy& zzbN-G|9|_B$}g{fs8lX|^SbYCXXHWtnQjNO{#=>=&G^6S`O*#BOiH({*9s2mdxMe( zf{tJF^IDkpStc@Z&5zx`MdJ2xrQW{J_xj+nrRJ;nw#?F7eJ^_3&7^m_?N8l7nSpQ9 z-M?vN=Q;%UZ+zSQ{=bN}%+)u<22Jr~#f aW7zVBwX68UeQRLJ#Ng@b=d#Wzp$P!J6q%#| literal 0 HcmV?d00001 diff --git a/classne_1_1GpuResource-members.html b/classne_1_1GpuResource-members.html new file mode 100644 index 000000000..b33e0a21e --- /dev/null +++ b/classne_1_1GpuResource-members.html @@ -0,0 +1,125 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::GpuResource Member List
+
+
+ +

This is the complete list of members for ne::GpuResource, including all inherited members.

+ + + + + + + + + + + + + + + + +
getElementCount() constne::GpuResource
getElementSizeInBytes() constne::GpuResource
getResourceManager() constne::GpuResource
getResourceName() constne::GpuResource
GlobalShaderResourceBinding (defined in ne::GpuResource)ne::GpuResourcefriend
GpuResource()=delete (defined in ne::GpuResource)ne::GpuResource
GpuResource(GpuResourceManager *pManager, const std::string &sResourceName, unsigned int iElementSizeInBytes, unsigned int iElementCount)ne::GpuResource
GpuResource(GpuResource &)=delete (defined in ne::GpuResource)ne::GpuResource
iElementCountne::GpuResourceprivate
iElementSizeInBytesne::GpuResourceprivate
operator=(GpuResource &)=delete (defined in ne::GpuResource)ne::GpuResource
pGlobalShaderResourceBindingne::GpuResourceprivate
pManagerne::GpuResourceprivate
sResourceNamene::GpuResourceprivate
~GpuResource() (defined in ne::GpuResource)ne::GpuResourcevirtual
+
+ + + + diff --git a/classne_1_1GpuResource.html b/classne_1_1GpuResource.html new file mode 100644 index 000000000..787c3a0f1 --- /dev/null +++ b/classne_1_1GpuResource.html @@ -0,0 +1,417 @@ + + + + + + + +Nameless Engine: ne::GpuResource Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::GpuResource Class Reference
+
+
+ +

#include <GpuResource.h>

+
+Inheritance diagram for ne::GpuResource:
+
+
+ + +ne::DirectXResource +ne::VulkanResource + +
+ + + + + + + + + + + + + + + + +

+Public Member Functions

 GpuResource (GpuResourceManager *pManager, const std::string &sResourceName, unsigned int iElementSizeInBytes, unsigned int iElementCount)
 
GpuResource (GpuResource &)=delete
 
+GpuResourceoperator= (GpuResource &)=delete
 
std::string getResourceName () const
 
unsigned int getElementSizeInBytes () const
 
unsigned int getElementCount () const
 
GpuResourceManagergetResourceManager () const
 
+ + + + + + + + + + + +

+Private Attributes

std::shared_ptr< GlobalShaderResourceBindingpGlobalShaderResourceBinding
 
GpuResourceManager *const pManager = nullptr
 
const unsigned int iElementSizeInBytes = 0
 
const unsigned int iElementCount = 0
 
const std::string sResourceName
 
+ + + +

+Friends

+class GlobalShaderResourceBinding
 
+

Detailed Description

+

Resource stored in the GPU memory.

+

Constructor & Destructor Documentation

+ +

◆ GpuResource()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ne::GpuResource::GpuResource (GpuResourceManagerpManager,
const std::string & sResourceName,
unsigned int iElementSizeInBytes,
unsigned int iElementCount 
)
+
+

Initializes resource.

+
Parameters
+ + + + + +
pManagerManager that created this resource.
sResourceNameName of this resource.
iElementSizeInBytesResource size information. Size of one array element (if array), otherwise specify size of the whole resource.
iElementCountResource size information. Total number of elements in the array (if array), otherwise specify 1.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getElementCount()

+ +
+
+ + + + + + + +
unsigned int ne::GpuResource::getElementCount () const
+
+

Returns resource size information. Total number of elements in the array (if array), otherwise 1.

+
Remarks
May be zero in some cases.
+
Returns
Size in bytes.
+ +
+
+ +

◆ getElementSizeInBytes()

+ +
+
+ + + + + + + +
unsigned int ne::GpuResource::getElementSizeInBytes () const
+
+

Returns resource size information. Size of one array element (if array), otherwise size of the whole resource.

+
Remarks
May be zero in some cases.
+
Returns
Size in bytes.
+ +
+
+ +

◆ getResourceManager()

+ +
+
+ + + + + + + +
GpuResourceManager * ne::GpuResource::getResourceManager () const
+
+

Returns resource manager that created this resource.

+
Returns
Resource manager.
+ +
+
+ +

◆ getResourceName()

+ +
+
+ + + + + + + +
std::string ne::GpuResource::getResourceName () const
+
+

Returns resource name.

+
Returns
Resource name.
+ +
+
+

Member Data Documentation

+ +

◆ iElementCount

+ +
+
+ + + + + +
+ + + + +
const unsigned int ne::GpuResource::iElementCount = 0
+
+private
+
+

Resource size information (may be zero in some cases).

+ +
+
+ +

◆ iElementSizeInBytes

+ +
+
+ + + + + +
+ + + + +
const unsigned int ne::GpuResource::iElementSizeInBytes = 0
+
+private
+
+

Resource size information (may be zero in some cases).

+ +
+
+ +

◆ pGlobalShaderResourceBinding

+ +
+
+ + + + + +
+ + + + +
std::shared_ptr<GlobalShaderResourceBinding> ne::GpuResource::pGlobalShaderResourceBinding
+
+private
+
+

Not nullptr if this resource was binded as a global shader resource.

+
Remarks
Only used to control the lifetime of a binding, once the GPU resource is destroyed the binding should also be destroyed.
+ +
+
+ +

◆ pManager

+ +
+
+ + + + + +
+ + + + +
GpuResourceManager* const ne::GpuResource::pManager = nullptr
+
+private
+
+

Manager that created this resource.

+ +
+
+ +

◆ sResourceName

+ +
+
+ + + + + +
+ + + + +
const std::string ne::GpuResource::sResourceName
+
+private
+
+

Name of this resource.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/general/resource/GpuResource.h
  • +
  • src/engine_lib/private/render/general/resource/GpuResource.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1GpuResource.js b/classne_1_1GpuResource.js new file mode 100644 index 000000000..f880d53de --- /dev/null +++ b/classne_1_1GpuResource.js @@ -0,0 +1,13 @@ +var classne_1_1GpuResource = +[ + [ "GpuResource", "classne_1_1GpuResource.html#a794ee4dcd6089f0fd327b3698f8aceaf", null ], + [ "getElementCount", "classne_1_1GpuResource.html#a7169c9c330ba86dc9e164eec4bc4ce60", null ], + [ "getElementSizeInBytes", "classne_1_1GpuResource.html#a70c29a51ac2bcfec8318cbdce1cb8d8e", null ], + [ "getResourceManager", "classne_1_1GpuResource.html#abed4c39f44bce7ecf2f3859ab688dd02", null ], + [ "getResourceName", "classne_1_1GpuResource.html#a90b9a139422b1d568e5be6ec9186130c", null ], + [ "iElementCount", "classne_1_1GpuResource.html#ac0dcd4c2b7352d3d04ffdef966b0cf35", null ], + [ "iElementSizeInBytes", "classne_1_1GpuResource.html#ad5c5dddda54b7541048b879fa5596617", null ], + [ "pGlobalShaderResourceBinding", "classne_1_1GpuResource.html#a91ce363512db65e0792912a60693c40a", null ], + [ "pManager", "classne_1_1GpuResource.html#a9e786ca90a027b8cb96d80a60dfbe890", null ], + [ "sResourceName", "classne_1_1GpuResource.html#a358a7024087350c0cd8bd60ac6ac230a", null ] +]; \ No newline at end of file diff --git a/classne_1_1GpuResource.png b/classne_1_1GpuResource.png new file mode 100644 index 0000000000000000000000000000000000000000..140c6875b99be94d32cfd15b1689e8a8c9afc653 GIT binary patch literal 825 zcmeAS@N?(olHy`uVBq!ia0y~yVB`U^12~w0Q$^ap}I0kyD#WB}8Cr%91IUW-=V8Ph@IPNMXoW zm&qlq$jo3Rr+3Kh1OtQn3Jytz2b_{XAsa>I6ov-%lolR_4=p|Q8p*Skz0_hjurlVw z(zc!nj12Q82pTaQ5H@mRW2gX{&AonPf8& zsL$gPNS|j_-PDQm>f`J^E`8i#&2Lk`W}!-DM|tX$rN6Fv&U*dX+%=cZZqQ7g;`4rAOzPB4H_|&JB-4s^ zPl~+MH|^o|Bc|;0SDrk0|JEc!k2H$vGr@5Z tD3D=+<>aQV{Cv*&BPUK+J~#f!IAuZmUO#6cIbb4Z@O1TaS?83{1OP@eeYOAq literal 0 HcmV?d00001 diff --git a/classne_1_1GpuResourceManager-members.html b/classne_1_1GpuResourceManager-members.html new file mode 100644 index 000000000..d4d28fcbf --- /dev/null +++ b/classne_1_1GpuResourceManager-members.html @@ -0,0 +1,138 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::GpuResourceManager Member List
+
+
+ +

This is the complete list of members for ne::GpuResourceManager, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
create(Renderer *pRenderer)ne::GpuResourceManagerprotectedstatic
createRendererSpecificManager(Renderer *pRenderer)ne::GpuResourceManagerprotectedstatic
createResource(const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource)=0ne::GpuResourceManagerpure virtual
createResourceWithCpuWriteAccess(const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, std::optional< bool > isUsedInShadersAsArrayResource)=0ne::GpuResourceManagerpure virtual
createResourceWithData(const std::string &sResourceName, const void *pBufferData, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource)=0ne::GpuResourceManagerpure virtual
createShaderReadWriteTextureResource(const std::string &sResourceName, unsigned int iWidth, unsigned int iHeight, ShaderReadWriteTextureResourceFormat format)=0ne::GpuResourceManagerpure virtual
createShadowMapTexture(const std::string &sResourceName, unsigned int iTextureSize, bool bPointLightColorCubemap)=0ne::GpuResourceManagerprotectedpure virtual
getCurrentStateInfo()=0ne::GpuResourceManagerpure virtual
getDynamicCpuWriteShaderResourceArrayManager() constne::GpuResourceManager
getRenderer() constne::GpuResourceManager
getShadowMapManager() constne::GpuResourceManager
getTextureManager() constne::GpuResourceManager
getTotalAliveResourceCount()ne::GpuResourceManager
getTotalVideoMemoryInMb() const =0ne::GpuResourceManagerpure virtual
getUsedVideoMemoryInMb() const =0ne::GpuResourceManagerpure virtual
GpuResource (defined in ne::GpuResourceManager)ne::GpuResourceManagerfriend
GpuResourceManager()=delete (defined in ne::GpuResourceManager)ne::GpuResourceManager
GpuResourceManager(Renderer *pRenderer)ne::GpuResourceManagerprotected
iAliveResourceCountne::GpuResourceManagerprivate
loadTextureFromDisk(const std::string &sResourceName, const std::filesystem::path &pathToTextureFile)=0ne::GpuResourceManagerpure virtual
pDynamicCpuWriteShaderResourceArrayManagerne::GpuResourceManagerprivate
pRendererne::GpuResourceManagerprivate
pShadowMapManagerne::GpuResourceManagerprivate
pTextureManagerne::GpuResourceManagerprivate
Renderer (defined in ne::GpuResourceManager)ne::GpuResourceManagerfriend
resetManagers()ne::GpuResourceManagerprotected
ShadowMapManager (defined in ne::GpuResourceManager)ne::GpuResourceManagerfriend
~GpuResourceManager()=default (defined in ne::GpuResourceManager)ne::GpuResourceManagervirtual
+
+ + + + diff --git a/classne_1_1GpuResourceManager.html b/classne_1_1GpuResourceManager.html new file mode 100644 index 000000000..fea22c257 --- /dev/null +++ b/classne_1_1GpuResourceManager.html @@ -0,0 +1,1021 @@ + + + + + + + +Nameless Engine: ne::GpuResourceManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <GpuResourceManager.h>

+
+Inheritance diagram for ne::GpuResourceManager:
+
+
+ + +ne::DirectXResourceManager +ne::VulkanResourceManager + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual size_t getTotalVideoMemoryInMb () const =0
 
virtual size_t getUsedVideoMemoryInMb () const =0
 
virtual std::variant< std::unique_ptr< GpuResource >, ErrorloadTextureFromDisk (const std::string &sResourceName, const std::filesystem::path &pathToTextureFile)=0
 
virtual std::variant< std::unique_ptr< UploadBuffer >, ErrorcreateResourceWithCpuWriteAccess (const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, std::optional< bool > isUsedInShadersAsArrayResource)=0
 
virtual std::variant< std::unique_ptr< GpuResource >, ErrorcreateResourceWithData (const std::string &sResourceName, const void *pBufferData, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource)=0
 
virtual std::variant< std::unique_ptr< GpuResource >, ErrorcreateResource (const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource)=0
 
virtual std::variant< std::unique_ptr< GpuResource >, ErrorcreateShaderReadWriteTextureResource (const std::string &sResourceName, unsigned int iWidth, unsigned int iHeight, ShaderReadWriteTextureResourceFormat format)=0
 
virtual std::string getCurrentStateInfo ()=0
 
RenderergetRenderer () const
 
TextureManagergetTextureManager () const
 
ShadowMapManagergetShadowMapManager () const
 
DynamicCpuWriteShaderResourceArrayManagergetDynamicCpuWriteShaderResourceArrayManager () const
 
size_t getTotalAliveResourceCount ()
 
+ + + + + + + +

+Protected Member Functions

virtual std::variant< std::unique_ptr< GpuResource >, ErrorcreateShadowMapTexture (const std::string &sResourceName, unsigned int iTextureSize, bool bPointLightColorCubemap)=0
 
 GpuResourceManager (Renderer *pRenderer)
 
void resetManagers ()
 
+ + + + + +

+Static Protected Member Functions

static std::variant< std::unique_ptr< GpuResourceManager >, Errorcreate (Renderer *pRenderer)
 
static std::variant< std::unique_ptr< GpuResourceManager >, ErrorcreateRendererSpecificManager (Renderer *pRenderer)
 
+ + + + + + + + + + + +

+Private Attributes

std::unique_ptr< TextureManagerpTextureManager
 
std::unique_ptr< ShadowMapManagerpShadowMapManager
 
std::unique_ptr< DynamicCpuWriteShaderResourceArrayManagerpDynamicCpuWriteShaderResourceArrayManager
 
std::atomic< size_t > iAliveResourceCount {0}
 
Renderer *const pRenderer = nullptr
 
+ + + + + + + +

+Friends

+class Renderer
 
+class ShadowMapManager
 
+class GpuResource
 
+

Detailed Description

+

Allows creating GPU resources.

+

Constructor & Destructor Documentation

+ +

◆ GpuResourceManager()

+ +
+
+ + + + + +
+ + + + + + + + +
ne::GpuResourceManager::GpuResourceManager (RendererpRenderer)
+
+protected
+
+

Creates partially initialized manager, used internally.

+
Remarks
Prefer to use create.
+
Parameters
+ + +
pRendererRenderer that owns this manager.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + +
std::variant< std::unique_ptr< GpuResourceManager >, Error > ne::GpuResourceManager::create (RendererpRenderer)
+
+staticprotected
+
+

Creates a new platform-specific resource manager.

+
Parameters
+ + +
pRendererRenderer.
+
+
+
Returns
Error if something went wrong, otherwise fully initialized resource manager.
+ +
+
+ +

◆ createRendererSpecificManager()

+ +
+
+ + + + + +
+ + + + + + + + +
std::variant< std::unique_ptr< GpuResourceManager >, Error > ne::GpuResourceManager::createRendererSpecificManager (RendererpRenderer)
+
+staticprotected
+
+

Used internally to create initial (base) manager object.

+
Remarks
Prefer to use create.
+
Parameters
+ + +
pRendererRenderer
+
+
+
Returns
Error if something went wrong, otherwise partially initialized manager.
+ +
+
+ +

◆ createResource()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::variant< std::unique_ptr< GpuResource >, Error > ne::GpuResourceManager::createResource (const std::string & sResourceName,
size_t iElementSizeInBytes,
size_t iElementCount,
ResourceUsageType usage,
bool bIsShaderReadWriteResource 
)
+
+pure virtual
+
+

Creates a new GPU resource (buffer, not a texture) without any initial data.

+
Remarks
This function can be useful if you plan to create a resource to be filled from a (compute) shader and then use this data in some other shader.
+
Parameters
+ + + + + + +
sResourceNameResource name, used for logging.
iElementSizeInBytesSize of one buffer element in bytes.
iElementCountNumber of elements in the resulting buffer.
usageDescribes how you plan to use this resource.
bIsShaderReadWriteResourceSpecify true if you plan to modify the resource from shaders, otherwise false.
+
+
+
Returns
Error if something went wrong, otherwise created resource with filled data.
+ +

Implemented in ne::DirectXResourceManager, and ne::VulkanResourceManager.

+ +
+
+ +

◆ createResourceWithCpuWriteAccess()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::variant< std::unique_ptr< UploadBuffer >, Error > ne::GpuResourceManager::createResourceWithCpuWriteAccess (const std::string & sResourceName,
size_t iElementSizeInBytes,
size_t iElementCount,
std::optional< bool > isUsedInShadersAsArrayResource 
)
+
+pure virtual
+
+

Creates a new GPU resource with available CPU write access (only CPU write not read), typically used for resources that needs to be frequently updated from the CPU side.

+

Example:

struct ObjectData{
+
glm::mat4x4 world;
+
};
+
+
auto result = pResourceManager->createResourceWithCpuWriteAccess(
+
"object constant data",
+
sizeof(ObjectData),
+
1,
+
false);
+
Parameters
+ + + + + +
sResourceNameResource name, used for logging.
iElementSizeInBytesSize of one buffer element in bytes.
iElementCountNumber of elements in the resulting buffer.
isUsedInShadersAsArrayResourceSpecify empty if this resource is not going to be used in shaders, false if this resource will be used in shaders as a single constant (cbuffer in HLSL, uniform in GLSL), might cause padding to 256 bytes and size limitation up to 64 KB, specify true if this resource will be used in shaders as an array resource (StructuredBuffer in HLSL, storage buffer in GLSL - not an array but it will be a storage buffer).
+
+
+
Returns
Error if something went wrong, otherwise created resource.
+ +

Implemented in ne::DirectXResourceManager, and ne::VulkanResourceManager.

+ +
+
+ +

◆ createResourceWithData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::variant< std::unique_ptr< GpuResource >, Error > ne::GpuResourceManager::createResourceWithData (const std::string & sResourceName,
const void * pBufferData,
size_t iElementSizeInBytes,
size_t iElementCount,
ResourceUsageType usage,
bool bIsShaderReadWriteResource 
)
+
+pure virtual
+
+

Creates a new GPU resource (buffer, not a texture) and fills it with the specified data.

+

Example:

std::vector<glm::vec3> vVertices;
+
+
auto result = pResourceManager->createResourceWithData(
+
"mesh vertex buffer",
+
vVertices.data(),
+
sizeof(glm::vec3),
+
vVertices.size(),
+
true);
+
Parameters
+ + + + + + + +
sResourceNameResource name, used for logging.
pBufferDataPointer to the data that the new resource will contain.
iElementSizeInBytesSize of one buffer element in bytes.
iElementCountNumber of elements in the resulting buffer.
usageDescribes how you plan to use this resource.
bIsShaderReadWriteResourceSpecify true if you plan to modify the resource from shaders, otherwise false.
+
+
+
Returns
Error if something went wrong, otherwise created resource with filled data.
+ +

Implemented in ne::DirectXResourceManager, and ne::VulkanResourceManager.

+ +
+
+ +

◆ createShaderReadWriteTextureResource()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::variant< std::unique_ptr< GpuResource >, Error > ne::GpuResourceManager::createShaderReadWriteTextureResource (const std::string & sResourceName,
unsigned int iWidth,
unsigned int iHeight,
ShaderReadWriteTextureResourceFormat format 
)
+
+pure virtual
+
+

Creates a texture resource that is available as a read/write resource in shaders.

+
Parameters
+ + + + + +
sResourceNameResource name, used for logging.
iWidthWidth of the texture in pixels.
iHeightHeight of the texture in pixels.
formatFormat of the texture.
+
+
+
Returns
Error if something went wrong, otherwise created texture resource.
+ +

Implemented in ne::DirectXResourceManager, and ne::VulkanResourceManager.

+ +
+
+ +

◆ createShadowMapTexture()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::variant< std::unique_ptr< GpuResource >, Error > ne::GpuResourceManager::createShadowMapTexture (const std::string & sResourceName,
unsigned int iTextureSize,
bool bPointLightColorCubemap 
)
+
+protectedpure virtual
+
+

Creates a GPU resource to be used as a shadow map.

+
Parameters
+ + + + +
sResourceNameResource name, used for logging.
iTextureSizeSize of one dimension of the texture in pixels. Must be power of 2 (128, 256, 512, 1024, 2048, etc.).
bPointLightColorCubemapfalse is you need a single 2D texture resource or true to have 6 2D textures arranged as a cube map specifically for point lights.
+
+
+
Returns
Error if something went wrong, otherwise created texture resource.
+ +

Implemented in ne::DirectXResourceManager, and ne::VulkanResourceManager.

+ +
+
+ +

◆ getCurrentStateInfo()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string ne::GpuResourceManager::getCurrentStateInfo ()
+
+pure virtual
+
+

Dumps internal state of the resource manager in JSON format.

+
Returns
JSON string.
+ +

Implemented in ne::DirectXResourceManager, and ne::VulkanResourceManager.

+ +
+
+ +

◆ getDynamicCpuWriteShaderResourceArrayManager()

+ +
+
+ + + + + + + +
DynamicCpuWriteShaderResourceArrayManager * ne::GpuResourceManager::getDynamicCpuWriteShaderResourceArrayManager () const
+
+

Returns CPU-write shader resource array manager.

+
Remarks
Do not delete (free) returned pointer.
+
Returns
CPU-write array manager.
+ +
+
+ +

◆ getRenderer()

+ +
+
+ + + + + + + +
Renderer * ne::GpuResourceManager::getRenderer () const
+
+

Returns renderer that owns this resource manager.

+
Remarks
Do not delete (free) returned pointer.
+
Returns
Renderer that owns this manager.
+ +
+
+ +

◆ getShadowMapManager()

+ +
+
+ + + + + + + +
ShadowMapManager * ne::GpuResourceManager::getShadowMapManager () const
+
+

Returns shadow map manager.

+
Remarks
Do not delete (free) returned pointer.
+
Returns
Shadow map manager.
+ +
+
+ +

◆ getTextureManager()

+ +
+
+ + + + + + + +
TextureManager * ne::GpuResourceManager::getTextureManager () const
+
+

Returns texture manager.

+
Remarks
Do not delete (free) returned pointer.
+
Returns
Texture manager.
+ +
+
+ +

◆ getTotalAliveResourceCount()

+ +
+
+ + + + + + + +
size_t ne::GpuResourceManager::getTotalAliveResourceCount ()
+
+

Returns the total number of GPU resources currently alive.

+
Returns
GPU resource count.
+ +
+
+ +

◆ getTotalVideoMemoryInMb()

+ +
+
+ + + + + +
+ + + + + + + +
virtual size_t ne::GpuResourceManager::getTotalVideoMemoryInMb () const
+
+pure virtual
+
+

Returns total video memory size (VRAM) in megabytes.

+
Returns
Total video memory size in megabytes.
+ +

Implemented in ne::DirectXResourceManager, and ne::VulkanResourceManager.

+ +
+
+ +

◆ getUsedVideoMemoryInMb()

+ +
+
+ + + + + +
+ + + + + + + +
virtual size_t ne::GpuResourceManager::getUsedVideoMemoryInMb () const
+
+pure virtual
+
+

Returns the amount of video memory (VRAM) occupied by all currently allocated resources.

+
Returns
Size of the video memory used by allocated resources.
+ +

Implemented in ne::DirectXResourceManager, and ne::VulkanResourceManager.

+ +
+
+ +

◆ loadTextureFromDisk()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual std::variant< std::unique_ptr< GpuResource >, Error > ne::GpuResourceManager::loadTextureFromDisk (const std::string & sResourceName,
const std::filesystem::path & pathToTextureFile 
)
+
+pure virtual
+
+

Loads a texture from the specified path in the GPU memory.

+
Parameters
+ + + +
sResourceNameResource name, used for logging.
pathToTextureFilePath to the image file that stores texture data.
+
+
+
Returns
Error if something went wrong, otherwise created GPU resource that stores texture data.
+ +

Implemented in ne::DirectXResourceManager, and ne::VulkanResourceManager.

+ +
+
+ +

◆ resetManagers()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::GpuResourceManager::resetManagers ()
+
+protected
+
+

Sets nullptr to all texture/shadow/etc managers' unique ptr to force destroy them (if exist).

+ +
+
+

Member Data Documentation

+ +

◆ iAliveResourceCount

+ +
+
+ + + + + +
+ + + + +
std::atomic<size_t> ne::GpuResourceManager::iAliveResourceCount {0}
+
+private
+
+

Total number of created resources that were not destroyed yet.

+ +
+
+ +

◆ pDynamicCpuWriteShaderResourceArrayManager

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<DynamicCpuWriteShaderResourceArrayManager> ne::GpuResourceManager::pDynamicCpuWriteShaderResourceArrayManager
+
+private
+
+

Manages dynamic CPU-write shader arrays.

+ +
+
+ +

◆ pRenderer

+ +
+
+ + + + + +
+ + + + +
Renderer* const ne::GpuResourceManager::pRenderer = nullptr
+
+private
+
+

Do not delete (free) this pointer. Renderer that owns this manager.

+ +
+
+ +

◆ pShadowMapManager

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<ShadowMapManager> ne::GpuResourceManager::pShadowMapManager
+
+private
+
+

Stores all shadow maps.

+ +
+
+ +

◆ pTextureManager

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<TextureManager> ne::GpuResourceManager::pTextureManager
+
+private
+
+

Stores all texture GPU resources.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/general/resource/GpuResourceManager.h
  • +
  • src/engine_lib/private/render/general/resource/GpuResourceManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1GpuResourceManager.js b/classne_1_1GpuResourceManager.js new file mode 100644 index 000000000..52f32f736 --- /dev/null +++ b/classne_1_1GpuResourceManager.js @@ -0,0 +1,26 @@ +var classne_1_1GpuResourceManager = +[ + [ "GpuResourceManager", "classne_1_1GpuResourceManager.html#a96cae9bf4c7387a9c7196b4a55d55a27", null ], + [ "create", "classne_1_1GpuResourceManager.html#a71c9e5a58c7becf033edd6e94167f55d", null ], + [ "createRendererSpecificManager", "classne_1_1GpuResourceManager.html#a0ae59995a7856ffe4ee188705bb6809b", null ], + [ "createResource", "classne_1_1GpuResourceManager.html#ae10f17bd3fe1402deff6501dadf97085", null ], + [ "createResourceWithCpuWriteAccess", "classne_1_1GpuResourceManager.html#a3b6b609815ffa83367d236a9bc161184", null ], + [ "createResourceWithData", "classne_1_1GpuResourceManager.html#a06e28ad52a7a5e112965bb69bf1e7453", null ], + [ "createShaderReadWriteTextureResource", "classne_1_1GpuResourceManager.html#ad1657d2dcef066ddbc3d51e7b15b7eeb", null ], + [ "createShadowMapTexture", "classne_1_1GpuResourceManager.html#aabeed80bdfa62a81dd80ecb8f0499de8", null ], + [ "getCurrentStateInfo", "classne_1_1GpuResourceManager.html#adbd4f6f1f7b983f54d63b2b2c08c82d7", null ], + [ "getDynamicCpuWriteShaderResourceArrayManager", "classne_1_1GpuResourceManager.html#a82a3775c7752174f489f049f01327f1e", null ], + [ "getRenderer", "classne_1_1GpuResourceManager.html#a4a0e769ab46d6bb8dc2cb69b745f83b0", null ], + [ "getShadowMapManager", "classne_1_1GpuResourceManager.html#a4cbc670da1ddb223070a5ad1745b99bb", null ], + [ "getTextureManager", "classne_1_1GpuResourceManager.html#a4f234f90eec7a4a4512ca1571f53422c", null ], + [ "getTotalAliveResourceCount", "classne_1_1GpuResourceManager.html#abb05ff78285f579887978435d70c2234", null ], + [ "getTotalVideoMemoryInMb", "classne_1_1GpuResourceManager.html#a5223b131043ac73681248f67afc9d3a2", null ], + [ "getUsedVideoMemoryInMb", "classne_1_1GpuResourceManager.html#a306d6beb99858b87c761fc778d204a5c", null ], + [ "loadTextureFromDisk", "classne_1_1GpuResourceManager.html#ab0184f8dfd018f63c08ae0bbe568517d", null ], + [ "resetManagers", "classne_1_1GpuResourceManager.html#ae93152cc3ff47a82411870370fb6c369", null ], + [ "iAliveResourceCount", "classne_1_1GpuResourceManager.html#a631d9913a4e39c9b3c136984d6eafbd6", null ], + [ "pDynamicCpuWriteShaderResourceArrayManager", "classne_1_1GpuResourceManager.html#a63bb6680214f170993420640210ab324", null ], + [ "pRenderer", "classne_1_1GpuResourceManager.html#a0c2f4bb10186a08c635b99a6838d362c", null ], + [ "pShadowMapManager", "classne_1_1GpuResourceManager.html#ab0870eb40e8dc5de9c2d3c97e1b67232", null ], + [ "pTextureManager", "classne_1_1GpuResourceManager.html#a3b50391772b2e50aeb2b5ceaf6ea2b52", null ] +]; \ No newline at end of file diff --git a/classne_1_1GpuResourceManager.png b/classne_1_1GpuResourceManager.png new file mode 100644 index 0000000000000000000000000000000000000000..a94eb41cf4171062bfc2457526dedc4cdccfae60 GIT binary patch literal 1086 zcmah|eK4B`7=N+WP|S9eiR$%il~{T!>y09zqa>Nopw`HVt|n!bm}}CgueEl1Xop-f zYde%kQrDf&iTX;M5Z^NF64wwLeJ5F^AvqyUB756^cKvJ5AJ5nCdG5LA`Q1~QgpYG| z{?Hi!09QRA<+B0TzR==-k zTMlQ#6vZYN7$g&>rHMs!k=P6-FEWA&fg6+=}5T^6OIRvV*&Ef$rS!F_B6}7Z% zM(%-DZHb#L!;0n?`|WvUW8FCP@~>&BC}i;0_B0#vp36f$j|O{ckay)cO)ErmtUXz% z=5jJQ(If$>bb9zT*xssG?vXGf@|4!`ipJ5@iLGytLN$DUISa)4ffoLA~C%V zoDZIaitzn;P5NP#&>Dgw3D`=bIE$13-2z?BYgsndig_zS+l{ww!!A(bLH)EK=fSDN zQFgz7=MV^V2ZF%;6)FfjUPo}NomypvIZkrf4gtxdb_6&Gw6P1mPr-&oA$YLk9H;;b zcZ}z;9a;&~Z(wAfQp>muv`c%JI{(Z5Pt#lQ$@6HL!2+WiB4mkwtuM$}*O4s+m;o;y zi3QDPv9a*_R*2vLp1xVH(dw-Jn6vp}^HrvqqD5fH*?v27b>vi0titgVIH|3xjBnY1 zuMtnIkxL2}b*OFe#YUf^BowlIqe2&EQFr!=$|6xW!StGv?gnbb$6LL$52V%*{6NfS z1XPtcu}YhJ6n8HY;l4BW=Q(y4{o4#a5&fh4(a~eGo#=VuqgOctPI!*{x<8^uEV+_B zuF5Lx84H|AS7?g{tzG$TgjL-#5^0f*m31OGc8S3 zUl{~PS6USmll~&MN^z#U7-sf#t`4A+_?_{Kw+N>&5Q7*jkBuWBUenYc)U;VB@{Tq| c$PDBA?v2%hED868J@n}SCKeylelGL&zx{A6oB#j- literal 0 HcmV?d00001 diff --git a/classne_1_1Guid-members.html b/classne_1_1Guid-members.html new file mode 100644 index 000000000..e17934d54 --- /dev/null +++ b/classne_1_1Guid-members.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::Guid Member List
+
+
+ +

This is the complete list of members for ne::Guid, including all inherited members.

+ + + + + + + +
getGuid() constne::Guid
Guid()=default (defined in ne::Guid)ne::Guid
Guid(const char *pGuid)ne::Guid
iGuidLengthne::Guidprivatestatic
sGuidne::Guidprivate
~Guid() override=default (defined in ne::Guid)ne::Guidvirtual
+
+ + + + diff --git a/classne_1_1Guid.html b/classne_1_1Guid.html new file mode 100644 index 000000000..aacf8353d --- /dev/null +++ b/classne_1_1Guid.html @@ -0,0 +1,243 @@ + + + + + + + +Nameless Engine: ne::Guid Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <GuidProperty.h>

+
+Inheritance diagram for ne::Guid:
+
+
+ +
+ + + + + + +

+Public Member Functions

 Guid (const char *pGuid)
 
std::string getGuid () const
 
+ + + +

+Private Attributes

std::string sGuid
 
+ + + +

+Static Private Attributes

static constexpr size_t iGuidLength = 36
 
+

Detailed Description

+

GUID property for classes and structs that inherit Serializable class. This property is required for all derived classes/structs of Serializable class. GUID defined a unique identifier for your class/struct and is used in serialization/deserialization.

+

Usage example:

class RCLASS(ne::Guid("00000000-0000-0000-0000-000000000000")) MyCoolClass : public ne::Serializable
+
Definition: GuidProperty.h:30
+
Definition: Serializable.h:113
+

You can generate a random GUID by just googling "generate GUID" and using any site/tool to generate it.

+

Uniqueness of all GUIDs is checked by the engine on startup in DEBUG builds, so you don't need to check if all of your GUIDs are unique or not, this is done automatically and if something is not unique you will get a message box with an error on engine startup saying where and what is not unique.

+

Constructor & Destructor Documentation

+ +

◆ Guid()

+ +
+
+ + + + + + + + +
ne::Guid::Guid (const char * pGuid)
+
+

Initializes the GUID of the entity.

+
Parameters
+ + +
pGuidGUID of the entity.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getGuid()

+ +
+
+ + + + + + + +
std::string ne::Guid::getGuid () const
+
+

Returns entity's GUID.

+
Returns
Entity's GUID.
+ +
+
+

Member Data Documentation

+ +

◆ iGuidLength

+ +
+
+ + + + + +
+ + + + +
constexpr size_t ne::Guid::iGuidLength = 36
+
+staticconstexprprivate
+
+

Length of the GUID.

+ +
+
+ +

◆ sGuid

+ +
+
+ + + + + +
+ + + + +
std::string ne::Guid::sGuid
+
+private
+
+

Entity's GUID.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/io/properties/GuidProperty.h
  • +
  • src/engine_lib/private/io/properties/GuidProperty.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1Guid.js b/classne_1_1Guid.js new file mode 100644 index 000000000..2992c506c --- /dev/null +++ b/classne_1_1Guid.js @@ -0,0 +1,7 @@ +var classne_1_1Guid = +[ + [ "Guid", "classne_1_1Guid.html#a5053502ca718f99805488e8232b0f589", null ], + [ "getGuid", "classne_1_1Guid.html#a63b89445951d0c0c2ff2ca7070394730", null ], + [ "iGuidLength", "classne_1_1Guid.html#ad89d0f5e20974999ffc7c8bd7acd5fb1", null ], + [ "sGuid", "classne_1_1Guid.html#a6222039ce02afb9dea90d8e6067e1f7b", null ] +]; \ No newline at end of file diff --git a/classne_1_1Guid.png b/classne_1_1Guid.png new file mode 100644 index 0000000000000000000000000000000000000000..985301e4a78baa9e97933117f5a7c148a910f5a3 GIT binary patch literal 444 zcmeAS@N?(olHy`uVBq!ia0vp^ARNHK3?%njU0MXBqyv0HT>t<74`jZ0^R=}9&~gg{ z%>s$(XI>mQZ~!PCJn8ZZpd4pOkY6wZkPimtOtY^rFfh7%x;TbZFut7|IJsGYr^Q@f z?f-vqd4&v)tgE-}?#LLw^YHo+vpILZqS7Hzm(ZyzJ3~UBYACo~xvuIEdNup2uC3Af zWLdrytK8-)PTrrCxtD3vjCk4S`+l*#n_>KT!qly~=4G1O&u+`<31FLEecs@7uJOI3 zpOTX8Z_aMBELmUDQ*wEq(>ytAr?!emX)~VMrtnsD{ImFIwR-ROkL#bWncrW+IAOxS zY@`2oLP9lv@ddfGXffIPZX$!jB^M?JcVSKj8DABK z0+Wdh2QIoW9a!q(vZHCnOheO&X=yUH4$ll?uim|<=zae}jkxB?z^|tB&UP;;^6pJb z+uJws^~Apgx=cp#-(#zm{9a>s+V-jDCH75vb-gmh2@1b!ZcT_kze(-hpJ!R;efSafU^p{)y85}Sb4q9e0Bml?v;Y7A literal 0 HcmV?d00001 diff --git a/classne_1_1HlslComputeShaderInterface-members.html b/classne_1_1HlslComputeShaderInterface-members.html new file mode 100644 index 000000000..73d23aa5c --- /dev/null +++ b/classne_1_1HlslComputeShaderInterface-members.html @@ -0,0 +1,149 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::HlslComputeShaderInterface Member List
+
+
+ +

This is the complete list of members for ne::HlslComputeShaderInterface, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bindResource(GpuResource *pResource, const std::string &sShaderResourceName, ComputeResourceUsage usage, bool bUpdateOnlyCurrentFrameResourceDescriptors=false) overridene::HlslComputeShaderInterfacevirtual
cbvResourcesne::HlslComputeShaderInterfaceprotected
ComputeShaderInterface (defined in ne::HlslComputeShaderInterface)ne::HlslComputeShaderInterfacefriend
ComputeShaderInterface(const ComputeShaderInterface &)=delete (defined in ne::ComputeShaderInterface)ne::ComputeShaderInterface
ne::ComputeShaderInterface::ComputeShaderInterface(Renderer *pRenderer, const std::string &sComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup)ne::ComputeShaderInterfaceprotected
createPartiallyInitializedRenderSpecificInterface(Renderer *pRenderer, const std::string &sComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup)ne::ComputeShaderInterfaceprotectedstatic
createRenderSpecificInterface(Renderer *pRenderer, const std::string &sComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup)ne::ComputeShaderInterfaceprotectedstatic
createUsingGraphicsQueue(Renderer *pRenderer, const std::string &sCompiledComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup=ComputeExecutionGroup::FIRST)ne::ComputeShaderInterfacestatic
dispatchOnGraphicsQueue(ID3D12GraphicsCommandList *pCommandList)ne::HlslComputeShaderInterfaceinline
executionGroupne::ComputeShaderInterfaceprivate
executionStagene::ComputeShaderInterfaceprivate
getComputeShaderName() constne::ComputeShaderInterface
getExecutionGroup() constne::ComputeShaderInterface
getExecutionStage() constne::ComputeShaderInterface
getPipeline() constne::ComputeShaderInterfaceprotected
getRenderer()ne::ComputeShaderInterfaceprotected
getThreadGroupCountX() constne::ComputeShaderInterfaceinlineprotected
getThreadGroupCountY() constne::ComputeShaderInterfaceinlineprotected
getThreadGroupCountZ() constne::ComputeShaderInterfaceinlineprotected
getUsedPipeline() constne::ComputeShaderInterface
HlslComputeShaderInterface()=delete (defined in ne::HlslComputeShaderInterface)ne::HlslComputeShaderInterface
HlslComputeShaderInterface(const HlslComputeShaderInterface &)=delete (defined in ne::HlslComputeShaderInterface)ne::HlslComputeShaderInterface
HlslComputeShaderInterface(Renderer *pRenderer, const std::string &sComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup)ne::HlslComputeShaderInterfaceprotected
iCbvSrvUavDescriptorSizene::HlslComputeShaderInterfaceprotected
iThreadGroupCountXne::ComputeShaderInterfaceprivate
iThreadGroupCountYne::ComputeShaderInterfaceprivate
iThreadGroupCountZne::ComputeShaderInterfaceprivate
operator=(const HlslComputeShaderInterface &)=delete (defined in ne::HlslComputeShaderInterface)ne::HlslComputeShaderInterface
operator=(const ComputeShaderInterface &)=delete (defined in ne::ComputeShaderInterface)ne::ComputeShaderInterface
pCbvSrvUavHeapne::HlslComputeShaderInterfaceprotected
pPipelinene::ComputeShaderInterfaceprivate
pRendererne::ComputeShaderInterfaceprivate
sComputeShaderNamene::ComputeShaderInterfaceprivate
srvResourcesne::HlslComputeShaderInterfaceprotected
submitForExecution(unsigned int iThreadGroupCountX, unsigned int iThreadGroupCountY, unsigned int iThreadGroupCountZ)ne::ComputeShaderInterface
tableResourcesne::HlslComputeShaderInterfaceprotected
uavResourcesne::HlslComputeShaderInterfaceprotected
~ComputeShaderInterface() (defined in ne::ComputeShaderInterface)ne::ComputeShaderInterfacevirtual
~HlslComputeShaderInterface() override=default (defined in ne::HlslComputeShaderInterface)ne::HlslComputeShaderInterfacevirtual
+
+ + + + diff --git a/classne_1_1HlslComputeShaderInterface.html b/classne_1_1HlslComputeShaderInterface.html new file mode 100644 index 000000000..ebfeb6966 --- /dev/null +++ b/classne_1_1HlslComputeShaderInterface.html @@ -0,0 +1,509 @@ + + + + + + + +Nameless Engine: ne::HlslComputeShaderInterface Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::HlslComputeShaderInterface Class Reference
+
+
+ +

#include <HlslComputeShaderInterface.h>

+
+Inheritance diagram for ne::HlslComputeShaderInterface:
+
+
+ + +ne::ComputeShaderInterface + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

HlslComputeShaderInterface (const HlslComputeShaderInterface &)=delete
 
+HlslComputeShaderInterfaceoperator= (const HlslComputeShaderInterface &)=delete
 
virtual std::optional< ErrorbindResource (GpuResource *pResource, const std::string &sShaderResourceName, ComputeResourceUsage usage, bool bUpdateOnlyCurrentFrameResourceDescriptors=false) override
 
void dispatchOnGraphicsQueue (ID3D12GraphicsCommandList *pCommandList)
 
- Public Member Functions inherited from ne::ComputeShaderInterface
ComputeShaderInterface (const ComputeShaderInterface &)=delete
 
+ComputeShaderInterfaceoperator= (const ComputeShaderInterface &)=delete
 
virtual std::optional< ErrorbindResource (GpuResource *pResource, const std::string &sShaderResourceName, ComputeResourceUsage usage, bool bUpdateOnlyCurrentFrameResourceDescriptors=false)=0
 
void submitForExecution (unsigned int iThreadGroupCountX, unsigned int iThreadGroupCountY, unsigned int iThreadGroupCountZ)
 
ComputeExecutionGroup getExecutionGroup () const
 
ComputeExecutionStage getExecutionStage () const
 
std::string getComputeShaderName () const
 
PipelinegetUsedPipeline () const
 
+ + + + + + + + + + + + + + + + +

+Protected Member Functions

 HlslComputeShaderInterface (Renderer *pRenderer, const std::string &sComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup)
 
- Protected Member Functions inherited from ne::ComputeShaderInterface
 ComputeShaderInterface (Renderer *pRenderer, const std::string &sComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup)
 
RenderergetRenderer ()
 
PipelinegetPipeline () const
 
unsigned int getThreadGroupCountX () const
 
unsigned int getThreadGroupCountY () const
 
unsigned int getThreadGroupCountZ () const
 
+ + + + + + + + + + + + + +

+Protected Attributes

std::unordered_map< UINT, DirectXResource * > cbvResources
 
std::unordered_map< UINT, DirectXResource * > uavResources
 
std::unordered_map< UINT, DirectXResource * > srvResources
 
std::unordered_map< UINT, DirectXDescriptor * > tableResources
 
DirectXDescriptorHeappCbvSrvUavHeap = nullptr
 
UINT iCbvSrvUavDescriptorSize = 0
 
+ + + +

+Friends

+class ComputeShaderInterface
 
+ + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from ne::ComputeShaderInterface
static std::variant< std::unique_ptr< ComputeShaderInterface >, ErrorcreateUsingGraphicsQueue (Renderer *pRenderer, const std::string &sCompiledComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup=ComputeExecutionGroup::FIRST)
 
- Static Protected Member Functions inherited from ne::ComputeShaderInterface
static std::variant< std::unique_ptr< ComputeShaderInterface >, ErrorcreateRenderSpecificInterface (Renderer *pRenderer, const std::string &sComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup)
 
static std::unique_ptr< ComputeShaderInterfacecreatePartiallyInitializedRenderSpecificInterface (Renderer *pRenderer, const std::string &sComputeShaderName, ComputeExecutionStage executionStage, ComputeExecutionGroup executionGroup)
 
+

Detailed Description

+

Interface to configure and run an HLSL compute shader.

+

Constructor & Destructor Documentation

+ +

◆ HlslComputeShaderInterface()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ne::HlslComputeShaderInterface::HlslComputeShaderInterface (RendererpRenderer,
const std::string & sComputeShaderName,
ComputeExecutionStage executionStage,
ComputeExecutionGroup executionGroup 
)
+
+protected
+
+

Initializes the interface.

+
Parameters
+ + + + + +
pRendererUsed renderer.
sComputeShaderNameName of the compiled compute shader to use.
executionStageDetermines when the shader will be executed.
executionGroupDetermines execution group of this shader where shaders of the first group will be executed before shaders from the second group and so on.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ bindResource()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::HlslComputeShaderInterface::bindResource (GpuResourcepResource,
const std::string & sShaderResourceName,
ComputeResourceUsage usage,
bool bUpdateOnlyCurrentFrameResourceDescriptors = false 
)
+
+overridevirtual
+
+

Binds the specified resource to be available in compute shaders.

+
Warning
This overload is used in cases where you cannot transfer resource ownership to the compute shader interface. In this case you must guarantee that the resource will not be deleted while this compute shader interface exists and while the GPU is processing this compute shader.
+
Parameters
+ + + + + +
pResourceResource to bind to compute shader.
sShaderResourceNameResource name from shader.
usageResource usage.
bUpdateOnlyCurrentFrameResourceDescriptorsSpecify true if you guarantee that you will bind a different GPU resource on the next frame, specify false if you are not sure if you will rebind the resource on the next frame or not. When true is specified only descriptors of the current frame resource will be updated (because descriptors of other frame resources might be in use and it's invalid to update them), when false descriptors of all frame resources will be updated.
+
+
+
Returns
Error if something went wrong.
+ +

Implements ne::ComputeShaderInterface.

+ +
+
+ +

◆ dispatchOnGraphicsQueue()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::HlslComputeShaderInterface::dispatchOnGraphicsQueue (ID3D12GraphicsCommandList * pCommandList)
+
+inline
+
+

Adds a dispatch command to the specified command list to execute this compute shader.

+
Warning
Expects that PSO and root signature are set.
+
Parameters
+ + +
pCommandListGraphics command list.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ cbvResources

+ +
+
+ + + + + +
+ + + + +
std::unordered_map<UINT, DirectXResource*> ne::HlslComputeShaderInterface::cbvResources
+
+protected
+
+

Stores pairs of "root parameter index" - "resource to bind as CBV".

+ +
+
+ +

◆ iCbvSrvUavDescriptorSize

+ +
+
+ + + + + +
+ + + + +
UINT ne::HlslComputeShaderInterface::iCbvSrvUavDescriptorSize = 0
+
+protected
+
+

Size of one CBV/SRV/UAV descriptor.

+ +
+
+ +

◆ pCbvSrvUavHeap

+ +
+
+ + + + + +
+ + + + +
DirectXDescriptorHeap* ne::HlslComputeShaderInterface::pCbvSrvUavHeap = nullptr
+
+protected
+
+

Descriptor heap for CBV/SRV/UAV descriptors.

+ +
+
+ +

◆ srvResources

+ +
+
+ + + + + +
+ + + + +
std::unordered_map<UINT, DirectXResource*> ne::HlslComputeShaderInterface::srvResources
+
+protected
+
+

Stores pairs of "root parameter index" - "resource to bind as SRV".

+ +
+
+ +

◆ tableResources

+ +
+
+ + + + + +
+ + + + +
std::unordered_map<UINT, DirectXDescriptor*> ne::HlslComputeShaderInterface::tableResources
+
+protected
+
+

Stores pairs of "root parameter index" - "descriptor to bind as a table.

+ +
+
+ +

◆ uavResources

+ +
+
+ + + + + +
+ + + + +
std::unordered_map<UINT, DirectXResource*> ne::HlslComputeShaderInterface::uavResources
+
+protected
+
+

Stores pairs of "root parameter index" - "resource to bind as UAV".

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classne_1_1HlslComputeShaderInterface.js b/classne_1_1HlslComputeShaderInterface.js new file mode 100644 index 000000000..6eaf83a5f --- /dev/null +++ b/classne_1_1HlslComputeShaderInterface.js @@ -0,0 +1,12 @@ +var classne_1_1HlslComputeShaderInterface = +[ + [ "HlslComputeShaderInterface", "classne_1_1HlslComputeShaderInterface.html#a89f796b12bc0a0c8e5b224d569eb7873", null ], + [ "bindResource", "classne_1_1HlslComputeShaderInterface.html#a3766c12ba388a79f758f475b87e2f902", null ], + [ "dispatchOnGraphicsQueue", "classne_1_1HlslComputeShaderInterface.html#a31f678f3e2314e82836b16bd2e8ca646", null ], + [ "cbvResources", "classne_1_1HlslComputeShaderInterface.html#ab28c12df52b15c2196de76ec0db7c21b", null ], + [ "iCbvSrvUavDescriptorSize", "classne_1_1HlslComputeShaderInterface.html#abfd44f3682e360f9af43ab7831ec2baa", null ], + [ "pCbvSrvUavHeap", "classne_1_1HlslComputeShaderInterface.html#a257b80b936c54309a5aae345b82b872f", null ], + [ "srvResources", "classne_1_1HlslComputeShaderInterface.html#af7550fa29176214bb0c209b76819246f", null ], + [ "tableResources", "classne_1_1HlslComputeShaderInterface.html#a941a437f0e3ea50cad1ea3c49075d784", null ], + [ "uavResources", "classne_1_1HlslComputeShaderInterface.html#a58e40610111d0bb70f8c4219e2af89ef", null ] +]; \ No newline at end of file diff --git a/classne_1_1HlslComputeShaderInterface.png b/classne_1_1HlslComputeShaderInterface.png new file mode 100644 index 0000000000000000000000000000000000000000..194f3b698f60a92c17f75e5034daba0d4b577433 GIT binary patch literal 792 zcmV+z1LypSP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0007` zNklv6)V<1ghRTd|ocD9>f8-LjN{$ks4W{=5PYJ28`7k+fBl@`S^h(Ul55bQ>Ou}a%)aio$F;YbuPJ9xBT$72K_yF zR0DI9hkyEN_Y1~;e77HV(IBI)hdZQ6jmX4C^Dg?`J*Y!P)w6wD=EyZ<^f+nz;dsgu zK+mEkK|PD=uDQG3%p#I}tfy0(B>zT1us#7v`YH%W(pN!1lD^srwr$&176AOIz5rlp zEl=?EwK~G`1Utau2z^03IYJQS4t@@EhG_cd_~WI0k@- z$gPw`w(ot+oBC)?@Amrv!AT(^awn6H4)U7dcC$i|GN?Y^hTu9!wVYpF2F2v_^LX2w zz1d;^KEr0h9H;ozg&f9sm#~H4%%i4Rl1(D!)70b0 zoeg}R$4y7sJ$r&$zp`t$-_*ISq6#o2(AV_7i@qmNv6@p==X%*po$JjjZr9n)YcRXX zlPMl58L~7u3Qx~rgheo z^om`RM=@w-QInvaMRnKQU6WZPBJw*q{pTJ8{}q9Vh=YPaM8sD?AR^+cogk%@R@OhO W-=0dG4eC<>0000 + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::HlslGlobalShaderResourceBinding Member List
+
+
+ +

This is the complete list of members for ne::HlslGlobalShaderResourceBinding, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
bindToPipelines(Pipeline *pSpecificPipeline) overridene::HlslGlobalShaderResourceBindingprotectedvirtual
create(Renderer *pRenderer, GlobalShaderResourceBindingManager *pManager, const std::string &sShaderResourceName, const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> &vResourcesToBind)ne::GlobalShaderResourceBindingprotectedstatic
getBindedResources() constne::GlobalShaderResourceBindingprotected
getShaderResourceName() constne::GlobalShaderResourceBindingprotected
GlobalShaderResourceBinding (defined in ne::HlslGlobalShaderResourceBinding)ne::HlslGlobalShaderResourceBindingfriend
GlobalShaderResourceBinding(const GlobalShaderResourceBinding &)=delete (defined in ne::GlobalShaderResourceBinding)ne::GlobalShaderResourceBinding
GlobalShaderResourceBinding(GlobalShaderResourceBinding &&)=delete (defined in ne::GlobalShaderResourceBinding)ne::GlobalShaderResourceBinding
ne::GlobalShaderResourceBinding::GlobalShaderResourceBinding(GlobalShaderResourceBindingManager *pManager, const std::string &sShaderResourceName, const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> &vResourcesToBind)ne::GlobalShaderResourceBindingprotected
HlslGlobalShaderResourceBinding()=delete (defined in ne::HlslGlobalShaderResourceBinding)ne::HlslGlobalShaderResourceBinding
HlslGlobalShaderResourceBinding(GlobalShaderResourceBindingManager *pManager, const std::string &sShaderResourceName, const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> &vResourcesToBind)ne::HlslGlobalShaderResourceBindingprotected
operator=(const GlobalShaderResourceBinding &)=delete (defined in ne::GlobalShaderResourceBinding)ne::GlobalShaderResourceBinding
operator=(GlobalShaderResourceBinding &&)=delete (defined in ne::GlobalShaderResourceBinding)ne::GlobalShaderResourceBinding
pManagerne::GlobalShaderResourceBindingprivate
sShaderResourceNamene::GlobalShaderResourceBindingprivate
unregisterBinding()ne::GlobalShaderResourceBindingprotected
vBindedResourcesne::GlobalShaderResourceBindingprivate
~GlobalShaderResourceBinding()=default (defined in ne::GlobalShaderResourceBinding)ne::GlobalShaderResourceBindingvirtual
~HlslGlobalShaderResourceBinding() override (defined in ne::HlslGlobalShaderResourceBinding)ne::HlslGlobalShaderResourceBindingvirtual
+
+ + + + diff --git a/classne_1_1HlslGlobalShaderResourceBinding.html b/classne_1_1HlslGlobalShaderResourceBinding.html new file mode 100644 index 000000000..1fadf2dc1 --- /dev/null +++ b/classne_1_1HlslGlobalShaderResourceBinding.html @@ -0,0 +1,262 @@ + + + + + + + +Nameless Engine: ne::HlslGlobalShaderResourceBinding Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::HlslGlobalShaderResourceBinding Class Reference
+
+
+ +

#include <HlslGlobalShaderResourceBinding.h>

+
+Inheritance diagram for ne::HlslGlobalShaderResourceBinding:
+
+
+ + +ne::GlobalShaderResourceBinding + +
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

 HlslGlobalShaderResourceBinding (GlobalShaderResourceBindingManager *pManager, const std::string &sShaderResourceName, const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> &vResourcesToBind)
 
virtual std::optional< ErrorbindToPipelines (Pipeline *pSpecificPipeline) override
 
- Protected Member Functions inherited from ne::GlobalShaderResourceBinding
 GlobalShaderResourceBinding (GlobalShaderResourceBindingManager *pManager, const std::string &sShaderResourceName, const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> &vResourcesToBind)
 
virtual std::optional< ErrorbindToPipelines (Pipeline *pSpecificPipeline)=0
 
void unregisterBinding ()
 
const std::string & getShaderResourceName () const
 
std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> getBindedResources () const
 
+ + + +

+Friends

+class GlobalShaderResourceBinding
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from ne::GlobalShaderResourceBinding
GlobalShaderResourceBinding (const GlobalShaderResourceBinding &)=delete
 
+GlobalShaderResourceBindingoperator= (const GlobalShaderResourceBinding &)=delete
 
GlobalShaderResourceBinding (GlobalShaderResourceBinding &&)=delete
 
+GlobalShaderResourceBindingoperator= (GlobalShaderResourceBinding &&)=delete
 
- Static Protected Member Functions inherited from ne::GlobalShaderResourceBinding
static std::optional< Errorcreate (Renderer *pRenderer, GlobalShaderResourceBindingManager *pManager, const std::string &sShaderResourceName, const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> &vResourcesToBind)
 
+

Detailed Description

+

Used for binding GPU resources as "global" HLSL shader resources (that don't change on a per-object basis).

+

Constructor & Destructor Documentation

+ +

◆ HlslGlobalShaderResourceBinding()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ne::HlslGlobalShaderResourceBinding::HlslGlobalShaderResourceBinding (GlobalShaderResourceBindingManagerpManager,
const std::string & sShaderResourceName,
const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> & vResourcesToBind 
)
+
+protected
+
+

Initializes a new object, does not trigger bindToPipelines.

+
Parameters
+ + + + +
pManagerManager that creates this object.
sShaderResourceNameName of the shader resource (name from shader code) to bind the resources.
vResourcesToBindResources to bind to pipelines. This can be the same resource for all frame resources (for example a texture) or a separate resource per frame (can be used for some CPU-write resources).
+
+
+ +
+
+

Member Function Documentation

+ +

◆ bindToPipelines()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::HlslGlobalShaderResourceBinding::bindToPipelines (PipelinepSpecificPipeline)
+
+overrideprotectedvirtual
+
+

Binds the resource to a specific pipeline or all graphics pipelines that use it.

+
Parameters
+ + +
pSpecificPipelinenullptr if need to bind to all graphics pipelines, otherwise a valid pointer to bind only to that pipeline.
+
+
+
Returns
Error if something went wrong.
+ +

Implements ne::GlobalShaderResourceBinding.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/hlsl/resource/binding/global/HlslGlobalShaderResourceBinding.h
  • +
  • src/engine_lib/private/shader/hlsl/resource/binding/global/HlslGlobalShaderResourceBinding.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1HlslGlobalShaderResourceBinding.js b/classne_1_1HlslGlobalShaderResourceBinding.js new file mode 100644 index 000000000..85c39ee56 --- /dev/null +++ b/classne_1_1HlslGlobalShaderResourceBinding.js @@ -0,0 +1,5 @@ +var classne_1_1HlslGlobalShaderResourceBinding = +[ + [ "HlslGlobalShaderResourceBinding", "classne_1_1HlslGlobalShaderResourceBinding.html#a15034ae81523e54768fcfbf6f776ce09", null ], + [ "bindToPipelines", "classne_1_1HlslGlobalShaderResourceBinding.html#aa6152c06d24057ffa6cac20118dc9bb5", null ] +]; \ No newline at end of file diff --git a/classne_1_1HlslGlobalShaderResourceBinding.png b/classne_1_1HlslGlobalShaderResourceBinding.png new file mode 100644 index 0000000000000000000000000000000000000000..a24183a600a079f3ac2d66294458c5b81fca0890 GIT binary patch literal 855 zcmeAS@N?(olHy`uVBq!ia0vp^kAOIUgBeH~pNX6eq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB)1)i4n z&XAvf=l__b!@bSWWcymbrp2dngbZ%P_uSoY(f2qa+QOqKHP>a*oLK3JD(TmgkCgn2 z-EQTuDen6m^G@IV-Pbx)+^g1S{i)l2HTX!i{O0&KS|u+9n++$)Xvcj`n9X1~S6-)n zTiNnCYmfOX-1+r+er$>FwS?8J_tanCx_Cat{Hn8sLr}cnqiV^SS5h~X{w`0u>APXy zzNybII47j%mpOk;Ve@#UeP&T%+T`nOi-R+SF0w=%HkUl@&1^00AA9xAq6zaAUM&ka z)UmJpq)+}Kwi}DA;`&$ExCs7X*tqspA9L*t_Rm$Hx0Uv8ev$q0yFl*#LUvP)n|=&| zFaAb-xyhGhxZ;$5*2S%-Ua#FEdOy(na>;W8Yg5_Kt^XG+7ArP>q80H~rTNE>#gm@w ziIVwPs5|M&lA!<0Vs;f_*7tHSY|d6@I`HOJ2ZOxdEhvnj|cGgq;*W6hdg4JD)9W{Wyb zypdAcx9r^gq+9J^9!Ne~aJOao_Sfkq_Ia_7b$&(t;V?Y2=;i_O$bjQ>85Ujmz4gUr*(*r_Q}16{ z^s?)rW9`fri%fbqoA{RVZ4SO182X#vD$CH^d0o?0^ZZE<1YKRkEz%0Pv>FVdQ&MBb@0Eu~?$^ZZW literal 0 HcmV?d00001 diff --git a/classne_1_1HlslShader-members.html b/classne_1_1HlslShader-members.html new file mode 100644 index 000000000..82a0e4788 --- /dev/null +++ b/classne_1_1HlslShader-members.html @@ -0,0 +1,168 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::HlslShader Member List
+
+
+ +

This is the complete list of members for ne::HlslShader, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
calculateReflectionFileHash()ne::HlslShaderprivate
checkCachedAdditionalCompilationResultsInfo(ConfigManager &cacheMetadataConfigManager, std::optional< ShaderCacheInvalidationReason > &cacheInvalidationReason) overridene::HlslShaderprotectedvirtual
compileRenderDependentShader(Renderer *pRenderer, const std::filesystem::path &shaderCacheDirectory, const std::string &sConfiguration, const ShaderDescription &shaderDescription)ne::Shaderprivatestatic
compileShader(Renderer *pRenderer, const std::filesystem::path &cacheDirectory, const std::string &sConfiguration, const ShaderDescription &shaderDescription)ne::HlslShaderstatic
compileShaderToBytecode(const ShaderDescription &shaderDescription, const std::optional< std::filesystem::path > &pathToPdb)ne::HlslShaderstatic
createFromCache(Renderer *pRenderer, const std::filesystem::path &pathToCompiledShaderBytecode, ShaderDescription &shaderDescription, const std::string &sShaderNameWithoutConfiguration, std::optional< ShaderCacheInvalidationReason > &cacheInvalidationReason)ne::Shaderstatic
createRenderDependentShaderFromCache(Renderer *pRenderer, const std::filesystem::path &pathToSourceShaderFile, const std::filesystem::path &pathToCompiledShaderBytecode, const std::string &sShaderName, ShaderType shaderType, std::optional< VertexFormat > vertexFormat)ne::Shaderprivatestatic
getCompiledBlob()ne::HlslShader
getComputeShaderModel()ne::HlslShaderinlinestatic
getCurrentAmountOfShadersInMemory()ne::Shaderstatic
getFrameConstantsShaderResourceName()ne::Shaderinlinestatic
getPathToCompiledShader()ne::Shaderprotected
getPixelShaderModel()ne::HlslShaderinlinestatic
getRenderer() constne::Shaderprotected
getRootSignatureInfo()ne::HlslShader
getShaderCompilerVersion()ne::HlslShaderstatic
getShaderName() constne::Shader
getShaderSourceFileHash() constne::HlslShader
getShaderType() constne::Shader
getStaticComparisonSamplerDescription()ne::HlslShaderstatic
getStaticSamplerDescription(TextureFilteringQuality textureFilteringQuality)ne::HlslShaderstatic
getStaticSamplerShaderRegisterSpace()ne::HlslShaderstatic
getVertexFormat() constne::Shader
getVertexShaderModel()ne::HlslShaderinlinestatic
HlslShader(Renderer *pRenderer, std::filesystem::path pathToCompiledShader, const std::string &sShaderName, ShaderType shaderType, const std::optional< VertexFormat > &vertexFormat, const std::string &sSourceFileHash)ne::HlslShader
HlslShader()=delete (defined in ne::HlslShader)ne::HlslShader
HlslShader(const HlslShader &)=delete (defined in ne::HlslShader)ne::HlslShader
iShaderFileCodepagene::HlslShaderinlineprivatestatic
iStaticSamplerShaderRegisterSpacene::HlslShaderinlineprivatestatic
loadShaderDataFromDiskIfNotLoaded()ne::HlslShaderprivate
mtxCompiledBytecodene::HlslShaderprivate
mtxRootSignatureInfone::HlslShaderprivate
notifyShaderBytecodeLoadedIntoMemory()ne::Shaderprotectedstatic
notifyShaderBytecodeReleasedFromMemory()ne::Shaderprotectedstatic
operator=(const HlslShader &)=delete (defined in ne::HlslShader)ne::HlslShader
operator=(const Shader &)=delete (defined in ne::Shader)ne::Shader
optionalVertexFormatne::Shaderprivate
pathToCompiledShaderne::Shaderprivate
pFrameConstantBufferNamene::Shaderprivatestatic
pRendererne::Shaderprivate
readBlobFromDisk(const std::filesystem::path &pathToFile)ne::HlslShaderprivatestatic
releaseShaderDataFromMemoryIfLoaded() overridene::HlslShadervirtual
saveAdditionalCompilationResultsInfo(ConfigManager &cacheMetadataConfigManager) overridene::HlslShaderprotectedvirtual
sCompiledBytecodeHashKeyNamene::Shaderinlineprivatestatic
sComputeShaderModelne::HlslShaderprivatestatic
Shader()=delete (defined in ne::Shader)ne::Shader
Shader(const Shader &)=delete (defined in ne::Shader)ne::Shader
Shader(Renderer *pRenderer, std::filesystem::path pathToCompiledShader, const std::string &sShaderName, ShaderType shaderType, std::optional< VertexFormat > vertexFormat)ne::Shaderprotected
shaderTypene::Shaderprivate
sHlslSectionNamene::HlslShaderinlineprivatestatic
sPixelShaderModelne::HlslShaderprivatestatic
sReflectionFileHashKeyNamene::HlslShaderinlineprivatestatic
sShaderNamene::Shaderprivate
sShaderReflectionFileExtensionne::HlslShaderinlineprivatestatic
sSourceFileHashne::HlslShaderprivate
sVertexShaderModelne::HlslShaderprivatestatic
~HlslShader() override=default (defined in ne::HlslShader)ne::HlslShadervirtual
~Shader()=default (defined in ne::Shader)ne::Shadervirtual
+
+ + + + diff --git a/classne_1_1HlslShader.html b/classne_1_1HlslShader.html new file mode 100644 index 000000000..17ab84931 --- /dev/null +++ b/classne_1_1HlslShader.html @@ -0,0 +1,1143 @@ + + + + + + + +Nameless Engine: ne::HlslShader Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <HlslShader.h>

+
+Inheritance diagram for ne::HlslShader:
+
+
+ + +ne::Shader + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 HlslShader (Renderer *pRenderer, std::filesystem::path pathToCompiledShader, const std::string &sShaderName, ShaderType shaderType, const std::optional< VertexFormat > &vertexFormat, const std::string &sSourceFileHash)
 
HlslShader (const HlslShader &)=delete
 
+HlslShaderoperator= (const HlslShader &)=delete
 
std::variant< ComPtr< IDxcBlob >, ErrorgetCompiledBlob ()
 
std::pair< std::mutex, std::optional< RootSignatureGenerator::CollectedInfo > > * getRootSignatureInfo ()
 
std::string getShaderSourceFileHash () const
 
virtual bool releaseShaderDataFromMemoryIfLoaded () override
 
- Public Member Functions inherited from ne::Shader
Shader (const Shader &)=delete
 
+Shaderoperator= (const Shader &)=delete
 
std::string getShaderName () const
 
ShaderType getShaderType () const
 
std::optional< VertexFormat > getVertexFormat () const
 
virtual bool releaseShaderDataFromMemoryIfLoaded ()=0
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static constexpr std::string_view getVertexShaderModel ()
 
static constexpr std::string_view getPixelShaderModel ()
 
static constexpr std::string_view getComputeShaderModel ()
 
static std::variant< std::string, ErrorgetShaderCompilerVersion ()
 
static CD3DX12_STATIC_SAMPLER_DESC getStaticSamplerDescription (TextureFilteringQuality textureFilteringQuality)
 
static CD3DX12_STATIC_SAMPLER_DESC getStaticComparisonSamplerDescription ()
 
static UINT getStaticSamplerShaderRegisterSpace ()
 
static std::variant< ComPtr< IDxcResult >, std::string, ErrorcompileShaderToBytecode (const ShaderDescription &shaderDescription, const std::optional< std::filesystem::path > &pathToPdb)
 
static std::variant< std::shared_ptr< Shader >, std::string, ErrorcompileShader (Renderer *pRenderer, const std::filesystem::path &cacheDirectory, const std::string &sConfiguration, const ShaderDescription &shaderDescription)
 
- Static Public Member Functions inherited from ne::Shader
static constexpr const char * getFrameConstantsShaderResourceName ()
 
static size_t getCurrentAmountOfShadersInMemory ()
 
static std::variant< std::shared_ptr< Shader >, std::string, ErrorcompileShader (Renderer *pRenderer, const std::filesystem::path &shaderCacheDirectory, const std::string &sConfiguration, const ShaderDescription &shaderDescription)
 
static std::variant< std::shared_ptr< Shader >, ErrorcreateFromCache (Renderer *pRenderer, const std::filesystem::path &pathToCompiledShaderBytecode, ShaderDescription &shaderDescription, const std::string &sShaderNameWithoutConfiguration, std::optional< ShaderCacheInvalidationReason > &cacheInvalidationReason)
 
+ + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual std::optional< ErrorsaveAdditionalCompilationResultsInfo (ConfigManager &cacheMetadataConfigManager) override
 
virtual std::optional< ErrorcheckCachedAdditionalCompilationResultsInfo (ConfigManager &cacheMetadataConfigManager, std::optional< ShaderCacheInvalidationReason > &cacheInvalidationReason) override
 
- Protected Member Functions inherited from ne::Shader
 Shader (Renderer *pRenderer, std::filesystem::path pathToCompiledShader, const std::string &sShaderName, ShaderType shaderType, std::optional< VertexFormat > vertexFormat)
 
virtual std::optional< ErrorsaveAdditionalCompilationResultsInfo (ConfigManager &cacheMetadataConfigManager)
 
virtual std::optional< ErrorcheckCachedAdditionalCompilationResultsInfo (ConfigManager &cacheMetadataConfigManager, std::optional< ShaderCacheInvalidationReason > &cacheInvalidationReason)
 
std::variant< std::filesystem::path, ErrorgetPathToCompiledShader ()
 
RenderergetRenderer () const
 
+ + + + + +

+Private Member Functions

std::variant< std::string, ErrorcalculateReflectionFileHash ()
 
std::optional< ErrorloadShaderDataFromDiskIfNotLoaded ()
 
+ + + +

+Static Private Member Functions

static std::variant< ComPtr< IDxcBlob >, ErrorreadBlobFromDisk (const std::filesystem::path &pathToFile)
 
+ + + + + + + +

+Private Attributes

std::pair< std::recursive_mutex, ComPtr< IDxcBlob > > mtxCompiledBytecode
 
std::pair< std::mutex, std::optional< RootSignatureGenerator::CollectedInfo > > mtxRootSignatureInfo
 
std::string sSourceFileHash
 
+ + + + + + + + + + + + + + + + + +

+Static Private Attributes

static UINT iShaderFileCodepage = DXC_CP_ACP
 
static auto sShaderReflectionFileExtension = ".reflection"
 
static const auto sReflectionFileHashKeyName = "reflection_file_hash"
 
static const auto sHlslSectionName = "HLSL"
 
static const UINT iStaticSamplerShaderRegisterSpace = 5
 
static constexpr std::string_view sVertexShaderModel = "vs_6_0"
 
static constexpr std::string_view sPixelShaderModel = "ps_6_0"
 
static constexpr std::string_view sComputeShaderModel = "cs_6_0"
 
+ + + + + + +

+Additional Inherited Members

- Static Protected Member Functions inherited from ne::Shader
static void notifyShaderBytecodeLoadedIntoMemory ()
 
static void notifyShaderBytecodeReleasedFromMemory ()
 
+

Detailed Description

+

Represents a compiled HLSL shader.

+

Constructor & Destructor Documentation

+ +

◆ HlslShader()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ne::HlslShader::HlslShader (RendererpRenderer,
std::filesystem::path pathToCompiledShader,
const std::string & sShaderName,
ShaderType shaderType,
const std::optional< VertexFormat > & vertexFormat,
const std::string & sSourceFileHash 
)
+
+

Constructor. Used to create shader using cache.

+
Parameters
+ + + + + + + +
pRendererUsed renderer.
pathToCompiledShaderPath to compiled shader bytecode on disk.
sShaderNameUnique name of this shader.
shaderTypeType of this shader.
vertexFormatVertex format that this shader uses (can be empty if not applicable, for example if this is a compute shader).
sSourceFileHashShader source file hash, used to tell what shaders were compiled from the same file.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ calculateReflectionFileHash()

+ +
+
+ + + + + +
+ + + + + + + +
std::variant< std::string, Error > ne::HlslShader::calculateReflectionFileHash ()
+
+private
+
+

Looks for reflection file next to the compiled shader bytecode file and calculates its hash.

+
Returns
Error if something went wrong, otherwise hash of the reflection file.
+ +
+
+ +

◆ checkCachedAdditionalCompilationResultsInfo()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::HlslShader::checkCachedAdditionalCompilationResultsInfo (ConfigManagercacheMetadataConfigManager,
std::optional< ShaderCacheInvalidationReason > & cacheInvalidationReason 
)
+
+overrideprotectedvirtual
+
+

Used to check cached data of shader language specific (additional) shader compilation results (such as reflection data, i.e. if there are some other compilation results besides compiled shader bytecode which is automatically hashed and checked) whether its valid or not.

+
Parameters
+ + + +
cacheMetadataConfigManagerConfig manager to write the data to.
cacheInvalidationReasonWill be not empty if cache was invalidated (i.e. cache can't be used).
+
+
+
Returns
Error if some internal error occurred.
+ +

Reimplemented from ne::Shader.

+ +
+
+ +

◆ compileShader()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::shared_ptr< Shader >, std::string, Error > ne::HlslShader::compileShader (RendererpRenderer,
const std::filesystem::path & cacheDirectory,
const std::string & sConfiguration,
const ShaderDescriptionshaderDescription 
)
+
+static
+
+

Compiles a shader.

+
Parameters
+ + + + + +
pRendererDirectX renderer.
cacheDirectoryDirectory to store this shader's cache, for example: ".../shader_cache/engine.default".
sConfigurationShader configuration text that will be added to the name.
shaderDescriptionDescription that describes the shader and how the shader should be compiled.
+
+
+
Returns
One of the three values: compiled shader, string containing shader compilation error/warning or an internal error.
+ +
+
+ +

◆ compileShaderToBytecode()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::variant< ComPtr< IDxcResult >, std::string, Error > ne::HlslShader::compileShaderToBytecode (const ShaderDescriptionshaderDescription,
const std::optional< std::filesystem::path > & pathToPdb 
)
+
+static
+
+

Compiles the specified shader file to bytecode.

+
Parameters
+ + + +
shaderDescriptionDescribes the shader and how the shader should be compiled.
pathToPdbPath where the PDB will be saved after compilation (outside of this function) in debug builds.
+
+
+
Returns
One of the three values: results of the compilation, string containing shader compilation error/warning or an internal error.
+ +
+
+ +

◆ getCompiledBlob()

+ +
+
+ + + + + + + +
std::variant< ComPtr< IDxcBlob >, Error > ne::HlslShader::getCompiledBlob ()
+
+

Loads compiled bytecode from disk and stores it in memory. Subsequent calls to this function will just copy the bytecode pointer (no disk loading will happen).

+
Returns
Compiled shader blob.
+ +
+
+ +

◆ getComputeShaderModel()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr std::string_view ne::HlslShader::getComputeShaderModel ()
+
+inlinestaticconstexpr
+
+

Returns used compute shader model version.

+
Returns
Compute shader model version.
+ +
+
+ +

◆ getPixelShaderModel()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr std::string_view ne::HlslShader::getPixelShaderModel ()
+
+inlinestaticconstexpr
+
+

Returns used pixel shader model version.

+
Returns
Pixel shader model version.
+ +
+
+ +

◆ getRootSignatureInfo()

+ +
+
+ + + + + + + +
std::pair< std::mutex, std::optional< RootSignatureGenerator::CollectedInfo > > * ne::HlslShader::getRootSignatureInfo ()
+
+

Returns information about root signature that can be used for this shader.

+
Returns
Empty if root signature information was not collected yet, use getCompiledBlob to collect and load everything, otherwise root signature info.
+ +
+
+ +

◆ getShaderCompilerVersion()

+ +
+
+ + + + + +
+ + + + + + + +
std::variant< std::string, Error > ne::HlslShader::getShaderCompilerVersion ()
+
+static
+
+

Returns current version of the HLSL shader compiler.

+
Returns
Compiler version.
+ +
+
+ +

◆ getShaderSourceFileHash()

+ +
+
+ + + + + + + +
std::string ne::HlslShader::getShaderSourceFileHash () const
+
+

Returns hash of the shader source file that was used to compile the shader.

+
Returns
Hash of the shader source file.
+ +
+
+ +

◆ getStaticComparisonSamplerDescription()

+ +
+
+ + + + + +
+ + + + + + + +
CD3DX12_STATIC_SAMPLER_DESC ne::HlslShader::getStaticComparisonSamplerDescription ()
+
+static
+
+

Returns description of a static comparison sampler.

+
Returns
Static sampler description.
+ +
+
+ +

◆ getStaticSamplerDescription()

+ +
+
+ + + + + +
+ + + + + + + + +
CD3DX12_STATIC_SAMPLER_DESC ne::HlslShader::getStaticSamplerDescription (TextureFilteringQuality textureFilteringQuality)
+
+static
+
+

Returns a static sampler description depending on the specified texture filtering mode.

+
Parameters
+ + +
textureFilteringQualityReturned sampler description will use the specified texture filtering.
+
+
+
Returns
Static sampler description.
+ +
+
+ +

◆ getStaticSamplerShaderRegisterSpace()

+ +
+
+ + + + + +
+ + + + + + + +
UINT ne::HlslShader::getStaticSamplerShaderRegisterSpace ()
+
+static
+
+

Returns shader register space (in HLSL) that should be used by different sampler types.

+
Returns
Shader register space.
+ +
+
+ +

◆ getVertexShaderModel()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr std::string_view ne::HlslShader::getVertexShaderModel ()
+
+inlinestaticconstexpr
+
+

Returns used vertex shader model version.

+
Returns
Vertex shader model version.
+ +
+
+ +

◆ loadShaderDataFromDiskIfNotLoaded()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::HlslShader::loadShaderDataFromDiskIfNotLoaded ()
+
+private
+
+

Loads shader data (bytecode, root signature, etc.) from disk cache if it's not loaded yet.

+
Returns
Error if something went wrong.
+ +
+
+ +

◆ readBlobFromDisk()

+ +
+
+ + + + + +
+ + + + + + + + +
std::variant< ComPtr< IDxcBlob >, Error > ne::HlslShader::readBlobFromDisk (const std::filesystem::path & pathToFile)
+
+staticprivate
+
+

Reads file and creates a new DXC blob using file's content.

+
Parameters
+ + +
pathToFilePath to the file to create blob from.
+
+
+
Returns
Error if something went wrong, otherwise created blob.
+ +
+
+ +

◆ releaseShaderDataFromMemoryIfLoaded()

+ +
+
+ + + + + +
+ + + + + + + +
bool ne::HlslShader::releaseShaderDataFromMemoryIfLoaded ()
+
+overridevirtual
+
+

Releases underlying shader bytecode for each shader from memory (this object will not be deleted) if the shader bytecode was loaded into memory. Next time this shader will be needed it will be loaded from disk.

+
Returns
false if was released from memory, true if was not loaded in memory previously.
+ +

Implements ne::Shader.

+ +
+
+ +

◆ saveAdditionalCompilationResultsInfo()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::HlslShader::saveAdditionalCompilationResultsInfo (ConfigManagercacheMetadataConfigManager)
+
+overrideprotectedvirtual
+
+

Used to save data of shader language specific (additional) shader compilation results (such as reflection data, i.e. if there are some other compilation results besides compiled shader bytecode which is automatically hashed and checked) to later check them in checkCachedAdditionalCompilationResultsInfo.

+
Parameters
+ + +
cacheMetadataConfigManagerConfig manager to write the data to.
+
+
+
Returns
Error if something went wrong.
+ +

Reimplemented from ne::Shader.

+ +
+
+

Member Data Documentation

+ +

◆ iShaderFileCodepage

+ +
+
+ + + + + +
+ + + + +
UINT ne::HlslShader::iShaderFileCodepage = DXC_CP_ACP
+
+inlinestaticprivate
+
+

Shader file encoding.

+ +
+
+ +

◆ iStaticSamplerShaderRegisterSpace

+ +
+
+ + + + + +
+ + + + +
const UINT ne::HlslShader::iStaticSamplerShaderRegisterSpace = 5
+
+inlinestaticprivate
+
+

Determines which shader register space (in HLSL) should be used by different sampler types.

+ +
+
+ +

◆ mtxCompiledBytecode

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, ComPtr<IDxcBlob> > ne::HlslShader::mtxCompiledBytecode
+
+private
+
+

Mutex for read/write operations on compiled bytecode (may be empty if not stored in memory right now).

+ +
+
+ +

◆ mtxRootSignatureInfo

+ +
+
+ + + + + +
+ + + + +
std::pair<std::mutex, std::optional<RootSignatureGenerator::CollectedInfo> > ne::HlslShader::mtxRootSignatureInfo
+
+private
+
+

Contains information used to create root signature.

+
Remarks
Might not be calculated yet, see loadShaderDataFromDiskIfNotLoaded for collecting root signature information.
+ +
+
+ +

◆ sComputeShaderModel

+ +
+
+ + + + + +
+ + + + +
constexpr std::string_view ne::HlslShader::sComputeShaderModel = "cs_6_0"
+
+staticconstexprprivate
+
+

Used compute shader model.

+ +
+
+ +

◆ sHlslSectionName

+ +
+
+ + + + + +
+ + + + +
const auto ne::HlslShader::sHlslSectionName = "HLSL"
+
+inlinestaticprivate
+
+

Name of the section used to store HLSL specific metadata.

+ +
+
+ +

◆ sPixelShaderModel

+ +
+
+ + + + + +
+ + + + +
constexpr std::string_view ne::HlslShader::sPixelShaderModel = "ps_6_0"
+
+staticconstexprprivate
+
+

Used pixel shader model.

+ +
+
+ +

◆ sReflectionFileHashKeyName

+ +
+
+ + + + + +
+ + + + +
const auto ne::HlslShader::sReflectionFileHashKeyName = "reflection_file_hash"
+
+inlinestaticprivate
+
+

Name of the key used to store reflection file hash in the metadata file.

+ +
+
+ +

◆ sShaderReflectionFileExtension

+ +
+
+ + + + + +
+ + + + +
auto ne::HlslShader::sShaderReflectionFileExtension = ".reflection"
+
+inlinestaticprivate
+
+

File extension for saving shader reflection data.

+ +
+
+ +

◆ sSourceFileHash

+ +
+
+ + + + + +
+ + + + +
std::string ne::HlslShader::sSourceFileHash
+
+private
+
+

Shader source file hash, used to tell what shaders were compiled from the same file.

+ +
+
+ +

◆ sVertexShaderModel

+ +
+
+ + + + + +
+ + + + +
constexpr std::string_view ne::HlslShader::sVertexShaderModel = "vs_6_0"
+
+staticconstexprprivate
+
+

Used vertex shader model.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/hlsl/HlslShader.h
  • +
  • src/engine_lib/private/shader/hlsl/HlslShader.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1HlslShader.js b/classne_1_1HlslShader.js new file mode 100644 index 000000000..73276d947 --- /dev/null +++ b/classne_1_1HlslShader.js @@ -0,0 +1,33 @@ +var classne_1_1HlslShader = +[ + [ "HlslShader", "classne_1_1HlslShader.html#a52534285c30371025fe925380b469e4b", null ], + [ "calculateReflectionFileHash", "classne_1_1HlslShader.html#ae95b76a7d079b79a8bf3e33adc47394e", null ], + [ "checkCachedAdditionalCompilationResultsInfo", "classne_1_1HlslShader.html#abda558c5f5894029e8a8f142e4bb80a0", null ], + [ "compileShader", "classne_1_1HlslShader.html#a09710beab6f8be11dd315b92279df72e", null ], + [ "compileShaderToBytecode", "classne_1_1HlslShader.html#ae2eb43e5f828d21adde32b6fe6788e5f", null ], + [ "getCompiledBlob", "classne_1_1HlslShader.html#a8a15f4befc886abb6c34237c904629ed", null ], + [ "getComputeShaderModel", "classne_1_1HlslShader.html#ae22f3feedd16a9ffc8a141bc90627266", null ], + [ "getPixelShaderModel", "classne_1_1HlslShader.html#a1afb11ee133fd07c0c68c9b3c52fbc79", null ], + [ "getRootSignatureInfo", "classne_1_1HlslShader.html#a80bcace02f77fc952d1491ac39726190", null ], + [ "getShaderCompilerVersion", "classne_1_1HlslShader.html#a17d394f3fc24a7079f0e61d674d1b6cb", null ], + [ "getShaderSourceFileHash", "classne_1_1HlslShader.html#a531f22aaacd342827821d80c48600f76", null ], + [ "getStaticComparisonSamplerDescription", "classne_1_1HlslShader.html#af8def282438e6998f68c2417720ca79a", null ], + [ "getStaticSamplerDescription", "classne_1_1HlslShader.html#a41de1137a06282d0962edfdffae5ac28", null ], + [ "getStaticSamplerShaderRegisterSpace", "classne_1_1HlslShader.html#a66ac995bf2aaf0eb2deaa5f1f9f15301", null ], + [ "getVertexShaderModel", "classne_1_1HlslShader.html#ab5c80083b5c0a201bd146bbd3646b230", null ], + [ "loadShaderDataFromDiskIfNotLoaded", "classne_1_1HlslShader.html#aa071a4a5a1de69cedf489a678a530b60", null ], + [ "readBlobFromDisk", "classne_1_1HlslShader.html#ac23cb997145345f3b130f4d809e494ba", null ], + [ "releaseShaderDataFromMemoryIfLoaded", "classne_1_1HlslShader.html#a634592389dcf017cf0929200549421e5", null ], + [ "saveAdditionalCompilationResultsInfo", "classne_1_1HlslShader.html#a07c69fd957ba46965313bc22d8e51974", null ], + [ "iShaderFileCodepage", "classne_1_1HlslShader.html#a441a6b3006a0d6ab05c1f355ff3c6897", null ], + [ "iStaticSamplerShaderRegisterSpace", "classne_1_1HlslShader.html#a7a62c05906b0527e0994f00627dc1ecd", null ], + [ "mtxCompiledBytecode", "classne_1_1HlslShader.html#af695cac90908c7aa75559db55cd32dfd", null ], + [ "mtxRootSignatureInfo", "classne_1_1HlslShader.html#ac79b32a972640b83aa631593fff2e45d", null ], + [ "sComputeShaderModel", "classne_1_1HlslShader.html#a3a1517efc4f9ba7dac5a6457a0cb368e", null ], + [ "sHlslSectionName", "classne_1_1HlslShader.html#a99f9b9469f4040bc49fb10fd065b70be", null ], + [ "sPixelShaderModel", "classne_1_1HlslShader.html#a39925e2307d5c222077ddccd94b5818d", null ], + [ "sReflectionFileHashKeyName", "classne_1_1HlslShader.html#a9d599c25ac642d528bcf617b307cbe75", null ], + [ "sShaderReflectionFileExtension", "classne_1_1HlslShader.html#a4b03d7874db7cb265d4321ec3fce941a", null ], + [ "sSourceFileHash", "classne_1_1HlslShader.html#a4e3883efa2d40c42aebbb95e0734fe6b", null ], + [ "sVertexShaderModel", "classne_1_1HlslShader.html#afe96d0b49ab1947a4aecf2304fcdb223", null ] +]; \ No newline at end of file diff --git a/classne_1_1HlslShader.png b/classne_1_1HlslShader.png new file mode 100644 index 0000000000000000000000000000000000000000..c19cdb5e74a9c3b78be7bdda5e798eebddac5270 GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^aX=iv!3-pqvl;0CDd_;85ZC|z{{xvX-h3_XKeXJ! zK(jz%`k5C84jcfA2T!`Z0w~8>666=m0OW&#In(Sb3=E8=o-U3d6^w7^=H|C5@U;5# zcfS1p|EM$L(xmra^^|8v_O^>h%XxYK>6sEVOI>BsoTUdQFIjBgH2u#SSx>3n_DU2kFWW;r+1(GjM(4(Y10q>w%r$Y zS)$Kj_lDWe(<|0*nLao8>Fkq*AJx9AWIlcTy7q>5cG3QGTzBrsOfu=J=kv7UvhlR4 zvawq_Wf>=f-9;vb&nDvgb%K8uf1GJI*lzq@t1%++ht^NwtvF#G2gh3#K6u2vkH zK9xOLy))~7*sG&W$=7Ory{LY_?di80Yj-u9_;2oZR>srD9LV36omJ$&tSI UG9|a21;z@4r>mdKI;Vst0K<#x)c^nh literal 0 HcmV?d00001 diff --git a/classne_1_1HlslShaderCacheManager-members.html b/classne_1_1HlslShaderCacheManager-members.html new file mode 100644 index 000000000..c19742689 --- /dev/null +++ b/classne_1_1HlslShaderCacheManager-members.html @@ -0,0 +1,128 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::HlslShaderCacheManager Member List
+
+
+ +

This is the complete list of members for ne::HlslShaderCacheManager, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
create(Renderer *pRenderer)ne::ShaderCacheManagerprivatestatic
createNewShaderCache()ne::ShaderCacheManagerprivate
HlslShaderCacheManager(const HlslShaderCacheManager &)=delete (defined in ne::HlslShaderCacheManager)ne::HlslShaderCacheManager
HlslShaderCacheManager(Renderer *pRenderer)ne::HlslShaderCacheManagerprivate
isGlobalShaderCacheOutdated(const ConfigManager &cacheConfig)ne::ShaderCacheManagerprivate
isLanguageSpecificGlobalCacheOutdated(const ConfigManager &cacheConfig) overridene::HlslShaderCacheManagerprotectedvirtual
operator=(const HlslShaderCacheManager &)=delete (defined in ne::HlslShaderCacheManager)ne::HlslShaderCacheManager
operator=(const ShaderCacheManager &)=delete (defined in ne::ShaderCacheManager)ne::ShaderCacheManager
pRendererne::ShaderCacheManagerprivate
refreshShaderCache()ne::ShaderCacheManager
sGlobalShaderCacheInfoFileNamene::ShaderCacheManagerprivatestatic
ShaderCacheManager (defined in ne::HlslShaderCacheManager)ne::HlslShaderCacheManagerfriend
ShaderCacheManager(const ShaderCacheManager &)=delete (defined in ne::ShaderCacheManager)ne::ShaderCacheManager
ne::ShaderCacheManager::ShaderCacheManager(Renderer *pRenderer)ne::ShaderCacheManagerprotected
sHlslSectionNamene::HlslShaderCacheManagerprivatestatic
writeLanguageSpecificParameters(ConfigManager &cacheConfig) overridene::HlslShaderCacheManagerprotectedvirtual
~HlslShaderCacheManager() override=default (defined in ne::HlslShaderCacheManager)ne::HlslShaderCacheManagervirtual
~ShaderCacheManager()=default (defined in ne::ShaderCacheManager)ne::ShaderCacheManagervirtual
+
+ + + + diff --git a/classne_1_1HlslShaderCacheManager.html b/classne_1_1HlslShaderCacheManager.html new file mode 100644 index 000000000..823f4f709 --- /dev/null +++ b/classne_1_1HlslShaderCacheManager.html @@ -0,0 +1,318 @@ + + + + + + + +Nameless Engine: ne::HlslShaderCacheManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <HlslShaderCacheManager.h>

+
+Inheritance diagram for ne::HlslShaderCacheManager:
+
+
+ + +ne::ShaderCacheManager + +
+ + + + +

+Classes

struct  GlobalShaderCacheParameterNames
 
+ + + + + + + + + + + + +

+Public Member Functions

HlslShaderCacheManager (const HlslShaderCacheManager &)=delete
 
+HlslShaderCacheManageroperator= (const HlslShaderCacheManager &)=delete
 
- Public Member Functions inherited from ne::ShaderCacheManager
ShaderCacheManager (const ShaderCacheManager &)=delete
 
+ShaderCacheManageroperator= (const ShaderCacheManager &)=delete
 
std::optional< ErrorrefreshShaderCache ()
 
+ + + + + + + + + + + + +

+Protected Member Functions

virtual std::optional< std::string > isLanguageSpecificGlobalCacheOutdated (const ConfigManager &cacheConfig) override
 
virtual std::optional< ErrorwriteLanguageSpecificParameters (ConfigManager &cacheConfig) override
 
- Protected Member Functions inherited from ne::ShaderCacheManager
 ShaderCacheManager (Renderer *pRenderer)
 
virtual std::optional< std::string > isLanguageSpecificGlobalCacheOutdated (const ConfigManager &cacheConfig)=0
 
virtual std::optional< ErrorwriteLanguageSpecificParameters (ConfigManager &cacheConfig)=0
 
+ + + +

+Private Member Functions

 HlslShaderCacheManager (Renderer *pRenderer)
 
+ + + +

+Static Private Attributes

static constexpr std::string_view sHlslSectionName = "hlsl"
 
+ + + +

+Friends

+class ShaderCacheManager
 
+

Detailed Description

+

Responsible for validating HLSL shader cache, reading and updating the cache.

+

Constructor & Destructor Documentation

+ +

◆ HlslShaderCacheManager()

+ +
+
+ + + + + +
+ + + + + + + + +
ne::HlslShaderCacheManager::HlslShaderCacheManager (RendererpRenderer)
+
+private
+
+

Constructs a new manager.

+
Parameters
+ + +
pRendererUsed renderer.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ isLanguageSpecificGlobalCacheOutdated()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< std::string > ne::HlslShaderCacheManager::isLanguageSpecificGlobalCacheOutdated (const ConfigManagercacheConfig)
+
+overrideprotectedvirtual
+
+

Makes sure that the cache was generated using the same parameters as the current renderer's state and that the cache can be safely used. This function checks shader language specific parameters that might have changed.

+
Parameters
+ + +
cacheConfigConfig that stores global cache parameters.
+
+
+
Returns
Empty if cache can be safely used, otherwise reason why it's outdated and cache can't be used.
+ +

Implements ne::ShaderCacheManager.

+ +
+
+ +

◆ writeLanguageSpecificParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::HlslShaderCacheManager::writeLanguageSpecificParameters (ConfigManagercacheConfig)
+
+overrideprotectedvirtual
+
+

Writes shader language specific parameters that affect shader cache into the specified config.

+
Parameters
+ + +
cacheConfigConfig that stores global cache parameters.
+
+
+
Returns
Error if something went wrong.
+ +

Implements ne::ShaderCacheManager.

+ +
+
+

Member Data Documentation

+ +

◆ sHlslSectionName

+ +
+
+ + + + + +
+ + + + +
constexpr std::string_view ne::HlslShaderCacheManager::sHlslSectionName = "hlsl"
+
+staticconstexprprivate
+
+

Name of the section in TOML file where all HLSL parameters are stored.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/hlsl/cache/HlslShaderCacheManager.h
  • +
  • src/engine_lib/private/shader/hlsl/cache/HlslShaderCacheManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1HlslShaderCacheManager.js b/classne_1_1HlslShaderCacheManager.js new file mode 100644 index 000000000..a7b192703 --- /dev/null +++ b/classne_1_1HlslShaderCacheManager.js @@ -0,0 +1,8 @@ +var classne_1_1HlslShaderCacheManager = +[ + [ "GlobalShaderCacheParameterNames", "structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames.html", "structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames" ], + [ "HlslShaderCacheManager", "classne_1_1HlslShaderCacheManager.html#a5df914d1383c5b5e3c39958254081570", null ], + [ "isLanguageSpecificGlobalCacheOutdated", "classne_1_1HlslShaderCacheManager.html#a9b2ee2a8a96dd7b97bd36b1316ff9b2c", null ], + [ "writeLanguageSpecificParameters", "classne_1_1HlslShaderCacheManager.html#aec21c88348aaf39b0e402c1596bade44", null ], + [ "sHlslSectionName", "classne_1_1HlslShaderCacheManager.html#abba14bfece867f7e7a1ff9b94cf56ee6", null ] +]; \ No newline at end of file diff --git a/classne_1_1HlslShaderCacheManager.png b/classne_1_1HlslShaderCacheManager.png new file mode 100644 index 0000000000000000000000000000000000000000..52a0b6b3244700b3d1c40955316b14bf0061009a GIT binary patch literal 778 zcmeAS@N?(olHy`uVBq!ia0vp^+kiNLgBeIR8`rM{QqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#NtQdb&7w?qG()^+h72Ec}iAFWo9{oGIE%$cSA-74ZH8*$`O=Fs^lKxV!?AHH# z>XS@fy^EQs61us(Xnnu(N$XvmwK^N*_a#5~n6%3DM*8(in@M|=*{x&itg=n*({k+P z-amLH`(Nwz*Ocd(Ir(=!s;->fUYquHRcB3T_@?Bo;p`dcs?dT<6P4cznJ)Q!=E+>J@chkh^E|&VQLEC6 z)lcT#oiu#ciHf*RpRBc3XaK`jV{VH=B-My=|PleCN%Nzjntu-KspBW^pL* z$D}oHH}0P_fB(z=BXS|f9&f%|ci7|7i;b>Mlag7@JkJFsOn##C_QvgPxu-c9{(0#$ zMEGYX?T_;=THm=hc>RgJ8f7(}3<>j?q#4pQH!vnlBY|;1W9gJ@!jn2qWO3yPPK*Q- zzdCC9-X0hFysskviP4Sr*V5@rI##5;e{!$?)7DZ zCZ00C!n6G|H^{FKFXYwQCsY(QW8R@}$7JKXYlT9$In8h>xvYJY6BxYNsaJ!I-#f|n zmGAT2R$8+5>|?{P$}5gM_t@Muv99o)6W494-rCrly}fsoGT)wVe)&>tcUuW}>Zfy= zZ>&#!%kW;crM&V5*L{7V_0u=DxAngNuJkdhx+6De>3)^_75jS1_wkk8JeNBu)bX}e z#dp8r&5ys9?{3-hdDhv2mb)KfABSI3tg+hmzxvOgoY(XBw{CECsbbyMaY6@7yuG2h dbjzH7j9;y%rkTbtmjF{OgQu&X%Q~loCID+$evkkF literal 0 HcmV?d00001 diff --git a/classne_1_1HlslShaderTextureResourceBinding-members.html b/classne_1_1HlslShaderTextureResourceBinding-members.html new file mode 100644 index 000000000..f23855647 --- /dev/null +++ b/classne_1_1HlslShaderTextureResourceBinding-members.html @@ -0,0 +1,128 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::HlslShaderTextureResourceBinding Member List
+
+
+ +

This is the complete list of members for ne::HlslShaderTextureResourceBinding, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
bBindSrvToCubemapFacesne::HlslShaderTextureResourceBindingprivatestatic
changeUsedPipelines(const std::unordered_set< Pipeline * > &pipelinesToUse) overridene::HlslShaderTextureResourceBindingvirtual
copyResourceIndexToRootConstants(PipelineShaderConstantsManager *pShaderConstantsManager, DirectXPso *pUsedPipeline)ne::HlslShaderTextureResourceBindinginline
create(const std::string &sShaderResourceName, const std::unordered_set< Pipeline * > &pipelinesToUse, std::unique_ptr< TextureHandle > pTextureToUse)ne::HlslShaderTextureResourceBindingprivatestatic
getShaderResourceName() constne::ShaderResourceBindingBase
getSrvDescriptorRangeAndRootConstantIndex(DirectXPso *pPipeline, const std::string &sShaderResourceName)ne::HlslShaderTextureResourceBindingprivatestatic
HlslShaderTextureResourceBinding(const std::string &sResourceName, std::unique_ptr< TextureHandle > pTextureToUse, std::unordered_map< DirectXPso *, std::pair< ContinuousDirectXDescriptorRange *, size_t > > &&usedDescriptorRanges)ne::HlslShaderTextureResourceBindingprotected
mtxUsedPipelineDescriptorRangesne::HlslShaderTextureResourceBindingprivate
mtxUsedTexturene::HlslShaderTextureResourceBindingprivate
onAfterAllPipelinesRefreshedResources() overridene::HlslShaderTextureResourceBindingprotectedvirtual
ShaderResourceBindingBase(const std::string &sShaderResourceName)ne::ShaderResourceBindingBaseprotected
ShaderTextureResourceBinding(const std::string &sShaderResourceName)ne::ShaderTextureResourceBindingprotected
ShaderTextureResourceBindingManager (defined in ne::HlslShaderTextureResourceBinding)ne::HlslShaderTextureResourceBindingfriend
sShaderResourceNamene::ShaderResourceBindingBaseprivate
useNewTexture(std::unique_ptr< TextureHandle > pTextureToUse) overridene::HlslShaderTextureResourceBindingvirtual
~HlslShaderTextureResourceBinding() override=default (defined in ne::HlslShaderTextureResourceBinding)ne::HlslShaderTextureResourceBindingvirtual
~ShaderResourceBindingBase()=default (defined in ne::ShaderResourceBindingBase)ne::ShaderResourceBindingBasevirtual
~ShaderTextureResourceBinding() override=default (defined in ne::ShaderTextureResourceBinding)ne::ShaderTextureResourceBindingvirtual
+
+ + + + diff --git a/classne_1_1HlslShaderTextureResourceBinding.html b/classne_1_1HlslShaderTextureResourceBinding.html new file mode 100644 index 000000000..c69546a0a --- /dev/null +++ b/classne_1_1HlslShaderTextureResourceBinding.html @@ -0,0 +1,561 @@ + + + + + + + +Nameless Engine: ne::HlslShaderTextureResourceBinding Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <HlslShaderTextureResourceBinding.h>

+
+Inheritance diagram for ne::HlslShaderTextureResourceBinding:
+
+
+ + +ne::ShaderTextureResourceBinding +ne::ShaderResourceBindingBase + +
+ + + + + + + + + + + + + + + +

+Public Member Functions

void copyResourceIndexToRootConstants (PipelineShaderConstantsManager *pShaderConstantsManager, DirectXPso *pUsedPipeline)
 
virtual std::optional< ErroruseNewTexture (std::unique_ptr< TextureHandle > pTextureToUse) override
 
virtual std::optional< ErrorchangeUsedPipelines (const std::unordered_set< Pipeline * > &pipelinesToUse) override
 
virtual std::optional< ErroruseNewTexture (std::unique_ptr< TextureHandle > pTextureToUse)=0
 
- Public Member Functions inherited from ne::ShaderResourceBindingBase
virtual std::optional< ErrorchangeUsedPipelines (const std::unordered_set< Pipeline * > &pipelinesToUse)=0
 
std::string getShaderResourceName () const
 
+ + + + + + + + + + + + + +

+Protected Member Functions

 HlslShaderTextureResourceBinding (const std::string &sResourceName, std::unique_ptr< TextureHandle > pTextureToUse, std::unordered_map< DirectXPso *, std::pair< ContinuousDirectXDescriptorRange *, size_t > > &&usedDescriptorRanges)
 
virtual std::optional< ErroronAfterAllPipelinesRefreshedResources () override
 
- Protected Member Functions inherited from ne::ShaderTextureResourceBinding
 ShaderTextureResourceBinding (const std::string &sShaderResourceName)
 
- Protected Member Functions inherited from ne::ShaderResourceBindingBase
 ShaderResourceBindingBase (const std::string &sShaderResourceName)
 
virtual std::optional< ErroronAfterAllPipelinesRefreshedResources ()=0
 
+ + + + + +

+Static Private Member Functions

static std::variant< std::unique_ptr< ShaderTextureResourceBinding >, Errorcreate (const std::string &sShaderResourceName, const std::unordered_set< Pipeline * > &pipelinesToUse, std::unique_ptr< TextureHandle > pTextureToUse)
 
static std::variant< std::pair< ContinuousDirectXDescriptorRange *, size_t >, ErrorgetSrvDescriptorRangeAndRootConstantIndex (DirectXPso *pPipeline, const std::string &sShaderResourceName)
 
+ + + + + +

+Private Attributes

std::pair< std::mutex, std::unique_ptr< TextureHandle > > mtxUsedTexture
 
std::pair< std::recursive_mutex, std::unordered_map< DirectXPso *, std::pair< ContinuousDirectXDescriptorRange *, size_t > > > mtxUsedPipelineDescriptorRanges
 
+ + + +

+Static Private Attributes

static constexpr bool bBindSrvToCubemapFaces = false
 
+ + + +

+Friends

+class ShaderTextureResourceBindingManager
 
+

Detailed Description

+

References some texture from shader code.

+

Constructor & Destructor Documentation

+ +

◆ HlslShaderTextureResourceBinding()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ne::HlslShaderTextureResourceBinding::HlslShaderTextureResourceBinding (const std::string & sResourceName,
std::unique_ptr< TextureHandlepTextureToUse,
std::unordered_map< DirectXPso *, std::pair< ContinuousDirectXDescriptorRange *, size_t > > && usedDescriptorRanges 
)
+
+protected
+
+

Initializes the resource.

+
Remarks
Used internally, for outside usage prefer to use create.
+
Parameters
+ + + + +
sResourceNameName of the resource we are referencing (should be exactly the same as the resource name written in the shader file we are referencing).
pTextureToUseTexture to which a descriptor should be binded.
usedDescriptorRangesDescriptor ranges that have an SRV binded to the specified texture and a shader constant index for our shader resource.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ changeUsedPipelines()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::HlslShaderTextureResourceBinding::changeUsedPipelines (const std::unordered_set< Pipeline * > & pipelinesToUse)
+
+overridevirtual
+
+

Called to make the resource to discard currently used pipelines and bind/reference other pipelines.

+
Warning
Expects that the caller is using some mutex to protect this shader resource from being used in the draw function while this function is not finished (i.e. make sure the CPU will not queue a new frame while this function is not finished).
+
Remarks
For example, for this function can be called from a mesh node that changed its geometry and thus added/removed some material slots, or if some material that mesh node is using changed its pipeline.
+
Parameters
+ + +
pipelinesToUsePipelines to use instead of the current ones.
+
+
+
Returns
Error if something went wrong.
+ +

Implements ne::ShaderResourceBindingBase.

+ +
+
+ +

◆ copyResourceIndexToRootConstants()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::HlslShaderTextureResourceBinding::copyResourceIndexToRootConstants (PipelineShaderConstantsManagerpShaderConstantsManager,
DirectXPsopUsedPipeline 
)
+
+inline
+
+

Copies resource index (into shader arrays) to a root constant.

+
Parameters
+ + + +
pShaderConstantsManagerShader constants manager.
pUsedPipelineCurrent pipeline.
+
+
+ +
+
+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< ShaderTextureResourceBinding >, Error > ne::HlslShaderTextureResourceBinding::create (const std::string & sShaderResourceName,
const std::unordered_set< Pipeline * > & pipelinesToUse,
std::unique_ptr< TextureHandlepTextureToUse 
)
+
+staticprivate
+
+

Creates a new HLSL shader resource.

+
Parameters
+ + + + +
sShaderResourceNameName of the resource we are referencing (should be exactly the same as the resource name written in the shader file we are referencing).
pipelinesToUsePipelines that use shader/parameters we are referencing.
pTextureToUseTexture to which a descriptor should be binded.
+
+
+
Returns
Error if something went wrong, otherwise created shader resource.
+ +
+
+ +

◆ getSrvDescriptorRangeAndRootConstantIndex()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::variant< std::pair< ContinuousDirectXDescriptorRange *, size_t >, Error > ne::HlslShaderTextureResourceBinding::getSrvDescriptorRangeAndRootConstantIndex (DirectXPsopPipeline,
const std::string & sShaderResourceName 
)
+
+staticprivate
+
+

In the specified pipeline looks for a descriptor range that handles a shader resource with the specified name (creates a new descriptor range if not found and returns a pointer to it).

+
Parameters
+ + + +
pPipelinePipeline to look in.
sShaderResourceNameShader resource to look for.
+
+
+
Returns
Error if something went wrong, otherwise a pointer to descriptor range from the pipeline and an index of the root constant that is used to index into our shader resource.
+ +
+
+ +

◆ onAfterAllPipelinesRefreshedResources()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::HlslShaderTextureResourceBinding::onAfterAllPipelinesRefreshedResources ()
+
+overrideprotectedvirtual
+
+

Called from pipeline manager to notify that all pipelines released their internal resources and now restored them so their internal resources (for example push constants) might be different now and shader resource now needs to check that everything that it needs is still there and possibly re-bind to pipeline's descriptors since these might have been also re-created.

+
Returns
Error if something went wrong.
+ +

Implements ne::ShaderResourceBindingBase.

+ +
+
+ +

◆ useNewTexture()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::HlslShaderTextureResourceBinding::useNewTexture (std::unique_ptr< TextureHandlepTextureToUse)
+
+overridevirtual
+
+

Makes the shader resource to reference the new (specified) texture.

+
Warning
Expects that the caller is using some mutex to protect this shader resource from being used in the draw function while this function is not finished (i.e. make sure the CPU will not queue a new frame while this function is not finished).
+
Parameters
+ + +
pTextureToUseTexture to reference.
+
+
+
Returns
Error if something went wrong.
+ +

Implements ne::ShaderTextureResourceBinding.

+ +
+
+

Member Data Documentation

+ +

◆ bBindSrvToCubemapFaces

+ +
+
+ + + + + +
+ + + + +
constexpr bool ne::HlslShaderTextureResourceBinding::bBindSrvToCubemapFaces = false
+
+staticconstexprprivate
+
+

false to avoid binding descriptors to cubemap faces - I don't see any point in that here, we don't use individual cubemap faces in this case

+ +
+
+ +

◆ mtxUsedPipelineDescriptorRanges

+ +
+
+ + + + + +
+ + + + +
std::pair< std::recursive_mutex, std::unordered_map<DirectXPso*, std::pair<ContinuousDirectXDescriptorRange*, size_t> > > ne::HlslShaderTextureResourceBinding::mtxUsedPipelineDescriptorRanges
+
+private
+
+

Stores a raw pointer (per-pipeline) to a descriptor range (from the pipeline) that was used to bind an SRV to mtxUsedTexture and an offset of the shader constant for our shader resource.

+
Remarks
Storing raw pointers to descriptor ranges here is safe because before a PSO releases its internal resources (and destroys descriptor ranges) it will pause the rendering then destroy its descriptor tables, then we will be notified through onAfterAllPipelinesRefreshedResources to reference new descriptor ranges.
+ +
+
+ +

◆ mtxUsedTexture

+ +
+
+ + + + + +
+ + + + +
std::pair<std::mutex, std::unique_ptr<TextureHandle> > ne::HlslShaderTextureResourceBinding::mtxUsedTexture
+
+private
+
+

Texture to which a descriptor should be binded.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/hlsl/resource/binding/texture/HlslShaderTextureResourceBinding.h
  • +
  • src/engine_lib/private/shader/hlsl/resource/binding/texture/HlslShaderTextureResourceBinding.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1HlslShaderTextureResourceBinding.js b/classne_1_1HlslShaderTextureResourceBinding.js new file mode 100644 index 000000000..d1f406d53 --- /dev/null +++ b/classne_1_1HlslShaderTextureResourceBinding.js @@ -0,0 +1,13 @@ +var classne_1_1HlslShaderTextureResourceBinding = +[ + [ "HlslShaderTextureResourceBinding", "classne_1_1HlslShaderTextureResourceBinding.html#a6c68f6b53eb496857c6de0a3b7c41c6e", null ], + [ "changeUsedPipelines", "classne_1_1HlslShaderTextureResourceBinding.html#a60b75ced6ba8617241c0e9ee60fa01ca", null ], + [ "copyResourceIndexToRootConstants", "classne_1_1HlslShaderTextureResourceBinding.html#a1fb8e8bdcbf5668c7ab21eda2126d78a", null ], + [ "create", "classne_1_1HlslShaderTextureResourceBinding.html#a8167b40dbcfc97fe14f6304029a6b9fe", null ], + [ "getSrvDescriptorRangeAndRootConstantIndex", "classne_1_1HlslShaderTextureResourceBinding.html#af32b2a6dbe5ff88c31a736a34e594546", null ], + [ "onAfterAllPipelinesRefreshedResources", "classne_1_1HlslShaderTextureResourceBinding.html#ad64467fd97a647a3b480de5aedfe5961", null ], + [ "useNewTexture", "classne_1_1HlslShaderTextureResourceBinding.html#a9a3ab85bf79d675a5d26c5c3390a276c", null ], + [ "bBindSrvToCubemapFaces", "classne_1_1HlslShaderTextureResourceBinding.html#abfd8465268d8b4245db76e446ea5a2f2", null ], + [ "mtxUsedPipelineDescriptorRanges", "classne_1_1HlslShaderTextureResourceBinding.html#a3d27a9b290c65e7192b2d30c46f34d79", null ], + [ "mtxUsedTexture", "classne_1_1HlslShaderTextureResourceBinding.html#a84d54d200a7425ad069855b72675b3e6", null ] +]; \ No newline at end of file diff --git a/classne_1_1HlslShaderTextureResourceBinding.png b/classne_1_1HlslShaderTextureResourceBinding.png new file mode 100644 index 0000000000000000000000000000000000000000..254a1f744a9223d3e0a987e51565d7849f3a544e GIT binary patch literal 1274 zcmb7E`BTyf6#sf<$C_6=X{C8!t2<_DnFdMWD1oCS=!ThyMXpDIrD1BQWyg|7={K)1 z7t#$3`I@oTNq{zC4$H1wPs5!?(9F%n|Ytld+#&vm-m@@S0iu-EY@yX z3jlxx786V`u-cH!)g}g1TqIf`>?(WJPo6w6%p<`e zzCl}ahJcF%4E=xMZ(J<{0MpCZU{qA5(NxU`urA<-OV#y1bN|j8b2Fv%RM@`hys3D> zx@~*U?Pfn%{x}+<*Px=YzK?9mV6Gl0tS?B*_ZogbR|qR+mGVfb!Qf2P!^ZJN*=5mI zy`$Q3_{akj`ZLU|n6YC=uWpGlkTBdvnG^X{cTA-peEPXXzxB0zjKR;Q9Y&;2QbMAv_pJNFuB{A5pTzaofAv=S}OQT{Oe`!w}`gqf8Iaw zi*UNZJ|eND*szMcnDKlB7Q*Z9Iy`zsWY%C$e`}`c<`TX;YQhCia-^y zLD$NR6~U6rSMIZNsFn)?tqA7?EYSmj_*H$z%b8(8@OA2Ed(0hIepZ%y{~^B^{pFCq8(Y_R^q zS@9)Wg;eLxT+yPvs$_%1cOF6Ry=z1#5oacESjJ=s!~E9|kC#qUnwR(eR*+otW+n>P z(!O@G%0KQamt4E~9;Z9#IG#9{X>)G + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::HlslVertexFormatDescription Member List
+
+
+ +

This is the complete list of members for ne::HlslVertexFormatDescription, including all inherited members.

+ + + + + + + + + +
createDescription(VertexFormat type)ne::HlslVertexFormatDescriptionstatic
ne::VertexFormatDescription::createDescription(VertexFormat type, Renderer *pRenderer)ne::VertexFormatDescriptionstatic
getShaderInputElementDescription()=0ne::HlslVertexFormatDescriptionpure virtual
getVertexSemanticLocations()=0ne::HlslVertexFormatDescriptionpure virtual
HlslVertexFormatDescription()=default (defined in ne::HlslVertexFormatDescription)ne::HlslVertexFormatDescription
VertexFormatDescription()=default (defined in ne::VertexFormatDescription)ne::VertexFormatDescription
~HlslVertexFormatDescription() override=default (defined in ne::HlslVertexFormatDescription)ne::HlslVertexFormatDescriptionvirtual
~VertexFormatDescription()=default (defined in ne::VertexFormatDescription)ne::VertexFormatDescriptionvirtual
+
+ + + + diff --git a/classne_1_1HlslVertexFormatDescription.html b/classne_1_1HlslVertexFormatDescription.html new file mode 100644 index 000000000..8f5cd1363 --- /dev/null +++ b/classne_1_1HlslVertexFormatDescription.html @@ -0,0 +1,239 @@ + + + + + + + +Nameless Engine: ne::HlslVertexFormatDescription Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::HlslVertexFormatDescription Class Referenceabstract
+
+
+ +

#include <HlslVertexFormatDescription.h>

+
+Inheritance diagram for ne::HlslVertexFormatDescription:
+
+
+ + +ne::VertexFormatDescription +ne::MeshNodeHlslVertexFormatDescription + +
+ + + + + + +

+Public Member Functions

virtual std::vector< std::string > getVertexSemanticLocations ()=0
 
virtual std::vector< D3D12_INPUT_ELEMENT_DESC > getShaderInputElementDescription ()=0
 
+ + + + + + +

+Static Public Member Functions

static std::unique_ptr< HlslVertexFormatDescriptioncreateDescription (VertexFormat type)
 
- Static Public Member Functions inherited from ne::VertexFormatDescription
static std::unique_ptr< VertexFormatDescriptioncreateDescription (VertexFormat type, Renderer *pRenderer)
 
+

Detailed Description

+

Describes a vertex format for DirectX/HLSL.

+

Member Function Documentation

+ +

◆ createDescription()

+ +
+
+ + + + + +
+ + + + + + + + +
std::unique_ptr< HlslVertexFormatDescription > ne::HlslVertexFormatDescription::createDescription (VertexFormat type)
+
+static
+
+

Creates vertex format description.

+
Parameters
+ + +
typeType of the vertex format.
+
+
+
Returns
Vertex format description.
+ +
+
+ +

◆ getShaderInputElementDescription()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::vector< D3D12_INPUT_ELEMENT_DESC > ne::HlslVertexFormatDescription::getShaderInputElementDescription ()
+
+pure virtual
+
+

Returns shader input layout description (vertex attribute description).

+
Returns
Input layout description.
+ +

Implemented in ne::MeshNodeHlslVertexFormatDescription.

+ +
+
+ +

◆ getVertexSemanticLocations()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::vector< std::string > ne::HlslVertexFormatDescription::getVertexSemanticLocations ()
+
+pure virtual
+
+

Returns information about vertex semantics used by shaders.

+
Returns
Array of semantics where index (in the array) describes semantic location.
+ +

Implemented in ne::MeshNodeHlslVertexFormatDescription.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/hlsl/format/HlslVertexFormatDescription.h
  • +
  • src/engine_lib/private/shader/hlsl/format/HlslVertexFormatDescription.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1HlslVertexFormatDescription.js b/classne_1_1HlslVertexFormatDescription.js new file mode 100644 index 000000000..2cc6ac6d2 --- /dev/null +++ b/classne_1_1HlslVertexFormatDescription.js @@ -0,0 +1,6 @@ +var classne_1_1HlslVertexFormatDescription = +[ + [ "createDescription", "classne_1_1HlslVertexFormatDescription.html#a7a40cf759e48c9f51406169c771badad", null ], + [ "getShaderInputElementDescription", "classne_1_1HlslVertexFormatDescription.html#ad43948e45c4b369c0fe99f8972547eff", null ], + [ "getVertexSemanticLocations", "classne_1_1HlslVertexFormatDescription.html#a1ba49e2d29942d3ab988f8cedb687b68", null ] +]; \ No newline at end of file diff --git a/classne_1_1HlslVertexFormatDescription.png b/classne_1_1HlslVertexFormatDescription.png new file mode 100644 index 0000000000000000000000000000000000000000..04445573722169712cdba1630cfa341e0db1a559 GIT binary patch literal 1239 zcmb7EX;4!K5Pm`_!a(E2QK1HzcyKjE2e2}MDlz&{hysy9fJpI}1jHi>6iFVI%orkv zgi;Ga(i#Jl6f+Kx6oL0*MXiEZuAtCBG+==UghVS6ot1&@OV;`UgrR*X)*GMz8|wQk2}KBwKUc2BBQ zDy$wW?61dq4(DQ`V*xCGZy`3<1_0oLuR!vyxSSO;HF}}W*NJzn)>mqVUX(vg;;Blg z$Ftf)V;;>s_2PwnVPuR~H!(Jr--x#h19NFwjBs$=nC$-gQ6(PSpntYB+F*veL1Wqy zAq<2MO|-5w1ud2u`q|K<<0WS%)mMA* zTMJ2R^M{xcP{hh8c3Kwjc^s~T!z~l z`}qfsw2vBhWyp6n2XR5yVrU!6%@a;Hp!+2ScM*zv7UXMy*21C#H2?IYkz+0v3Ag-D z^K<3d(9I|Oes5{6p>f%$d05lLN`BMDuX2mn8lF!TD)n7>iwb9fT*L$<;v!X;;(`*U zXjDrzJIfFFB^C!5{KnAIOX=J(l$!g*(lakH+U7It!hjr_);1s8(0?YXlaW4~klkxm z&o`*t{sE$P&Q@%G`6J0goF(X(6!1Ou6Z%Hl++Zr7pEN*1y}eJxagv?pA_SMwsaBU` zV``M%b~uProJX2b_FXU8b@Ex_JJnDl@mS0D67$C4yg6B~fM2cmUEV-X)f2s$?S#Uj zou14L#rKWU#4)DOSVdlt4wK2Flg3$GtjsC6EOJc(Xs;3GDtvly^Me*iTH9~XhYUA~ z>AC#Gh?gS%li~GHN`KRxZ~+wa_5h1`z4=1>{qP-@*o%k*)cP*ijx2QYbz%B*;ti#5 zqeRw~T-ncT)}oJ|GGvpye^DS*>ONida zRvQMnQ}!N2sE>5~FmSqV1E7tE=kd593p_7g5WT6CQlm*xyO?2#ntgxbmjg7~33sU#lsha-9~`bkUbJQ}Dpw#a&7z%0M>>s(^nt+o0D3wey={^X z+$t`JtRHNrsNF-CXJKBvobtJ%RCAl1haputmy z)&}ZuieNNVD6GzMU(1vhWP+rTh3ifCLrl|0nCo;rxgOM{4&KxyHb#Xc0nscaMc)c2A}W&wFJjm|OK!fxRFA+!IZ{x%(|c literal 0 HcmV?d00001 diff --git a/classne_1_1IBinaryFieldSerializer-members.html b/classne_1_1IBinaryFieldSerializer-members.html new file mode 100644 index 000000000..e0efc4e9b --- /dev/null +++ b/classne_1_1IBinaryFieldSerializer-members.html @@ -0,0 +1,115 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::IBinaryFieldSerializer Member List
+
+
+ +

This is the complete list of members for ne::IBinaryFieldSerializer, including all inherited members.

+ + + + + + +
deserializeField(const std::filesystem::path &pathToBinaryFile, Serializable *pFieldOwner, const rfk::Field *pField)=0ne::IBinaryFieldSerializerpure virtual
IBinaryFieldSerializer()=default (defined in ne::IBinaryFieldSerializer)ne::IBinaryFieldSerializer
isFieldTypeSupported(const rfk::Field *pField)=0ne::IBinaryFieldSerializerpure virtual
serializeField(const std::filesystem::path &pathToOutputDirectory, const std::string &sFilenameWithoutExtension, Serializable *pFieldOwner, const rfk::Field *pField)=0ne::IBinaryFieldSerializerpure virtual
~IBinaryFieldSerializer()=default (defined in ne::IBinaryFieldSerializer)ne::IBinaryFieldSerializervirtual
+
+ + + + diff --git a/classne_1_1IBinaryFieldSerializer.html b/classne_1_1IBinaryFieldSerializer.html new file mode 100644 index 000000000..cd6c7aa2c --- /dev/null +++ b/classne_1_1IBinaryFieldSerializer.html @@ -0,0 +1,290 @@ + + + + + + + +Nameless Engine: ne::IBinaryFieldSerializer Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::IBinaryFieldSerializer Class Referenceabstract
+
+
+ +

#include <IBinaryFieldSerializer.hpp>

+
+Inheritance diagram for ne::IBinaryFieldSerializer:
+
+
+ + +ne::MeshDataBinaryFieldSerializer + +
+ + + + + + + + +

+Public Member Functions

virtual bool isFieldTypeSupported (const rfk::Field *pField)=0
 
virtual std::variant< std::string, ErrorserializeField (const std::filesystem::path &pathToOutputDirectory, const std::string &sFilenameWithoutExtension, Serializable *pFieldOwner, const rfk::Field *pField)=0
 
virtual std::optional< ErrordeserializeField (const std::filesystem::path &pathToBinaryFile, Serializable *pFieldOwner, const rfk::Field *pField)=0
 
+

Detailed Description

+

Interface for implementing support for binary serialization of new field types.

+
Remarks
Same as IFieldSerializer but stores data in binary form providing smaller size, faster deserialization but sacrificing readability of the file.
+

Member Function Documentation

+ +

◆ deserializeField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::optional< Error > ne::IBinaryFieldSerializer::deserializeField (const std::filesystem::path & pathToBinaryFile,
SerializablepFieldOwner,
const rfk::Field * pField 
)
+
+pure virtual
+
+

Deserializes data from a binary file into the specified field.

+
Parameters
+ + + + +
pathToBinaryFilePath to the binary file to deserialize.
pFieldOwnerField's owner.
pFieldField to deserialize TOML value to.
+
+
+
Returns
Error if something went wrong, empty otherwise.
+ +

Implemented in ne::MeshDataBinaryFieldSerializer.

+ +
+
+ +

◆ isFieldTypeSupported()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool ne::IBinaryFieldSerializer::isFieldTypeSupported (const rfk::Field * pField)
+
+pure virtual
+
+

Tests if this serializer supports serialization/deserialization of this field.

+
Parameters
+ + +
pFieldField to test for serialization/deserialization support.
+
+
+
Returns
true if this serializer can be used to serialize this field, false otherwise.
+ +

Implemented in ne::MeshDataBinaryFieldSerializer.

+ +
+
+ +

◆ serializeField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::variant< std::string, Error > ne::IBinaryFieldSerializer::serializeField (const std::filesystem::path & pathToOutputDirectory,
const std::string & sFilenameWithoutExtension,
SerializablepFieldOwner,
const rfk::Field * pField 
)
+
+pure virtual
+
+

Serializes the specified field into a binary file.

+
Parameters
+ + + + + +
pathToOutputDirectoryPath to the directory where the resulting file will be located.
sFilenameWithoutExtensionName of the resulting file without extension.
pFieldOwnerField's owner.
pFieldField to serialize.
+
+
+
Returns
Error if something went wrong, otherwise file extension with a starting dot, for example: .meshbin.
+ +

Implemented in ne::MeshDataBinaryFieldSerializer.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classne_1_1IBinaryFieldSerializer.js b/classne_1_1IBinaryFieldSerializer.js new file mode 100644 index 000000000..73d4b9819 --- /dev/null +++ b/classne_1_1IBinaryFieldSerializer.js @@ -0,0 +1,6 @@ +var classne_1_1IBinaryFieldSerializer = +[ + [ "deserializeField", "classne_1_1IBinaryFieldSerializer.html#a3754b7399959c000a85b530bde197cae", null ], + [ "isFieldTypeSupported", "classne_1_1IBinaryFieldSerializer.html#a1b8adda1b7aacde07b0d795b8262e884", null ], + [ "serializeField", "classne_1_1IBinaryFieldSerializer.html#aecaa18ab97b27fdafe074803b223a1fb", null ] +]; \ No newline at end of file diff --git a/classne_1_1IBinaryFieldSerializer.png b/classne_1_1IBinaryFieldSerializer.png new file mode 100644 index 0000000000000000000000000000000000000000..da51e44fcbf8b14a5622953a76289e493e148a54 GIT binary patch literal 839 zcmeAS@N?(olHy`uVBq!ia0vp^7l1f`gBeK1pW>beq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB)J3BRe6jtF{aF(|AOinH*qVR40>9@mc_m!(lWf^(59)s^R72sI~}28 zzn$kv>RV1ve>KK?Z#UdNeIRN=iu3e_zR<}B<0_+a3;&cjT>HPlI>zsr;ktHa&v`GS z+I+5@k_>Xrd}pkjJg<0JN~6|dmC9xJ8D1K{@jf@_(<#1`|CbrXU2n&}vfpl0Qq`st zzOFpH$S(Y;IReUe3ZO${+c0NBjN%`dYY^I4R=Vv*n+}td-K)^}DgW-eV zUWNpfUbZh)yly5^7Y-SVT`X|ee45eW{wxQE3!Bvh7{09GWMQz)W@2;zY9uUlK=!D_ zWA!gxhR66h0$oyMd=&&I&NFRvaj6Ou*4VMTTE6a|*0ahZ)?FU^!WJKO+WB-g_uE6} zO4}RFwr{@h+P8P-RMX5=k1g}89kh#>xPI^YdM;zZ-@p4lX8pgM@NfFH&2eh)J{5o7 z@bi4$>1Mx%a_cwSR(?5DHlL^DjK0vPt@`)(pWn80^1X!Y-RrkAg}C@vXWo6|;+imB z(YP*UEz72Du5*{1)n;C{^L$TF<++)YSXcE-bNFQ<=Xq)KYtfy`IrHyuh0ZScJ#F!P zz8xC3&V8RB)s|y^QBzOriPOoQr!LG~|8yHiz)E@MCsIdePg>nxwE3UBLcJ6B_FG!_ zrq6k+e6%{cXr)d4yJ&0cd0oa^cwZD>e^vC-dP>!dzM%I-;`^MHl=@%XRrhjvvTPsI z7lrfT4fCG-3_97_VY7r&Md{LJwFw;_=c5{udI}Z(GK(x<`}Mn5a2YVkGkCiCxvX + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::IFieldSerializer Member List
+
+
+ +

This is the complete list of members for ne::IFieldSerializer, including all inherited members.

+ + + + + + + + +
cloneField(Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField)=0ne::IFieldSerializerpure virtual
deserializeField(const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes)=0ne::IFieldSerializerpure virtual
IFieldSerializer()=default (defined in ne::IFieldSerializer)ne::IFieldSerializer
isFieldTypeSupported(const rfk::Field *pField)=0ne::IFieldSerializerpure virtual
isFieldValueEqual(Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB)=0ne::IFieldSerializerpure virtual
serializeField(toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr)=0ne::IFieldSerializerpure virtual
~IFieldSerializer()=default (defined in ne::IFieldSerializer)ne::IFieldSerializervirtual
+
+ + + + diff --git a/classne_1_1IFieldSerializer.html b/classne_1_1IFieldSerializer.html new file mode 100644 index 000000000..ec5a0074b --- /dev/null +++ b/classne_1_1IFieldSerializer.html @@ -0,0 +1,470 @@ + + + + + + + +Nameless Engine: ne::IFieldSerializer Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::IFieldSerializer Class Referenceabstract
+
+
+ +

#include <IFieldSerializer.hpp>

+
+Inheritance diagram for ne::IFieldSerializer:
+
+
+ + +ne::GlmVecFieldSerializer +ne::PrimitiveFieldSerializer +ne::SerializableObjectFieldSerializer +ne::StringFieldSerializer +ne::UnorderedMapFieldSerializer +ne::VectorFieldSerializer + +
+ + + + + + + + + + + + +

+Public Member Functions

virtual bool isFieldTypeSupported (const rfk::Field *pField)=0
 
virtual std::optional< ErrorserializeField (toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr)=0
 
virtual std::optional< ErrordeserializeField (const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes)=0
 
virtual std::optional< ErrorcloneField (Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField)=0
 
virtual bool isFieldValueEqual (Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB)=0
 
+

Detailed Description

+

Interface for implementing support for serialization of new field types.

+

By implementing this interface and registering it in the FieldSerializerManager class you can add support for serialization/deserialization of new field types and extend serialization/deserialization functionality for Serializable derived classes.

+

Member Function Documentation

+ +

◆ cloneField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::optional< Error > ne::IFieldSerializer::cloneField (SerializablepFromInstance,
const rfk::Field * pFromField,
SerializablepToInstance,
const rfk::Field * pToField 
)
+
+pure virtual
+
+

Clones field's data from one object to another.

+
Parameters
+ + + + + +
pFromInstanceInstance to copy the field from.
pFromFieldField to copy.
pToInstanceInstance to copy to.
pToFieldField to copy to.
+
+
+
Returns
Error if something went wrong, empty otherwise.
+ +

Implemented in ne::GlmVecFieldSerializer, ne::PrimitiveFieldSerializer, ne::SerializableObjectFieldSerializer, ne::StringFieldSerializer, ne::UnorderedMapFieldSerializer, and ne::VectorFieldSerializer.

+ +
+
+ +

◆ deserializeField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::optional< Error > ne::IFieldSerializer::deserializeField (const toml::value * pTomlDocument,
const toml::value * pTomlValue,
SerializablepFieldOwner,
const rfk::Field * pField,
const std::string & sOwnerSectionName,
const std::string & sEntityId,
std::unordered_map< std::string, std::string > & customAttributes 
)
+
+pure virtual
+
+

Deserializes field from a TOML value.

+
Parameters
+ + + + + + + + +
pTomlDocumentTOML document that contains a value to deserialize.
pTomlValueTOML value to deserialize the field from.
pFieldOwnerField's owner.
pFieldField to deserialize TOML value to.
sOwnerSectionNameName of the TOML section where is field was found.
sEntityIdCurrent ID string of the entity (field owner) that we are deserializing.
customAttributesPairs of values that were found with this object in TOML data. Only found when deserializing a field of type that derives from Serializable.
+
+
+
Returns
Error if something went wrong, empty otherwise.
+ +

Implemented in ne::GlmVecFieldSerializer, ne::PrimitiveFieldSerializer, ne::SerializableObjectFieldSerializer, ne::StringFieldSerializer, ne::UnorderedMapFieldSerializer, and ne::VectorFieldSerializer.

+ +
+
+ +

◆ isFieldTypeSupported()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool ne::IFieldSerializer::isFieldTypeSupported (const rfk::Field * pField)
+
+pure virtual
+
+

Tests if this serializer supports serialization/deserialization of this field.

+
Parameters
+ + +
pFieldField to test for serialization/deserialization support.
+
+
+
Returns
true if this serializer can be used to serialize this field, false otherwise.
+ +

Implemented in ne::GlmVecFieldSerializer, ne::PrimitiveFieldSerializer, ne::SerializableObjectFieldSerializer, ne::StringFieldSerializer, ne::UnorderedMapFieldSerializer, and ne::VectorFieldSerializer.

+ +
+
+ +

◆ isFieldValueEqual()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool ne::IFieldSerializer::isFieldValueEqual (SerializablepFieldAOwner,
const rfk::Field * pFieldA,
SerializablepFieldBOwner,
const rfk::Field * pFieldB 
)
+
+pure virtual
+
+

Checks if the specified fields' values are equal or not.

+
Parameters
+ + + + + +
pFieldAOwnerOwner of the field A.
pFieldAField A to compare.
pFieldBOwnerOwner of the field B.
pFieldBField B to compare.
+
+
+
Returns
false if some field is unsupported by this serializer or if fields' values are not equal, true otherwise.
+ +

Implemented in ne::GlmVecFieldSerializer, ne::PrimitiveFieldSerializer, ne::SerializableObjectFieldSerializer, ne::StringFieldSerializer, ne::UnorderedMapFieldSerializer, and ne::VectorFieldSerializer.

+ +
+
+ +

◆ serializeField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::optional< Error > ne::IFieldSerializer::serializeField (toml::value * pTomlData,
SerializablepFieldOwner,
const rfk::Field * pField,
const std::string & sSectionName,
const std::string & sEntityId,
size_t & iSubEntityId,
SerializablepOriginalObject = nullptr 
)
+
+pure virtual
+
+

Serializes field into a TOML value.

+
Parameters
+ + + + + + + + +
pTomlDataTOML value to serialize the field to.
pFieldOwnerField's owner.
pFieldField to serialize.
sSectionNameName of the section (for TOML value) to use for this field.
sEntityIdCurrent ID string of the entity (field owner) that we are serializing. Only used when serializing a field of type that derives from Serializable.
iSubEntityIdCurrent ID of the sub entity (sub entity of the field owner). Only used when serializing a field of type that derives from Serializable.
pOriginalObjectOptional. Original object of the same type as the object being serialized, this object is a deserialized version of the object being serialized, used to compare serializable fields' values and only serialize changed values. Only used when serializing a field of type that derives from Serializable.
+
+
+
Returns
Error if something went wrong, empty otherwise.
+ +

Implemented in ne::GlmVecFieldSerializer, ne::PrimitiveFieldSerializer, ne::SerializableObjectFieldSerializer, ne::StringFieldSerializer, ne::UnorderedMapFieldSerializer, and ne::VectorFieldSerializer.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classne_1_1IFieldSerializer.js b/classne_1_1IFieldSerializer.js new file mode 100644 index 000000000..896be5645 --- /dev/null +++ b/classne_1_1IFieldSerializer.js @@ -0,0 +1,8 @@ +var classne_1_1IFieldSerializer = +[ + [ "cloneField", "classne_1_1IFieldSerializer.html#a1ae8afecd50c3e398ff33414e70a8f61", null ], + [ "deserializeField", "classne_1_1IFieldSerializer.html#a1d29ae36f95085f2ac1d38a23786033e", null ], + [ "isFieldTypeSupported", "classne_1_1IFieldSerializer.html#a78021093f6fcaa0b2def3112104f1791", null ], + [ "isFieldValueEqual", "classne_1_1IFieldSerializer.html#ae68d18639d0969461e4ea8ecfb05eed4", null ], + [ "serializeField", "classne_1_1IFieldSerializer.html#aa931301f632674becd2ba222486bbb9e", null ] +]; \ No newline at end of file diff --git a/classne_1_1IFieldSerializer.png b/classne_1_1IFieldSerializer.png new file mode 100644 index 0000000000000000000000000000000000000000..24c641d07beb68374b1f834c6ff5e8b11b3ae30b GIT binary patch literal 2153 zcmcguZB$a}7N!r=OjF0y)cgo7b4s$DNe90s1w=Ef?381mrDbKMW}=jVttJ&xGsZQV z8hR5-*D*0~nd1jyPSG_-QOq#EupCoFL`PhZh}+%@a2bsBfhYgTV{~v8W?3m<|@&AJSU`;o^t*7tmsTDEKH^qtQUyiK%&FZfm)R zt8>EUg5M@uT3R4~=ubTrP;7nD5nLz?vbB%<>f*OBn65k!wf`t-m2^mw2nKCJf8e8k zex>rA4g8p%bqF+Sc!Hq`sFXH~Ow$t7mNAVm`IdEYsMVI78M+ zH~10A_x%ks6l-~b?WAI%Q#pAx0bmKv?$Y_8i+TdiW zjqe*BgG*J-rLI)@_{5}PBr=b>Y4uvYCpJcs3qsk(D6gqcaP_cV(Z&GNHrwjYKHrHI z9Gf%)Z-{~L&kUF8wy)fGBp?Lmd%DZdwnbP*C5pv2n`Nq>S2%T$29Ji0G0c?eI(tE$ zV+vWsFT9=fpjM`$Z2QtgiMjajeFvM)`^cx#qtA5_3puHBvZ&e#o({Eek=FxfFsxOH ziAl&kQnyPsDCA_fg3K*hp=w!eEWVn3fL@|gUrbAS`AkHb(FSIA|M3{hHK@05{h_B0 zlk2o`ulF=YO+hZ|DH6K7m{4`^FV$_210sc*djO@sYW3Q_Z0&91lRDa{eT)8od&Blx zmTSXa#MKR`1D8cu6@JzTN~LE!;`8OQ>b)#_MW{yFia^uj?aV#P656+LzGzoT#r(T= ze`emVWv2J!=3k*UGl!W{sK|XXh3bh&rZ~kF$$q79Me(r3z@@mqqi*^7!~G;ER@V-i zUR55o3u)r~O%UX9gg?Wf^mBfKJWv4An7Qov{~qm3bx0-%Iay>Oai|gdk}YX4)S{41 zB?yVuGs9E@&}(-Z-volbSokrZ7N-SNIMBO;76$YpwP11{0GN(Z03guC`pp@OrU6%Sqb{&?${%ZAPHrFK-qv+&B;KA#$l z2q73%eV(?ESHY{mqM3Z;u#;eD_I)my;exlh&8UJJAJcMDA7Ehalt?R4w0$)t5XkA9t2dhMfXx^|LA zowqznMNHHTknYIvOfI^qcGuZUnOEdMJNYB1N#_S^ z6}HIWJi>({cBYV*7R=&$r=N<+W7bu7N20Gq|9~5aDdd%Jx6J(mUooHm!OmD5wZ6LT zOo>uk5SlN%QtpYl$C(s|aehPT-p+d&C(c!Y4KI*%gpL<(A<8B)uWewt($?2%MMQX- z8-4g(zvEIgoFj9--f%sIDu0uj@|`LjpLLiIXQX+$8)|M~3xY^!#M2D^+sh1WNUY^> z6QP&nd0gB_yf-#QF7{@fci|hI?vEd2f|L74Jg5GS1cmfH zURxaJ|BjZ;vow!*bJeB#`azyI2*%Cb#qM4+>>vn9Z$b#NwxozuWoMSUn|rnS<^7>b zfF%oODsIa$cL_kpy^h4@TTX725anxhIKY$^;n_5K4iWDnIQ9FFZz_|Smv;3@h*s=- z=_l}Gd32d3$m?r?xLorbyL)kN_^vw|*-`UpIIpbp8_)O#S4q~W?@qyqkW)!2qpEH* zILG|7&%??%MlJsBwe}gPJ+FSV`axrH?%gd(8my)lNs>>1e29v zFU^W7z-u?%(bpsY27=CZgbLaEB`(P#x)21n)3B9b$(Uy_G#Y9xwF6;!3>42`q)iSV z;}n6p7|87Sk6D2Gp9V<*wvjDaf-^r72|_jcs~SlIo4A5YYx + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::InputManager Member List
+
+
+ +

This is the complete list of members for ne::InputManager, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actionEventsne::InputManagerprivate
actionStatene::InputManagerprivate
addActionEvent(unsigned int iActionId, const std::vector< std::variant< KeyboardKey, MouseButton > > &vKeys)ne::InputManager
addAxisEvent(unsigned int iAxisEventId, const std::vector< std::pair< KeyboardKey, KeyboardKey > > &vAxis)ne::InputManager
axisEventsne::InputManagerprivate
axisStatene::InputManagerprivate
GameManager (defined in ne::InputManager)ne::InputManagerfriend
getActionEvent(unsigned int iActionId)ne::InputManager
getAllActionEvents()ne::InputManager
getAllAxisEvents()ne::InputManager
getAxisEvent(unsigned int iAxisEventId)ne::InputManager
getCurrentAxisEventState(unsigned int iAxisEventId)ne::InputManager
InputManager()=default (defined in ne::InputManager)ne::InputManager
InputManager(const InputManager &)=delete (defined in ne::InputManager)ne::InputManager
isKeyUsed(const std::variant< KeyboardKey, MouseButton > &key)ne::InputManager
loadFromFile(std::string_view sFileName)ne::InputManager
modifyActionEventKey(unsigned int iActionId, std::variant< KeyboardKey, MouseButton > oldKey, std::variant< KeyboardKey, MouseButton > newKey)ne::InputManager
modifyAxisEventKey(unsigned int iAxisEventId, std::pair< KeyboardKey, KeyboardKey > oldPair, std::pair< KeyboardKey, KeyboardKey > newPair)ne::InputManager
mtxActionEventsne::InputManagerprivate
mtxAxisEventsne::InputManagerprivate
operator=(const InputManager &)=delete (defined in ne::InputManager)ne::InputManager
overwriteActionEvent(unsigned int iActionId, const std::vector< std::variant< KeyboardKey, MouseButton > > &vKeys)ne::InputManagerprivate
overwriteAxisEvent(unsigned int iAxisEventId, const std::vector< std::pair< KeyboardKey, KeyboardKey > > &vAxis)ne::InputManagerprivate
removeActionEvent(unsigned int iActionId)ne::InputManager
removeAxisEvent(unsigned int iAxisEventId)ne::InputManager
sActionEventSectionNamene::InputManagerinlineprivatestatic
saveToFile(std::string_view sFileName)ne::InputManager
sAxisEventSectionNamene::InputManagerinlineprivatestatic
splitString(const std::string &sStringToSplit, const std::string &sDelimiter)ne::InputManagerstatic
+
+ + + + diff --git a/classne_1_1InputManager.html b/classne_1_1InputManager.html new file mode 100644 index 000000000..ac8b87c37 --- /dev/null +++ b/classne_1_1InputManager.html @@ -0,0 +1,953 @@ + + + + + + + +Nameless Engine: ne::InputManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <InputManager.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

InputManager (const InputManager &)=delete
 
+InputManageroperator= (const InputManager &)=delete
 
std::optional< ErroraddActionEvent (unsigned int iActionId, const std::vector< std::variant< KeyboardKey, MouseButton > > &vKeys)
 
std::optional< ErroraddAxisEvent (unsigned int iAxisEventId, const std::vector< std::pair< KeyboardKey, KeyboardKey > > &vAxis)
 
std::optional< ErrormodifyActionEventKey (unsigned int iActionId, std::variant< KeyboardKey, MouseButton > oldKey, std::variant< KeyboardKey, MouseButton > newKey)
 
std::optional< ErrormodifyAxisEventKey (unsigned int iAxisEventId, std::pair< KeyboardKey, KeyboardKey > oldPair, std::pair< KeyboardKey, KeyboardKey > newPair)
 
std::optional< ErrorsaveToFile (std::string_view sFileName)
 
std::optional< ErrorloadFromFile (std::string_view sFileName)
 
std::pair< std::vector< unsigned int >, std::vector< unsigned int > > isKeyUsed (const std::variant< KeyboardKey, MouseButton > &key)
 
std::vector< std::variant< KeyboardKey, MouseButton > > getActionEvent (unsigned int iActionId)
 
std::vector< std::pair< KeyboardKey, KeyboardKey > > getAxisEvent (unsigned int iAxisEventId)
 
float getCurrentAxisEventState (unsigned int iAxisEventId)
 
bool removeActionEvent (unsigned int iActionId)
 
bool removeAxisEvent (unsigned int iAxisEventId)
 
std::unordered_map< unsigned int, std::vector< std::variant< KeyboardKey, MouseButton > > > getAllActionEvents ()
 
std::unordered_map< unsigned int, std::vector< std::pair< KeyboardKey, KeyboardKey > > > getAllAxisEvents ()
 
+ + + +

+Static Public Member Functions

static std::vector< std::string > splitString (const std::string &sStringToSplit, const std::string &sDelimiter)
 
+ + + + + +

+Private Member Functions

std::optional< ErroroverwriteActionEvent (unsigned int iActionId, const std::vector< std::variant< KeyboardKey, MouseButton > > &vKeys)
 
std::optional< ErroroverwriteAxisEvent (unsigned int iAxisEventId, const std::vector< std::pair< KeyboardKey, KeyboardKey > > &vAxis)
 
+ + + + + + + + + + + + + +

+Private Attributes

std::unordered_map< std::variant< KeyboardKey, MouseButton >, std::vector< unsigned int > > actionEvents
 
std::unordered_map< unsigned int, std::pair< std::vector< ActionState >, bool > > actionState
 
std::unordered_map< KeyboardKey, std::vector< std::pair< unsigned int, bool > > > axisEvents
 
std::unordered_map< unsigned int, std::pair< std::vector< AxisState >, int > > axisState
 
std::recursive_mutex mtxActionEvents
 
std::recursive_mutex mtxAxisEvents
 
+ + + + + +

+Static Private Attributes

static const std::string_view sActionEventSectionName = "action event"
 
static const std::string_view sAxisEventSectionName = "axis event"
 
+ + + +

+Friends

+class GameManager
 
+

Detailed Description

+

Allows binding IDs with multiple input keys.

+

Stored in GameInstance object.

+

Member Function Documentation

+ +

◆ addActionEvent()

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::InputManager::addActionEvent (unsigned int iActionId,
const std::vector< std::variant< KeyboardKey, MouseButton > > & vKeys 
)
+
+

Adds a new action event.

+

Action event allows binding mouse button(s) and/or keyboard key(s) with an ID. When one of the specified buttons is pressed you will receive an action event with the specified ID.

+

This way you can have an action "jump" with a space bar button and can easily change input key space bar to something else if the user wants to. For this, just call modifyActionEventKey to change one button of the action.

+
Parameters
+ + + +
iActionIdUnique ID of the new action event.
vKeysKeyboard/mouse keys/buttons associated with this action. If empty, no event will be added.
+
+
+
Returns
Returns an error if passed 'vKeys' argument is empty or if an action event with this ID is already registered.
+ +
+
+ +

◆ addAxisEvent()

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::InputManager::addAxisEvent (unsigned int iAxisEventId,
const std::vector< std::pair< KeyboardKey, KeyboardKey > > & vAxis 
)
+
+

Adds a new axis event.

+

Using axis event you can easily implement player movement (for example). An axis event consists of 2 buttons: one for '+1' input and the other for '-1' input. When the first button is pressed this event will be triggered with '+1' value, if other is pressed this event will be triggered with '-1' value, if both buttons were released this event will be triggered with '0' value. If both buttons were pressed this event will be triggered with the value of the last pressed button ('+1' if the first button was pressed last, '-1' if the second button was pressed last).

+

You can specify multiple pairs, for example: W/S buttons and up/down arrow keys.

+
Parameters
+ + + +
iAxisEventIdUnique ID of the new axis event.
vAxisA pair of keyboard buttons associated with this axis, first button will be associated with '+1' input and the second with '-1' input.
+
+
+
Returns
Returns an error if passed 'vAxis' argument is empty or if an axis event with this ID is already registered.
+ +
+
+ +

◆ getActionEvent()

+ +
+
+ + + + + + + + +
std::vector< std::variant< KeyboardKey, MouseButton > > ne::InputManager::getActionEvent (unsigned int iActionId)
+
+

Looks for an action event with the specified ID, if one is found a copy of this action's keys will be returned. Changes made to the returned vector will not be applied to the action, use addActionEvent for this purpose.

+
Parameters
+ + +
iActionIdUnique ID of an action to look for.
+
+
+
Returns
Empty if no keys were associated with this event, otherwise keys associated with the action event.
+ +
+
+ +

◆ getAllActionEvents()

+ +
+
+ + + + + + + +
std::unordered_map< unsigned int, std::vector< std::variant< KeyboardKey, MouseButton > > > ne::InputManager::getAllActionEvents ()
+
+

Returns all action events.

+
Returns
A copy of all action events.
+ +
+
+ +

◆ getAllAxisEvents()

+ +
+
+ + + + + + + +
std::unordered_map< unsigned int, std::vector< std::pair< KeyboardKey, KeyboardKey > > > ne::InputManager::getAllAxisEvents ()
+
+

Returns all axis events.

+
Returns
A copy of all axis events.
+ +
+
+ +

◆ getAxisEvent()

+ +
+
+ + + + + + + + +
std::vector< std::pair< KeyboardKey, KeyboardKey > > ne::InputManager::getAxisEvent (unsigned int iAxisEventId)
+
+

Looks for an axis event with the specified ID, if one is found a copy of this axis's keys will be returned. Changes made to the returned vector will not be applied to the axis, use addAxisEvent for this purpose.

+
Parameters
+ + +
iAxisEventIdUnique ID of the axis event to look for.
+
+
+
Returns
Empty if no keys were associated with this event, otherwise keys associated with the axis event.
+ +
+
+ +

◆ getCurrentAxisEventState()

+ +
+
+ + + + + + + + +
float ne::InputManager::getCurrentAxisEventState (unsigned int iAxisEventId)
+
+

Returns the current value of an axis event. This value is equal to the last value passed to GameInstance::onInputAxisEvent.

+
Parameters
+ + +
iAxisEventIdUnique ID of the axis event that you used in addAxisEvent.
+
+
+
Returns
Zero if axis event with this ID does not exist, last input value otherwise.
+ +
+
+ +

◆ isKeyUsed()

+ +
+
+ + + + + + + + +
std::pair< std::vector< unsigned int >, std::vector< unsigned int > > ne::InputManager::isKeyUsed (const std::variant< KeyboardKey, MouseButton > & key)
+
+

Returns action and axis event IDs that the specified key is used in.

+

You can use this function to detect conflicting keys. For example: when the user wants to modify some event and you receive a 'newKey', look if this 'newKey' is already used somewhere and if it's, show a message to the user like: "this key is already used somewhere else +and cannot be assigned twice".

+
Parameters
+ + +
keyA key to see where it's used.
+
+
+
Returns
A pair of action and axis event IDs that the specified key is used in.
+ +
+
+ +

◆ loadFromFile()

+ +
+
+ + + + + + + + +
std::optional< Error > ne::InputManager::loadFromFile (std::string_view sFileName)
+
+

Loads action/axis events from a file.

+
Warning
This function will only read action/axis events that exist in this InputManager. File's keys for action/axis event will replace the keys of existing action/axis event.
+

The usual workflow for working with input goes like this:

    +
  • add your action/axis events with some default keys,
  • +
  • the user may change the keys of action/axis events during game,
  • +
  • save changed events using saveToFile,
  • +
  • on next startup add your action/axis events with some default keys,
  • +
  • use loadFromFile to load previously changed keys.
  • +
+
Parameters
+ + +
sFileNameName of the file to load, prefer to have only ASCII characters in the file name. We will load it from a predefined directory using SETTINGS category, the .toml extension will be added if the passed name does not have it.
+
+
+
Returns
Error if something went wrong, this usually means that the file was corrupted.
+ +
+
+ +

◆ modifyActionEventKey()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::InputManager::modifyActionEventKey (unsigned int iActionId,
std::variant< KeyboardKey, MouseButton > oldKey,
std::variant< KeyboardKey, MouseButton > newKey 
)
+
+

Change action event's key.

+
Parameters
+ + + + +
iActionIdUnique ID of the action event to modify.
oldKeyKey/button of the specified action event that you want to replace.
newKeyNew key/button that should replace the old key.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ modifyAxisEventKey()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::InputManager::modifyAxisEventKey (unsigned int iAxisEventId,
std::pair< KeyboardKey, KeyboardKey > oldPair,
std::pair< KeyboardKey, KeyboardKey > newPair 
)
+
+

Change axis event's key.

+
Parameters
+ + + + +
iAxisEventIdUnique ID of the axis event to modify.
oldPairA pair of buttons of the specified axis event that you want to replace.
newPairA new pair of buttons that should replace the old pair.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ overwriteActionEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::InputManager::overwriteActionEvent (unsigned int iActionId,
const std::vector< std::variant< KeyboardKey, MouseButton > > & vKeys 
)
+
+private
+
+

Adds a new action event. If an action with this ID already exists it will be removed to register this new action event.

+
Warning
If this action is triggered with an old key right now (when you call this function), there is a chance that this action will be triggered using old keys for the last time (even if after you removed this action). This is because when we receive input key we make a copy of all actions associated with the key and then call these actions, because we operate on a copy, removed elements will be reflected only on the next user input.
+
Parameters
+ + + +
iActionIdUnique ID of an action event to overwrite.
vKeysKeyboard/mouse keys/buttons associated with this action. If empty, no event will be added.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ overwriteAxisEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::InputManager::overwriteAxisEvent (unsigned int iAxisEventId,
const std::vector< std::pair< KeyboardKey, KeyboardKey > > & vAxis 
)
+
+private
+
+

Adds a new axis event. If an axis event with this ID already exists it will be removed to register this new axis event.

+
Warning
If this axis event is triggered with an old key right now (when you call this function), there is a chance that this axis event will be triggered using old keys for the last time (even if after you removed this axis event). This is because when we receive input key we make a copy of all axes associated with the key and then call these axes, because we operate on a copy, removed elements will be reflected only on the next user input.
+
Parameters
+ + + +
iAxisEventIdUnique ID of an axis event to overwrite.
vAxisA pair of keyboard buttons associated with this axis, first button will be associated with '+1' input and the second with '-1' input.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ removeActionEvent()

+ +
+
+ + + + + + + + +
bool ne::InputManager::removeActionEvent (unsigned int iActionId)
+
+

Removes an action event with the specified ID.

+
Parameters
+ + +
iActionIdUnique ID of the action to remove.
+
+
+
Returns
false if the action was found and removed, true if not.
+ +
+
+ +

◆ removeAxisEvent()

+ +
+
+ + + + + + + + +
bool ne::InputManager::removeAxisEvent (unsigned int iAxisEventId)
+
+

Removes an axis event with the specified ID.

+
Parameters
+ + +
iAxisEventIdUnique ID of the axis event to remove.
+
+
+
Returns
false if the axis was found and removed, true if not.
+ +
+
+ +

◆ saveToFile()

+ +
+
+ + + + + + + + +
std::optional< Error > ne::InputManager::saveToFile (std::string_view sFileName)
+
+

Saves added action/axis events to a file.

+
Parameters
+ + +
sFileNameName of the file to save, prefer to have only ASCII characters in the file name. We will save it to a predefined directory using SETTINGS category, the .toml extension will be added if the passed name does not have it.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ splitString()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::vector< std::string > ne::InputManager::splitString (const std::string & sStringToSplit,
const std::string & sDelimiter 
)
+
+static
+
+

Splits the string using a delimiter.

+
Parameters
+ + + +
sStringToSplitString to split.
sDelimiterDelimiter.
+
+
+
Returns
Splitted string.
+ +
+
+

Member Data Documentation

+ +

◆ actionEvents

+ +
+
+ + + + + +
+ + + + +
std::unordered_map<std::variant<KeyboardKey, MouseButton>, std::vector<unsigned int> > ne::InputManager::actionEvents
+
+private
+
+

Map that stores pairs of "key that triggers event" - "registered events".

+

TODO: add GamepadKey into variant when gamepad will be supported and save/load them in TODO: saveToFile/loadFromFile (+ add tests).

+ +
+
+ +

◆ actionState

+ +
+
+ + + + + +
+ + + + +
std::unordered_map<unsigned int, std::pair<std::vector<ActionState>, bool > > ne::InputManager::actionState
+
+private
+
+

Stores pairs of "action event ID" and a pair of "registered keys" - "last input +(pressed/released)".

+ +
+
+ +

◆ axisEvents

+ +
+
+ + + + + +
+ + + + +
std::unordered_map<KeyboardKey, std::vector<std::pair<unsigned int, bool> > > ne::InputManager::axisEvents
+
+private
+
+

Map that stores pair of "keyboard key that triggers event" - "array of registered events +with an input value that should be triggered (either +1 (`true`) or -1 (`false`))".

+

TODO: add GamepadAxis when gamepad will be supported and save/load TODO: them in saveToFile/loadFromFile (+ add tests).

+ +
+
+ +

◆ axisState

+ +
+
+ + + + + +
+ + + + +
std::unordered_map<unsigned int, std::pair<std::vector<AxisState>, int > > ne::InputManager::axisState
+
+private
+
+

Stores pairs of "axis event ID" and a pair of "registered keys" - "last input in +range [-1; 1]".

+ +
+
+ +

◆ mtxActionEvents

+ +
+
+ + + + + +
+ + + + +
std::recursive_mutex ne::InputManager::mtxActionEvents
+
+private
+
+

Mutex for actions editing.

+ +
+
+ +

◆ mtxAxisEvents

+ +
+
+ + + + + +
+ + + + +
std::recursive_mutex ne::InputManager::mtxAxisEvents
+
+private
+
+

Mutex for axis editing.

+ +
+
+ +

◆ sActionEventSectionName

+ +
+
+ + + + + +
+ + + + +
const std::string_view ne::InputManager::sActionEventSectionName = "action event"
+
+inlinestaticprivate
+
+

Section name to store action events, used in .toml files.

+ +
+
+ +

◆ sAxisEventSectionName

+ +
+
+ + + + + +
+ + + + +
const std::string_view ne::InputManager::sAxisEventSectionName = "axis event"
+
+inlinestaticprivate
+
+

Section name to store axis events, used in .toml files.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/input/InputManager.h
  • +
  • src/engine_lib/private/input/InputManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1InputManager.js b/classne_1_1InputManager.js new file mode 100644 index 000000000..e888063de --- /dev/null +++ b/classne_1_1InputManager.js @@ -0,0 +1,28 @@ +var classne_1_1InputManager = +[ + [ "addActionEvent", "classne_1_1InputManager.html#a8c6376e3d7b39c34d71b685584d8c1d4", null ], + [ "addAxisEvent", "classne_1_1InputManager.html#a937f8a855ed96b1c17f34393e4314994", null ], + [ "getActionEvent", "classne_1_1InputManager.html#a3ba5941eb643fa0bfa2157bfe7612f16", null ], + [ "getAllActionEvents", "classne_1_1InputManager.html#aa5f3a9b1d2ea56b97a5a8cf62f1ffdc7", null ], + [ "getAllAxisEvents", "classne_1_1InputManager.html#a950d6565c8af99f98a512e99be88b741", null ], + [ "getAxisEvent", "classne_1_1InputManager.html#ae1fff3cb781f1b72c96a5bf1eb0c4b00", null ], + [ "getCurrentAxisEventState", "classne_1_1InputManager.html#ab353bd1605a9f18cc4c480f0fdd9c493", null ], + [ "isKeyUsed", "classne_1_1InputManager.html#ab21ead2b2fdc7f3149a8a787fe5ab1cf", null ], + [ "loadFromFile", "classne_1_1InputManager.html#a111e1ab4912627fdf82871608f880c1d", null ], + [ "modifyActionEventKey", "classne_1_1InputManager.html#a70778280bab2b2758296a142de947bc8", null ], + [ "modifyAxisEventKey", "classne_1_1InputManager.html#aa820c1355bd36cceca43ceabb4c7bd8e", null ], + [ "overwriteActionEvent", "classne_1_1InputManager.html#a77e07d518b2254d0047bf687c3576278", null ], + [ "overwriteAxisEvent", "classne_1_1InputManager.html#a4b31620ebf6c39e6872c0e4f3d6c858e", null ], + [ "removeActionEvent", "classne_1_1InputManager.html#aacc89ae7c39633599a9725ab2194b437", null ], + [ "removeAxisEvent", "classne_1_1InputManager.html#ab2af95f125632039f477c358f79e9e3a", null ], + [ "saveToFile", "classne_1_1InputManager.html#a2d75477eb8b82c5836426adaa579b5bf", null ], + [ "splitString", "classne_1_1InputManager.html#a14249a877d01c2e11358beceb650333e", null ], + [ "actionEvents", "classne_1_1InputManager.html#a0814b80826609ba562a3e9a18621f709", null ], + [ "actionState", "classne_1_1InputManager.html#aaab57608c499e84686bd884839ff3d12", null ], + [ "axisEvents", "classne_1_1InputManager.html#a6b57fe556fefa8625a0da84732e65a9e", null ], + [ "axisState", "classne_1_1InputManager.html#af4aed655702546e619d4f2edf9bcde5b", null ], + [ "mtxActionEvents", "classne_1_1InputManager.html#a5388c0d7c25236b79a2494121f8d2d76", null ], + [ "mtxAxisEvents", "classne_1_1InputManager.html#aca78bfc65d4592fdc2e73c2b29232daf", null ], + [ "sActionEventSectionName", "classne_1_1InputManager.html#ab73e92504d106c2909ab8b04e48f1a4d", null ], + [ "sAxisEventSectionName", "classne_1_1InputManager.html#a973aa856f8359571b04541c78d51e3ca", null ] +]; \ No newline at end of file diff --git a/classne_1_1KeyboardModifiers-members.html b/classne_1_1KeyboardModifiers-members.html new file mode 100644 index 000000000..b53be343c --- /dev/null +++ b/classne_1_1KeyboardModifiers-members.html @@ -0,0 +1,119 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::KeyboardModifiers Member List
+
+
+ +

This is the complete list of members for ne::KeyboardModifiers, including all inherited members.

+ + + + + + + + + + +
iModifiersne::KeyboardModifiersprivate
isAltPressed() constne::KeyboardModifiersinline
isCapsLockPressed() constne::KeyboardModifiersinline
isControlPressed() constne::KeyboardModifiersinline
isNumLockPressed() constne::KeyboardModifiersinline
isShiftPressed() constne::KeyboardModifiersinline
isSuperPressed() constne::KeyboardModifiersinline
KeyboardModifiers()=delete (defined in ne::KeyboardModifiers)ne::KeyboardModifiers
KeyboardModifiers(int iModifiers)ne::KeyboardModifiersinlineexplicit
+
+ + + + diff --git a/classne_1_1KeyboardModifiers.html b/classne_1_1KeyboardModifiers.html new file mode 100644 index 000000000..ef9f61297 --- /dev/null +++ b/classne_1_1KeyboardModifiers.html @@ -0,0 +1,363 @@ + + + + + + + +Nameless Engine: ne::KeyboardModifiers Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::KeyboardModifiers Class Reference
+
+
+ +

#include <KeyboardKey.hpp>

+ + + + + + + + + + + + + + + + +

+Public Member Functions

 KeyboardModifiers (int iModifiers)
 
bool isShiftPressed () const
 
bool isControlPressed () const
 
bool isAltPressed () const
 
bool isSuperPressed () const
 
bool isCapsLockPressed () const
 
bool isNumLockPressed () const
 
+ + + +

+Private Attributes

int iModifiers
 
+

Detailed Description

+

Provides a mapping from GLFW keyboard modifiers to a class.

+

Constructor & Destructor Documentation

+ +

◆ KeyboardModifiers()

+ +
+
+ + + + + +
+ + + + + + + + +
ne::KeyboardModifiers::KeyboardModifiers (int iModifiers)
+
+inlineexplicit
+
+

Constructor.

+
Parameters
+ + +
iModifiersGLFW modifiers value.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ isAltPressed()

+ +
+
+ + + + + +
+ + + + + + + +
bool ne::KeyboardModifiers::isAltPressed () const
+
+inline
+
+

Whether the Alt key is pressed or not.

+
Returns
'true' if the Alt key is pressed, 'false' otherwise.
+ +
+
+ +

◆ isCapsLockPressed()

+ +
+
+ + + + + +
+ + + + + + + +
bool ne::KeyboardModifiers::isCapsLockPressed () const
+
+inline
+
+

Whether the Caps Lock key is pressed or not.

+
Returns
'true' if the Caps Lock key is pressed, 'false' otherwise.
+ +
+
+ +

◆ isControlPressed()

+ +
+
+ + + + + +
+ + + + + + + +
bool ne::KeyboardModifiers::isControlPressed () const
+
+inline
+
+

Whether the Control (Ctrl) key is pressed or not.

+
Returns
'true' if the Control (Ctrl) key is pressed, 'false' otherwise.
+ +
+
+ +

◆ isNumLockPressed()

+ +
+
+ + + + + +
+ + + + + + + +
bool ne::KeyboardModifiers::isNumLockPressed () const
+
+inline
+
+

Whether the Num Lock key is pressed or not.

+
Returns
'true' if the Num Lock key is pressed, 'false' otherwise.
+ +
+
+ +

◆ isShiftPressed()

+ +
+
+ + + + + +
+ + + + + + + +
bool ne::KeyboardModifiers::isShiftPressed () const
+
+inline
+
+

Whether the Shift key is pressed or not.

+
Returns
'true' if the Shift key is pressed, 'false' otherwise.
+ +
+
+ +

◆ isSuperPressed()

+ +
+
+ + + + + +
+ + + + + + + +
bool ne::KeyboardModifiers::isSuperPressed () const
+
+inline
+
+

Whether the Super key is pressed or not.

+
Returns
'true' if the Super key is pressed, 'false' otherwise.
+ +
+
+

Member Data Documentation

+ +

◆ iModifiers

+ +
+
+ + + + + +
+ + + + +
int ne::KeyboardModifiers::iModifiers
+
+private
+
+

GLFW modifiers value.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classne_1_1KeyboardModifiers.js b/classne_1_1KeyboardModifiers.js new file mode 100644 index 000000000..3e48498a5 --- /dev/null +++ b/classne_1_1KeyboardModifiers.js @@ -0,0 +1,11 @@ +var classne_1_1KeyboardModifiers = +[ + [ "KeyboardModifiers", "classne_1_1KeyboardModifiers.html#ac6499c1eb8b60f0409da92e2c6d00009", null ], + [ "isAltPressed", "classne_1_1KeyboardModifiers.html#a927825b0725ae0b6a4fbe65747f4c7f6", null ], + [ "isCapsLockPressed", "classne_1_1KeyboardModifiers.html#a4657332607cda9d1bf3e8ab76f36bec9", null ], + [ "isControlPressed", "classne_1_1KeyboardModifiers.html#abeb9681e0fd5a60a1e3be33455123286", null ], + [ "isNumLockPressed", "classne_1_1KeyboardModifiers.html#a2cd866247a91c17d0e9f57b528763dfe", null ], + [ "isShiftPressed", "classne_1_1KeyboardModifiers.html#a62b4f516ee15720f8f785941c0c27638", null ], + [ "isSuperPressed", "classne_1_1KeyboardModifiers.html#a6077c1a22262b43c3acdbef13efca237", null ], + [ "iModifiers", "classne_1_1KeyboardModifiers.html#a89a334a630b7be5d4dab6d4129c8b606", null ] +]; \ No newline at end of file diff --git a/classne_1_1KtxLoadingCallbackManager-members.html b/classne_1_1KtxLoadingCallbackManager-members.html new file mode 100644 index 000000000..9820a9876 --- /dev/null +++ b/classne_1_1KtxLoadingCallbackManager-members.html @@ -0,0 +1,121 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::KtxLoadingCallbackManager Member List
+
+
+ +

This is the complete list of members for ne::KtxLoadingCallbackManager, including all inherited members.

+ + + + + + + + + + + + +
allocMem(VkMemoryAllocateInfo *pAllocationInfo, VkMemoryRequirements *pMemoryRequirements, uint64_t *pPageCount)ne::KtxLoadingCallbackManagerstatic
bindBuffer(VkBuffer pBuffer, uint64_t iAllocationId)ne::KtxLoadingCallbackManagerstatic
bindImage(VkImage pImage, uint64_t iAllocationId)ne::KtxLoadingCallbackManagerstatic
freeMem(uint64_t iAllocationId)ne::KtxLoadingCallbackManagerstatic
getCurrentAllocationCount()ne::KtxLoadingCallbackManagerstatic
getKtxSubAllocatorCallbacks()ne::KtxLoadingCallbackManagerstatic
getMemoryAllocator()ne::KtxLoadingCallbackManagerprivatestatic
getPhysicalDevice()ne::KtxLoadingCallbackManagerprivatestatic
memoryMap(uint64_t iAllocationId, uint64_t iPageNumber, VkDeviceSize *pMapLength, void **pData)ne::KtxLoadingCallbackManagerstatic
memoryUnmap(uint64_t iAllocationId, uint64_t iPageNumber)ne::KtxLoadingCallbackManagerstatic
mtxDatane::KtxLoadingCallbackManagerprivatestatic
+
+ + + + diff --git a/classne_1_1KtxLoadingCallbackManager.html b/classne_1_1KtxLoadingCallbackManager.html new file mode 100644 index 000000000..8de9549a6 --- /dev/null +++ b/classne_1_1KtxLoadingCallbackManager.html @@ -0,0 +1,570 @@ + + + + + + + +Nameless Engine: ne::KtxLoadingCallbackManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <KtxLoadingCallbackManager.h>

+ + + + +

+Classes

struct  Data
 
+ + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static size_t getCurrentAllocationCount ()
 
static ktxVulkanTexture_subAllocatorCallbacks getKtxSubAllocatorCallbacks ()
 
static uint64_t allocMem (VkMemoryAllocateInfo *pAllocationInfo, VkMemoryRequirements *pMemoryRequirements, uint64_t *pPageCount)
 
static VkResult bindBuffer (VkBuffer pBuffer, uint64_t iAllocationId)
 
static VkResult bindImage (VkImage pImage, uint64_t iAllocationId)
 
static VkResult memoryMap (uint64_t iAllocationId, uint64_t iPageNumber, VkDeviceSize *pMapLength, void **pData)
 
static void memoryUnmap (uint64_t iAllocationId, uint64_t iPageNumber)
 
static void freeMem (uint64_t iAllocationId)
 
+ + + + + +

+Static Private Member Functions

static VmaAllocator getMemoryAllocator ()
 
static VkPhysicalDevice getPhysicalDevice ()
 
+ + + +

+Static Private Attributes

static std::pair< std::recursive_mutex, DatamtxData {}
 
+

Detailed Description

+

Provides static memory-related callbacks for KTX-Software (external dependency) because it does not support our memory allocator out of the box.

+

Member Function Documentation

+ +

◆ allocMem()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint64_t ne::KtxLoadingCallbackManager::allocMem (VkMemoryAllocateInfo * pAllocationInfo,
VkMemoryRequirements * pMemoryRequirements,
uint64_t * pPageCount 
)
+
+static
+
+

KTX loader (external dependency) callback.

+
Parameters
+ + + + +
pAllocationInfo
pMemoryRequirements
pPageCount
+
+
+
Returns
Allocation ID.
+ +
+
+ +

◆ bindBuffer()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
VkResult ne::KtxLoadingCallbackManager::bindBuffer (VkBuffer pBuffer,
uint64_t iAllocationId 
)
+
+static
+
+

KTX loader (external dependency) callback.

+
Parameters
+ + + +
pBuffer
iAllocationId
+
+
+
Returns
Result of the operation.
+ +
+
+ +

◆ bindImage()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
VkResult ne::KtxLoadingCallbackManager::bindImage (VkImage pImage,
uint64_t iAllocationId 
)
+
+static
+
+

KTX loader (external dependency) callback.

+
Parameters
+ + + +
pImage
iAllocationId
+
+
+
Returns
Result of the operation.
+ +
+
+ +

◆ freeMem()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::KtxLoadingCallbackManager::freeMem (uint64_t iAllocationId)
+
+static
+
+

KTX loader (external dependency) callback.

+
Parameters
+ + +
iAllocationId
+
+
+ +
+
+ +

◆ getCurrentAllocationCount()

+ +
+
+ + + + + +
+ + + + + + + +
size_t ne::KtxLoadingCallbackManager::getCurrentAllocationCount ()
+
+static
+
+

Returns the current amount of active (not freed) allocations.

+
Returns
The number of current allocations.
+ +
+
+ +

◆ getKtxSubAllocatorCallbacks()

+ +
+
+ + + + + +
+ + + + + + + +
ktxVulkanTexture_subAllocatorCallbacks ne::KtxLoadingCallbackManager::getKtxSubAllocatorCallbacks ()
+
+static
+
+

Returns callbacks used with KTX images for KTX-Software (external dependency).

+
Returns
Callbacks.
+ +
+
+ +

◆ getMemoryAllocator()

+ +
+
+ + + + + +
+ + + + + + + +
VmaAllocator ne::KtxLoadingCallbackManager::getMemoryAllocator ()
+
+staticprivate
+
+

Returns memory allocator of resource manager.

+
Returns
Memory allocator.
+ +
+
+ +

◆ getPhysicalDevice()

+ +
+
+ + + + + +
+ + + + + + + +
VkPhysicalDevice ne::KtxLoadingCallbackManager::getPhysicalDevice ()
+
+staticprivate
+
+

Returns renderer's physical device.

+
Returns
Physical device.
+ +
+
+ +

◆ memoryMap()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VkResult ne::KtxLoadingCallbackManager::memoryMap (uint64_t iAllocationId,
uint64_t iPageNumber,
VkDeviceSize * pMapLength,
void ** pData 
)
+
+static
+
+

KTX loader (external dependency) callback.

+
Parameters
+ + + + + +
iAllocationId
iPageNumber
pMapLength
pData
+
+
+
Returns
Result of the operation.
+ +
+
+ +

◆ memoryUnmap()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::KtxLoadingCallbackManager::memoryUnmap (uint64_t iAllocationId,
uint64_t iPageNumber 
)
+
+static
+
+

KTX loader (external dependency) callback.

+
Parameters
+ + + +
iAllocationId
iPageNumber
+
+
+ +
+
+

Member Data Documentation

+ +

◆ mtxData

+ +
+
+ + + + + +
+ + + + +
std::pair< std::recursive_mutex, KtxLoadingCallbackManager::Data > ne::KtxLoadingCallbackManager::mtxData {}
+
+staticprivate
+
+

Internal data.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/vulkan/resource/KtxLoadingCallbackManager.h
  • +
  • src/engine_lib/private/render/vulkan/resource/KtxLoadingCallbackManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1KtxLoadingCallbackManager.js b/classne_1_1KtxLoadingCallbackManager.js new file mode 100644 index 000000000..ad94c74bc --- /dev/null +++ b/classne_1_1KtxLoadingCallbackManager.js @@ -0,0 +1,15 @@ +var classne_1_1KtxLoadingCallbackManager = +[ + [ "Data", "structne_1_1KtxLoadingCallbackManager_1_1Data.html", "structne_1_1KtxLoadingCallbackManager_1_1Data" ], + [ "allocMem", "classne_1_1KtxLoadingCallbackManager.html#affa2d1da7b14a2c8d526c266c55f19a1", null ], + [ "bindBuffer", "classne_1_1KtxLoadingCallbackManager.html#a14abc0228d2da125a3bdfc8b4698d721", null ], + [ "bindImage", "classne_1_1KtxLoadingCallbackManager.html#a95f3ecf2b46433e51a59553d971c646f", null ], + [ "freeMem", "classne_1_1KtxLoadingCallbackManager.html#a150e6501d9d32d0a8a603d7286fb6c64", null ], + [ "getCurrentAllocationCount", "classne_1_1KtxLoadingCallbackManager.html#a2b89149c0e95795d5ae3a8fe98572591", null ], + [ "getKtxSubAllocatorCallbacks", "classne_1_1KtxLoadingCallbackManager.html#aaf3390befbc9984c8a972d4d39b4d3d8", null ], + [ "getMemoryAllocator", "classne_1_1KtxLoadingCallbackManager.html#a78d03f87a1034e9e553b8acbefad151d", null ], + [ "getPhysicalDevice", "classne_1_1KtxLoadingCallbackManager.html#a5d2d32f177b8d942cd2ade0ba971aaaf", null ], + [ "memoryMap", "classne_1_1KtxLoadingCallbackManager.html#ab6de741eb467287f35fc43e5afef0c08", null ], + [ "memoryUnmap", "classne_1_1KtxLoadingCallbackManager.html#a2b60b0942fa48882ef7f7f5f5518f05b", null ], + [ "mtxData", "classne_1_1KtxLoadingCallbackManager.html#a3777ddc52bd2ce8514b7a78ec6d5db65", null ] +]; \ No newline at end of file diff --git a/classne_1_1LightingShaderResourceManager-members.html b/classne_1_1LightingShaderResourceManager-members.html new file mode 100644 index 000000000..b6bdc732d --- /dev/null +++ b/classne_1_1LightingShaderResourceManager-members.html @@ -0,0 +1,157 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::LightingShaderResourceManager Member List
+
+
+ +

This is the complete list of members for ne::LightingShaderResourceManager, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bEngineShadersCompiledne::LightingShaderResourceManagerprivate
bindDescriptorsToRecreatedPipelineResources()ne::LightingShaderResourceManager
copyDataToGpu(size_t iCurrentFrameResourceIndex)ne::LightingShaderResourceManagerprivate
create(Renderer *pRenderer)ne::LightingShaderResourceManagerprivatestatic
frustumGridComputeShaderDatane::LightingShaderResourceManagerprivate
generalLightingDataDescriptorTypene::LightingShaderResourceManagerprivatestatic
getDirectionalLightDataArray() constne::LightingShaderResourceManager
getDirectionalLightsShaderResourceName()ne::LightingShaderResourceManagerstatic
getGeneralLightingDataShaderResourceName()ne::LightingShaderResourceManagerstatic
getInternalResources()ne::LightingShaderResourceManager
getPointLightDataArray() constne::LightingShaderResourceManager
getPointLightsInCameraFrustumIndicesShaderResourceName()ne::LightingShaderResourceManagerstatic
getPointLightsShaderResourceName()ne::LightingShaderResourceManagerstatic
getPointLightWorldLocationsShaderResourceName()ne::LightingShaderResourceManagerstatic
getShadowPassLightInfoArray() constne::LightingShaderResourceManager
getShadowPassLightInfoArrayShaderResourceName()ne::LightingShaderResourceManagerstatic
getSpotlightDataArray() constne::LightingShaderResourceManager
getSpotlightsInCameraFrustumIndicesShaderResourceName()ne::LightingShaderResourceManagerstatic
getSpotlightsShaderResourceName()ne::LightingShaderResourceManagerstatic
lightArraysne::LightingShaderResourceManagerprivate
lightCullingComputeShaderDatane::LightingShaderResourceManagerprivate
LightingShaderResourceManager()=delete (defined in ne::LightingShaderResourceManager)ne::LightingShaderResourceManager
LightingShaderResourceManager(Renderer *pRenderer)ne::LightingShaderResourceManagerprivate
mtxGpuDatane::LightingShaderResourceManagerprivate
onDirectionalLightArraySizeChanged(size_t iNewSize)ne::LightingShaderResourceManagerprivate
onEngineShadersCompiled()ne::LightingShaderResourceManagerprivate
onPointLightArraySizeChanged(size_t iNewSize)ne::LightingShaderResourceManagerprivate
onPointLightsInFrustumCulled(size_t iCurrentFrameResourceIndex)ne::LightingShaderResourceManagerprivate
onSpotlightArraySizeChanged(size_t iNewSize)ne::LightingShaderResourceManagerprivate
onSpotlightsInFrustumCulled(size_t iCurrentFrameResourceIndex)ne::LightingShaderResourceManagerprivate
pPrepareLightCullingComputeInterfacene::LightingShaderResourceManagerprivate
pRendererne::LightingShaderResourceManagerprivate
rebindGpuDataToAllPipelines()ne::LightingShaderResourceManagerprivate
rebindGpuDataToPipelineIfUsed(Pipeline *pPipeline)ne::LightingShaderResourceManagerprivate
recalculateLightTileFrustums(const std::pair< unsigned int, unsigned int > &renderTargetSize, const glm::mat4 &inverseProjectionMatrix)ne::LightingShaderResourceManagerprivate
Renderer (defined in ne::LightingShaderResourceManager)ne::LightingShaderResourceManagerfriend
sDirectionalLightsShaderResourceNamene::LightingShaderResourceManagerinlineprivatestatic
setAmbientLight(const glm::vec3 &ambientLight)ne::LightingShaderResourceManagerprivate
sGeneralLightingDataShaderResourceNamene::LightingShaderResourceManagerinlineprivatestatic
sPointLightsInCameraFrustumIndicesShaderResourceNamene::LightingShaderResourceManagerinlineprivatestatic
sPointLightsShaderResourceNamene::LightingShaderResourceManagerinlineprivatestatic
sShadowPassLightInfoShaderResourceNamene::LightingShaderResourceManagerinlineprivatestatic
sSpotlightsInCameraFrustumIndicesShaderResourceNamene::LightingShaderResourceManagerinlineprivatestatic
sSpotlightsShaderResourceNamene::LightingShaderResourceManagerinlineprivatestatic
updateDescriptorsForPipelineResource(Pipeline *pPipeline)ne::LightingShaderResourceManager
updateResources(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex)ne::LightingShaderResourceManagerprivate
~LightingShaderResourceManager() (defined in ne::LightingShaderResourceManager)ne::LightingShaderResourceManager
+
+ + + + diff --git a/classne_1_1LightingShaderResourceManager.html b/classne_1_1LightingShaderResourceManager.html new file mode 100644 index 000000000..681f6a265 --- /dev/null +++ b/classne_1_1LightingShaderResourceManager.html @@ -0,0 +1,1445 @@ + + + + + + + +Nameless Engine: ne::LightingShaderResourceManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <LightingShaderResourceManager.h>

+ + + + + + + + + + +

+Classes

struct  ComputeShaderData
 
struct  GeneralLightingShaderData
 
struct  GpuData
 
struct  LightArrays
 
+ + + + + + + + + + + + + + + +

+Public Member Functions

ShaderLightArraygetPointLightDataArray () const
 
ShaderLightArraygetDirectionalLightDataArray () const
 
ShaderLightArraygetSpotlightDataArray () const
 
ShaderLightArraygetShadowPassLightInfoArray () const
 
std::optional< ErrorbindDescriptorsToRecreatedPipelineResources ()
 
std::optional< ErrorupdateDescriptorsForPipelineResource (Pipeline *pPipeline)
 
std::pair< std::recursive_mutex, GpuData > * getInternalResources ()
 
+ + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static std::string getGeneralLightingDataShaderResourceName ()
 
static std::string getPointLightsShaderResourceName ()
 
static std::string getDirectionalLightsShaderResourceName ()
 
static std::string getSpotlightsShaderResourceName ()
 
static std::string getPointLightsInCameraFrustumIndicesShaderResourceName ()
 
static std::string getSpotlightsInCameraFrustumIndicesShaderResourceName ()
 
static std::string getShadowPassLightInfoArrayShaderResourceName ()
 
static std::string getPointLightWorldLocationsShaderResourceName ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

 LightingShaderResourceManager (Renderer *pRenderer)
 
std::optional< ErrorrecalculateLightTileFrustums (const std::pair< unsigned int, unsigned int > &renderTargetSize, const glm::mat4 &inverseProjectionMatrix)
 
void onEngineShadersCompiled ()
 
void setAmbientLight (const glm::vec3 &ambientLight)
 
void updateResources (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex)
 
void onPointLightArraySizeChanged (size_t iNewSize)
 
void onPointLightsInFrustumCulled (size_t iCurrentFrameResourceIndex)
 
void onDirectionalLightArraySizeChanged (size_t iNewSize)
 
void onSpotlightArraySizeChanged (size_t iNewSize)
 
void onSpotlightsInFrustumCulled (size_t iCurrentFrameResourceIndex)
 
void copyDataToGpu (size_t iCurrentFrameResourceIndex)
 
std::optional< ErrorrebindGpuDataToAllPipelines ()
 
std::optional< ErrorrebindGpuDataToPipelineIfUsed (Pipeline *pPipeline)
 
+ + + +

+Static Private Member Functions

static std::unique_ptr< LightingShaderResourceManagercreate (Renderer *pRenderer)
 
+ + + + + + + + + + + + + + + +

+Private Attributes

LightArrays lightArrays
 
std::pair< std::recursive_mutex, GpuDatamtxGpuData
 
ComputeShaderData::FrustumGridComputeShader::ComputeShader frustumGridComputeShaderData
 
ComputeShaderData::LightCullingComputeShader::ComputeShader lightCullingComputeShaderData
 
std::unique_ptr< ComputeShaderInterfacepPrepareLightCullingComputeInterface
 
RendererpRenderer = nullptr
 
bool bEngineShadersCompiled = false
 
+ + + + + + + + + + + + + + + + + +

+Static Private Attributes

static const std::string sGeneralLightingDataShaderResourceName = "generalLightingData"
 
static const std::string sPointLightsShaderResourceName = "pointLights"
 
static const std::string sDirectionalLightsShaderResourceName = "directionalLights"
 
static const std::string sSpotlightsShaderResourceName = "spotlights"
 
static const std::string sPointLightsInCameraFrustumIndicesShaderResourceName
 
static const std::string sSpotlightsInCameraFrustumIndicesShaderResourceName
 
static const std::string sShadowPassLightInfoShaderResourceName = "shadowPassLightInfo"
 
static constexpr auto generalLightingDataDescriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
 
+ + + +

+Friends

+class Renderer
 
+

Detailed Description

+

Manages GPU resources that store lighting related data (such as data of all spawned light sources (data such as color, intensity, position, etc.)).

+

Constructor & Destructor Documentation

+ +

◆ LightingShaderResourceManager()

+ +
+
+ + + + + +
+ + + + + + + + +
ne::LightingShaderResourceManager::LightingShaderResourceManager (RendererpRenderer)
+
+private
+
+

Initializes a new manager.

+
Parameters
+ + +
pRendererUsed renderer.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ bindDescriptorsToRecreatedPipelineResources()

+ +
+
+ + + + + + + +
std::optional< Error > ne::LightingShaderResourceManager::bindDescriptorsToRecreatedPipelineResources ()
+
+

Updates descriptors in all graphics pipelines to make descriptors reference the underlying buffers.

+
Remarks
Does nothing if DirectX renderer is used.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ copyDataToGpu()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::LightingShaderResourceManager::copyDataToGpu (size_t iCurrentFrameResourceIndex)
+
+private
+
+

Copies data from mtxGpuData to the GPU resource of the current frame resource.

+
Parameters
+ + +
iCurrentFrameResourceIndexIndex of the frame resource that will be used to submit the next frame.
+
+
+ +
+
+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + +
std::unique_ptr< LightingShaderResourceManager > ne::LightingShaderResourceManager::create (RendererpRenderer)
+
+staticprivate
+
+

Creates a new manager.

+
Parameters
+ + +
pRendererUsed renderer.
+
+
+
Returns
Created manager.
+ +
+
+ +

◆ getDirectionalLightDataArray()

+ +
+
+ + + + + + + +
ShaderLightArray * ne::LightingShaderResourceManager::getDirectionalLightDataArray () const
+
+

Returns a non-owning reference to an array that stores data of all spawned directional lights.

+
Warning
Do not delete (free) returned pointer.
+
Returns
Shader array.
+ +
+
+ +

◆ getDirectionalLightsShaderResourceName()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ne::LightingShaderResourceManager::getDirectionalLightsShaderResourceName ()
+
+static
+
+

Return name of the shader resource that stores array of directional lights (name from shader code).

+
Returns
Name of the shader resource.
+ +
+
+ +

◆ getGeneralLightingDataShaderResourceName()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ne::LightingShaderResourceManager::getGeneralLightingDataShaderResourceName ()
+
+static
+
+

Return name of the shader resource that stores general lighting data (name from shader code).

+
Returns
Name of the shader resource.
+ +
+
+ +

◆ getInternalResources()

+ +
+
+ + + + + + + +
std::pair< std::recursive_mutex, LightingShaderResourceManager::GpuData > * ne::LightingShaderResourceManager::getInternalResources ()
+
+

Returns manager's internal resources.

+
Remarks
Generally used for tests (read-only), you should not modify them.
+
Returns
Internal resources.
+ +
+
+ +

◆ getPointLightDataArray()

+ +
+
+ + + + + + + +
ShaderLightArray * ne::LightingShaderResourceManager::getPointLightDataArray () const
+
+

Returns a non-owning reference to an array that stores data of all spawned point lights.

+
Warning
Do not delete (free) returned pointer.
+
Returns
Shader array.
+ +
+
+ +

◆ getPointLightsInCameraFrustumIndicesShaderResourceName()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ne::LightingShaderResourceManager::getPointLightsInCameraFrustumIndicesShaderResourceName ()
+
+static
+
+

Return name of the shader resource that stores indices of point lights in camera's frustum (name from shader code).

+
Returns
Name of the shader resource.
+ +
+
+ +

◆ getPointLightsShaderResourceName()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ne::LightingShaderResourceManager::getPointLightsShaderResourceName ()
+
+static
+
+

Return name of the shader resource that stores array of point lights (name from shader code).

+
Returns
Name of the shader resource.
+ +
+
+ +

◆ getPointLightWorldLocationsShaderResourceName()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string ne::LightingShaderResourceManager::getPointLightWorldLocationsShaderResourceName ()
+
+static
+
+

Returns name of the shader resource that stores array of world positions for all point lights (used for shadow mapping).

+
Returns
Name of the shader resource.
+ +
+
+ +

◆ getShadowPassLightInfoArray()

+ +
+
+ + + + + + + +
ShaderLightArray * ne::LightingShaderResourceManager::getShadowPassLightInfoArray () const
+
+

Returns a non-owning reference to an array that stores info for shadow pass of spawned lights.

+
Warning
Do not delete (free) returned pointer.
+
Returns
Shader array.
+ +
+
+ +

◆ getShadowPassLightInfoArrayShaderResourceName()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ne::LightingShaderResourceManager::getShadowPassLightInfoArrayShaderResourceName ()
+
+static
+
+

Returns name of the shader resource that stores array of viewProjectionMatrix for all light sources (used for shadow mapping).

+
Returns
Name of the shader resource.
+ +
+
+ +

◆ getSpotlightDataArray()

+ +
+
+ + + + + + + +
ShaderLightArray * ne::LightingShaderResourceManager::getSpotlightDataArray () const
+
+

Returns a non-owning reference to an array that stores data of all spawned spotlights.

+
Warning
Do not delete (free) returned pointer.
+
Returns
Shader array.
+ +
+
+ +

◆ getSpotlightsInCameraFrustumIndicesShaderResourceName()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ne::LightingShaderResourceManager::getSpotlightsInCameraFrustumIndicesShaderResourceName ()
+
+static
+
+

Return name of the shader resource that stores indices of spotlights in camera's frustum (name from shader code).

+
Returns
Name of the shader resource.
+ +
+
+ +

◆ getSpotlightsShaderResourceName()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ne::LightingShaderResourceManager::getSpotlightsShaderResourceName ()
+
+static
+
+

Return name of the shader resource that stores array of spotlights (name from shader code).

+
Returns
Name of the shader resource.
+ +
+
+ +

◆ onDirectionalLightArraySizeChanged()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::LightingShaderResourceManager::onDirectionalLightArraySizeChanged (size_t iNewSize)
+
+private
+
+

Called after array of directional light sources changed its size.

+
Parameters
+ + +
iNewSizeNew size of the array that stores GPU data for spawned directional lights.
+
+
+ +
+
+ +

◆ onEngineShadersCompiled()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::LightingShaderResourceManager::onEngineShadersCompiled ()
+
+private
+
+

Called by renderer to notify that all engine shaders were compiled.

+
Remarks
Just changes internal boolean and nothing else. Expects you to call recalculateLightTileFrustums afterwards to do some actual calculations.
+ +
+
+ +

◆ onPointLightArraySizeChanged()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::LightingShaderResourceManager::onPointLightArraySizeChanged (size_t iNewSize)
+
+private
+
+

Called after array of point light sources changed its size.

+
Parameters
+ + +
iNewSizeNew size of the array that stores GPU data for spawned point lights.
+
+
+ +
+
+ +

◆ onPointLightsInFrustumCulled()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::LightingShaderResourceManager::onPointLightsInFrustumCulled (size_t iCurrentFrameResourceIndex)
+
+private
+
+

Called after array of indices to point lights in frustum was changed (indices changed).

+
Parameters
+ + +
iCurrentFrameResourceIndexIndex of the frame resource that will be used to submit the next frame.
+
+
+ +
+
+ +

◆ onSpotlightArraySizeChanged()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::LightingShaderResourceManager::onSpotlightArraySizeChanged (size_t iNewSize)
+
+private
+
+

Called after array of spotlights changed its size.

+
Parameters
+ + +
iNewSizeNew size of the array that stores GPU data for spawned spotlights.
+
+
+ +
+
+ +

◆ onSpotlightsInFrustumCulled()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::LightingShaderResourceManager::onSpotlightsInFrustumCulled (size_t iCurrentFrameResourceIndex)
+
+private
+
+

Called after array of indices to spotlights in frustum was changed (indices changed).

+
Parameters
+ + +
iCurrentFrameResourceIndexIndex of the frame resource that will be used to submit the next frame.
+
+
+ +
+
+ +

◆ rebindGpuDataToAllPipelines()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::LightingShaderResourceManager::rebindGpuDataToAllPipelines ()
+
+private
+
+

Updates descriptors in all graphics pipelines to make descriptors reference the underlying buffers from mtxGpuData.

+
Remarks
Does nothing if DirectX renderer is used.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ rebindGpuDataToPipelineIfUsed()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::LightingShaderResourceManager::rebindGpuDataToPipelineIfUsed (PipelinepPipeline)
+
+private
+
+

Updates descriptors in the specified graphics pipeline to make descriptors reference the underlying buffers from mtxGpuData.

+
Remarks
Does nothing if DirectX renderer is used.
+
Parameters
+ + +
pPipelinePipeline to bind data to.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ recalculateLightTileFrustums()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::LightingShaderResourceManager::recalculateLightTileFrustums (const std::pair< unsigned int, unsigned int > & renderTargetSize,
const glm::mat4 & inverseProjectionMatrix 
)
+
+private
+
+

Called by renderer when render resolution or projection matrix changes to queue a compute shader that will recalculate grid of frustums used during light culling.

+
Parameters
+ + + +
renderTargetSizeNew render of the underlying render image in pixels.
inverseProjectionMatrixInverse projection matrix of the currently active camera.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ setAmbientLight()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::LightingShaderResourceManager::setAmbientLight (const glm::vec3 & ambientLight)
+
+private
+
+

Sets light color intensity of ambient lighting.

+
Remarks
New lighting settings will be copied to the GPU next time updateResources is called.
+
Parameters
+ + +
ambientLightColor in RGB format.
+
+
+ +
+
+ +

◆ updateDescriptorsForPipelineResource()

+ +
+
+ + + + + + + + +
std::optional< Error > ne::LightingShaderResourceManager::updateDescriptorsForPipelineResource (PipelinepPipeline)
+
+

Updates descriptors in the specified graphics pipeline to make descriptors reference the underlying buffers.

+
Remarks
Does nothing if DirectX renderer is used.
+
Parameters
+ + +
pPipelinePipeline to get descriptors from.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ updateResources()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::LightingShaderResourceManager::updateResources (FrameResourcepCurrentFrameResource,
size_t iCurrentFrameResourceIndex 
)
+
+private
+
+

Updates all light source resources marked as "needs update" and copies new (updated) data to the GPU resource of the specified frame resource.

+
Warning
Expected to be called somewhere inside of the drawNextFrame function so that renderer's depth texture without multisampling pointer will not change.
+
Remarks
Also copies data from mtxGpuData.
+
Parameters
+ + + +
pCurrentFrameResourceCurrent frame resource that will be used to submit the next frame.
iCurrentFrameResourceIndexIndex of the frame resource that will be used to submit the next frame.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ bEngineShadersCompiled

+ +
+
+ + + + + +
+ + + + +
bool ne::LightingShaderResourceManager::bEngineShadersCompiled = false
+
+private
+
+

true if the renderer has finished compiling engine shaders, false otherwise.

+ +
+
+ +

◆ frustumGridComputeShaderData

+ +
+
+ + + + + +
+ + + + +
ComputeShaderData::FrustumGridComputeShader::ComputeShader ne::LightingShaderResourceManager::frustumGridComputeShaderData
+
+private
+
+

Calculates frustum grid for light culling.

+ +
+
+ +

◆ generalLightingDataDescriptorType

+ +
+
+ + + + + +
+ + + + +
constexpr auto ne::LightingShaderResourceManager::generalLightingDataDescriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
+
+staticconstexprprivate
+
+

Type of the descriptor used to store data from mtxGpuData.

+ +
+
+ +

◆ lightArrays

+ +
+
+ + + + + +
+ + + + +
LightArrays ne::LightingShaderResourceManager::lightArrays
+
+private
+
+

Groups GPU resources that store arrays of light sources.

+ +
+
+ +

◆ lightCullingComputeShaderData

+ +
+
+ + + + + +
+ + + + +
ComputeShaderData::LightCullingComputeShader::ComputeShader ne::LightingShaderResourceManager::lightCullingComputeShaderData
+
+private
+
+

Does light culling.

+ +
+
+ +

◆ mtxGpuData

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, GpuData> ne::LightingShaderResourceManager::mtxGpuData
+
+private
+
+

Groups GPU related data.

+ +
+
+ +

◆ pPrepareLightCullingComputeInterface

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<ComputeShaderInterface> ne::LightingShaderResourceManager::pPrepareLightCullingComputeInterface
+
+private
+
+

Compute interface that runs before light culling shader to reset global variables.

+ +
+
+ +

◆ pRenderer

+ +
+
+ + + + + +
+ + + + +
Renderer* ne::LightingShaderResourceManager::pRenderer = nullptr
+
+private
+
+

Used renderer.

+ +
+
+ +

◆ sDirectionalLightsShaderResourceName

+ +
+
+ + + + + +
+ + + + +
const std::string ne::LightingShaderResourceManager::sDirectionalLightsShaderResourceName = "directionalLights"
+
+inlinestaticprivate
+
+

Name of the resource that stores array of directional lights.

+ +
+
+ +

◆ sGeneralLightingDataShaderResourceName

+ +
+
+ + + + + +
+ + + + +
const std::string ne::LightingShaderResourceManager::sGeneralLightingDataShaderResourceName = "generalLightingData"
+
+inlinestaticprivate
+
+

Name of the resource that stores data from mtxGpuData (name from shader code).

+ +
+
+ +

◆ sPointLightsInCameraFrustumIndicesShaderResourceName

+ +
+
+ + + + + +
+ + + + +
const std::string ne::LightingShaderResourceManager::sPointLightsInCameraFrustumIndicesShaderResourceName
+
+inlinestaticprivate
+
+Initial value:
=
+
"pointLightsInCameraFrustumIndices"
+

Name of the resources that stores indices of point lights in camera's frustum.

+ +
+
+ +

◆ sPointLightsShaderResourceName

+ +
+
+ + + + + +
+ + + + +
const std::string ne::LightingShaderResourceManager::sPointLightsShaderResourceName = "pointLights"
+
+inlinestaticprivate
+
+

Name of the resource that stores array of point lights.

+ +
+
+ +

◆ sShadowPassLightInfoShaderResourceName

+ +
+
+ + + + + +
+ + + + +
const std::string ne::LightingShaderResourceManager::sShadowPassLightInfoShaderResourceName = "shadowPassLightInfo"
+
+inlinestaticprivate
+
+

Name of the resource that stores array light infos for all spawned lights (used in shadow pass).

+ +
+
+ +

◆ sSpotlightsInCameraFrustumIndicesShaderResourceName

+ +
+
+ + + + + +
+ + + + +
const std::string ne::LightingShaderResourceManager::sSpotlightsInCameraFrustumIndicesShaderResourceName
+
+inlinestaticprivate
+
+Initial value:
=
+
"spotlightsInCameraFrustumIndices"
+

Name of the resources that stores indices of spotlights in camera's frustum.

+ +
+
+ +

◆ sSpotlightsShaderResourceName

+ +
+
+ + + + + +
+ + + + +
const std::string ne::LightingShaderResourceManager::sSpotlightsShaderResourceName = "spotlights"
+
+inlinestaticprivate
+
+

Name of the resource that stores array of spotlights.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/general/resource/LightingShaderResourceManager.h
  • +
  • src/engine_lib/private/shader/general/resource/LightingShaderResourceManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1LightingShaderResourceManager.js b/classne_1_1LightingShaderResourceManager.js new file mode 100644 index 000000000..7457105b9 --- /dev/null +++ b/classne_1_1LightingShaderResourceManager.js @@ -0,0 +1,51 @@ +var classne_1_1LightingShaderResourceManager = +[ + [ "ComputeShaderData", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData.html", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData" ], + [ "GeneralLightingShaderData", "structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData.html", "structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData" ], + [ "GpuData", "structne_1_1LightingShaderResourceManager_1_1GpuData.html", "structne_1_1LightingShaderResourceManager_1_1GpuData" ], + [ "LightArrays", "structne_1_1LightingShaderResourceManager_1_1LightArrays.html", "structne_1_1LightingShaderResourceManager_1_1LightArrays" ], + [ "LightingShaderResourceManager", "classne_1_1LightingShaderResourceManager.html#a11c44f87535d3904794827c653a85037", null ], + [ "bindDescriptorsToRecreatedPipelineResources", "classne_1_1LightingShaderResourceManager.html#a262f09bbf6a6d9d7409488b6d2ea63ea", null ], + [ "copyDataToGpu", "classne_1_1LightingShaderResourceManager.html#aeebc11d68f89e7a0cc7d174b09bc6f12", null ], + [ "create", "classne_1_1LightingShaderResourceManager.html#a0ba31dd66bb4ab870b307f58affd1c3e", null ], + [ "getDirectionalLightDataArray", "classne_1_1LightingShaderResourceManager.html#ab1059a45ce18ac2d920320812e7d6782", null ], + [ "getDirectionalLightsShaderResourceName", "classne_1_1LightingShaderResourceManager.html#ac404f96829ab7021c2486d0c1626b36e", null ], + [ "getGeneralLightingDataShaderResourceName", "classne_1_1LightingShaderResourceManager.html#a559ee5b30d2a872715b1633f1d0a4f8d", null ], + [ "getInternalResources", "classne_1_1LightingShaderResourceManager.html#a7c4eac3d12365c446e56058a78a7766b", null ], + [ "getPointLightDataArray", "classne_1_1LightingShaderResourceManager.html#a08ad02504ad104da763078265e6b2394", null ], + [ "getPointLightsInCameraFrustumIndicesShaderResourceName", "classne_1_1LightingShaderResourceManager.html#ab982d7908db0212f3020ce2221871021", null ], + [ "getPointLightsShaderResourceName", "classne_1_1LightingShaderResourceManager.html#a9fb9e5fd18cc1b94d55f8a91b3839875", null ], + [ "getPointLightWorldLocationsShaderResourceName", "classne_1_1LightingShaderResourceManager.html#a6e197d9e72831ef61946d89653d14cf8", null ], + [ "getShadowPassLightInfoArray", "classne_1_1LightingShaderResourceManager.html#a61f069d6581b82f2fda19872dd8a1f2e", null ], + [ "getShadowPassLightInfoArrayShaderResourceName", "classne_1_1LightingShaderResourceManager.html#aa15b76e93bb1854496754513e73f439b", null ], + [ "getSpotlightDataArray", "classne_1_1LightingShaderResourceManager.html#a2b6507057bb9a378f1686cf750c15e18", null ], + [ "getSpotlightsInCameraFrustumIndicesShaderResourceName", "classne_1_1LightingShaderResourceManager.html#ab6cb78332ed7ed562600168db9bd5f3e", null ], + [ "getSpotlightsShaderResourceName", "classne_1_1LightingShaderResourceManager.html#ab503bd5d97d0aa7153a8f7174d2388ff", null ], + [ "onDirectionalLightArraySizeChanged", "classne_1_1LightingShaderResourceManager.html#a4509a3f1e11d13d092aa01e0c286a708", null ], + [ "onEngineShadersCompiled", "classne_1_1LightingShaderResourceManager.html#aa04b68e7333b07b078edfc596f52c644", null ], + [ "onPointLightArraySizeChanged", "classne_1_1LightingShaderResourceManager.html#a7a5a986f0975a902eb20de4a35cda99f", null ], + [ "onPointLightsInFrustumCulled", "classne_1_1LightingShaderResourceManager.html#a93a002ef3c7c24a2056853ca92a71aa1", null ], + [ "onSpotlightArraySizeChanged", "classne_1_1LightingShaderResourceManager.html#abf744efd85681e0590d4581730f3b702", null ], + [ "onSpotlightsInFrustumCulled", "classne_1_1LightingShaderResourceManager.html#a3adfd30e58ca0880081b4041487c6834", null ], + [ "rebindGpuDataToAllPipelines", "classne_1_1LightingShaderResourceManager.html#a88316d676ec4e8badf007e1779861062", null ], + [ "rebindGpuDataToPipelineIfUsed", "classne_1_1LightingShaderResourceManager.html#a57dac1214d1939093dc8dbea6be03046", null ], + [ "recalculateLightTileFrustums", "classne_1_1LightingShaderResourceManager.html#a6eb69be2c6ba12b23d29aa978bff7d07", null ], + [ "setAmbientLight", "classne_1_1LightingShaderResourceManager.html#a2b7f5ff1ff34b822c2e54afb7427fccd", null ], + [ "updateDescriptorsForPipelineResource", "classne_1_1LightingShaderResourceManager.html#aab34aa3877cdbeef9b0edeef19fbec7d", null ], + [ "updateResources", "classne_1_1LightingShaderResourceManager.html#a2e40c621b5b2f81c8bf2213ce4bb3ee6", null ], + [ "bEngineShadersCompiled", "classne_1_1LightingShaderResourceManager.html#ad0c73fff5b1754dbf404d9299f26c274", null ], + [ "frustumGridComputeShaderData", "classne_1_1LightingShaderResourceManager.html#a57791c8b09c6a76143cea30ae3abd500", null ], + [ "generalLightingDataDescriptorType", "classne_1_1LightingShaderResourceManager.html#ae65e9263c3ceded81a79f29543e79128", null ], + [ "lightArrays", "classne_1_1LightingShaderResourceManager.html#a2a8824a1de419499ed7840799a6e6e0c", null ], + [ "lightCullingComputeShaderData", "classne_1_1LightingShaderResourceManager.html#a963ab704e0ca1083b20c8c0c80a6ed2b", null ], + [ "mtxGpuData", "classne_1_1LightingShaderResourceManager.html#af31cb4524db9f7665c482e1d380fd626", null ], + [ "pPrepareLightCullingComputeInterface", "classne_1_1LightingShaderResourceManager.html#a202097de5e699ed052ccd7e1eb96483d", null ], + [ "pRenderer", "classne_1_1LightingShaderResourceManager.html#a5ef0adb2877a35e64a6a8b6e9a69370a", null ], + [ "sDirectionalLightsShaderResourceName", "classne_1_1LightingShaderResourceManager.html#a5e198f169498bd4837f1389ed30fd739", null ], + [ "sGeneralLightingDataShaderResourceName", "classne_1_1LightingShaderResourceManager.html#a54cda9f8dbd4c1c4e822e89382ddee39", null ], + [ "sPointLightsInCameraFrustumIndicesShaderResourceName", "classne_1_1LightingShaderResourceManager.html#a62ab5e3e0875d9240561ebaae8cb59c8", null ], + [ "sPointLightsShaderResourceName", "classne_1_1LightingShaderResourceManager.html#ad3c83434efe1ffcf3282610e4f77a648", null ], + [ "sShadowPassLightInfoShaderResourceName", "classne_1_1LightingShaderResourceManager.html#a57426b38bcc52d0f2a060ae63157d6f7", null ], + [ "sSpotlightsInCameraFrustumIndicesShaderResourceName", "classne_1_1LightingShaderResourceManager.html#a36a7b6f9ede646d14e783fb05ee4a983", null ], + [ "sSpotlightsShaderResourceName", "classne_1_1LightingShaderResourceManager.html#a7d68298ec87b9ee66fec4551a1fdcb45", null ] +]; \ No newline at end of file diff --git a/classne_1_1Logger-members.html b/classne_1_1Logger-members.html new file mode 100644 index 000000000..f4aaf80d7 --- /dev/null +++ b/classne_1_1Logger-members.html @@ -0,0 +1,130 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::Logger Member List
+
+
+ +

This is the complete list of members for ne::Logger, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
error(std::string_view sText, const std::source_location location=std::source_location::current()) constne::Logger
flushToDisk()ne::Logger
get()ne::Loggerstatic
getDateTime()ne::Loggerprivatestatic
getDirectoryWithLogs() constne::Logger
getTotalErrorsProduced()ne::Loggerstatic
getTotalWarningsProduced()ne::Loggerstatic
iMaxLogFilesne::Loggerinlineprivatestatic
info(std::string_view sText, const std::source_location location=std::source_location::current()) constne::Logger
iTotalErrorsProducedne::Loggerinlineprivatestatic
iTotalWarningsProducedne::Loggerinlineprivatestatic
Logger(const Logger &)=delete (defined in ne::Logger)ne::Logger
Logger() (defined in ne::Logger)ne::Loggerprivate
operator=(const Logger &)=delete (defined in ne::Logger)ne::Logger
pSpdLoggerne::Loggerprivate
removeOldestLogFiles(const std::filesystem::path &sLogDirectory)ne::Loggerprivatestatic
sLogFileExtensionne::Loggerinlineprivatestatic
sLoggerWorkingDirectoryne::Loggerprivate
warn(std::string_view sText, const std::source_location location=std::source_location::current()) constne::Logger
~Logger() (defined in ne::Logger)ne::Logger
+
+ + + + diff --git a/classne_1_1Logger.html b/classne_1_1Logger.html new file mode 100644 index 000000000..a9285b4f3 --- /dev/null +++ b/classne_1_1Logger.html @@ -0,0 +1,606 @@ + + + + + + + +Nameless Engine: ne::Logger Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <Logger.h>

+ + + + + + + + + + + + + + + + +

+Public Member Functions

Logger (const Logger &)=delete
 
+Loggeroperator= (const Logger &)=delete
 
void info (std::string_view sText, const std::source_location location=std::source_location::current()) const
 
void warn (std::string_view sText, const std::source_location location=std::source_location::current()) const
 
void error (std::string_view sText, const std::source_location location=std::source_location::current()) const
 
void flushToDisk ()
 
std::filesystem::path getDirectoryWithLogs () const
 
+ + + + + + + +

+Static Public Member Functions

static Loggerget ()
 
static size_t getTotalWarningsProduced ()
 
static size_t getTotalErrorsProduced ()
 
+ + + + + +

+Static Private Member Functions

static std::string getDateTime ()
 
static void removeOldestLogFiles (const std::filesystem::path &sLogDirectory)
 
+ + + + + +

+Private Attributes

std::unique_ptr< spdlog::logger > pSpdLogger = nullptr
 
std::filesystem::path sLoggerWorkingDirectory
 
+ + + + + + + + + +

+Static Private Attributes

static std::atomic< size_t > iTotalWarningsProduced {0}
 
static std::atomic< size_t > iTotalErrorsProduced {0}
 
static constexpr size_t iMaxLogFiles = 5
 
static const char * sLogFileExtension = ".log"
 
+

Detailed Description

+

Logs to file and console.

+

Member Function Documentation

+ +

◆ error()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ne::Logger::error (std::string_view sText,
const std::source_location location = std::source_location::current() 
) const
+
+

Add text to console and log file using "error" category. The text message will be appended with the file name and the line it was called from.

+
Remarks
Forces the log to be flushed on the disk.
+
Parameters
+ + + +
sTextText to write to log.
locationShould not be passed explicitly.
+
+
+ +
+
+ +

◆ flushToDisk()

+ +
+
+ + + + + + + +
void ne::Logger::flushToDisk ()
+
+

Forces the log to be flushed to the disk.

+
Remarks
Note that you are not required to call this explicitly as the logger will automatically flush the log to the disk from time to time but you can also explicitly call this function when you need to make sure the current log is fully saved on the disk.
+ +
+
+ +

◆ get()

+ +
+
+ + + + + +
+ + + + + + + +
Logger & ne::Logger::get ()
+
+static
+
+

Returns a reference to the logger instance. If no instance was created yet, this function will create it and return a reference to it.

+
Returns
Reference to the logger instance.
+ +
+
+ +

◆ getDateTime()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ne::Logger::getDateTime ()
+
+staticprivate
+
+

Returns current date and time in format "month.day_hour-minute-second".

+
Returns
Date and time string.
+ +
+
+ +

◆ getDirectoryWithLogs()

+ +
+
+ + + + + + + +
std::filesystem::path ne::Logger::getDirectoryWithLogs () const
+
+

Returns the directory that contains all logs.

+
Returns
Directory for logs.
+ +
+
+ +

◆ getTotalErrorsProduced()

+ +
+
+ + + + + +
+ + + + + + + +
size_t ne::Logger::getTotalErrorsProduced ()
+
+static
+
+

Returns the total number of errors produced at this point.

+
Returns
Error count.
+ +
+
+ +

◆ getTotalWarningsProduced()

+ +
+
+ + + + + +
+ + + + + + + +
size_t ne::Logger::getTotalWarningsProduced ()
+
+static
+
+

Returns the total number of warnings produced at this point.

+
Returns
Warning count.
+ +
+
+ +

◆ info()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ne::Logger::info (std::string_view sText,
const std::source_location location = std::source_location::current() 
) const
+
+

Add text to console and log file using "info" category. The text message will be appended with the file name and the line it was called from.

+
Parameters
+ + + +
sTextText to write to log.
locationShould not be passed explicitly.
+
+
+ +
+
+ +

◆ removeOldestLogFiles()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::Logger::removeOldestLogFiles (const std::filesystem::path & sLogDirectory)
+
+staticprivate
+
+

Removes oldest log files if the number of log files exceed a specific limit.

+
Parameters
+ + +
sLogDirectoryDirectory that contains log files.
+
+
+ +
+
+ +

◆ warn()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ne::Logger::warn (std::string_view sText,
const std::source_location location = std::source_location::current() 
) const
+
+

Add text to console and log file using "warning" category. The text message will be appended with the file name and the line it was called from.

+
Remarks
Forces the log to be flushed on the disk.
+
Parameters
+ + + +
sTextText to write to log.
locationShould not be passed explicitly.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ iMaxLogFiles

+ +
+
+ + + + + +
+ + + + +
constexpr size_t ne::Logger::iMaxLogFiles = 5
+
+inlinestaticconstexprprivate
+
+

The maximum number of log files in the logger directory. If the logger directory contains this amount of log files, the oldest log file will be removed to create a new one.

+ +
+
+ +

◆ iTotalErrorsProduced

+ +
+
+ + + + + +
+ + + + +
std::atomic<size_t> ne::Logger::iTotalErrorsProduced {0}
+
+inlinestaticprivate
+
+

The total number of errors produced.

+ +
+
+ +

◆ iTotalWarningsProduced

+ +
+
+ + + + + +
+ + + + +
std::atomic<size_t> ne::Logger::iTotalWarningsProduced {0}
+
+inlinestaticprivate
+
+

The total number of warnings produced.

+ +
+
+ +

◆ pSpdLogger

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<spdlog::logger> ne::Logger::pSpdLogger = nullptr
+
+private
+
+

Spdlog logger.

+ +
+
+ +

◆ sLogFileExtension

+ +
+
+ + + + + +
+ + + + +
const char* ne::Logger::sLogFileExtension = ".log"
+
+inlinestaticprivate
+
+

Extension of the log files.

+ +
+
+ +

◆ sLoggerWorkingDirectory

+ +
+
+ + + + + +
+ + + + +
std::filesystem::path ne::Logger::sLoggerWorkingDirectory
+
+private
+
+

Directory that is used to create logs.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/io/Logger.h
  • +
  • src/engine_lib/private/io/Logger.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1Logger.js b/classne_1_1Logger.js new file mode 100644 index 000000000..fb5068ecf --- /dev/null +++ b/classne_1_1Logger.js @@ -0,0 +1,19 @@ +var classne_1_1Logger = +[ + [ "error", "classne_1_1Logger.html#a8924f8a6a69fa1a7b64d1c2a1a4f59e8", null ], + [ "flushToDisk", "classne_1_1Logger.html#ae512e20fe66d1959c9efb026704e5e8a", null ], + [ "get", "classne_1_1Logger.html#ac04b761e4d1a5e7a9cd5c48e4d926f92", null ], + [ "getDateTime", "classne_1_1Logger.html#a0d54d158ef98dd59b27f553ec6d51ff8", null ], + [ "getDirectoryWithLogs", "classne_1_1Logger.html#a15839ec7b47081c58f2cd8d489d65f80", null ], + [ "getTotalErrorsProduced", "classne_1_1Logger.html#a083ba88a5d82f69492cfeb9773489cad", null ], + [ "getTotalWarningsProduced", "classne_1_1Logger.html#ab721d9793bb9db637af27977ed6d659b", null ], + [ "info", "classne_1_1Logger.html#a0b8b03ae19b39a359b4116c369e23466", null ], + [ "removeOldestLogFiles", "classne_1_1Logger.html#ad687d5425c746e747fb3dcd5c13bf2fc", null ], + [ "warn", "classne_1_1Logger.html#ae8507446e039b60153cb8b43b20bf714", null ], + [ "iMaxLogFiles", "classne_1_1Logger.html#ac1c6d8c1568da0fdb5af4077130e004e", null ], + [ "iTotalErrorsProduced", "classne_1_1Logger.html#a2ee58c634be79f990ee30f937df86968", null ], + [ "iTotalWarningsProduced", "classne_1_1Logger.html#a90cb6e0647c9c69f385ac47d61c48e79", null ], + [ "pSpdLogger", "classne_1_1Logger.html#a1eff896c38ca6db2e7a5df2c8c580b9c", null ], + [ "sLogFileExtension", "classne_1_1Logger.html#ab64533344013fa20bcc6c7c10de8d11a", null ], + [ "sLoggerWorkingDirectory", "classne_1_1Logger.html#a0d5dbdb45e98008f6fdcdbb244633e4a", null ] +]; \ No newline at end of file diff --git a/classne_1_1Material-members.html b/classne_1_1Material-members.html new file mode 100644 index 000000000..1a7be2196 --- /dev/null +++ b/classne_1_1Material-members.html @@ -0,0 +1,200 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::Material Member List
+
+
+ +

This is the complete list of members for ne::Material, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
allocateShaderResources()ne::Materialprivate
bIsShaderResourcesAllocatedne::Materialprivate
bUseTransparencyne::Materialprivate
create(const std::string &sVertexShaderName, const std::string &sPixelShaderName, bool bUseTransparency, const std::string &sMaterialName="Material")ne::Materialstatic
deallocateShaderResources()ne::Materialprivate
deserialize(const std::filesystem::path &pathToFile)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)ne::Serializablestatic
deserialize(std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, const std::string &sEntityId)ne::Serializablestatic
deserialize(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})ne::Serializablestatic
deserializeFromSection(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sSectionName, const std::string &sTypeGuid, const std::string &sEntityId, const std::optional< std::filesystem::path > &optionalPathToFile)ne::Serializableprivatestatic
deserializeMultiple(std::filesystem::path pathToFile)ne::Serializablestatic
diffuseColorne::Materialprivate
getClassForGuid(const std::string &sGuid)ne::Serializableprivatestatic
getClassForGuid(const rfk::Struct *pArchetypeToAnalyze, const std::string &sGuid)ne::Serializableprivatestatic
getColorPipeline() constne::Material
getCurrentAliveMaterialCount()ne::Materialstatic
getDepthOnlyPipeline() constne::Material
getDiffuseColor() constne::Material
getIdsFromFile(std::filesystem::path pathToFile)ne::Serializablestatic
getMaterialGpuResources()ne::Materialinline
getMaterialName() constne::Material
getOpacity() constne::Material
getPathDeserializedFromRelativeToRes() constne::Serializable
getPathToDiffuseTextureResource()ne::Material
getPipelineManagerForNewMaterial(const std::string &sVertexShaderName, const std::string &sPixelShaderName)ne::Materialprivatestatic
getPixelShaderMacrosForCurrentState()ne::Materialprivate
getPixelShaderName() constne::Material
getRoughness() constne::Material
getShadowMappingDirectionalSpotPipeline() constne::Material
getShadowMappingPointPipeline() constne::Material
getSpawnedMeshNodesThatUseThisMaterial()ne::Material
getSpecularColor() constne::Material
getVertexShaderMacrosForCurrentState()ne::Materialprivate
getVertexShaderName() constne::Material
initializePipelines()ne::Materialprivate
isTransparencyEnabled()ne::Material
isUsingTransparency() constne::Material
markShaderCpuWriteResourceAsNeedsUpdate(const std::string &sShaderResourceName)ne::Materialprivate
Material()ne::Material
Material(const Material &)=delete (defined in ne::Material)ne::Material
Material(const std::string &sVertexShaderName, const std::string &sPixelShaderName, bool bUseTransparency, PipelineManager *pPipelineManager, const std::string &sMaterialName="Material")ne::Materialprivate
MeshNode (defined in ne::Material)ne::Materialfriend
mtxGpuResourcesne::Materialprivate
mtxInternalResourcesne::Materialprivate
mtxShaderMaterialDataConstantsne::Materialprivate
mtxSpawnedMeshNodesThatUseThisMaterialne::Materialprivate
onAfterDeserialized() overridene::Materialprotectedvirtual
onFinishedUpdatingShaderMeshConstants()ne::Materialprivate
onMeshNodeDespawning(MeshNode *pMeshNode, const std::pair< GpuResource *, unsigned int > &indexBufferDisplayed)ne::Materialprivate
onMeshNodeSpawning(MeshNode *pMeshNode, const std::pair< GpuResource *, unsigned int > &indexBufferToDisplay)ne::Materialprivate
onSpawnedMeshNodeChangedVisibility(MeshNode *pMeshNode, bool bOldVisibility)ne::Materialprivate
onSpawnedMeshNodeRecreatedIndexBuffer(MeshNode *pMeshNode, const std::pair< GpuResource *, unsigned int > &deletedIndexBuffer, const std::pair< GpuResource *, unsigned int > &newIndexBuffer)ne::Materialprivate
onSpawnedMeshNodeStartedUsingMaterial(MeshNode *pMeshNode, const std::pair< GpuResource *, unsigned int > &indexBufferToDisplay)ne::Materialprivate
onSpawnedMeshNodeStoppedUsingMaterial(MeshNode *pMeshNode, const std::pair< GpuResource *, unsigned int > &indexBufferDisplayed)ne::Materialprivate
onStartUpdatingShaderMeshConstants()ne::Materialprivate
opacityne::Materialprivate
operator=(const Material &)=delete (defined in ne::Material)ne::Material
pathDeserializedFromRelativeToResne::Serializableprivate
pPipelineManagerne::Materialprivate
resetPipelines()ne::Materialprivate
resolvePathToToml(std::filesystem::path &pathToFile)ne::Serializableprivatestatic
roughnessne::Materialprivate
sCustomAttributePrefixne::Serializableprivatestatic
sDiffuseTexturePathRelativeResne::Materialprivate
Serializable()=default (defined in ne::Serializable)ne::Serializable
serialize(std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})ne::Serializable
serialize(toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serialize(toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serializeMultiple(std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)ne::Serializablestatic
setDiffuseColor(const glm::vec3 &diffuseColor)ne::Material
setDiffuseTexture(const std::string &sTextureResourcePathRelativeRes)ne::Material
setEnableTransparency(bool bEnable)ne::Material
setOpacity(float opacity=1.0F)ne::Material
setRoughness(float roughness)ne::Material
setShaderCpuWriteResourceBinding(const std::string &sShaderResourceName, size_t iResourceSizeInBytes, const std::function< void *()> &onStartedUpdatingResource, const std::function< void()> &onFinishedUpdatingResource)ne::Materialprivate
setShaderTextureResourceBinding(const std::string &sShaderResourceName, const std::string &sPathToTextureResourceRelativeRes)ne::Materialprivate
setSpecularColor(const glm::vec3 &specularColor)ne::Material
sMaterialNamene::Materialprivate
sMaterialShaderBufferNamene::Materialinlineprivatestatic
sMaterialShaderDiffuseTextureNamene::Materialinlineprivatestatic
sNothingToSerializeKeyne::Serializableinlineprivatestatic
sPathRelativeToResKeyne::Serializableinlineprivatestatic
specularColorne::Materialprivate
sPixelShaderNamene::Materialprivate
sSubEntityFieldNameKeyne::Serializableinlineprivatestatic
sVertexShaderNamene::Materialprivate
updateToNewPipeline()ne::Materialprivate
~Material() override (defined in ne::Material)ne::Materialvirtual
~Serializable() override=default (defined in ne::Serializable)ne::Serializablevirtual
+
+ + + + diff --git a/classne_1_1Material.html b/classne_1_1Material.html new file mode 100644 index 000000000..21ea6d5db --- /dev/null +++ b/classne_1_1Material.html @@ -0,0 +1,2114 @@ + + + + + + + +Nameless Engine: ne::Material Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <Material.h>

+
+Inheritance diagram for ne::Material:
+
+
+ + +ne::Serializable + +
+ + + + + + + + +

+Classes

struct  GpuResources
 
struct  InternalResources
 
struct  MaterialShaderConstants
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Material ()
 
Material (const Material &)=delete
 
+Materialoperator= (const Material &)=delete
 
void setEnableTransparency (bool bEnable)
 
void setDiffuseColor (const glm::vec3 &diffuseColor)
 
void setDiffuseTexture (const std::string &sTextureResourcePathRelativeRes)
 
void setSpecularColor (const glm::vec3 &specularColor)
 
void setRoughness (float roughness)
 
void setOpacity (float opacity=1.0F)
 
bool isTransparencyEnabled ()
 
glm::vec3 getDiffuseColor () const
 
glm::vec3 getSpecularColor () const
 
std::string getPathToDiffuseTextureResource ()
 
float getRoughness () const
 
float getOpacity () const
 
std::pair< std::mutex, MeshNodesThatUseThisMaterial > * getSpawnedMeshNodesThatUseThisMaterial ()
 
std::string getMaterialName () const
 
bool isUsingTransparency () const
 
PipelinegetColorPipeline () const
 
PipelinegetDepthOnlyPipeline () const
 
PipelinegetShadowMappingDirectionalSpotPipeline () const
 
PipelinegetShadowMappingPointPipeline () const
 
std::pair< std::recursive_mutex, GpuResources > * getMaterialGpuResources ()
 
std::string getVertexShaderName () const
 
std::string getPixelShaderName () const
 
- Public Member Functions inherited from ne::Serializable
std::optional< Errorserialize (std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})
 
std::variant< std::string, Errorserialize (toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::variant< std::string, Errorserialize (toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::optional< std::pair< std::string, std::string > > getPathDeserializedFromRelativeToRes () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static size_t getCurrentAliveMaterialCount ()
 
static std::variant< std::unique_ptr< Material >, Errorcreate (const std::string &sVertexShaderName, const std::string &sPixelShaderName, bool bUseTransparency, const std::string &sMaterialName="Material")
 
- Static Public Member Functions inherited from ne::Serializable
static std::variant< std::pair< std::set< std::string >, toml::value >, ErrorgetIdsFromFile (std::filesystem::path pathToFile)
 
static std::optional< ErrorserializeMultiple (std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::same_as<SmartPointer, sgc::GcPtr<Serializable>> || std::same_as<SmartPointer, std::unique_ptr<Serializable>>
static std::variant< std::vector< DeserializedObjectInformation< SmartPointer > >, ErrordeserializeMultiple (std::filesystem::path pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})
 
+ + + + + +

+Protected Member Functions

virtual void onAfterDeserialized () override
 
virtual void onAfterDeserialized ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

 Material (const std::string &sVertexShaderName, const std::string &sPixelShaderName, bool bUseTransparency, PipelineManager *pPipelineManager, const std::string &sMaterialName="Material")
 
void onMeshNodeSpawning (MeshNode *pMeshNode, const std::pair< GpuResource *, unsigned int > &indexBufferToDisplay)
 
void onSpawnedMeshNodeStartedUsingMaterial (MeshNode *pMeshNode, const std::pair< GpuResource *, unsigned int > &indexBufferToDisplay)
 
void onSpawnedMeshNodeRecreatedIndexBuffer (MeshNode *pMeshNode, const std::pair< GpuResource *, unsigned int > &deletedIndexBuffer, const std::pair< GpuResource *, unsigned int > &newIndexBuffer)
 
void onSpawnedMeshNodeChangedVisibility (MeshNode *pMeshNode, bool bOldVisibility)
 
void onSpawnedMeshNodeStoppedUsingMaterial (MeshNode *pMeshNode, const std::pair< GpuResource *, unsigned int > &indexBufferDisplayed)
 
void onMeshNodeDespawning (MeshNode *pMeshNode, const std::pair< GpuResource *, unsigned int > &indexBufferDisplayed)
 
std::optional< ErrorinitializePipelines ()
 
void resetPipelines ()
 
void allocateShaderResources ()
 
void deallocateShaderResources ()
 
void setShaderCpuWriteResourceBinding (const std::string &sShaderResourceName, size_t iResourceSizeInBytes, const std::function< void *()> &onStartedUpdatingResource, const std::function< void()> &onFinishedUpdatingResource)
 
void setShaderTextureResourceBinding (const std::string &sShaderResourceName, const std::string &sPathToTextureResourceRelativeRes)
 
void markShaderCpuWriteResourceAsNeedsUpdate (const std::string &sShaderResourceName)
 
void updateToNewPipeline ()
 
void * onStartUpdatingShaderMeshConstants ()
 
void onFinishedUpdatingShaderMeshConstants ()
 
std::set< ShaderMacro > getVertexShaderMacrosForCurrentState ()
 
std::set< ShaderMacro > getPixelShaderMacrosForCurrentState ()
 
+ + + +

+Static Private Member Functions

static std::variant< PipelineManager *, ErrorgetPipelineManagerForNewMaterial (const std::string &sVertexShaderName, const std::string &sPixelShaderName)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::pair< std::mutex, MeshNodesThatUseThisMaterialmtxSpawnedMeshNodesThatUseThisMaterial
 
std::pair< std::recursive_mutex, InternalResourcesmtxInternalResources
 
std::pair< std::recursive_mutex, GpuResourcesmtxGpuResources
 
std::pair< std::recursive_mutex, MaterialShaderConstantsmtxShaderMaterialDataConstants
 
PipelineManagerpPipelineManager = nullptr
 
std::string sVertexShaderName
 
std::string sPixelShaderName
 
std::string sMaterialName
 
std::string sDiffuseTexturePathRelativeRes
 
glm::vec3 diffuseColor = glm::vec3(1.0F, 1.0F, 1.0F)
 
glm::vec3 specularColor = glm::vec3(1.0F, 1.0F, 1.0F)
 
float roughness = 0.7F
 
float opacity = 0.6F
 
bool bUseTransparency = false
 
bool bIsShaderResourcesAllocated = false
 
+ + + + + +

+Static Private Attributes

static const auto sMaterialShaderBufferName = "materialData"
 
static const auto sMaterialShaderDiffuseTextureName = "diffuseTextures"
 
+ + + +

+Friends

+class MeshNode
 
+

Detailed Description

+

Defines visual aspects of a mesh.

+

Constructor & Destructor Documentation

+ +

◆ Material() [1/2]

+ +
+
+ + + + + + + +
ne::Material::Material ()
+
+

Creates uninitialized material, only used for deserialization, instead use create.

+ +
+
+ +

◆ Material() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ne::Material::Material (const std::string & sVertexShaderName,
const std::string & sPixelShaderName,
bool bUseTransparency,
PipelineManagerpPipelineManager,
const std::string & sMaterialName = "Material" 
)
+
+private
+
+

Creates a new material with the specified name.

+
Remarks
This constructor should only be used internally (only by this class), use create instead.
+
Parameters
+ + + + + + +
sVertexShaderNameName of the vertex shader that this material is using.
sPixelShaderNameName of the pixel shader that this material is using.
bUseTransparencyWhether this material will use transparency or not.
pPipelineManagerPipeline manager that the renderer owns.
sMaterialNameName of this material.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ allocateShaderResources()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Material::allocateShaderResources ()
+
+private
+
+

Creates shader resources such as material's constant buffer.

+
Remarks
Should be called after pipeline was initialized.
+ +
+
+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< Material >, Error > ne::Material::create (const std::string & sVertexShaderName,
const std::string & sPixelShaderName,
bool bUseTransparency,
const std::string & sMaterialName = "Material" 
)
+
+static
+
+

Creates a new material that uses the specified shaders.

+
Parameters
+ + + + + +
sVertexShaderNameName of the compiled vertex shader (see ShaderManager::compileShaders) to use.
sPixelShaderNameName of the compiled pixel shader (see ShaderManager::compileShaders) to use.
bUseTransparencyWhether this material should enable transparency after being created or not (see setEnableTransparency).
sMaterialNameName of this material.
+
+
+
Returns
Error if something went wrong, otherwise created material.
+ +
+
+ +

◆ deallocateShaderResources()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Material::deallocateShaderResources ()
+
+private
+
+

Deallocates shader resources after allocateShaderResources was called.

+
Remarks
Should be called before pipeline is cleared.
+ +
+
+ +

◆ getColorPipeline()

+ +
+
+ + + + + + + +
Pipeline * ne::Material::getColorPipeline () const
+
+

Returns pipeline with pixel/fragment shader enabled (this pipeline is considered to be the main pipeline while others might be optional).

+
Warning
Do not delete returned pointer.
+
Returns
nullptr if pipeline was not initialized yet, otherwise used pipeline.
+ +
+
+ +

◆ getCurrentAliveMaterialCount()

+ +
+
+ + + + + +
+ + + + + + + +
size_t ne::Material::getCurrentAliveMaterialCount ()
+
+static
+
+

Returns total amount of currently alive material objects.

+
Returns
Total amount of alive materials.
+ +
+
+ +

◆ getDepthOnlyPipeline()

+ +
+
+ + + + + + + +
Pipeline * ne::Material::getDepthOnlyPipeline () const
+
+

Returns pipeline that only has vertex shader (used for depth only passes).

+
Warning
Do not delete returned pointer.
+
Returns
nullptr if pipeline was not initialized yet or if isUsingTransparency is enabled, otherwise used pipeline.
+ +
+
+ +

◆ getDiffuseColor()

+ +
+
+ + + + + + + +
glm::vec3 ne::Material::getDiffuseColor () const
+
+

Returns fill color of this material.

+
Returns
Color in the RGB format.
+ +
+
+ +

◆ getMaterialGpuResources()

+ +
+
+ + + + + +
+ + + + + + + +
std::pair< std::recursive_mutex, GpuResources > * ne::Material::getMaterialGpuResources ()
+
+inline
+
+

Returns GPU resources that this material uses.

+
Returns
GPU resources.
+ +
+
+ +

◆ getMaterialName()

+ +
+
+ + + + + + + +
std::string ne::Material::getMaterialName () const
+
+

Returns material name.

+
Returns
Material name.
+ +
+
+ +

◆ getOpacity()

+ +
+
+ + + + + + + +
float ne::Material::getOpacity () const
+
+

Returns opacity of this material.

+
Returns
Value in range [0.0F; 1.0F].
+ +
+
+ +

◆ getPathToDiffuseTextureResource()

+ +
+
+ + + + + + + +
std::string ne::Material::getPathToDiffuseTextureResource ()
+
+

Returns path to a file/directory that stores currently used diffuse texture of this material.

+
Returns
Empty if no diffuse texture is set, otherwise path to a file/directory relative to the res directory.
+ +
+
+ +

◆ getPipelineManagerForNewMaterial()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::variant< PipelineManager *, Error > ne::Material::getPipelineManagerForNewMaterial (const std::string & sVertexShaderName,
const std::string & sPixelShaderName 
)
+
+staticprivate
+
+

Returns pipeline manager.

+
Remarks
Generally called before creating a new material to get pipeline manager and also check that selected shader names indeed exist.
+
Parameters
+ + + +
sVertexShaderNameName of the vertex shader that the material is using.
sPixelShaderNameName of the pixel shader that the material is using.
+
+
+
Returns
Error if something went wrong, otherwise pipeline manager.
+ +
+
+ +

◆ getPixelShaderMacrosForCurrentState()

+ +
+
+ + + + + +
+ + + + + + + +
std::set< ShaderMacro > ne::Material::getPixelShaderMacrosForCurrentState ()
+
+private
+
+

Analyzes mtxInternalResources and returns pixel/fragment shader macros that should be enabled to support the material's features.

+
Returns
Macros.
+ +
+
+ +

◆ getPixelShaderName()

+ +
+
+ + + + + + + +
std::string ne::Material::getPixelShaderName () const
+
+

Returns name of the pixel shader that this material uses.

+
Returns
Pixel shader name.
+ +
+
+ +

◆ getRoughness()

+ +
+
+ + + + + + + +
float ne::Material::getRoughness () const
+
+

Returns roughness of this material.

+
Returns
Value in range [0.0F; 1.0F].
+ +
+
+ +

◆ getShadowMappingDirectionalSpotPipeline()

+ +
+
+ + + + + + + +
Pipeline * ne::Material::getShadowMappingDirectionalSpotPipeline () const
+
+

Returns pipeline that only has vertex shader and depth bias enabled, used for shadow passes of directional and spot lights.

+
Warning
Do not delete returned pointer.
+
Returns
nullptr if pipeline was not initialized yet or if isUsingTransparency is enabled, otherwise used pipeline.
+ +
+
+ +

◆ getShadowMappingPointPipeline()

+ +
+
+ + + + + + + +
Pipeline * ne::Material::getShadowMappingPointPipeline () const
+
+

Returns pipeline that only has vertex shader and depth bias enabled, used for shadow passes of point lights.

+
Warning
Do not delete returned pointer.
+
Returns
nullptr if pipeline was not initialized yet or if isUsingTransparency is enabled, otherwise used pipeline.
+ +
+
+ +

◆ getSpawnedMeshNodesThatUseThisMaterial()

+ +
+
+ + + + + + + +
std::pair< std::mutex, MeshNodesThatUseThisMaterial > * ne::Material::getSpawnedMeshNodesThatUseThisMaterial ()
+
+

Returns array of mesh nodes that currently use this material. Must be used with mutex.

+
Returns
Array of mesh nodes.
+ +
+
+ +

◆ getSpecularColor()

+ +
+
+ + + + + + + +
glm::vec3 ne::Material::getSpecularColor () const
+
+

Returns reflected color of this material.

+
Returns
Color in the RGB format.
+ +
+
+ +

◆ getVertexShaderMacrosForCurrentState()

+ +
+
+ + + + + +
+ + + + + + + +
std::set< ShaderMacro > ne::Material::getVertexShaderMacrosForCurrentState ()
+
+private
+
+

Analyzes mtxInternalResources and returns vertex shader macros that should be enabled to support the material's features.

+
Returns
Macros.
+ +
+
+ +

◆ getVertexShaderName()

+ +
+
+ + + + + + + +
std::string ne::Material::getVertexShaderName () const
+
+

Returns name of the vertex shader that this material uses.

+
Returns
Vertex shader name.
+ +
+
+ +

◆ initializePipelines()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::Material::initializePipelines ()
+
+private
+
+

Initializes pipelines that the material needs.

+
Remarks
Expects that pipelines are not initialized.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ isTransparencyEnabled()

+ +
+
+ + + + + + + +
bool ne::Material::isTransparencyEnabled ()
+
+

Tells whether transparency on this material is enabled or not.

+
Returns
true if enabled, false otherwise.
+ +
+
+ +

◆ isUsingTransparency()

+ +
+
+ + + + + + + +
bool ne::Material::isUsingTransparency () const
+
+

Tells whether this material uses transparency or not.

+
Returns
Whether this material uses transparency or not.
+ +
+
+ +

◆ markShaderCpuWriteResourceAsNeedsUpdate()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::Material::markShaderCpuWriteResourceAsNeedsUpdate (const std::string & sShaderResourceName)
+
+private
+
+

Looks for binding created using setShaderCpuWriteResourceBinding and notifies the engine that there is new (updated) data for shader CPU write resource to copy to the GPU to be used by shaders.

+
Remarks
You don't need to check if the pipeline is initialized or not before calling this function, if the binding does not exist or some other condition is not met this call will be silently ignored without any errors.
+
+Note that the callbacks that you have specified in setShaderCpuWriteResourceBinding will not be called inside of this function, moreover they are most likely to be called in the next frame(s) (most likely multiple times) when the engine is ready to copy the data to the GPU, so if the resource's data is used by multiple threads in your code, make sure to use mutex or other synchronization primitive in your callbacks.
+
Parameters
+ + +
sShaderResourceNameName of the shader CPU write resource (should be exactly the same as the resource name written in the shader file we are referencing).
+
+
+ +
+
+ +

◆ onAfterDeserialized()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Material::onAfterDeserialized ()
+
+overrideprotectedvirtual
+
+

Called after the object was successfully deserialized. Used to execute post-deserialization logic.

+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +

Reimplemented from ne::Serializable.

+ +
+
+ +

◆ onFinishedUpdatingShaderMeshConstants()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Material::onFinishedUpdatingShaderMeshConstants ()
+
+private
+
+

Called after finished copying data from mtxShaderMaterialDataConstants.

+ +
+
+ +

◆ onMeshNodeDespawning()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::Material::onMeshNodeDespawning (MeshNodepMeshNode,
const std::pair< GpuResource *, unsigned int > & indexBufferDisplayed 
)
+
+private
+
+

Called from MeshNode when a spawned mesh node that uses this material is being despawned.

+
Warning
Expects that the mesh will not change its visibility while calling this function.
+
Parameters
+ + + +
pMeshNodeSpawned mesh node that is being despawned.
indexBufferDisplayedIndex buffer that this material was displaying.
+
+
+ +
+
+ +

◆ onMeshNodeSpawning()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::Material::onMeshNodeSpawning (MeshNodepMeshNode,
const std::pair< GpuResource *, unsigned int > & indexBufferToDisplay 
)
+
+private
+
+

Called from MeshNode when a mesh node that uses this material is being spawned.

+
Warning
Expects that the mesh will not change its visibility while calling this function.
+
Parameters
+ + + +
pMeshNodeMesh node that is currently being spawned.
indexBufferToDisplayIndex buffer that this material should display.
+
+
+ +
+
+ +

◆ onSpawnedMeshNodeChangedVisibility()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::Material::onSpawnedMeshNodeChangedVisibility (MeshNodepMeshNode,
bool bOldVisibility 
)
+
+private
+
+

Called from MeshNode when a spawned mesh node changed its visibility.

+
Warning
Expects that the mesh will not change its visibility while calling this function.
+
Parameters
+ + + +
pMeshNodeSpawned mesh node that is using this material.
bOldVisibilityOld visibility of the mesh.
+
+
+ +
+
+ +

◆ onSpawnedMeshNodeRecreatedIndexBuffer()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::Material::onSpawnedMeshNodeRecreatedIndexBuffer (MeshNodepMeshNode,
const std::pair< GpuResource *, unsigned int > & deletedIndexBuffer,
const std::pair< GpuResource *, unsigned int > & newIndexBuffer 
)
+
+private
+
+

Called from MeshNode when a spawned mesh node re-created some index buffer and now wants to notify the material about it.

+
Warning
Expects that the mesh will not change its visibility while calling this function.
+
Parameters
+ + + + +
pMeshNodeSpawned mesh node that is using this material.
deletedIndexBufferIndex buffer that was deleted.
newIndexBufferIndex buffer that this material should display now.
+
+
+ +
+
+ +

◆ onSpawnedMeshNodeStartedUsingMaterial()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::Material::onSpawnedMeshNodeStartedUsingMaterial (MeshNodepMeshNode,
const std::pair< GpuResource *, unsigned int > & indexBufferToDisplay 
)
+
+private
+
+

Called from MeshNode when a spawned mesh node changed its material and started using this material now.

+
Warning
Expects that the mesh will not change its visibility while calling this function.
+
Parameters
+ + + +
pMeshNodeSpawned mesh node that is using this material.
indexBufferToDisplayIndex buffer that this material should display.
+
+
+ +
+
+ +

◆ onSpawnedMeshNodeStoppedUsingMaterial()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::Material::onSpawnedMeshNodeStoppedUsingMaterial (MeshNodepMeshNode,
const std::pair< GpuResource *, unsigned int > & indexBufferDisplayed 
)
+
+private
+
+

Called from MeshNode when a spawned mesh node changed its material and now no longer using this material.

+
Warning
Expects that the mesh will not change its visibility while calling this function.
+
Parameters
+ + + +
pMeshNodeSpawned mesh node that stopped using this material.
indexBufferDisplayedIndex buffer that this material was displaying.
+
+
+ +
+
+ +

◆ onStartUpdatingShaderMeshConstants()

+ +
+
+ + + + + +
+ + + + + + + +
void * ne::Material::onStartUpdatingShaderMeshConstants ()
+
+private
+
+

Called to copy data from mtxShaderMaterialDataConstants.

+
Returns
Pointer to data in mtxShaderMaterialDataConstants.
+ +
+
+ +

◆ resetPipelines()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Material::resetPipelines ()
+
+private
+
+

Clears (sets to nullptr) all used pipelines.

+ +
+
+ +

◆ setDiffuseColor()

+ +
+
+ + + + + + + + +
void ne::Material::setDiffuseColor (const glm::vec3 & diffuseColor)
+
+

Sets material's fill color.

+
Parameters
+ + +
diffuseColorColor in the RGB format.
+
+
+ +
+
+ +

◆ setDiffuseTexture()

+ +
+
+ + + + + + + + +
void ne::Material::setDiffuseTexture (const std::string & sTextureResourcePathRelativeRes)
+
+

Sets material's diffuse texture.

+

Example:

// Specify path to a directory that stores DDS and KTX files with player's diffuse texture.
+
pMaterial->setDiffuseTexture("game/player/textures/diffuse");
+
Parameters
+ + +
sTextureResourcePathRelativeResPath to a texture resource (file/directory) relative to res directory that this material should now use. Specify empty string to clear the current diffuse texture (if any is set) and don't use diffuse texture at all.
+
+
+ +
+
+ +

◆ setEnableTransparency()

+ +
+
+ + + + + + + + +
void ne::Material::setEnableTransparency (bool bEnable)
+
+

Enables/disables transparency.

+
Parameters
+ + +
bEnableWhether to enable transparency or not.
+
+
+ +
+
+ +

◆ setOpacity()

+ +
+
+ + + + + + + + +
void ne::Material::setOpacity (float opacity = 1.0F)
+
+

Sets material's opacity.

+
Remarks
Only works if the material has transparency enabled (see create or setEnableTransparency).
+
Parameters
+ + +
opacityValue in range [0.0F; 1.0F], will be clamped if outside of this range.
+
+
+ +
+
+ +

◆ setRoughness()

+ +
+
+ + + + + + + + +
void ne::Material::setRoughness (float roughness)
+
+

Sets factor that defines how much specular light will be reflected (i.e. how rough or smooth the surface is).

+
Parameters
+ + +
roughnessValue in range [0.0F; 1.0F], will be clamped if outside of this range.
+
+
+ +
+
+ +

◆ setShaderCpuWriteResourceBinding()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ne::Material::setShaderCpuWriteResourceBinding (const std::string & sShaderResourceName,
size_t iResourceSizeInBytes,
const std::function< void *()> & onStartedUpdatingResource,
const std::function< void()> & onFinishedUpdatingResource 
)
+
+private
+
+

Setups callbacks for a shader resource (buffer or a texture from the shader code) with CPU write access to copy the data from the CPU to the GPU to be used by the shaders.

+
Remarks
Call this function in allocateShaderResources to bind to shader resources, all bindings will be automatically removed in deallocateShaderResources.
+
+When data of a resource that you registered was updated on the CPU side you need to call markShaderCpuWriteResourceAsNeedsUpdate so that update callbacks will be called and updated data will be copied to the GPU to be used by shaders. Note that you don't need to call markShaderCpuWriteResourceAsNeedsUpdate for resources you have not registered yourself. Also note that all registered resources are marked as "need update" by default so you don't have to call markShaderCpuWriteResourceAsNeedsUpdate right after calling this function.
+
Parameters
+ + + + + +
sShaderResourceNameName of the resource we are referencing (should be exactly the same as the resource name written in the shader file we are referencing).
iResourceSizeInBytesSize of the data that this resource will contain. Note that the specified size will most likely be padded (changed) to be a multiple of 256 because of the hardware requirement for shader constant buffers.
onStartedUpdatingResourceFunction that will be called when the engine has started copying data to the GPU. Function returns pointer to new (updated) data of the specified resource that will be copied to the GPU.
onFinishedUpdatingResourceFunction that will be called when the engine has finished copying resource data to the GPU (usually used for unlocking mutexes).
+
+
+ +
+
+ +

◆ setShaderTextureResourceBinding()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::Material::setShaderTextureResourceBinding (const std::string & sShaderResourceName,
const std::string & sPathToTextureResourceRelativeRes 
)
+
+private
+
+

Setups a shader resource binding that references a texture that will be used in shaders when this material is rendered.

+
Remarks
Call this function in allocateShaderResources to bind to shader resources, all bindings will be automatically removed in deallocateShaderResources.
+
Parameters
+ + + +
sShaderResourceNameName of the resource we are referencing (should be exactly the same as the resource name written in the shader file we are referencing).
sPathToTextureResourceRelativeResPath to the directory with texture resource to use.
+
+
+ +
+
+ +

◆ setSpecularColor()

+ +
+
+ + + + + + + + +
void ne::Material::setSpecularColor (const glm::vec3 & specularColor)
+
+

Sets material's reflected color.

+
Parameters
+ + +
specularColorColor in the RGB format.
+
+
+ +
+
+ +

◆ updateToNewPipeline()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Material::updateToNewPipeline ()
+
+private
+
+

Releases all shader resources, requests a new pipeline according to currently defined shader macros, allocates all shader resources and notifies all mesh nodes that use this material.

+ +
+
+

Member Data Documentation

+ +

◆ bIsShaderResourcesAllocated

+ +
+
+ + + + + +
+ + + + +
bool ne::Material::bIsShaderResourcesAllocated = false
+
+private
+
+

Whether allocateShaderResources was called or not.

+ +
+
+ +

◆ bUseTransparency

+ +
+
+ + + + + +
+ + + + +
bool ne::Material::bUseTransparency = false
+
+private
+
+

Whether this material will use transparency or not.

+ +
+
+ +

◆ diffuseColor

+ +
+
+ + + + + +
+ + + + +
glm::vec3 ne::Material::diffuseColor = glm::vec3(1.0F, 1.0F, 1.0F)
+
+private
+
+

Fill color.

+ +
+
+ +

◆ mtxGpuResources

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, GpuResources> ne::Material::mtxGpuResources
+
+private
+
+

Stores GPU resources used by this material.

+ +
+
+ +

◆ mtxInternalResources

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, InternalResources> ne::Material::mtxInternalResources
+
+private
+
+

Internal data.

+ +
+
+ +

◆ mtxShaderMaterialDataConstants

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, MaterialShaderConstants> ne::Material::mtxShaderMaterialDataConstants
+
+private
+
+

Stores data for constant buffer used by shaders.

+ +
+
+ +

◆ mtxSpawnedMeshNodesThatUseThisMaterial

+ +
+
+ + + + + +
+ + + + +
std::pair<std::mutex, MeshNodesThatUseThisMaterial> ne::Material::mtxSpawnedMeshNodesThatUseThisMaterial
+
+private
+
+

Array of spawned mesh nodes that use this material. Must be used with mutex.

+ +
+
+ +

◆ opacity

+ +
+
+ + + + + +
+ + + + +
float ne::Material::opacity = 0.6F
+
+private
+
+

Opacity in range [0.0; 1.0].

+
Remarks
Only used when bUseTransparency is enabled.
+ +
+
+ +

◆ pPipelineManager

+ +
+
+ + + + + +
+ + + + +
PipelineManager* ne::Material::pPipelineManager = nullptr
+
+private
+
+

Do not delete (free) this pointer. Pipeline manager that the renderer owns.

+ +
+
+ +

◆ roughness

+ +
+
+ + + + + +
+ + + + +
float ne::Material::roughness = 0.7F
+
+private
+
+

Defines how much specular light will be reflected. Value in range [0.0F; 1.0F].

+ +
+
+ +

◆ sDiffuseTexturePathRelativeRes

+ +
+
+ + + + + +
+ + + + +
std::string ne::Material::sDiffuseTexturePathRelativeRes
+
+private
+
+

Empty if diffuse texture is not used, otherwise path to used diffuse texture relative to res directory.

+ +
+
+ +

◆ sMaterialName

+ +
+
+ + + + + +
+ + + + +
std::string ne::Material::sMaterialName
+
+private
+
+

Name of this material.

+ +
+
+ +

◆ sMaterialShaderBufferName

+ +
+
+ + + + + +
+ + + + +
const auto ne::Material::sMaterialShaderBufferName = "materialData"
+
+inlinestaticprivate
+
+

Name of the buffer used to store material data in shaders.

+ +
+
+ +

◆ sMaterialShaderDiffuseTextureName

+ +
+
+ + + + + +
+ + + + +
const auto ne::Material::sMaterialShaderDiffuseTextureName = "diffuseTextures"
+
+inlinestaticprivate
+
+

Name of the resource used to store diffuse textures in shaders.

+ +
+
+ +

◆ specularColor

+ +
+
+ + + + + +
+ + + + +
glm::vec3 ne::Material::specularColor = glm::vec3(1.0F, 1.0F, 1.0F)
+
+private
+
+

Reflected color.

+ +
+
+ +

◆ sPixelShaderName

+ +
+
+ + + + + +
+ + + + +
std::string ne::Material::sPixelShaderName
+
+private
+
+

Name of the pixel shader that this material is using.

+ +
+
+ +

◆ sVertexShaderName

+ +
+
+ + + + + +
+ + + + +
std::string ne::Material::sVertexShaderName
+
+private
+
+

Name of the vertex shader that this material is using.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/material/Material.h
  • +
  • src/engine_lib/private/material/Material.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1Material.js b/classne_1_1Material.js new file mode 100644 index 000000000..ad55ff56e --- /dev/null +++ b/classne_1_1Material.js @@ -0,0 +1,69 @@ +var classne_1_1Material = +[ + [ "GpuResources", "structne_1_1Material_1_1GpuResources.html", "structne_1_1Material_1_1GpuResources" ], + [ "InternalResources", "structne_1_1Material_1_1InternalResources.html", "structne_1_1Material_1_1InternalResources" ], + [ "MaterialShaderConstants", "structne_1_1Material_1_1MaterialShaderConstants.html", "structne_1_1Material_1_1MaterialShaderConstants" ], + [ "Material", "classne_1_1Material.html#a0970484073a752aed3a6704a85be04b4", null ], + [ "Material", "classne_1_1Material.html#af88101c98cc96028ca9cfb4f6fbebf96", null ], + [ "allocateShaderResources", "classne_1_1Material.html#ad098fa1bc60126bee59d73a9ba5a55a4", null ], + [ "create", "classne_1_1Material.html#ac3b008d630640dbfc2281ed97e979ecd", null ], + [ "deallocateShaderResources", "classne_1_1Material.html#ac3395d21390030fd5e0b7da98b96b751", null ], + [ "getColorPipeline", "classne_1_1Material.html#ae72f306a7b3eb645832d4b850108110a", null ], + [ "getCurrentAliveMaterialCount", "classne_1_1Material.html#ad3f8b2e84ad7f53c3a100894bfd6c3e2", null ], + [ "getDepthOnlyPipeline", "classne_1_1Material.html#a0b40a74637b5be997eb63c999773f52e", null ], + [ "getDiffuseColor", "classne_1_1Material.html#aafe13b5a88171864d83f787303b87ebe", null ], + [ "getMaterialGpuResources", "classne_1_1Material.html#a37ad940792aec3452dc12e8af8ef1f21", null ], + [ "getMaterialName", "classne_1_1Material.html#a7a5109eeb024a2f06e7bdd6a739118ca", null ], + [ "getOpacity", "classne_1_1Material.html#ad0467877a11e184dc5f0627dd1cbd02d", null ], + [ "getPathToDiffuseTextureResource", "classne_1_1Material.html#aae6d5d76aa52f5e312a871edba8d001f", null ], + [ "getPipelineManagerForNewMaterial", "classne_1_1Material.html#a4d8b157a95a2ee1968b2fe9994be623c", null ], + [ "getPixelShaderMacrosForCurrentState", "classne_1_1Material.html#ab749c0e8cae5d47f5a78b3617d538f52", null ], + [ "getPixelShaderName", "classne_1_1Material.html#a819dd3b1497a89dc06e811b12329181d", null ], + [ "getRoughness", "classne_1_1Material.html#a0f38075d473d23e8255a0cab5e3126e2", null ], + [ "getShadowMappingDirectionalSpotPipeline", "classne_1_1Material.html#a1879f119b0b281dd2f421a135bb74329", null ], + [ "getShadowMappingPointPipeline", "classne_1_1Material.html#afdabd9fd25213f1c33138d978ddafdd1", null ], + [ "getSpawnedMeshNodesThatUseThisMaterial", "classne_1_1Material.html#a22972cb7fc8c34cd1e25794604c6f88f", null ], + [ "getSpecularColor", "classne_1_1Material.html#af18626e7a64af061617da9fd328a6e3b", null ], + [ "getVertexShaderMacrosForCurrentState", "classne_1_1Material.html#a9b10095374d989f99a568299b663ea1b", null ], + [ "getVertexShaderName", "classne_1_1Material.html#a37c74feacb9365a1dffd9499374403bd", null ], + [ "initializePipelines", "classne_1_1Material.html#adf6582e8a2f026a45c61396bfe8f1feb", null ], + [ "isTransparencyEnabled", "classne_1_1Material.html#a88305277fcf45b2d54ffdb0e7de731d2", null ], + [ "isUsingTransparency", "classne_1_1Material.html#acb5fc8093b532caee4ab8293f4964198", null ], + [ "markShaderCpuWriteResourceAsNeedsUpdate", "classne_1_1Material.html#a2092ab1b66f459ce1b690e053488a5aa", null ], + [ "onAfterDeserialized", "classne_1_1Material.html#a7946faee0b5231b38196c9cc8c2dffd4", null ], + [ "onFinishedUpdatingShaderMeshConstants", "classne_1_1Material.html#acc4f2a67629155070efdac11fbdae46e", null ], + [ "onMeshNodeDespawning", "classne_1_1Material.html#af1e3a6939b7619716744eadb2a7a0723", null ], + [ "onMeshNodeSpawning", "classne_1_1Material.html#a1f72b3b50221e37374506f7a4c344422", null ], + [ "onSpawnedMeshNodeChangedVisibility", "classne_1_1Material.html#a05f4e887a2fda3da02f4875eb60053ec", null ], + [ "onSpawnedMeshNodeRecreatedIndexBuffer", "classne_1_1Material.html#a5dca5d184d1079603751789ef76edc62", null ], + [ "onSpawnedMeshNodeStartedUsingMaterial", "classne_1_1Material.html#a39df1e140902043bd534cb3279d3d665", null ], + [ "onSpawnedMeshNodeStoppedUsingMaterial", "classne_1_1Material.html#a6ba3060536452524bb96ae049d050289", null ], + [ "onStartUpdatingShaderMeshConstants", "classne_1_1Material.html#a82c2abbb8c345c5a1b2e121a20f68175", null ], + [ "resetPipelines", "classne_1_1Material.html#ad94a42c86625c72a14036cae1e2db707", null ], + [ "setDiffuseColor", "classne_1_1Material.html#a3f3ef9edcab7dc00f3449fcefee66bea", null ], + [ "setDiffuseTexture", "classne_1_1Material.html#a44c6e1c40cc75ce6e8f93b30c60ad8f3", null ], + [ "setEnableTransparency", "classne_1_1Material.html#a5e1abba43e7ecc07d1740bc75872c050", null ], + [ "setOpacity", "classne_1_1Material.html#a2c1e2ef9f66f9f8e69658de3bb3fb491", null ], + [ "setRoughness", "classne_1_1Material.html#a120643a43142cb24e81bbec6dd8f6dc2", null ], + [ "setShaderCpuWriteResourceBinding", "classne_1_1Material.html#a1bd758e7acff200a7b93ca29304cbbcd", null ], + [ "setShaderTextureResourceBinding", "classne_1_1Material.html#a799ecf3e2da01410a1823f6132a12fa9", null ], + [ "setSpecularColor", "classne_1_1Material.html#ac7fa00d994567a8e00e010bca321253d", null ], + [ "updateToNewPipeline", "classne_1_1Material.html#a55308869a89ec874f334de5843030c85", null ], + [ "bIsShaderResourcesAllocated", "classne_1_1Material.html#a4d185e1b454c6b6b5f6f0e363d311fc3", null ], + [ "bUseTransparency", "classne_1_1Material.html#ace5bae8c52442a43d2c2f03501989d08", null ], + [ "diffuseColor", "classne_1_1Material.html#a24db045bd570219481d2a2e2c7fa99f4", null ], + [ "mtxGpuResources", "classne_1_1Material.html#a03ecb1cda7f941de8a208c79a731fb35", null ], + [ "mtxInternalResources", "classne_1_1Material.html#ac9b5deaf64d3c2e268338b3ca2653d67", null ], + [ "mtxShaderMaterialDataConstants", "classne_1_1Material.html#a3f9064b25a8c5ada13136dcfeb073da7", null ], + [ "mtxSpawnedMeshNodesThatUseThisMaterial", "classne_1_1Material.html#a4b40c304da2d5ca6098d421fc60116ef", null ], + [ "opacity", "classne_1_1Material.html#a0baf76cad634fde0115a9285f51771c1", null ], + [ "pPipelineManager", "classne_1_1Material.html#a217c2e878ea6111089fea8b9d6372b9d", null ], + [ "roughness", "classne_1_1Material.html#a75f8887c5bab282d23e95d6c5077f66b", null ], + [ "sDiffuseTexturePathRelativeRes", "classne_1_1Material.html#a528b72a37e76f4ba18789a0292d06304", null ], + [ "sMaterialName", "classne_1_1Material.html#a89b5b82ea6d591ab0c434a7d2d1a8015", null ], + [ "sMaterialShaderBufferName", "classne_1_1Material.html#a93d6ef4a29ecadfcbf5bcd74f6758be7", null ], + [ "sMaterialShaderDiffuseTextureName", "classne_1_1Material.html#a038cf865bb15bfb6860cbad3e4d556c7", null ], + [ "specularColor", "classne_1_1Material.html#a5d4c5f42d34b2bd22969db838551373b", null ], + [ "sPixelShaderName", "classne_1_1Material.html#a30a5becd28841cfc24365e2d55a77de6", null ], + [ "sVertexShaderName", "classne_1_1Material.html#a58ded283439b569c213839ef49e820a9", null ] +]; \ No newline at end of file diff --git a/classne_1_1Material.png b/classne_1_1Material.png new file mode 100644 index 0000000000000000000000000000000000000000..c8bfaac5348f685d0610deac556b4073da6ad8c9 GIT binary patch literal 706 zcmeAS@N?(olHy`uVBq!ia0vp^NkH7e!3-p|mz=u+q@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB)m6N0v?p|UED=&vdUPRQx#P&Yea{x}x$Z7# z_}b*U?4zy8W!t}m8}Y+Q4ds*0XKej@Cw7b1tvexSUb@WO_V3L0+v2~D z3!Xdi$533b@I|tKi_1c$hV)sC3Sl2RD*4inD2q9nJm&4-pSi+?p~1bAfuUW9k%3Q@ zi9yDTg~4J92Sb5|Aj5+T^{zgbO^$L28y7DTI(X*Ih4soAm4=^p{QCUqWzywY`GQAF z=Rae4=5nFvN!5qsNm(&9UAeU}t5>v|1>ctZRN~V6V&l~tPU~uVGL5$jL?5loRyH=2 zj&v!um;1m}xZ~kL3zNk88OFSScdvX@aQCpK{<*4M#e3c*FLpbkF!{utX|MIpY{|Lb zox5n4|4d!$z^Cui7R{KMJcT1ItsU%|YJtlpzGV7KK=3Hnl2uYGT~@5J`cf`%cBS?E zLwe?aItwVSasNH?ID$n zsk#6AJKp^i_*lieE$+~*CGRe-UMaoGYRzvgw`k`ZZnCHU)h+fjdMou+<|2E_{M?P} xgSY!mxfu|;`IEU<=+%W_s|`7n76sHYzDw@vKirvc0+`wuJYD@<);T3K0RX5$Mi>A9 literal 0 HcmV?d00001 diff --git a/classne_1_1MathHelpers-members.html b/classne_1_1MathHelpers-members.html new file mode 100644 index 000000000..db82a7c1c --- /dev/null +++ b/classne_1_1MathHelpers-members.html @@ -0,0 +1,120 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::MathHelpers Member List
+
+
+ +

This is the complete list of members for ne::MathHelpers, including all inherited members.

+ + + + + + + + + + + +
buildRotationMatrix(const glm::vec3 &rotation)ne::MathHelpersinlinestatic
calculateReciprocalVector(const glm::vec3 &vector)ne::MathHelpersinlinestatic
convertCartesianCoordinatesToSpherical(const glm::vec3 &location, float &radius, float &theta, float &phi)ne::MathHelpersinlinestatic
convertDirectionToRollPitchYaw(const glm::vec3 &direction)ne::MathHelpersinlinestatic
convertRollPitchYawToDirection(const glm::vec3 &rotation)ne::MathHelpersinlinestatic
convertSphericalToCartesianCoordinates(float radius, float theta, float phi)ne::MathHelpersinlinestatic
MathHelpers()=delete (defined in ne::MathHelpers)ne::MathHelpers
normalizeSafely(const glm::vec3 &vector)ne::MathHelpersinlinestatic
normalizeValue(float value, float min, float max)ne::MathHelpersinlinestatic
smallFloatEpsilonne::MathHelpersinlineprivatestatic
+
+ + + + diff --git a/classne_1_1MathHelpers.html b/classne_1_1MathHelpers.html new file mode 100644 index 000000000..7db4d9ed7 --- /dev/null +++ b/classne_1_1MathHelpers.html @@ -0,0 +1,506 @@ + + + + + + + +Nameless Engine: ne::MathHelpers Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <MathHelpers.hpp>

+ + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static glm::vec3 convertDirectionToRollPitchYaw (const glm::vec3 &direction)
 
static glm::vec3 convertRollPitchYawToDirection (const glm::vec3 &rotation)
 
static glm::vec3 convertSphericalToCartesianCoordinates (float radius, float theta, float phi)
 
static void convertCartesianCoordinatesToSpherical (const glm::vec3 &location, float &radius, float &theta, float &phi)
 
static glm::vec3 calculateReciprocalVector (const glm::vec3 &vector)
 
static glm::mat4x4 buildRotationMatrix (const glm::vec3 &rotation)
 
static float normalizeValue (float value, float min, float max)
 
static glm::vec3 normalizeSafely (const glm::vec3 &vector)
 
+ + + +

+Static Private Attributes

static const float smallFloatEpsilon = 0.0000001F
 
+

Detailed Description

+

Static helper functions for math.

+

Member Function Documentation

+ +

◆ buildRotationMatrix()

+ +
+
+ + + + + +
+ + + + + + + + +
glm::mat4x4 ne::MathHelpers::buildRotationMatrix (const glm::vec3 & rotation)
+
+inlinestatic
+
+

Builds a rotation matrix in the engine specific way.

+
Parameters
+ + +
rotationRotation in degrees where X is roll, Y is pitch and Z is yaw.
+
+
+
Returns
Rotation matrix.
+ +
+
+ +

◆ calculateReciprocalVector()

+ +
+
+ + + + + +
+ + + + + + + + +
glm::vec3 ne::MathHelpers::calculateReciprocalVector (const glm::vec3 & vector)
+
+inlinestatic
+
+

Calculates 1 / vector while checking for zero division.

+
Parameters
+ + +
vectorInput vector.
+
+
+
Returns
vector 1 / input vector.
+ +
+
+ +

◆ convertCartesianCoordinatesToSpherical()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ne::MathHelpers::convertCartesianCoordinatesToSpherical (const glm::vec3 & location,
float & radius,
float & theta,
float & phi 
)
+
+inlinestatic
+
+

Converts coordinates from the Cartesian coordinate system to spherical coordinate system.

+
Parameters
+ + + + + +
locationLocation in Cartesian coordinate system.
radiusCalculated radius in spherical coordinate system.
thetaCalculated theta in spherical coordinate system (in degrees).
phiCalculated phi in spherical coordinate system (in degrees).
+
+
+ +
+
+ +

◆ convertDirectionToRollPitchYaw()

+ +
+
+ + + + + +
+ + + + + + + + +
glm::vec3 ne::MathHelpers::convertDirectionToRollPitchYaw (const glm::vec3 & direction)
+
+inlinestatic
+
+

Converts a direction to rotation angles.

+
Warning
Expects the specified direction to be normalized.
+
Parameters
+ + +
directionNormalized direction to convert.
+
+
+
Returns
Roll (as X), pitch (as Y) and yaw (as Z) in degrees.
+ +
+
+ +

◆ convertRollPitchYawToDirection()

+ +
+
+ + + + + +
+ + + + + + + + +
glm::vec3 ne::MathHelpers::convertRollPitchYawToDirection (const glm::vec3 & rotation)
+
+inlinestatic
+
+

Converts rotation angles to a direction.

+
Parameters
+ + +
rotationRotation roll (as X), pitch (as Y) and yaw (as Z) in degrees.
+
+
+
Returns
Unit direction vector.
+ +
+
+ +

◆ convertSphericalToCartesianCoordinates()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::vec3 ne::MathHelpers::convertSphericalToCartesianCoordinates (float radius,
float theta,
float phi 
)
+
+inlinestatic
+
+

Converts coordinates from the spherical coordinate system to the Cartesian coordinate system.

+
Parameters
+ + + + +
radiusRadial distance.
thetaAzimuthal angle (in degrees).
phiPolar angle (in degrees).
+
+
+
Returns
Coordinates in Cartesian coordinate system.
+ +
+
+ +

◆ normalizeSafely()

+ +
+
+ + + + + +
+ + + + + + + + +
glm::vec3 ne::MathHelpers::normalizeSafely (const glm::vec3 & vector)
+
+inlinestatic
+
+

Normalizes the specified vector while checking for zero division (to avoid NaNs in the normalized vector).

+
Parameters
+ + +
vectorInput vector to normalize.
+
+
+
Returns
Normalized vector.
+ +
+
+ +

◆ normalizeValue()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
float ne::MathHelpers::normalizeValue (float value,
float min,
float max 
)
+
+inlinestatic
+
+

Changes the value to be in the range [min; max].

+

Example:

normalizeValue(370.0F, -360.0F, 360.0F); // result is `-350`
+
+
normalizeValue(-730, -360, 360); // result is `-10`
+
static float normalizeValue(float value, float min, float max)
Definition: MathHelpers.hpp:229
+
Parameters
+ + + + +
valueValue to normalize.
minMinimum value in range.
maxMaximum value in range.
+
+
+
Returns
Normalized value.
+ +
+
+

Member Data Documentation

+ +

◆ smallFloatEpsilon

+ +
+
+ + + + + +
+ + + + +
const float ne::MathHelpers::smallFloatEpsilon = 0.0000001F
+
+inlinestaticprivate
+
+

Default tolerance for floats to use.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classne_1_1MathHelpers.js b/classne_1_1MathHelpers.js new file mode 100644 index 000000000..6d874cf43 --- /dev/null +++ b/classne_1_1MathHelpers.js @@ -0,0 +1,12 @@ +var classne_1_1MathHelpers = +[ + [ "buildRotationMatrix", "classne_1_1MathHelpers.html#a7bff468878c5b201d276cc385db8a5ea", null ], + [ "calculateReciprocalVector", "classne_1_1MathHelpers.html#a91b29eece21547964d43cf45a63eda49", null ], + [ "convertCartesianCoordinatesToSpherical", "classne_1_1MathHelpers.html#ab8c51244450bb42df5619027e578c530", null ], + [ "convertDirectionToRollPitchYaw", "classne_1_1MathHelpers.html#aba71393ad209bc41e713a20fc0fae438", null ], + [ "convertRollPitchYawToDirection", "classne_1_1MathHelpers.html#ac133c40d43a8cfaf56de23e9e6649b1b", null ], + [ "convertSphericalToCartesianCoordinates", "classne_1_1MathHelpers.html#ac5c45f87480b68caaa070bb371795408", null ], + [ "normalizeSafely", "classne_1_1MathHelpers.html#aaff69b1d4a3834f7a4a5df8fd3565510", null ], + [ "normalizeValue", "classne_1_1MathHelpers.html#a20352d2ad41452e1a4d4cb432c79aa7e", null ], + [ "smallFloatEpsilon", "classne_1_1MathHelpers.html#a288c427593c173fadda2f8792fc9813f", null ] +]; \ No newline at end of file diff --git a/classne_1_1MeshData-members.html b/classne_1_1MeshData-members.html new file mode 100644 index 000000000..c6dcc76f8 --- /dev/null +++ b/classne_1_1MeshData-members.html @@ -0,0 +1,145 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::MeshData Member List
+
+
+ +

This is the complete list of members for ne::MeshData, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
deserialize(const std::filesystem::path &pathToFile)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)ne::Serializablestatic
deserialize(std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, const std::string &sEntityId)ne::Serializablestatic
deserialize(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})ne::Serializablestatic
deserializeFromSection(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sSectionName, const std::string &sTypeGuid, const std::string &sEntityId, const std::optional< std::filesystem::path > &optionalPathToFile)ne::Serializableprivatestatic
deserializeMultiple(std::filesystem::path pathToFile)ne::Serializablestatic
getClassForGuid(const std::string &sGuid)ne::Serializableprivatestatic
getClassForGuid(const rfk::Struct *pArchetypeToAnalyze, const std::string &sGuid)ne::Serializableprivatestatic
getIdsFromFile(std::filesystem::path pathToFile)ne::Serializablestatic
getIndices()ne::MeshData
getPathDeserializedFromRelativeToRes() constne::Serializable
getVertices()ne::MeshData
MeshData() (defined in ne::MeshData)ne::MeshData
MeshData(const MeshData &)=defaultne::MeshData
MeshData(MeshData &&) noexcept=defaultne::MeshData
meshindex_t typedefne::MeshData
onAfterDeserialized()ne::Serializableinlineprotectedvirtual
operator=(const MeshData &)=defaultne::MeshData
operator=(MeshData &&) noexcept=defaultne::MeshData
pathDeserializedFromRelativeToResne::Serializableprivate
resolvePathToToml(std::filesystem::path &pathToFile)ne::Serializableprivatestatic
sCustomAttributePrefixne::Serializableprivatestatic
Serializable()=default (defined in ne::Serializable)ne::Serializable
serialize(std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})ne::Serializable
serialize(toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serialize(toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serializeMultiple(std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)ne::Serializablestatic
sNothingToSerializeKeyne::Serializableinlineprivatestatic
sPathRelativeToResKeyne::Serializableinlineprivatestatic
sSubEntityFieldNameKeyne::Serializableinlineprivatestatic
vIndicesne::MeshDataprivate
vVerticesne::MeshDataprivate
~MeshData() override=default (defined in ne::MeshData)ne::MeshDatavirtual
~Serializable() override=default (defined in ne::Serializable)ne::Serializablevirtual
+
+ + + + diff --git a/classne_1_1MeshData.html b/classne_1_1MeshData.html new file mode 100644 index 000000000..a4024752b --- /dev/null +++ b/classne_1_1MeshData.html @@ -0,0 +1,416 @@ + + + + + + + +Nameless Engine: ne::MeshData Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::MeshData Class Reference
+
+
+ +

#include <MeshData.h>

+
+Inheritance diagram for ne::MeshData:
+
+
+ + +ne::Serializable + +
+ + + + +

+Public Types

using meshindex_t = unsigned int
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 MeshData (const MeshData &)=default
 
MeshDataoperator= (const MeshData &)=default
 
 MeshData (MeshData &&) noexcept=default
 
MeshDataoperator= (MeshData &&) noexcept=default
 
std::vector< MeshVertex > * getVertices ()
 
std::vector< std::vector< meshindex_t > > * getIndices ()
 
- Public Member Functions inherited from ne::Serializable
std::optional< Errorserialize (std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})
 
std::variant< std::string, Errorserialize (toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::variant< std::string, Errorserialize (toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::optional< std::pair< std::string, std::string > > getPathDeserializedFromRelativeToRes () const
 
+ + + + + +

+Private Attributes

std::vector< MeshVertexvVertices
 
std::vector< std::vector< meshindex_t > > vIndices
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from ne::Serializable
static std::variant< std::pair< std::set< std::string >, toml::value >, ErrorgetIdsFromFile (std::filesystem::path pathToFile)
 
static std::optional< ErrorserializeMultiple (std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::same_as<SmartPointer, sgc::GcPtr<Serializable>> || std::same_as<SmartPointer, std::unique_ptr<Serializable>>
static std::variant< std::vector< DeserializedObjectInformation< SmartPointer > >, ErrordeserializeMultiple (std::filesystem::path pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})
 
- Protected Member Functions inherited from ne::Serializable
virtual void onAfterDeserialized ()
 
+

Detailed Description

+

Stores mesh geometry (vertices and indices).

+

Member Typedef Documentation

+ +

◆ meshindex_t

+ +
+
+ + + + +
using ne::MeshData::meshindex_t = unsigned int
+
+

Type of mesh index.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ MeshData() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
ne::MeshData::MeshData (const MeshData)
+
+default
+
+

Copy constructor.

+ +
+
+ +

◆ MeshData() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
ne::MeshData::MeshData (MeshData && )
+
+defaultnoexcept
+
+

Move constructor.

+ +
+
+

Member Function Documentation

+ +

◆ getIndices()

+ +
+
+ + + + + + + +
std::vector< std::vector< MeshData::meshindex_t > > * ne::MeshData::getIndices ()
+
+

Returns array of mesh indices per material slot so first element in the array stores indices of the mesh that use material slot 0, then indices that use material slot 1 and so on.

+
Returns
Mesh indices.
+ +
+
+ +

◆ getVertices()

+ +
+
+ + + + + + + +
std::vector< MeshVertex > * ne::MeshData::getVertices ()
+
+

Returns mesh vertices.

+
Returns
Mesh vertices.
+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
MeshData & ne::MeshData::operator= (const MeshData)
+
+default
+
+

Copy assignment.

+
Returns
This.
+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
MeshData & ne::MeshData::operator= (MeshData && )
+
+defaultnoexcept
+
+

Move assignment.

+
Returns
This.
+ +
+
+

Member Data Documentation

+ +

◆ vIndices

+ +
+
+ + + + + +
+ + + + +
std::vector<std::vector<meshindex_t> > ne::MeshData::vIndices
+
+private
+
+

Stores array of mesh indices per material slot so first element in the array stores indices of the mesh that use material slot 0, then indices that use material slot 1 and so on.

+
Remarks
This array defines how much material slots will be available.
+ +
+
+ +

◆ vVertices

+ +
+
+ + + + + +
+ + + + +
std::vector<MeshVertex> ne::MeshData::vVertices
+
+private
+
+

Mesh vertices.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/general/resource/MeshData.h
  • +
  • src/engine_lib/private/game/nodes/MeshNode.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1MeshData.js b/classne_1_1MeshData.js new file mode 100644 index 000000000..0ade57517 --- /dev/null +++ b/classne_1_1MeshData.js @@ -0,0 +1,12 @@ +var classne_1_1MeshData = +[ + [ "meshindex_t", "classne_1_1MeshData.html#a88563415e42ed43b4271643048796e29", null ], + [ "MeshData", "classne_1_1MeshData.html#a1a7851ff413252527772d106b347b749", null ], + [ "MeshData", "classne_1_1MeshData.html#ad4b137ea298731fcca0c60b88bbc21ed", null ], + [ "getIndices", "classne_1_1MeshData.html#a35c1b75b662b7f56364ae01d7f15130c", null ], + [ "getVertices", "classne_1_1MeshData.html#a2430ee585fe26a4c1d8dbb60776bf44e", null ], + [ "operator=", "classne_1_1MeshData.html#a71016ccc08f15529205709f6579736a5", null ], + [ "operator=", "classne_1_1MeshData.html#a418a80ab6715461b00a6eeedf2a2ac9e", null ], + [ "vIndices", "classne_1_1MeshData.html#a79569a42ac8e910ab79b64dec77b58a4", null ], + [ "vVertices", "classne_1_1MeshData.html#a32b1945e1116f27cd4480e34e1299ae6", null ] +]; \ No newline at end of file diff --git a/classne_1_1MeshData.png b/classne_1_1MeshData.png new file mode 100644 index 0000000000000000000000000000000000000000..b6795a5a621cf5431af4dc67a8aa7669ce9fae92 GIT binary patch literal 706 zcmV;z0zLhSP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0006_ zNkl2m8Z2!#)L#_0W@_&VAwP;5p|vBx%ji^zCgB5Ll^ zD#gmVMw`Bgh$vlG(KdN#gUYCL`yhHh{~s}gT~%>2Vm8FgXtllXELtUPZYt(&G-hyhfGu;0KlR^0DwV( z004sm0RRRC0sssO1OONm2mmnXuOgOZS$u_snb}i;U}iSx#}TxBn0dVR_wDIoQJZfO z*>z5H0y83L+j8CbF-bLUKG{}YOBJ=yW@;-#o*hvm_SkA{Ay+=i)XgnKS1~VjG840s zMl|>11}_kY6CR916XrzSH1zMLioB{lAkBu4;gH$4QTBfs5)6%~eeWG@s zJX?CA^54xwF*Exp5X{U51%jE`pzlE}%d)r%0G??D0AKkd*43TikJt#_jBh}E$V3GK z04xdw02mYq05B*J0ANrc0KlL?0DwV(004vjDuRf}SD=(q@>C#FO39$#fN0CJTYb+X zbK?F8QPx$S5i#Zc3PCl~xUmsY?d7@MTH?I8|GPrG)@#6i)r7Ns_dN!wVx}sNKBoxn zJ9cgC-yLE+!dA#&?;X;-(xm?MWfh~XBee02jhgNAfz3V^L>&noaGa>Asjqt(v+@+b oQ7NVLM1e>tC4)W&K}6)Le+d|g%N+rM>;M1&07*qoM6N<$f-5yZ&;S4c literal 0 HcmV?d00001 diff --git a/classne_1_1MeshDataBinaryFieldSerializer-members.html b/classne_1_1MeshDataBinaryFieldSerializer-members.html new file mode 100644 index 000000000..6d8be3223 --- /dev/null +++ b/classne_1_1MeshDataBinaryFieldSerializer-members.html @@ -0,0 +1,118 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::MeshDataBinaryFieldSerializer Member List
+
+
+ +

This is the complete list of members for ne::MeshDataBinaryFieldSerializer, including all inherited members.

+ + + + + + + + + +
deserializeField(const std::filesystem::path &pathToBinaryFile, Serializable *pFieldOwner, const rfk::Field *pField) overridene::MeshDataBinaryFieldSerializervirtual
IBinaryFieldSerializer()=default (defined in ne::IBinaryFieldSerializer)ne::IBinaryFieldSerializer
isFieldTypeSupported(const rfk::Field *pField) overridene::MeshDataBinaryFieldSerializervirtual
MeshDataBinaryFieldSerializer()=default (defined in ne::MeshDataBinaryFieldSerializer)ne::MeshDataBinaryFieldSerializer
pMeshDataFileExtensionne::MeshDataBinaryFieldSerializerprivatestatic
serializeField(const std::filesystem::path &pathToOutputDirectory, const std::string &sFilenameWithoutExtension, Serializable *pFieldOwner, const rfk::Field *pField) overridene::MeshDataBinaryFieldSerializervirtual
~IBinaryFieldSerializer()=default (defined in ne::IBinaryFieldSerializer)ne::IBinaryFieldSerializervirtual
~MeshDataBinaryFieldSerializer() override=default (defined in ne::MeshDataBinaryFieldSerializer)ne::MeshDataBinaryFieldSerializervirtual
+
+ + + + diff --git a/classne_1_1MeshDataBinaryFieldSerializer.html b/classne_1_1MeshDataBinaryFieldSerializer.html new file mode 100644 index 000000000..b79322b32 --- /dev/null +++ b/classne_1_1MeshDataBinaryFieldSerializer.html @@ -0,0 +1,326 @@ + + + + + + + +Nameless Engine: ne::MeshDataBinaryFieldSerializer Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::MeshDataBinaryFieldSerializer Class Reference
+
+
+ +

#include <MeshDataBinaryFieldSerializer.h>

+
+Inheritance diagram for ne::MeshDataBinaryFieldSerializer:
+
+
+ + +ne::IBinaryFieldSerializer + +
+ + + + + + + + + + + + + + +

+Public Member Functions

virtual bool isFieldTypeSupported (const rfk::Field *pField) override
 
virtual std::variant< std::string, ErrorserializeField (const std::filesystem::path &pathToOutputDirectory, const std::string &sFilenameWithoutExtension, Serializable *pFieldOwner, const rfk::Field *pField) override
 
virtual std::optional< ErrordeserializeField (const std::filesystem::path &pathToBinaryFile, Serializable *pFieldOwner, const rfk::Field *pField) override
 
virtual bool isFieldTypeSupported (const rfk::Field *pField)=0
 
virtual std::variant< std::string, ErrorserializeField (const std::filesystem::path &pathToOutputDirectory, const std::string &sFilenameWithoutExtension, Serializable *pFieldOwner, const rfk::Field *pField)=0
 
virtual std::optional< ErrordeserializeField (const std::filesystem::path &pathToBinaryFile, Serializable *pFieldOwner, const rfk::Field *pField)=0
 
+ + + +

+Static Private Attributes

static constexpr auto pMeshDataFileExtension = ".mbin"
 
+

Detailed Description

+

Serializer for fields of MeshData type.

+

Member Function Documentation

+ +

◆ deserializeField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::MeshDataBinaryFieldSerializer::deserializeField (const std::filesystem::path & pathToBinaryFile,
SerializablepFieldOwner,
const rfk::Field * pField 
)
+
+overridevirtual
+
+

Deserializes data from a binary file into the specified field.

+
Parameters
+ + + + +
pathToBinaryFilePath to the binary file to deserialize.
pFieldOwnerField's owner.
pFieldField to deserialize TOML value to.
+
+
+
Returns
Error if something went wrong, empty otherwise.
+ +

Implements ne::IBinaryFieldSerializer.

+ +
+
+ +

◆ isFieldTypeSupported()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ne::MeshDataBinaryFieldSerializer::isFieldTypeSupported (const rfk::Field * pField)
+
+overridevirtual
+
+

Tests if this serializer supports serialization/deserialization of this field.

+
Parameters
+ + +
pFieldField to test for serialization/deserialization support.
+
+
+
Returns
true if this serializer can be used to serialize this field, false otherwise.
+ +

Implements ne::IBinaryFieldSerializer.

+ +
+
+ +

◆ serializeField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::string, Error > ne::MeshDataBinaryFieldSerializer::serializeField (const std::filesystem::path & pathToOutputDirectory,
const std::string & sFilenameWithoutExtension,
SerializablepFieldOwner,
const rfk::Field * pField 
)
+
+overridevirtual
+
+

Serializes the specified field into a binary file.

+
Parameters
+ + + + + +
pathToOutputDirectoryPath to the directory where the resulting file will be located.
sFilenameWithoutExtensionName of the resulting file without extension.
pFieldOwnerField's owner.
pFieldField to serialize.
+
+
+
Returns
Error if something went wrong, otherwise full name of the resulting file (including file extension).
+ +

Implements ne::IBinaryFieldSerializer.

+ +
+
+

Member Data Documentation

+ +

◆ pMeshDataFileExtension

+ +
+
+ + + + + +
+ + + + +
constexpr auto ne::MeshDataBinaryFieldSerializer::pMeshDataFileExtension = ".mbin"
+
+staticconstexprprivate
+
+

File extension for the file that is used to store mesh data.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classne_1_1MeshDataBinaryFieldSerializer.js b/classne_1_1MeshDataBinaryFieldSerializer.js new file mode 100644 index 000000000..3b71b5560 --- /dev/null +++ b/classne_1_1MeshDataBinaryFieldSerializer.js @@ -0,0 +1,7 @@ +var classne_1_1MeshDataBinaryFieldSerializer = +[ + [ "deserializeField", "classne_1_1MeshDataBinaryFieldSerializer.html#aa57307de527e72c0aaedbf83a8be8884", null ], + [ "isFieldTypeSupported", "classne_1_1MeshDataBinaryFieldSerializer.html#ab7712e6d4a47459f20e87b57c8426094", null ], + [ "serializeField", "classne_1_1MeshDataBinaryFieldSerializer.html#a6be0a74036c9cfdec49f935ec65a8aa2", null ], + [ "pMeshDataFileExtension", "classne_1_1MeshDataBinaryFieldSerializer.html#a6dfbf6d9351d1e8d0b15c069f6af15be", null ] +]; \ No newline at end of file diff --git a/classne_1_1MeshDataBinaryFieldSerializer.png b/classne_1_1MeshDataBinaryFieldSerializer.png new file mode 100644 index 0000000000000000000000000000000000000000..dd5c7106c34cf46614f4dafe916d505773e33f5d GIT binary patch literal 827 zcmeAS@N?(olHy`uVBq!ia0vp^7l1f`gBeK1pW>beq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB)aOaC3+q;uNikkh2c8B7yX&d+jCxw&~AQ|s5N z|GC>$BCj8Rk-NtB@p-ueM?;M#JkkHkJ0X_AbDGw1;{fXeqO&GDB;Gw$yFJ@s{^^J{ z{n2cnHhpVZVm+DRz1Z7tMjOObZeGw_up`UphPMA|-A9X=H~qV)w@c#mqrBQ3KO68LK3@?q}c%Pf|=@ehe|HF*puD9pDvY&2LQqiUp zzOFpH$S(Y;=+Qkl&*60bB*WR(o`M3FY)nefX zcNg6?n;I7pBi!!$k6ugmoqUZRUsSek+ zt(d%}GWCGT_lXk?&szp>a+rEi$YcJo87j8B<0e`k`gU$@z*f%f`If&PHgqp~Tl0Tq z>WMPpxsMh(`AwO#nrH6MsJw25slN;z_9<`oUMF|z?63NUKb*REvR41t`6NeP^WN=A z-cNu2yL&5gkM_9>W(&^8u0Fl=eZZ?kE3dt$=l0 literal 0 HcmV?d00001 diff --git a/classne_1_1MeshImporter-members.html b/classne_1_1MeshImporter-members.html new file mode 100644 index 000000000..62bccc92b --- /dev/null +++ b/classne_1_1MeshImporter-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::MeshImporter Member List
+
+
+ +

This is the complete list of members for ne::MeshImporter, including all inherited members.

+ + + +
importMesh(const std::filesystem::path &pathToFile, const std::string &sPathToOutputDirRelativeRes, const std::string &sOutputDirectoryName, const std::function< void(std::string_view)> &onProgress)ne::MeshImporterstatic
MeshImporter()=delete (defined in ne::MeshImporter)ne::MeshImporter
+
+ + + + diff --git a/classne_1_1MeshImporter.html b/classne_1_1MeshImporter.html new file mode 100644 index 000000000..ef0893972 --- /dev/null +++ b/classne_1_1MeshImporter.html @@ -0,0 +1,185 @@ + + + + + + + +Nameless Engine: ne::MeshImporter Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::MeshImporter Class Reference
+
+
+ +

#include <MeshImporter.h>

+ + + + +

+Static Public Member Functions

static std::optional< ErrorimportMesh (const std::filesystem::path &pathToFile, const std::string &sPathToOutputDirRelativeRes, const std::string &sOutputDirectoryName, const std::function< void(std::string_view)> &onProgress)
 
+

Detailed Description

+

Provides static functions for importing files in special formats (such as GLTF/GLB) as meshes, textures, etc. into engine formats (such as nodes).

+

Member Function Documentation

+ +

◆ importMesh()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::MeshImporter::importMesh (const std::filesystem::path & pathToFile,
const std::string & sPathToOutputDirRelativeRes,
const std::string & sOutputDirectoryName,
const std::function< void(std::string_view)> & onProgress 
)
+
+static
+
+

Imports a file in a special format (such as GTLF/GLB) and converts information from the file to a new node tree with materials and textures (if the specified file defines them).

+
Parameters
+ + + + + +
pathToFilePath to the file to import.
sPathToOutputDirRelativeResPath to a directory relative to the res directory that will store results, for example: game/models (located at res/game/models).
sOutputDirectoryNameName of the new directory that does not exists yet but will be created in the specified directory (relative to the res) to store the results (allowed characters A-z and numbers 0-9, maximum length is 10 characters), for example: mesh.
onProgressCallback that will be called to report some text description of the current import stage.
+
+
+
Returns
Error if something went wrong.
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/io/MeshImporter.h
  • +
  • src/engine_lib/private/io/MeshImporter.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1MeshImporter.js b/classne_1_1MeshImporter.js new file mode 100644 index 000000000..7e6c2827a --- /dev/null +++ b/classne_1_1MeshImporter.js @@ -0,0 +1,4 @@ +var classne_1_1MeshImporter = +[ + [ "importMesh", "classne_1_1MeshImporter.html#a3867621b8bf43182340ccac6d78847ce", null ] +]; \ No newline at end of file diff --git a/classne_1_1MeshNode-members.html b/classne_1_1MeshNode-members.html new file mode 100644 index 000000000..ae46337e9 --- /dev/null +++ b/classne_1_1MeshNode-members.html @@ -0,0 +1,277 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::MeshNode Member List
+
+
+ +

This is the complete list of members for ne::MeshNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
aabbne::MeshNodeprivate
addChildNode(const sgc::GcPtr< Node > &pNode, AttachmentRule locationRule=AttachmentRule::KEEP_WORLD, AttachmentRule rotationRule=AttachmentRule::KEEP_WORLD, AttachmentRule scaleRule=AttachmentRule::KEEP_WORLD)ne::Node
allocateGeometryBuffers()ne::MeshNodeprivate
allocateShaderResources()ne::MeshNodeprivate
applyAttachmentRule(Node::AttachmentRule locationRule, const glm::vec3 &worldLocationBeforeAttachment, Node::AttachmentRule rotationRule, const glm::vec3 &worldRotationBeforeAttachment, Node::AttachmentRule scaleRule, const glm::vec3 &worldScaleBeforeAttachment)ne::SpatialNodeprivate
AttachmentRule enum namene::Node
bIsVisiblene::MeshNodeprivate
bSerializene::Nodeprivate
createNotificationBroadcaster()ne::Nodeinlineprotected
createTimer(const std::string &sTimerName)ne::Nodeprotected
deallocateGeometryBuffers()ne::MeshNodeprivate
deallocateShaderResources()ne::MeshNodeprivate
deserialize(const std::filesystem::path &pathToFile)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)ne::Serializablestatic
deserialize(std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, const std::string &sEntityId)ne::Serializablestatic
deserialize(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})ne::Serializablestatic
deserializeFromSection(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sSectionName, const std::string &sTypeGuid, const std::string &sEntityId, const std::optional< std::filesystem::path > &optionalPathToFile)ne::Serializableprivatestatic
deserializeMultiple(std::filesystem::path pathToFile)ne::Serializablestatic
deserializeNodeTree(const std::filesystem::path &pathToFile)ne::Nodestatic
despawn()ne::Nodeprivate
detachFromParentAndDespawn()ne::Node
enableTimer(Timer *pTimer, bool bEnable)ne::Nodeprivate
findValidWorld()ne::Nodeprivate
getAABB()ne::MeshNodeinline
getActionEventBindings()ne::Nodeprotected
getAliveNodeCount()ne::Nodestatic
getAvailableMaterialSlotCount()ne::MeshNode
getAxisEventBindings()ne::Nodeprotected
getChildNodeOfType(const std::string &sChildNodeName="")ne::Node
getChildNodes()ne::Node
getClassForGuid(const std::string &sGuid)ne::Serializableprivatestatic
getClassForGuid(const rfk::Struct *pArchetypeToAnalyze, const std::string &sGuid)ne::Serializableprivatestatic
getClosestSpatialParent()ne::SpatialNode
getDefaultMaterial()ne::MeshNodeprivatestatic
getGameInstance()ne::Nodestatic
getIdsFromFile(std::filesystem::path pathToFile)ne::Serializablestatic
getIndexBufferInfoForMaterialSlot(size_t iMaterialSlot)ne::MeshNodeprivate
getInformationForSerialization(size_t &iId, std::optional< size_t > iParentId)ne::Nodeprivate
getMaterial(size_t iMaterialSlot=0)ne::MeshNode
getMeshData()ne::MeshNodeinline
getMeshGpuResources()ne::MeshNodeinline
getMeshShaderConstantBufferName()ne::MeshNodeinlinestatic
getMeshShaderConstants()ne::MeshNodeinline
getNodeId() constne::Node
getNodeName() constne::Node
getParentNode()ne::Node
getParentNodeOfType(const std::string &sParentNodeName="")ne::Node
getPathDeserializedFromRelativeToRes() constne::Serializable
getRelativeLocation() constne::SpatialNodeinline
getRelativeRotation() constne::SpatialNodeinline
getRelativeRotationMatrix()ne::SpatialNode
getRelativeScale() constne::SpatialNodeinline
getSpawnDespawnMutex()ne::Nodeprotected
getTickGroup() constne::Node
getWorldForwardDirection()ne::SpatialNode
getWorldLocation()ne::SpatialNode
getWorldMatrix()ne::SpatialNode
getWorldRightDirection()ne::SpatialNode
getWorldRootNode()ne::Node
getWorldRotation()ne::SpatialNode
getWorldRotationQuaternion()ne::SpatialNode
getWorldScale()ne::SpatialNode
getWorldUpDirection()ne::SpatialNode
iNodeIdne::Nodeprivate
isCalledEveryFrame()ne::Node
isChildOf(Node *pNode)ne::Node
isParentOf(Node *pNode)ne::Node
isReceivingInput()ne::Node
isSerialized() constne::Node
isSpawned()ne::Node
isTreeDeserializedFromOneFile(const std::string &sPathRelativeToRes)ne::Nodeprivate
isVisible() constne::MeshNode
lockChildren()ne::Nodeprivate
markShaderCpuWriteResourceToBeCopiedToGpu(const std::string &sShaderResourceName)ne::MeshNodeprotected
Material (defined in ne::MeshNode)ne::MeshNodefriend
meshDatane::MeshNodeprivate
MeshNode() (defined in ne::MeshNode)ne::MeshNode
MeshNode(const std::string &sNodeName)ne::MeshNode
mtxBindedActionEventsne::Nodeprivate
mtxBindedAxisEventsne::Nodeprivate
mtxChildNodesne::Nodeprivate
mtxCreatedBroadcastersne::Nodeprivate
mtxCreatedTimersne::Nodeprivate
mtxGpuResourcesne::MeshNodeprivate
mtxIsCalledEveryFramene::Nodeprivate
mtxIsReceivingInputne::Nodeprivate
mtxIsSpawnedne::Nodeprivate
mtxLocalSpacene::SpatialNodeprivate
mtxMeshDatane::MeshNodeprivate
mtxParentNodene::Nodeprivate
mtxShaderMeshDataConstantsne::MeshNodeprivate
mtxSpatialParentne::SpatialNodeprivate
mtxWorldMatrixne::SpatialNodeprivate
ne::Node::Node(const std::string &sName)ne::Node
Node(const Node &)=delete (defined in ne::Node)ne::Node
Node(Node &&)=delete (defined in ne::Node)ne::Node
notifyAboutAttachedToNewParent(bool bThisNodeBeingAttached)ne::Nodeprivate
notifyAboutDetachingFromParent(bool bThisNodeBeingDetached)ne::Nodeprivate
onAfterAttachedToNewParent(bool bThisNodeBeingAttached) overridene::SpatialNodeprotectedvirtual
onAfterDeserialized() overridene::MeshNodeprotectedvirtual
onBeforeDetachedFromParent(bool bThisNodeBeingDetached)ne::Nodeinlineprotectedvirtual
onBeforeNewFrame(float timeSincePrevFrameInSec)ne::Nodeinlineprotectedvirtual
onChildNodesSpawned()ne::Nodeinlineprotectedvirtual
onDespawning() overridene::MeshNodeprotectedvirtual
onFinishedUpdatingShaderMeshConstants()ne::MeshNodeprivate
onInputActionEvent(unsigned int iActionId, KeyboardModifiers modifiers, bool bIsPressedDown)ne::Nodeprivate
onInputAxisEvent(unsigned int iAxisEventId, KeyboardModifiers modifiers, float input)ne::Nodeprivate
onMeshDataChanged()ne::MeshNode
onMouseMove(double xOffset, double yOffset)ne::Nodeinlineprotectedvirtual
onMouseScrollMove(int iOffset)ne::Nodeinlineprotectedvirtual
onSpawning() overridene::MeshNodeprotectedvirtual
onStartedUpdatingShaderMeshConstants()ne::MeshNodeprivate
onWorldLocationRotationScaleChanged() overridene::MeshNodeprotectedvirtual
operator=(const Node &)=delete (defined in ne::Node)ne::Node
operator=(Node &&)=delete (defined in ne::Node)ne::Node
pathDeserializedFromRelativeToResne::Serializableprivate
pWorldne::Nodeprivate
recalculateLocalMatrix()ne::SpatialNodeprivate
recalculateWorldMatrix(bool bNotifyChildren=true)ne::SpatialNodeprivate
recalculateWorldMatrixForNodeAndNotifyChildren(Node *pNode)ne::SpatialNodeprivate
relativeLocationne::SpatialNodeprivate
relativeRotationne::SpatialNodeprivate
relativeScalene::SpatialNodeprivate
resolvePathToToml(std::filesystem::path &pathToFile)ne::Serializableprivatestatic
sCustomAttributePrefixne::Serializableprivatestatic
Serializable()=default (defined in ne::Serializable)ne::Serializable
serialize(std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})ne::Serializable
serialize(toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serialize(toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serializeMultiple(std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)ne::Serializablestatic
serializeNodeTree(const std::filesystem::path &pathToFile, bool bEnableBackup)ne::Node
setIsCalledEveryFrame(bool bEnable)ne::Nodeprotected
setIsReceivingInput(bool bEnable)ne::Nodeprotected
setIsVisible(bool bVisible)ne::MeshNode
setMaterial(std::unique_ptr< Material > pMaterial, size_t iMaterialSlot=0)ne::MeshNode
setMeshData(const MeshData &meshData)ne::MeshNode
setMeshData(MeshData &&meshData)ne::MeshNode
setNodeName(const std::string &sName)ne::Node
setRelativeLocation(const glm::vec3 &location)ne::SpatialNode
setRelativeRotation(const glm::vec3 &rotation)ne::SpatialNode
setRelativeScale(const glm::vec3 &scale)ne::SpatialNode
setSerialize(bool bSerialize)ne::Node
setShaderCpuWriteResourceBinding(const std::string &sShaderResourceName, size_t iResourceSizeInBytes, const std::function< void *()> &onStartedUpdatingResource, const std::function< void()> &onFinishedUpdatingResource)ne::MeshNodeprotected
setShaderTextureResourceBinding(const std::string &sShaderResourceName, const std::string &sPathToTextureResourceRelativeRes)ne::MeshNodeprotected
setTickGroup(TickGroup tickGroup)ne::Nodeprotected
setWorldLocation(const glm::vec3 &location)ne::SpatialNode
setWorldRotation(const glm::vec3 &rotation)ne::SpatialNode
setWorldScale(const glm::vec3 &scale)ne::SpatialNode
sExternalNodeTreePathAttributeNamene::Nodeinlineprivatestatic
sMeshShaderConstantBufferNamene::MeshNodeinlineprivatestatic
sNodeNamene::Nodeprivate
sNothingToSerializeKeyne::Serializableinlineprivatestatic
sParentNodeIdAttributeNamene::Nodeinlineprivatestatic
sPathRelativeToResKeyne::Serializableinlineprivatestatic
SpatialNode() (defined in ne::SpatialNode)ne::SpatialNode
SpatialNode(const std::string &sNodeName)ne::SpatialNode
spawn()ne::Nodeprivate
sSubEntityFieldNameKeyne::Serializableinlineprivatestatic
tickGroupne::Nodeprivate
unlockChildren()ne::Nodeprivate
updateShaderResourcesToUseChangedMaterialPipelines()ne::MeshNodeprivate
vMaterialsne::MeshNodeprivate
~MeshNode() override=default (defined in ne::MeshNode)ne::MeshNodevirtual
~Node() overridene::Nodevirtual
~Serializable() override=default (defined in ne::Serializable)ne::Serializablevirtual
~SpatialNode() override=default (defined in ne::SpatialNode)ne::SpatialNodevirtual
+
+ + + + diff --git a/classne_1_1MeshNode.html b/classne_1_1MeshNode.html new file mode 100644 index 000000000..02d6abd0b --- /dev/null +++ b/classne_1_1MeshNode.html @@ -0,0 +1,1518 @@ + + + + + + + +Nameless Engine: ne::MeshNode Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <MeshNode.h>

+
+Inheritance diagram for ne::MeshNode:
+
+
+ + +ne::SpatialNode +ne::Node +ne::Serializable + +
+ + + + + + +

+Classes

struct  GpuResources
 
struct  MeshShaderConstants
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 MeshNode (const std::string &sNodeName)
 
void setMaterial (std::unique_ptr< Material > pMaterial, size_t iMaterialSlot=0)
 
void setMeshData (const MeshData &meshData)
 
void setMeshData (MeshData &&meshData)
 
void onMeshDataChanged ()
 
void setIsVisible (bool bVisible)
 
MaterialgetMaterial (size_t iMaterialSlot=0)
 
size_t getAvailableMaterialSlotCount ()
 
std::pair< std::recursive_mutex *, MeshData * > getMeshData ()
 
std::pair< std::recursive_mutex, GpuResources > * getMeshGpuResources ()
 
std::pair< std::recursive_mutex, MeshShaderConstants > * getMeshShaderConstants ()
 
AABBgetAABB ()
 
bool isVisible () const
 
- Public Member Functions inherited from ne::SpatialNode
 SpatialNode (const std::string &sNodeName)
 
void setRelativeLocation (const glm::vec3 &location)
 
void setRelativeRotation (const glm::vec3 &rotation)
 
void setRelativeScale (const glm::vec3 &scale)
 
void setWorldLocation (const glm::vec3 &location)
 
void setWorldRotation (const glm::vec3 &rotation)
 
void setWorldScale (const glm::vec3 &scale)
 
glm::vec3 getRelativeLocation () const
 
glm::vec3 getRelativeRotation () const
 
glm::vec3 getRelativeScale () const
 
glm::mat4x4 getRelativeRotationMatrix ()
 
glm::vec3 getWorldLocation ()
 
glm::vec3 getWorldRotation ()
 
glm::quat getWorldRotationQuaternion ()
 
glm::vec3 getWorldScale ()
 
glm::vec3 getWorldForwardDirection ()
 
glm::vec3 getWorldRightDirection ()
 
glm::vec3 getWorldUpDirection ()
 
glm::mat4x4 getWorldMatrix ()
 
std::pair< std::recursive_mutex, sgc::GcPtr< SpatialNode > > * getClosestSpatialParent ()
 
- Public Member Functions inherited from ne::Node
 Node ()
 
 Node (const std::string &sName)
 
Node (const Node &)=delete
 
+Nodeoperator= (const Node &)=delete
 
Node (Node &&)=delete
 
+Nodeoperator= (Node &&)=delete
 
virtual ~Node () override
 
void setNodeName (const std::string &sName)
 
void detachFromParentAndDespawn ()
 
void addChildNode (const sgc::GcPtr< Node > &pNode, AttachmentRule locationRule=AttachmentRule::KEEP_WORLD, AttachmentRule rotationRule=AttachmentRule::KEEP_WORLD, AttachmentRule scaleRule=AttachmentRule::KEEP_WORLD)
 
void setSerialize (bool bSerialize)
 
std::optional< ErrorserializeNodeTree (const std::filesystem::path &pathToFile, bool bEnableBackup)
 
std::string getNodeName () const
 
sgc::GcPtr< NodegetWorldRootNode ()
 
std::pair< std::recursive_mutex, sgc::GcPtr< Node > > * getParentNode ()
 
std::pair< std::recursive_mutex, sgc::GcVector< sgc::GcPtr< Node > > > * getChildNodes ()
 
template<typename NodeType >
+requires std::derived_from<NodeType, Node>
sgc::GcPtr< NodeType > getParentNodeOfType (const std::string &sParentNodeName="")
 
template<typename NodeType >
+requires std::derived_from<NodeType, Node>
sgc::GcPtr< NodeType > getChildNodeOfType (const std::string &sChildNodeName="")
 
TickGroup getTickGroup () const
 
std::optional< size_t > getNodeId () const
 
bool isCalledEveryFrame ()
 
bool isReceivingInput ()
 
bool isSpawned ()
 
bool isParentOf (Node *pNode)
 
bool isChildOf (Node *pNode)
 
bool isSerialized () const
 
- Public Member Functions inherited from ne::Serializable
std::optional< Errorserialize (std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})
 
std::variant< std::string, Errorserialize (toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::variant< std::string, Errorserialize (toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::optional< std::pair< std::string, std::string > > getPathDeserializedFromRelativeToRes () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static const char * getMeshShaderConstantBufferName ()
 
- Static Public Member Functions inherited from ne::Node
static size_t getAliveNodeCount ()
 
static std::variant< sgc::GcPtr< Node >, ErrordeserializeNodeTree (const std::filesystem::path &pathToFile)
 
static GameInstancegetGameInstance ()
 
- Static Public Member Functions inherited from ne::Serializable
static std::variant< std::pair< std::set< std::string >, toml::value >, ErrorgetIdsFromFile (std::filesystem::path pathToFile)
 
static std::optional< ErrorserializeMultiple (std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::same_as<SmartPointer, sgc::GcPtr<Serializable>> || std::same_as<SmartPointer, std::unique_ptr<Serializable>>
static std::variant< std::vector< DeserializedObjectInformation< SmartPointer > >, ErrordeserializeMultiple (std::filesystem::path pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void onAfterDeserialized () override
 
virtual void onSpawning () override
 
virtual void onDespawning () override
 
virtual void onWorldLocationRotationScaleChanged () override
 
void setShaderCpuWriteResourceBinding (const std::string &sShaderResourceName, size_t iResourceSizeInBytes, const std::function< void *()> &onStartedUpdatingResource, const std::function< void()> &onFinishedUpdatingResource)
 
void setShaderTextureResourceBinding (const std::string &sShaderResourceName, const std::string &sPathToTextureResourceRelativeRes)
 
void markShaderCpuWriteResourceToBeCopiedToGpu (const std::string &sShaderResourceName)
 
- Protected Member Functions inherited from ne::SpatialNode
virtual void onAfterDeserialized () override
 
virtual void onSpawning () override
 
virtual void onAfterAttachedToNewParent (bool bThisNodeBeingAttached) override
 
virtual void onWorldLocationRotationScaleChanged ()
 
- Protected Member Functions inherited from ne::Node
void setIsCalledEveryFrame (bool bEnable)
 
void setTickGroup (TickGroup tickGroup)
 
void setIsReceivingInput (bool bEnable)
 
TimercreateTimer (const std::string &sTimerName)
 
template<typename FunctionType >
NodeNotificationBroadcaster< FunctionType > * createNotificationBroadcaster ()
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, bool)> > > * getActionEventBindings ()
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, float)> > > * getAxisEventBindings ()
 
std::recursive_mutex * getSpawnDespawnMutex ()
 
virtual void onMouseMove (double xOffset, double yOffset)
 
virtual void onMouseScrollMove (int iOffset)
 
virtual void onBeforeNewFrame (float timeSincePrevFrameInSec)
 
virtual void onSpawning ()
 
virtual void onChildNodesSpawned ()
 
virtual void onDespawning ()
 
virtual void onBeforeDetachedFromParent (bool bThisNodeBeingDetached)
 
virtual void onAfterAttachedToNewParent (bool bThisNodeBeingAttached)
 
virtual void onAfterDeserialized ()
 
+ + + + + + + + + + + + + + + + + +

+Private Member Functions

void allocateShaderResources ()
 
void allocateGeometryBuffers ()
 
void deallocateShaderResources ()
 
void deallocateGeometryBuffers ()
 
void * onStartedUpdatingShaderMeshConstants ()
 
void onFinishedUpdatingShaderMeshConstants ()
 
void updateShaderResourcesToUseChangedMaterialPipelines ()
 
std::pair< GpuResource *, unsigned int > getIndexBufferInfoForMaterialSlot (size_t iMaterialSlot)
 
+ + + +

+Static Private Member Functions

static std::unique_ptr< MaterialgetDefaultMaterial ()
 
+ + + + + + + + + + + + + + + +

+Private Attributes

std::vector< std::unique_ptr< Material > > vMaterials
 
MeshData meshData
 
AABB aabb
 
std::recursive_mutex mtxMeshData
 
std::pair< std::recursive_mutex, GpuResourcesmtxGpuResources
 
std::pair< std::recursive_mutex, MeshShaderConstantsmtxShaderMeshDataConstants
 
bool bIsVisible = true
 
+ + + +

+Static Private Attributes

static const auto sMeshShaderConstantBufferName = "meshData"
 
+ + + +

+Friends

+class Material
 
+ + + + +

+Additional Inherited Members

- Public Types inherited from ne::Node
enum class  AttachmentRule { RESET_RELATIVE +, KEEP_RELATIVE +, KEEP_WORLD + }
 
+

Detailed Description

+

Represents a node that can have 3D geometry to display (mesh).

+
Remarks
Used for GPU optimized geometry - geometry that rarely (if ever) changes from the CPU side.
+

Constructor & Destructor Documentation

+ +

◆ MeshNode()

+ +
+
+ + + + + + + + +
ne::MeshNode::MeshNode (const std::string & sNodeName)
+
+

Creates a new node with the specified name.

+
Parameters
+ + +
sNodeNameName of this node.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ allocateGeometryBuffers()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::MeshNode::allocateGeometryBuffers ()
+
+private
+
+

Allocates geometry resources (see mtxGpuResources).

+ +
+
+ +

◆ allocateShaderResources()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::MeshNode::allocateShaderResources ()
+
+private
+
+

Allocates shader resources (see mtxGpuResources).

+
Warning
Expects that vMaterials to have initialized PSOs.
+ +
+
+ +

◆ deallocateGeometryBuffers()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::MeshNode::deallocateGeometryBuffers ()
+
+private
+
+

Deallocates geometry resources (see mtxGpuResources).

+ +
+
+ +

◆ deallocateShaderResources()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::MeshNode::deallocateShaderResources ()
+
+private
+
+

Deallocates shader resources (see mtxGpuResources).

+ +
+
+ +

◆ getAABB()

+ +
+
+ + + + + +
+ + + + + + + +
AABB * ne::MeshNode::getAABB ()
+
+inline
+
+

Returns pointer to axis-aligned bounding box of this mesh.

+
Returns
Axis-aligned bounding box.
+ +
+
+ +

◆ getAvailableMaterialSlotCount()

+ +
+
+ + + + + + + +
size_t ne::MeshNode::getAvailableMaterialSlotCount ()
+
+

Returns the total number of available material slots that the current mesh data (see setMeshData) provides.

+
Returns
The number of available material slots.
+ +
+
+ +

◆ getDefaultMaterial()

+ +
+
+ + + + + +
+ + + + + + + +
std::unique_ptr< Material > ne::MeshNode::getDefaultMaterial ()
+
+staticprivate
+
+

Returns default mesh node material.

+
Returns
Default material for mesh node.
+ +
+
+ +

◆ getIndexBufferInfoForMaterialSlot()

+ +
+
+ + + + + +
+ + + + + + + + +
std::pair< GpuResource *, unsigned int > ne::MeshNode::getIndexBufferInfoForMaterialSlot (size_t iMaterialSlot)
+
+private
+
+

Returns information about an index buffer for the specified material slot.

+
Warning
Shows an error and throws an exception if the index buffer at the specified index cannon be found.
+
Parameters
+ + +
iMaterialSlotMaterial slot that corresponds with an index buffer to look for.
+
+
+
Returns
Information about an index buffer at the specified material slot.
+ +
+
+ +

◆ getMaterial()

+ +
+
+ + + + + + + + +
Material * ne::MeshNode::getMaterial (size_t iMaterialSlot = 0)
+
+

Returns material used by this name.

+
Warning
Do not delete (free) returned pointer.
+
Parameters
+ + +
iMaterialSlotSlot from which requested material is taken from.
+
+
+
Returns
nullptr if the specified slot does not exist (see getAvailableMaterialSlotCount), otherwise used material.
+ +
+
+ +

◆ getMeshData()

+ +
+
+ + + + + +
+ + + + + + + +
std::pair< std::recursive_mutex *, MeshData * > ne::MeshNode::getMeshData ()
+
+inline
+
+

Returns mesh geometry for read/write operations.

+
Warning
Must be used with mutex.
+
+If you're changing mesh data you must call onMeshDataChanged after you finished modifying the mesh data to update internal CPU/GPU resources and see updated geometry on the screen, otherwise this might cause the object to be displayed incorrectly.
+
Remarks
Note that changing mesh data using onMeshDataChanged will have the same performance as if you used setMeshData because they both do the same work. The main reason why this getter exists is to avoid copying MeshData when somebody wants to read/modify existing mesh data.
+
Returns
Mesh data.
+ +
+
+ +

◆ getMeshGpuResources()

+ +
+
+ + + + + +
+ + + + + + + +
std::pair< std::recursive_mutex, GpuResources > * ne::MeshNode::getMeshGpuResources ()
+
+inline
+
+

Returns GPU resources that this mesh node uses.

+
Returns
GPU resources.
+ +
+
+ +

◆ getMeshShaderConstantBufferName()

+ +
+
+ + + + + +
+ + + + + + + +
static const char * ne::MeshNode::getMeshShaderConstantBufferName ()
+
+inlinestatic
+
+

Returns name of the constant buffer that stores mesh constants.

+
Returns
Name of shader resource.
+ +
+
+ +

◆ getMeshShaderConstants()

+ +
+
+ + + + + +
+ + + + + + + +
std::pair< std::recursive_mutex, MeshShaderConstants > * ne::MeshNode::getMeshShaderConstants ()
+
+inline
+
+

Returns shader constants (copied to GPU).

+
Remarks
Changes made this returned object will not be copied to the GPU, this getter only exists read access.
+
Returns
Mesh constants.
+ +
+
+ +

◆ isVisible()

+ +
+
+ + + + + + + +
bool ne::MeshNode::isVisible () const
+
+

Tells whether this mesh is currently visible or not.

+
Returns
Whether the mesh is visible or not.
+ +
+
+ +

◆ markShaderCpuWriteResourceToBeCopiedToGpu()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::MeshNode::markShaderCpuWriteResourceToBeCopiedToGpu (const std::string & sShaderResourceName)
+
+protected
+
+

Looks for binding created using setShaderCpuWriteResourceBinding and notifies the engine that there is new (updated) data for shader CPU write resource to copy to the GPU to be used by shaders.

+
Remarks
You don't need to check if the node is spawned or not before calling this function, if the binding does not exist or some other condition is not met this call will be silently ignored without any errors.
+
+Note that the callbacks that you have specified in setShaderCpuWriteResourceBinding will not be called inside of this function, moreover they are most likely to be called in the next frame(s) (most likely multiple times) when the engine is ready to copy the data to the GPU, so if the resource's data is used by multiple threads in your code, make sure to use mutex or other synchronization primitive in your callbacks.
+
Parameters
+ + +
sShaderResourceNameName of the shader CPU write resource (should be exactly the same as the resource name written in the shader file we are referencing).
+
+
+ +
+
+ +

◆ onAfterDeserialized()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::MeshNode::onAfterDeserialized ()
+
+overrideprotectedvirtual
+
+

Called after the object was successfully deserialized. Used to execute post-deserialization logic.

+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +

Reimplemented from ne::SpatialNode.

+ +
+
+ +

◆ onDespawning()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::MeshNode::onDespawning ()
+
+overrideprotectedvirtual
+
+

Called before this node is despawned from the world to execute custom despawn logic.

+
Remarks
This node will be marked as despawned after this function is called.
+
+This function is called after all child nodes were despawned.
+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +

Reimplemented from ne::Node.

+ +
+
+ +

◆ onFinishedUpdatingShaderMeshConstants()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::MeshNode::onFinishedUpdatingShaderMeshConstants ()
+
+private
+
+

Called after finished copying data from mtxShaderMeshDataConstants.

+ +
+
+ +

◆ onMeshDataChanged()

+ +
+
+ + + + + + + +
void ne::MeshNode::onMeshDataChanged ()
+
+

Must be called after mesh data was modified to (re)create internal CPU/GPU resources.

+ +
+
+ +

◆ onSpawning()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::MeshNode::onSpawning ()
+
+overrideprotectedvirtual
+
+

Called when this node was not spawned previously and it was either attached to a parent node that is spawned or set as world's root node to execute custom spawn logic.

+
Remarks
This node will be marked as spawned before this function is called.
+
+This function is called before any of the child nodes are spawned.
+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +

Reimplemented from ne::SpatialNode.

+ +
+
+ +

◆ onStartedUpdatingShaderMeshConstants()

+ +
+
+ + + + + +
+ + + + + + + +
void * ne::MeshNode::onStartedUpdatingShaderMeshConstants ()
+
+private
+
+

Called to copy data from mtxShaderMeshDataConstants.

+
Returns
Pointer to data in mtxShaderMeshDataConstants.
+ +
+
+ +

◆ onWorldLocationRotationScaleChanged()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::MeshNode::onWorldLocationRotationScaleChanged ()
+
+overrideprotectedvirtual
+
+

Called after node's world location/rotation/scale was changed.

+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +

Reimplemented from ne::SpatialNode.

+ +
+
+ +

◆ setIsVisible()

+ +
+
+ + + + + + + + +
void ne::MeshNode::setIsVisible (bool bVisible)
+
+

Sets whether this mesh is visible or not.

+
Parameters
+ + +
bVisibleWhether this mesh is visible or not.
+
+
+ +
+
+ +

◆ setMaterial()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ne::MeshNode::setMaterial (std::unique_ptr< MaterialpMaterial,
size_t iMaterialSlot = 0 
)
+
+

Sets material to use.

+
Remarks
Replaces old (previously used) material.
+
+Logs an error if the specified material slot does not exist (see getAvailableMaterialSlotCount).
+
Parameters
+ + + +
pMaterialMaterial to use.
iMaterialSlotIndex of the material slot to set this new material to. By default all meshes have 1 material at slot 0 and mesh's geometry uses only this slot.
+
+
+ +
+
+ +

◆ setMeshData() [1/2]

+ +
+
+ + + + + + + + +
void ne::MeshNode::setMeshData (const MeshDatameshData)
+
+

Sets mesh data (geometry) to use.

+
Remarks
The number of available material slots will be changed according to the mesh data.
+
Parameters
+ + +
meshDataMesh geometry.
+
+
+ +
+
+ +

◆ setMeshData() [2/2]

+ +
+
+ + + + + + + + +
void ne::MeshNode::setMeshData (MeshData && meshData)
+
+

Sets mesh data (geometry) to use.

+
Remarks
The number of available material slots will be changed according to the mesh data.
+
Parameters
+ + +
meshDataMesh geometry.
+
+
+ +
+
+ +

◆ setShaderCpuWriteResourceBinding()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ne::MeshNode::setShaderCpuWriteResourceBinding (const std::string & sShaderResourceName,
size_t iResourceSizeInBytes,
const std::function< void *()> & onStartedUpdatingResource,
const std::function< void()> & onFinishedUpdatingResource 
)
+
+protected
+
+

Setups callbacks for a shader resource (buffer or a texture from the shader code) with CPU write access to copy the data from the CPU to the GPU to be used by the shaders.

+
Remarks
Call this function in your onSpawning function to bind to shader resources, all bindings will be automatically removed in onDespawning. An error will be shown if this function is called when the node is not spawned.
+
+When the data of a resource that you registered was updated on the CPU side you need to call markShaderCpuWriteResourceToBeCopiedToGpu so that the specified update callbacks will be called and the updated data will be copied to the GPU to be used by the shaders. Note that you don't need to call markShaderCpuWriteResourceToBeCopiedToGpu for resources you have not registered yourself. Also note that all registered resources are marked as "needs an update" by default so you don't have to call markShaderCpuWriteResourceToBeCopiedToGpu right after calling this function.
+
Parameters
+ + + + + +
sShaderResourceNameName of the resource we are referencing (should be exactly the same as the resource name written in the shader file we are referencing).
iResourceSizeInBytesSize of the data that this resource will contain. Note that the specified size will most likely be padded (changed) to be a multiple of 256 because of the hardware requirement for shader constant buffers.
onStartedUpdatingResourceFunction that will be called when the engine has started copying data to the GPU. Function returns pointer to new (updated) data of the specified resource that will be copied to the GPU.
onFinishedUpdatingResourceFunction that will be called when the engine has finished copying resource data to the GPU (usually used for unlocking mutexes).
+
+
+ +
+
+ +

◆ setShaderTextureResourceBinding()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::MeshNode::setShaderTextureResourceBinding (const std::string & sShaderResourceName,
const std::string & sPathToTextureResourceRelativeRes 
)
+
+protected
+
+

Setups a shader resource binding that references a texture from the shader code that is used when this mesh is rendered.

+
Remarks
Call this function in allocateShaderResources to bind to shader resources, all bindings will be automatically removed in deallocateShaderResources.
+
Parameters
+ + + +
sShaderResourceNameName of the resource we are referencing (should be exactly the same as the resource name written in the shader file we are referencing).
sPathToTextureResourceRelativeResPath to the directory with texture resource to use.
+
+
+ +
+
+ +

◆ updateShaderResourcesToUseChangedMaterialPipelines()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::MeshNode::updateShaderResourcesToUseChangedMaterialPipelines ()
+
+private
+
+

Called after vMaterials is changed (some slots are added/removed) to notify all shader resources.

+
Warning
Expects that the caller is using some mutex to protect this shader resource from being used in the draw function while this function is not finished (i.e. make sure the CPU will not queue a new frame while this function is not finished).
+
+Expects that the node is spawned and all vMaterials have pipelines initialized.
+ +
+
+

Member Data Documentation

+ +

◆ aabb

+ +
+
+ + + + + +
+ + + + +
AABB ne::MeshNode::aabb
+
+private
+
+

Axis-aligned bounding box for meshData.

+ +
+
+ +

◆ bIsVisible

+ +
+
+ + + + + +
+ + + + +
bool ne::MeshNode::bIsVisible = true
+
+private
+
+

Whether mesh is visible or not.

+ +
+
+ +

◆ meshData

+ +
+
+ + + + + +
+ + + + +
MeshData ne::MeshNode::meshData
+
+private
+
+

Mesh geometry.

+
Warning
Use with mtxMeshData.
+ +
+
+ +

◆ mtxGpuResources

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, GpuResources> ne::MeshNode::mtxGpuResources
+
+private
+
+

Stores GPU resources used by this mesh node.
+

+ +
+
+ +

◆ mtxMeshData

+ +
+
+ + + + + +
+ + + + +
std::recursive_mutex ne::MeshNode::mtxMeshData
+
+private
+
+

Mutex for meshData.

+ +
+
+ +

◆ mtxShaderMeshDataConstants

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, MeshShaderConstants> ne::MeshNode::mtxShaderMeshDataConstants
+
+private
+
+

Stores data for constant buffer used by shaders.

+ +
+
+ +

◆ sMeshShaderConstantBufferName

+ +
+
+ + + + + +
+ + + + +
const auto ne::MeshNode::sMeshShaderConstantBufferName = "meshData"
+
+inlinestaticprivate
+
+

Name of the constant buffer used to store general mesh data in shaders.

+ +
+
+ +

◆ vMaterials

+ +
+
+ + + + + +
+ + + + +
std::vector<std::unique_ptr<Material> > ne::MeshNode::vMaterials
+
+private
+
+

Stores materials of the mesh. Material at index 0 used by index buffer 0, material at index 1 used by index buffer 1 and so on (meshData defines available slots).

+
Remarks
Always contains valid pointers.
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/game/nodes/MeshNode.h
  • +
  • src/engine_lib/private/game/nodes/MeshNode.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1MeshNode.js b/classne_1_1MeshNode.js new file mode 100644 index 000000000..51831fc3c --- /dev/null +++ b/classne_1_1MeshNode.js @@ -0,0 +1,43 @@ +var classne_1_1MeshNode = +[ + [ "GpuResources", "structne_1_1MeshNode_1_1GpuResources.html", "structne_1_1MeshNode_1_1GpuResources" ], + [ "MeshShaderConstants", "structne_1_1MeshNode_1_1MeshShaderConstants.html", "structne_1_1MeshNode_1_1MeshShaderConstants" ], + [ "MeshNode", "classne_1_1MeshNode.html#a6ed41a6566e750963f8cb3f8f5eb1963", null ], + [ "allocateGeometryBuffers", "classne_1_1MeshNode.html#a39074f6279baeea3d03794f4480d4c29", null ], + [ "allocateShaderResources", "classne_1_1MeshNode.html#a995527f60cf6160e427183e604ae9c89", null ], + [ "deallocateGeometryBuffers", "classne_1_1MeshNode.html#abee6b4fa44a505403f4255a2a3cdbc99", null ], + [ "deallocateShaderResources", "classne_1_1MeshNode.html#a6fd309b596dd9b63483f174af4f64b95", null ], + [ "getAABB", "classne_1_1MeshNode.html#a6295e3796e64c6fb4d4552e46cf9f14a", null ], + [ "getAvailableMaterialSlotCount", "classne_1_1MeshNode.html#a8911af4b77829e58ed0d59466d2ba18a", null ], + [ "getDefaultMaterial", "classne_1_1MeshNode.html#ad5c28bad20f7a24d30f248602ca9aff0", null ], + [ "getIndexBufferInfoForMaterialSlot", "classne_1_1MeshNode.html#a90ac0f144af7a1a9786a1be3684fc754", null ], + [ "getMaterial", "classne_1_1MeshNode.html#a83cb60dfc8713be834295480cbeb4414", null ], + [ "getMeshData", "classne_1_1MeshNode.html#a27eb0a143ae98c2419c2e5eef36df9cf", null ], + [ "getMeshGpuResources", "classne_1_1MeshNode.html#a3f15c8ce01a9270e58ab56518bfe7098", null ], + [ "getMeshShaderConstantBufferName", "classne_1_1MeshNode.html#ae2c7e2a2dcad5b88a2636e212ca87503", null ], + [ "getMeshShaderConstants", "classne_1_1MeshNode.html#aaea00de98b55c7e4a6f0ad6abe9db77f", null ], + [ "isVisible", "classne_1_1MeshNode.html#a4ec40629a5cb70acb3aa3172349e6440", null ], + [ "markShaderCpuWriteResourceToBeCopiedToGpu", "classne_1_1MeshNode.html#a7a8fe299045faa38a4ac4fa458753422", null ], + [ "onAfterDeserialized", "classne_1_1MeshNode.html#a453c3a079be0120c8c9fb7cd3a5a6899", null ], + [ "onDespawning", "classne_1_1MeshNode.html#a53861da301908fac9900bd11073b745f", null ], + [ "onFinishedUpdatingShaderMeshConstants", "classne_1_1MeshNode.html#a59ea8756566f5a6b8016e3f919050211", null ], + [ "onMeshDataChanged", "classne_1_1MeshNode.html#add9e3c1ba2be62c9f806bb2b7eae78e2", null ], + [ "onSpawning", "classne_1_1MeshNode.html#a7127ccc4f7cc62ab5f74583920ee93ee", null ], + [ "onStartedUpdatingShaderMeshConstants", "classne_1_1MeshNode.html#aaf06c681193ebc25c067b64e05f52871", null ], + [ "onWorldLocationRotationScaleChanged", "classne_1_1MeshNode.html#a74b459c63b02d3f8fa269ba17d93bf5e", null ], + [ "setIsVisible", "classne_1_1MeshNode.html#aaf28d800c9aaaaa16f20ff190a913667", null ], + [ "setMaterial", "classne_1_1MeshNode.html#a600afde2008f201682f59751d175efb7", null ], + [ "setMeshData", "classne_1_1MeshNode.html#a4e9fc27cf88ec1ec90d732b8fe71737c", null ], + [ "setMeshData", "classne_1_1MeshNode.html#a0d4e8cd51eaf440c9a77a715d8543e24", null ], + [ "setShaderCpuWriteResourceBinding", "classne_1_1MeshNode.html#adf53c8e5bcfdc8cbb3d1bc359ff01273", null ], + [ "setShaderTextureResourceBinding", "classne_1_1MeshNode.html#ac6098a2228cffcf6caadeaf98546bbda", null ], + [ "updateShaderResourcesToUseChangedMaterialPipelines", "classne_1_1MeshNode.html#a37d0fdab3342915497cdc86b00ba30ba", null ], + [ "aabb", "classne_1_1MeshNode.html#a07925fe6a2f63fd25e918018a31faeea", null ], + [ "bIsVisible", "classne_1_1MeshNode.html#a3cb4105e07d36b244e6cd374f86958b7", null ], + [ "meshData", "classne_1_1MeshNode.html#a3b250fb570ed3679ac1e52c84e6455a3", null ], + [ "mtxGpuResources", "classne_1_1MeshNode.html#a4f182285c84099513809acf961169c12", null ], + [ "mtxMeshData", "classne_1_1MeshNode.html#af5a5728de87baff4232c78322627435a", null ], + [ "mtxShaderMeshDataConstants", "classne_1_1MeshNode.html#afa524ac9c5eda6a9e704e833e804c69e", null ], + [ "sMeshShaderConstantBufferName", "classne_1_1MeshNode.html#a8c41558c27b79d1cb8cf9861769d2f68", null ], + [ "vMaterials", "classne_1_1MeshNode.html#adc328650dced2f8351ec6f702d7bb44d", null ] +]; \ No newline at end of file diff --git a/classne_1_1MeshNode.png b/classne_1_1MeshNode.png new file mode 100644 index 0000000000000000000000000000000000000000..e5ede1875bf034b774869862c3bbf0542e4ce040 GIT binary patch literal 1114 zcmeAS@N?(olHy`uVBq!ia0vp^DM0*#gBeKb&e$9Wq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB)lFzsbG9N_u;0^T0E}i zvn3z?o&O_>MP<>viv5R5ZhhIYisgin!})xR=XWw5IB_KEsBtQ?n93^@>YaFZJ<#*} z9UjGw*EToTKDny8YxRSyOU@^woU2~H719jS2%U0b>(Ya_i#Z%)u1}g%8*Py2ee>3g zJ*@&wPnJ#kwCHY9#~h>I8lJIN>nEBBuh-gXnHP2PV$iGV=kumyosvAY=<;P%vG1|_ zE1uptKRsjlt^L0QoB}?F3O%1A&BI`m!q{-}%mkg&ET?%+zLLnFsq}Nv%JbTI_8nDGS@}#@CGYQqob`M6+QpX09r`}WF=3E z1+tTqqKj9nh(|juU4Hhm$EP{9Wqi{-!;@WBw4I)ktQwnMczGg|rsm<_;d`c(RNrNp zz0_jas)cEy`Pwhd_Elc*{%-r$^7fCqol&069;#)&JJlaOxpLprHum?7l5KTo(n@ zxVTaM+;J=C+9_wA^QAL%|Do^V+71mQ;d>b!&0sZ@bV@#6xy{+m$pS+3w zch&5P81gkXET2vH_zq% z>(^Iru`ToZJwKyckRtP zmS4NoD= + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::MeshNodeGlslVertexFormatDescription Member List
+
+
+ +

This is the complete list of members for ne::MeshNodeGlslVertexFormatDescription, including all inherited members.

+ + + + + + + + + + + + + + +
createDescription(VertexFormat type)ne::GlslVertexFormatDescriptionstatic
ne::VertexFormatDescription::createDescription(VertexFormat type, Renderer *pRenderer)ne::VertexFormatDescriptionstatic
getVertexAttributeDescriptions() overridene::MeshNodeGlslVertexFormatDescriptionvirtual
getVertexBindingDescription() overridene::MeshNodeGlslVertexFormatDescriptionvirtual
getVertexBindingIndex()ne::GlslVertexFormatDescriptioninlineprotectedstatic
getVertexLayoutBindingIndexMacros() overridene::MeshNodeGlslVertexFormatDescriptionvirtual
GlslVertexFormatDescription()=default (defined in ne::GlslVertexFormatDescription)ne::GlslVertexFormatDescription
iVertexBindingIndexne::GlslVertexFormatDescriptionprivatestatic
MeshNodeGlslVertexFormatDescription()=default (defined in ne::MeshNodeGlslVertexFormatDescription)ne::MeshNodeGlslVertexFormatDescription
VertexFormatDescription()=default (defined in ne::VertexFormatDescription)ne::VertexFormatDescription
~GlslVertexFormatDescription() override=default (defined in ne::GlslVertexFormatDescription)ne::GlslVertexFormatDescriptionvirtual
~MeshNodeGlslVertexFormatDescription() override=default (defined in ne::MeshNodeGlslVertexFormatDescription)ne::MeshNodeGlslVertexFormatDescriptionvirtual
~VertexFormatDescription()=default (defined in ne::VertexFormatDescription)ne::VertexFormatDescriptionvirtual
+
+ + + + diff --git a/classne_1_1MeshNodeGlslVertexFormatDescription.html b/classne_1_1MeshNodeGlslVertexFormatDescription.html new file mode 100644 index 000000000..e1f7ec02d --- /dev/null +++ b/classne_1_1MeshNodeGlslVertexFormatDescription.html @@ -0,0 +1,245 @@ + + + + + + + +Nameless Engine: ne::MeshNodeGlslVertexFormatDescription Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::MeshNodeGlslVertexFormatDescription Class Reference
+
+
+ +

#include <MeshNodeGlslVertexFormatDescription.h>

+
+Inheritance diagram for ne::MeshNodeGlslVertexFormatDescription:
+
+
+ + +ne::GlslVertexFormatDescription +ne::VertexFormatDescription + +
+ + + + + + + + + + + + + + +

+Public Member Functions

virtual std::vector< std::string > getVertexLayoutBindingIndexMacros () override
 
virtual VkVertexInputBindingDescription getVertexBindingDescription () override
 
virtual std::vector< VkVertexInputAttributeDescription > getVertexAttributeDescriptions () override
 
virtual std::vector< std::string > getVertexLayoutBindingIndexMacros ()=0
 
virtual VkVertexInputBindingDescription getVertexBindingDescription ()=0
 
virtual std::vector< VkVertexInputAttributeDescription > getVertexAttributeDescriptions ()=0
 
+ + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from ne::GlslVertexFormatDescription
static std::unique_ptr< GlslVertexFormatDescriptioncreateDescription (VertexFormat type)
 
- Static Public Member Functions inherited from ne::VertexFormatDescription
static std::unique_ptr< VertexFormatDescriptioncreateDescription (VertexFormat type, Renderer *pRenderer)
 
- Static Protected Member Functions inherited from ne::GlslVertexFormatDescription
static constexpr uint32_t getVertexBindingIndex ()
 
+

Detailed Description

+

Describes vertex format used by MeshNode.

+

Member Function Documentation

+ +

◆ getVertexAttributeDescriptions()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< VkVertexInputAttributeDescription > ne::MeshNodeGlslVertexFormatDescription::getVertexAttributeDescriptions ()
+
+overridevirtual
+
+

Returns description of all vertex attributes.

+
Returns
Vertex attribute descriptions.
+ +

Implements ne::GlslVertexFormatDescription.

+ +
+
+ +

◆ getVertexBindingDescription()

+ +
+
+ + + + + +
+ + + + + + + +
VkVertexInputBindingDescription ne::MeshNodeGlslVertexFormatDescription::getVertexBindingDescription ()
+
+overridevirtual
+
+

Returns vertex description for vertex input binding.

+
Returns
Vertex input binding description.
+ +

Implements ne::GlslVertexFormatDescription.

+ +
+
+ +

◆ getVertexLayoutBindingIndexMacros()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< std::string > ne::MeshNodeGlslVertexFormatDescription::getVertexLayoutBindingIndexMacros ()
+
+overridevirtual
+
+

Returns an array of macros (related to vertex format) used in GLSL shader.

+
Returns
Array of macro names where index in the array means binding location (index).
+ +

Implements ne::GlslVertexFormatDescription.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classne_1_1MeshNodeGlslVertexFormatDescription.js b/classne_1_1MeshNodeGlslVertexFormatDescription.js new file mode 100644 index 000000000..cabfd1e9b --- /dev/null +++ b/classne_1_1MeshNodeGlslVertexFormatDescription.js @@ -0,0 +1,6 @@ +var classne_1_1MeshNodeGlslVertexFormatDescription = +[ + [ "getVertexAttributeDescriptions", "classne_1_1MeshNodeGlslVertexFormatDescription.html#a65f7f66712d541f94a4dc324c23514df", null ], + [ "getVertexBindingDescription", "classne_1_1MeshNodeGlslVertexFormatDescription.html#ae458552a60f544884103db619cd77c88", null ], + [ "getVertexLayoutBindingIndexMacros", "classne_1_1MeshNodeGlslVertexFormatDescription.html#aeb3fc391a22f440ff711df71364de7e0", null ] +]; \ No newline at end of file diff --git a/classne_1_1MeshNodeGlslVertexFormatDescription.png b/classne_1_1MeshNodeGlslVertexFormatDescription.png new file mode 100644 index 0000000000000000000000000000000000000000..ed2bdefdde258211ae4de1a6079f86db3c1239b7 GIT binary patch literal 1253 zcmeAS@N?(olHy`uVBq!ia0vp^|A4rIgBeJEFkZGFNJ$6ygt-3y{~ySF@#br3|Doj; z2ATyD)6cv(aNqz?Jb2RO6+k)8k|4ie1|S~{%$a6iVPIe>@N{tusbG9N_vNJ5T0AYY z%R;^0|37k_yPKtA=9xPuE#19#<}wStFn0Rcof;{&|B%z9IME*}FGCysC&hg={^5Cd zx8K!!^(vL?N`Ks2)tmQB<>$6K;rS~0Ar*2?wf%o}|7>~Zf6qs{{oUQ3ZQCDDs}7Nx zGH>s8%e?L1G`nNXKR#S^wtu6Lgs0tA=^yR~BzNqM^zHG=IhNL6IV11g8g;)V`$FVB z?XFqx&VTfB!kUr`UjzEhD(3~)Y@IT9$Nv-iJMy(d{BH4WG%L+0{!YyCf*KeoI0pXHyZytfb6upZ z)!$yc?R53qm48)kZ~ggpo=WAS+;!2b&7!8OoqYa_@87<8ao-K?JnyYI^Ht!L?6>DX zGVgZn$$#8c%{Ikk#mfo4=I7tO-SJdzD%;ZZ_qlzy*Vdj&y6#)EBjfX=zVe-4L;omm zJ9AAcYw@iOS6i2FyqWw?H(IKv`$?M8*QLKaKDqUm-`C0Ae)LI=lI29cU2?B3s`=M- zt-rQi_`Cei{|B!hJ>hnJ(!OOI+}8NY-jcDG7u$QF_4E2i{a2UWU)p8=)yDImrPFqY z>pukct*t$L(b|$@r_#+!-&y|W?6H2nzbRfjd-X-)HY5T%-=}}{{B-`x z?D`*#@;~bB?L7Cbr*Q-Xdujd@oz&40&bkjq#6Ft7@Se){{&v|bYu9diweD-`Gb6wK z|6N?pZ9Q9>ebw#tC8b5{v;WAvmHhY5=BWPS_~YV&I|FCFPJB0SX6T=g43Ra*&i}2n zKdpTJ4qLQ$u=wv~uO<~gL5UDA+1aJ17K(iqicHPSQH9foX&UY-M)`{l7^3@Z`=L&xA29_q&Z&fvHV{%E+@@>T>kad zlgk>%7~`)`-gJ0X{BhIYW@oQJB5CHT`E{Rm-co=2QGd?7C2{f7_?>ll52LmH9oNx<4g9?$AH=uRoNO{x8UT!4&WEWd79R8o`O& jh#+12Lv!hqu>XuRbQsUJ9JL4l7Dx=9u6{1-oD!M + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::MeshNodeHlslVertexFormatDescription Member List
+
+
+ +

This is the complete list of members for ne::MeshNodeHlslVertexFormatDescription, including all inherited members.

+ + + + + + + + + + + +
createDescription(VertexFormat type)ne::HlslVertexFormatDescriptionstatic
ne::VertexFormatDescription::createDescription(VertexFormat type, Renderer *pRenderer)ne::VertexFormatDescriptionstatic
getShaderInputElementDescription() overridene::MeshNodeHlslVertexFormatDescriptionvirtual
getVertexSemanticLocations() overridene::MeshNodeHlslVertexFormatDescriptionvirtual
HlslVertexFormatDescription()=default (defined in ne::HlslVertexFormatDescription)ne::HlslVertexFormatDescription
MeshNodeHlslVertexFormatDescription()=default (defined in ne::MeshNodeHlslVertexFormatDescription)ne::MeshNodeHlslVertexFormatDescription
VertexFormatDescription()=default (defined in ne::VertexFormatDescription)ne::VertexFormatDescription
~HlslVertexFormatDescription() override=default (defined in ne::HlslVertexFormatDescription)ne::HlslVertexFormatDescriptionvirtual
~MeshNodeHlslVertexFormatDescription() override=default (defined in ne::MeshNodeHlslVertexFormatDescription)ne::MeshNodeHlslVertexFormatDescriptionvirtual
~VertexFormatDescription()=default (defined in ne::VertexFormatDescription)ne::VertexFormatDescriptionvirtual
+
+ + + + diff --git a/classne_1_1MeshNodeHlslVertexFormatDescription.html b/classne_1_1MeshNodeHlslVertexFormatDescription.html new file mode 100644 index 000000000..801e4ec80 --- /dev/null +++ b/classne_1_1MeshNodeHlslVertexFormatDescription.html @@ -0,0 +1,209 @@ + + + + + + + +Nameless Engine: ne::MeshNodeHlslVertexFormatDescription Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::MeshNodeHlslVertexFormatDescription Class Reference
+
+
+ +

#include <MeshNodeHlslVertexFormatDescription.h>

+
+Inheritance diagram for ne::MeshNodeHlslVertexFormatDescription:
+
+
+ + +ne::HlslVertexFormatDescription +ne::VertexFormatDescription + +
+ + + + + + + + + + +

+Public Member Functions

virtual std::vector< std::string > getVertexSemanticLocations () override
 
virtual std::vector< D3D12_INPUT_ELEMENT_DESC > getShaderInputElementDescription () override
 
virtual std::vector< std::string > getVertexSemanticLocations ()=0
 
virtual std::vector< D3D12_INPUT_ELEMENT_DESC > getShaderInputElementDescription ()=0
 
+ + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from ne::HlslVertexFormatDescription
static std::unique_ptr< HlslVertexFormatDescriptioncreateDescription (VertexFormat type)
 
- Static Public Member Functions inherited from ne::VertexFormatDescription
static std::unique_ptr< VertexFormatDescriptioncreateDescription (VertexFormat type, Renderer *pRenderer)
 
+

Detailed Description

+

Describes vertex format used by MeshNode.

+

Member Function Documentation

+ +

◆ getShaderInputElementDescription()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< D3D12_INPUT_ELEMENT_DESC > ne::MeshNodeHlslVertexFormatDescription::getShaderInputElementDescription ()
+
+overridevirtual
+
+

Returns shader input layout description (vertex attribute description).

+
Returns
Input layout description.
+ +

Implements ne::HlslVertexFormatDescription.

+ +
+
+ +

◆ getVertexSemanticLocations()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< std::string > ne::MeshNodeHlslVertexFormatDescription::getVertexSemanticLocations ()
+
+overridevirtual
+
+

Returns information about vertex semantics used by shaders.

+
Returns
Array of semantics where index (in the array) describes semantic location.
+ +

Implements ne::HlslVertexFormatDescription.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classne_1_1MeshNodeHlslVertexFormatDescription.js b/classne_1_1MeshNodeHlslVertexFormatDescription.js new file mode 100644 index 000000000..86583888f --- /dev/null +++ b/classne_1_1MeshNodeHlslVertexFormatDescription.js @@ -0,0 +1,5 @@ +var classne_1_1MeshNodeHlslVertexFormatDescription = +[ + [ "getShaderInputElementDescription", "classne_1_1MeshNodeHlslVertexFormatDescription.html#ab73c3b0426fdb1b228f4b514ca40aa29", null ], + [ "getVertexSemanticLocations", "classne_1_1MeshNodeHlslVertexFormatDescription.html#a8bf54c5d9f0a07ced7270eb0e9ceae3f", null ] +]; \ No newline at end of file diff --git a/classne_1_1MeshNodeHlslVertexFormatDescription.png b/classne_1_1MeshNodeHlslVertexFormatDescription.png new file mode 100644 index 0000000000000000000000000000000000000000..7cb1cd6c0001fd9ca4d5521b0ace58f4c0e9e156 GIT binary patch literal 1224 zcmb7E`&ZHj6#r`Lg_XUwUO2aOl1z`SQk$9_3o|^ShOe9o9#>JCwIe#GBFt<@T@Mo=<$-qE5p^^s)Mm5U<@Br}oAFo8{@tEGY%PB>Es;p< z`Do^|T6=AE79k=Uu*Xa0@5mVjfKQ@v*pQf?9MlymrX0QIBIn20aE+}CC2n3-=z|K} zp{d`eSlGJ$pz9Y3pR$t)5W)$U7dy_Xj$a;(%X>aJjxzXF+-$$!qBK{$c{N0Hm6N+`K2gR?vfbk7zf+!c?&lfw|P;XV;G2IP^dGn(knC zxwk2=fL{F*ae%g(2#m+K>qtIQs9iTUUumw8hbdM9Ac6{L?@Cqzf{zeC_XzDx-w=?rm%6L`nVf&n#e0i!I9LXp; z&Iu5H3pdq}S>Ug9g5_vh^mrQ28f@UfbrOm5ZW7r@IJvcEVdP`4gDXK zo53{+tdTc1L(!kHVd?Q!KX`>vcB`cKejKShE_rwKGYW)MZ-5tU{^OTQl4?yYxjBp{ zXc~GSB2NAewmyXWD`hF^*(OoV)$5+JFQ-n;9FzVrf3_`S!jhKA|6YYsL|w`)y|>2? z8ZB5S2x2#AG{uG#sj>jKahq?l*d;;qDpg$8sjrf|-*I(0LAQ*~X1X1Q{(iAy%$v!2 z7Qu2)IL`k{6`e1s2{W0G^jJokea`FMf-hmW$9BiA6<~6Wjw-Hj&+|u zDQi)p!GUQRn`BKBYkj^3o1uL5x!eE&q*$2x%F^rAUeb%Hb!w4p*ukVjFNcB9^+$~Mp9A1RBe3-cQ!e}qh=hsb literal 0 HcmV?d00001 diff --git a/classne_1_1MessageBox-members.html b/classne_1_1MessageBox-members.html new file mode 100644 index 000000000..f67080a2b --- /dev/null +++ b/classne_1_1MessageBox-members.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::MessageBox Member List
+
+
+ +

This is the complete list of members for ne::MessageBox, including all inherited members.

+ + + + + +
error(const std::string &sTitle, const std::string &sText, MessageBoxChoice buttons=MessageBoxChoice::OK)ne::MessageBoxstatic
info(const std::string &sTitle, const std::string &sText, MessageBoxChoice buttons=MessageBoxChoice::OK)ne::MessageBoxstatic
question(const std::string &sTitle, const std::string &sText, MessageBoxChoice buttons=MessageBoxChoice::OK)ne::MessageBoxstatic
warning(const std::string &sTitle, const std::string &sText, MessageBoxChoice buttons=MessageBoxChoice::OK)ne::MessageBoxstatic
+
+ + + + diff --git a/classne_1_1MessageBox.html b/classne_1_1MessageBox.html new file mode 100644 index 000000000..b05c1f638 --- /dev/null +++ b/classne_1_1MessageBox.html @@ -0,0 +1,344 @@ + + + + + + + +Nameless Engine: ne::MessageBox Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::MessageBox Class Reference
+
+
+ +

#include <MessageBox.h>

+ + + + + + + + + + +

+Static Public Member Functions

static MessageBoxResult info (const std::string &sTitle, const std::string &sText, MessageBoxChoice buttons=MessageBoxChoice::OK)
 
static MessageBoxResult question (const std::string &sTitle, const std::string &sText, MessageBoxChoice buttons=MessageBoxChoice::OK)
 
static MessageBoxResult warning (const std::string &sTitle, const std::string &sText, MessageBoxChoice buttons=MessageBoxChoice::OK)
 
static MessageBoxResult error (const std::string &sTitle, const std::string &sText, MessageBoxChoice buttons=MessageBoxChoice::OK)
 
+

Detailed Description

+

Message box notification.

+

Member Function Documentation

+ +

◆ error()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
MessageBoxResult ne::MessageBox::error (const std::string & sTitle,
const std::string & sText,
MessageBoxChoice buttons = MessageBoxChoice::OK 
)
+
+static
+
+

Show an error message box.

+
Parameters
+ + + + +
sTitleTitle of the message box.
sTextText (content) of the message box.
buttonsAvailable buttons for this message box.
+
+
+
Returns
Button that the user pressed.
+
Note
This function blocks the current thread until a button is pressed.
+ +
+
+ +

◆ info()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
MessageBoxResult ne::MessageBox::info (const std::string & sTitle,
const std::string & sText,
MessageBoxChoice buttons = MessageBoxChoice::OK 
)
+
+static
+
+

Show an information message box.

+
Parameters
+ + + + +
sTitleTitle of the message box.
sTextText (content) of the message box.
buttonsAvailable buttons for this message box.
+
+
+
Returns
Button that the user pressed.
+
Note
This function blocks the current thread until a button is pressed.
+ +
+
+ +

◆ question()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
MessageBoxResult ne::MessageBox::question (const std::string & sTitle,
const std::string & sText,
MessageBoxChoice buttons = MessageBoxChoice::OK 
)
+
+static
+
+

Show a question message box.

+
Parameters
+ + + + +
sTitleTitle of the message box.
sTextText (content) of the message box.
buttonsAvailable buttons for this message box.
+
+
+
Returns
Button that the user pressed.
+
Note
This function blocks the current thread until a button is pressed.
+ +
+
+ +

◆ warning()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
MessageBoxResult ne::MessageBox::warning (const std::string & sTitle,
const std::string & sText,
MessageBoxChoice buttons = MessageBoxChoice::OK 
)
+
+static
+
+

Show a warning message box.

+
Parameters
+ + + + +
sTitleTitle of the message box.
sTextText (content) of the message box.
buttonsAvailable buttons for this message box.
+
+
+
Returns
Button that the user pressed.
+
Note
This function blocks the current thread until a button is pressed.
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/misc/MessageBox.h
  • +
  • src/engine_lib/private/misc/MessageBox.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1MessageBox.js b/classne_1_1MessageBox.js new file mode 100644 index 000000000..de3cd6a5c --- /dev/null +++ b/classne_1_1MessageBox.js @@ -0,0 +1,7 @@ +var classne_1_1MessageBox = +[ + [ "error", "classne_1_1MessageBox.html#ab902fd4c15bebf7d81d8898b0a0495dc", null ], + [ "info", "classne_1_1MessageBox.html#adb9a7ef1facd99643c8626eb894a13f6", null ], + [ "question", "classne_1_1MessageBox.html#ab51f9da3d779cbebab192bd3a4075c38", null ], + [ "warning", "classne_1_1MessageBox.html#ab0847393177d7c8c7413d4de291d2a7f", null ] +]; \ No newline at end of file diff --git a/classne_1_1Node-members.html b/classne_1_1Node-members.html new file mode 100644 index 000000000..56a979785 --- /dev/null +++ b/classne_1_1Node-members.html @@ -0,0 +1,210 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::Node Member List
+
+
+ +

This is the complete list of members for ne::Node, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addChildNode(const sgc::GcPtr< Node > &pNode, AttachmentRule locationRule=AttachmentRule::KEEP_WORLD, AttachmentRule rotationRule=AttachmentRule::KEEP_WORLD, AttachmentRule scaleRule=AttachmentRule::KEEP_WORLD)ne::Node
AttachmentRule enum namene::Node
bSerializene::Nodeprivate
createNotificationBroadcaster()ne::Nodeinlineprotected
createTimer(const std::string &sTimerName)ne::Nodeprotected
deserialize(const std::filesystem::path &pathToFile)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)ne::Serializablestatic
deserialize(std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, const std::string &sEntityId)ne::Serializablestatic
deserialize(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})ne::Serializablestatic
deserializeFromSection(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sSectionName, const std::string &sTypeGuid, const std::string &sEntityId, const std::optional< std::filesystem::path > &optionalPathToFile)ne::Serializableprivatestatic
deserializeMultiple(std::filesystem::path pathToFile)ne::Serializablestatic
deserializeNodeTree(const std::filesystem::path &pathToFile)ne::Nodestatic
despawn()ne::Nodeprivate
detachFromParentAndDespawn()ne::Node
enableTimer(Timer *pTimer, bool bEnable)ne::Nodeprivate
findValidWorld()ne::Nodeprivate
GameManager (defined in ne::Node)ne::Nodefriend
getActionEventBindings()ne::Nodeprotected
getAliveNodeCount()ne::Nodestatic
getAxisEventBindings()ne::Nodeprotected
getChildNodeOfType(const std::string &sChildNodeName="")ne::Node
getChildNodes()ne::Node
getClassForGuid(const std::string &sGuid)ne::Serializableprivatestatic
getClassForGuid(const rfk::Struct *pArchetypeToAnalyze, const std::string &sGuid)ne::Serializableprivatestatic
getGameInstance()ne::Nodestatic
getIdsFromFile(std::filesystem::path pathToFile)ne::Serializablestatic
getInformationForSerialization(size_t &iId, std::optional< size_t > iParentId)ne::Nodeprivate
getNodeId() constne::Node
getNodeName() constne::Node
getParentNode()ne::Node
getParentNodeOfType(const std::string &sParentNodeName="")ne::Node
getPathDeserializedFromRelativeToRes() constne::Serializable
getSpawnDespawnMutex()ne::Nodeprotected
getTickGroup() constne::Node
getWorldRootNode()ne::Node
iNodeIdne::Nodeprivate
isCalledEveryFrame()ne::Node
isChildOf(Node *pNode)ne::Node
isParentOf(Node *pNode)ne::Node
isReceivingInput()ne::Node
isSerialized() constne::Node
isSpawned()ne::Node
isTreeDeserializedFromOneFile(const std::string &sPathRelativeToRes)ne::Nodeprivate
lockChildren()ne::Nodeprivate
mtxBindedActionEventsne::Nodeprivate
mtxBindedAxisEventsne::Nodeprivate
mtxChildNodesne::Nodeprivate
mtxCreatedBroadcastersne::Nodeprivate
mtxCreatedTimersne::Nodeprivate
mtxIsCalledEveryFramene::Nodeprivate
mtxIsReceivingInputne::Nodeprivate
mtxIsSpawnedne::Nodeprivate
mtxParentNodene::Nodeprivate
Node()ne::Node
Node(const std::string &sName)ne::Node
Node(const Node &)=delete (defined in ne::Node)ne::Node
Node(Node &&)=delete (defined in ne::Node)ne::Node
notifyAboutAttachedToNewParent(bool bThisNodeBeingAttached)ne::Nodeprivate
notifyAboutDetachingFromParent(bool bThisNodeBeingDetached)ne::Nodeprivate
onAfterAttachedToNewParent(bool bThisNodeBeingAttached)ne::Nodeinlineprotectedvirtual
onAfterDeserialized()ne::Serializableinlineprotectedvirtual
onBeforeDetachedFromParent(bool bThisNodeBeingDetached)ne::Nodeinlineprotectedvirtual
onBeforeNewFrame(float timeSincePrevFrameInSec)ne::Nodeinlineprotectedvirtual
onChildNodesSpawned()ne::Nodeinlineprotectedvirtual
onDespawning()ne::Nodeinlineprotectedvirtual
onInputActionEvent(unsigned int iActionId, KeyboardModifiers modifiers, bool bIsPressedDown)ne::Nodeprivate
onInputAxisEvent(unsigned int iAxisEventId, KeyboardModifiers modifiers, float input)ne::Nodeprivate
onMouseMove(double xOffset, double yOffset)ne::Nodeinlineprotectedvirtual
onMouseScrollMove(int iOffset)ne::Nodeinlineprotectedvirtual
onSpawning()ne::Nodeinlineprotectedvirtual
operator=(const Node &)=delete (defined in ne::Node)ne::Node
operator=(Node &&)=delete (defined in ne::Node)ne::Node
pathDeserializedFromRelativeToResne::Serializableprivate
pWorldne::Nodeprivate
resolvePathToToml(std::filesystem::path &pathToFile)ne::Serializableprivatestatic
sCustomAttributePrefixne::Serializableprivatestatic
Serializable()=default (defined in ne::Serializable)ne::Serializable
serialize(std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})ne::Serializable
serialize(toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serialize(toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serializeMultiple(std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)ne::Serializablestatic
serializeNodeTree(const std::filesystem::path &pathToFile, bool bEnableBackup)ne::Node
setIsCalledEveryFrame(bool bEnable)ne::Nodeprotected
setIsReceivingInput(bool bEnable)ne::Nodeprotected
setNodeName(const std::string &sName)ne::Node
setSerialize(bool bSerialize)ne::Node
setTickGroup(TickGroup tickGroup)ne::Nodeprotected
sExternalNodeTreePathAttributeNamene::Nodeinlineprivatestatic
sNodeNamene::Nodeprivate
sNothingToSerializeKeyne::Serializableinlineprivatestatic
sParentNodeIdAttributeNamene::Nodeinlineprivatestatic
sPathRelativeToResKeyne::Serializableinlineprivatestatic
spawn()ne::Nodeprivate
sSubEntityFieldNameKeyne::Serializableinlineprivatestatic
tickGroupne::Nodeprivate
unlockChildren()ne::Nodeprivate
World (defined in ne::Node)ne::Nodefriend
~Node() overridene::Nodevirtual
~Serializable() override=default (defined in ne::Serializable)ne::Serializablevirtual
+
+ + + + diff --git a/classne_1_1Node.html b/classne_1_1Node.html new file mode 100644 index 000000000..206bcdad2 --- /dev/null +++ b/classne_1_1Node.html @@ -0,0 +1,2448 @@ + + + + + + + +Nameless Engine: ne::Node Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <Node.h>

+
+Inheritance diagram for ne::Node:
+
+
+ + +ne::Serializable +ne::EnvironmentNode +ne::SpatialNode +ne::CameraNode +ne::DirectionalLightNode +ne::MeshNode +ne::PointLightNode +ne::SpotlightNode +ne::EditorCameraNode + +
+ + + + +

+Classes

struct  SerializableObjectInformationWithGcPointer
 
+ + + +

+Public Types

enum class  AttachmentRule { RESET_RELATIVE +, KEEP_RELATIVE +, KEEP_WORLD + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Node ()
 
 Node (const std::string &sName)
 
Node (const Node &)=delete
 
+Nodeoperator= (const Node &)=delete
 
Node (Node &&)=delete
 
+Nodeoperator= (Node &&)=delete
 
virtual ~Node () override
 
void setNodeName (const std::string &sName)
 
void detachFromParentAndDespawn ()
 
void addChildNode (const sgc::GcPtr< Node > &pNode, AttachmentRule locationRule=AttachmentRule::KEEP_WORLD, AttachmentRule rotationRule=AttachmentRule::KEEP_WORLD, AttachmentRule scaleRule=AttachmentRule::KEEP_WORLD)
 
void setSerialize (bool bSerialize)
 
std::optional< ErrorserializeNodeTree (const std::filesystem::path &pathToFile, bool bEnableBackup)
 
std::string getNodeName () const
 
sgc::GcPtr< NodegetWorldRootNode ()
 
std::pair< std::recursive_mutex, sgc::GcPtr< Node > > * getParentNode ()
 
std::pair< std::recursive_mutex, sgc::GcVector< sgc::GcPtr< Node > > > * getChildNodes ()
 
template<typename NodeType >
+requires std::derived_from<NodeType, Node>
sgc::GcPtr< NodeType > getParentNodeOfType (const std::string &sParentNodeName="")
 
template<typename NodeType >
+requires std::derived_from<NodeType, Node>
sgc::GcPtr< NodeType > getChildNodeOfType (const std::string &sChildNodeName="")
 
TickGroup getTickGroup () const
 
std::optional< size_t > getNodeId () const
 
bool isCalledEveryFrame ()
 
bool isReceivingInput ()
 
bool isSpawned ()
 
bool isParentOf (Node *pNode)
 
bool isChildOf (Node *pNode)
 
bool isSerialized () const
 
- Public Member Functions inherited from ne::Serializable
std::optional< Errorserialize (std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})
 
std::variant< std::string, Errorserialize (toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::variant< std::string, Errorserialize (toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::optional< std::pair< std::string, std::string > > getPathDeserializedFromRelativeToRes () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static size_t getAliveNodeCount ()
 
static std::variant< sgc::GcPtr< Node >, ErrordeserializeNodeTree (const std::filesystem::path &pathToFile)
 
static GameInstancegetGameInstance ()
 
- Static Public Member Functions inherited from ne::Serializable
static std::variant< std::pair< std::set< std::string >, toml::value >, ErrorgetIdsFromFile (std::filesystem::path pathToFile)
 
static std::optional< ErrorserializeMultiple (std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::same_as<SmartPointer, sgc::GcPtr<Serializable>> || std::same_as<SmartPointer, std::unique_ptr<Serializable>>
static std::variant< std::vector< DeserializedObjectInformation< SmartPointer > >, ErrordeserializeMultiple (std::filesystem::path pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

void setIsCalledEveryFrame (bool bEnable)
 
void setTickGroup (TickGroup tickGroup)
 
void setIsReceivingInput (bool bEnable)
 
TimercreateTimer (const std::string &sTimerName)
 
template<typename FunctionType >
NodeNotificationBroadcaster< FunctionType > * createNotificationBroadcaster ()
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, bool)> > > * getActionEventBindings ()
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, float)> > > * getAxisEventBindings ()
 
std::recursive_mutex * getSpawnDespawnMutex ()
 
virtual void onMouseMove (double xOffset, double yOffset)
 
virtual void onMouseScrollMove (int iOffset)
 
virtual void onBeforeNewFrame (float timeSincePrevFrameInSec)
 
virtual void onSpawning ()
 
virtual void onChildNodesSpawned ()
 
virtual void onDespawning ()
 
virtual void onBeforeDetachedFromParent (bool bThisNodeBeingDetached)
 
virtual void onAfterAttachedToNewParent (bool bThisNodeBeingAttached)
 
- Protected Member Functions inherited from ne::Serializable
virtual void onAfterDeserialized ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

bool enableTimer (Timer *pTimer, bool bEnable)
 
void onInputActionEvent (unsigned int iActionId, KeyboardModifiers modifiers, bool bIsPressedDown)
 
void onInputAxisEvent (unsigned int iAxisEventId, KeyboardModifiers modifiers, float input)
 
void spawn ()
 
void despawn ()
 
void notifyAboutAttachedToNewParent (bool bThisNodeBeingAttached)
 
void notifyAboutDetachingFromParent (bool bThisNodeBeingDetached)
 
WorldfindValidWorld ()
 
std::variant< std::vector< SerializableObjectInformationWithGcPointer >, ErrorgetInformationForSerialization (size_t &iId, std::optional< size_t > iParentId)
 
bool isTreeDeserializedFromOneFile (const std::string &sPathRelativeToRes)
 
void lockChildren ()
 
void unlockChildren ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::string sNodeName
 
std::pair< std::recursive_mutex, sgc::GcVector< sgc::GcPtr< Node > > > mtxChildNodes
 
std::pair< std::recursive_mutex, sgc::GcPtr< Node > > mtxParentNode
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, bool)> > > mtxBindedActionEvents
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, float)> > > mtxBindedAxisEvents
 
std::pair< std::recursive_mutex, std::vector< std::unique_ptr< Timer > > > mtxCreatedTimers
 
std::pair< std::recursive_mutex, std::vector< std::unique_ptr< NodeNotificationBroadcasterBase > > > mtxCreatedBroadcasters
 
std::pair< std::recursive_mutex, bool > mtxIsSpawned
 
std::pair< std::recursive_mutex, bool > mtxIsCalledEveryFrame
 
std::pair< std::recursive_mutex, bool > mtxIsReceivingInput
 
WorldpWorld = nullptr
 
TickGroup tickGroup = TickGroup::FIRST
 
std::optional< size_t > iNodeId
 
bool bSerialize = true
 
+ + + + + +

+Static Private Attributes

static const auto sParentNodeIdAttributeName = "parent_node_id"
 
static const auto sExternalNodeTreePathAttributeName
 
+ + + + + +

+Friends

+class GameManager
 
+class World
 
+

Detailed Description

+

Base class for nodes, allows being spawned in the world, attaching child nodes or being attached to some parent node.

+

Member Enumeration Documentation

+ +

◆ AttachmentRule

+ +
+
+ + + + + +
+ + + + +
enum class ne::Node::AttachmentRule
+
+strong
+
+

Defines how location, rotation or scale of a node being attached as a child node should change after the attachment process (after onAfterAttachedToNewParent was called).

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Node() [1/2]

+ +
+
+ + + + + + + +
ne::Node::Node ()
+
+

Creates a new node with a default name.

+ +
+
+ +

◆ Node() [2/2]

+ +
+
+ + + + + + + + +
ne::Node::Node (const std::string & sName)
+
+

Creates a new node with the specified name.

+
Parameters
+ + +
sNameName of this node.
+
+
+ +
+
+ +

◆ ~Node()

+ +
+
+ + + + + +
+ + + + + + + +
ne::Node::~Node ()
+
+overridevirtual
+
+

Logs destruction in debug builds.

+ +
+
+

Member Function Documentation

+ +

◆ addChildNode()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ne::Node::addChildNode (const sgc::GcPtr< Node > & pNode,
AttachmentRule locationRule = AttachmentRule::KEEP_WORLD,
AttachmentRule rotationRule = AttachmentRule::KEEP_WORLD,
AttachmentRule scaleRule = AttachmentRule::KEEP_WORLD 
)
+
+

Attaches a node as a child of this node.

+
Remarks
If the specified node already has a parent it will change its parent to be a child of this node. This way you can change to which node you are attached.
+
+If the specified node needs to be spawned it will queue a deferred task to be added to the World on next frame so input events and onBeforeNewFrame (if enabled) will be called only starting from the next frame.
+
Parameters
+ + + + + +
pNodeNode to attach as a child. If the specified node is a parent of this node the operation will fail and log an error.
locationRuleOnly applied if the child node is a SpatialNode, otherwise ignored. Defines how child node's location should change after the attachment process (after onAfterAttachedToNewParent was called)
rotationRuleOnly applied if the child node is a SpatialNode, otherwise ignored. Defines how child node's rotation should change after the attachment process (after onAfterAttachedToNewParent was called)
scaleRuleOnly applied if the child node is a SpatialNode, otherwise ignored. Defines how child node's scale should change after the attachment process (after onAfterAttachedToNewParent was called)
+
+
+ +
+
+ +

◆ createNotificationBroadcaster()

+ +
+
+
+template<typename FunctionType >
+ + + + + +
+ + + + + + + +
NodeNotificationBroadcaster< FunctionType > * ne::Node::createNotificationBroadcaster ()
+
+inlineprotected
+
+

Creates a new notification broadcaster that only accepts callbacks of the specified type.

+

Example:

// inside of your Node derived class:
+
auto pBroadcaster = createNotificationBroadcaster<void(bool)>();
+
// save broadcaster pointer somewhere
+
+
// ...
+
+
// Subscribe.
+
pBroadcaster->subscribe(NodeFunction<void(bool)>(getNodeId().value(), [](bool bParameter){
+
// callback logic ...
+
});
+
+
// Notify.
+
pBroadcaster->broadcast(true);
+
Definition: NodeFunction.hpp:11
+
std::optional< size_t > getNodeId() const
Definition: Node.cpp:1003
+
Warning
Do not free (delete) returned pointer.
+
+Do not use returned pointer outside of this node object as the broadcaster is only guaranteed to live while the node (that created the broadcaster) is living.
+
Remarks
Note that although you can create broadcasters while the node is despawned or was not spawned yet any attempt to broadcast the notification will be ignored and will do nothing.
+
Returns
A non-owning pointer to the created broadcaster that is guaranteed to be valid while this node object is alive (i.e. even valid when despawned).
+ +
+
+ +

◆ createTimer()

+ +
+
+ + + + + +
+ + + + + + + + +
Timer * ne::Node::createTimer (const std::string & sTimerName)
+
+protected
+
+

Creates a new timer and saves it inside of this node to be used while the node is spawned.

+
Warning
Do not free (delete) returned pointer.
+
+Do not use returned pointer outside of this node object as the timer is only guaranteed to live while the node (that created the timer) is living.
+
Remarks
Note that although you can create timers while the node is despawned or was not spawned yet any attempt to start a timer while the node is despawned (or not spawned yet) will result in an error being logged.
+
+This function exists to add some protection code to not shoot yourself in the foot, such as: Node will automatically stop and disable created timers before onDespawning is called by using Timer::stop(true) so that you don't have to remember to stop created timers. Moreover, if you are using a callback function for the timer's timeout event it's guaranteed that this callback function will only be called while the node is spawned.
+
+There is no removeTimer function but it may appear in the future (although there's really no point in removing a timer so don't care about it).
+
Parameters
+ + +
sTimerNameName of this timer (used for logging). Don't add "timer" word to your timer's name as it will be appended in the logs.
+
+
+
Returns
nullptr if something went wrong, otherwise a non-owning pointer to the created timer that is guaranteed to be valid while this node object is alive (i.e. even valid when despawned).
+ +
+
+ +

◆ deserializeNodeTree()

+ +
+
+ + + + + +
+ + + + + + + + +
std::variant< sgc::GcPtr< Node >, Error > ne::Node::deserializeNodeTree (const std::filesystem::path & pathToFile)
+
+static
+
+

Deserializes a node and all its child nodes (hierarchy information) from a file.

+
Parameters
+ + +
pathToFileFile to read a node tree from. The ".toml" extension will be added automatically if not specified in the path.
+
+
+
Returns
Error if something went wrong, otherwise pointer to the root node.
+ +
+
+ +

◆ despawn()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Node::despawn ()
+
+private
+
+

Calls onDespawning on this node and all of its child nodes.

+ +
+
+ +

◆ detachFromParentAndDespawn()

+ +
+
+ + + + + + + +
void ne::Node::detachFromParentAndDespawn ()
+
+

Detaches this node from the parent and optionally despawns this node and all of its child nodes if the node was spawned.

+
Remarks
This function is usually used to mark node (tree) as "to be destroyed", if you just want to change node's parent consider using addChildNode.
+
+The node and its child nodes are not guaranteed to be deleted after this function is finished. Deletion is handled automatically by gc pointers.
+ +
+
+ +

◆ enableTimer()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool ne::Node::enableTimer (TimerpTimer,
bool bEnable 
)
+
+private
+
+

Enables the specified timer and sets a callback validator or stops and disables the timer.

+
Remarks
Does nothing if the timer is already in the requested state.
+
Parameters
+ + + +
pTimerTimer to enable/disable.
bEnableNew timer state to set.
+
+
+
Returns
false if successful, true otherwise.
+ +
+
+ +

◆ findValidWorld()

+ +
+
+ + + + + +
+ + + + + + + +
World * ne::Node::findValidWorld ()
+
+private
+
+

Checks if this node has a valid world pointer and if not asks this node's parent and goes up the node hierarchy up to the root node if needed to find valid pointer to world.

+
Returns
World.
+ +
+
+ +

◆ getActionEventBindings()

+ +
+
+ + + + + +
+ + + + + + + +
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, bool)> > > * ne::Node::getActionEventBindings ()
+
+protected
+
+

Returns map of action events that this node is binded to (must be used with mutex). Binded callbacks will be automatically called when an action event is triggered.

+
Remarks
Input events will be only triggered if the node is spawned.
+
+Input events will not be called if setIsReceivingInput was not enabled.
+
+Only events in GameInstance's InputManager (GameInstance::getInputManager) will be considered to trigger events in the node.
+

Example:

const auto iForwardActionId = 0;
+
const auto pActionEvents = getActionEventBindings();
+
+
std::scoped_lock guard(pActionEvents->first);
+
pActionEvents->second[iForwardActionId] = [&](KeyboardModifiers modifiers, bool bIsPressedDown) {
+
moveForward(modifiers, bIsPressedDown);
+
};
+
Definition: KeyboardKey.hpp:10
+
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, bool)> > > * getActionEventBindings()
Definition: Node.cpp:910
+
Returns
Binded action events.
+ +
+
+ +

◆ getAliveNodeCount()

+ +
+
+ + + + + +
+ + + + + + + +
size_t ne::Node::getAliveNodeCount ()
+
+static
+
+

Returns the total amount of currently alive (allocated) nodes.

+
Returns
Number of alive nodes right now.
+ +
+
+ +

◆ getAxisEventBindings()

+ +
+
+ + + + + +
+ + + + + + + +
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, float)> > > * ne::Node::getAxisEventBindings ()
+
+protected
+
+

Returns map of axis events that this node is binded to (must be used with mutex). Binded callbacks will be automatically called when an axis event is triggered.

+
Remarks
Input events will be only triggered if the node is spawned.
+
+Input events will not be called if setIsReceivingInput was not enabled.
+
+Only events in GameInstance's InputManager (GameInstance::getInputManager) will be considered to trigger events in the node.
+

Example:

const auto iForwardAxisEventId = 0;
+
const auto pAxisEvents = getAxisEventBindings();
+
+
std::scoped_lock guard(pAxisEvents->first);
+
pAxisEvents->second[iForwardAxisEventId] = [&](KeyboardModifiers modifiers, float input) {
+
moveForward(modifiers, input);
+
};
+
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, float)> > > * getAxisEventBindings()
Definition: Node.cpp:917
+
Remarks
Input parameter is a value in range [-1.0f; 1.0f] that describes input.
+
Returns
Binded action events.
+ +
+
+ +

◆ getChildNodeOfType()

+ +
+
+
+template<typename NodeType >
+requires std::derived_from<NodeType, Node>
+ + + + + + + + +
sgc::GcPtr< NodeType > ne::Node::getChildNodeOfType (const std::string & sChildNodeName = "")
+
+

Goes down the child node chain to find a first node that matches the specified node type and optionally node name.

+

Template parameter NodeType specifies node type to look for. Note that this means that we will use dynamic_cast to determine whether the node matches the specified type or not. So if you are looking for a node with the type Node this means that every node will match the type.

+
Parameters
+ + +
sChildNodeNameIf not empty, nodes that match the specified node type will also be checked to see if their name exactly matches the specified name.
+
+
+
Returns
nullptr if not found, otherwise a valid pointer to the node.
+ +
+
+ +

◆ getChildNodes()

+ +
+
+ + + + + + + +
std::pair< std::recursive_mutex, sgc::GcVector< sgc::GcPtr< Node > > > * ne::Node::getChildNodes ()
+
+

Returns pointer to child nodes array.

+
Warning
Must be used with mutex.
+
+Avoid saving returned raw pointer as it points to the node's field and does not guarantee that the node will always live while you hold this pointer. Returning raw pointer in order to avoid creating GC pointers (if you for example only want to iterate over child nodes there's no point in returning GC vector), but you can always save returned GC vector or GC pointers to child nodes if you need.
+
Returns
Array of child nodes.
+ +
+
+ +

◆ getGameInstance()

+ +
+
+ + + + + +
+ + + + + + + +
GameInstance * ne::Node::getGameInstance ()
+
+static
+
+

Returns last created game instance.

+
Returns
Game instance.
+ +
+
+ +

◆ getInformationForSerialization()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::variant< std::vector< Node::SerializableObjectInformationWithGcPointer >, Error > ne::Node::getInformationForSerialization (size_t & iId,
std::optional< size_t > iParentId 
)
+
+private
+
+

Collects and returns information for serialization for self and all child nodes.

+
Parameters
+ + + +
iIdID for serialization to use (will be incremented).
iParentIdParent's serialization ID (if this node has a parent and it will also be serialized).
+
+
+
Returns
Error if something went wrong, otherwise an array of collected information that can be serialized.
+ +
+
+ +

◆ getNodeId()

+ +
+
+ + + + + + + +
std::optional< size_t > ne::Node::getNodeId () const
+
+

Returns a unique ID of the node.

+
Remarks
Each spawn gives the node a new ID.
+
Returns
Empty if this node was never spawned, otherwise unique ID of this node.
+ +
+
+ +

◆ getNodeName()

+ +
+
+ + + + + + + +
std::string ne::Node::getNodeName () const
+
+

Returns node's name.

+
Returns
Node name.
+ +
+
+ +

◆ getParentNode()

+ +
+
+ + + + + + + +
std::pair< std::recursive_mutex, sgc::GcPtr< Node > > * ne::Node::getParentNode ()
+
+

Returns parent node if this node.

+
Warning
Must be used with mutex.
+
+Avoid saving returned raw pointer as it points to the node's field and does not guarantee that the node will always live while you hold this pointer. Returning raw pointer in order to avoid creating GC pointers (if you for example only want to check the parent node there's no point in returning a gc pointer), but you can always save returned GC pointer to node's parent if you need.
+
Returns
nullptr as a gc pointer (second value in the pair) if this node has no parent (could only happen when the node is not spawned), otherwise valid gc pointer.
+ +
+
+ +

◆ getParentNodeOfType()

+ +
+
+
+template<typename NodeType >
+requires std::derived_from<NodeType, Node>
+ + + + + + + + +
sgc::GcPtr< NodeType > ne::Node::getParentNodeOfType (const std::string & sParentNodeName = "")
+
+

Goes up the parent node chain (up to the world's root node if needed) to find a first node that matches the specified node type and optionally node name.

+

Template parameter NodeType specifies node type to look for. Note that this means that we will use dynamic_cast to determine whether the node matches the specified type or not. So if you are looking for a node with the type Node this means that every node will match the type.

+
Parameters
+ + +
sParentNodeNameIf not empty, nodes that match the specified node type will also be checked to see if their name exactly matches the specified name.
+
+
+
Returns
nullptr if not found, otherwise a valid pointer to the node.
+ +
+
+ +

◆ getSpawnDespawnMutex()

+ +
+
+ + + + + +
+ + + + + + + +
std::recursive_mutex * ne::Node::getSpawnDespawnMutex ()
+
+protected
+
+

Returns mutex that is generally used to protect/prevent spawning/despawning.

+
Remarks
Do not delete (free) returned pointer.
+
Returns
Mutex.
+ +
+
+ +

◆ getTickGroup()

+ +
+
+ + + + + + + +
TickGroup ne::Node::getTickGroup () const
+
+

Returns the tick group this node resides in.

+
Returns
Tick group the node is using.
+ +
+
+ +

◆ getWorldRootNode()

+ +
+
+ + + + + + + +
sgc::GcPtr< Node > ne::Node::getWorldRootNode ()
+
+

Returns world's root node.

+
Returns
nullptr if this node is not spawned or was despawned or world is being destroyed (always check returned pointer before doing something), otherwise valid pointer.
+ +
+
+ +

◆ isCalledEveryFrame()

+ +
+
+ + + + + + + +
bool ne::Node::isCalledEveryFrame ()
+
+

Returns whether the onBeforeNewFrame should be called each frame or not.

+
Returns
Whether the onBeforeNewFrame should be called each frame or not.
+ +
+
+ +

◆ isChildOf()

+ +
+
+ + + + + + + + +
bool ne::Node::isChildOf (NodepNode)
+
+

Checks if the specified node is a parent of this node (somewhere in the parent hierarchy, not only as a direct parent node).

+
Parameters
+ + +
pNodeNode to check.
+
+
+
Returns
true if the specified node was found as a parent of this node, false otherwise.
+ +
+
+ +

◆ isParentOf()

+ +
+
+ + + + + + + + +
bool ne::Node::isParentOf (NodepNode)
+
+

Checks if the specified node is a child of this node (somewhere in the child hierarchy, not only as a direct child node).

+
Parameters
+ + +
pNodeNode to check.
+
+
+
Returns
true if the specified node was found as a child of this node, false otherwise.
+ +
+
+ +

◆ isReceivingInput()

+ +
+
+ + + + + + + +
bool ne::Node::isReceivingInput ()
+
+

Returns whether this node receives input or not.

+
Returns
Whether this node receives input or not.
+ +
+
+ +

◆ isSerialized()

+ +
+
+ + + + + + + +
bool ne::Node::isSerialized () const
+
+

Tells whether or not this node (and node's child nodes) will be serialized as part of a node tree.

+
Returns
false if this node and its child nodes will be ignored when being serialized as part of a node tree, true otherwise.
+ +
+
+ +

◆ isSpawned()

+ +
+
+ + + + + + + +
bool ne::Node::isSpawned ()
+
+

Returns whether this node is spawned in the world or not.

+
Returns
Whether this node is spawned in the world or not.
+ +
+
+ +

◆ isTreeDeserializedFromOneFile()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ne::Node::isTreeDeserializedFromOneFile (const std::string & sPathRelativeToRes)
+
+private
+
+

Checks if this node and all child nodes were deserialized from the same file (i.e. checks if this node tree is located in one file).

+
Parameters
+ + +
sPathRelativeToResPath relative to the res directory to the file to check, example: game/test.toml.
+
+
+
Returns
false if this node or some child node(s) were deserialized from other file or if some nodes we not deserialized previously, otherwise true.
+ +
+
+ +

◆ lockChildren()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Node::lockChildren ()
+
+private
+
+

Locks mtxChildNodes mutex for self and recursively for all children.

+

After a node with children was locked this makes the whole node tree to be frozen (hierarchy can't be changed).

+

Use unlockChildren for unlocking the tree.

+ +
+
+ +

◆ notifyAboutAttachedToNewParent()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::Node::notifyAboutAttachedToNewParent (bool bThisNodeBeingAttached)
+
+private
+
+

Calls onAfterAttachedToNewParent on this node and all of its child nodes.

+
Parameters
+ + +
bThisNodeBeingAttachedtrue if this node was attached to a parent, false if some node in the parent hierarchy was attached to a parent.
+
+
+ +
+
+ +

◆ notifyAboutDetachingFromParent()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::Node::notifyAboutDetachingFromParent (bool bThisNodeBeingDetached)
+
+private
+
+

Calls onBeforeDetachedFromParent on this node and all of its child nodes.

+
Parameters
+ + +
bThisNodeBeingDetachedtrue if this node is being detached from its parent, false if some node in the parent hierarchy is being detached from its parent.
+
+
+ +
+
+ +

◆ onAfterAttachedToNewParent()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void ne::Node::onAfterAttachedToNewParent (bool bThisNodeBeingAttached)
+
+inlineprotectedvirtual
+
+

Called after this node or one of the node's parents (in the parent hierarchy) was attached to a new parent node.

+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+
Remarks
This function will also be called on all child nodes after this function is finished.
+
Parameters
+ + +
bThisNodeBeingAttachedtrue if this node was attached to a parent, false if some node in the parent hierarchy was attached to a parent.
+
+
+ +

Reimplemented in ne::EditorCameraNode, and ne::SpatialNode.

+ +
+
+ +

◆ onBeforeDetachedFromParent()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void ne::Node::onBeforeDetachedFromParent (bool bThisNodeBeingDetached)
+
+inlineprotectedvirtual
+
+

Called before this node or one of the node's parents (in the parent hierarchy) is about to be detached from the current parent node.

+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+
Remarks
If this node is being detached from its parent getParentNode will return nullptr after this function is finished.
+
+This function will also be called on all child nodes after this function is finished.
+
Parameters
+ + +
bThisNodeBeingDetachedtrue if this node is being detached from its parent, false if some node in the parent hierarchy is being detached from its parent.
+
+
+ +
+
+ +

◆ onBeforeNewFrame()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void ne::Node::onBeforeNewFrame (float timeSincePrevFrameInSec)
+
+inlineprotectedvirtual
+
+

Called before a new frame is rendered.

+
Remarks
This function is disabled by default, use setIsCalledEveryFrame to enable it.
+
+This function will only be called while this node is spawned.
+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic (if there is any).
+
Parameters
+ + +
timeSincePrevFrameInSecAlso known as deltatime - time in seconds that has passed since the last frame was rendered.
+
+
+ +

Reimplemented in ne::EditorCameraNode.

+ +
+
+ +

◆ onChildNodesSpawned()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void ne::Node::onChildNodesSpawned ()
+
+inlineprotectedvirtual
+
+

Called after onSpawning when this node and all of node's child nodes (at the moment of spawning) were spawned.

+
Remarks
Generally you might want to prefer to use onSpawning, this function is mostly used to do some logic related to child nodes after all child nodes were spawned (for example if you have a camera child node you can make it active in this function).
+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +
+
+ +

◆ onDespawning()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void ne::Node::onDespawning ()
+
+inlineprotectedvirtual
+
+

Called before this node is despawned from the world to execute custom despawn logic.

+
Remarks
This node will be marked as despawned after this function is called.
+
+This function is called after all child nodes were despawned.
+
+getSpawnDespawnMutex is locked while this function is called.
+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +

Reimplemented in ne::CameraNode, ne::EnvironmentNode, ne::DirectionalLightNode, ne::PointLightNode, ne::SpotlightNode, and ne::MeshNode.

+ +
+
+ +

◆ onInputActionEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::Node::onInputActionEvent (unsigned int iActionId,
KeyboardModifiers modifiers,
bool bIsPressedDown 
)
+
+private
+
+

Called when a window that owns this game instance receives user input and the input key exists as an action event in the InputManager.

+
Remarks
This function will not be called if setIsReceivingInput was not enabled.
+
+This function will only be called while this node is spawned.
+
Parameters
+ + + + +
iActionIdUnique ID of the input action event (from input manager).
modifiersKeyboard modifier keys.
bIsPressedDownWhether the key down event occurred or key up.
+
+
+ +
+
+ +

◆ onInputAxisEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::Node::onInputAxisEvent (unsigned int iAxisEventId,
KeyboardModifiers modifiers,
float input 
)
+
+private
+
+

Called when a window that owns this game instance receives user input and the input key exists as an axis event in the InputManager.

+
Remarks
This function will not be called if setIsReceivingInput was not enabled.
+
+This function will only be called while this node is spawned.
+
Parameters
+ + + + +
iAxisEventIdUnique ID of the input axis event (from input manager).
modifiersKeyboard modifier keys.
inputA value in range [-1.0f; 1.0f] that describes input.
+
+
+ +
+
+ +

◆ onMouseMove()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void ne::Node::onMouseMove (double xOffset,
double yOffset 
)
+
+inlineprotectedvirtual
+
+

Called when the window received mouse movement.

+
Remarks
This function will not be called if setIsReceivingInput was not enabled.
+
+This function will only be called while this node is spawned.
+
Parameters
+ + + +
xOffsetMouse X movement delta in pixels (plus if moved to the right, minus if moved to the left).
yOffsetMouse Y movement delta in pixels (plus if moved up, minus if moved down).
+
+
+ +

Reimplemented in ne::EditorCameraNode.

+ +
+
+ +

◆ onMouseScrollMove()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void ne::Node::onMouseScrollMove (int iOffset)
+
+inlineprotectedvirtual
+
+

Called when the window receives mouse scroll movement.

+
Remarks
This function will not be called if setIsReceivingInput was not enabled.
+
+This function will only be called while this node is spawned.
+
Parameters
+ + +
iOffsetMovement offset.
+
+
+ +
+
+ +

◆ onSpawning()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void ne::Node::onSpawning ()
+
+inlineprotectedvirtual
+
+

Called when this node was not spawned previously and it was either attached to a parent node that is spawned or set as world's root node to execute custom spawn logic.

+
Remarks
This node will be marked as spawned before this function is called.
+
+getSpawnDespawnMutex is locked while this function is called.
+
+This function is called before any of the child nodes are spawned. If you need to do some logic after child nodes are spawned use onChildNodesSpawned.
+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +

Reimplemented in ne::EnvironmentNode, ne::DirectionalLightNode, ne::PointLightNode, ne::SpotlightNode, ne::MeshNode, and ne::SpatialNode.

+ +
+
+ +

◆ serializeNodeTree()

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::Node::serializeNodeTree (const std::filesystem::path & pathToFile,
bool bEnableBackup 
)
+
+

Serializes the node and all child nodes (hierarchy information will also be saved) into a file. Node tree can later be deserialized using deserializeNodeTree.

+
Parameters
+ + + +
pathToFileFile to write the node tree to. The ".toml" extension will be added automatically if not specified in the path. If the specified file already exists it will be overwritten.
bEnableBackupIf 'true' will also use a backup (copy) file. deserializeNodeTree can use backup file if the original file does not exist. Generally you want to use a backup file if you are saving important information, such as player progress, other cases such as player game settings and etc. usually do not need a backup but you can use it if you want.
+
+
+
Remarks
Custom attributes, like in Serializable::serialize, are not available here because they are used internally to store hierarchy and other information.
+
Returns
Error if something went wrong, for example when found an unsupported for serialization reflected field.
+ +
+
+ +

◆ setIsCalledEveryFrame()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::Node::setIsCalledEveryFrame (bool bEnable)
+
+protected
+
+

Determines if the onBeforeNewFrame should be called each frame or not (disabled by default).

+
Remarks
Safe to call any time (while spawned/despawned).
+
Parameters
+ + +
bEnabletrue to enable onBeforeNewFrame, false to disable.
+
+
+ +
+
+ +

◆ setIsReceivingInput()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::Node::setIsReceivingInput (bool bEnable)
+
+protected
+
+

Determines if the input related functions, such as onMouseMove, onMouseScrollMove, onInputActionEvent and onInputAxisEvent will be called or not.

+
Remarks
Typically you should call this function in your node's constructor to determine if this node should receive input or not.
+
+Nodes do not receive input by default.
+
+Safe to call any time (while spawned/despawned).
+
Parameters
+ + +
bEnableWhether the input function should be enabled or not.
+
+
+ +
+
+ +

◆ setNodeName()

+ +
+
+ + + + + + + + +
void ne::Node::setNodeName (const std::string & sName)
+
+

Sets node's name.

+
Parameters
+ + +
sNameNew name of this node.
+
+
+ +
+
+ +

◆ setSerialize()

+ +
+
+ + + + + + + + +
void ne::Node::setSerialize (bool bSerialize)
+
+

Sets if this node (and node's child nodes) should be serialized as part of a node tree or not.

+
Parameters
+ + +
bSerializetrue to serialize, false ignore when serializing as part of a node tree.
+
+
+ +
+
+ +

◆ setTickGroup()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::Node::setTickGroup (TickGroup tickGroup)
+
+protected
+
+

Sets the tick group in which the node will reside.

+

Tick groups determine the order in which the onBeforeNewFrame functions will be called on nodes. Each frame, onBeforeNewFrame will be called first on the nodes that use the first tick group, then on the nodes that use the second group and etc. This allows defining a special order in which onBeforeNewFrame functions will be called on nodes, thus if you want some nodes to execute their onBeforeNewFrame function only after some other nodes do so, you can define this with tick groups.

+
Remarks
Tick group is ignored if setIsCalledEveryFrame was not enabled.
+
+Typically you should call this function in your node's constructor to determine in which tick group the node will reside.
+
+Nodes use the first tick group by default.
+
Warning
Calling this function while the node is spawned will cause an error to be shown.
+
Parameters
+ + +
tickGroupTick group the node will reside in.
+
+
+ +
+
+ +

◆ spawn()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Node::spawn ()
+
+private
+
+

Calls onSpawning on this node and all of its child nodes.

+ +
+
+ +

◆ unlockChildren()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Node::unlockChildren ()
+
+private
+
+

Unlocks mtxChildNodes mutex for self and recursively for all children.

+

After a node with children was unlocked this makes the whole node tree to be unfrozen (hierarchy can be changed as usual).

+ +
+
+

Member Data Documentation

+ +

◆ bSerialize

+ +
+
+ + + + + +
+ + + + +
bool ne::Node::bSerialize = true
+
+private
+
+

Defines whether or not this node (and node's child nodes) should be serialized as part of a node tree.

+ +
+
+ +

◆ iNodeId

+ +
+
+ + + + + +
+ + + + +
std::optional<size_t> ne::Node::iNodeId
+
+private
+
+

Unique ID of the spawned node (initialized after the node is spawned).

+ +
+
+ +

◆ mtxBindedActionEvents

+ +
+
+ + + + + +
+ + + + +
std::pair< std::recursive_mutex, std::unordered_map<unsigned int, std::function<void(KeyboardModifiers, bool)> > > ne::Node::mtxBindedActionEvents
+
+private
+
+

Map of action events that this node is binded to. Must be used with mutex.

+ +
+
+ +

◆ mtxBindedAxisEvents

+ +
+
+ + + + + +
+ + + + +
std::pair< std::recursive_mutex, std::unordered_map<unsigned int, std::function<void(KeyboardModifiers, float)> > > ne::Node::mtxBindedAxisEvents
+
+private
+
+

Map of axis events that this node is binded to. Must be used with mutex.

+ +
+
+ +

◆ mtxChildNodes

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, sgc::GcVector<sgc::GcPtr<Node> > > ne::Node::mtxChildNodes
+
+private
+
+

Attached child nodes. Should be used under the mutex when changing children.

+ +
+
+ +

◆ mtxCreatedBroadcasters

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, std::vector<std::unique_ptr<NodeNotificationBroadcasterBase> > > ne::Node::mtxCreatedBroadcasters
+
+private
+
+

Notification broadcasters created using createNotificationBroadcaster.

+
Warning
Don't remove/erase broadcasters from this array because it's allowed to use broadcasters while the node is despawned. Additionally, all users hold raw pointers to broadcasters so they will hit deleted memory in the case of deletion.
+ +
+
+ +

◆ mtxCreatedTimers

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, std::vector<std::unique_ptr<Timer> > > ne::Node::mtxCreatedTimers
+
+private
+
+

Timers creates using createTimer.

+
Warning
Don't remove/erase timers from this array because in despawn we might submit a deferred task (while stopping the timer) and will use the timer to check its state in deferred task so we need to make sure that stopped timer will not be deleted while the node exists. Additionally, all users hold raw pointers to timers so they will hit deleted memory in the case of deletion.
+ +
+
+ +

◆ mtxIsCalledEveryFrame

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, bool> ne::Node::mtxIsCalledEveryFrame
+
+private
+
+

Determines if the onBeforeNewFrame should be called each frame or not.

+ +
+
+ +

◆ mtxIsReceivingInput

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, bool> ne::Node::mtxIsReceivingInput
+
+private
+
+

Determines if the input related functions, such as onMouseMove, onMouseScrollMove, onInputActionEvent and onInputAxisEvent will be called or not.

+ +
+
+ +

◆ mtxIsSpawned

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, bool> ne::Node::mtxIsSpawned
+
+private
+
+

Whether this node is spawned in the world or not.

+ +
+
+ +

◆ mtxParentNode

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, sgc::GcPtr<Node> > ne::Node::mtxParentNode
+
+private
+
+

Attached parent node.

+ +
+
+ +

◆ pWorld

+ +
+
+ + + + + +
+ + + + +
World* ne::Node::pWorld = nullptr
+
+private
+
+

Do not delete this pointer. World object that owns this node.

+
Warning
Will be initialized after the node is spawned and reset when despawned.
+ +
+
+ +

◆ sExternalNodeTreePathAttributeName

+ +
+
+ + + + + +
+ + + + +
const auto ne::Node::sExternalNodeTreePathAttributeName
+
+inlinestaticprivate
+
+Initial value:
=
+
"external_node_tree_path_relative_to_res"
+

Name of the attribute we use to store a path to an external node tree.

+ +
+
+ +

◆ sNodeName

+ +
+
+ + + + + +
+ + + + +
std::string ne::Node::sNodeName
+
+private
+
+

Node's name.

+ +
+
+ +

◆ sParentNodeIdAttributeName

+ +
+
+ + + + + +
+ + + + +
const auto ne::Node::sParentNodeIdAttributeName = "parent_node_id"
+
+inlinestaticprivate
+
+

Name of the attribute we use to serialize information about parent node.

+ +
+
+ +

◆ tickGroup

+ +
+
+ + + + + +
+ + + + +
TickGroup ne::Node::tickGroup = TickGroup::FIRST
+
+private
+
+

Tick group used by this node.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/game/nodes/Node.h
  • +
  • src/engine_lib/private/game/nodes/Node.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1Node.js b/classne_1_1Node.js new file mode 100644 index 000000000..2d6bdf522 --- /dev/null +++ b/classne_1_1Node.js @@ -0,0 +1,78 @@ +var classne_1_1Node = +[ + [ "SerializableObjectInformationWithGcPointer", "structne_1_1Node_1_1SerializableObjectInformationWithGcPointer.html", "structne_1_1Node_1_1SerializableObjectInformationWithGcPointer" ], + [ "AttachmentRule", "classne_1_1Node.html#a14bad364fb30a60063a147b95ab17acc", [ + [ "RESET_RELATIVE", "classne_1_1Node.html#a14bad364fb30a60063a147b95ab17acca4372af2b32c9fa01aa10e54875c00eb4", null ], + [ "KEEP_RELATIVE", "classne_1_1Node.html#a14bad364fb30a60063a147b95ab17acca92a8dfed0bc0c78d8588bf505650f09e", null ], + [ "KEEP_WORLD", "classne_1_1Node.html#a14bad364fb30a60063a147b95ab17accae86f7bae48de88b2713f0674fc9fd40a", null ] + ] ], + [ "Node", "classne_1_1Node.html#a869b03190702ccef1f85bad536bf1a4b", null ], + [ "Node", "classne_1_1Node.html#a21e8ff8b016048cb83b9bbfbe822a7e7", null ], + [ "~Node", "classne_1_1Node.html#a79642d37ba8f7a42e6bbb43285f8b0fb", null ], + [ "addChildNode", "classne_1_1Node.html#a3a921f5e7fe4deb183e7910be557b1da", null ], + [ "createNotificationBroadcaster", "classne_1_1Node.html#a5f2dca870a640ac24053a76b804ce111", null ], + [ "createTimer", "classne_1_1Node.html#a0e80560b3b2f02be42285e60195f1b64", null ], + [ "deserializeNodeTree", "classne_1_1Node.html#a7b45ecbcfa73932f521f10154cd65e35", null ], + [ "despawn", "classne_1_1Node.html#ad9bd6ddcf9906c8526b02aa7d1067776", null ], + [ "detachFromParentAndDespawn", "classne_1_1Node.html#aa4e2afe27909c7d87d39c048999ab190", null ], + [ "enableTimer", "classne_1_1Node.html#a64f1ae678b1d2c5a02158346dc8a1219", null ], + [ "findValidWorld", "classne_1_1Node.html#a1ff981780eeb406408afd037bb31f684", null ], + [ "getActionEventBindings", "classne_1_1Node.html#a77035ce347e8bf68b564b5358ef4b5cc", null ], + [ "getAliveNodeCount", "classne_1_1Node.html#a881561ee518c6b936d7b973c89b26b62", null ], + [ "getAxisEventBindings", "classne_1_1Node.html#a062c7be217334d4bce02ce34c32e00cb", null ], + [ "getChildNodeOfType", "classne_1_1Node.html#a7b03a7b88779e86fd7df6f158892c86b", null ], + [ "getChildNodes", "classne_1_1Node.html#a874ddce54dfd82fcda801cb799bb1b85", null ], + [ "getGameInstance", "classne_1_1Node.html#a2aeb90fc6bd28ec3b54e9f8f641c3574", null ], + [ "getInformationForSerialization", "classne_1_1Node.html#aca87f422b087084a4561e46165022a96", null ], + [ "getNodeId", "classne_1_1Node.html#a5cbae38dafd4765e9026028bd004b31c", null ], + [ "getNodeName", "classne_1_1Node.html#aaf3b419efa656af7bf82b3e85532ceed", null ], + [ "getParentNode", "classne_1_1Node.html#a561de14810416e06b506a6c970c296e7", null ], + [ "getParentNodeOfType", "classne_1_1Node.html#acc4ff3174738477037de125dff1a0707", null ], + [ "getSpawnDespawnMutex", "classne_1_1Node.html#a893cf9d4987d1b3ece76c0ffa0577e6d", null ], + [ "getTickGroup", "classne_1_1Node.html#ae5711513fe69f2771c6fc6bf84379768", null ], + [ "getWorldRootNode", "classne_1_1Node.html#a470c2e53992a75304574a6c3c80a87d2", null ], + [ "isCalledEveryFrame", "classne_1_1Node.html#afe0a06a7b62617e293529f2e0f89cd81", null ], + [ "isChildOf", "classne_1_1Node.html#a7d48dcaa587589d0242d523d62bd9d27", null ], + [ "isParentOf", "classne_1_1Node.html#ab4f66ab4ad5300e502fe964e8717f642", null ], + [ "isReceivingInput", "classne_1_1Node.html#ab524a575030ca4f5a505c800680bcbb8", null ], + [ "isSerialized", "classne_1_1Node.html#aca0a97f3a5893d137ef01aa155426706", null ], + [ "isSpawned", "classne_1_1Node.html#ab452b5f388d94b20c652ae661caca5fd", null ], + [ "isTreeDeserializedFromOneFile", "classne_1_1Node.html#a42518527c8194051ae12f19603f6c32d", null ], + [ "lockChildren", "classne_1_1Node.html#a57649518a54e42668196d18741376397", null ], + [ "notifyAboutAttachedToNewParent", "classne_1_1Node.html#a8472729af29f2e90d0a4ee334953e783", null ], + [ "notifyAboutDetachingFromParent", "classne_1_1Node.html#a9854b81a46b4c0063a0447a8a42dac0c", null ], + [ "onAfterAttachedToNewParent", "classne_1_1Node.html#ab7e67ce1bfe3c1015630301e3c53411f", null ], + [ "onBeforeDetachedFromParent", "classne_1_1Node.html#a53e4a732c0e3578d8a5551693b8c02aa", null ], + [ "onBeforeNewFrame", "classne_1_1Node.html#a6ccde9ffedb8ce10cfb4cbdd8b6ea59a", null ], + [ "onChildNodesSpawned", "classne_1_1Node.html#a79cba5cd17e5e968ed92f162b5a9f08b", null ], + [ "onDespawning", "classne_1_1Node.html#a890cf446e639ac9dd1e9e7832cf796ed", null ], + [ "onInputActionEvent", "classne_1_1Node.html#a1f3b44b31513e2898d2caf35ea63d4e7", null ], + [ "onInputAxisEvent", "classne_1_1Node.html#aa48b63d44d51992c3c594b08d3e1c0a9", null ], + [ "onMouseMove", "classne_1_1Node.html#a5b5e6b60ec1e1fdf9d1b7d6cb8387b74", null ], + [ "onMouseScrollMove", "classne_1_1Node.html#adde53f1d8c88385fb8ba338820e77c8e", null ], + [ "onSpawning", "classne_1_1Node.html#abe2310c20abcd99331c4d6b104e1e919", null ], + [ "serializeNodeTree", "classne_1_1Node.html#a40e9b140812be7a938906e36f6e6188b", null ], + [ "setIsCalledEveryFrame", "classne_1_1Node.html#a9294c7c58a8b4f85b7674c55751f4b13", null ], + [ "setIsReceivingInput", "classne_1_1Node.html#a8ecdaaf48f89ae036a48ecb38d3ac382", null ], + [ "setNodeName", "classne_1_1Node.html#aa75cedd320fd643ad154bdceb4b0aad1", null ], + [ "setSerialize", "classne_1_1Node.html#ad8cb324f9de9b495f7bc223356540a44", null ], + [ "setTickGroup", "classne_1_1Node.html#a138f69f892f8b80a89262b8a5f7625b8", null ], + [ "spawn", "classne_1_1Node.html#a2d0cdd65e3886dd5e069a099701f0124", null ], + [ "unlockChildren", "classne_1_1Node.html#a00e575b462b1ef5aff5d2b63e03a1d43", null ], + [ "bSerialize", "classne_1_1Node.html#a7fe9ac405df914997905a4de2045c12b", null ], + [ "iNodeId", "classne_1_1Node.html#aaee3df89d264e4e9514bbf394098fe7e", null ], + [ "mtxBindedActionEvents", "classne_1_1Node.html#a531525f4d208ca0f45eb5492c3debb54", null ], + [ "mtxBindedAxisEvents", "classne_1_1Node.html#a8913f0acc86e74780a053109f4ccee96", null ], + [ "mtxChildNodes", "classne_1_1Node.html#a39d161e8751a61d6c23cca65bc22847d", null ], + [ "mtxCreatedBroadcasters", "classne_1_1Node.html#af274ceec79c97784089f06bd8a95dc34", null ], + [ "mtxCreatedTimers", "classne_1_1Node.html#ada864abad4d11488fd6652b6f6a6e77f", null ], + [ "mtxIsCalledEveryFrame", "classne_1_1Node.html#aa406867a33c8b3347df81e329c46b5b8", null ], + [ "mtxIsReceivingInput", "classne_1_1Node.html#ab250eceeeddc12965d14b29ad0f29ae7", null ], + [ "mtxIsSpawned", "classne_1_1Node.html#a104dc3bb8409c8d592fdc320c776d9fc", null ], + [ "mtxParentNode", "classne_1_1Node.html#a272a651fe2aa6d290b6d6adbccf31bf3", null ], + [ "pWorld", "classne_1_1Node.html#a7d87d6149dac42ad71c72959d287dce1", null ], + [ "sExternalNodeTreePathAttributeName", "classne_1_1Node.html#aa2acbbe4c033a34bdc9dd4c76edebc32", null ], + [ "sNodeName", "classne_1_1Node.html#abf5d0aa8bddaf3927e80dddb787fbe26", null ], + [ "sParentNodeIdAttributeName", "classne_1_1Node.html#aaab872e5e0cda5bd3e50b37096d46b3d", null ], + [ "tickGroup", "classne_1_1Node.html#aee673da17a5126031bbb957fa2833505", null ] +]; \ No newline at end of file diff --git a/classne_1_1Node.png b/classne_1_1Node.png new file mode 100644 index 0000000000000000000000000000000000000000..205bd07352bd5d2b448c47bde791a45507b78db1 GIT binary patch literal 3819 zcmd55-yV<1c~Y_THd2mR z*f?~0>7+Vq+I#KZnICW9e$kQjbL6i7EIZS=lC2++hZ4=`ppi#q=gG+KGt|)*?y>m6EpDk!-{aYzZqydY(cdL zY1}~b9EVdW`&B_@BB|;3_}$gP_MgC{I)inj$mAdzweIqfAXiemG@Plk9mDpaurlU+Z!nE1A6lw2~HP9IW1p4 zM!)dcnl4XZ@2wYArRNUFze@2{VbOubl9JpCf{70u?3e-XT z2{6TVQ0v`W!Q1aE|DWBM5e*W1)Vp_AJK1z%Eu;dAqW#B7@4dS4yV!NGjBMJJi;ByY6L+>0ffek^y+%wK#-ha zkRFj7-i_CFVU$+_hY4sDL_x@lYd9Uz>Oey{EeJu_0C?5G`AOWj*Zp{eyHV3_Y24yR zz6*1Z;Y?It@&a#?`Ac7o6J^)39c1>b@l8ugkCjzijPej9JUJI4jqxL*Y@Lhf!&QFH zFh~rDwEI6@+M@RJU3v=^%#hR66b{t}O%28E@4+&8m|L5aBt2W2 z5)`pL;meur$r;~#W#lkJm7V2uk9y7_Jeok7u8&NgHKDzgSXog!MinX)^^wU1VuE43 zye$x4(Ep1L+ z^6)ilURj9tzSDHsQu^%O-n`UDI`!(7 zy=kOgjpb6#DZ8aLV|K4X0sN-dYv}54ZLHA!%lQ;WkcgZ3>g^v4V&Hn9*u)|oht*coa}T1O|sO;Zakb*U_;OhcD4JVn`vw{L8ab+%Df{Zx#g(R0MfDeIMUBIIwwHL=3AE4KQh;y(GE} zZ_X_)_Alg<;bcimZ0N%&3YUR@zbq-$z}p4{uvUPn$jE4(S(U zYWSNnI8m~Mz6?hjjHl-3K0SW(!#8@g$vor^II4nTi+rqzZ-}HQRt(=43hUV(0heYe zY?>#3O|-kVcO+z+X7mc)7bov2D=@6AYI3g2mJZA`Xf|Nil52e!6jFtdom<=!$>Z%@pTDkfu|In+@8Nnb|0U zn1Y-^WR#?ZvFWwi%JrBr(uyU20xSUriHiAD0FD~frTBQx`6cgAZS}BigZ{fi ztKQ>&Uh?HXdwfj$f|Jeo{iAC5Nfo8=XEy7okDKM+F5SZc(uyT`+$1XHJ-E24APZ} z0R~D#1nCkyxd1_<8zv!WGDf3(S&AUHj{8Fpr#2foSAq=&QnM!{v;fWB8;2?##v;fG z{*x0xii03^C4sTC3PC74T!S|{jSK5Krl306xiX6=16D-g+h%*B>2$^L06na-D=@*u z>y5F(BW{4wbw=PWMUZp$FF0v>-FU9Ws#ZfdG_w{tm*V3lwcz!t_;KWWK1p81<8=u2 zGfeJer9NEGbI^xlBBDx9LQwMTthhk-q&oLI73fq$PvAbED!UZZ{v$$HYZLy?EMpga zZwi7`4pm-IY~3l2BelvJS~dMKCEcOaSzeOln#{)uVug5xwy>{qW9jnFE}nyLx0qt? z(=zcoDI9{VP1Ws8&4l%U>%!UNB)wWfS4RD4Jw5FUn)UOd9E*&feH_c(V{=m>$VPmX zD?Zdu=`3%5@^hX$EG+NiHoeMaQMxJzisrI5fPI2XryVMe zX+l3${5^zG^*R}M#=XS;PHGy`M^fh^!=*ki|YWhZgn-&BQrQ3rc>Vj}1ovX@{Y6Hh13= zHI--L^Sf~^rFjSfSgU6+yG?Eb31sIg*Px+2oh3h z4CmaCyGG7Bn=fXTw~nib0ttN}X+S!831Jdmv{0-mz6DdQ=i?-RDkC|v*I!q-IYi~4 zFoGE6n}U=VS8^_ zNOYryjNR1%#-|$yGGp#~Os*e=dG`c#QpxGUwUmMIW!+K?=cq5?7$jWxSNE3gJE8=a zE~~Mu%4oJ(TGKc>+N{&i{y#gBe?zxF%-KFb6@Z~54>VAVcHJ7w8Qn#TrUw$|&Qm}r zQ8U0ve#69_xCC-+Mwgp2giDFq3joDCD}C+b?}G9h$~CT@+vJd(SYaT!3HT_}n@8C0 zPzL*JXW{!YvsMAlrH{{B9LrD*QB`mw-=uj!Y;%?vHB(GsT z7euvu|3mmo14Leudl+{by>SqvAusGFnlP3ldUP)@Z@-@Y`*s5%VoUUHQ?UvhfO5QX zDwAP55Y(Z=67KN>b`re)Q7TTD}tYVeT)| z2VFrU{*If_#C!3aRTY3zEb=BSkSk-bOApN*38%PYHQv5Ia>s-rCJB~yY4I4`{g(P E08Gp*WdHyG literal 0 HcmV?d00001 diff --git a/classne_1_1NodeFunction.html b/classne_1_1NodeFunction.html new file mode 100644 index 000000000..3bcfa8604 --- /dev/null +++ b/classne_1_1NodeFunction.html @@ -0,0 +1,111 @@ + + + + + + + +Nameless Engine: ne::NodeFunction< FunctionReturnType, FunctionArgs > Class Template Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::NodeFunction< FunctionReturnType, FunctionArgs > Class Template Reference
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4-members.html b/classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4-members.html new file mode 100644 index 000000000..2fc636eaa --- /dev/null +++ b/classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4-members.html @@ -0,0 +1,120 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::NodeFunction< FunctionReturnType(FunctionArgs...)> Member List
+
+ +
+ + + + diff --git a/classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html b/classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html new file mode 100644 index 000000000..b2039ed67 --- /dev/null +++ b/classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html @@ -0,0 +1,456 @@ + + + + + + + +Nameless Engine: ne::NodeFunction< FunctionReturnType(FunctionArgs...)> Class Template Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::NodeFunction< FunctionReturnType(FunctionArgs...)> Class Template Reference
+
+
+ +

#include <NodeFunction.hpp>

+ + + + + + + + + + + + + + + + +

+Public Member Functions

 NodeFunction (size_t iNodeId, const std::function< FunctionReturnType(FunctionArgs...)> &callback)
 
 NodeFunction (const NodeFunction &other)=default
 
NodeFunctionoperator= (const NodeFunction &other)=default
 
 NodeFunction (NodeFunction &&other) noexcept=default
 
NodeFunctionoperator= (NodeFunction &&other) noexcept=default
 
bool operator() (FunctionArgs &&... args)
 
bool isNodeSpawned ()
 
+ + + + + +

+Private Attributes

std::function< FunctionReturnType(FunctionArgs...)> callback
 
size_t iNodeId = 0
 
+

Detailed Description

+
template<typename FunctionReturnType, typename... FunctionArgs>
+class ne::NodeFunction< FunctionReturnType(FunctionArgs...)>

std::function wrapper used for Node functions/lambdas with an additional check (compared to the usual std::function): once the callback is called this class will first check if the node, the callback function points to, is still spawned or not, and if not spawned then the callback function will not be called to avoid running functions on despawned nodes or hitting deleted memory.

+

Constructor & Destructor Documentation

+ +

◆ NodeFunction() [1/3]

+ +
+
+
+template<typename FunctionReturnType , typename... FunctionArgs>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ne::NodeFunction< FunctionReturnType(FunctionArgs...)>::NodeFunction (size_t iNodeId,
const std::function< FunctionReturnType(FunctionArgs...)> & callback 
)
+
+inline
+
+

Constructor.

+
Warning
Don't capture gc pointers in std::function (as it's used under the hood).
+
Parameters
+ + + +
iNodeIdID of the spawned node that "contains" the callback.
callbackPoints to the function/lambda of the spawned node with ID that was specified as the previous argument.
+
+
+ +
+
+ +

◆ NodeFunction() [2/3]

+ +
+
+
+template<typename FunctionReturnType , typename... FunctionArgs>
+ + + + + +
+ + + + + + + + +
ne::NodeFunction< FunctionReturnType(FunctionArgs...)>::NodeFunction (const NodeFunction< FunctionReturnType(FunctionArgs...)> & other)
+
+default
+
+

Copy constructor.

+
Parameters
+ + +
otherOther object.
+
+
+ +
+
+ +

◆ NodeFunction() [3/3]

+ +
+
+
+template<typename FunctionReturnType , typename... FunctionArgs>
+ + + + + +
+ + + + + + + + +
ne::NodeFunction< FunctionReturnType(FunctionArgs...)>::NodeFunction (NodeFunction< FunctionReturnType(FunctionArgs...)> && other)
+
+defaultnoexcept
+
+

Move constructor.

+
Parameters
+ + +
otherOther object.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ isNodeSpawned()

+ +
+
+
+template<typename FunctionReturnType , typename... FunctionArgs>
+ + + + + +
+ + + + + + + +
bool ne::NodeFunction< FunctionReturnType(FunctionArgs...)>::isNodeSpawned ()
+
+inline
+
+

Checks if the node, the callback function points to, is still spawned or not.

+
Remarks
You don't need to call this function before calling the callback to check if the callback is still valid or not - it will be done automatically under the hood.
+
Returns
true if the node is still spawned, false otherwise.
+ +
+
+ +

◆ operator()()

+ +
+
+
+template<typename FunctionReturnType , typename... FunctionArgs>
+ + + + + +
+ + + + + + + + +
bool ne::NodeFunction< FunctionReturnType(FunctionArgs...)>::operator() (FunctionArgs &&... args)
+
+inline
+
+

Calls the stores callback function with the specified arguments.

+
Remarks
If the node that the callback function points to is no longer spawned the callback function will not be called.
+
+If you are calling the callback function in a multi-threaded environment (for ex. from a non-main thread) then once the callback function has started executing it's up to you to guarantee that the node, the callback function points to, will not be despawned while the callback function is executing (if it matters for you).
+
Parameters
+ + +
argsArguments to pass to callback function call.
+
+
+
Returns
true if the node, the callback function points to, was despawned and the callback was not called to avoid running logic on despawned/deleted node, otherwise false.
+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+
+template<typename FunctionReturnType , typename... FunctionArgs>
+ + + + + +
+ + + + + + + + +
NodeFunction & ne::NodeFunction< FunctionReturnType(FunctionArgs...)>::operator= (const NodeFunction< FunctionReturnType(FunctionArgs...)> & other)
+
+default
+
+

Copy assignment.

+
Parameters
+ + +
otherOther object.
+
+
+
Returns
Result of copy assignment.
+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+
+template<typename FunctionReturnType , typename... FunctionArgs>
+ + + + + +
+ + + + + + + + +
NodeFunction & ne::NodeFunction< FunctionReturnType(FunctionArgs...)>::operator= (NodeFunction< FunctionReturnType(FunctionArgs...)> && other)
+
+defaultnoexcept
+
+

Move assignment.

+
Parameters
+ + +
otherOther object.
+
+
+
Returns
Result of move assignment.
+ +
+
+

Member Data Documentation

+ +

◆ callback

+ +
+
+
+template<typename FunctionReturnType , typename... FunctionArgs>
+ + + + + +
+ + + + +
std::function<FunctionReturnType(FunctionArgs...)> ne::NodeFunction< FunctionReturnType(FunctionArgs...)>::callback
+
+private
+
+

Points to the function of the spawned node with ID iNodeId.

+ +
+
+ +

◆ iNodeId

+ +
+
+
+template<typename FunctionReturnType , typename... FunctionArgs>
+ + + + + +
+ + + + +
size_t ne::NodeFunction< FunctionReturnType(FunctionArgs...)>::iNodeId = 0
+
+private
+
+

ID of the spawned node that contains callback function.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.js b/classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.js new file mode 100644 index 000000000..0a8910e69 --- /dev/null +++ b/classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.js @@ -0,0 +1,12 @@ +var classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4 = +[ + [ "NodeFunction", "classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a87be6ed619ef19fc70ffc839032a0f4b", null ], + [ "NodeFunction", "classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a0b583d1cffcec3340d969eab61cd2aaa", null ], + [ "NodeFunction", "classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#ac0d22b7a67c10fd9a1cea9cfa2677bc9", null ], + [ "isNodeSpawned", "classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#af86056a25323eb76f3e8b722fe895a90", null ], + [ "operator()", "classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a31f9bd6d7315b69f7e5c011a8014a950", null ], + [ "operator=", "classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a953a1c7bb9e06c5f4d6ae592e591b290", null ], + [ "operator=", "classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#acbe83245d48b31c4f2f469232d3c22f0", null ], + [ "callback", "classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a474ac22049f1108a42b60f015be0e8e8", null ], + [ "iNodeId", "classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a59a6a041fcd9f6026b8645bb6879ee81", null ] +]; \ No newline at end of file diff --git a/classne_1_1NodeNotificationBroadcaster.html b/classne_1_1NodeNotificationBroadcaster.html new file mode 100644 index 000000000..938d4cb60 --- /dev/null +++ b/classne_1_1NodeNotificationBroadcaster.html @@ -0,0 +1,111 @@ + + + + + + + +Nameless Engine: ne::NodeNotificationBroadcaster< FunctionReturnType, FunctionArgs > Class Template Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::NodeNotificationBroadcaster< FunctionReturnType, FunctionArgs > Class Template Reference
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classne_1_1NodeNotificationBroadcasterBase-members.html b/classne_1_1NodeNotificationBroadcasterBase-members.html new file mode 100644 index 000000000..d34f90ed5 --- /dev/null +++ b/classne_1_1NodeNotificationBroadcasterBase-members.html @@ -0,0 +1,117 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::NodeNotificationBroadcasterBase Member List
+
+
+ +

This is the complete list of members for ne::NodeNotificationBroadcasterBase, including all inherited members.

+ + + + + + + + +
Node (defined in ne::NodeNotificationBroadcasterBase)ne::NodeNotificationBroadcasterBasefriend
NodeNotificationBroadcasterBase()=default (defined in ne::NodeNotificationBroadcasterBase)ne::NodeNotificationBroadcasterBase
NodeNotificationBroadcasterBase(const NodeNotificationBroadcasterBase &)=delete (defined in ne::NodeNotificationBroadcasterBase)ne::NodeNotificationBroadcasterBase
onOwnerNodeDespawning(Node *pOwnerNode)=0ne::NodeNotificationBroadcasterBaseprotectedpure virtual
onOwnerNodeSpawning(Node *pOwnerNode)=0ne::NodeNotificationBroadcasterBaseprotectedpure virtual
operator=(const NodeNotificationBroadcasterBase &)=delete (defined in ne::NodeNotificationBroadcasterBase)ne::NodeNotificationBroadcasterBase
~NodeNotificationBroadcasterBase()=default (defined in ne::NodeNotificationBroadcasterBase)ne::NodeNotificationBroadcasterBasevirtual
+
+ + + + diff --git a/classne_1_1NodeNotificationBroadcasterBase.html b/classne_1_1NodeNotificationBroadcasterBase.html new file mode 100644 index 000000000..ae3e59d0d --- /dev/null +++ b/classne_1_1NodeNotificationBroadcasterBase.html @@ -0,0 +1,223 @@ + + + + + + + +Nameless Engine: ne::NodeNotificationBroadcasterBase Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::NodeNotificationBroadcasterBase Class Referenceabstract
+
+
+ +

#include <NodeNotificationBroadcaster.hpp>

+
+Inheritance diagram for ne::NodeNotificationBroadcasterBase:
+
+
+ + +ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)> + +
+ + + + + + +

+Public Member Functions

NodeNotificationBroadcasterBase (const NodeNotificationBroadcasterBase &)=delete
 
+NodeNotificationBroadcasterBaseoperator= (const NodeNotificationBroadcasterBase &)=delete
 
+ + + + + +

+Protected Member Functions

virtual void onOwnerNodeSpawning (Node *pOwnerNode)=0
 
virtual void onOwnerNodeDespawning (Node *pOwnerNode)=0
 
+ + + +

+Friends

+class Node
 
+

Detailed Description

+

Base class for notification broadcasters.

+

Member Function Documentation

+ +

◆ onOwnerNodeDespawning()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void ne::NodeNotificationBroadcasterBase::onOwnerNodeDespawning (NodepOwnerNode)
+
+protectedpure virtual
+
+

Called by the node, that owns this broadcaster, when it's despawning.

+
Parameters
+ + +
pOwnerNodeNode that owns this broadcaster.
+
+
+ +

Implemented in ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>.

+ +
+
+ +

◆ onOwnerNodeSpawning()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void ne::NodeNotificationBroadcasterBase::onOwnerNodeSpawning (NodepOwnerNode)
+
+protectedpure virtual
+
+

Called by the node, that owns this broadcaster, when it's spawning.

+
Parameters
+ + +
pOwnerNodeSpawned node that owns this broadcaster.
+
+
+ +

Implemented in ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classne_1_1NodeNotificationBroadcasterBase.js b/classne_1_1NodeNotificationBroadcasterBase.js new file mode 100644 index 000000000..81539f1e8 --- /dev/null +++ b/classne_1_1NodeNotificationBroadcasterBase.js @@ -0,0 +1,5 @@ +var classne_1_1NodeNotificationBroadcasterBase = +[ + [ "onOwnerNodeDespawning", "classne_1_1NodeNotificationBroadcasterBase.html#a7611d4137442ac68f7aec218bf4fabf0", null ], + [ "onOwnerNodeSpawning", "classne_1_1NodeNotificationBroadcasterBase.html#a920dedca17f4cb14b814942becc9e2a7", null ] +]; \ No newline at end of file diff --git a/classne_1_1NodeNotificationBroadcasterBase.png b/classne_1_1NodeNotificationBroadcasterBase.png new file mode 100644 index 0000000000000000000000000000000000000000..7f32567313750844426e4c044b3d1e0f81308879 GIT binary patch literal 1270 zcmeAS@N?(olHy`uVBq!ia0y~yU|bGl2XHV0$*zlD`+<~nfKQ0)|NsAi%olIImi8Z7 zZegHVATj;SivtG^0L6nRU0wl{<17jC3uXZF!N8np_7w&OmPSt($B+ufw{ve6y|&p_cpYd705R=S|YSt2eIOe@)@}##Il^CQFv{ z+);j`H`!*{=C<3%uPR(Ue%^6XUBvsRTh_kc*K|C5w)^zluVJ@m%*uMbLu3AviCzEi z?1+@}tm?j3Gw+w>y_i3e%hdz>mOqUt|9^%z>4(twP7 z&0ptyOKZ~f&O1je@=q^zsjrNZw`TYJmH78sW!A4_+BN-`Cu?tfS~BtYT%Y^z*EN>$ zP5N@UtKj`seb?Q0rC+c8{*rIG_50xSFaLkGTRYutb8+_jT~+6f_it=p-4{{4yYTJr zCwKSme|hKU%<{K9Ni}@zo>lGlPI*oWn)GE8DCEM6CN25lk6V zPIjt1*0!9O0Xy5yla7~MD`Ak#QefrwPeDT4)#bMd=E&XG&#IC(h`j|dvo{QzX((vD@Jn@e# zuRq)QvOCw(M3l#3r^w$=H|*D^eQo@`@>ldvgOWLKR!0C+-5<7Vb-n)AAF4!p=nL=c zEW8(*mU<`m;#~)S%b82eEpDckmhPKYy2o*M^?RO;e`V*YKeu{hvemC9uXxvq$II{L z@5nED6%*m1{(FXxcD1QC_e+yK-`AZBE=Eg|lW!N~9o2L5w+Nk{?HB(3GI!+PhkuU! z-ZJl0+VgAoN*8?onEdA9D&=eU@?w75RhGZcx9S(awgt5od#}&m)F + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)> Member List
+
+
+ +

This is the complete list of members for ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
bIsBroadcastingne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>private
broadcast(FunctionArgs &&... args)ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>inline
getSubscriberCount()ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>inline
iAvailableBindingIdne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>private
mtxCallbacksne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>private
mtxCallbacksToAddne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>private
mtxCallbacksToRemovene::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>private
mtxSpawnedOwnerNodene::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>private
Node (defined in ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>)ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>friend
NodeNotificationBroadcaster(const NodeNotificationBroadcaster &)=delete (defined in ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>)ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>
NodeNotificationBroadcaster() (defined in ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>)ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>inlineprotected
NodeNotificationBroadcasterBase()=default (defined in ne::NodeNotificationBroadcasterBase)ne::NodeNotificationBroadcasterBase
NodeNotificationBroadcasterBase(const NodeNotificationBroadcasterBase &)=delete (defined in ne::NodeNotificationBroadcasterBase)ne::NodeNotificationBroadcasterBase
onOwnerNodeDespawning(Node *pOwnerNode) overridene::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>inlineprotectedvirtual
onOwnerNodeSpawning(Node *pOwnerNode) overridene::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>inlineprotectedvirtual
operator=(const NodeNotificationBroadcaster &)=delete (defined in ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>)ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>
operator=(const NodeNotificationBroadcasterBase &)=delete (defined in ne::NodeNotificationBroadcasterBase)ne::NodeNotificationBroadcasterBase
removeAllCallbacks()ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>inlineprivate
subscribe(const NodeFunction< FunctionReturnType(FunctionArgs...)> &callback)ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>inline
unsubscribe(size_t iBindingId)ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>inline
~NodeNotificationBroadcaster() override=default (defined in ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>)ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>virtual
~NodeNotificationBroadcasterBase()=default (defined in ne::NodeNotificationBroadcasterBase)ne::NodeNotificationBroadcasterBasevirtual
+
+ + + + diff --git a/classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html b/classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html new file mode 100644 index 000000000..3e3b19d67 --- /dev/null +++ b/classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html @@ -0,0 +1,588 @@ + + + + + + + +Nameless Engine: ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)> Class Template Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)> Class Template Reference
+
+
+ +

#include <NodeNotificationBroadcaster.hpp>

+
+Inheritance diagram for ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>:
+
+
+ + +ne::NodeNotificationBroadcasterBase + +
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

NodeNotificationBroadcaster (const NodeNotificationBroadcaster &)=delete
 
+NodeNotificationBroadcasteroperator= (const NodeNotificationBroadcaster &)=delete
 
void broadcast (FunctionArgs &&... args)
 
size_t subscribe (const NodeFunction< FunctionReturnType(FunctionArgs...)> &callback)
 
void unsubscribe (size_t iBindingId)
 
size_t getSubscriberCount ()
 
- Public Member Functions inherited from ne::NodeNotificationBroadcasterBase
NodeNotificationBroadcasterBase (const NodeNotificationBroadcasterBase &)=delete
 
+NodeNotificationBroadcasterBaseoperator= (const NodeNotificationBroadcasterBase &)=delete
 
+ + + + + + + + + +

+Protected Member Functions

virtual void onOwnerNodeSpawning (Node *pOwnerNode) override
 
virtual void onOwnerNodeDespawning (Node *pOwnerNode) override
 
virtual void onOwnerNodeSpawning (Node *pOwnerNode)=0
 
virtual void onOwnerNodeDespawning (Node *pOwnerNode)=0
 
+ + + +

+Private Member Functions

void removeAllCallbacks ()
 
+ + + + + + + + + + + + + +

+Private Attributes

std::pair< std::recursive_mutex, std::unordered_map< size_t, NodeFunction< FunctionReturnType(FunctionArgs...)> > > mtxCallbacks
 
std::pair< std::recursive_mutex, std::unordered_map< size_t, NodeFunction< FunctionReturnType(FunctionArgs...)> > > mtxCallbacksToAdd
 
std::pair< std::recursive_mutex, std::vector< size_t > > mtxCallbacksToRemove
 
std::pair< std::recursive_mutex, Node * > mtxSpawnedOwnerNode
 
std::atomic< size_t > iAvailableBindingId {0}
 
std::atomic_flag bIsBroadcasting {}
 
+ + + +

+Friends

+class Node
 
+

Detailed Description

+
template<typename FunctionReturnType, typename... FunctionArgs>
+class ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>

Implements publisher-subscriber pattern. Allows nodes to subscribe by specifying their callback functions via NodeFunction and triggers them once the broadcast method is called.

+

Member Function Documentation

+ +

◆ broadcast()

+ +
+
+
+template<typename FunctionReturnType , typename... FunctionArgs>
+ + + + + +
+ + + + + + + + +
void ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>::broadcast (FunctionArgs &&... args)
+
+inline
+
+

Executes all registered (subscribed) callbacks.

+
Remarks
It's safe to call this function while your node is despawned, in this case the call will be ignored and nothing will be broadcasted.
+
+Additionally, before running registered callbacks, removes callbacks of despawned nodes.
+
Parameters
+ + +
argsArguments to pass to subscribed callbacks.
+
+
+ +
+
+ +

◆ getSubscriberCount()

+ +
+
+
+template<typename FunctionReturnType , typename... FunctionArgs>
+ + + + + +
+ + + + + + + +
size_t ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>::getSubscriberCount ()
+
+inline
+
+

Returns the current estimated number of subscribers.

+

The returned number is called "estimated" because right now we don't know if some nodes that subscribed to this broadcaster have despawned or not, callbacks of despawned nodes are only removed in broadcast calls. The only thing that we can say for sure is that the actual number of spawned subscribers is either equal to the returned value or smaller than it.

+
Returns
Estimated number of spawned subscribers.
+ +
+
+ +

◆ onOwnerNodeDespawning()

+ +
+
+
+template<typename FunctionReturnType , typename... FunctionArgs>
+ + + + + +
+ + + + + + + + +
virtual void ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>::onOwnerNodeDespawning (NodepOwnerNode)
+
+inlineoverrideprotectedvirtual
+
+

Called by the node, that owns this broadcaster, when it's despawning.

+
Parameters
+ + +
pOwnerNodeNode that owns this broadcaster.
+
+
+ +

Implements ne::NodeNotificationBroadcasterBase.

+ +
+
+ +

◆ onOwnerNodeSpawning()

+ +
+
+
+template<typename FunctionReturnType , typename... FunctionArgs>
+ + + + + +
+ + + + + + + + +
virtual void ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>::onOwnerNodeSpawning (NodepOwnerNode)
+
+inlineoverrideprotectedvirtual
+
+

Called by the node, that owns this broadcaster, when it's spawning.

+
Parameters
+ + +
pOwnerNodeSpawned node that owns this broadcaster.
+
+
+ +

Implements ne::NodeNotificationBroadcasterBase.

+ +
+
+ +

◆ removeAllCallbacks()

+ +
+
+
+template<typename FunctionReturnType , typename... FunctionArgs>
+ + + + + +
+ + + + + + + +
void ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>::removeAllCallbacks ()
+
+inlineprivate
+
+

Removes all registered callbacks (including callbacks that are pending to be added/removed).

+ +
+
+ +

◆ subscribe()

+ +
+
+
+template<typename FunctionReturnType , typename... FunctionArgs>
+ + + + + +
+ + + + + + + + +
size_t ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>::subscribe (const NodeFunction< FunctionReturnType(FunctionArgs...)> & callback)
+
+inline
+
+

Adds the specified callback to be registered in the broadcaster so that the callback will be triggered on the next broadcast call.

+
Parameters
+ + +
callbackCallback to register.
+
+
+
Returns
Unique ID (only unique relative to this broadcaster) of the registered callback. You can save this ID if you would need to unsubscribe later (see unsubscribe), otherwise just ignore this returned value.
+ +
+
+ +

◆ unsubscribe()

+ +
+
+
+template<typename FunctionReturnType , typename... FunctionArgs>
+ + + + + +
+ + + + + + + + +
void ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>::unsubscribe (size_t iBindingId)
+
+inline
+
+

Removes a previously added callback (see subscribe) by its binding ID.

+
Remarks
You don't need to unsubscribe when your subscribed node is being despawned/destroyed as this is done automatically. Each broadcast call removes callbacks of despawned nodes.
+
Parameters
+ + +
iBindingIdID of the binding to remove.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ bIsBroadcasting

+ +
+
+
+template<typename FunctionReturnType , typename... FunctionArgs>
+ + + + + +
+ + + + +
std::atomic_flag ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>::bIsBroadcasting {}
+
+private
+
+

Determines whether we are currently broadcasting or not.

+ +
+
+ +

◆ iAvailableBindingId

+ +
+
+
+template<typename FunctionReturnType , typename... FunctionArgs>
+ + + + + +
+ + + + +
std::atomic<size_t> ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>::iAvailableBindingId {0}
+
+private
+
+

Stores the next free (available for use) binding ID.

+ +
+
+ +

◆ mtxCallbacks

+ +
+
+
+template<typename FunctionReturnType , typename... FunctionArgs>
+ + + + + +
+ + + + +
std::pair< std::recursive_mutex, std::unordered_map<size_t, NodeFunction<FunctionReturnType(FunctionArgs...)> > > ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>::mtxCallbacks
+
+private
+
+

Stores map that should be used with the mutex. Map contains pairs of "binding ID" - "callback".

+ +
+
+ +

◆ mtxCallbacksToAdd

+ +
+
+
+template<typename FunctionReturnType , typename... FunctionArgs>
+ + + + + +
+ + + + +
std::pair< std::recursive_mutex, std::unordered_map<size_t, NodeFunction<FunctionReturnType(FunctionArgs...)> > > ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>::mtxCallbacksToAdd
+
+private
+
+

Stores map that should be used with the mutex. Map contains pairs of "binding ID" - "callback" to add to mtxCallbacks.

+ +
+
+ +

◆ mtxCallbacksToRemove

+ +
+
+
+template<typename FunctionReturnType , typename... FunctionArgs>
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, std::vector<size_t> > ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>::mtxCallbacksToRemove
+
+private
+
+

Stores array that should be used with the mutex. Array contains binding IDs to remove from mtxCallbacks.

+ +
+
+ +

◆ mtxSpawnedOwnerNode

+ +
+
+
+template<typename FunctionReturnType , typename... FunctionArgs>
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, Node*> ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>::mtxSpawnedOwnerNode
+
+private
+
+

Information about the owner node.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.js b/classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.js new file mode 100644 index 000000000..bf96e3307 --- /dev/null +++ b/classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.js @@ -0,0 +1,16 @@ +var classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4 = +[ + [ "broadcast", "classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#aa5768a935e524fcd12d04dd121b912e6", null ], + [ "getSubscriberCount", "classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#aa0703d7e0cab10459f4a2a227603f62e", null ], + [ "onOwnerNodeDespawning", "classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a9499a271ec2c8a036ac69e2ed823efc0", null ], + [ "onOwnerNodeSpawning", "classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#aee8f02eeef7b435dd2eccee5585010ee", null ], + [ "removeAllCallbacks", "classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a8fdcd63923d32c5bf567d871872cc7f7", null ], + [ "subscribe", "classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a863d2fe913a2ebc3a505c15fe4e343fd", null ], + [ "unsubscribe", "classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a78174056c24c62fe7f2d2b6bfab2a850", null ], + [ "bIsBroadcasting", "classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a7a25b2da3659aab3c2877fbe625a4e82", null ], + [ "iAvailableBindingId", "classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#adba97d6fe0225a124029e9518a6aec16", null ], + [ "mtxCallbacks", "classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#ad6e940c530716142832a91432c786952", null ], + [ "mtxCallbacksToAdd", "classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a81482c16a2389e577c48b84dd61b7eaf", null ], + [ "mtxCallbacksToRemove", "classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a42b58752ab6a036c172fa0126ed66863", null ], + [ "mtxSpawnedOwnerNode", "classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a928215dd35eeb35f2fddb0b15548100f", null ] +]; \ No newline at end of file diff --git a/classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.png b/classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ab7156d2afa6bab7eff2e82c84d98a4cd5038502 GIT binary patch literal 1267 zcmeAS@N?(olHy`uVBq!ia0y~yU|bGl2XHV0$*zlD`+<~nfKQ0)|NsAi%olIImi8Z7 zZegHVATj;SivtG^0L6nRU0wl{<17jC3uXZF!N8np_7w&OmO4)t$B+ufw{ve6-Lc|v znY~sk{QrOP`xCbcJXmzm;-kcMM=x7LP639>9ea`@r>Sn$IV}_w;bG)Dsd4HY52JmP zgguXi7b%_m;pL|y8E=1X<&60I=9}#PMM*C;QC`)V^7quQewE|1X3To0?&$I9_t(#J z?4~E2TDh@rMV!trg>T{(vFwT`-(QcmwDmh^mbuw}`{a$XlkR3j^_KpPY@Ty`RoiW! zv^$0c{Tp`se424iDo;MVIYi!`ebS$_z0)sm+xMGGEvrqOrJB)#d6-X;=6y1%{v}?-|4?tS+?f<`{yb0&#JV0!zvQq zUjI=ddnrwEug?>;W0lczs=rQO{&mB0!V~k?%g+U0HjjH)J!f7_r|$A@n|CR{>dJYy z6f2y}4{NDjU#ofR?Y)Tnz5eAEcPr;t`TalldrO?u*>h|6zJ6sXZ+}c~omJA?x5u`= zpIrX^-?HN8>G!r8cYL&z@%SWLrL8{6XX2C7;D9^Xsq$Fca$-u2s`{j!^-o+TeT0YZ z_2$c)biA{GVZVvt!Siov7UVy3oFCHsdE?}{9mwy zg#oCWK>-*y3`fF?m>Pg_!yph3)bdE%lF=Gl&{Ng?|;{hPdGquR37g5iSs zAqFzLSm&nIp80xp&GpGMcE%L{+Tv?zdQI?Z_aU~8|0hgVIa{*0sr%@(B@@+T=JCkp zqq+b8}ymRj?!R04=tl8cPmQDARyBv9#cUkq8Zx8aE z{Iv@7s$V4U(cKcOdiZ78wWuFB%YTWaQ zUH{))IVZVI+icE-6->{Ayf>NpHSe3Zwa==?*Ys?psr#~d%k{Q)y(-`M!`RP%k<9m9 ztN$9c>3^J){rS$9quXR=ak0&b>8h)IQ@=j#Yvb>gzoLKMVbfLrt#vIr(`0|+*7(Pl zOD#M_Po8$kOPW(YHBz!Xy2SiKu%FsXUca))*tzRdW%Dn*yJzkE=67+yyg9EsE?=?w zxby5wrT+P4`ycK*v9dUD;+!|hMr+?(U86PW@`ro7t^CjKy}nQ6ZCU=B?e~^j&w01U zKkx8P(cKcZ4?|+tS;p@5*H8J{{+avz^D9K-*=yjE=WZ=LGa*}tZ)dDpo1dtCh~E5AuoCN1f7tA6}`&0Pbp z*_xJ~mx_7iC)&sF{`W*h-SgL~H&4HpJI-`}p;S;bX$dg#O%jPmO%LqLgS + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::OpenLinkInBrowser Member List
+
+
+ +

This is the complete list of members for ne::OpenLinkInBrowser, including all inherited members.

+ + +
open(const std::string &sLink)ne::OpenLinkInBrowserstatic
+
+ + + + diff --git a/classne_1_1OpenLinkInBrowser.html b/classne_1_1OpenLinkInBrowser.html new file mode 100644 index 000000000..542a68c87 --- /dev/null +++ b/classne_1_1OpenLinkInBrowser.html @@ -0,0 +1,159 @@ + + + + + + + +Nameless Engine: ne::OpenLinkInBrowser Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::OpenLinkInBrowser Class Reference
+
+
+ +

#include <OpenLinkInBrowser.h>

+ + + + +

+Static Public Member Functions

static void open (const std::string &sLink)
 
+

Detailed Description

+

Simple class that provides a static function to open a link in default browser.

+

Member Function Documentation

+ +

◆ open()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::OpenLinkInBrowser::open (const std::string & sLink)
+
+static
+
+

Opens a web link in user's default browser.

+
Parameters
+ + +
sLinkWeb link. Example: "https://github.com/Flone-dnb/nameless-engine".
+
+
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/misc/OpenLinkInBrowser.h
  • +
  • src/engine_lib/private/misc/OpenLinkInBrowser.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1OpenLinkInBrowser.js b/classne_1_1OpenLinkInBrowser.js new file mode 100644 index 000000000..1d501b5b8 --- /dev/null +++ b/classne_1_1OpenLinkInBrowser.js @@ -0,0 +1,4 @@ +var classne_1_1OpenLinkInBrowser = +[ + [ "open", "classne_1_1OpenLinkInBrowser.html#a2f61d7c3eaf81e78929f92580c0f825b", null ] +]; \ No newline at end of file diff --git a/classne_1_1Pipeline-members.html b/classne_1_1Pipeline-members.html new file mode 100644 index 000000000..e5a871f55 --- /dev/null +++ b/classne_1_1Pipeline-members.html @@ -0,0 +1,152 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::Pipeline Member List
+
+
+ +

This is the complete list of members for ne::Pipeline, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addShader(const std::string &sShaderName)ne::ShaderUserprotected
combineShaderNames(std::string_view sVertexShaderName, std::string_view sPixelShaderName, std::string_view sComputeShaderName="")ne::Pipelinestatic
createComputePipeline(Renderer *pRenderer, PipelineManager *pPipelineManager, const std::string &sComputeShaderName)ne::Pipelineprivatestatic
createGraphicsPipeline(Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration)ne::Pipelineprivatestatic
findShader(ShaderType shaderType)ne::ShaderUserprotected
getConfiguration() constne::Pipeline
getCurrentShaderConfiguration(ShaderType shaderType)ne::Pipeline
getMaterialsThatUseThisPipeline()ne::Pipeline
getPipelineIdentifier() constne::Pipeline
getRenderer() constne::Pipeline
getShaderConstants()ne::Pipeline
getUintConstantOffset(const std::string &sConstantName)ne::Pipeline
mtxAssignedShadersne::ShaderUserprivate
mtxComputeShadersThatUseThisPipelinene::Pipelineprivate
mtxMaterialsThatUseThisPipelinene::Pipelineprivate
mtxShaderConstantsDatane::Pipelineprivate
onComputeShaderNoLongerUsingPipeline(ComputeShaderInterface *pComputeShaderInterface)ne::Pipelineprivate
onComputeShaderUsingPipeline(ComputeShaderInterface *pComputeShaderInterface)ne::Pipelineprivate
onMaterialNoLongerUsingPipeline(Material *pMaterial)ne::Pipelineprivate
onMaterialUsingPipeline(Material *pMaterial)ne::Pipelineprivate
operator=(const Pipeline &)=delete (defined in ne::Pipeline)ne::Pipeline
operator=(const ShaderUser &)=delete (defined in ne::ShaderUser)ne::ShaderUser
Pipeline()=delete (defined in ne::Pipeline)ne::Pipeline
Pipeline(const Pipeline &)=delete (defined in ne::Pipeline)ne::Pipeline
Pipeline(Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration)ne::Pipelineexplicitprotected
PipelineManager (defined in ne::Pipeline)ne::Pipelinefriend
PipelineSharedPtr (defined in ne::Pipeline)ne::Pipelinefriend
pPipelineConfigurationne::Pipelineprivate
pPipelineManagerne::Pipelineprivate
pRendererne::Pipelineprivate
pShaderManagerne::ShaderUserprivate
releaseInternalResources()=0ne::Pipelineprotectedpure virtual
releaseShader(const std::string &sShaderName) constne::ShaderUserprivate
restoreInternalResources()=0ne::Pipelineprotectedpure virtual
saveUsedShaderConfiguration(ShaderType shaderType, std::set< ShaderMacro > &&fullConfiguration)ne::Pipelineprotected
setShaderConstants(const std::unordered_map< std::string, size_t > &uintConstantsOffsets)ne::Pipelineprotected
ShaderUser()=delete (defined in ne::ShaderUser)ne::ShaderUser
ShaderUser(const ShaderUser &)=delete (defined in ne::ShaderUser)ne::ShaderUser
ShaderUser(ShaderManager *pShaderManager)ne::ShaderUserprotected
usedShaderConfigurationne::Pipelineprivate
~Pipeline() override=default (defined in ne::Pipeline)ne::Pipelinevirtual
~ShaderUser()ne::ShaderUserprotectedvirtual
+
+ + + + diff --git a/classne_1_1Pipeline.html b/classne_1_1Pipeline.html new file mode 100644 index 000000000..fd9984805 --- /dev/null +++ b/classne_1_1Pipeline.html @@ -0,0 +1,1042 @@ + + + + + + + +Nameless Engine: ne::Pipeline Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <Pipeline.h>

+
+Inheritance diagram for ne::Pipeline:
+
+
+ + +ne::ShaderUser +ne::DirectXPso +ne::VulkanPipeline + +
+ + + + +

+Classes

struct  ShaderConstantsData
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Pipeline (const Pipeline &)=delete
 
+Pipelineoperator= (const Pipeline &)=delete
 
std::optional< std::set< ShaderMacro > > getCurrentShaderConfiguration (ShaderType shaderType)
 
std::variant< size_t, ErrorgetUintConstantOffset (const std::string &sConstantName)
 
std::pair< std::mutex, std::unordered_set< Material * > > * getMaterialsThatUseThisPipeline ()
 
std::string getPipelineIdentifier () const
 
RenderergetRenderer () const
 
const PipelineConfigurationgetConfiguration () const
 
std::pair< std::mutex, std::optional< ShaderConstantsData > > * getShaderConstants ()
 
- Public Member Functions inherited from ne::ShaderUser
ShaderUser (const ShaderUser &)=delete
 
+ShaderUseroperator= (const ShaderUser &)=delete
 
+ + + +

+Static Public Member Functions

static std::string combineShaderNames (std::string_view sVertexShaderName, std::string_view sPixelShaderName, std::string_view sComputeShaderName="")
 
+ + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

 Pipeline (Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration)
 
void saveUsedShaderConfiguration (ShaderType shaderType, std::set< ShaderMacro > &&fullConfiguration)
 
virtual std::optional< ErrorreleaseInternalResources ()=0
 
virtual std::optional< ErrorrestoreInternalResources ()=0
 
void setShaderConstants (const std::unordered_map< std::string, size_t > &uintConstantsOffsets)
 
- Protected Member Functions inherited from ne::ShaderUser
 ShaderUser (ShaderManager *pShaderManager)
 
virtual ~ShaderUser ()
 
bool addShader (const std::string &sShaderName)
 
ShaderPackfindShader (ShaderType shaderType)
 
+ + + + + + + + + +

+Private Member Functions

void onMaterialUsingPipeline (Material *pMaterial)
 
void onMaterialNoLongerUsingPipeline (Material *pMaterial)
 
void onComputeShaderUsingPipeline (ComputeShaderInterface *pComputeShaderInterface)
 
void onComputeShaderNoLongerUsingPipeline (ComputeShaderInterface *pComputeShaderInterface)
 
+ + + + + +

+Static Private Member Functions

static std::variant< std::shared_ptr< Pipeline >, ErrorcreateGraphicsPipeline (Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration)
 
static std::variant< std::shared_ptr< Pipeline >, ErrorcreateComputePipeline (Renderer *pRenderer, PipelineManager *pPipelineManager, const std::string &sComputeShaderName)
 
+ + + + + + + + + + + + + + + +

+Private Attributes

std::pair< std::mutex, std::unordered_set< Material * > > mtxMaterialsThatUseThisPipeline
 
std::pair< std::mutex, std::unordered_set< ComputeShaderInterface * > > mtxComputeShadersThatUseThisPipeline
 
std::pair< std::mutex, std::optional< ShaderConstantsData > > mtxShaderConstantsData
 
std::unordered_map< ShaderType, std::set< ShaderMacro > > usedShaderConfiguration
 
const std::unique_ptr< PipelineConfigurationpPipelineConfiguration
 
PipelineManager *const pPipelineManager = nullptr
 
Renderer *const pRenderer = nullptr
 
+ + + + + +

+Friends

+class PipelineManager
 
+class PipelineSharedPtr
 
+

Detailed Description

+

Base class for render specific pipeline objects.

+

Constructor & Destructor Documentation

+ +

◆ Pipeline()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ne::Pipeline::Pipeline (RendererpRenderer,
PipelineManagerpPipelineManager,
std::unique_ptr< PipelineConfigurationpPipelineConfiguration 
)
+
+explicitprotected
+
+

Creates a new empty (no internal GPU resource is created) pipeline.

+
Parameters
+ + + + +
pRendererCurrent renderer.
pPipelineManagerPipeline manager that owns this pipeline.
pPipelineConfigurationSettings and usage details.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ combineShaderNames()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::string ne::Pipeline::combineShaderNames (std::string_view sVertexShaderName,
std::string_view sPixelShaderName,
std::string_view sComputeShaderName = "" 
)
+
+static
+
+

Combines shader names into a one string.

+
Remarks
This function exists to avoid duplicating the shader name combination formatting.
+
Parameters
+ + + + +
sVertexShaderNameName of the vertex shader that pipeline is using.
sPixelShaderNameName of the pixel shader that pipeline is using. If empty only vertex shader name will be returned.
sComputeShaderNameName of the compute shader that pipeline is using. Can be empty.
+
+
+
Returns
A (not unique) pipeline identifier.
+ +
+
+ +

◆ createComputePipeline()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::shared_ptr< Pipeline >, Error > ne::Pipeline::createComputePipeline (RendererpRenderer,
PipelineManagerpPipelineManager,
const std::string & sComputeShaderName 
)
+
+staticprivate
+
+

Assigns compute shader to create a render specific compute pipeline.

+
Parameters
+ + + + +
pRendererParent renderer that owns this pipeline.
pPipelineManagerPipeline manager that owns this pipeline.
sComputeShaderNameName of the compiled compute shader (see ShaderManager::compileShaders).
+
+
+
Returns
Error if shader was not found in ShaderManager or if failed to generate Pipeline, otherwise created Pipeline.
+ +
+
+ +

◆ createGraphicsPipeline()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::shared_ptr< Pipeline >, Error > ne::Pipeline::createGraphicsPipeline (RendererpRenderer,
PipelineManagerpPipelineManager,
std::unique_ptr< PipelineConfigurationpPipelineConfiguration 
)
+
+staticprivate
+
+

Assigns vertex and pixel shaders to create a render specific graphics pipeline (for usual rendering).

+
Parameters
+ + + + +
pRendererParent renderer that owns this pipeline.
pPipelineManagerPipeline manager that owns this pipeline.
pPipelineConfigurationSettings that determine pipeline usage and usage details.
+
+
+
Returns
Error if one or both were not found in ShaderManager or if failed to generate Pipeline, otherwise created Pipeline.
+ +
+
+ +

◆ getConfiguration()

+ +
+
+ + + + + + + +
const PipelineConfiguration * ne::Pipeline::getConfiguration () const
+
+

Returns pipeline's settings and usage details.

+
Warning
Do not delete (free) returned pointer. It's guaranteed to live while the object is alive.
+
Returns
Settings.
+ +
+
+ +

◆ getCurrentShaderConfiguration()

+ +
+
+ + + + + + + + +
std::optional< std::set< ShaderMacro > > ne::Pipeline::getCurrentShaderConfiguration (ShaderType shaderType)
+
+

Returns a shader configuration of the currently used shader.

+
Parameters
+ + +
shaderTypeShader type to get configuration of.
+
+
+
Returns
Empty if a shader of this type is not used by this Pipeline, otherwise shader configuration.
+ +
+
+ +

◆ getMaterialsThatUseThisPipeline()

+ +
+
+ + + + + + + +
std::pair< std::mutex, std::unordered_set< Material * > > * ne::Pipeline::getMaterialsThatUseThisPipeline ()
+
+

Returns an array of materials that currently reference this Pipeline. Must be used with mutex.

+
Returns
Array of materials that currently reference this Pipeline.
+ +
+
+ +

◆ getPipelineIdentifier()

+ +
+
+ + + + + + + +
std::string ne::Pipeline::getPipelineIdentifier () const
+
+

Constructs and returns a non unique identifier of this pipeline that contains used shader names.

+
Returns
A (not unique) pipeline identifier.
+ +
+
+ +

◆ getRenderer()

+ +
+
+ + + + + + + +
Renderer * ne::Pipeline::getRenderer () const
+
+

Returns renderer that owns this Pipeline.

+
Returns
Renderer.
+ +
+
+ +

◆ getShaderConstants()

+ +
+
+ + + + + + + +
std::pair< std::mutex, std::optional< Pipeline::ShaderConstantsData > > * ne::Pipeline::getShaderConstants ()
+
+

Returns push/root constants used in the pipeline (if were specified in the shaders).

+
Warning
Do not delete (free) returned pointer.
+
Returns
Optional constants.
+ +
+
+ +

◆ getUintConstantOffset()

+ +
+
+ + + + + + + + +
std::variant< size_t, Error > ne::Pipeline::getUintConstantOffset (const std::string & sConstantName)
+
+

Looks for an offset of a uint field in root/push constants of the specified name.

+
Parameters
+ + +
sConstantNameName of the push/root constant.
+
+
+
Returns
Error if something went wrong, otherwise offset (in uints) of the field from the start of the root/push constants struct.
+ +
+
+ +

◆ onComputeShaderNoLongerUsingPipeline()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::Pipeline::onComputeShaderNoLongerUsingPipeline (ComputeShaderInterfacepComputeShaderInterface)
+
+private
+
+

Called to notify this pipeline that the shared pointer to this pipeline (that compute shader interface stores) is now nullptr.

+
Warning
Call this function after clearing (setting to nullptr) the shared pointer, not before.
+
Parameters
+ + +
pComputeShaderInterfaceCompute shader interface that stopped using this pipeline.
+
+
+ +
+
+ +

◆ onComputeShaderUsingPipeline()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::Pipeline::onComputeShaderUsingPipeline (ComputeShaderInterfacepComputeShaderInterface)
+
+private
+
+

Called to notify this pipeline that a compute shader interface started storing a shared pointer to this pipeline.

+
Remarks
When a compute interface is no longer references the pipeline use onComputeShaderNoLongerUsingPipeline.
+
Parameters
+ + +
pComputeShaderInterfaceCompute shader interface that started using this pipeline.
+
+
+ +
+
+ +

◆ onMaterialNoLongerUsingPipeline()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::Pipeline::onMaterialNoLongerUsingPipeline (MaterialpMaterial)
+
+private
+
+

Called to notify this Pipeline that the shared pointer to this pipeline (that Material stores) is now nullptr.

+
Warning
Call this function after clearing (setting to nullptr) the shared pointer, not before.
+
Parameters
+ + +
pMaterialMaterial that stopped using this pipeline.
+
+
+ +
+
+ +

◆ onMaterialUsingPipeline()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::Pipeline::onMaterialUsingPipeline (MaterialpMaterial)
+
+private
+
+

Called to notify this pipeline that a material started storing a shared pointer to this pipeline.

+
Remarks
When a material is no longer references the Pipeline use onMaterialNoLongerUsingPipeline.
+
Parameters
+ + +
pMaterialMaterial that started using this pipeline.
+
+
+ +
+
+ +

◆ releaseInternalResources()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::optional< Error > ne::Pipeline::releaseInternalResources ()
+
+protectedpure virtual
+
+

Releases internal resources such as root signature or descriptor layout, internal pipeline object and etc.

+
Warning
Expects that the GPU is not referencing this Pipeline (command queue is empty) and that no drawing will occur until restoreInternalResources is called.
+
Remarks
Typically used before (!) changing something in the pipeline. Often it's a shader configuration change due to a change in some settings, for example when a material that uses this pipeline requested to use a diffuse texture, thus we need to define a "use diffuse texture" shader macro and for that we change the shader variant.
+
Returns
Error if something went wrong.
+ +

Implemented in ne::DirectXPso, and ne::VulkanPipeline.

+ +
+
+ +

◆ restoreInternalResources()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::optional< Error > ne::Pipeline::restoreInternalResources ()
+
+protectedpure virtual
+
+

Creates internal resources using the current shader configuration.

+
Remarks
Called after releaseInternalResources to create resources that will now reference changed (new) resources.
+
Returns
Error if something went wrong.
+ +

Implemented in ne::DirectXPso, and ne::VulkanPipeline.

+ +
+
+ +

◆ saveUsedShaderConfiguration()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::Pipeline::saveUsedShaderConfiguration (ShaderType shaderType,
std::set< ShaderMacro > && fullConfiguration 
)
+
+protected
+
+

Saves shader configuration of the currently used shader.

+
Remarks
This should be called by derived classes when they start to use some shader.
+
Parameters
+ + + +
shaderTypeType of the shader being currently used.
fullConfigurationShader's full (might include renderer's configuration) configuration.
+
+
+ +
+
+ +

◆ setShaderConstants()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::Pipeline::setShaderConstants (const std::unordered_map< std::string, size_t > & uintConstantsOffsets)
+
+protected
+
+

Sets new push/root constants that will were found in the shaders of the pipeline.

+
Parameters
+ + +
uintConstantsOffsetsEmpty if shader constants should not be used, otherwise pairs of: names of fields defined in GLSL as push constants or as root constants in HLSL (all with uint type) and offset of the constant from the beginning of the layout/struct.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ mtxComputeShadersThatUseThisPipeline

+ +
+
+ + + + + +
+ + + + +
std::pair<std::mutex, std::unordered_set<ComputeShaderInterface*> > ne::Pipeline::mtxComputeShadersThatUseThisPipeline
+
+private
+
+

Array of compute shader interfaces that currently reference this compute pipeline.

+
Remarks
Must be used with mutex.
+ +
+
+ +

◆ mtxMaterialsThatUseThisPipeline

+ +
+
+ + + + + +
+ + + + +
std::pair<std::mutex, std::unordered_set<Material*> > ne::Pipeline::mtxMaterialsThatUseThisPipeline
+
+private
+
+

Array of materials that currently reference this graphics pipeline.

+
Remarks
Must be used with mutex.
+ +
+
+ +

◆ mtxShaderConstantsData

+ +
+
+ + + + + +
+ + + + +
std::pair<std::mutex, std::optional<ShaderConstantsData> > ne::Pipeline::mtxShaderConstantsData
+
+private
+
+

Not empty if push/root constants are used.

+ +
+
+ +

◆ pPipelineConfiguration

+ +
+
+ + + + + +
+ + + + +
const std::unique_ptr<PipelineConfiguration> ne::Pipeline::pPipelineConfiguration
+
+private
+
+

Usage details of this pipeline.

+ +
+
+ +

◆ pPipelineManager

+ +
+
+ + + + + +
+ + + + +
PipelineManager* const ne::Pipeline::pPipelineManager = nullptr
+
+private
+
+

Do not delete (free) this pointer. Pipeline manager that owns this Pipeline.

+ +
+
+ +

◆ pRenderer

+ +
+
+ + + + + +
+ + + + +
Renderer* const ne::Pipeline::pRenderer = nullptr
+
+private
+
+

Do not delete (free) this pointer. Current renderer.

+ +
+
+ +

◆ usedShaderConfiguration

+ +
+
+ + + + + +
+ + + + +
std::unordered_map<ShaderType, std::set<ShaderMacro> > ne::Pipeline::usedShaderConfiguration
+
+private
+
+

Full shader configuration (might include renderer's configuration) of a currently used shader(s).

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/general/pipeline/Pipeline.h
  • +
  • src/engine_lib/private/render/general/pipeline/Pipeline.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1Pipeline.js b/classne_1_1Pipeline.js new file mode 100644 index 000000000..63810a4aa --- /dev/null +++ b/classne_1_1Pipeline.js @@ -0,0 +1,30 @@ +var classne_1_1Pipeline = +[ + [ "ShaderConstantsData", "structne_1_1Pipeline_1_1ShaderConstantsData.html", "structne_1_1Pipeline_1_1ShaderConstantsData" ], + [ "Pipeline", "classne_1_1Pipeline.html#a090092de0749ed546b5c8a86320cdf22", null ], + [ "combineShaderNames", "classne_1_1Pipeline.html#af7a9e8dc05049f4a0c760352a0a35135", null ], + [ "createComputePipeline", "classne_1_1Pipeline.html#a65c5d8932e6792fc8b584ad03fdf28f6", null ], + [ "createGraphicsPipeline", "classne_1_1Pipeline.html#a7201a6cf1a84a049527ed8b3a4226d8d", null ], + [ "getConfiguration", "classne_1_1Pipeline.html#ac2e7491482673ebcbbbeb707929b0c1c", null ], + [ "getCurrentShaderConfiguration", "classne_1_1Pipeline.html#ae0485a87a3355641f8afaa7d4a28d9d7", null ], + [ "getMaterialsThatUseThisPipeline", "classne_1_1Pipeline.html#a9e2644e49b3f3d70893a3672aaef44f5", null ], + [ "getPipelineIdentifier", "classne_1_1Pipeline.html#a218ccad73ae55717fa7a460685058e97", null ], + [ "getRenderer", "classne_1_1Pipeline.html#aec27eb8ac8215829a22da7153375b7c7", null ], + [ "getShaderConstants", "classne_1_1Pipeline.html#a1f70f9ad1f96d425f6f6328397f8c36b", null ], + [ "getUintConstantOffset", "classne_1_1Pipeline.html#a57db0645e52bc62e08edb5459ad3be4d", null ], + [ "onComputeShaderNoLongerUsingPipeline", "classne_1_1Pipeline.html#ac3a9612dddfef7d6a717be4790a65ef7", null ], + [ "onComputeShaderUsingPipeline", "classne_1_1Pipeline.html#af4273d385ab2a9d70874e290c27dfc17", null ], + [ "onMaterialNoLongerUsingPipeline", "classne_1_1Pipeline.html#a4d95882c56e6ede0aee77a75f08248ad", null ], + [ "onMaterialUsingPipeline", "classne_1_1Pipeline.html#a1feae2550cfd0920cc0a22723edf64ed", null ], + [ "releaseInternalResources", "classne_1_1Pipeline.html#a413262f60974f9c5ac973969d0aad319", null ], + [ "restoreInternalResources", "classne_1_1Pipeline.html#a5ae100670225ade4287f4ba6db73ca14", null ], + [ "saveUsedShaderConfiguration", "classne_1_1Pipeline.html#aa2163521b46e65c7dff05f3ccd2fb036", null ], + [ "setShaderConstants", "classne_1_1Pipeline.html#aa78fa21db079ad0a9f2dbf5b397f2bfe", null ], + [ "mtxComputeShadersThatUseThisPipeline", "classne_1_1Pipeline.html#afdec478a2fb8ef8209bf994bb39a7962", null ], + [ "mtxMaterialsThatUseThisPipeline", "classne_1_1Pipeline.html#a356e051dc0a1c064de3231c7d50b1f1f", null ], + [ "mtxShaderConstantsData", "classne_1_1Pipeline.html#a0960d5e2e5e4877ae19bb6550ff4dfa7", null ], + [ "pPipelineConfiguration", "classne_1_1Pipeline.html#a3e237d16f103bd14b22a050887184069", null ], + [ "pPipelineManager", "classne_1_1Pipeline.html#aaf4dd0a9d10352cf4d6aa858cadcffcf", null ], + [ "pRenderer", "classne_1_1Pipeline.html#a4609e9e9ef33b970cc04d5aa90c9ffd4", null ], + [ "usedShaderConfiguration", "classne_1_1Pipeline.html#a7a17a0d8d81d5c6cf6c5b2c34643c950", null ] +]; \ No newline at end of file diff --git a/classne_1_1Pipeline.png b/classne_1_1Pipeline.png new file mode 100644 index 0000000000000000000000000000000000000000..c91f618fb6f8c06a14520be1c19387fb9862c878 GIT binary patch literal 1069 zcmeAS@N?(olHy`uVBq!ia0vp^pMbc7gBeJ^;&(FyQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#Ns$c)B=-R4~4s`*zZ1EdjRK z?ONII{&)Ec`O2_-_x-l!NdL{H!ps~d&5z?7{yU$u{Lc2EJH_*rw+3^G>J-(?Y$wSD z+V3@%-@gCXdlHwJY5)9EeNR`*hEJEDEIIX3?2_h&sW%qA{r0ot@0Zsf?Z4{%)-6xW zKb35fA#S|y=kw@4~2_8WBn|=VMprsQ^Ciyq@Hcq`N6Kb z>S<>CwN3Zx7T@uSKdUc)+49If*Gn;c1slSrcBk)rvm;}o$@E$+|C`^Y?(5oI{oj;J zT(bJzjx#qV)mR>=j-2#wQUKcvFAeWY*IJAm!kr=~ZBv`VxNB1JxxI`QD$EDA?wI$< zAm-f9s#E5VS6jvhSQ?of_{o{tuvz#NL%RAD#&doe%yZ@juvu6y%{#pu9I zGzBuvQ-WUc9uW6TOREJ+t!vpd^Cs9jyWl#NJHNNj6nz@@@tX&Ga9!<;nfmj2Hpf3L z>3%74)9YtoP4Vh;XVx6;n>t@A?c~(!sjGLcFgDKK_*~=q>+TY@g2lcy*5c3K>c1 z2Y=9fSa#lk=dd{Ai?ij2MNTo?2I`judh#t0_W@OY0|u+RlVn0QFfAxAh?}=z+ots^-2XjE zQ1|2(tNm*`-}dxd-lBXv&7GST?U~ei&-O;@z0dDc=QA$%3%2R{`$s4Fdhsr2lYPp6 zH0LtMOX31Z$W4)>r4`RA4v(gV^(x2QcY=YuThy`efEA%jb6_ gm(M9aH}@z1p0G*Nb00tX4$RmLp00i_>zopr0P8^*CIA2c literal 0 HcmV?d00001 diff --git a/classne_1_1PipelineConfiguration-members.html b/classne_1_1PipelineConfiguration-members.html new file mode 100644 index 000000000..8d9bc0720 --- /dev/null +++ b/classne_1_1PipelineConfiguration-members.html @@ -0,0 +1,124 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::PipelineConfiguration Member List
+
+
+ +

This is the complete list of members for ne::PipelineConfiguration, including all inherited members.

+ + + + + + + + + + + + + + + +
additionalVertexShaderMacrosne::PipelineConfigurationprotected
getAdditionalPixelShaderMacros() constne::PipelineConfigurationinlinevirtual
getAdditionalVertexShaderMacros() constne::PipelineConfigurationinline
getComputeShaderName() constne::PipelineConfigurationinlinevirtual
getGraphicsType() const =0ne::PipelineConfigurationpure virtual
getPixelShaderName() constne::PipelineConfigurationinlinevirtual
getShadowMappingUsage() constne::PipelineConfigurationinlinevirtual
getVertexShaderName() constne::PipelineConfigurationinline
isDepthBiasEnabled() constne::PipelineConfigurationinlinevirtual
isPixelBlendingEnabled() constne::PipelineConfigurationinlinevirtual
PipelineConfiguration()=delete (defined in ne::PipelineConfiguration)ne::PipelineConfiguration
PipelineConfiguration(const std::string &sVertexShaderName, const std::set< ShaderMacro > &additionalVertexShaderMacros)ne::PipelineConfigurationprotected
sVertexShaderNamene::PipelineConfigurationprotected
~PipelineConfiguration()=default (defined in ne::PipelineConfiguration)ne::PipelineConfigurationvirtual
+
+ + + + diff --git a/classne_1_1PipelineConfiguration.html b/classne_1_1PipelineConfiguration.html new file mode 100644 index 000000000..9911bc599 --- /dev/null +++ b/classne_1_1PipelineConfiguration.html @@ -0,0 +1,517 @@ + + + + + + + +Nameless Engine: ne::PipelineConfiguration Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::PipelineConfiguration Class Referenceabstract
+
+
+ +

#include <PipelineConfiguration.h>

+
+Inheritance diagram for ne::PipelineConfiguration:
+
+
+ + +ne::ColorPipelineConfiguration +ne::ComputePipelineConfiguration +ne::DepthPipelineConfiguration + +
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

std::set< ShaderMacro > getAdditionalVertexShaderMacros () const
 
std::string_view getVertexShaderName () const
 
virtual std::optional< GraphicsPipelineType > getGraphicsType () const =0
 
virtual std::set< ShaderMacro > getAdditionalPixelShaderMacros () const
 
virtual std::string_view getPixelShaderName () const
 
virtual std::string_view getComputeShaderName () const
 
virtual bool isPixelBlendingEnabled () const
 
virtual bool isDepthBiasEnabled () const
 
virtual std::optional< PipelineShadowMappingUsage > getShadowMappingUsage () const
 
+ + + +

+Protected Member Functions

 PipelineConfiguration (const std::string &sVertexShaderName, const std::set< ShaderMacro > &additionalVertexShaderMacros)
 
+ + + + + +

+Protected Attributes

std::set< ShaderMacro > additionalVertexShaderMacros
 
const std::string sVertexShaderName
 
+

Detailed Description

+

Base class for pipeline options.

+
Remarks
In order to specify pipeline settings create a new object of a type that derives from this class.
+

Constructor & Destructor Documentation

+ +

◆ PipelineConfiguration()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ne::PipelineConfiguration::PipelineConfiguration (const std::string & sVertexShaderName,
const std::set< ShaderMacro > & additionalVertexShaderMacros 
)
+
+protected
+
+

Initializes options.

+
Parameters
+ + + +
sVertexShaderNameName of the compiled vertex shader to use (empty if not used).
additionalVertexShaderMacrosAdditional macros to enable for vertex shader configuration.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getAdditionalPixelShaderMacros()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::set< ShaderMacro > ne::PipelineConfiguration::getAdditionalPixelShaderMacros () const
+
+inlinevirtual
+
+

Returns additional macros to enable for pixel/fragment shader configuration (if pixel/fragment shader is used).

+
Returns
Empty set if pixel/fragment shader is not used or no additional pixel/fragment shader macros to enable.
+ +

Reimplemented in ne::ColorPipelineConfiguration.

+ +
+
+ +

◆ getAdditionalVertexShaderMacros()

+ +
+
+ + + + + +
+ + + + + + + +
std::set< ShaderMacro > ne::PipelineConfiguration::getAdditionalVertexShaderMacros () const
+
+inline
+
+

Returns additional macros to enable for vertex shader configuration.

+
Returns
Additional vertex shader macros to enable.
+ +
+
+ +

◆ getComputeShaderName()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string_view ne::PipelineConfiguration::getComputeShaderName () const
+
+inlinevirtual
+
+

Returns name of the compute shader that should be used.

+
Returns
Empty string if compute shader is not used, otherwise name of the compiled shader.
+ +

Reimplemented in ne::ComputePipelineConfiguration.

+ +
+
+ +

◆ getGraphicsType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::optional< GraphicsPipelineType > ne::PipelineConfiguration::getGraphicsType () const
+
+pure virtual
+
+

Returns type of the pipeline that the object describes.

+
Returns
Empty if not a graphics pipeline, otherwise graphics pipeline type.
+ +

Implemented in ne::ColorPipelineConfiguration, ne::DepthPipelineConfiguration, and ne::ComputePipelineConfiguration.

+ +
+
+ +

◆ getPixelShaderName()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string_view ne::PipelineConfiguration::getPixelShaderName () const
+
+inlinevirtual
+
+

Returns name of the pixel/fragment shader that should be used.

+
Returns
Empty string if pixel/fragment shader is not used, otherwise name of the compiled shader.
+ +

Reimplemented in ne::ColorPipelineConfiguration, and ne::DepthPipelineConfiguration.

+ +
+
+ +

◆ getShadowMappingUsage()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::optional< PipelineShadowMappingUsage > ne::PipelineConfiguration::getShadowMappingUsage () const
+
+inlinevirtual
+
+

Tells if this pipeline is used in shadow mapping.

+
Returns
Empty if not used in shadow mapping, otherwise light sources that can use the pipeline for shadow mapping.
+ +

Reimplemented in ne::DepthPipelineConfiguration.

+ +
+
+ +

◆ getVertexShaderName()

+ +
+
+ + + + + +
+ + + + + + + +
std::string_view ne::PipelineConfiguration::getVertexShaderName () const
+
+inline
+
+

Returns name of the vertex shader that should be used.

+
Returns
Name of the compiled shader.
+ +
+
+ +

◆ isDepthBiasEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool ne::PipelineConfiguration::isDepthBiasEnabled () const
+
+inlinevirtual
+
+

Tells whether depth bias (offset is enabled or not).

+
Returns
true to enable, false to disable.
+ +

Reimplemented in ne::DepthPipelineConfiguration.

+ +
+
+ +

◆ isPixelBlendingEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool ne::PipelineConfiguration::isPixelBlendingEnabled () const
+
+inlinevirtual
+
+

Tells whether pixel blending should be enabled or not.

+
Returns
true to enable, false to disable.
+ +

Reimplemented in ne::ColorPipelineConfiguration.

+ +
+
+

Member Data Documentation

+ +

◆ additionalVertexShaderMacros

+ +
+
+ + + + + +
+ + + + +
std::set<ShaderMacro> ne::PipelineConfiguration::additionalVertexShaderMacros
+
+protected
+
+

Additional macros to enable for vertex shader configuration.

+ +
+
+ +

◆ sVertexShaderName

+ +
+
+ + + + + +
+ + + + +
const std::string ne::PipelineConfiguration::sVertexShaderName
+
+protected
+
+

Name of the compiled vertex shader to use.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/general/pipeline/PipelineConfiguration.h
  • +
  • src/engine_lib/private/render/general/pipeline/PipelineConfiguration.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1PipelineConfiguration.js b/classne_1_1PipelineConfiguration.js new file mode 100644 index 000000000..aa48ebd93 --- /dev/null +++ b/classne_1_1PipelineConfiguration.js @@ -0,0 +1,15 @@ +var classne_1_1PipelineConfiguration = +[ + [ "PipelineConfiguration", "classne_1_1PipelineConfiguration.html#ae5da1f4416a498503bf23fe527a53fda", null ], + [ "getAdditionalPixelShaderMacros", "classne_1_1PipelineConfiguration.html#a346f88493f1047ffa54fa6d8fff6fb80", null ], + [ "getAdditionalVertexShaderMacros", "classne_1_1PipelineConfiguration.html#ad328d153d41a2c8bff9907f83859a7fa", null ], + [ "getComputeShaderName", "classne_1_1PipelineConfiguration.html#a84366bcf00697f665cb36b8340d9d1f3", null ], + [ "getGraphicsType", "classne_1_1PipelineConfiguration.html#a4084ed64ee6c27161b3ed51e5a070ab6", null ], + [ "getPixelShaderName", "classne_1_1PipelineConfiguration.html#af456593254ac0de2177f2659648d5e41", null ], + [ "getShadowMappingUsage", "classne_1_1PipelineConfiguration.html#a30ee2a7f2a65d020b7d964e29faff289", null ], + [ "getVertexShaderName", "classne_1_1PipelineConfiguration.html#a824a09704e1e98cb14e218948097d8c0", null ], + [ "isDepthBiasEnabled", "classne_1_1PipelineConfiguration.html#a98ff43f107e6b379906da89db9eebe97", null ], + [ "isPixelBlendingEnabled", "classne_1_1PipelineConfiguration.html#af920980ff0dc2f664c0dc4857ae40d61", null ], + [ "additionalVertexShaderMacros", "classne_1_1PipelineConfiguration.html#a7b9fe41245b35d95e5602badac01b8a7", null ], + [ "sVertexShaderName", "classne_1_1PipelineConfiguration.html#a5bc2f65cd1ab7ef4017a94b1471649e1", null ] +]; \ No newline at end of file diff --git a/classne_1_1PipelineConfiguration.png b/classne_1_1PipelineConfiguration.png new file mode 100644 index 0000000000000000000000000000000000000000..bafc02d449283aa0e03d73546aa9cfddc5a00a3f GIT binary patch literal 1377 zcmbtUX;4#F7=1C7SP=>xmnal1ixeW82qb_+B&Y$3kN`qT2x>)HjOK+1vQz}6P-&S7 z38{b!$YKyO1%(jSh#z=Iu0O%1<5J&*9354^2El7B-)V=T+4n_ffLEc)e7EUK;7FoIN6wm#4`J@pc#=OEfY%>~%cjCX0Qh8vNbn3wL@4e|vuj-qymu8^Kay#)`w|hK z`!!$}JjZAFRe@fUrHXS4yGFry>JSwPAp5aYLdT9@KtPtpMcM47dE~{&#Bf`s^4ZZZ}xrmEPY~esyr*pHAH{ZD3na^ z|Ek3I`Eq^yRS%bJO0!w8;7M@pe$$dnE^=8Xq$!-TT0^z?y86O+I;d+m_J>bZR+jZf z@Pp&lIq1~nLHsN#^qy(xDRwZ{x)O8@hi>ziF8nV7i zSdw+Z6|{B{bTOJ{XlS&dnYf!uPh34l_@KX`#E0NcGgJRg2$6#PDBX>JDM}q;4FO^R z-GD#?$T?*V2d<0Fr;mT6IptH7Hs2yy7v|0YgOYFf1u z($!X_)~T1T)U2N}&Li6qPwlhGHK$&W{d0W&1nEI2ju^8OV@Xt;m7DX!s*22=ZgKNU z)x(wHOAEXdHYZ2ZsTqu0bx=9GI?GR{;hR^ zqT@NG+t_S}CQ2|fda-izBVFhGilk8Di=X95A)p%<^Suuzwm3iutzkb%F%Iq;Nt;KT zK*rtMt42?~<%+_pG(BT$jx%#RT5R=)BJhIu`-$C&c763h&lTl^zwhwpqI=- zRFV!J&)Y1|RFv87CXh+;}iel)O zuFo@zA|8@>Jsjv8FHg~sBfhP=A=x7DCXd0e$S;lNG)i9uSzBIPi|_NL^Lt)`u}(ae zJfdQxG`yY$CRoYVZgb8kNc6+pGkWt2ciGZLP$`mESUC&Gx^=JRwW3r=Qq(u0K36;E z#X0n2r>&6fQ|(xEM_O*{(qn^{6o6g3Vn#9+EmS+@?@X4tdkKece%W!)8s2tgUTECw zJDY)u-BY)H<^9oMZc{?{c#)UZ=;RB`W6o4tTWQ?@{;*ez#p>6t7coMAvMZwIxx)kQ9ZR5M#E( zHj$ixZIb$rO`>W*_MitIT1=JE(o5Y_WlOx#A8>0ZQi#^~$iZiHxETUOZ-0W|Xk_}| D&Ul;V literal 0 HcmV?d00001 diff --git a/classne_1_1PipelineManager-members.html b/classne_1_1PipelineManager-members.html new file mode 100644 index 000000000..53a862378 --- /dev/null +++ b/classne_1_1PipelineManager-members.html @@ -0,0 +1,136 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::PipelineManager Member List
+
+
+ +

This is the complete list of members for ne::PipelineManager, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
bindBuffersToAllVulkanPipelinesIfUsed(const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> &vResources, const std::string &sShaderResourceName, VkDescriptorType descriptorType)ne::PipelineManager
bindImageToAllVulkanPipelinesIfUsed(GpuResource *pImageResourceToBind, const std::string &sShaderResourceName, VkDescriptorType descriptorType, VkImageLayout imageLayout, VkSampler pSampler)ne::PipelineManager
clearGraphicsPipelinesInternalResourcesAndDelayRestoring()ne::PipelineManager
computePipelinesne::PipelineManagerprivate
ComputeShaderInterface (defined in ne::PipelineManager)ne::PipelineManagerfriend
createGraphicsPipelineForMaterial(std::unordered_map< std::string, ShaderPipelines > &pipelines, const std::string &sShaderNames, const std::set< ShaderMacro > &macrosToUse, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration, Material *pMaterial)ne::PipelineManagerprivate
DelayedPipelineResourcesCreation (defined in ne::PipelineManager)ne::PipelineManagerfriend
findOrCreatePipeline(std::unordered_map< std::string, ShaderPipelines > &pipelines, const std::string &sKeyToLookFor, const std::set< ShaderMacro > &macrosToLookFor, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration, Material *pMaterial)ne::PipelineManagerprivate
getComputeShadersForGraphicsQueueExecution()ne::PipelineManagerinline
getCurrentComputePipelineCount()ne::PipelineManager
getCurrentGraphicsPipelineCount()ne::PipelineManager
getGraphicsPipelineForMaterial(std::unique_ptr< PipelineConfiguration > pPipelineConfiguration, Material *pMaterial)ne::PipelineManager
getGraphicsPipelines()ne::PipelineManagerinline
getRenderer() constne::PipelineManager
mtxGraphicsPipelinesne::PipelineManagerprivate
onPipelineNoLongerUsedByComputeShaderInterface(const std::string &sComputeShaderName, ComputeShaderInterface *pComputeShaderInterface)ne::PipelineManagerprivate
onPipelineNoLongerUsedByMaterial(const std::string &sPipelineIdentifier)ne::PipelineManagerprivate
operator=(const PipelineManager &)=delete (defined in ne::PipelineManager)ne::PipelineManager
Pipeline (defined in ne::PipelineManager)ne::PipelineManagerfriend
PipelineManager(Renderer *pRenderer)ne::PipelineManager
PipelineManager()=delete (defined in ne::PipelineManager)ne::PipelineManager
PipelineManager(const PipelineManager &)=delete (defined in ne::PipelineManager)ne::PipelineManager
pRendererne::PipelineManagerprivate
releaseInternalGraphicsPipelinesResources()ne::PipelineManagerprivate
restoreInternalGraphicsPipelinesResources()ne::PipelineManagerprivate
~PipelineManager()ne::PipelineManagervirtual
+
+ + + + diff --git a/classne_1_1PipelineManager.html b/classne_1_1PipelineManager.html new file mode 100644 index 000000000..d09fe56af --- /dev/null +++ b/classne_1_1PipelineManager.html @@ -0,0 +1,860 @@ + + + + + + + +Nameless Engine: ne::PipelineManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <PipelineManager.h>

+ + + + +

+Classes

struct  ComputePipelines
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PipelineManager (Renderer *pRenderer)
 
virtual ~PipelineManager ()
 
PipelineManager (const PipelineManager &)=delete
 
+PipelineManageroperator= (const PipelineManager &)=delete
 
std::optional< ErrorbindBuffersToAllVulkanPipelinesIfUsed (const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> &vResources, const std::string &sShaderResourceName, VkDescriptorType descriptorType)
 
std::optional< ErrorbindImageToAllVulkanPipelinesIfUsed (GpuResource *pImageResourceToBind, const std::string &sShaderResourceName, VkDescriptorType descriptorType, VkImageLayout imageLayout, VkSampler pSampler)
 
DelayedPipelineResourcesCreation clearGraphicsPipelinesInternalResourcesAndDelayRestoring ()
 
std::variant< PipelineSharedPtr, ErrorgetGraphicsPipelineForMaterial (std::unique_ptr< PipelineConfiguration > pPipelineConfiguration, Material *pMaterial)
 
std::pair< std::recursive_mutex *, QueuedForExecutionComputeShaders * > getComputeShadersForGraphicsQueueExecution ()
 
std::pair< std::recursive_mutex, GraphicsPipelineRegistry > * getGraphicsPipelines ()
 
size_t getCurrentGraphicsPipelineCount ()
 
size_t getCurrentComputePipelineCount ()
 
RenderergetRenderer () const
 
+ + + + + + + + + + + + + +

+Private Member Functions

std::optional< ErrorreleaseInternalGraphicsPipelinesResources ()
 
std::optional< ErrorrestoreInternalGraphicsPipelinesResources ()
 
std::variant< PipelineSharedPtr, ErrorcreateGraphicsPipelineForMaterial (std::unordered_map< std::string, ShaderPipelines > &pipelines, const std::string &sShaderNames, const std::set< ShaderMacro > &macrosToUse, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration, Material *pMaterial)
 
void onPipelineNoLongerUsedByMaterial (const std::string &sPipelineIdentifier)
 
void onPipelineNoLongerUsedByComputeShaderInterface (const std::string &sComputeShaderName, ComputeShaderInterface *pComputeShaderInterface)
 
std::variant< PipelineSharedPtr, ErrorfindOrCreatePipeline (std::unordered_map< std::string, ShaderPipelines > &pipelines, const std::string &sKeyToLookFor, const std::set< ShaderMacro > &macrosToLookFor, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration, Material *pMaterial)
 
+ + + + + + + +

+Private Attributes

std::pair< std::recursive_mutex, GraphicsPipelineRegistrymtxGraphicsPipelines
 
ComputePipelines computePipelines
 
Renderer *const pRenderer = nullptr
 
+ + + + + + + +

+Friends

+class Pipeline
 
+class DelayedPipelineResourcesCreation
 
+class ComputeShaderInterface
 
+

Detailed Description

+

Base class for managing render specific pipelines.

+

Constructor & Destructor Documentation

+ +

◆ PipelineManager()

+ +
+
+ + + + + + + + +
ne::PipelineManager::PipelineManager (RendererpRenderer)
+
+

Creates a new pipeline manager.

+
Parameters
+ + +
pRendererRenderer that owns this pipeline manager.
+
+
+ +
+
+ +

◆ ~PipelineManager()

+ +
+
+ + + + + +
+ + + + + + + +
ne::PipelineManager::~PipelineManager ()
+
+virtual
+
+

Checks that there are no existing pipelines left.

+ +
+
+

Member Function Documentation

+ +

◆ bindBuffersToAllVulkanPipelinesIfUsed()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::PipelineManager::bindBuffersToAllVulkanPipelinesIfUsed (const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> & vResources,
const std::string & sShaderResourceName,
VkDescriptorType descriptorType 
)
+
+

Binds the specified GPU resources (buffers, not images) to all Vulkan pipelines that use the specified shader resource.

+
Parameters
+ + + + +
vResourcesResources to bind.
sShaderResourceNameName of the shader resource (name from shader code) to bind to.
descriptorTypeType of the descriptor to bind.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ bindImageToAllVulkanPipelinesIfUsed()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::PipelineManager::bindImageToAllVulkanPipelinesIfUsed (GpuResourcepImageResourceToBind,
const std::string & sShaderResourceName,
VkDescriptorType descriptorType,
VkImageLayout imageLayout,
VkSampler pSampler 
)
+
+

Binds the specified GPU image (not buffer) to all Vulkan pipelines that use the specified shader resource.

+
Parameters
+ + + + + + +
pImageResourceToBindImage to bind.
sShaderResourceNameName of the shader resource (name from shader code) to bind to.
descriptorTypeType of the descriptor to bind.
imageLayoutLayout of the image.
pSamplerSampler to use for the image.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ clearGraphicsPipelinesInternalResourcesAndDelayRestoring()

+ +
+
+ + + + + + + +
DelayedPipelineResourcesCreation ne::PipelineManager::clearGraphicsPipelinesInternalResourcesAndDelayRestoring ()
+
+

Returns a RAII object that once acquired waits for the GPU to finish work up to this point, pauses the rendering, releases all internal resources from all graphics pipelines, then in destructor restores them.

+
Returns
RAII object.
+ +
+
+ +

◆ createGraphicsPipelineForMaterial()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< PipelineSharedPtr, Error > ne::PipelineManager::createGraphicsPipelineForMaterial (std::unordered_map< std::string, ShaderPipelines > & pipelines,
const std::string & sShaderNames,
const std::set< ShaderMacro > & macrosToUse,
std::unique_ptr< PipelineConfigurationpPipelineConfiguration,
MaterialpMaterial 
)
+
+private
+
+

Assigns vertex and pixel shaders to create a render specific graphics pipeline (for usual rendering).

+
Parameters
+ + + + + + +
pipelinesPipelines of specific type to look in.
sShaderNamesShader or shaders (map key value) for target pipeline.
macrosToUseMacros that are set (can be only vertex or combined).
pPipelineConfigurationSettings that determine pipeline usage and usage details.
pMaterialMaterial that requests the pipeline.
+
+
+
Returns
Error if one or both were not found in ShaderManager or if failed to generate pipeline, otherwise created pipeline.
+ +
+
+ +

◆ findOrCreatePipeline()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< PipelineSharedPtr, Error > ne::PipelineManager::findOrCreatePipeline (std::unordered_map< std::string, ShaderPipelines > & pipelines,
const std::string & sKeyToLookFor,
const std::set< ShaderMacro > & macrosToLookFor,
std::unique_ptr< PipelineConfigurationpPipelineConfiguration,
MaterialpMaterial 
)
+
+private
+
+

Looks for a pipeline and returns it if found, otherwise creates and return it.

+
Parameters
+ + + + + + +
pipelinesPipelines of specific type to look in.
sKeyToLookForShader or shaders (map key value) for target pipeline.
macrosToLookForMacros that are set (can be only vertex or combined).
pPipelineConfigurationSettings that determine pipeline usage and usage details.
pMaterialMaterial that requests the pipeline.
+
+
+
Returns
Error if something went wrong, otherwise valid pipeline pointer.
+ +
+
+ +

◆ getComputeShadersForGraphicsQueueExecution()

+ +
+
+ + + + + +
+ + + + + + + +
std::pair< std::recursive_mutex *, QueuedForExecutionComputeShaders * > ne::PipelineManager::getComputeShadersForGraphicsQueueExecution ()
+
+inline
+
+

Returns all compute shaders and their pipelines to be executed on the graphics queue.

+
Warning
Do not delete (free) returned pointers.
+
Returns
Shaders and pipelines.
+ +
+
+ +

◆ getCurrentComputePipelineCount()

+ +
+
+ + + + + + + +
size_t ne::PipelineManager::getCurrentComputePipelineCount ()
+
+

Returns the total number of currently existing compute pipelines.

+
Returns
The total number of currently existing compute pipelines.
+ +
+
+ +

◆ getCurrentGraphicsPipelineCount()

+ +
+
+ + + + + + + +
size_t ne::PipelineManager::getCurrentGraphicsPipelineCount ()
+
+

Returns the total number of currently existing graphics pipelines.

+
Returns
The total number of currently existing graphics pipelines.
+ +
+
+ +

◆ getGraphicsPipelineForMaterial()

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::variant< PipelineSharedPtr, Error > ne::PipelineManager::getGraphicsPipelineForMaterial (std::unique_ptr< PipelineConfigurationpPipelineConfiguration,
MaterialpMaterial 
)
+
+

Look for already created pipeline that uses the specified shaders and settings and returns it, otherwise creates a new pipeline.

+
Remarks
If creating a new pipeline, loads the specified shaders from disk into the memory, they will be released from the memory once the pipeline object is destroyed (not the shared pointer) and no other object is using them.
+
Parameters
+ + + +
pPipelineConfigurationSettings that determine pipeline usage and usage details.
pMaterialMaterial that requests the pipeline.
+
+
+
Returns
Error if one or both shaders were not found in ShaderManager or if failed to generate pipeline, otherwise created pipeline.
+ +
+
+ +

◆ getGraphicsPipelines()

+ +
+
+ + + + + +
+ + + + + + + +
std::pair< std::recursive_mutex, GraphicsPipelineRegistry > * ne::PipelineManager::getGraphicsPipelines ()
+
+inline
+
+

Returns all vertex/pixel shaders and their graphics pipelines.

+
Warning
Do not delete (free) returned pointers.
+
Remarks
While the mutex is locked no pipeline will re-create its internal resources.
+
Returns
Shaders and pipelines.
+ +
+
+ +

◆ getRenderer()

+ +
+
+ + + + + + + +
Renderer * ne::PipelineManager::getRenderer () const
+
+

Returns renderer that owns this pipeline manager.

+
Returns
Renderer.
+ +
+
+ +

◆ onPipelineNoLongerUsedByComputeShaderInterface()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::PipelineManager::onPipelineNoLongerUsedByComputeShaderInterface (const std::string & sComputeShaderName,
ComputeShaderInterfacepComputeShaderInterface 
)
+
+private
+
+

Called from a pipeline when a compute shader interface is no longer using a pipeline.

+
Parameters
+ + + +
sComputeShaderNameName of the compute shader that the pipeline uses.
pComputeShaderInterfaceCompute shader interface that stopped using the pipeline.
+
+
+ +
+
+ +

◆ onPipelineNoLongerUsedByMaterial()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::PipelineManager::onPipelineNoLongerUsedByMaterial (const std::string & sPipelineIdentifier)
+
+private
+
+

Called from a pipeline when a material is no longer using a pipeline (for ex. because changing shaders).

+
Parameters
+ + +
sPipelineIdentifierPipeline identifier.
+
+
+ +
+
+ +

◆ releaseInternalGraphicsPipelinesResources()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::PipelineManager::releaseInternalGraphicsPipelinesResources ()
+
+private
+
+

Releases internal resources (such as root signature, internal pipeline, etc.) from all created graphics pipelines.

+
Warning
Expects that the GPU is not referencing graphics pipelines and that no drawing will occur until restoreInternalGraphicsPipelinesResources is called.
+
Remarks
Causes the mutex that guards graphics pipelines to be locked until restoreInternalGraphicsPipelinesResources is not called and finished.
+
+Typically used before changing something (for ex. shader configuration), so that no pipeline will reference old resources, to later call restoreInternalGraphicsPipelinesResources.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ restoreInternalGraphicsPipelinesResources()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::PipelineManager::restoreInternalGraphicsPipelinesResources ()
+
+private
+
+

Creates internal resources for all created graphics pipelines using their current configuration.

+
Remarks
Called after releaseInternalGraphicsPipelinesResources to create resources that will now reference changed (new) resources.
+
Returns
Error if something went wrong.
+ +
+
+

Member Data Documentation

+ +

◆ computePipelines

+ +
+
+ + + + + +
+ + + + +
ComputePipelines ne::PipelineManager::computePipelines
+
+private
+
+

Stores all compute pipelines.

+ +
+
+ +

◆ mtxGraphicsPipelines

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, GraphicsPipelineRegistry> ne::PipelineManager::mtxGraphicsPipelines
+
+private
+
+

Groups all graphics pipelines.

+ +
+
+ +

◆ pRenderer

+ +
+
+ + + + + +
+ + + + +
Renderer* const ne::PipelineManager::pRenderer = nullptr
+
+private
+
+

Do not delete (free) this pointer. Renderer that owns this pipeline manager.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/general/pipeline/PipelineManager.h
  • +
  • src/engine_lib/private/render/general/pipeline/PipelineManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1PipelineManager.js b/classne_1_1PipelineManager.js new file mode 100644 index 000000000..cd15c98e8 --- /dev/null +++ b/classne_1_1PipelineManager.js @@ -0,0 +1,24 @@ +var classne_1_1PipelineManager = +[ + [ "ComputePipelines", "structne_1_1PipelineManager_1_1ComputePipelines.html", "structne_1_1PipelineManager_1_1ComputePipelines" ], + [ "PipelineManager", "classne_1_1PipelineManager.html#a977740ed73ba168c3b95c7b9e828c9a0", null ], + [ "~PipelineManager", "classne_1_1PipelineManager.html#abc3041bd4f89a01584c07810d97c5cb9", null ], + [ "bindBuffersToAllVulkanPipelinesIfUsed", "classne_1_1PipelineManager.html#ab19fcac5d073e236595bbaba0ef05289", null ], + [ "bindImageToAllVulkanPipelinesIfUsed", "classne_1_1PipelineManager.html#a51f3fae6d2b1ad8dd957061c4b902093", null ], + [ "clearGraphicsPipelinesInternalResourcesAndDelayRestoring", "classne_1_1PipelineManager.html#a96c2a86cad7a37faad2508fb372201c5", null ], + [ "createGraphicsPipelineForMaterial", "classne_1_1PipelineManager.html#ab5a5dd302834a0098188defe1051edb6", null ], + [ "findOrCreatePipeline", "classne_1_1PipelineManager.html#ab535e2ce924545544f65fff07d192c7e", null ], + [ "getComputeShadersForGraphicsQueueExecution", "classne_1_1PipelineManager.html#aff2b14224c8e71e0f15daf965f54b398", null ], + [ "getCurrentComputePipelineCount", "classne_1_1PipelineManager.html#ae43fd33ba41cc0103d9decb11c5bb64d", null ], + [ "getCurrentGraphicsPipelineCount", "classne_1_1PipelineManager.html#a9c6df8937369f1b14c0277f4645cf847", null ], + [ "getGraphicsPipelineForMaterial", "classne_1_1PipelineManager.html#a9ec99295c715da94f3969044a54b0b63", null ], + [ "getGraphicsPipelines", "classne_1_1PipelineManager.html#ad700c995b0d52d2386731fe2a25277f6", null ], + [ "getRenderer", "classne_1_1PipelineManager.html#a291716865f8990d91d417292c7b253be", null ], + [ "onPipelineNoLongerUsedByComputeShaderInterface", "classne_1_1PipelineManager.html#a02cd88db58b6607098cddc41bf855501", null ], + [ "onPipelineNoLongerUsedByMaterial", "classne_1_1PipelineManager.html#a07b8c5604d6e9f1c44ec925bdee27400", null ], + [ "releaseInternalGraphicsPipelinesResources", "classne_1_1PipelineManager.html#ac354177b83c5c3c491143088c96a2b8b", null ], + [ "restoreInternalGraphicsPipelinesResources", "classne_1_1PipelineManager.html#a8c0e034e9ab8d38dacf0c732ce9e7bab", null ], + [ "computePipelines", "classne_1_1PipelineManager.html#aa52a60668dd2d8ab801c45c0a16c70a4", null ], + [ "mtxGraphicsPipelines", "classne_1_1PipelineManager.html#aeace69b8742a79b77faa24ac51841d46", null ], + [ "pRenderer", "classne_1_1PipelineManager.html#aa47dd48258976cdb05b313c9c52033cd", null ] +]; \ No newline at end of file diff --git a/classne_1_1PipelineShaderConstantsManager-members.html b/classne_1_1PipelineShaderConstantsManager-members.html new file mode 100644 index 000000000..5dcb1cbbe --- /dev/null +++ b/classne_1_1PipelineShaderConstantsManager-members.html @@ -0,0 +1,122 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::PipelineShaderConstantsManager Member List
+
+
+ +

This is the complete list of members for ne::PipelineShaderConstantsManager, including all inherited members.

+ + + + + + + + + + + + + +
copyValueToShaderConstant(size_t iShaderConstantIndex, unsigned int iValueToCopy)ne::PipelineShaderConstantsManagerinline
getData()ne::PipelineShaderConstantsManagerinline
getMaxConstantsSizeInBytes()ne::PipelineShaderConstantsManagerinlinestatic
getTotalSizeInBytes() constne::PipelineShaderConstantsManagerinline
getVariableCount() constne::PipelineShaderConstantsManagerinline
iMaxShaderConstantsSizeInBytesne::PipelineShaderConstantsManagerprivatestatic
operator=(const PipelineShaderConstantsManager &)=delete (defined in ne::PipelineShaderConstantsManager)ne::PipelineShaderConstantsManager
PipelineShaderConstantsManager()=delete (defined in ne::PipelineShaderConstantsManager)ne::PipelineShaderConstantsManager
PipelineShaderConstantsManager(const PipelineShaderConstantsManager &)=delete (defined in ne::PipelineShaderConstantsManager)ne::PipelineShaderConstantsManager
PipelineShaderConstantsManager(size_t iVariableCount)ne::PipelineShaderConstantsManagerinline
variable_type typedefne::PipelineShaderConstantsManager
vConstantsDatane::PipelineShaderConstantsManagerprivate
+
+ + + + diff --git a/classne_1_1PipelineShaderConstantsManager.html b/classne_1_1PipelineShaderConstantsManager.html new file mode 100644 index 000000000..7e8d1d946 --- /dev/null +++ b/classne_1_1PipelineShaderConstantsManager.html @@ -0,0 +1,421 @@ + + + + + + + +Nameless Engine: ne::PipelineShaderConstantsManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <PipelineShaderConstantsManager.hpp>

+ + + + +

+Classes

struct  SpecialConstantsNames
 
+ + + +

+Public Types

using variable_type = unsigned int
 
+ + + + + + + + + + + + + + + +

+Public Member Functions

PipelineShaderConstantsManager (const PipelineShaderConstantsManager &)=delete
 
+PipelineShaderConstantsManageroperator= (const PipelineShaderConstantsManager &)=delete
 
 PipelineShaderConstantsManager (size_t iVariableCount)
 
void copyValueToShaderConstant (size_t iShaderConstantIndex, unsigned int iValueToCopy)
 
unsigned int getTotalSizeInBytes () const
 
unsigned int getVariableCount () const
 
void * getData ()
 
+ + + +

+Static Public Member Functions

static constexpr size_t getMaxConstantsSizeInBytes ()
 
+ + + +

+Private Attributes

std::vector< variable_typevConstantsData
 
+ + + +

+Static Private Attributes

static constexpr size_t iMaxShaderConstantsSizeInBytes
 
+

Detailed Description

+

Stores data to copy to push constants (Vulkan) or root constants (DirectX).

+

Member Typedef Documentation

+ +

◆ variable_type

+ +
+
+ + + + +
using ne::PipelineShaderConstantsManager::variable_type = unsigned int
+
+

Type of the variables the manager stores.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ PipelineShaderConstantsManager()

+ +
+
+ + + + + +
+ + + + + + + + +
ne::PipelineShaderConstantsManager::PipelineShaderConstantsManager (size_t iVariableCount)
+
+inline
+
+

Creates a new manager that stores the specified number of unsigned int variables as push/root constants.

+
Warning
Shows an error and throws an exception if the specified size (in bytes not in unsigned ints) will exceed getMaxConstantsSizeInBytes.
+
Parameters
+ + +
iVariableCountDefines how much unsigned ints to store as push/root constants.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ copyValueToShaderConstant()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::PipelineShaderConstantsManager::copyValueToShaderConstant (size_t iShaderConstantIndex,
unsigned int iValueToCopy 
)
+
+inline
+
+

Copies the specified value into the specified push/root constant.

+
Parameters
+ + + +
iShaderConstantIndexIndex of the push/root constant to copy the data to.
iValueToCopyValue to copy.
+
+
+ +
+
+ +

◆ getData()

+ +
+
+ + + + + +
+ + + + + + + +
void * ne::PipelineShaderConstantsManager::getData ()
+
+inline
+
+

Returns pointer to the beginning of the push/root constants data.

+
Returns
Push/root constants data.
+ +
+
+ +

◆ getMaxConstantsSizeInBytes()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr size_t ne::PipelineShaderConstantsManager::getMaxConstantsSizeInBytes ()
+
+inlinestaticconstexpr
+
+

Returns the maximum size of constants data that the manager allows to have.

+
Returns
Maximum size of constants in bytes.
+ +
+
+ +

◆ getTotalSizeInBytes()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int ne::PipelineShaderConstantsManager::getTotalSizeInBytes () const
+
+inline
+
+

Returns total size of push/root constants data in bytes.

+
Returns
Size in bytes. Returning unsigned int since Vulkan and DirectX operate on uints.
+ +
+
+ +

◆ getVariableCount()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int ne::PipelineShaderConstantsManager::getVariableCount () const
+
+inline
+
+

Returns the total number of unsigned ints stored as push/root constants.

+
Returns
Number of variables.
+ +
+
+

Member Data Documentation

+ +

◆ iMaxShaderConstantsSizeInBytes

+ +
+
+ + + + + +
+ + + + +
constexpr size_t ne::PipelineShaderConstantsManager::iMaxShaderConstantsSizeInBytes
+
+staticconstexprprivate
+
+Initial value:
=
+
128
+

Defines the maximum size of constants in total (in bytes).

+ +
+
+ +

◆ vConstantsData

+ +
+
+ + + + + +
+ + + + +
std::vector<variable_type> ne::PipelineShaderConstantsManager::vConstantsData
+
+private
+
+

Data that will be copied to push/root constants.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classne_1_1PipelineShaderConstantsManager.js b/classne_1_1PipelineShaderConstantsManager.js new file mode 100644 index 000000000..018b22d04 --- /dev/null +++ b/classne_1_1PipelineShaderConstantsManager.js @@ -0,0 +1,13 @@ +var classne_1_1PipelineShaderConstantsManager = +[ + [ "SpecialConstantsNames", "structne_1_1PipelineShaderConstantsManager_1_1SpecialConstantsNames.html", "structne_1_1PipelineShaderConstantsManager_1_1SpecialConstantsNames" ], + [ "variable_type", "classne_1_1PipelineShaderConstantsManager.html#a0cd19f768249b2feffc41a5fc2c75957", null ], + [ "PipelineShaderConstantsManager", "classne_1_1PipelineShaderConstantsManager.html#a8717bae2912b1cc6d06ba3cabca25c75", null ], + [ "copyValueToShaderConstant", "classne_1_1PipelineShaderConstantsManager.html#ad292517c37ad69a098d56e61efd287d4", null ], + [ "getData", "classne_1_1PipelineShaderConstantsManager.html#a651e27c76603031970b452233c9ba0da", null ], + [ "getMaxConstantsSizeInBytes", "classne_1_1PipelineShaderConstantsManager.html#a6bb03322b3c4bf0032d7bae7d59c2544", null ], + [ "getTotalSizeInBytes", "classne_1_1PipelineShaderConstantsManager.html#ab48235457c697bacbdac488aa96072fa", null ], + [ "getVariableCount", "classne_1_1PipelineShaderConstantsManager.html#a9101a793c27142717ddb3238241ba81f", null ], + [ "iMaxShaderConstantsSizeInBytes", "classne_1_1PipelineShaderConstantsManager.html#a5212ef8a1129197be5961f588c03e21f", null ], + [ "vConstantsData", "classne_1_1PipelineShaderConstantsManager.html#a9bcca2df4a975583ab2b274767ec29b8", null ] +]; \ No newline at end of file diff --git a/classne_1_1PipelineSharedPtr-members.html b/classne_1_1PipelineSharedPtr-members.html new file mode 100644 index 000000000..1776959e4 --- /dev/null +++ b/classne_1_1PipelineSharedPtr-members.html @@ -0,0 +1,129 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::PipelineSharedPtr Member List
+
+
+ +

This is the complete list of members for ne::PipelineSharedPtr, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
clear()ne::PipelineSharedPtr
clearPointerAndNotifyPipeline()ne::PipelineSharedPtrprivate
getPipeline() constne::PipelineSharedPtrinline
initialize(std::shared_ptr< Pipeline > pPipeline, Material *pMaterialThatUsesPipeline)ne::PipelineSharedPtrprivate
initialize(std::shared_ptr< Pipeline > pPipeline, ComputeShaderInterface *pComputeShaderThatUsesPipeline)ne::PipelineSharedPtrprivate
isInitialized() constne::PipelineSharedPtr
operator->() constne::PipelineSharedPtr
operator=(const PipelineSharedPtr &)=delete (defined in ne::PipelineSharedPtr)ne::PipelineSharedPtr
operator=(PipelineSharedPtr &&other) noexceptne::PipelineSharedPtr
pComputeShaderThatUsesPipelinene::PipelineSharedPtrprivate
PipelineSharedPtr(std::shared_ptr< Pipeline > pPipeline, Material *pMaterialThatUsesPipeline)ne::PipelineSharedPtrexplicit
PipelineSharedPtr(std::shared_ptr< Pipeline > pPipeline, ComputeShaderInterface *pComputeShaderThatUsesPipeline)ne::PipelineSharedPtrexplicit
PipelineSharedPtr()=defaultne::PipelineSharedPtr
PipelineSharedPtr(const PipelineSharedPtr &)=delete (defined in ne::PipelineSharedPtr)ne::PipelineSharedPtr
PipelineSharedPtr(PipelineSharedPtr &&other) noexceptne::PipelineSharedPtr
pMaterialThatUsesPipelinene::PipelineSharedPtrprivate
pPipelinene::PipelineSharedPtrprivate
set(std::shared_ptr< Pipeline > pPipeline, Material *pMaterialThatUsesPipeline)ne::PipelineSharedPtr
~PipelineSharedPtr() (defined in ne::PipelineSharedPtr)ne::PipelineSharedPtr
+
+ + + + diff --git a/classne_1_1PipelineSharedPtr.html b/classne_1_1PipelineSharedPtr.html new file mode 100644 index 000000000..c719acdd8 --- /dev/null +++ b/classne_1_1PipelineSharedPtr.html @@ -0,0 +1,658 @@ + + + + + + + +Nameless Engine: ne::PipelineSharedPtr Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::PipelineSharedPtr Class Reference
+
+
+ +

#include <PipelineSharedPtr.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PipelineSharedPtr (std::shared_ptr< Pipeline > pPipeline, Material *pMaterialThatUsesPipeline)
 
 PipelineSharedPtr (std::shared_ptr< Pipeline > pPipeline, ComputeShaderInterface *pComputeShaderThatUsesPipeline)
 
 PipelineSharedPtr ()=default
 
PipelineSharedPtr (const PipelineSharedPtr &)=delete
 
+PipelineSharedPtroperator= (const PipelineSharedPtr &)=delete
 
 PipelineSharedPtr (PipelineSharedPtr &&other) noexcept
 
PipelineSharedPtroperator= (PipelineSharedPtr &&other) noexcept
 
bool isInitialized () const
 
void clear ()
 
void set (std::shared_ptr< Pipeline > pPipeline, Material *pMaterialThatUsesPipeline)
 
PipelinegetPipeline () const
 
Pipelineoperator-> () const
 
+ + + + + + + +

+Private Member Functions

void clearPointerAndNotifyPipeline ()
 
void initialize (std::shared_ptr< Pipeline > pPipeline, Material *pMaterialThatUsesPipeline)
 
void initialize (std::shared_ptr< Pipeline > pPipeline, ComputeShaderInterface *pComputeShaderThatUsesPipeline)
 
+ + + + + + + +

+Private Attributes

std::shared_ptr< PipelinepPipeline = nullptr
 
MaterialpMaterialThatUsesPipeline = nullptr
 
ComputeShaderInterfacepComputeShaderThatUsesPipeline = nullptr
 
+

Detailed Description

+

Small wrapper class for std::shared_ptr<Pipeline> to do some extra work when started/stopped referencing a pipeline.

+

Constructor & Destructor Documentation

+ +

◆ PipelineSharedPtr() [1/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ne::PipelineSharedPtr::PipelineSharedPtr (std::shared_ptr< PipelinepPipeline,
MaterialpMaterialThatUsesPipeline 
)
+
+explicit
+
+

Constructs a new pointer for a material that uses a pipeline.

+
Parameters
+ + + +
pPipelinePipeline to store.
pMaterialThatUsesPipelineMaterial that stores this pointer.
+
+
+ +
+
+ +

◆ PipelineSharedPtr() [2/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ne::PipelineSharedPtr::PipelineSharedPtr (std::shared_ptr< PipelinepPipeline,
ComputeShaderInterfacepComputeShaderThatUsesPipeline 
)
+
+explicit
+
+

Constructs a new pointer for a compute shader interface that uses a pipeline.

+
Parameters
+ + + +
pPipelinePipeline to store.
pComputeShaderThatUsesPipelineCompute interface that stores this pointer.
+
+
+ +
+
+ +

◆ PipelineSharedPtr() [3/4]

+ +
+
+ + + + + +
+ + + + + + + +
ne::PipelineSharedPtr::PipelineSharedPtr ()
+
+default
+
+

Leaves the internal pointers initialized as nullptr.

+ +
+
+ +

◆ PipelineSharedPtr() [4/4]

+ +
+
+ + + + + +
+ + + + + + + + +
ne::PipelineSharedPtr::PipelineSharedPtr (PipelineSharedPtr && other)
+
+noexcept
+
+

Move constructor.

+
Parameters
+ + +
otherother object.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ clear()

+ +
+
+ + + + + + + +
void ne::PipelineSharedPtr::clear ()
+
+

Clears the pointer (sets to nullptr).

+ +
+
+ +

◆ clearPointerAndNotifyPipeline()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::PipelineSharedPtr::clearPointerAndNotifyPipeline ()
+
+private
+
+

Clears stored shared pointer and notifies the Pipeline that we no longer reference it.

+ +
+
+ +

◆ getPipeline()

+ +
+
+ + + + + +
+ + + + + + + +
Pipeline * ne::PipelineSharedPtr::getPipeline () const
+
+inline
+
+

Returns pointer to underlying pipeline.

+
Warning
Do not delete returned pointer.
+
Returns
Raw pointer to the underlying pipeline.
+ +
+
+ +

◆ initialize() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::PipelineSharedPtr::initialize (std::shared_ptr< PipelinepPipeline,
ComputeShaderInterfacepComputeShaderThatUsesPipeline 
)
+
+private
+
+

Initializes internal state.

+
Parameters
+ + + +
pPipelinePipeline to store.
pComputeShaderThatUsesPipelineCompute interface that stores this pointer.
+
+
+ +
+
+ +

◆ initialize() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::PipelineSharedPtr::initialize (std::shared_ptr< PipelinepPipeline,
MaterialpMaterialThatUsesPipeline 
)
+
+private
+
+

Initializes internal state.

+
Parameters
+ + + +
pPipelinePipeline to store.
pMaterialThatUsesPipelineMaterial that stores this pointer.
+
+
+ +
+
+ +

◆ isInitialized()

+ +
+
+ + + + + + + +
bool ne::PipelineSharedPtr::isInitialized () const
+
+

Tells whether the internal pipeline was set or not.

+
Returns
Whether the internal pipeline was set or not.
+ +
+
+ +

◆ operator->()

+ +
+
+ + + + + + + +
Pipeline * ne::PipelineSharedPtr::operator-> () const
+
+

Access operator.

+
Returns
Raw pointer to the underlying pipeline.
+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
PipelineSharedPtr & ne::PipelineSharedPtr::operator= (PipelineSharedPtr && other)
+
+noexcept
+
+

Move assignment.

+
Parameters
+ + +
otherother object.
+
+
+
Returns
Result of move assignment.
+ +
+
+ +

◆ set()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ne::PipelineSharedPtr::set (std::shared_ptr< PipelinepPipeline,
MaterialpMaterialThatUsesPipeline 
)
+
+

Changes stored pipeline to the specified one.

+
Parameters
+ + + +
pPipelinePipeline to use.
pMaterialThatUsesPipelineMaterial that stores this pointer.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ pComputeShaderThatUsesPipeline

+ +
+
+ + + + + +
+ + + + +
ComputeShaderInterface* ne::PipelineSharedPtr::pComputeShaderThatUsesPipeline = nullptr
+
+private
+
+

Compute shader interface that stores this pointer.

+
Remarks
If nullptr then pMaterialThatUsesPipeline is valid.
+ +
+
+ +

◆ pMaterialThatUsesPipeline

+ +
+
+ + + + + +
+ + + + +
Material* ne::PipelineSharedPtr::pMaterialThatUsesPipeline = nullptr
+
+private
+
+

Material that stores this pointer.

+
Remarks
If nullptr then pComputeShaderThatUsesPipeline is valid.
+ +
+
+ +

◆ pPipeline

+ +
+
+ + + + + +
+ + + + +
std::shared_ptr<Pipeline> ne::PipelineSharedPtr::pPipeline = nullptr
+
+private
+
+

Internally stored pipeline

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/general/pipeline/PipelineSharedPtr.h
  • +
  • src/engine_lib/private/render/general/pipeline/PipelineSharedPtr.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1PipelineSharedPtr.js b/classne_1_1PipelineSharedPtr.js new file mode 100644 index 000000000..12f7447a3 --- /dev/null +++ b/classne_1_1PipelineSharedPtr.js @@ -0,0 +1,19 @@ +var classne_1_1PipelineSharedPtr = +[ + [ "PipelineSharedPtr", "classne_1_1PipelineSharedPtr.html#a9e81b443572b3e20891b50d879a9ad7b", null ], + [ "PipelineSharedPtr", "classne_1_1PipelineSharedPtr.html#aea9c5204fb8342cac5cfaf3cbda1d1b0", null ], + [ "PipelineSharedPtr", "classne_1_1PipelineSharedPtr.html#aaa822938861b9c81ecd08a59816f1843", null ], + [ "PipelineSharedPtr", "classne_1_1PipelineSharedPtr.html#ad3765321a3f62e21230b550cee0ab53a", null ], + [ "clear", "classne_1_1PipelineSharedPtr.html#a56e0c400e9f98b36f68621c405972e8f", null ], + [ "clearPointerAndNotifyPipeline", "classne_1_1PipelineSharedPtr.html#a969425d9d6613b26e631908adf2bb9a8", null ], + [ "getPipeline", "classne_1_1PipelineSharedPtr.html#acb3dfd9dae017d88756a24835f27dc8c", null ], + [ "initialize", "classne_1_1PipelineSharedPtr.html#a9c28a317be914d621e869405921dbed6", null ], + [ "initialize", "classne_1_1PipelineSharedPtr.html#a87f9db31874d4309c7ac82697188be47", null ], + [ "isInitialized", "classne_1_1PipelineSharedPtr.html#a17943bbf4e292ae394e7e7dcae0139b7", null ], + [ "operator->", "classne_1_1PipelineSharedPtr.html#a9647bc1bead502ad18894eac5d3cd9a0", null ], + [ "operator=", "classne_1_1PipelineSharedPtr.html#a6013388ffb7c2fb1305e4fe987a05d17", null ], + [ "set", "classne_1_1PipelineSharedPtr.html#a37f875482488fca84e6a82e5f0524705", null ], + [ "pComputeShaderThatUsesPipeline", "classne_1_1PipelineSharedPtr.html#a271f3573d2ec8683ffdbea79e2883797", null ], + [ "pMaterialThatUsesPipeline", "classne_1_1PipelineSharedPtr.html#ad54307b5723d4543e15f6f96308e7fd9", null ], + [ "pPipeline", "classne_1_1PipelineSharedPtr.html#aeec24450bda6907413a62ac9288a704f", null ] +]; \ No newline at end of file diff --git a/classne_1_1PointLightNode-members.html b/classne_1_1PointLightNode-members.html new file mode 100644 index 000000000..65f7887dc --- /dev/null +++ b/classne_1_1PointLightNode-members.html @@ -0,0 +1,268 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::PointLightNode Member List
+
+
+ +

This is the complete list of members for ne::PointLightNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addChildNode(const sgc::GcPtr< Node > &pNode, AttachmentRule locationRule=AttachmentRule::KEEP_WORLD, AttachmentRule rotationRule=AttachmentRule::KEEP_WORLD, AttachmentRule scaleRule=AttachmentRule::KEEP_WORLD)ne::Node
applyAttachmentRule(Node::AttachmentRule locationRule, const glm::vec3 &worldLocationBeforeAttachment, Node::AttachmentRule rotationRule, const glm::vec3 &worldRotationBeforeAttachment, Node::AttachmentRule scaleRule, const glm::vec3 &worldScaleBeforeAttachment)ne::SpatialNodeprivate
AttachmentRule enum namene::Node
bSerializene::Nodeprivate
colorne::PointLightNodeprivate
createNotificationBroadcaster()ne::Nodeinlineprotected
createTimer(const std::string &sTimerName)ne::Nodeprotected
deserialize(const std::filesystem::path &pathToFile)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)ne::Serializablestatic
deserialize(std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, const std::string &sEntityId)ne::Serializablestatic
deserialize(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})ne::Serializablestatic
deserializeFromSection(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sSectionName, const std::string &sTypeGuid, const std::string &sEntityId, const std::optional< std::filesystem::path > &optionalPathToFile)ne::Serializableprivatestatic
deserializeMultiple(std::filesystem::path pathToFile)ne::Serializablestatic
deserializeNodeTree(const std::filesystem::path &pathToFile)ne::Nodestatic
despawn()ne::Nodeprivate
detachFromParentAndDespawn()ne::Node
distancene::PointLightNodeprivate
enableTimer(Timer *pTimer, bool bEnable)ne::Nodeprivate
findValidWorld()ne::Nodeprivate
getActionEventBindings()ne::Nodeprotected
getAliveNodeCount()ne::Nodestatic
getAxisEventBindings()ne::Nodeprotected
getChildNodeOfType(const std::string &sChildNodeName="")ne::Node
getChildNodes()ne::Node
getClassForGuid(const std::string &sGuid)ne::Serializableprivatestatic
getClassForGuid(const rfk::Struct *pArchetypeToAnalyze, const std::string &sGuid)ne::Serializableprivatestatic
getClosestSpatialParent()ne::SpatialNode
getGameInstance()ne::Nodestatic
getIdsFromFile(std::filesystem::path pathToFile)ne::Serializablestatic
getIndexIntoShadowPassInfoShaderArray(size_t iCubemapFaceIndex=0)ne::PointLightNodeprivate
getInformationForSerialization(size_t &iId, std::optional< size_t > iParentId)ne::Nodeprivate
getLightColor() constne::PointLightNode
getLightDistance() constne::PointLightNode
getLightIntensity() constne::PointLightNode
getNodeId() constne::Node
getNodeName() constne::Node
getParentNode()ne::Node
getParentNodeOfType(const std::string &sParentNodeName="")ne::Node
getPathDeserializedFromRelativeToRes() constne::Serializable
getRelativeLocation() constne::SpatialNodeinline
getRelativeRotation() constne::SpatialNodeinline
getRelativeRotationMatrix()ne::SpatialNode
getRelativeScale() constne::SpatialNodeinline
getShadowMapHandle() constne::PointLightNodeprivate
getShape()ne::PointLightNode
getSpawnDespawnMutex()ne::Nodeprotected
getTickGroup() constne::Node
getWorldForwardDirection()ne::SpatialNode
getWorldLocation()ne::SpatialNode
getWorldMatrix()ne::SpatialNode
getWorldRightDirection()ne::SpatialNode
getWorldRootNode()ne::Node
getWorldRotation()ne::SpatialNode
getWorldRotationQuaternion()ne::SpatialNode
getWorldScale()ne::SpatialNode
getWorldUpDirection()ne::SpatialNode
iNodeIdne::Nodeprivate
intensityne::PointLightNodeprivate
isCalledEveryFrame()ne::Node
isChildOf(Node *pNode)ne::Node
isParentOf(Node *pNode)ne::Node
isReceivingInput()ne::Node
isSerialized() constne::Node
isSpawned()ne::Node
isTreeDeserializedFromOneFile(const std::string &sPathRelativeToRes)ne::Nodeprivate
lockChildren()ne::Nodeprivate
markShaderDataToBeCopiedToGpu()ne::PointLightNodeprivate
markShadowPassDataToBeCopiedToGpu()ne::PointLightNodeprivate
mtxBindedActionEventsne::Nodeprivate
mtxBindedAxisEventsne::Nodeprivate
mtxChildNodesne::Nodeprivate
mtxCreatedBroadcastersne::Nodeprivate
mtxCreatedTimersne::Nodeprivate
mtxIsCalledEveryFramene::Nodeprivate
mtxIsReceivingInputne::Nodeprivate
mtxIsSpawnedne::Nodeprivate
mtxLocalSpacene::SpatialNodeprivate
mtxParentNodene::Nodeprivate
mtxShaderDatane::PointLightNodeprivate
mtxShapene::PointLightNodeprivate
mtxSpatialParentne::SpatialNodeprivate
mtxWorldMatrixne::SpatialNodeprivate
ne::Node::Node(const std::string &sName)ne::Node
Node(const Node &)=delete (defined in ne::Node)ne::Node
Node(Node &&)=delete (defined in ne::Node)ne::Node
notifyAboutAttachedToNewParent(bool bThisNodeBeingAttached)ne::Nodeprivate
notifyAboutDetachingFromParent(bool bThisNodeBeingDetached)ne::Nodeprivate
onAfterAttachedToNewParent(bool bThisNodeBeingAttached) overridene::SpatialNodeprotectedvirtual
onAfterDeserialized() overridene::PointLightNodeprotectedvirtual
onBeforeDetachedFromParent(bool bThisNodeBeingDetached)ne::Nodeinlineprotectedvirtual
onBeforeNewFrame(float timeSincePrevFrameInSec)ne::Nodeinlineprotectedvirtual
onChildNodesSpawned()ne::Nodeinlineprotectedvirtual
onDespawning() overridene::PointLightNodeprotectedvirtual
onFinishedUpdatingShaderData()ne::PointLightNodeprivate
onFinishedUpdatingShadowPassData()ne::PointLightNodeprivate
onInputActionEvent(unsigned int iActionId, KeyboardModifiers modifiers, bool bIsPressedDown)ne::Nodeprivate
onInputAxisEvent(unsigned int iAxisEventId, KeyboardModifiers modifiers, float input)ne::Nodeprivate
onMouseMove(double xOffset, double yOffset)ne::Nodeinlineprotectedvirtual
onMouseScrollMove(int iOffset)ne::Nodeinlineprotectedvirtual
onShadowMapArrayIndexChanged(unsigned int iNewIndexIntoArray)ne::PointLightNodeprivate
onSpawning() overridene::PointLightNodeprotectedvirtual
onStartedUpdatingShaderData()ne::PointLightNodeprivate
onStartedUpdatingShadowPassData(size_t iCubemapFaceIndex)ne::PointLightNodeprivate
onWorldLocationRotationScaleChanged() overridene::PointLightNodeprotectedvirtual
operator=(const Node &)=delete (defined in ne::Node)ne::Node
operator=(Node &&)=delete (defined in ne::Node)ne::Node
pathDeserializedFromRelativeToResne::Serializableprivate
PointLightNode() (defined in ne::PointLightNode)ne::PointLightNode
PointLightNode(const std::string &sNodeName)ne::PointLightNode
pShadowMapHandlene::PointLightNodeprivate
pWorldne::Nodeprivate
recalculateLocalMatrix()ne::SpatialNodeprivate
recalculateShadowPassShaderData()ne::PointLightNodeprivate
recalculateShape()ne::PointLightNodeprivate
recalculateWorldMatrix(bool bNotifyChildren=true)ne::SpatialNodeprivate
recalculateWorldMatrixForNodeAndNotifyChildren(Node *pNode)ne::SpatialNodeprivate
relativeLocationne::SpatialNodeprivate
relativeRotationne::SpatialNodeprivate
relativeScalene::SpatialNodeprivate
Renderer (defined in ne::PointLightNode)ne::PointLightNodefriend
resolvePathToToml(std::filesystem::path &pathToFile)ne::Serializableprivatestatic
sCustomAttributePrefixne::Serializableprivatestatic
Serializable()=default (defined in ne::Serializable)ne::Serializable
serialize(std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})ne::Serializable
serialize(toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serialize(toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serializeMultiple(std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)ne::Serializablestatic
serializeNodeTree(const std::filesystem::path &pathToFile, bool bEnableBackup)ne::Node
setIsCalledEveryFrame(bool bEnable)ne::Nodeprotected
setIsReceivingInput(bool bEnable)ne::Nodeprotected
setLightColor(const glm::vec3 &color)ne::PointLightNode
setLightDistance(float distance)ne::PointLightNode
setLightIntensity(float intensity)ne::PointLightNode
setNodeName(const std::string &sName)ne::Node
setRelativeLocation(const glm::vec3 &location)ne::SpatialNode
setRelativeRotation(const glm::vec3 &rotation)ne::SpatialNode
setRelativeScale(const glm::vec3 &scale)ne::SpatialNode
setSerialize(bool bSerialize)ne::Node
setTickGroup(TickGroup tickGroup)ne::Nodeprotected
setWorldLocation(const glm::vec3 &location)ne::SpatialNode
setWorldRotation(const glm::vec3 &rotation)ne::SpatialNode
setWorldScale(const glm::vec3 &scale)ne::SpatialNode
sExternalNodeTreePathAttributeNamene::Nodeinlineprivatestatic
sNodeNamene::Nodeprivate
sNothingToSerializeKeyne::Serializableinlineprivatestatic
sParentNodeIdAttributeNamene::Nodeinlineprivatestatic
sPathRelativeToResKeyne::Serializableinlineprivatestatic
SpatialNode() (defined in ne::SpatialNode)ne::SpatialNode
SpatialNode(const std::string &sNodeName)ne::SpatialNode
spawn()ne::Nodeprivate
sSubEntityFieldNameKeyne::Serializableinlineprivatestatic
tickGroupne::Nodeprivate
unlockChildren()ne::Nodeprivate
~Node() overridene::Nodevirtual
~PointLightNode() override=default (defined in ne::PointLightNode)ne::PointLightNodevirtual
~Serializable() override=default (defined in ne::Serializable)ne::Serializablevirtual
~SpatialNode() override=default (defined in ne::SpatialNode)ne::SpatialNodevirtual
+
+ + + + diff --git a/classne_1_1PointLightNode.html b/classne_1_1PointLightNode.html new file mode 100644 index 000000000..b4e683e4a --- /dev/null +++ b/classne_1_1PointLightNode.html @@ -0,0 +1,1184 @@ + + + + + + + +Nameless Engine: ne::PointLightNode Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <PointLightNode.h>

+
+Inheritance diagram for ne::PointLightNode:
+
+
+ + +ne::SpatialNode +ne::Node +ne::Serializable + +
+ + + + + + +

+Classes

struct  PointLightShaderData
 
struct  ShaderData
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PointLightNode (const std::string &sNodeName)
 
void setLightColor (const glm::vec3 &color)
 
void setLightIntensity (float intensity)
 
void setLightDistance (float distance)
 
glm::vec3 getLightColor () const
 
float getLightIntensity () const
 
float getLightDistance () const
 
std::pair< std::mutex, Sphere > * getShape ()
 
- Public Member Functions inherited from ne::SpatialNode
 SpatialNode (const std::string &sNodeName)
 
void setRelativeLocation (const glm::vec3 &location)
 
void setRelativeRotation (const glm::vec3 &rotation)
 
void setRelativeScale (const glm::vec3 &scale)
 
void setWorldLocation (const glm::vec3 &location)
 
void setWorldRotation (const glm::vec3 &rotation)
 
void setWorldScale (const glm::vec3 &scale)
 
glm::vec3 getRelativeLocation () const
 
glm::vec3 getRelativeRotation () const
 
glm::vec3 getRelativeScale () const
 
glm::mat4x4 getRelativeRotationMatrix ()
 
glm::vec3 getWorldLocation ()
 
glm::vec3 getWorldRotation ()
 
glm::quat getWorldRotationQuaternion ()
 
glm::vec3 getWorldScale ()
 
glm::vec3 getWorldForwardDirection ()
 
glm::vec3 getWorldRightDirection ()
 
glm::vec3 getWorldUpDirection ()
 
glm::mat4x4 getWorldMatrix ()
 
std::pair< std::recursive_mutex, sgc::GcPtr< SpatialNode > > * getClosestSpatialParent ()
 
- Public Member Functions inherited from ne::Node
 Node ()
 
 Node (const std::string &sName)
 
Node (const Node &)=delete
 
+Nodeoperator= (const Node &)=delete
 
Node (Node &&)=delete
 
+Nodeoperator= (Node &&)=delete
 
virtual ~Node () override
 
void setNodeName (const std::string &sName)
 
void detachFromParentAndDespawn ()
 
void addChildNode (const sgc::GcPtr< Node > &pNode, AttachmentRule locationRule=AttachmentRule::KEEP_WORLD, AttachmentRule rotationRule=AttachmentRule::KEEP_WORLD, AttachmentRule scaleRule=AttachmentRule::KEEP_WORLD)
 
void setSerialize (bool bSerialize)
 
std::optional< ErrorserializeNodeTree (const std::filesystem::path &pathToFile, bool bEnableBackup)
 
std::string getNodeName () const
 
sgc::GcPtr< NodegetWorldRootNode ()
 
std::pair< std::recursive_mutex, sgc::GcPtr< Node > > * getParentNode ()
 
std::pair< std::recursive_mutex, sgc::GcVector< sgc::GcPtr< Node > > > * getChildNodes ()
 
template<typename NodeType >
+requires std::derived_from<NodeType, Node>
sgc::GcPtr< NodeType > getParentNodeOfType (const std::string &sParentNodeName="")
 
template<typename NodeType >
+requires std::derived_from<NodeType, Node>
sgc::GcPtr< NodeType > getChildNodeOfType (const std::string &sChildNodeName="")
 
TickGroup getTickGroup () const
 
std::optional< size_t > getNodeId () const
 
bool isCalledEveryFrame ()
 
bool isReceivingInput ()
 
bool isSpawned ()
 
bool isParentOf (Node *pNode)
 
bool isChildOf (Node *pNode)
 
bool isSerialized () const
 
- Public Member Functions inherited from ne::Serializable
std::optional< Errorserialize (std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})
 
std::variant< std::string, Errorserialize (toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::variant< std::string, Errorserialize (toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::optional< std::pair< std::string, std::string > > getPathDeserializedFromRelativeToRes () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void onAfterDeserialized () override
 
virtual void onSpawning () override
 
virtual void onDespawning () override
 
virtual void onWorldLocationRotationScaleChanged () override
 
- Protected Member Functions inherited from ne::SpatialNode
virtual void onAfterDeserialized () override
 
virtual void onSpawning () override
 
virtual void onAfterAttachedToNewParent (bool bThisNodeBeingAttached) override
 
virtual void onWorldLocationRotationScaleChanged ()
 
- Protected Member Functions inherited from ne::Node
void setIsCalledEveryFrame (bool bEnable)
 
void setTickGroup (TickGroup tickGroup)
 
void setIsReceivingInput (bool bEnable)
 
TimercreateTimer (const std::string &sTimerName)
 
template<typename FunctionType >
NodeNotificationBroadcaster< FunctionType > * createNotificationBroadcaster ()
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, bool)> > > * getActionEventBindings ()
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, float)> > > * getAxisEventBindings ()
 
std::recursive_mutex * getSpawnDespawnMutex ()
 
virtual void onMouseMove (double xOffset, double yOffset)
 
virtual void onMouseScrollMove (int iOffset)
 
virtual void onBeforeNewFrame (float timeSincePrevFrameInSec)
 
virtual void onSpawning ()
 
virtual void onChildNodesSpawned ()
 
virtual void onDespawning ()
 
virtual void onBeforeDetachedFromParent (bool bThisNodeBeingDetached)
 
virtual void onAfterAttachedToNewParent (bool bThisNodeBeingAttached)
 
virtual void onAfterDeserialized ()
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

ShadowMapHandlegetShadowMapHandle () const
 
unsigned int getIndexIntoShadowPassInfoShaderArray (size_t iCubemapFaceIndex=0)
 
void * onStartedUpdatingShaderData ()
 
void onFinishedUpdatingShaderData ()
 
void * onStartedUpdatingShadowPassData (size_t iCubemapFaceIndex)
 
void onFinishedUpdatingShadowPassData ()
 
void markShaderDataToBeCopiedToGpu ()
 
void markShadowPassDataToBeCopiedToGpu ()
 
void onShadowMapArrayIndexChanged (unsigned int iNewIndexIntoArray)
 
void recalculateShadowPassShaderData ()
 
void recalculateShape ()
 
+ + + + + + + + + + + + + +

+Private Attributes

std::pair< std::recursive_mutex, ShaderDatamtxShaderData
 
std::pair< std::mutex, SpheremtxShape
 
std::unique_ptr< ShadowMapHandlepShadowMapHandle
 
glm::vec3 color = glm::vec3(1.0F, 1.0F, 1.0F)
 
float intensity = 1.0F
 
float distance = 10.0F
 
+ + + +

+Friends

+class Renderer
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ne::Node
enum class  AttachmentRule { RESET_RELATIVE +, KEEP_RELATIVE +, KEEP_WORLD + }
 
- Static Public Member Functions inherited from ne::Node
static size_t getAliveNodeCount ()
 
static std::variant< sgc::GcPtr< Node >, ErrordeserializeNodeTree (const std::filesystem::path &pathToFile)
 
static GameInstancegetGameInstance ()
 
- Static Public Member Functions inherited from ne::Serializable
static std::variant< std::pair< std::set< std::string >, toml::value >, ErrorgetIdsFromFile (std::filesystem::path pathToFile)
 
static std::optional< ErrorserializeMultiple (std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::same_as<SmartPointer, sgc::GcPtr<Serializable>> || std::same_as<SmartPointer, std::unique_ptr<Serializable>>
static std::variant< std::vector< DeserializedObjectInformation< SmartPointer > >, ErrordeserializeMultiple (std::filesystem::path pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})
 
+

Detailed Description

+

Represents a point light source in world.

+

Constructor & Destructor Documentation

+ +

◆ PointLightNode()

+ +
+
+ + + + + + + + +
ne::PointLightNode::PointLightNode (const std::string & sNodeName)
+
+

Creates a new node with the specified name.

+
Parameters
+ + +
sNodeNameName of this node.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getIndexIntoShadowPassInfoShaderArray()

+ +
+
+ + + + + +
+ + + + + + + + +
unsigned int ne::PointLightNode::getIndexIntoShadowPassInfoShaderArray (size_t iCubemapFaceIndex = 0)
+
+private
+
+

Used by renderer and returns the current index (because it may change later) into the shader array that stores shadow pass info of spawned lights.

+
Parameters
+ + +
iCubemapFaceIndexIndex of the cubemap face to get info for.
+
+
+
Returns
Index into array.
+ +
+
+ +

◆ getLightColor()

+ +
+
+ + + + + + + +
glm::vec3 ne::PointLightNode::getLightColor () const
+
+

Returns color of this light source.

+
Returns
Color in RGB format in range [0.0; 1.0].
+ +
+
+ +

◆ getLightDistance()

+ +
+
+ + + + + + + +
float ne::PointLightNode::getLightDistance () const
+
+

Returns lit distance.

+
Returns
Distance.
+ +
+
+ +

◆ getLightIntensity()

+ +
+
+ + + + + + + +
float ne::PointLightNode::getLightIntensity () const
+
+

Returns intensity of this light source.

+
Returns
Intensity in range [0.0; 1.0].
+ +
+
+ +

◆ getShadowMapHandle()

+ +
+
+ + + + + +
+ + + + + + + +
ShadowMapHandle * ne::PointLightNode::getShadowMapHandle () const
+
+private
+
+

Used by renderer and returns handle to shadow map texture that this light source uses.

+
Remarks
Do not delete (free) returned pointer.
+
Returns
nullptr if node is not spawned, otherwise valid pointer.
+ +
+
+ +

◆ getShape()

+ +
+
+ + + + + + + +
std::pair< std::mutex, Sphere > * ne::PointLightNode::getShape ()
+
+

Returns shape of this light source in world space.

+
Warning
Only valid while spawned.
+
+Must be used under mutex.
+
+Do not delete (free) returned pointer.
+
Returns
Shape.
+ +
+
+ +

◆ markShaderDataToBeCopiedToGpu()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::PointLightNode::markShaderDataToBeCopiedToGpu ()
+
+private
+
+

Marks array slot at mtxShaderData as "needs update" (if the slot is created) to later be copied to the GPU resource.

+
Remarks
Does nothing if the slot is nullptr.
+ +
+
+ +

◆ markShadowPassDataToBeCopiedToGpu()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::PointLightNode::markShadowPassDataToBeCopiedToGpu ()
+
+private
+
+

Marks array slots at mtxShaderData for shadow pass data as "needs +update" (if the slots were created) to later be copied to the GPU resource.

+
Remarks
Does nothing if the slot is nullptr.
+ +
+
+ +

◆ onAfterDeserialized()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::PointLightNode::onAfterDeserialized ()
+
+overrideprotectedvirtual
+
+

Called after the object was successfully deserialized. Used to execute post-deserialization logic.

+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +

Reimplemented from ne::SpatialNode.

+ +
+
+ +

◆ onDespawning()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::PointLightNode::onDespawning ()
+
+overrideprotectedvirtual
+
+

Called before this node is despawned from the world to execute custom despawn logic.

+
Remarks
This node will be marked as despawned after this function is called.
+
+This function is called after all child nodes were despawned.
+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +

Reimplemented from ne::Node.

+ +
+
+ +

◆ onFinishedUpdatingShaderData()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::PointLightNode::onFinishedUpdatingShaderData ()
+
+private
+
+

Called after onStartedUpdatingShaderData to notify this node that the renderer has finished copying the data to the GPU resource.

+ +
+
+ +

◆ onFinishedUpdatingShadowPassData()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::PointLightNode::onFinishedUpdatingShadowPassData ()
+
+private
+
+

Called after onStartedUpdatingShadowPassData to notify this node that the renderer has finished copying the data to the GPU resource.

+ +
+
+ +

◆ onShadowMapArrayIndexChanged()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::PointLightNode::onShadowMapArrayIndexChanged (unsigned int iNewIndexIntoArray)
+
+private
+
+

Called after the index into a descriptor array of pShadowMapHandle was initialized/changed.

+
Parameters
+ + +
iNewIndexIntoArrayNew index to use.
+
+
+ +
+
+ +

◆ onSpawning()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::PointLightNode::onSpawning ()
+
+overrideprotectedvirtual
+
+

Called when this node was not spawned previously and it was either attached to a parent node that is spawned or set as world's root node to execute custom spawn logic.

+
Remarks
This node will be marked as spawned before this function is called.
+
+This function is called before any of the child nodes are spawned. If you need to do some logic after child nodes are spawned use onChildNodesSpawned.
+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +

Reimplemented from ne::SpatialNode.

+ +
+
+ +

◆ onStartedUpdatingShaderData()

+ +
+
+ + + + + +
+ + + + + + + +
void * ne::PointLightNode::onStartedUpdatingShaderData ()
+
+private
+
+

Callback that will be called by the renderer when it's ready to copy new (updated) mtxShaderData to the GPU resource.

+
Returns
Pointer to the shader data at mtxShaderData.
+ +
+
+ +

◆ onStartedUpdatingShadowPassData()

+ +
+
+ + + + + +
+ + + + + + + + +
void * ne::PointLightNode::onStartedUpdatingShadowPassData (size_t iCubemapFaceIndex)
+
+private
+
+

Callback that will be called by the renderer when it's ready to copy new (updated) shadow pass data of the light source to the GPU resource.

+
Parameters
+ + +
iCubemapFaceIndexIndex of the cubemap face to copy the data.
+
+
+
Returns
Pointer to shadow pass data at mtxShaderData.
+ +
+
+ +

◆ onWorldLocationRotationScaleChanged()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::PointLightNode::onWorldLocationRotationScaleChanged ()
+
+overrideprotectedvirtual
+
+

Called after node's world location/rotation/scale was changed.

+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+
Remarks
If you change location/rotation/scale inside of this function, this function will not be called again (no recursion will occur).
+ +

Reimplemented from ne::SpatialNode.

+ +
+
+ +

◆ recalculateShadowPassShaderData()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::PointLightNode::recalculateShadowPassShaderData ()
+
+private
+
+

(Re)calculates data used in shadow pass.

+
Remarks
Does not call markShadowPassDataToBeCopiedToGpu.
+ +
+
+ +

◆ recalculateShape()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::PointLightNode::recalculateShape ()
+
+private
+
+

Recalculates mtxShaderData according to the current parameters (state).

+
Remarks
Takes information from mtxShaderData and expects that it's updated.
+ +
+
+ +

◆ setLightColor()

+ +
+
+ + + + + + + + +
void ne::PointLightNode::setLightColor (const glm::vec3 & color)
+
+

Sets light's color.

+
Parameters
+ + +
colorColor in RGB format in range [0.0; 1.0].
+
+
+ +
+
+ +

◆ setLightDistance()

+ +
+
+ + + + + + + + +
void ne::PointLightNode::setLightDistance (float distance)
+
+

Sets lit distance (i.e. attenuation radius).

+
Parameters
+ + +
distanceLit distance.
+
+
+ +
+
+ +

◆ setLightIntensity()

+ +
+
+ + + + + + + + +
void ne::PointLightNode::setLightIntensity (float intensity)
+
+

Sets light's intensity.

+
Parameters
+ + +
intensityIntensity in range [0.0; 1.0] (will be clamped if outside of the range).
+
+
+ +
+
+

Member Data Documentation

+ +

◆ color

+ +
+
+ + + + + +
+ + + + +
glm::vec3 ne::PointLightNode::color = glm::vec3(1.0F, 1.0F, 1.0F)
+
+private
+
+

Color of the light source.

+ +
+
+ +

◆ distance

+ +
+
+ + + + + +
+ + + + +
float ne::PointLightNode::distance = 10.0F
+
+private
+
+

Lit distance.

+ +
+
+ +

◆ intensity

+ +
+
+ + + + + +
+ + + + +
float ne::PointLightNode::intensity = 1.0F
+
+private
+
+

Light intensity, valid values range is [0.0F; 1.0F].

+ +
+
+ +

◆ mtxShaderData

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, ShaderData> ne::PointLightNode::mtxShaderData
+
+private
+
+

Only valid while spawned. Up to date data that will be copied to the GPU.

+ +
+
+ +

◆ mtxShape

+ +
+
+ + + + + +
+ + + + +
std::pair<std::mutex, Sphere> ne::PointLightNode::mtxShape
+
+private
+
+

Stores up-to-date sphere shape (in world space) that represents the point light.

+
Remarks
Only valid while spawned.
+ +
+
+ +

◆ pShadowMapHandle

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<ShadowMapHandle> ne::PointLightNode::pShadowMapHandle
+
+private
+
+

References shadow map of the light source.

+
Remarks
Only valid while spawned.
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/game/nodes/light/PointLightNode.h
  • +
  • src/engine_lib/private/game/nodes/light/PointLightNode.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1PointLightNode.js b/classne_1_1PointLightNode.js new file mode 100644 index 000000000..1d2bcf7d8 --- /dev/null +++ b/classne_1_1PointLightNode.js @@ -0,0 +1,34 @@ +var classne_1_1PointLightNode = +[ + [ "PointLightShaderData", "structne_1_1PointLightNode_1_1PointLightShaderData.html", "structne_1_1PointLightNode_1_1PointLightShaderData" ], + [ "ShaderData", "structne_1_1PointLightNode_1_1ShaderData.html", "structne_1_1PointLightNode_1_1ShaderData" ], + [ "PointLightNode", "classne_1_1PointLightNode.html#aa60d8ae6408b46c1b33acf221dbd2d8b", null ], + [ "getIndexIntoShadowPassInfoShaderArray", "classne_1_1PointLightNode.html#a4606abcc9f1ff0cc787df6917a6fc469", null ], + [ "getLightColor", "classne_1_1PointLightNode.html#ae4e8e15a56295141fe407b2b28e8a01a", null ], + [ "getLightDistance", "classne_1_1PointLightNode.html#a23e3f3e28cf39dc6c0bcca825f4333d8", null ], + [ "getLightIntensity", "classne_1_1PointLightNode.html#a381841c910fc7342a793bf4dd14c58cf", null ], + [ "getShadowMapHandle", "classne_1_1PointLightNode.html#a377a771a725777aab67298791c67200c", null ], + [ "getShape", "classne_1_1PointLightNode.html#a5b30375f6363dbb835446bf6839e2c54", null ], + [ "markShaderDataToBeCopiedToGpu", "classne_1_1PointLightNode.html#ae64d1c2e27549c93100744b194770d6e", null ], + [ "markShadowPassDataToBeCopiedToGpu", "classne_1_1PointLightNode.html#a8639059b33f82370c811ec13b744eb42", null ], + [ "onAfterDeserialized", "classne_1_1PointLightNode.html#ae2b46df4a1cf71aafb64a05a2b03a98c", null ], + [ "onDespawning", "classne_1_1PointLightNode.html#a3a3653f472765d4594939d8c3796aa73", null ], + [ "onFinishedUpdatingShaderData", "classne_1_1PointLightNode.html#aeb4c5c983c4821bead1f744afe581f33", null ], + [ "onFinishedUpdatingShadowPassData", "classne_1_1PointLightNode.html#a20c2d24c0bde9f3438443c5fc2be7735", null ], + [ "onShadowMapArrayIndexChanged", "classne_1_1PointLightNode.html#ad10da8aac0cdcf757127d75e444c1438", null ], + [ "onSpawning", "classne_1_1PointLightNode.html#afd427bdca3170f84fe6d924e9ba9cde4", null ], + [ "onStartedUpdatingShaderData", "classne_1_1PointLightNode.html#a1b060b0a223f693622b823ed594b8def", null ], + [ "onStartedUpdatingShadowPassData", "classne_1_1PointLightNode.html#a84d4950085cf3b039992aea9d9cc3240", null ], + [ "onWorldLocationRotationScaleChanged", "classne_1_1PointLightNode.html#a6fa982be86ccabacc971b188f2632e14", null ], + [ "recalculateShadowPassShaderData", "classne_1_1PointLightNode.html#a98d7bd9c3bc1e607dde0c5ee6076075a", null ], + [ "recalculateShape", "classne_1_1PointLightNode.html#aa2a13da948ce78237400827b473a92a7", null ], + [ "setLightColor", "classne_1_1PointLightNode.html#a7ebcc78564997d232927c47c452e2ca3", null ], + [ "setLightDistance", "classne_1_1PointLightNode.html#aede9df986937bba7876b54fc2dd9a37c", null ], + [ "setLightIntensity", "classne_1_1PointLightNode.html#ac333b558aa1b9531b5b66f1f0c97113b", null ], + [ "color", "classne_1_1PointLightNode.html#a7c20979ecc2639b1dd38556f1ae04032", null ], + [ "distance", "classne_1_1PointLightNode.html#a2fdb234bf03a583563b4d933d596239a", null ], + [ "intensity", "classne_1_1PointLightNode.html#a753617180aa169a0311af08d844ab569", null ], + [ "mtxShaderData", "classne_1_1PointLightNode.html#a730cd8da0898b2d8c6f22e4483cdab58", null ], + [ "mtxShape", "classne_1_1PointLightNode.html#aa2c7675f8f35358b85b1da96a2a5c601", null ], + [ "pShadowMapHandle", "classne_1_1PointLightNode.html#aa7082758917320a88a445cd6129d547b", null ] +]; \ No newline at end of file diff --git a/classne_1_1PointLightNode.png b/classne_1_1PointLightNode.png new file mode 100644 index 0000000000000000000000000000000000000000..82c62275f7a45fe7d15831f3855a15cfbd9dd170 GIT binary patch literal 1193 zcmeAS@N?(olHy`uVBq!ia0vp^r9k|HgBeIZ{Sw&$q@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB)hYKUQr$Q4;dHdzqi6=ylfDo6GJoUM`;ddaiY; z(fe-&rE;1}zZ@z5XBK<*BY(91@(=%ugS<{olHc4WaOf^WjR$*yweOnP>rS_i-13&r zxE)cys{JlkLRU1SPN8;#Y98x`BWoF^?GQa6w4Ev9QCLH9QqRY-j!7lPc~e!q|7|h- zVn69rw(R$E_Q~fTW?y^waeiHXP0w*%Wk`2A(K6KTQc8S^2up{k9&Qs&-oS$AXi?yGjpojX1Meq>OoY_vIV2ut_f>T`Qrx_bAAyZsBE*E#5=WfjR4tmgh8+ z&Br7jQ|vk2Yz@2DGgRh&+*leA5q0>D#QtYDp3GeIH{Ed367fB$Z-slWe=&`DUBI_i z*|X|s_10-Wr{DOzJLj6mCA;u7{qwE1ZJm~_k~zP7tKHGE?5RtH{~hNGSI;b47hJ#Y zc;@ZHlfJ})+`1!ll1^q?ui>%Xj6WvuJt&(Mv3p(Xw$827%`R-)_%DQix99;8aL_Y& z-{DH=M2VN@ME&_?`>`S z`Et>&pX+8-*Vwo{KD6-K%e1;}Q3{!Rw_Ph-Kh5WIb9?dAguU~fUwd4tdV3|xE^@Dr zWXx3m^#PIJjrMNIlUm_na8CDkK<>e7yDoRF&$?T3xs2W1ePjIUC9kTo+r?j>+_}#E z|HGZr*6#eXZJxp72Mtmua^>y=$@} z>1xQ_@0njN?TY=MbN5ND&s&@F1m4e&7VUca($HduTzP+D;A;!5<;$)XZ_4~Rt7>cC z`~4~LuU0mHjSnP;v2m-B4SXU%{0e&;NsKP6uiaN05ZKZAMWW!?nWIopAS3WKMspUXO@geCye CNn=<5 literal 0 HcmV?d00001 diff --git a/classne_1_1PrimitiveFieldSerializer-members.html b/classne_1_1PrimitiveFieldSerializer-members.html new file mode 100644 index 000000000..62adca2fc --- /dev/null +++ b/classne_1_1PrimitiveFieldSerializer-members.html @@ -0,0 +1,119 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::PrimitiveFieldSerializer Member List
+
+
+ +

This is the complete list of members for ne::PrimitiveFieldSerializer, including all inherited members.

+ + + + + + + + + + +
cloneField(Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField) overridene::PrimitiveFieldSerializervirtual
deserializeField(const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes) overridene::PrimitiveFieldSerializervirtual
IFieldSerializer()=default (defined in ne::IFieldSerializer)ne::IFieldSerializer
isFieldTypeSupported(const rfk::Field *pField) overridene::PrimitiveFieldSerializervirtual
isFieldValueEqual(Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB) overridene::PrimitiveFieldSerializervirtual
PrimitiveFieldSerializer()=default (defined in ne::PrimitiveFieldSerializer)ne::PrimitiveFieldSerializer
serializeField(toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr) overridene::PrimitiveFieldSerializervirtual
~IFieldSerializer()=default (defined in ne::IFieldSerializer)ne::IFieldSerializervirtual
~PrimitiveFieldSerializer() override=default (defined in ne::PrimitiveFieldSerializer)ne::PrimitiveFieldSerializervirtual
+
+ + + + diff --git a/classne_1_1PrimitiveFieldSerializer.html b/classne_1_1PrimitiveFieldSerializer.html new file mode 100644 index 000000000..5ca6378c3 --- /dev/null +++ b/classne_1_1PrimitiveFieldSerializer.html @@ -0,0 +1,475 @@ + + + + + + + +Nameless Engine: ne::PrimitiveFieldSerializer Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::PrimitiveFieldSerializer Class Reference
+
+
+ +

#include <PrimitiveFieldSerializer.h>

+
+Inheritance diagram for ne::PrimitiveFieldSerializer:
+
+
+ + +ne::IFieldSerializer + +
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual bool isFieldTypeSupported (const rfk::Field *pField) override
 
virtual std::optional< ErrorserializeField (toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr) override
 
virtual std::optional< ErrordeserializeField (const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes) override
 
virtual std::optional< ErrorcloneField (Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField) override
 
virtual bool isFieldValueEqual (Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB) override
 
virtual bool isFieldTypeSupported (const rfk::Field *pField)=0
 
virtual std::optional< ErrorserializeField (toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr)=0
 
virtual std::optional< ErrordeserializeField (const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes)=0
 
virtual std::optional< ErrorcloneField (Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField)=0
 
virtual bool isFieldValueEqual (Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB)=0
 
+

Detailed Description

+

Serializer for some primitive field types: bool, int, unsigned int, long long, unsigned long long, float, double.

+

Member Function Documentation

+ +

◆ cloneField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::PrimitiveFieldSerializer::cloneField (SerializablepFromInstance,
const rfk::Field * pFromField,
SerializablepToInstance,
const rfk::Field * pToField 
)
+
+overridevirtual
+
+

Clones field's data from one object to another.

+
Parameters
+ + + + + +
pFromInstanceInstance to copy the field from.
pFromFieldField to copy.
pToInstanceInstance to copy to.
pToFieldField to copy to.
+
+
+
Returns
Error if something went wrong, empty otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ deserializeField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::PrimitiveFieldSerializer::deserializeField (const toml::value * pTomlDocument,
const toml::value * pTomlValue,
SerializablepFieldOwner,
const rfk::Field * pField,
const std::string & sOwnerSectionName,
const std::string & sEntityId,
std::unordered_map< std::string, std::string > & customAttributes 
)
+
+overridevirtual
+
+

Deserializes field from a TOML value.

+
Parameters
+ + + + + + + + +
pTomlDocumentTOML document that contains a value to deserialize.
pTomlValueTOML value to deserialize the field from.
pFieldOwnerField's owner.
pFieldField to deserialize TOML value to.
sOwnerSectionNameName of the TOML section where is field was found.
sEntityIdCurrent ID string of the entity (field owner) that we are deserializing.
customAttributesPairs of values that were found with this object in TOML data. Only found when deserializing a field of type that derives from Serializable.
+
+
+
Returns
Error if something went wrong, empty otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ isFieldTypeSupported()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ne::PrimitiveFieldSerializer::isFieldTypeSupported (const rfk::Field * pField)
+
+overridevirtual
+
+

Tests if this serializer supports serialization/deserialization of this field.

+
Parameters
+ + +
pFieldField to test for serialization/deserialization support.
+
+
+
Returns
true if this serializer can be used to serialize this field, false otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ isFieldValueEqual()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool ne::PrimitiveFieldSerializer::isFieldValueEqual (SerializablepFieldAOwner,
const rfk::Field * pFieldA,
SerializablepFieldBOwner,
const rfk::Field * pFieldB 
)
+
+overridevirtual
+
+

Checks if the specified fields' values are equal or not.

+
Parameters
+ + + + + +
pFieldAOwnerOwner of the field A.
pFieldAField A to compare.
pFieldBOwnerOwner of the field B.
pFieldBField B to compare.
+
+
+
Returns
false if some field is unsupported by this serializer or if fields' values are not equal, true otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ serializeField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::PrimitiveFieldSerializer::serializeField (toml::value * pTomlData,
SerializablepFieldOwner,
const rfk::Field * pField,
const std::string & sSectionName,
const std::string & sEntityId,
size_t & iSubEntityId,
SerializablepOriginalObject = nullptr 
)
+
+overridevirtual
+
+

Serializes field into a TOML value.

+
Parameters
+ + + + + + + + +
pTomlDataTOML value to serialize the field to.
pFieldOwnerField's owner.
pFieldField to serialize.
sSectionNameName of the section (for TOML value) to use for this field.
sEntityIdCurrent ID string of the entity (field owner) that we are serializing. Only used when serializing a field of type that derives from Serializable.
iSubEntityIdCurrent ID of the sub entity (sub entity of the field owner). Only used when serializing a field of type that derives from Serializable.
pOriginalObjectOptional. Original object of the same type as the object being serialized, this object is a deserialized version of the object being serialized, used to compare serializable fields' values and only serialize changed values. Only used when serializing a field of type that derives from Serializable.
+
+
+
Returns
Error if something went wrong, empty otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/io/serializers/PrimitiveFieldSerializer.h
  • +
  • src/engine_lib/private/io/serializers/PrimitiveFieldSerializer.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1PrimitiveFieldSerializer.js b/classne_1_1PrimitiveFieldSerializer.js new file mode 100644 index 000000000..4e9788b57 --- /dev/null +++ b/classne_1_1PrimitiveFieldSerializer.js @@ -0,0 +1,8 @@ +var classne_1_1PrimitiveFieldSerializer = +[ + [ "cloneField", "classne_1_1PrimitiveFieldSerializer.html#a81782da414a164378e6cdc51b62b157a", null ], + [ "deserializeField", "classne_1_1PrimitiveFieldSerializer.html#af4c3afefc6645db9145e21403dfe7ef0", null ], + [ "isFieldTypeSupported", "classne_1_1PrimitiveFieldSerializer.html#ac94f362863bf8ec6923d7294036aafad", null ], + [ "isFieldValueEqual", "classne_1_1PrimitiveFieldSerializer.html#ac12c52186fdf97f68d4eaf7328b16256", null ], + [ "serializeField", "classne_1_1PrimitiveFieldSerializer.html#aadaced28235434f98d1cb3375b4ad101", null ] +]; \ No newline at end of file diff --git a/classne_1_1PrimitiveFieldSerializer.png b/classne_1_1PrimitiveFieldSerializer.png new file mode 100644 index 0000000000000000000000000000000000000000..a8075dd9a66f9e60137ce2af408abf005612c056 GIT binary patch literal 688 zcmeAS@N?(olHy`uVBq!ia0vp^i-0(QgBeJ!EsL`TQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#NtWJzX3_Dj46+jpci+z|+$1 zxT@yAaQ>}N$-*AHO64QguI_P4O1A5nyHDx)obO^rp6}K;sCcetny9k(7n7mv_1E8} zzD@u7&1~YE=^v$gRVtV23wmB!p}fz{yJ!E?-R?f_esSefC0ZjUU2|jGf2MMuN!?SC zHSC^xCG8PT-ySG0G8Mhlwx1($*)>iT%gec9z6QbF!bf)1C|RCT@>>HGYVX*^+NQJZ z*u~X1b64nHs=L*!BL2&!yE|%2?V?F3uS#d-zIB|$U0ZoUeCrCqsmF@`eRaHDw&&f8 zZ?QRlZ~e_W-7o7q$@{3hf@hUzhsw)Pg-J`o8$Bk)$#z&i-?NqB!S*VK1NUypfBbl3 zUSa)_=7REL^$dnqQVf5%To^uR2{0a5?ZCpYo=K2l4}O7v-bbbc-HP^5QnJ<-aCHHy z78G2sCm8?tirkikaY~EUl{05KOWNjJUDJG`b1S_=`IgC_tGoLuL|-3TAb5G>*-4$o zj}mM2gRfOtt!}qkeQrzsu5{nh$n(E!*MGWTtCM8E$Lv*ysY`r*$#se47N%~uKi1e9 zZ}qznX;K#5t^9*))V2 z@czXQW)Z=ky-a~FM^-zC2!7N8`OZop*ef&pFJs-d*1FwBXXXIY7K5j&pUXO@geCxc CG&e*5 literal 0 HcmV?d00001 diff --git a/classne_1_1PrimitiveMeshGenerator-members.html b/classne_1_1PrimitiveMeshGenerator-members.html new file mode 100644 index 000000000..8c8302dc6 --- /dev/null +++ b/classne_1_1PrimitiveMeshGenerator-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::PrimitiveMeshGenerator Member List
+
+
+ +

This is the complete list of members for ne::PrimitiveMeshGenerator, including all inherited members.

+ + + +
createCube(float size)ne::PrimitiveMeshGeneratorstatic
PrimitiveMeshGenerator()=delete (defined in ne::PrimitiveMeshGenerator)ne::PrimitiveMeshGenerator
+
+ + + + diff --git a/classne_1_1PrimitiveMeshGenerator.html b/classne_1_1PrimitiveMeshGenerator.html new file mode 100644 index 000000000..91a37675b --- /dev/null +++ b/classne_1_1PrimitiveMeshGenerator.html @@ -0,0 +1,160 @@ + + + + + + + +Nameless Engine: ne::PrimitiveMeshGenerator Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::PrimitiveMeshGenerator Class Reference
+
+
+ +

#include <PrimitiveMeshGenerator.h>

+ + + + +

+Static Public Member Functions

static MeshData createCube (float size)
 
+

Detailed Description

+

Provides static functions

+

Member Function Documentation

+ +

◆ createCube()

+ +
+
+ + + + + +
+ + + + + + + + +
MeshData ne::PrimitiveMeshGenerator::createCube (float size)
+
+static
+
+

Creates a cube mesh.

+
Parameters
+ + +
sizeSize of the cube.
+
+
+
Returns
Cube mesh.
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classne_1_1PrimitiveMeshGenerator.js b/classne_1_1PrimitiveMeshGenerator.js new file mode 100644 index 000000000..4432e1447 --- /dev/null +++ b/classne_1_1PrimitiveMeshGenerator.js @@ -0,0 +1,4 @@ +var classne_1_1PrimitiveMeshGenerator = +[ + [ "createCube", "classne_1_1PrimitiveMeshGenerator.html#a561b0e915550760d5a9f7cfd58c9df8a", null ] +]; \ No newline at end of file diff --git a/classne_1_1ProjectPaths-members.html b/classne_1_1ProjectPaths-members.html new file mode 100644 index 000000000..a59997cf2 --- /dev/null +++ b/classne_1_1ProjectPaths-members.html @@ -0,0 +1,129 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ProjectPaths Member List
+
+ +
+ + + + diff --git a/classne_1_1ProjectPaths.html b/classne_1_1ProjectPaths.html new file mode 100644 index 000000000..fff3a8cf7 --- /dev/null +++ b/classne_1_1ProjectPaths.html @@ -0,0 +1,588 @@ + + + + + + + +Nameless Engine: ne::ProjectPaths Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <ProjectPaths.h>

+ + + + + + +

+Public Member Functions

ProjectPaths (const ProjectPaths &)=delete
 
+ProjectPathsoperator= (const ProjectPaths &)=delete
 
+ + + + + + + + + + + + + + + +

+Static Public Member Functions

static std::filesystem::path getPathToEngineConfigsDirectory ()
 
static std::filesystem::path getPathToLogsDirectory ()
 
static std::filesystem::path getPathToPlayerProgressDirectory ()
 
static std::filesystem::path getPathToPlayerSettingsDirectory ()
 
static std::filesystem::path getPathToCompiledShadersDirectory ()
 
static std::filesystem::path getPathToResDirectory (ResourceDirectory directory)
 
static std::filesystem::path getPathToBaseConfigDirectory ()
 
+ + + +

+Static Private Member Functions

static std::filesystem::path getPathToResDirectory ()
 
+ + + + + + + + + + + + + + + + + +

+Static Private Attributes

static constexpr std::string_view sLogsDirectoryName = "logs"
 
static constexpr std::string_view sProgressDirectoryName = "progress"
 
static constexpr std::string_view sSettingsDirectoryName = "settings"
 
static constexpr std::string_view sEngineDirectoryName = "engine"
 
static constexpr std::string_view sShaderCacheDirectoryName = "shader_cache"
 
static constexpr std::string_view sGameResourcesDirectoryName = "game"
 
static constexpr std::string_view sEngineResourcesDirectoryName = "engine"
 
static constexpr std::string_view sEditorResourcesDirectoryName = "editor"
 
+

Detailed Description

+

Provides static functions for acquiring paths to project log/save/resource/etc. directories.

+

Member Function Documentation

+ +

◆ getPathToBaseConfigDirectory()

+ +
+
+ + + + + +
+ + + + + + + +
std::filesystem::path ne::ProjectPaths::getPathToBaseConfigDirectory ()
+
+static
+
+

Returns base (root) directory used to store save and log files, also creates this base directory if not exists.

+

On Windows, returns something like this: "C:\Users\user\AppData\Local\nameless-engine\" + +On Linux, returns something like this: +"~/.config/nameless-engine/"

+
Returns
Path to base engine directory. Does not contain application name in the returned path.
+ +
+
+ +

◆ getPathToCompiledShadersDirectory()

+ +
+
+ + + + + +
+ + + + + + + +
std::filesystem::path ne::ProjectPaths::getPathToCompiledShadersDirectory ()
+
+static
+
+

Returns path to the directory that is used to store compiled shaders.

+
Returns
Path to the directory.
+ +
+
+ +

◆ getPathToEngineConfigsDirectory()

+ +
+
+ + + + + +
+ + + + + + + +
std::filesystem::path ne::ProjectPaths::getPathToEngineConfigsDirectory ()
+
+static
+
+

Returns path to the directory that is used to store engine configuration files (settings files), such as renderer configuration, shader manager configuration and etc.

+
Returns
Path to the directory that is used to store engine configuration files.
+ +
+
+ +

◆ getPathToLogsDirectory()

+ +
+
+ + + + + +
+ + + + + + + +
std::filesystem::path ne::ProjectPaths::getPathToLogsDirectory ()
+
+static
+
+

Returns path to the directory that is used to store log files.

+
Returns
Path to the directory.
+ +
+
+ +

◆ getPathToPlayerProgressDirectory()

+ +
+
+ + + + + +
+ + + + + + + +
std::filesystem::path ne::ProjectPaths::getPathToPlayerProgressDirectory ()
+
+static
+
+

Returns path to the directory that is used to store player's game progress.

+
Returns
Path to the directory.
+ +
+
+ +

◆ getPathToPlayerSettingsDirectory()

+ +
+
+ + + + + +
+ + + + + + + +
std::filesystem::path ne::ProjectPaths::getPathToPlayerSettingsDirectory ()
+
+static
+
+

Returns path to the directory that is used to store player's game settings.

+
Returns
Path to the directory.
+ +
+
+ +

◆ getPathToResDirectory() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
std::filesystem::path ne::ProjectPaths::getPathToResDirectory ()
+
+staticprivate
+
+

Returns path to the res directory that is located next to the executable.

+
Remarks
Shows an error and throws an exception if path to the res directory does not exist.
+
Returns
Path to the res directory.
+ +
+
+ +

◆ getPathToResDirectory() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
std::filesystem::path ne::ProjectPaths::getPathToResDirectory (ResourceDirectory directory)
+
+static
+
+

Returns path to the directory used to store resources.

+
Remarks
Shows an error and throws an exception if path to the resources directory does not exist.
+
Parameters
+ + +
directorySpecific directory to query.
+
+
+
Returns
Path to the directory.
+ +
+
+

Member Data Documentation

+ +

◆ sEditorResourcesDirectoryName

+ +
+
+ + + + + +
+ + + + +
constexpr std::string_view ne::ProjectPaths::sEditorResourcesDirectoryName = "editor"
+
+staticconstexprprivate
+
+

Name of the directory in which we store editor resources.

+ +
+
+ +

◆ sEngineDirectoryName

+ +
+
+ + + + + +
+ + + + +
constexpr std::string_view ne::ProjectPaths::sEngineDirectoryName = "engine"
+
+staticconstexprprivate
+
+

Name of the directory in which we store engine configuration files.

+ +
+
+ +

◆ sEngineResourcesDirectoryName

+ +
+
+ + + + + +
+ + + + +
constexpr std::string_view ne::ProjectPaths::sEngineResourcesDirectoryName = "engine"
+
+staticconstexprprivate
+
+

Name of the directory in which we store engine resources.

+ +
+
+ +

◆ sGameResourcesDirectoryName

+ +
+
+ + + + + +
+ + + + +
constexpr std::string_view ne::ProjectPaths::sGameResourcesDirectoryName = "game"
+
+staticconstexprprivate
+
+

Name of the directory in which we store game resources.

+ +
+
+ +

◆ sLogsDirectoryName

+ +
+
+ + + + + +
+ + + + +
constexpr std::string_view ne::ProjectPaths::sLogsDirectoryName = "logs"
+
+staticconstexprprivate
+
+

Name of the directory in which we store engine logs.

+ +
+
+ +

◆ sProgressDirectoryName

+ +
+
+ + + + + +
+ + + + +
constexpr std::string_view ne::ProjectPaths::sProgressDirectoryName = "progress"
+
+staticconstexprprivate
+
+

Directory name that is used to store player's progress.

+ +
+
+ +

◆ sSettingsDirectoryName

+ +
+
+ + + + + +
+ + + + +
constexpr std::string_view ne::ProjectPaths::sSettingsDirectoryName = "settings"
+
+staticconstexprprivate
+
+

Directory name that is used to store player's settings.

+ +
+
+ +

◆ sShaderCacheDirectoryName

+ +
+
+ + + + + +
+ + + + +
constexpr std::string_view ne::ProjectPaths::sShaderCacheDirectoryName = "shader_cache"
+
+staticconstexprprivate
+
+

Name of the directory in which we store compiled shaders.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/misc/ProjectPaths.h
  • +
  • src/engine_lib/private/misc/ProjectPaths.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ProjectPaths.js b/classne_1_1ProjectPaths.js new file mode 100644 index 000000000..8fc0390c0 --- /dev/null +++ b/classne_1_1ProjectPaths.js @@ -0,0 +1,19 @@ +var classne_1_1ProjectPaths = +[ + [ "getPathToBaseConfigDirectory", "classne_1_1ProjectPaths.html#a8bb3ba8c53c55c5d57e65e4937f92527", null ], + [ "getPathToCompiledShadersDirectory", "classne_1_1ProjectPaths.html#a7d56a37593aa1ad58e44625a82ebc597", null ], + [ "getPathToEngineConfigsDirectory", "classne_1_1ProjectPaths.html#ab48ea963df9e3061a5d86c11a621fee6", null ], + [ "getPathToLogsDirectory", "classne_1_1ProjectPaths.html#ab2f965673f6c2ee2b7b1cee23c5d7d48", null ], + [ "getPathToPlayerProgressDirectory", "classne_1_1ProjectPaths.html#a94f4c68886f0f5c27f52d139902672e1", null ], + [ "getPathToPlayerSettingsDirectory", "classne_1_1ProjectPaths.html#a938cbdde81d85f34704685e9533b6e39", null ], + [ "getPathToResDirectory", "classne_1_1ProjectPaths.html#a7e3b23f03d31b30fbcdd468ad8b5ebb2", null ], + [ "getPathToResDirectory", "classne_1_1ProjectPaths.html#a7453ad9bd614a272717d9cca4a78adbb", null ], + [ "sEditorResourcesDirectoryName", "classne_1_1ProjectPaths.html#a151bf169edc469379c097b61ce66d046", null ], + [ "sEngineDirectoryName", "classne_1_1ProjectPaths.html#a2f8bef4292bd89aaf7b7416eb8d7dee0", null ], + [ "sEngineResourcesDirectoryName", "classne_1_1ProjectPaths.html#a1d19a95c6f979a7e6408727c64d6ff9a", null ], + [ "sGameResourcesDirectoryName", "classne_1_1ProjectPaths.html#a6ad46a58efc639d3534ed201c8acbe97", null ], + [ "sLogsDirectoryName", "classne_1_1ProjectPaths.html#a3549467613dbe46ee6c26a55d804df49", null ], + [ "sProgressDirectoryName", "classne_1_1ProjectPaths.html#a0a7938c84a1bc9ac757d7f62a1ae9381", null ], + [ "sSettingsDirectoryName", "classne_1_1ProjectPaths.html#af6fd932df98589e4a0727f771b088be7", null ], + [ "sShaderCacheDirectoryName", "classne_1_1ProjectPaths.html#a4f39d6884b212b0a084d76661fa36d22", null ] +]; \ No newline at end of file diff --git a/classne_1_1RenderSettings-members.html b/classne_1_1RenderSettings-members.html new file mode 100644 index 000000000..32bf0b0d2 --- /dev/null +++ b/classne_1_1RenderSettings-members.html @@ -0,0 +1,178 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::RenderSettings Member List
+
+
+ +

This is the complete list of members for ne::RenderSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bAllowSavingConfigurationToDiskne::RenderSettingsprivate
bIsVsyncEnabledne::RenderSettingsprivate
clampSettingsToMaxSupported()ne::RenderSettingsprivate
deserialize(const std::filesystem::path &pathToFile)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)ne::Serializablestatic
deserialize(std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, const std::string &sEntityId)ne::Serializablestatic
deserialize(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})ne::Serializablestatic
deserializeFromSection(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sSectionName, const std::string &sTypeGuid, const std::string &sEntityId, const std::optional< std::filesystem::path > &optionalPathToFile)ne::Serializableprivatestatic
deserializeMultiple(std::filesystem::path pathToFile)ne::Serializablestatic
getAntialiasingQuality() constne::RenderSettings
getClassForGuid(const std::string &sGuid)ne::Serializableprivatestatic
getClassForGuid(const rfk::Struct *pArchetypeToAnalyze, const std::string &sGuid)ne::Serializableprivatestatic
getConfigurationFileName(bool bIncludeFileExtension)ne::RenderSettingsprivatestatic
getFpsLimit() constne::RenderSettings
getGpuToUse() constne::RenderSettings
getIdsFromFile(std::filesystem::path pathToFile)ne::Serializablestatic
getMaxSupportedAntialiasingQuality() constne::RenderSettings
getPathDeserializedFromRelativeToRes() constne::Serializable
getPathToConfigurationFile()ne::RenderSettingsstatic
getRefreshRate() constne::RenderSettings
getRenderResolution() constne::RenderSettings
getShadowQuality() constne::RenderSettings
getTextureFilteringQuality() constne::RenderSettings
getTextureQuality() constne::RenderSettings
iAntialiasingSampleCountne::RenderSettingsprivate
iFpsLimitne::RenderSettingsprivate
iRefreshRateDenominatorne::RenderSettingsprivate
iRefreshRateNumeratorne::RenderSettingsprivate
iRendererTypene::RenderSettingsprivate
iRenderResolutionHeightne::RenderSettingsprivate
iRenderResolutionWidthne::RenderSettingsprivate
iShadowMapSizene::RenderSettingsprivate
isVsyncEnabled() constne::RenderSettings
iTextureFilteringQualityne::RenderSettingsprivate
iTextureQualityne::RenderSettingsprivate
notifyRendererAboutChangedSettings(bool bShadowMapSizeChanged=false)ne::RenderSettingsprivate
onAfterDeserialized() overridene::RenderSettingsprotectedvirtual
pathDeserializedFromRelativeToResne::Serializableprivate
pRendererne::RenderSettingsprivate
Renderer (defined in ne::RenderSettings)ne::RenderSettingsfriend
RenderSettings()=default (defined in ne::RenderSettings)ne::RenderSettings
resolvePathToToml(std::filesystem::path &pathToFile)ne::Serializableprivatestatic
saveConfigurationToDisk()ne::RenderSettingsprivate
sCustomAttributePrefixne::Serializableprivatestatic
Serializable()=default (defined in ne::Serializable)ne::Serializable
serialize(std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})ne::Serializable
serialize(toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serialize(toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serializeMultiple(std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)ne::Serializablestatic
setAntialiasingQuality(AntialiasingQuality quality)ne::RenderSettings
setFpsLimit(unsigned int iNewFpsLimit)ne::RenderSettings
setGpuToUse(const std::string &sGpuName)ne::RenderSettings
setPreferredRenderer(RendererType preferredRenderer)ne::RenderSettings
setRefreshRate(std::pair< unsigned int, unsigned int > refreshRate)ne::RenderSettings
setRenderer(Renderer *pRenderer)ne::RenderSettingsprivate
setRenderResolution(std::pair< unsigned int, unsigned int > resolution)ne::RenderSettings
setShadowQuality(ShadowQuality quality)ne::RenderSettings
setTextureFilteringQuality(TextureFilteringQuality quality)ne::RenderSettings
setTextureQuality(TextureQuality quality)ne::RenderSettings
setVsyncEnabled(bool bEnableVsync)ne::RenderSettings
sGpuToUsene::RenderSettingsprivate
sNothingToSerializeKeyne::Serializableinlineprivatestatic
sPathRelativeToResKeyne::Serializableinlineprivatestatic
sRenderSettingsConfigurationFileNamene::RenderSettingsinlineprivatestatic
sSubEntityFieldNameKeyne::Serializableinlineprivatestatic
~RenderSettings() override=default (defined in ne::RenderSettings)ne::RenderSettingsvirtual
~Serializable() override=default (defined in ne::Serializable)ne::Serializablevirtual
+
+ + + + diff --git a/classne_1_1RenderSettings.html b/classne_1_1RenderSettings.html new file mode 100644 index 000000000..599158988 --- /dev/null +++ b/classne_1_1RenderSettings.html @@ -0,0 +1,1302 @@ + + + + + + + +Nameless Engine: ne::RenderSettings Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <RenderSettings.h>

+
+Inheritance diagram for ne::RenderSettings:
+
+
+ + +ne::Serializable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void setFpsLimit (unsigned int iNewFpsLimit)
 
void setShadowQuality (ShadowQuality quality)
 
void setAntialiasingQuality (AntialiasingQuality quality)
 
void setTextureFilteringQuality (TextureFilteringQuality quality)
 
void setTextureQuality (TextureQuality quality)
 
void setRenderResolution (std::pair< unsigned int, unsigned int > resolution)
 
void setVsyncEnabled (bool bEnableVsync)
 
void setRefreshRate (std::pair< unsigned int, unsigned int > refreshRate)
 
void setGpuToUse (const std::string &sGpuName)
 
void setPreferredRenderer (RendererType preferredRenderer)
 
unsigned int getFpsLimit () const
 
AntialiasingQuality getAntialiasingQuality () const
 
ShadowQuality getShadowQuality () const
 
std::variant< AntialiasingQuality, ErrorgetMaxSupportedAntialiasingQuality () const
 
TextureFilteringQuality getTextureFilteringQuality () const
 
TextureQuality getTextureQuality () const
 
std::pair< unsigned int, unsigned int > getRenderResolution () const
 
bool isVsyncEnabled () const
 
std::pair< unsigned int, unsigned int > getRefreshRate () const
 
std::string getGpuToUse () const
 
- Public Member Functions inherited from ne::Serializable
std::optional< Errorserialize (std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})
 
std::variant< std::string, Errorserialize (toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::variant< std::string, Errorserialize (toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::optional< std::pair< std::string, std::string > > getPathDeserializedFromRelativeToRes () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static std::filesystem::path getPathToConfigurationFile ()
 
- Static Public Member Functions inherited from ne::Serializable
static std::variant< std::pair< std::set< std::string >, toml::value >, ErrorgetIdsFromFile (std::filesystem::path pathToFile)
 
static std::optional< ErrorserializeMultiple (std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::same_as<SmartPointer, sgc::GcPtr<Serializable>> || std::same_as<SmartPointer, std::unique_ptr<Serializable>>
static std::variant< std::vector< DeserializedObjectInformation< SmartPointer > >, ErrordeserializeMultiple (std::filesystem::path pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})
 
+ + + + + +

+Protected Member Functions

virtual void onAfterDeserialized () override
 
virtual void onAfterDeserialized ()
 
+ + + + + + + + + +

+Private Member Functions

void setRenderer (Renderer *pRenderer)
 
std::optional< ErrorclampSettingsToMaxSupported ()
 
std::optional< ErrorsaveConfigurationToDisk ()
 
void notifyRendererAboutChangedSettings (bool bShadowMapSizeChanged=false)
 
+ + + +

+Static Private Member Functions

static std::string getConfigurationFileName (bool bIncludeFileExtension)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

unsigned int iRenderResolutionWidth = 0
 
unsigned int iRenderResolutionHeight = 0
 
unsigned int iRefreshRateNumerator = 0
 
unsigned int iRefreshRateDenominator = 0
 
unsigned int iFpsLimit = 0
 
std::string sGpuToUse
 
unsigned int iRendererType = 0
 
unsigned int iShadowMapSize = static_cast<unsigned int>(ShadowQuality::HIGH)
 
unsigned int iAntialiasingSampleCount = static_cast<unsigned int>(AntialiasingQuality::HIGH)
 
unsigned int iTextureFilteringQuality = static_cast<unsigned int>(TextureFilteringQuality::HIGH)
 
unsigned int iTextureQuality = static_cast<unsigned int>(TextureQuality::VERY_HIGH)
 
bool bIsVsyncEnabled = false
 
RendererpRenderer = nullptr
 
bool bAllowSavingConfigurationToDisk = false
 
+ + + +

+Static Private Attributes

static const char * sRenderSettingsConfigurationFileName = "render"
 
+ + + +

+Friends

+class Renderer
 
+

Detailed Description

+

Controls renderer settings.

+

Member Function Documentation

+ +

◆ clampSettingsToMaxSupported()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::RenderSettings::clampSettingsToMaxSupported ()
+
+private
+
+

Called by the renderer when it has finished initializing its essential entities so that RenderSettings can query maximum supported settings and clamp the current values (if needed).

+
Returns
Error if something went wrong.
+ +
+
+ +

◆ getAntialiasingQuality()

+ +
+
+ + + + + + + +
AntialiasingQuality ne::RenderSettings::getAntialiasingQuality () const
+
+

Returns current anti-aliasing (AA) quality.

+
Returns
Returns DISABLED if AA is not supported (see getMaxSupportedAntialiasingQuality), otherwise current AA quality.
+ +
+
+ +

◆ getConfigurationFileName()

+ +
+
+ + + + + +
+ + + + + + + + +
std::string ne::RenderSettings::getConfigurationFileName (bool bIncludeFileExtension)
+
+staticprivate
+
+

Returns name of the file that is used to store setting configuration.

+
Parameters
+ + +
bIncludeFileExtensionWhether to include file extension in the returned string or not.
+
+
+
Returns
Name of the file.
+ +
+
+ +

◆ getFpsLimit()

+ +
+
+ + + + + + + +
unsigned int ne::RenderSettings::getFpsLimit () const
+
+

Returns the maximum number of FPS that is allowed to be produced in a second.

+
Returns
Maximum allowed FPS, 0 means disabled.
+ +
+
+ +

◆ getGpuToUse()

+ +
+
+ + + + + + + +
std::string ne::RenderSettings::getGpuToUse () const
+
+

Returns name of the GPU to use.

+
Remarks
This value is taken from the renderer's settings file (see setGpuToUse) which sometimes might not represent the actual GPU being used. Instead you might be interested in Renderer::getCurrentlyUsedGpuName.
+
Returns
Name of the GPU specified in the settings.
+ +
+
+ +

◆ getMaxSupportedAntialiasingQuality()

+ +
+
+ + + + + + + +
std::variant< AntialiasingQuality, Error > ne::RenderSettings::getMaxSupportedAntialiasingQuality () const
+
+

Returns the maximum anti-aliasing quality that can be used on the picked GPU (see Renderer::getCurrentlyUsedGpuName).

+
Remarks
Note that the maximum supported AA quality can differ depending on the used GPU/renderer.
+
Returns
Error if something went wrong, otherwise DISABLED if AA is not supported or the maximum supported AA quality.
+ +
+
+ +

◆ getPathToConfigurationFile()

+ +
+
+ + + + + +
+ + + + + + + +
std::filesystem::path ne::RenderSettings::getPathToConfigurationFile ()
+
+static
+
+

Returns path to the file that is used to store setting configuration.

+
Returns
Path to file.
+ +
+
+ +

◆ getRefreshRate()

+ +
+
+ + + + + + + +
std::pair< unsigned int, unsigned int > ne::RenderSettings::getRefreshRate () const
+
+

Returns currently used screen's refresh rate.

+
Returns
Numerator and denominator of the refresh rate.
+ +
+
+ +

◆ getRenderResolution()

+ +
+
+ + + + + + + +
std::pair< unsigned int, unsigned int > ne::RenderSettings::getRenderResolution () const
+
+

Returns currently used render resolution (width and height).

+
Returns
Width and height in pixels.
+ +
+
+ +

◆ getShadowQuality()

+ +
+
+ + + + + + + +
ShadowQuality ne::RenderSettings::getShadowQuality () const
+
+

Returns current shadow quality.

+
Returns
Shadow quality.
+ +
+
+ +

◆ getTextureFilteringQuality()

+ +
+
+ + + + + + + +
TextureFilteringQuality ne::RenderSettings::getTextureFilteringQuality () const
+
+

Returns currently used texture filtering quality.

+
Returns
Texture filtering quality.
+ +
+
+ +

◆ getTextureQuality()

+ +
+
+ + + + + + + +
TextureQuality ne::RenderSettings::getTextureQuality () const
+
+

Returns currently used texture quality.

+
Returns
Texture quality.
+ +
+
+ +

◆ isVsyncEnabled()

+ +
+
+ + + + + + + +
bool ne::RenderSettings::isVsyncEnabled () const
+
+

Tells if vertical synchronization is currently enabled or not.

+
Returns
Whether vertical synchronization is currently enabled or not.
+ +
+
+ +

◆ notifyRendererAboutChangedSettings()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::RenderSettings::notifyRendererAboutChangedSettings (bool bShadowMapSizeChanged = false)
+
+private
+
+

Notifies the renderer to change its internal state to match the current settings.

+
Remarks
Does nothing if the renderer is not initialized yet. The renderer will take values from the settings upon initialization.
+
Parameters
+ + +
bShadowMapSizeChangedtrue if shadow map size was changed, false otherwise.
+
+
+ +
+
+ +

◆ onAfterDeserialized()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::RenderSettings::onAfterDeserialized ()
+
+overrideprotectedvirtual
+
+

Called after the object was successfully deserialized. Used to execute post-deserialization logic.

+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +

Reimplemented from ne::Serializable.

+ +
+
+ +

◆ saveConfigurationToDisk()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::RenderSettings::saveConfigurationToDisk ()
+
+private
+
+

Saves the current configuration to disk.

+
Remarks
Does nothing if bAllowSavingConfigurationToDisk is false.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ setAntialiasingQuality()

+ +
+
+ + + + + + + + +
void ne::RenderSettings::setAntialiasingQuality (AntialiasingQuality quality)
+
+

Sets anti-aliasing (AA) quality.

+
Warning
Use getMaxSupportedAntialiasingQuality to query for maximum supported AA quality, if the specified quality is not supported an error will be logged.
+
Parameters
+ + +
qualityAA quality.
+
+
+ +
+
+ +

◆ setFpsLimit()

+ +
+
+ + + + + + + + +
void ne::RenderSettings::setFpsLimit (unsigned int iNewFpsLimit)
+
+

Sets the maximum number of FPS that is allowed to be produced in a second.

+
Parameters
+ + +
iNewFpsLimitMaximum allowed FPS, specify 0 to disable.
+
+
+ +
+
+ +

◆ setGpuToUse()

+ +
+
+ + + + + + + + +
void ne::RenderSettings::setGpuToUse (const std::string & sGpuName)
+
+

Sets GPU to be used next time the engine starts.

+
Remarks
Use Renderer to get available GPU names.
+
+In order for this setting to be applied the engine needs to be restarted.
+
Parameters
+ + +
sGpuNameName of the GPU to use.
+
+
+ +
+
+ +

◆ setPreferredRenderer()

+ +
+
+ + + + + + + + +
void ne::RenderSettings::setPreferredRenderer (RendererType preferredRenderer)
+
+

Changes renderer's config file setting about preferred renderer.

+
Remarks
In order for this setting to be applied the engine needs to be restarted.
+
+Note that this setting will be ignored if you use Window::setPreferredRenderer.
+
Parameters
+ + +
preferredRendererRenderer to prefer (test the first one) next time the game is started.
+
+
+ +
+
+ +

◆ setRefreshRate()

+ +
+
+ + + + + + + + +
void ne::RenderSettings::setRefreshRate (std::pair< unsigned int, unsigned int > refreshRate)
+
+

Sets screen's refresh rate to use.

+
Remarks
In order for this setting to be applied the engine needs to be restarted.
+
Parameters
+ + +
refreshRateNumerator and denominator of the refresh rate to use.
+
+
+ +
+
+ +

◆ setRenderer()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::RenderSettings::setRenderer (RendererpRenderer)
+
+private
+
+

Sets renderer to be used.

+
Remarks
It is essential to call this function to initialize the object.
+
Parameters
+ + +
pRendererGame's renderer.
+
+
+ +
+
+ +

◆ setRenderResolution()

+ +
+
+ + + + + + + + +
void ne::RenderSettings::setRenderResolution (std::pair< unsigned int, unsigned int > resolution)
+
+

Sets the width and the height of the render resolution.

+
Remarks
Use Renderer::getSupportedRenderResolutions to query for available render resolutions.
+
Parameters
+ + +
resolutionWidth and height in pixels.
+
+
+ +
+
+ +

◆ setShadowQuality()

+ +
+
+ + + + + + + + +
void ne::RenderSettings::setShadowQuality (ShadowQuality quality)
+
+

Sets shadow quality.

+
Parameters
+ + +
qualityQuality to use.
+
+
+ +
+
+ +

◆ setTextureFilteringQuality()

+ +
+
+ + + + + + + + +
void ne::RenderSettings::setTextureFilteringQuality (TextureFilteringQuality quality)
+
+

Sets texture filtering quality to be used.

+
Parameters
+ + +
qualityQuality to use.
+
+
+ +
+
+ +

◆ setTextureQuality()

+ +
+
+ + + + + + + + +
void ne::RenderSettings::setTextureQuality (TextureQuality quality)
+
+

Sets texture quality to be used.

+
Remarks
In order for this setting to be applied the engine needs to be restarted.
+
Parameters
+ + +
qualityQuality to use.
+
+
+ +
+
+ +

◆ setVsyncEnabled()

+ +
+
+ + + + + + + + +
void ne::RenderSettings::setVsyncEnabled (bool bEnableVsync)
+
+

Sets whether to enable vertical synchronization or not.

+
Parameters
+ + +
bEnableVsyncWhether to enable vertical synchronization or not.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ bAllowSavingConfigurationToDisk

+ +
+
+ + + + + +
+ + + + +
bool ne::RenderSettings::bAllowSavingConfigurationToDisk = false
+
+private
+
+

Defines whether or not changes to render settings trigger saving on disk.

+
Remarks
Disabled by default as render settings can be modified by a renderer during its initialization (some settings getting clamped/fixed due to render/hardware capabilities) and because a renderer can fail to initialize (for example if the hardware does not support it) we don't want any of these modifications to be saved. Once a renderer was initialized the base Renderer class will enable saving on disk and will trigger a manual resave to apply possibly fixed/clamped settings.
+ +
+
+ +

◆ bIsVsyncEnabled

+ +
+
+ + + + + +
+ + + + +
bool ne::RenderSettings::bIsVsyncEnabled = false
+
+private
+
+

Whether VSync is enabled or not.

+ +
+
+ +

◆ iAntialiasingSampleCount

+ +
+
+ + + + + +
+ + + + +
unsigned int ne::RenderSettings::iAntialiasingSampleCount = static_cast<unsigned int>(AntialiasingQuality::HIGH)
+
+private
+
+

Sample count of AA.

+ +
+
+ +

◆ iFpsLimit

+ +
+
+ + + + + +
+ + + + +
unsigned int ne::RenderSettings::iFpsLimit = 0
+
+private
+
+

The maximum number of FPS that is allowed to be produced in a second.

+
Remarks
Disabled if zero.
+ +
+
+ +

◆ iRefreshRateDenominator

+ +
+
+ + + + + +
+ + + + +
unsigned int ne::RenderSettings::iRefreshRateDenominator = 0
+
+private
+
+

Denominator of screen's refresh rate.

+ +
+
+ +

◆ iRefreshRateNumerator

+ +
+
+ + + + + +
+ + + + +
unsigned int ne::RenderSettings::iRefreshRateNumerator = 0
+
+private
+
+

Numerator of screen's refresh rate.

+ +
+
+ +

◆ iRendererType

+ +
+
+ + + + + +
+ + + + +
unsigned int ne::RenderSettings::iRendererType = 0
+
+private
+
+

Stored used type of the renderer (DirectX/Vulkan/etc.).

+
Remarks
Can be changed from the config file to change preferred renderer.
+ +
+
+ +

◆ iRenderResolutionHeight

+ +
+
+ + + + + +
+ + + + +
unsigned int ne::RenderSettings::iRenderResolutionHeight = 0
+
+private
+
+

Height of the back buffer.

+ +
+
+ +

◆ iRenderResolutionWidth

+ +
+
+ + + + + +
+ + + + +
unsigned int ne::RenderSettings::iRenderResolutionWidth = 0
+
+private
+
+

Width of the back buffer.

+ +
+
+ +

◆ iShadowMapSize

+ +
+
+ + + + + +
+ + + + +
unsigned int ne::RenderSettings::iShadowMapSize = static_cast<unsigned int>(ShadowQuality::HIGH)
+
+private
+
+

Shadow map resolution in pixels.

+ +
+
+ +

◆ iTextureFilteringQuality

+ +
+
+ + + + + +
+ + + + +
unsigned int ne::RenderSettings::iTextureFilteringQuality = static_cast<unsigned int>(TextureFilteringQuality::HIGH)
+
+private
+
+

Texture filtering mode.

+ +
+
+ +

◆ iTextureQuality

+ +
+
+ + + + + +
+ + + + +
unsigned int ne::RenderSettings::iTextureQuality = static_cast<unsigned int>(TextureQuality::VERY_HIGH)
+
+private
+
+

Defines how much mipmaps we will skip when loading textures from disk.

+ +
+
+ +

◆ pRenderer

+ +
+
+ + + + + +
+ + + + +
Renderer* ne::RenderSettings::pRenderer = nullptr
+
+private
+
+

Do not delete (free) this pointer. Game's renderer.

+ +
+
+ +

◆ sGpuToUse

+ +
+
+ + + + + +
+ + + + +
std::string ne::RenderSettings::sGpuToUse
+
+private
+
+

Name of the GPU to use.

+ +
+
+ +

◆ sRenderSettingsConfigurationFileName

+ +
+
+ + + + + +
+ + + + +
const char* ne::RenderSettings::sRenderSettingsConfigurationFileName = "render"
+
+inlinestaticprivate
+
+

Name of the file we use to store render settings.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/render/RenderSettings.h
  • +
  • src/engine_lib/private/render/general/RenderSettings.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1RenderSettings.js b/classne_1_1RenderSettings.js new file mode 100644 index 000000000..ada573549 --- /dev/null +++ b/classne_1_1RenderSettings.js @@ -0,0 +1,45 @@ +var classne_1_1RenderSettings = +[ + [ "clampSettingsToMaxSupported", "classne_1_1RenderSettings.html#a9272a6f47961e38ce05a5dc30711f49f", null ], + [ "getAntialiasingQuality", "classne_1_1RenderSettings.html#afa1e88e397a0fd9be160abd14738dc84", null ], + [ "getConfigurationFileName", "classne_1_1RenderSettings.html#a11f9aa51b447226818d14884d04e399f", null ], + [ "getFpsLimit", "classne_1_1RenderSettings.html#a1c51d150d32d36c9900d7aa6b8ca0de6", null ], + [ "getGpuToUse", "classne_1_1RenderSettings.html#a1a3c4d49f5fbba99e558d9d35d951221", null ], + [ "getMaxSupportedAntialiasingQuality", "classne_1_1RenderSettings.html#ae8eecaaee3873609f6dfe61f12c86ee2", null ], + [ "getPathToConfigurationFile", "classne_1_1RenderSettings.html#a93af910913eb360eb0dc7a235fe79949", null ], + [ "getRefreshRate", "classne_1_1RenderSettings.html#afd2eefc25534997a421364f1f75dc123", null ], + [ "getRenderResolution", "classne_1_1RenderSettings.html#a35eb481744e77843303a1576c286e8cc", null ], + [ "getShadowQuality", "classne_1_1RenderSettings.html#a87dd817de4da7ec6b8a17515640798a2", null ], + [ "getTextureFilteringQuality", "classne_1_1RenderSettings.html#ae87ad84151fdc18dc73216cdba71f8ab", null ], + [ "getTextureQuality", "classne_1_1RenderSettings.html#ae26a0d83f36946cd51b18a8e174f8966", null ], + [ "isVsyncEnabled", "classne_1_1RenderSettings.html#a4cf567c98f20cb832aa86a9b1599fbe8", null ], + [ "notifyRendererAboutChangedSettings", "classne_1_1RenderSettings.html#a1ef3a5f77f2b71b60fdfc97c886479ca", null ], + [ "onAfterDeserialized", "classne_1_1RenderSettings.html#a9107963ba60801c525dcfecdc3d0d293", null ], + [ "saveConfigurationToDisk", "classne_1_1RenderSettings.html#a25adb8a7b5fca2c480fdc177d881774d", null ], + [ "setAntialiasingQuality", "classne_1_1RenderSettings.html#a5e7b93c67a1460ef9fc82a14ff7721ca", null ], + [ "setFpsLimit", "classne_1_1RenderSettings.html#a573b58c8b74b72d7fcd8f78f8e09f230", null ], + [ "setGpuToUse", "classne_1_1RenderSettings.html#a14aa87d43e3d4575b42f4bc2c10891ff", null ], + [ "setPreferredRenderer", "classne_1_1RenderSettings.html#a11363c652eb1ee875f816c8d4bfd8266", null ], + [ "setRefreshRate", "classne_1_1RenderSettings.html#acb5f17b373b5e04b619f4242a0384c22", null ], + [ "setRenderer", "classne_1_1RenderSettings.html#ae45e242d04d3dd5c67da39daa8199e75", null ], + [ "setRenderResolution", "classne_1_1RenderSettings.html#a7801c6f424fc71df5df9663120b2cfd6", null ], + [ "setShadowQuality", "classne_1_1RenderSettings.html#a80cfef7ef20061158702642785c2be26", null ], + [ "setTextureFilteringQuality", "classne_1_1RenderSettings.html#ab0eb617b2ad2b3d3dfd12cfdc4dd35ba", null ], + [ "setTextureQuality", "classne_1_1RenderSettings.html#aef1193285e4a7a670969854d9e5874a2", null ], + [ "setVsyncEnabled", "classne_1_1RenderSettings.html#a0c1620f0b1a5dc7b569dfdf549f08287", null ], + [ "bAllowSavingConfigurationToDisk", "classne_1_1RenderSettings.html#aa186b154dc9aa4d441ded46676140abe", null ], + [ "bIsVsyncEnabled", "classne_1_1RenderSettings.html#a0553d46a36ffbaf0441145258fd96162", null ], + [ "iAntialiasingSampleCount", "classne_1_1RenderSettings.html#a427dd7d584682dab9fd9b0d72a41a218", null ], + [ "iFpsLimit", "classne_1_1RenderSettings.html#ad2ec3ca65ca9ec3c720df7b3b42ed857", null ], + [ "iRefreshRateDenominator", "classne_1_1RenderSettings.html#a56076380e5b1260b7c653ed28c10aedc", null ], + [ "iRefreshRateNumerator", "classne_1_1RenderSettings.html#a5b7ec944a98dd45b5ec9a755f99c8d65", null ], + [ "iRendererType", "classne_1_1RenderSettings.html#ac9a7e1e4cd70be2c963742f76c9b9428", null ], + [ "iRenderResolutionHeight", "classne_1_1RenderSettings.html#a7bc8493978b569dcc73222d058335045", null ], + [ "iRenderResolutionWidth", "classne_1_1RenderSettings.html#ae50a37057cd2172aa1b2df504dc1895a", null ], + [ "iShadowMapSize", "classne_1_1RenderSettings.html#ac3822167dd47b453706cbe4c91cd605f", null ], + [ "iTextureFilteringQuality", "classne_1_1RenderSettings.html#ae5c511701fbd3147ca339e24b566e666", null ], + [ "iTextureQuality", "classne_1_1RenderSettings.html#ab4b97e60b6559de291a42269f09d7111", null ], + [ "pRenderer", "classne_1_1RenderSettings.html#affd081e6f78cb4b9c136eb8cbd4f9068", null ], + [ "sGpuToUse", "classne_1_1RenderSettings.html#ab37f807df2b1249795add7f151aa963e", null ], + [ "sRenderSettingsConfigurationFileName", "classne_1_1RenderSettings.html#ae3f04a9f9b90310bc7884b1e66c8dfc1", null ] +]; \ No newline at end of file diff --git a/classne_1_1RenderSettings.png b/classne_1_1RenderSettings.png new file mode 100644 index 0000000000000000000000000000000000000000..60828f0eb246086f2cea8399712f8ae24f145455 GIT binary patch literal 784 zcmV+r1MmEaP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0007; zNkl34jLG{y@wEs-0NdKT!QCmloTFPB# z;`SOFdTKrC(;^=QP8Qj17uxjq?c5h>OMYK=`5aP4c#H%)3J zcW2o2Lqw#~&wMvsjq!)6mqX0o91#&ueHoRAXtV&}L#+TXT(?ly^$zSU)D3zA_8#h2 z&G4iGfU71I06aCR0N|-f1prS?DgbzDQUSnIlL`Qynp6OItz}u3;ljeqJXn*;%$x2uzfwfPz~>^=+8dvKXbTVgT2Hf}U-KEbx%?zzTtBvX1~;yj_oAURw# zrYL7V#&np|7G}Vw=u?+E+85$NPHBaP|q)Y-c$9Uz=fOW^YX@Gqa~Am6_R7w^5g6Sw;&0 zKGX^T!*vUFUGKo&LfxP@VDF)R)eKK60Jv&W0l-s}3ILv(Q~>bQqym7aCKUiYHK_pL zsYwNZ*CHYsE|99~U`?v3s;7P-HH@38YNOg}9k + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::RenderStatistics Member List
+
+ +
+ + + + diff --git a/classne_1_1RenderStatistics.html b/classne_1_1RenderStatistics.html new file mode 100644 index 000000000..09a7bb247 --- /dev/null +++ b/classne_1_1RenderStatistics.html @@ -0,0 +1,461 @@ + + + + + + + +Nameless Engine: ne::RenderStatistics Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <RenderStatistics.h>

+ + + + + + + + + + + + +

+Classes

struct  Counters
 
struct  FpsLimitInfo
 
struct  FramesPerSecondInfo
 
struct  FrameTemporaryStatistics
 
struct  TaskTimeInfo
 
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

RenderStatistics (const RenderStatistics &)=delete
 
+RenderStatisticsoperator= (const RenderStatistics &)=delete
 
size_t getFramesPerSecond () const
 
size_t getLastFrameDrawCallCount () const
 
size_t getLastFrameCulledMeshCount () const
 
size_t getLastFrameCulledLightCount () const
 
float getTimeSpentLastFrameWaitingForGpu () const
 
float getTimeSpentLastFrameOnFrustumCullingMeshes () const
 
float getTimeSpentLastFrameOnFrustumCullingLights () const
 
+ + + +

+Private Member Functions

void saveAndResetTemporaryFrameStatistics ()
 
+ + + + + + + + + + + +

+Private Attributes

FramesPerSecondInfo fpsInfo
 
FpsLimitInfo fpsLimitInfo
 
TaskTimeInfo taskTimeInfo
 
Counters counters
 
FrameTemporaryStatistics frameTemporaryStatistics
 
+ + + +

+Friends

+class Renderer
 
+

Detailed Description

+

Stores various statistics about rendering (FPS for example).

+

Member Function Documentation

+ +

◆ getFramesPerSecond()

+ +
+
+ + + + + + + +
size_t ne::RenderStatistics::getFramesPerSecond () const
+
+

Returns the total number of frames that the renderer produced in the last second.

+
Returns
Zero if not calculated yet (wait at least 1 second), otherwise FPS count.
+ +
+
+ +

◆ getLastFrameCulledLightCount()

+ +
+
+ + + + + + + +
size_t ne::RenderStatistics::getLastFrameCulledLightCount () const
+
+

Returns the total number of lights that were discarded from submitting to the rendering during the last frame.

+
Returns
Mesh count.
+ +
+
+ +

◆ getLastFrameCulledMeshCount()

+ +
+
+ + + + + + + +
size_t ne::RenderStatistics::getLastFrameCulledMeshCount () const
+
+

Returns the total number of meshes that were discarded from submitting to the rendering during the last frame.

+
Returns
Mesh count.
+ +
+
+ +

◆ getLastFrameDrawCallCount()

+ +
+
+ + + + + + + +
size_t ne::RenderStatistics::getLastFrameDrawCallCount () const
+
+

Returns the total number of draw calls made last frame.

+
Returns
Draw call count.
+ +
+
+ +

◆ getTimeSpentLastFrameOnFrustumCullingLights()

+ +
+
+ + + + + + + +
float ne::RenderStatistics::getTimeSpentLastFrameOnFrustumCullingLights () const
+
+

Returns time in milliseconds that was spent last frame doing frustum culling for lights.

+
Returns
Time in milliseconds.
+ +
+
+ +

◆ getTimeSpentLastFrameOnFrustumCullingMeshes()

+ +
+
+ + + + + + + +
float ne::RenderStatistics::getTimeSpentLastFrameOnFrustumCullingMeshes () const
+
+

Returns time in milliseconds that was spent last frame doing frustum culling for meshes.

+
Returns
Time in milliseconds.
+ +
+
+ +

◆ getTimeSpentLastFrameWaitingForGpu()

+ +
+
+ + + + + + + +
float ne::RenderStatistics::getTimeSpentLastFrameWaitingForGpu () const
+
+

Returns time in milliseconds that was spent last frame waiting for GPU to catch up to the CPU.

+
Remarks
If returned value is constantly bigger than zero then this might mean that you are GPU bound, if constantly zero (0.0F) then this might mean that you are CPU bound.
+
Returns
Time in milliseconds.
+ +
+
+ +

◆ saveAndResetTemporaryFrameStatistics()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::RenderStatistics::saveAndResetTemporaryFrameStatistics ()
+
+private
+
+

Saves all temporary frame statistics as resulting values in non-temporary structs and resets all temporary statistics (variables in this struct).

+ +
+
+

Member Data Documentation

+ +

◆ counters

+ +
+
+ + + + + +
+ + + + +
Counters ne::RenderStatistics::counters
+
+private
+
+

Counters for various tasks.

+ +
+
+ +

◆ fpsInfo

+ +
+
+ + + + + +
+ + + + +
FramesPerSecondInfo ne::RenderStatistics::fpsInfo
+
+private
+
+

Info related to measuring frame count per second.

+ +
+
+ +

◆ fpsLimitInfo

+ +
+
+ + + + + +
+ + + + +
FpsLimitInfo ne::RenderStatistics::fpsLimitInfo
+
+private
+
+

Info related to FPS limiting.

+ +
+
+ +

◆ frameTemporaryStatistics

+ +
+
+ + + + + +
+ + + + +
FrameTemporaryStatistics ne::RenderStatistics::frameTemporaryStatistics
+
+private
+
+

Temporary counters for a single frame.

+ +
+
+ +

◆ taskTimeInfo

+ +
+
+ + + + + +
+ + + + +
TaskTimeInfo ne::RenderStatistics::taskTimeInfo
+
+private
+
+

Info related to measuring time for specific tasks.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/render/RenderStatistics.h
  • +
  • src/engine_lib/private/render/general/RenderStatistics.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1RenderStatistics.js b/classne_1_1RenderStatistics.js new file mode 100644 index 000000000..cc94d6b82 --- /dev/null +++ b/classne_1_1RenderStatistics.js @@ -0,0 +1,21 @@ +var classne_1_1RenderStatistics = +[ + [ "Counters", "structne_1_1RenderStatistics_1_1Counters.html", "structne_1_1RenderStatistics_1_1Counters" ], + [ "FpsLimitInfo", "structne_1_1RenderStatistics_1_1FpsLimitInfo.html", "structne_1_1RenderStatistics_1_1FpsLimitInfo" ], + [ "FramesPerSecondInfo", "structne_1_1RenderStatistics_1_1FramesPerSecondInfo.html", "structne_1_1RenderStatistics_1_1FramesPerSecondInfo" ], + [ "FrameTemporaryStatistics", "structne_1_1RenderStatistics_1_1FrameTemporaryStatistics.html", "structne_1_1RenderStatistics_1_1FrameTemporaryStatistics" ], + [ "TaskTimeInfo", "structne_1_1RenderStatistics_1_1TaskTimeInfo.html", "structne_1_1RenderStatistics_1_1TaskTimeInfo" ], + [ "getFramesPerSecond", "classne_1_1RenderStatistics.html#a464f0a2447943de7e26f7ca6237c2027", null ], + [ "getLastFrameCulledLightCount", "classne_1_1RenderStatistics.html#ad84bd1c12f19bc17c49d7b3252bfe61e", null ], + [ "getLastFrameCulledMeshCount", "classne_1_1RenderStatistics.html#a5c6a95c0e3eda956d3f115e7a0596b81", null ], + [ "getLastFrameDrawCallCount", "classne_1_1RenderStatistics.html#a5fc0bc97a6544fee69ab1c9acbf66a60", null ], + [ "getTimeSpentLastFrameOnFrustumCullingLights", "classne_1_1RenderStatistics.html#a2c34d2a6416d9a2e72fea1a2a8ec1cdf", null ], + [ "getTimeSpentLastFrameOnFrustumCullingMeshes", "classne_1_1RenderStatistics.html#a873d0213cdc04b97a3500258a9143a9f", null ], + [ "getTimeSpentLastFrameWaitingForGpu", "classne_1_1RenderStatistics.html#a9ac02303466d5b5dc53c75ae3c61d386", null ], + [ "saveAndResetTemporaryFrameStatistics", "classne_1_1RenderStatistics.html#afef3fee96c5750f3a71809d3c274be73", null ], + [ "counters", "classne_1_1RenderStatistics.html#a5750cd49de0ac32153bf8e0c8bdcd14b", null ], + [ "fpsInfo", "classne_1_1RenderStatistics.html#abf190063d09295449e266a6bc6b3086c", null ], + [ "fpsLimitInfo", "classne_1_1RenderStatistics.html#a4eda1eba75f6b009640272f81ad4ee35", null ], + [ "frameTemporaryStatistics", "classne_1_1RenderStatistics.html#a0d93ac165ed4c2c8a3969b6b90605b09", null ], + [ "taskTimeInfo", "classne_1_1RenderStatistics.html#ab96c53df7f6735771b3e6656767d9854", null ] +]; \ No newline at end of file diff --git a/classne_1_1Renderer-members.html b/classne_1_1Renderer-members.html new file mode 100644 index 000000000..577fc9fbc --- /dev/null +++ b/classne_1_1Renderer-members.html @@ -0,0 +1,211 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::Renderer Member List
+
+
+ +

This is the complete list of members for ne::Renderer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bIsWindowMinimizedne::Rendererprivate
calculateFrameStatistics()ne::Rendererprivate
CameraManager (defined in ne::Renderer)ne::Rendererfriend
clampSettingsToMaxSupported()ne::Rendererprotected
compileEngineShaders() constne::Rendererprotected
create(GameManager *pGameManager, std::optional< RendererType > preferredRenderer)ne::Rendererstatic
createRenderer(GameManager *pGameManager, std::optional< RendererType > preferredRenderer)ne::Rendererprivatestatic
createRenderer(RendererType type, GameManager *pGameManager, const std::vector< std::string > &vBlacklistedGpuNames)ne::Rendererprivatestatic
cullLightsOutsideCameraFrustum(CameraProperties *pActiveCameraProperties, size_t iCurrentFrameResourceIndex)ne::Rendererprotected
drawMeshesDepthPrepass(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vOpaquePipelines)=0ne::Rendererprotectedpure virtual
drawMeshesMainPass(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vOpaquePipelines, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vTransparentPipelines)=0ne::Rendererprotectedpure virtual
drawNextFrame()ne::Rendererprotected
drawShadowMappingPass(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, GraphicsPipelineRegistry *pGraphicsPipelines)=0ne::Rendererprotectedpure virtual
EnvironmentNode (defined in ne::Renderer)ne::Rendererfriend
executeComputeShadersOnGraphicsQueue(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, ComputeExecutionStage stage)=0ne::Rendererprotectedpure virtual
getCurrentlyUsedGpuName() const =0ne::Rendererpure virtual
getDepthTextureNoMultisampling()=0ne::Rendererpure virtual
getDirectionalLightNodeShadowMappingInfo(DirectionalLightNode *pNode, ShadowMapHandle *&pShadowMapHandle, unsigned int &iShadowPassLightInfoArrayIndex)ne::Rendererprotectedstatic
getDrawCallCounter()ne::Rendererinlineprotected
getFrameConstants()ne::Rendererinlineprotected
getFrameResourceManager() constne::Renderer
getGameManager() constne::Renderer
getGlobalShaderResourceBindingManager() constne::Renderer
getLightingShaderResourceManager() constne::Renderer
getMaxDepth()ne::Rendererinlinestatic
getMaxSupportedAntialiasingQuality() const =0ne::Rendererprotectedpure virtual
getMeshesInCameraFrustum(CameraProperties *pActiveCameraProperties, GraphicsPipelineRegistry *pGraphicsPipelines)ne::Rendererprotected
getMinDepth()ne::Rendererinlinestatic
getPipelineManager() constne::Renderer
getPointLightNodeShadowMapHandle(PointLightNode *pNode)ne::Rendererprotectedstatic
getPointLightShadowPassLightInfoArrayIndex(PointLightNode *pNode, size_t iCubemapFaceIndex)ne::Rendererprotectedstatic
getRecommendedSwapChainBufferCount()ne::Rendererinlineprotectedstatic
getRenderResourcesMutex()ne::Renderer
getRenderSettings()ne::Renderer
getRenderStatistics()ne::Renderer
getRenderTargetSize() const =0ne::Rendererpure virtual
getResourceManager() constne::Renderer
getShaderConfiguration()ne::Renderer
getShaderCpuWriteResourceManager() constne::Renderer
getShaderManager() constne::Renderer
getShaderTextureResourceManager() constne::Renderer
getSpotlightNodeShadowMappingInfo(SpotlightNode *pNode, ShadowMapHandle *&pShadowMapHandle, unsigned int &iShadowPassLightInfoArrayIndex)ne::Rendererprotectedstatic
getSupportedGpuNames() const =0ne::Rendererpure virtual
getSupportedRefreshRates() const =0ne::Rendererpure virtual
getSupportedRenderResolutions() const =0ne::Rendererpure virtual
getTotalVideoMemoryInMb() constne::Renderer
getType() const =0ne::Rendererpure virtual
getUsedApiVersion() const =0ne::Rendererpure virtual
getUsedVideoMemoryInMb() constne::Renderer
getWindow() constne::Renderer
initializeRenderer()ne::Rendererprotected
initializeRenderSettings()ne::Rendererprivate
initializeResourceManagers()ne::Rendererprotected
iRecommendedSwapChainBufferCountne::Rendererprivatestatic
isInitialized() const =0ne::Rendererprotectedpure virtual
maxDepthne::Rendererprivatestatic
meshesInFrustumLastFramene::Rendererprivate
minDepthne::Rendererprivatestatic
mtxFrameConstantsne::Rendererprivate
mtxRenderSettingsne::Rendererprivate
mtxRwRenderResourcesne::Rendererprivate
mtxShaderConfigurationne::Rendererprivate
mtxSpawnedEnvironmentNodene::Rendererprivate
onActiveCameraChanged()ne::Rendererprivate
onFramebufferSizeChanged(int iWidth, int iHeight)ne::Rendererprotected
onFramebufferSizeChangedDerived(int iWidth, int iHeight)ne::Rendererinlineprotectedvirtual
onRenderSettingsChanged(bool bShadowMapSizeChanged=false)ne::Rendererprotected
onRenderSettingsChangedDerived()=0ne::Rendererprotectedpure virtual
operator=(const Renderer &)=delete (defined in ne::Renderer)ne::Renderer
pFrameResourceManagerne::Rendererprivate
pGameManagerne::Rendererprivate
pGlobalShaderResourceBindingManagerne::Rendererprivate
pLightingShaderResourceManagerne::Rendererprivate
pPipelineManagerne::Rendererprivate
prepareForDrawingNextFrame(CameraProperties *pCameraProperties, FrameResource *pCurrentFrameResource)=0ne::Rendererprotectedpure virtual
prepareRenderTargetForNextFrame()ne::Rendererinlineprotectedvirtual
present(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex)=0ne::Rendererprotectedpure virtual
pResourceManagerne::Rendererprivate
pShaderCpuWriteResourceManagerne::Rendererprivate
pShaderManagerne::Rendererprivate
pShaderTextureResourceManagerne::Rendererprivate
recalculateLightTileFrustums()ne::Rendererprotected
Renderer()=delete (defined in ne::Renderer)ne::Renderer
Renderer(const Renderer &)=delete (defined in ne::Renderer)ne::Renderer
Renderer(GameManager *pGameManager)ne::Rendererprotected
RenderSettings (defined in ne::Renderer)ne::Rendererfriend
renderStatsne::Rendererprivate
resetFrameResourceManager()ne::Rendererprotected
resetGpuResourceManager()ne::Rendererprotected
resetLightingShaderResourceManager()ne::Rendererprotected
resetPipelineManager()ne::Rendererprotected
setupRenderStats()ne::Rendererprivate
ShaderConfiguration (defined in ne::Renderer)ne::Rendererfriend
updateFrameConstantsBuffer(FrameResource *pCurrentFrameResource, CameraProperties *pCameraProperties)ne::Rendererprotected
updateResourcesForNextFrame(unsigned int iRenderTargetWidth, unsigned int iRenderTargetHeight, CameraProperties *pCameraProperties)ne::Rendererprivate
updateShaderConfiguration()ne::Rendererprivate
updateTargetTimeToRenderFrame()ne::Rendererprivate
waitForGpuToFinishUsingFrameResource(FrameResource *pFrameResource)=0ne::Rendererprotectedpure virtual
waitForGpuToFinishWorkUpToThisPoint()=0ne::Rendererpure virtual
Window (defined in ne::Renderer)ne::Rendererfriend
~Renderer() (defined in ne::Renderer)ne::Renderervirtual
+
+ + + + diff --git a/classne_1_1Renderer.html b/classne_1_1Renderer.html new file mode 100644 index 000000000..6ddeb17f4 --- /dev/null +++ b/classne_1_1Renderer.html @@ -0,0 +1,3142 @@ + + + + + + + +Nameless Engine: ne::Renderer Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <Renderer.h>

+
+Inheritance diagram for ne::Renderer:
+
+
+ + +ne::DirectXRenderer +ne::VulkanRenderer + +
+ + + + + + +

+Classes

struct  LightsInFrustum
 
struct  MeshesInFrustum
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Renderer (const Renderer &)=delete
 
+Rendereroperator= (const Renderer &)=delete
 
virtual std::vector< std::string > getSupportedGpuNames () const =0
 
virtual std::variant< std::set< std::pair< unsigned int, unsigned int > >, ErrorgetSupportedRenderResolutions () const =0
 
virtual std::variant< std::set< std::pair< unsigned int, unsigned int > >, ErrorgetSupportedRefreshRates () const =0
 
virtual RendererType getType () const =0
 
virtual std::string getUsedApiVersion () const =0
 
std::pair< std::recursive_mutex *, RenderSettings * > getRenderSettings ()
 
RenderStatisticsgetRenderStatistics ()
 
virtual std::string getCurrentlyUsedGpuName () const =0
 
size_t getTotalVideoMemoryInMb () const
 
size_t getUsedVideoMemoryInMb () const
 
virtual void waitForGpuToFinishWorkUpToThisPoint ()=0
 
std::pair< std::recursive_mutex, std::unique_ptr< ShaderConfiguration > > * getShaderConfiguration ()
 
virtual std::pair< unsigned int, unsigned int > getRenderTargetSize () const =0
 
WindowgetWindow () const
 
GameManagergetGameManager () const
 
ShaderManagergetShaderManager () const
 
PipelineManagergetPipelineManager () const
 
GpuResourceManagergetResourceManager () const
 
FrameResourceManagergetFrameResourceManager () const
 
ShaderCpuWriteResourceBindingManagergetShaderCpuWriteResourceManager () const
 
ShaderTextureResourceBindingManagergetShaderTextureResourceManager () const
 
LightingShaderResourceManagergetLightingShaderResourceManager () const
 
GlobalShaderResourceBindingManagergetGlobalShaderResourceBindingManager () const
 
std::recursive_mutex * getRenderResourcesMutex ()
 
virtual GpuResourcegetDepthTextureNoMultisampling ()=0
 
+ + + + + + + +

+Static Public Member Functions

static constexpr float getMinDepth ()
 
static constexpr float getMaxDepth ()
 
static std::variant< std::unique_ptr< Renderer >, Errorcreate (GameManager *pGameManager, std::optional< RendererType > preferredRenderer)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

 Renderer (GameManager *pGameManager)
 
std::optional< ErrorcompileEngineShaders () const
 
void updateFrameConstantsBuffer (FrameResource *pCurrentFrameResource, CameraProperties *pCameraProperties)
 
void resetGpuResourceManager ()
 
void resetPipelineManager ()
 
void resetFrameResourceManager ()
 
void resetLightingShaderResourceManager ()
 
virtual std::variant< AntialiasingQuality, ErrorgetMaxSupportedAntialiasingQuality () const =0
 
void onFramebufferSizeChanged (int iWidth, int iHeight)
 
virtual void onFramebufferSizeChangedDerived (int iWidth, int iHeight)
 
void drawNextFrame ()
 
virtual void prepareRenderTargetForNextFrame ()
 
virtual void prepareForDrawingNextFrame (CameraProperties *pCameraProperties, FrameResource *pCurrentFrameResource)=0
 
virtual void drawShadowMappingPass (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, GraphicsPipelineRegistry *pGraphicsPipelines)=0
 
virtual void drawMeshesDepthPrepass (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vOpaquePipelines)=0
 
virtual void executeComputeShadersOnGraphicsQueue (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, ComputeExecutionStage stage)=0
 
virtual void drawMeshesMainPass (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vOpaquePipelines, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vTransparentPipelines)=0
 
virtual void present (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex)=0
 
std::optional< ErroronRenderSettingsChanged (bool bShadowMapSizeChanged=false)
 
virtual std::optional< ErroronRenderSettingsChangedDerived ()=0
 
virtual void waitForGpuToFinishUsingFrameResource (FrameResource *pFrameResource)=0
 
virtual bool isInitialized () const =0
 
std::optional< ErrorinitializeRenderer ()
 
std::optional< ErrorinitializeResourceManagers ()
 
std::optional< ErrorclampSettingsToMaxSupported ()
 
std::optional< ErrorrecalculateLightTileFrustums ()
 
MeshesInFrustumgetMeshesInCameraFrustum (CameraProperties *pActiveCameraProperties, GraphicsPipelineRegistry *pGraphicsPipelines)
 
void cullLightsOutsideCameraFrustum (CameraProperties *pActiveCameraProperties, size_t iCurrentFrameResourceIndex)
 
std::pair< std::mutex, FrameConstants > * getFrameConstants ()
 
std::atomic< size_t > * getDrawCallCounter ()
 
+ + + + + + + + + + + +

+Static Protected Member Functions

static consteval unsigned int getRecommendedSwapChainBufferCount ()
 
static void getDirectionalLightNodeShadowMappingInfo (DirectionalLightNode *pNode, ShadowMapHandle *&pShadowMapHandle, unsigned int &iShadowPassLightInfoArrayIndex)
 
static void getSpotlightNodeShadowMappingInfo (SpotlightNode *pNode, ShadowMapHandle *&pShadowMapHandle, unsigned int &iShadowPassLightInfoArrayIndex)
 
static unsigned int getPointLightShadowPassLightInfoArrayIndex (PointLightNode *pNode, size_t iCubemapFaceIndex)
 
static ShadowMapHandlegetPointLightNodeShadowMapHandle (PointLightNode *pNode)
 
+ + + + + + + + + + + + + + + +

+Private Member Functions

void calculateFrameStatistics ()
 
void updateResourcesForNextFrame (unsigned int iRenderTargetWidth, unsigned int iRenderTargetHeight, CameraProperties *pCameraProperties)
 
void onActiveCameraChanged ()
 
void updateTargetTimeToRenderFrame ()
 
void updateShaderConfiguration ()
 
void setupRenderStats ()
 
std::optional< ErrorinitializeRenderSettings ()
 
+ + + + + +

+Static Private Member Functions

static std::unique_ptr< RenderercreateRenderer (GameManager *pGameManager, std::optional< RendererType > preferredRenderer)
 
static std::variant< std::unique_ptr< Renderer >, std::pair< Error, std::string > > createRenderer (RendererType type, GameManager *pGameManager, const std::vector< std::string > &vBlacklistedGpuNames)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::recursive_mutex mtxRwRenderResources
 
std::unique_ptr< GpuResourceManagerpResourceManager
 
std::unique_ptr< ShaderManagerpShaderManager
 
std::unique_ptr< PipelineManagerpPipelineManager
 
std::unique_ptr< FrameResourceManagerpFrameResourceManager
 
std::unique_ptr< ShaderCpuWriteResourceBindingManagerpShaderCpuWriteResourceManager
 
std::unique_ptr< ShaderTextureResourceBindingManagerpShaderTextureResourceManager
 
std::unique_ptr< LightingShaderResourceManagerpLightingShaderResourceManager
 
std::unique_ptr< GlobalShaderResourceBindingManagerpGlobalShaderResourceBindingManager
 
std::pair< std::recursive_mutex, std::unique_ptr< ShaderConfiguration > > mtxShaderConfiguration
 
std::pair< std::recursive_mutex, std::unique_ptr< RenderSettings > > mtxRenderSettings
 
MeshesInFrustum meshesInFrustumLastFrame
 
bool bIsWindowMinimized = false
 
std::pair< std::mutex, EnvironmentNode * > mtxSpawnedEnvironmentNode
 
std::pair< std::mutex, FrameConstantsmtxFrameConstants
 
RenderStatistics renderStats
 
GameManagerpGameManager = nullptr
 
+ + + + + + + +

+Static Private Attributes

static constexpr unsigned int iRecommendedSwapChainBufferCount = 2
 
static constexpr float minDepth = 0.0F
 
static constexpr float maxDepth = 1.0F
 
+ + + + + + + + + + + +

+Friends

+class Window
 
+class ShaderConfiguration
 
+class RenderSettings
 
+class EnvironmentNode
 
+class CameraManager
 
+

Detailed Description

+

Defines a base class for renderers to implement.

+

Constructor & Destructor Documentation

+ +

◆ Renderer()

+ +
+
+ + + + + +
+ + + + + + + + +
ne::Renderer::Renderer (GameManagerpGameManager)
+
+protected
+
+

Constructor.

+
Parameters
+ + +
pGameManagerpGameManager object that owns this renderer.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ calculateFrameStatistics()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Renderer::calculateFrameStatistics ()
+
+private
+
+

Calculates some frame-related statistics.

+
Remarks
Must be called after a frame is finished drawing.
+ +
+
+ +

◆ clampSettingsToMaxSupported()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::Renderer::clampSettingsToMaxSupported ()
+
+protected
+
+

Called by derived class after they have created essential API objects (D3D device / Vulkan physical device) so that RenderSettings can query maximum supported settings and clamp the current values (if needed).

+
Warning
Must be called by derived classes after they have created essential API objects (D3D device / Vulkan physical device).
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ compileEngineShaders()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::Renderer::compileEngineShaders () const
+
+protected
+
+

Compiles/verifies all essential shaders that the engine will use.

+
Remarks
This is the last step in renderer initialization that is executed after the renderer was tested to support the hardware.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< Renderer >, Error > ne::Renderer::create (GameManagerpGameManager,
std::optional< RendererType > preferredRenderer 
)
+
+static
+
+

Creates a new renderer.

+
Parameters
+ + + +
pGameManagerGame manager object that will own this renderer.
preferredRendererPreferred renderer to be used.
+
+
+
Returns
Error if no renderer could be created, otherwise created renderer.
+ +
+
+ +

◆ createRenderer() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< Renderer > ne::Renderer::createRenderer (GameManagerpGameManager,
std::optional< RendererType > preferredRenderer 
)
+
+staticprivate
+
+

Creates a new renderer and nothing else.

+

This function is only used to pick a renderer including the specified preference without doing any renderer finalization.

+
Parameters
+ + + +
pGameManagerGame manager object that will own this renderer.
preferredRendererRenderer to prefer to create.
+
+
+
Returns
nullptr if no renderer could be created, otherwise created renderer.
+ +
+
+ +

◆ createRenderer() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< Renderer >, std::pair< Error, std::string > > ne::Renderer::createRenderer (RendererType type,
GameManagerpGameManager,
const std::vector< std::string > & vBlacklistedGpuNames 
)
+
+staticprivate
+
+

Attempts to create a renderer of the specified type.

+

This function is only used to pick a renderer including the specified preference without doing any renderer finalization.

+
Parameters
+ + + + +
typeType of the renderer to create.
pGameManagerGame manager object that will own this renderer.
vBlacklistedGpuNamesNames of GPUs that should not be used, generally this means that these GPUs were previously used to create the renderer but something went wrong.
+
+
+
Returns
Created renderer if successful, otherwise multiple values in a pair: error and a name of the GPU that the renderer tried to use (can be empty if failed before picking a GPU or if all supported GPUs are blacklisted).
+ +
+
+ +

◆ cullLightsOutsideCameraFrustum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::Renderer::cullLightsOutsideCameraFrustum (CameraPropertiespActiveCameraProperties,
size_t iCurrentFrameResourceIndex 
)
+
+protected
+
+

Culls all light nodes that are outside of active camera's frustum so that they will not be processed during the next submitted frame.

+
Parameters
+ + + +
pActiveCameraPropertiesProperties of the currently active camera.
iCurrentFrameResourceIndexIndex of the frame resource that will be used to submit the next frame.
+
+
+ +
+
+ +

◆ drawMeshesDepthPrepass()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void ne::Renderer::drawMeshesDepthPrepass (FrameResourcepCurrentFrameResource,
size_t iCurrentFrameResourceIndex,
const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > & vOpaquePipelines 
)
+
+protectedpure virtual
+
+

Submits commands to draw meshes and the specified depth only (vertex shader only) pipelines.

+
Parameters
+ + + + +
pCurrentFrameResourceFrame resource of the frame being submitted.
iCurrentFrameResourceIndexIndex of the current frame resource.
vOpaquePipelinesOpaque pipelines (depth pipeline will be retrieved from them).
+
+
+ +

Implemented in ne::DirectXRenderer, and ne::VulkanRenderer.

+ +
+
+ +

◆ drawMeshesMainPass()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void ne::Renderer::drawMeshesMainPass (FrameResourcepCurrentFrameResource,
size_t iCurrentFrameResourceIndex,
const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > & vOpaquePipelines,
const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > & vTransparentPipelines 
)
+
+protectedpure virtual
+
+

Submits commands to draw meshes for main (color) pass.

+
Parameters
+ + + + + +
pCurrentFrameResourceFrame resource of the frame being submitted.
iCurrentFrameResourceIndexIndex of the current frame resource.
vOpaquePipelinesOpaque pipelines to draw.
vTransparentPipelinesTransparent pipelines to draw.
+
+
+ +

Implemented in ne::DirectXRenderer, and ne::VulkanRenderer.

+ +
+
+ +

◆ drawNextFrame()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Renderer::drawNextFrame ()
+
+protected
+
+

Submits a new frame to the GPU.

+ +
+
+ +

◆ drawShadowMappingPass()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void ne::Renderer::drawShadowMappingPass (FrameResourcepCurrentFrameResource,
size_t iCurrentFrameResourceIndex,
GraphicsPipelineRegistrypGraphicsPipelines 
)
+
+protectedpure virtual
+
+

Submits commands to draw world from the perspective of all spawned light sources to capture shadow maps.

+
Warning
Expects to be called after cullLightsOutsideCameraFrustum to capture shadow maps only for lights in frustum.
+
Parameters
+ + + + +
pCurrentFrameResourceFrame resource of the frame being submitted.
iCurrentFrameResourceIndexIndex of the current frame resource.
pGraphicsPipelinesGraphics pipelines to draw.
+
+
+ +

Implemented in ne::DirectXRenderer, and ne::VulkanRenderer.

+ +
+
+ +

◆ executeComputeShadersOnGraphicsQueue()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void ne::Renderer::executeComputeShadersOnGraphicsQueue (FrameResourcepCurrentFrameResource,
size_t iCurrentFrameResourceIndex,
ComputeExecutionStage stage 
)
+
+protectedpure virtual
+
+

Executes compute shaders of the specified stage.

+
Warning
Expects that mutex for compute shaders is locked.
+
Parameters
+ + + + +
pCurrentFrameResourceFrame resource of the frame being submitted.
iCurrentFrameResourceIndexIndex of the current frame resource.
stageStage of compute shaders to execute.
+
+
+ +

Implemented in ne::DirectXRenderer, and ne::VulkanRenderer.

+ +
+
+ +

◆ getCurrentlyUsedGpuName()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string ne::Renderer::getCurrentlyUsedGpuName () const
+
+pure virtual
+
+

Returns the name of the GPU that is being currently used.

+
Returns
Name of the GPU.
+ +

Implemented in ne::DirectXRenderer, and ne::VulkanRenderer.

+ +
+
+ +

◆ getDepthTextureNoMultisampling()

+ +
+
+ + + + + +
+ + + + + + + +
virtual GpuResource * ne::Renderer::getDepthTextureNoMultisampling ()
+
+pure virtual
+
+

Returns pointer to the texture resource that represents renderer's depth texture without multisampling (resolved resource).

+
Warning
If MSAA is enabled this function will return one resource (pointer to a separate depth resolved resource), if it's disabled it will return the other resource (pointer to depth texture). So it may be a good idea to query this pointer every time you need it instead of saving it and reusing it because every frame this pointer may change (due to other reasons such as render target resize and etc).
+
+Please note that it's only safe to call this function inside of the drawNextFrame function (because returned pointer will not be changed during this function), if you need to use depth texture in your game code create an issue and I will add a GameInstance callback that will be called each frame inside of the drawNextFrame so you can use this function.
+
Returns
Pointer to depth texture.
+ +

Implemented in ne::DirectXRenderer, and ne::VulkanRenderer.

+ +
+
+ +

◆ getDirectionalLightNodeShadowMappingInfo()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::Renderer::getDirectionalLightNodeShadowMappingInfo (DirectionalLightNodepNode,
ShadowMapHandle *& pShadowMapHandle,
unsigned int & iShadowPassLightInfoArrayIndex 
)
+
+staticprotected
+
+

Returns information needed to capture/update a shadow map for a specific node.

+
Parameters
+ + + + +
pNodeDirectional light to update its shadow map.
pShadowMapHandleShadow map handle of the specified light.
iShadowPassLightInfoArrayIndexIndex into the array of shadow pass light infos.
+
+
+ +
+
+ +

◆ getDrawCallCounter()

+ +
+
+ + + + + +
+ + + + + + + +
std::atomic< size_t > * ne::Renderer::getDrawCallCounter ()
+
+inlineprotected
+
+

Returns counter for draw calls.

+
Remarks
Must be used by derived classes to increment draw call counter.
+
+Automatically resets in calculateFrameStatistics.
+
Returns
Draw call counter.
+ +
+
+ +

◆ getFrameConstants()

+ +
+
+ + + + + +
+ + + + + + + +
std::pair< std::mutex, FrameConstants > * ne::Renderer::getFrameConstants ()
+
+inlineprotected
+
+

Returns frame constants.

+
Returns
Frame constants.
+ +
+
+ +

◆ getFrameResourceManager()

+ +
+
+ + + + + + + +
FrameResourceManager * ne::Renderer::getFrameResourceManager () const
+
+

Returns frame resource manager.

+
Warning
Do not delete (free) returned pointer.
+
Returns
Frame resources manager.
+ +
+
+ +

◆ getGameManager()

+ +
+
+ + + + + + + +
GameManager * ne::Renderer::getGameManager () const
+
+

Game manager object that owns this renderer.

+
Warning
Do not delete (free) returned pointer.
+
Returns
Game manager object.
+ +
+
+ +

◆ getGlobalShaderResourceBindingManager()

+ +
+
+ + + + + + + +
GlobalShaderResourceBindingManager * ne::Renderer::getGlobalShaderResourceBindingManager () const
+
+

Returns manager responsible for creating global shader resource bindings.

+
Warning
Do not delete (free) returned pointer.
+
Returns
Manager.
+ +
+
+ +

◆ getLightingShaderResourceManager()

+ +
+
+ + + + + + + +
LightingShaderResourceManager * ne::Renderer::getLightingShaderResourceManager () const
+
+

Returns manager that controls GPU resources of lighting shader resources.

+
Warning
Do not delete (free) returned pointer.
+
Returns
Manager.
+ +
+
+ +

◆ getMaxDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr float ne::Renderer::getMaxDepth ()
+
+inlinestaticconstexpr
+
+

Returns the maximum value for depth.

+
Returns
Maximum depth value.
+ +
+
+ +

◆ getMaxSupportedAntialiasingQuality()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::variant< AntialiasingQuality, Error > ne::Renderer::getMaxSupportedAntialiasingQuality () const
+
+protectedpure virtual
+
+

Returns the maximum anti-aliasing quality that can be used on the picked GPU (getCurrentlyUsedGpuName).

+
Remarks
Note that the maximum supported AA quality can differ depending on the used GPU/renderer.
+
Returns
Error if something went wrong, otherwise DISABLED if AA is not supported or the maximum supported AA quality.
+ +

Implemented in ne::DirectXRenderer, and ne::VulkanRenderer.

+ +
+
+ +

◆ getMeshesInCameraFrustum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Renderer::MeshesInFrustum * ne::Renderer::getMeshesInCameraFrustum (CameraPropertiespActiveCameraProperties,
GraphicsPipelineRegistrypGraphicsPipelines 
)
+
+protected
+
+

Iterates over all meshes and returns only meshes inside of the camera's frustum (and their pipelines).

+
Warning
Do not delete (free) returned pointer.
+
Remarks
This function is expected to be called only once per frame.
+
Parameters
+ + + +
pActiveCameraPropertiesProperties of the currently active camera.
pGraphicsPipelinesGraphics pipelines.
+
+
+
Returns
Pipelines, material and meshes inside camera's frustum.
+ +
+
+ +

◆ getMinDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr float ne::Renderer::getMinDepth ()
+
+inlinestaticconstexpr
+
+

Returns the minimum value for depth.

+
Returns
Minimum depth value.
+ +
+
+ +

◆ getPipelineManager()

+ +
+
+ + + + + + + +
PipelineManager * ne::Renderer::getPipelineManager () const
+
+

Returns pipeline manager used to store graphics and compute pipelines.

+
Warning
Do not delete (free) returned pointer.
+
Returns
Pipeline manager.
+ +
+
+ +

◆ getPointLightNodeShadowMapHandle()

+ +
+
+ + + + + +
+ + + + + + + + +
ShadowMapHandle * ne::Renderer::getPointLightNodeShadowMapHandle (PointLightNodepNode)
+
+staticprotected
+
+

Returns shadow map handle of the specified point light node.

+
Parameters
+ + +
pNodePoint light node.
+
+
+
Returns
Shadow map handle.
+ +
+
+ +

◆ getPointLightShadowPassLightInfoArrayIndex()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
unsigned int ne::Renderer::getPointLightShadowPassLightInfoArrayIndex (PointLightNodepNode,
size_t iCubemapFaceIndex 
)
+
+staticprotected
+
+

Returns information needed to capture/update a shadow map for a specific node.

+
Parameters
+ + + +
pNodePoint light to update its shadow map.
iCubemapFaceIndexIndex of the cubemap to get matrix index.
+
+
+
Returns
Index into the array of shadow pass light infos.
+ +
+
+ +

◆ getRecommendedSwapChainBufferCount()

+ +
+
+ + + + + +
+ + + + + + + +
static consteval unsigned int ne::Renderer::getRecommendedSwapChainBufferCount ()
+
+inlinestaticprotected
+
+

Returns the number of swap chain buffers/images that we prefer to use.

+
Remarks
Frame resources expect that the number of swap chain images is equal to the number of frame resources because frame resources store synchronization objects such as fences and semaphores that expect one swap chain image per frame resource. If your renderer wants to use other number swap chain images you would might to implement a custom logic that will make sure everything is synchronized. For example, if you want to have less swap chain images than there is frame resources then you will need to store something like a pair of "swap chain image" - "frame resource" and each frame check if some swap chain image is used by some frame resource or not and wait if it's being used.
+
Returns
The recommended number of swap chain buffers/images that will work without any additional logic.
+ +
+
+ +

◆ getRenderResourcesMutex()

+ +
+
+ + + + + + + +
std::recursive_mutex * ne::Renderer::getRenderResourcesMutex ()
+
+

Returns mutex that is used when reading or writing to GPU resources that may be used by the GPU.

+
Remarks
This mutex is generally locked when the renderer is submitting a new frame.
+
+Usually after locking this mutex you would use waitForGpuToFinishWorkUpToThisPoint before actually starting to write/modify GPU resources.
+
+Do not delete (free) returned pointer.
+
Returns
Mutex.
+ +
+
+ +

◆ getRenderSettings()

+ +
+
+ + + + + + + +
std::pair< std::recursive_mutex *, RenderSettings * > ne::Renderer::getRenderSettings ()
+
+

Returns render settings that can be configured.

+
Remarks
Do not delete (free) returned pointer.
+
Returns
Non-owning pointer to render settings.
+ +
+
+ +

◆ getRenderStatistics()

+ +
+
+ + + + + + + +
RenderStatistics * ne::Renderer::getRenderStatistics ()
+
+

Returns various statistics about rendering (such as FPS).

+
Remarks
Do not delete (free) returned pointer.
+
Returns
Statistics.
+ +
+
+ +

◆ getRenderTargetSize()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::pair< unsigned int, unsigned int > ne::Renderer::getRenderTargetSize () const
+
+pure virtual
+
+

Returns size of the render target (size of the underlying render image).

+
Returns
Render image size in pixels (width and height).
+ +

Implemented in ne::DirectXRenderer, and ne::VulkanRenderer.

+ +
+
+ +

◆ getResourceManager()

+ +
+
+ + + + + + + +
GpuResourceManager * ne::Renderer::getResourceManager () const
+
+

Returns GPU resource manager.

+
Warning
Do not delete (free) returned pointer.
+
Returns
GPU resource manager.
+ +
+
+ +

◆ getShaderConfiguration()

+ +
+
+ + + + + + + +
std::pair< std::recursive_mutex, std::unique_ptr< ShaderConfiguration > > * ne::Renderer::getShaderConfiguration ()
+
+

Returns the current shader configuration (shader settings, represented by a bunch of predefined macros).

+

Must be used with mutex.

+
Returns
Do not delete (free) returned pointer. Shader configuration.
+ +
+
+ +

◆ getShaderCpuWriteResourceManager()

+ +
+
+ + + + + + + +
ShaderCpuWriteResourceBindingManager * ne::Renderer::getShaderCpuWriteResourceManager () const
+
+

Returns manager of shader resources with CPU write access.

+
Warning
Do not delete (free) returned pointer.
+
Returns
Manager.
+ +
+
+ +

◆ getShaderManager()

+ +
+
+ + + + + + + +
ShaderManager * ne::Renderer::getShaderManager () const
+
+

Returns shader manager used to compile shaders.

+
Warning
Do not delete (free) returned pointer.
+
Returns
Shader manager.
+ +
+
+ +

◆ getShaderTextureResourceManager()

+ +
+
+ + + + + + + +
ShaderTextureResourceBindingManager * ne::Renderer::getShaderTextureResourceManager () const
+
+

Returns manager of shader resources that reference textures.

+
Warning
Do not delete (free) returned pointer.
+
Returns
Manager.
+ +
+
+ +

◆ getSpotlightNodeShadowMappingInfo()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::Renderer::getSpotlightNodeShadowMappingInfo (SpotlightNodepNode,
ShadowMapHandle *& pShadowMapHandle,
unsigned int & iShadowPassLightInfoArrayIndex 
)
+
+staticprotected
+
+

Returns information needed to capture/update a shadow map for a specific node.

+
Parameters
+ + + + +
pNodeSpotlight to update its shadow map.
pShadowMapHandleShadow map handle of the specified light.
iShadowPassLightInfoArrayIndexIndex into the array of shadow pass light infos.
+
+
+ +
+
+ +

◆ getSupportedGpuNames()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::vector< std::string > ne::Renderer::getSupportedGpuNames () const
+
+pure virtual
+
+

Looks for video adapters (GPUs) that support this renderer.

+
Remarks
Note that returned array might differ depending on the used renderer.
+
Returns
Empty array if no GPU supports used renderer, otherwise array with GPU names that can be used for this renderer.
+ +

Implemented in ne::DirectXRenderer, and ne::VulkanRenderer.

+ +
+
+ +

◆ getSupportedRefreshRates()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::variant< std::set< std::pair< unsigned int, unsigned int > >, Error > ne::Renderer::getSupportedRefreshRates () const
+
+pure virtual
+
+

Returns a list of supported screen refresh rates (pairs of numerator and denominator).

+
Remarks
The list of supported refresh rates depends on the currently used GPU, so if changing used GPU this list might return different values.
+
Returns
Error if something went wrong, otherwise refresh rates.
+ +

Implemented in ne::DirectXRenderer, and ne::VulkanRenderer.

+ +
+
+ +

◆ getSupportedRenderResolutions()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::variant< std::set< std::pair< unsigned int, unsigned int > >, Error > ne::Renderer::getSupportedRenderResolutions () const
+
+pure virtual
+
+

Returns a list of supported render resolution (pairs of width and height).

+
Returns
Error if something went wrong, otherwise render resolutions.
+ +

Implemented in ne::DirectXRenderer, and ne::VulkanRenderer.

+ +
+
+ +

◆ getTotalVideoMemoryInMb()

+ +
+
+ + + + + + + +
size_t ne::Renderer::getTotalVideoMemoryInMb () const
+
+

Returns total video memory (VRAM) size in megabytes.

+
Remarks
If integrated GPU is used this function might return shared video memory (includes both dedicated VRAM and system RAM).
+
Returns
Total video memory size in megabytes.
+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual RendererType ne::Renderer::getType () const
+
+pure virtual
+
+

Returns renderer's type.

+
Returns
Renderer's type.
+ +

Implemented in ne::DirectXRenderer, and ne::VulkanRenderer.

+ +
+
+ +

◆ getUsedApiVersion()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string ne::Renderer::getUsedApiVersion () const
+
+pure virtual
+
+

Returns API version or a feature level that the renderer uses.

+

For example DirectX renderer will return used feature level and Vulkan renderer will return used Vulkan API version.

+
Returns
Used API version.
+ +

Implemented in ne::DirectXRenderer, and ne::VulkanRenderer.

+ +
+
+ +

◆ getUsedVideoMemoryInMb()

+ +
+
+ + + + + + + +
size_t ne::Renderer::getUsedVideoMemoryInMb () const
+
+

Returns the amount of video memory (VRAM) that is currently being used by the renderer.

+
Remarks
Does not return global (system-wide) used VRAM size, only VRAM used by the renderer (i.e. only VRAM used by this application).
+
Returns
Size of the video memory used by the renderer in megabytes.
+ +
+
+ +

◆ getWindow()

+ +
+
+ + + + + + + +
Window * ne::Renderer::getWindow () const
+
+

Returns the window that we render to.

+
Warning
Do not delete (free) returned pointer.
+
Returns
Window we render to.
+ +
+
+ +

◆ initializeRenderer()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::Renderer::initializeRenderer ()
+
+protected
+
+

Initializes some essential parts of the renderer (such as RenderSettings).

+
Warning
Must be called by derived classes in the beginning of their initialization.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ initializeRenderSettings()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::Renderer::initializeRenderSettings ()
+
+private
+
+

Initializes mtxRenderSettings.

+
Returns
Error if something went wrong.
+ +
+
+ +

◆ initializeResourceManagers()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::Renderer::initializeResourceManagers ()
+
+protected
+
+

Initializes various resource managers.

+
Warning
Must be called by derived classes after base initialization (for ex. in DirectX after device and video adapter were created).
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ isInitialized()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool ne::Renderer::isInitialized () const
+
+protectedpure virtual
+
+

Tells whether the renderer is initialized or not.

+

Initialized renderer means that the hardware supports it and it's safe to use renderer functionality such as onRenderSettingsChanged.

+
Returns
Whether the renderer is initialized or not.
+ +

Implemented in ne::DirectXRenderer, and ne::VulkanRenderer.

+ +
+
+ +

◆ onActiveCameraChanged()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Renderer::onActiveCameraChanged ()
+
+private
+
+

Called by camera manager after active camera was changed.

+ +
+
+ +

◆ onFramebufferSizeChanged()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::Renderer::onFramebufferSizeChanged (int iWidth,
int iHeight 
)
+
+protected
+
+

Called when the framebuffer size was changed.

+
Parameters
+ + + +
iWidthNew width of the framebuffer (in pixels).
iHeightNew height of the framebuffer (in pixels).
+
+
+ +
+
+ +

◆ onFramebufferSizeChangedDerived()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void ne::Renderer::onFramebufferSizeChangedDerived (int iWidth,
int iHeight 
)
+
+inlineprotectedvirtual
+
+

Called when the framebuffer size was changed.

+
Parameters
+ + + +
iWidthNew width of the framebuffer (in pixels).
iHeightNew height of the framebuffer (in pixels).
+
+
+ +

Reimplemented in ne::VulkanRenderer.

+ +
+
+ +

◆ onRenderSettingsChanged()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::Renderer::onRenderSettingsChanged (bool bShadowMapSizeChanged = false)
+
+protected
+
+

Called after some render setting is changed to recreate internal resources to match the current settings.

+
Parameters
+ + +
bShadowMapSizeChangedtrue if shadow map size was changed, false otherwise.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ onRenderSettingsChangedDerived()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::optional< Error > ne::Renderer::onRenderSettingsChangedDerived ()
+
+protectedpure virtual
+
+

Called from onRenderSettingsChanged after some render setting is changed to recreate internal resources to match the current settings.

+
Returns
Error if something went wrong.
+ +

Implemented in ne::DirectXRenderer, and ne::VulkanRenderer.

+ +
+
+ +

◆ prepareForDrawingNextFrame()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void ne::Renderer::prepareForDrawingNextFrame (CameraPropertiespCameraProperties,
FrameResourcepCurrentFrameResource 
)
+
+protectedpure virtual
+
+

Setups everything for render commands to be recorded (resets command buffers and etc.).

+
Warning
Expects that render resources mutex is locked.
+
Remarks
When this function is called this means that the current frame resource is no longer used by the GPU.
+
Parameters
+ + + +
pCameraPropertiesCamera properties to use.
pCurrentFrameResourceFrame resource of the frame being submitted.
+
+
+ +

Implemented in ne::DirectXRenderer, and ne::VulkanRenderer.

+ +
+
+ +

◆ prepareRenderTargetForNextFrame()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void ne::Renderer::prepareRenderTargetForNextFrame ()
+
+inlineprotectedvirtual
+
+

Called before prepareForDrawingNextFrame to do early frame preparations.

+
Remarks
It's expected that render target's size will not change after this function is finished and before a new frame is submitted.
+ +

Reimplemented in ne::VulkanRenderer.

+ +
+
+ +

◆ present()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void ne::Renderer::present (FrameResourcepCurrentFrameResource,
size_t iCurrentFrameResourceIndex 
)
+
+protectedpure virtual
+
+

Does the final frame rendering logic to present the frame on the screen.

+
Parameters
+ + + +
pCurrentFrameResourceFrame resource of the frame being submitted.
iCurrentFrameResourceIndexIndex of the current frame resource.
+
+
+ +

Implemented in ne::DirectXRenderer, and ne::VulkanRenderer.

+ +
+
+ +

◆ recalculateLightTileFrustums()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::Renderer::recalculateLightTileFrustums ()
+
+protected
+
+

Notifies pLightingShaderResourceManager to recalculate grid of frustums for light culling process.

+
Returns
Error if something went wrong.
+ +
+
+ +

◆ resetFrameResourceManager()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Renderer::resetFrameResourceManager ()
+
+protected
+
+

Sets nullptr to frame resource manager's unique ptr to force destroy it (if exists).

+
Warning
Avoid using this function. Only use it if you need a special destruction order in your renderer.
+ +
+
+ +

◆ resetGpuResourceManager()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Renderer::resetGpuResourceManager ()
+
+protected
+
+

Sets nullptr to resource manager's unique ptr to force destroy it (if exists).

+
Warning
Avoid using this function. Only use it if you need a special destruction order in your renderer.
+ +
+
+ +

◆ resetLightingShaderResourceManager()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Renderer::resetLightingShaderResourceManager ()
+
+protected
+
+

Sets nullptr to lighting shader resource manager's unique ptr to force destroy it (if exists).

+
Warning
Avoid using this function. Only use it if you need a special destruction order in your renderer.
+ +
+
+ +

◆ resetPipelineManager()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Renderer::resetPipelineManager ()
+
+protected
+
+

Sets nullptr to pipeline manager's unique ptr to force destroy it (if exists).

+
Warning
Avoid using this function. Only use it if you need a special destruction order in your renderer.
+ +
+
+ +

◆ setupRenderStats()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Renderer::setupRenderStats ()
+
+private
+
+

Initializes renderStats to be used.

+ +
+
+ +

◆ updateFrameConstantsBuffer()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::Renderer::updateFrameConstantsBuffer (FrameResourcepCurrentFrameResource,
CameraPropertiespCameraProperties 
)
+
+protected
+
+

Takes the current frame resource and updates frame data constant buffer that it stores (by copying new (up to date) constants to it).

+
Remarks
Expected to be called by derived renderers only when they know that frame resources are not being used by the GPU.
+
Parameters
+ + + +
pCurrentFrameResourceCurrent frame resource.
pCameraPropertiesCamera properties to use.
+
+
+ +
+
+ +

◆ updateResourcesForNextFrame()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::Renderer::updateResourcesForNextFrame (unsigned int iRenderTargetWidth,
unsigned int iRenderTargetHeight,
CameraPropertiespCameraProperties 
)
+
+private
+
+

Updates internal resources (frame constants, shader resources, camera's aspect ratio and etc.) for the next frame.

+
Remarks
Waits before frame resource for the new frame will not be used by the GPU so it's safe to work with frame resource after calling this function.
+
Parameters
+ + + + +
iRenderTargetWidthWidth (in pixels) of the image that will be used for the next frame.
iRenderTargetHeightHeight (in pixels) of the image that will be used for the next frame.
pCameraPropertiesCamera properties to use.
+
+
+ +
+
+ +

◆ updateShaderConfiguration()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Renderer::updateShaderConfiguration ()
+
+private
+
+

Updates the current shader configuration (settings) based on the current value from getShaderConfiguration.

+
Remarks
Flushes the command queue and recreates pipelines' internal resources so that they will use new shader configuration.
+ +
+
+ +

◆ updateTargetTimeToRenderFrame()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Renderer::updateTargetTimeToRenderFrame ()
+
+private
+
+

Looks for FPS limit setting in RenderSettings and updates renderer's target time to render a frame.

+ +
+
+ +

◆ waitForGpuToFinishUsingFrameResource()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void ne::Renderer::waitForGpuToFinishUsingFrameResource (FrameResourcepFrameResource)
+
+protectedpure virtual
+
+

Blocks the current thread until the GPU is finished using the specified frame resource.

+
Remarks
Generally the current frame resource will be passed and so the current frame resource mutex will be locked at the time of calling and until the function is not finished it will not be unlocked.
+
Parameters
+ + +
pFrameResourceFrame resource to wait for.
+
+
+ +

Implemented in ne::DirectXRenderer, and ne::VulkanRenderer.

+ +
+
+ +

◆ waitForGpuToFinishWorkUpToThisPoint()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void ne::Renderer::waitForGpuToFinishWorkUpToThisPoint ()
+
+pure virtual
+
+

Blocks the current thread until the GPU finishes executing all queued graphics commands up to this point.

+
Remarks
Typically used while getRenderResourcesMutex is locked.
+ +

Implemented in ne::DirectXRenderer, and ne::VulkanRenderer.

+ +
+
+

Member Data Documentation

+ +

◆ bIsWindowMinimized

+ +
+
+ + + + + +
+ + + + +
bool ne::Renderer::bIsWindowMinimized = false
+
+private
+
+

true if framebuffer size is zero, false otherwise.

+ +
+
+ +

◆ iRecommendedSwapChainBufferCount

+ +
+
+ + + + + +
+ + + + +
constexpr unsigned int ne::Renderer::iRecommendedSwapChainBufferCount = 2
+
+staticconstexprprivate
+
+

The number of buffers/images in swap chain that we prefer to use.

+ +
+
+ +

◆ maxDepth

+ +
+
+ + + + + +
+ + + + +
constexpr float ne::Renderer::maxDepth = 1.0F
+
+staticconstexprprivate
+
+

Maximum value for depth.

+ +
+
+ +

◆ meshesInFrustumLastFrame

+ +
+
+ + + + + +
+ + + + +
MeshesInFrustum ne::Renderer::meshesInFrustumLastFrame
+
+private
+
+

Meshes that were in camera's frustum last frame.

+ +
+
+ +

◆ minDepth

+ +
+
+ + + + + +
+ + + + +
constexpr float ne::Renderer::minDepth = 0.0F
+
+staticconstexprprivate
+
+

Minimum value for depth.

+ +
+
+ +

◆ mtxFrameConstants

+ +
+
+ + + + + +
+ + + + +
std::pair<std::mutex, FrameConstants> ne::Renderer::mtxFrameConstants
+
+private
+
+

Up to date frame-global constant data.

+ +
+
+ +

◆ mtxRenderSettings

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, std::unique_ptr<RenderSettings> > ne::Renderer::mtxRenderSettings
+
+private
+
+

Render setting object that configures the renderer. Must be used with mutex.

+ +
+
+ +

◆ mtxRwRenderResources

+ +
+
+ + + + + +
+ + + + +
std::recursive_mutex ne::Renderer::mtxRwRenderResources
+
+private
+
+

Lock when reading or writing to render resources. Usually used with waitForGpuToFinishWorkUpToThisPoint.

+ +
+
+ +

◆ mtxShaderConfiguration

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, std::unique_ptr<ShaderConfiguration> > ne::Renderer::mtxShaderConfiguration
+
+private
+
+

A bunch of shader macros that match renderer's configuration (render settings). Must be used with mutex.

+ +
+
+ +

◆ mtxSpawnedEnvironmentNode

+ +
+
+ + + + + +
+ + + + +
std::pair<std::mutex, EnvironmentNode*> ne::Renderer::mtxSpawnedEnvironmentNode
+
+private
+
+

Spawned environment node which parameters are used in the rendering.

+ +
+
+ +

◆ pFrameResourceManager

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<FrameResourceManager> ne::Renderer::pFrameResourceManager
+
+private
+
+

Stores frame-specific GPU resources.

+ +
+
+ +

◆ pGameManager

+ +
+
+ + + + + +
+ + + + +
GameManager* ne::Renderer::pGameManager = nullptr
+
+private
+
+

Do not delete (free) this pointer. Game manager object that owns this renderer.

+ +
+
+ +

◆ pGlobalShaderResourceBindingManager

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<GlobalShaderResourceBindingManager> ne::Renderer::pGlobalShaderResourceBindingManager
+
+private
+
+

Manages all global bindings.

+ +
+
+ +

◆ pLightingShaderResourceManager

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<LightingShaderResourceManager> ne::Renderer::pLightingShaderResourceManager
+
+private
+
+

Stores data of all spawned light sources that is used in shaders.

+ +
+
+ +

◆ pPipelineManager

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<PipelineManager> ne::Renderer::pPipelineManager
+
+private
+
+

Used to store various graphics and compute pipelines.

+ +
+
+ +

◆ pResourceManager

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<GpuResourceManager> ne::Renderer::pResourceManager
+
+private
+
+

Used to create various GPU resources.

+ +
+
+ +

◆ pShaderCpuWriteResourceManager

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<ShaderCpuWriteResourceBindingManager> ne::Renderer::pShaderCpuWriteResourceManager
+
+private
+
+

Stores all shader resources with CPU write access.

+ +
+
+ +

◆ pShaderManager

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<ShaderManager> ne::Renderer::pShaderManager
+
+private
+
+

Used to compile shaders.

+ +
+
+ +

◆ pShaderTextureResourceManager

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<ShaderTextureResourceBindingManager> ne::Renderer::pShaderTextureResourceManager
+
+private
+
+

Stores all shader resources that reference textures.

+ +
+
+ +

◆ renderStats

+ +
+
+ + + + + +
+ + + + +
RenderStatistics ne::Renderer::renderStats
+
+private
+
+

Various statistics about rendering.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/render/Renderer.h
  • +
  • src/engine_lib/private/render/general/Renderer.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1Renderer.js b/classne_1_1Renderer.js new file mode 100644 index 000000000..cb28bbdb7 --- /dev/null +++ b/classne_1_1Renderer.js @@ -0,0 +1,97 @@ +var classne_1_1Renderer = +[ + [ "LightsInFrustum", "structne_1_1Renderer_1_1LightsInFrustum.html", "structne_1_1Renderer_1_1LightsInFrustum" ], + [ "MeshesInFrustum", "structne_1_1Renderer_1_1MeshesInFrustum.html", "structne_1_1Renderer_1_1MeshesInFrustum" ], + [ "Renderer", "classne_1_1Renderer.html#a5b5369cf5d1a7dffbde1ff17d54ce7ff", null ], + [ "calculateFrameStatistics", "classne_1_1Renderer.html#a70c498eade90efc06c4ef64100347cd0", null ], + [ "clampSettingsToMaxSupported", "classne_1_1Renderer.html#ad05657ef406f0ed434e044730120bc50", null ], + [ "compileEngineShaders", "classne_1_1Renderer.html#a02ba4b9ee40da30d3c5724fcdade5117", null ], + [ "create", "classne_1_1Renderer.html#a329ab805808f20b4bf0b2b60f3f715c6", null ], + [ "createRenderer", "classne_1_1Renderer.html#a687d528df003c3e5b85a35b8d7a2d581", null ], + [ "createRenderer", "classne_1_1Renderer.html#a80bb51d2db6be521c11d1066516f6f06", null ], + [ "cullLightsOutsideCameraFrustum", "classne_1_1Renderer.html#a4c65b8eeb863809e7287596f9cfc926c", null ], + [ "drawMeshesDepthPrepass", "classne_1_1Renderer.html#ade28a2acfbf0d842310ed09e43347a6a", null ], + [ "drawMeshesMainPass", "classne_1_1Renderer.html#ae7c93c8411ed36b3a1a1d548b3119ed4", null ], + [ "drawNextFrame", "classne_1_1Renderer.html#a0c5cd211faa4ab6680cc7e8c20e99d04", null ], + [ "drawShadowMappingPass", "classne_1_1Renderer.html#a406150bfe82ba580d6ed7b2ea780c4e6", null ], + [ "executeComputeShadersOnGraphicsQueue", "classne_1_1Renderer.html#a159404d107fc2b9c62609f7a4b29158e", null ], + [ "getCurrentlyUsedGpuName", "classne_1_1Renderer.html#ab89d3ddad084a96bb1f348c96e0b7263", null ], + [ "getDepthTextureNoMultisampling", "classne_1_1Renderer.html#ad507d970274a84b8fbb2a0a97b30305e", null ], + [ "getDirectionalLightNodeShadowMappingInfo", "classne_1_1Renderer.html#a20c1e754bb8669365ff64f726e22f253", null ], + [ "getDrawCallCounter", "classne_1_1Renderer.html#a4cb0d87cb12c66c71c5922f942d5da71", null ], + [ "getFrameConstants", "classne_1_1Renderer.html#a6576b5f7eac84e7846e5b5fb6c0d1a12", null ], + [ "getFrameResourceManager", "classne_1_1Renderer.html#a50ba13de625c3e7137ffccafe418e54d", null ], + [ "getGameManager", "classne_1_1Renderer.html#aa3a8871ad19fc9e5e91a618e0c47aaae", null ], + [ "getGlobalShaderResourceBindingManager", "classne_1_1Renderer.html#a94ca55b01e064a85b554058e395e427a", null ], + [ "getLightingShaderResourceManager", "classne_1_1Renderer.html#a065b2ac320b63d2651c706f1e98fab12", null ], + [ "getMaxDepth", "classne_1_1Renderer.html#aa26cb2e1d65dc77d041466bd3155032a", null ], + [ "getMaxSupportedAntialiasingQuality", "classne_1_1Renderer.html#a2015e4bdaef2b2786909132757b4401c", null ], + [ "getMeshesInCameraFrustum", "classne_1_1Renderer.html#aeb527a8099001d8c3f60f0f546ea8fc9", null ], + [ "getMinDepth", "classne_1_1Renderer.html#afb7a609075deb5b121a3218a92d4a1c6", null ], + [ "getPipelineManager", "classne_1_1Renderer.html#a2c1988bfc14749904750ba6dde70ffb2", null ], + [ "getPointLightNodeShadowMapHandle", "classne_1_1Renderer.html#a89aacf3db90f19ab0153ba61d5d375d9", null ], + [ "getPointLightShadowPassLightInfoArrayIndex", "classne_1_1Renderer.html#ae3fe9634ba28331a5c7808e41aee8280", null ], + [ "getRecommendedSwapChainBufferCount", "classne_1_1Renderer.html#a71c2681a6e9f19c6bc27c40edd6957d8", null ], + [ "getRenderResourcesMutex", "classne_1_1Renderer.html#a695dc78d2a55c2aa0d1c6d77265e286f", null ], + [ "getRenderSettings", "classne_1_1Renderer.html#a12fd460314e60a79b027fba12d55a68d", null ], + [ "getRenderStatistics", "classne_1_1Renderer.html#ab65404722ecba28c300763c04ab06712", null ], + [ "getRenderTargetSize", "classne_1_1Renderer.html#a29a086ceb56a27475014417e862175fe", null ], + [ "getResourceManager", "classne_1_1Renderer.html#a691ec87d1ca95da47e88b27cd0cfc4d0", null ], + [ "getShaderConfiguration", "classne_1_1Renderer.html#a4652ff17d96dd1cf1cc5e8c41dd8904b", null ], + [ "getShaderCpuWriteResourceManager", "classne_1_1Renderer.html#af291d346e7a157b4a519ebda87245dbd", null ], + [ "getShaderManager", "classne_1_1Renderer.html#a9cde18dbde3564c907d839703c8f4193", null ], + [ "getShaderTextureResourceManager", "classne_1_1Renderer.html#a06a9c1d031f1b6ba3f2f86b81eadf561", null ], + [ "getSpotlightNodeShadowMappingInfo", "classne_1_1Renderer.html#ad08311905dc6df3bf29f08b23b2e30cb", null ], + [ "getSupportedGpuNames", "classne_1_1Renderer.html#aa87df2fda14247192847d5056e0ecfe3", null ], + [ "getSupportedRefreshRates", "classne_1_1Renderer.html#aa2d73c28396846df0151e37f9a6a4830", null ], + [ "getSupportedRenderResolutions", "classne_1_1Renderer.html#ae620044334fb679c877d70e42c72b312", null ], + [ "getTotalVideoMemoryInMb", "classne_1_1Renderer.html#a6736b43c6b2fe8a64ec02547e83b7ab5", null ], + [ "getType", "classne_1_1Renderer.html#a19bc0b11a97b3e92b8510f348d0fa28f", null ], + [ "getUsedApiVersion", "classne_1_1Renderer.html#a03e357989d5b7239ded555a7298e35d1", null ], + [ "getUsedVideoMemoryInMb", "classne_1_1Renderer.html#a155f3058794bf3ded4a8d4a1bc77dd71", null ], + [ "getWindow", "classne_1_1Renderer.html#a4b2060db01a347def8c4315f6aada1f8", null ], + [ "initializeRenderer", "classne_1_1Renderer.html#a53240d9f15a95b2f5af5c219e7f65051", null ], + [ "initializeRenderSettings", "classne_1_1Renderer.html#a7351705601b29bf309fda4bc9952b179", null ], + [ "initializeResourceManagers", "classne_1_1Renderer.html#a0108568bca8e4457756c6c51f51005e3", null ], + [ "isInitialized", "classne_1_1Renderer.html#a71f920f8d11ab50acac502c896161522", null ], + [ "onActiveCameraChanged", "classne_1_1Renderer.html#a51e0749c507f29e83f11ad2e5b5cdc18", null ], + [ "onFramebufferSizeChanged", "classne_1_1Renderer.html#ad5e9d40f1b603f016147f8788a6e0a6f", null ], + [ "onFramebufferSizeChangedDerived", "classne_1_1Renderer.html#a57afd8ef14e2dfbae2391aaed4c57bb5", null ], + [ "onRenderSettingsChanged", "classne_1_1Renderer.html#ab8810b0fa64b1de6124922d4c1ee49b2", null ], + [ "onRenderSettingsChangedDerived", "classne_1_1Renderer.html#a3cc725e2a6ccfaac9ea4ef4fa2201a66", null ], + [ "prepareForDrawingNextFrame", "classne_1_1Renderer.html#ad9e4ce85fd3babdb2f5ca69a1d76b54d", null ], + [ "prepareRenderTargetForNextFrame", "classne_1_1Renderer.html#a1104f4c7c926b7ac3d2cc13c0e8fa799", null ], + [ "present", "classne_1_1Renderer.html#a3408af535d34d9cf26ccac19975d6403", null ], + [ "recalculateLightTileFrustums", "classne_1_1Renderer.html#a7e71fc6ecff7925b5cda79dbc8dbcc5a", null ], + [ "resetFrameResourceManager", "classne_1_1Renderer.html#a38b97ea2de9b0293f89fb4280618a333", null ], + [ "resetGpuResourceManager", "classne_1_1Renderer.html#aa539114f74384e2bbdd14d5b9049e8a3", null ], + [ "resetLightingShaderResourceManager", "classne_1_1Renderer.html#a08726652b7affeb260c8719aaf469ced", null ], + [ "resetPipelineManager", "classne_1_1Renderer.html#ae59727774d2199a7ea0354224ecc819d", null ], + [ "setupRenderStats", "classne_1_1Renderer.html#a404ad787d39833a8f7d4f66815c55793", null ], + [ "updateFrameConstantsBuffer", "classne_1_1Renderer.html#a46fe2980b8802431726d3da64ea6aeeb", null ], + [ "updateResourcesForNextFrame", "classne_1_1Renderer.html#a4fb5b5b7cdc654945fd7b7f90352fe65", null ], + [ "updateShaderConfiguration", "classne_1_1Renderer.html#af25df43af497e19e2c5cdb5a64c2c77e", null ], + [ "updateTargetTimeToRenderFrame", "classne_1_1Renderer.html#a74b201ad1fae3dafa959c9002a4aec86", null ], + [ "waitForGpuToFinishUsingFrameResource", "classne_1_1Renderer.html#a64332a4c9b10010ec74584dddc91c68d", null ], + [ "waitForGpuToFinishWorkUpToThisPoint", "classne_1_1Renderer.html#a82398bb159588b48ad20f09b02db47a9", null ], + [ "bIsWindowMinimized", "classne_1_1Renderer.html#af2015e9a6275191e9d3d069de64e4224", null ], + [ "iRecommendedSwapChainBufferCount", "classne_1_1Renderer.html#adf6d753503c44c85cc48f2ddcd891f84", null ], + [ "maxDepth", "classne_1_1Renderer.html#ad9880997d2cd513e4326240ee67990ac", null ], + [ "meshesInFrustumLastFrame", "classne_1_1Renderer.html#a4cb42c81756f39a1027566ee0bbb538e", null ], + [ "minDepth", "classne_1_1Renderer.html#aa8f0fb305d230c3a12fa0e1dedb79212", null ], + [ "mtxFrameConstants", "classne_1_1Renderer.html#a1669af9fc5bb3e90aacba3093c9e6b6f", null ], + [ "mtxRenderSettings", "classne_1_1Renderer.html#aa18f4e0a48198ef495aa7f4d9863ebc8", null ], + [ "mtxRwRenderResources", "classne_1_1Renderer.html#a03ce849e9f2411be3f015c626d98f38f", null ], + [ "mtxShaderConfiguration", "classne_1_1Renderer.html#a00aa8bed57037f29671d584067f1ab9a", null ], + [ "mtxSpawnedEnvironmentNode", "classne_1_1Renderer.html#afbd472501b5c6b883d6b9b0d1d434f28", null ], + [ "pFrameResourceManager", "classne_1_1Renderer.html#a7d982ddeb425a7774798e6419be0042d", null ], + [ "pGameManager", "classne_1_1Renderer.html#a25e1de71d1ebe7b95281c7de8833986a", null ], + [ "pGlobalShaderResourceBindingManager", "classne_1_1Renderer.html#a848c1ed93db9948edefbfbf66078642c", null ], + [ "pLightingShaderResourceManager", "classne_1_1Renderer.html#ae9f076f02ae7967c19b3c3979c798684", null ], + [ "pPipelineManager", "classne_1_1Renderer.html#ad94f23fedb90cc91d2d4d61285aefa4a", null ], + [ "pResourceManager", "classne_1_1Renderer.html#a09e411bf2fcfc84b427770d5e3878b08", null ], + [ "pShaderCpuWriteResourceManager", "classne_1_1Renderer.html#a8c331d8c13193e4074f539c32f2632e5", null ], + [ "pShaderManager", "classne_1_1Renderer.html#a1264001609f0c58c8a425fe7bc1f5077", null ], + [ "pShaderTextureResourceManager", "classne_1_1Renderer.html#a32e14cd78fa0ee897c3ab23f211526af", null ], + [ "renderStats", "classne_1_1Renderer.html#ace76887f5a4165f92d3984b12c624e97", null ] +]; \ No newline at end of file diff --git a/classne_1_1Renderer.png b/classne_1_1Renderer.png new file mode 100644 index 0000000000000000000000000000000000000000..ca00c5ca140bec3c09d9b2594b3edaca59201b5e GIT binary patch literal 788 zcmeAS@N?(olHy`uVBq!ia0y~yU<9!PIGBOtwer*VfRuEAPl)UP|Nnu^7jM3n_8(eq zVW3$cG5ySo0|yQO#e*kZUICQjED7=pW&rZRz?^CJ6$S>T`JOJ0Ar*{o=f2H*tsvmi z?zrjM-}yh(K3>;5mic%^=^g8EJ3(;`o#Ur}=`-x{*IYV>lc9#gb<(-RT5Fsp8HFW^ zPMWfFQ_ZdWf| z$DI9qnXYH;y2+v+uj~wavN0{KTjlG{SzQsD*Qft|krU$LzYr*`H$!xGlwoP!W~E=h zcFl_W)nu|YX|3}A!>o~ZVjFYT%`GnUiJt&8CwAQ;r%81Zt2c0Yo{DG<^$0o!aoES1 zT3(t@T^Jtp8!$9%>`F=6z`dG5VE$~*-5a* z(ZdEj@=OeKPCnlg05p@~1kg-uDkE4KQq~;OVo>;8rn2?gFFxnBTlXDgcMbCVWV48C zk_|sl@1!$8y%SQNt?VlL|2<>EleXyh76tidf<28czORiux+!?K<;f2+eUG(8&rjdc z@A50SKJw^Ai>9t3VXMr$dG>N;H9t=;`M5mP@LWVV_uR_P%&+sh;&j&jczV)Wu1|Rt zNA~gFLw$uMlJlm`s(-eywD-m8%=fEa9Jv%K_+Q@1PRRXK*Op9u?M=;dHh-4Ad+ODE zl|9{YVL8b!S9Ub&rQ1umySwUGM~gnr2oc=0Xy!)Y_>B6cO4ASQxx8x8_Q$Uazidug zA7=9MfRoy+mdw1M&tm&#ifYaZbDh2NENi7^-}{&ePMZ?d@9&bldF|R^ah2MgCxzz8 zis~QT7`id!-js!}6O%LNpDN-?{QG;S#?n)Fx6EJdv9TpZ#-73O?R6GQ8TSCkN$D4Y z9VhMY4~<~;Oaq3chf%U{POMLR-@(6^C!7VCei=Mn{an^L HB{Ts5a}sOX literal 0 HcmV?d00001 diff --git a/classne_1_1RootSignatureGenerator-members.html b/classne_1_1RootSignatureGenerator-members.html new file mode 100644 index 000000000..80d9b08cb --- /dev/null +++ b/classne_1_1RootSignatureGenerator-members.html @@ -0,0 +1,125 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::RootSignatureGenerator Member List
+
+
+ +

This is the complete list of members for ne::RootSignatureGenerator, including all inherited members.

+ + + + + + + + + + + + + + + + +
addCbufferRootParameter(std::vector< RootParameter > &vRootParameters, std::unordered_map< std::string, std::pair< UINT, RootParameter > > &rootParameterIndices, const D3D12_SHADER_INPUT_BIND_DESC &resourceDescription)ne::RootSignatureGeneratorprivatestatic
addSpecialResourceRootParametersIfUsed(std::unordered_map< std::string, std::pair< UINT, RootSignatureGenerator::RootParameter > > &shaderRootParameterIndices, std::vector< CD3DX12_ROOT_PARAMETER > &vRootParameters, std::vector< CD3DX12_DESCRIPTOR_RANGE > &vTableRanges, std::set< std::string > &addedRootParameterNames, std::unordered_map< std::string, UINT > &rootParameterIndices, std::array< UINT, static_cast< unsigned int >(SpecialRootParameterSlot::SIZE)> &vSpecialRootParameterIndices)ne::RootSignatureGeneratorprivatestatic
addStructuredBufferRootParameter(std::vector< RootParameter > &vRootParameters, std::unordered_map< std::string, std::pair< UINT, RootParameter > > &rootParameterIndices, const D3D12_SHADER_INPUT_BIND_DESC &resourceDescription, bool bIsReadWrite)ne::RootSignatureGeneratorprivatestatic
addTexture2DRootParameter(std::vector< RootParameter > &vRootParameters, std::unordered_map< std::string, std::pair< UINT, RootParameter > > &rootParameterIndices, const D3D12_SHADER_INPUT_BIND_DESC &resourceDescription, bool bIsReadWrite)ne::RootSignatureGeneratorprivatestatic
addUniquePairResourceNameRootParameterIndex(std::unordered_map< std::string, std::pair< UINT, RootParameter > > &mapToAddTo, const std::string &sResourceName, UINT iRootParameterIndex, const RootParameter &parameter)ne::RootSignatureGeneratorprivatestatic
collectInfoFromReflection(ID3D12Device *pDevice, const ComPtr< ID3D12ShaderReflection > &pShaderReflection)ne::RootSignatureGeneratorstatic
findStaticSamplerForSamplerResource(const D3D12_SHADER_INPUT_BIND_DESC &samplerResourceDescription)ne::RootSignatureGeneratorprivatestatic
generateCompute(DirectXRenderer *pRenderer, HlslShader *pComputeShader)ne::RootSignatureGeneratorstatic
generateGraphics(DirectXRenderer *pRenderer, HlslShader *pVertexShader, HlslShader *pPixelShader)ne::RootSignatureGeneratorstatic
operator=(const RootSignatureGenerator &)=delete (defined in ne::RootSignatureGenerator)ne::RootSignatureGenerator
processRootConstantsIfFound(const ComPtr< ID3D12ShaderReflection > &pShaderReflection, const D3D12_SHADER_INPUT_BIND_DESC &resourceDescription, std::unordered_map< std::string, size_t > &rootConstantOffsets, std::vector< RootParameter > &vRootParameters, std::unordered_map< std::string, std::pair< UINT, RootParameter > > &rootParameterIndices)ne::RootSignatureGeneratorprivatestatic
RootSignatureGenerator()=delete (defined in ne::RootSignatureGenerator)ne::RootSignatureGenerator
RootSignatureGenerator(const RootSignatureGenerator &)=delete (defined in ne::RootSignatureGenerator)ne::RootSignatureGenerator
sRootConstantsTypeNamene::RootSignatureGeneratorinlineprivatestatic
sRootConstantsVariableNamene::RootSignatureGeneratorinlineprivatestatic
+
+ + + + diff --git a/classne_1_1RootSignatureGenerator.html b/classne_1_1RootSignatureGenerator.html new file mode 100644 index 000000000..fc7b604f5 --- /dev/null +++ b/classne_1_1RootSignatureGenerator.html @@ -0,0 +1,769 @@ + + + + + + + +Nameless Engine: ne::RootSignatureGenerator Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <RootSignatureGenerator.h>

+ + + + + + + + +

+Classes

struct  CollectedInfo
 
struct  Generated
 
class  RootParameter
 
+ + + + + +

+Public Member Functions

RootSignatureGenerator (const RootSignatureGenerator &)=delete
 
+RootSignatureGeneratoroperator= (const RootSignatureGenerator &)=delete
 
+ + + + + + + +

+Static Public Member Functions

static std::variant< CollectedInfo, ErrorcollectInfoFromReflection (ID3D12Device *pDevice, const ComPtr< ID3D12ShaderReflection > &pShaderReflection)
 
static std::variant< Generated, ErrorgenerateGraphics (DirectXRenderer *pRenderer, HlslShader *pVertexShader, HlslShader *pPixelShader)
 
static std::variant< Generated, ErrorgenerateCompute (DirectXRenderer *pRenderer, HlslShader *pComputeShader)
 
+ + + + + + + + + + + + + + + +

+Static Private Member Functions

static std::variant< SamplerType, ErrorfindStaticSamplerForSamplerResource (const D3D12_SHADER_INPUT_BIND_DESC &samplerResourceDescription)
 
static void addSpecialResourceRootParametersIfUsed (std::unordered_map< std::string, std::pair< UINT, RootSignatureGenerator::RootParameter > > &shaderRootParameterIndices, std::vector< CD3DX12_ROOT_PARAMETER > &vRootParameters, std::vector< CD3DX12_DESCRIPTOR_RANGE > &vTableRanges, std::set< std::string > &addedRootParameterNames, std::unordered_map< std::string, UINT > &rootParameterIndices, std::array< UINT, static_cast< unsigned int >(SpecialRootParameterSlot::SIZE)> &vSpecialRootParameterIndices)
 
static std::optional< ErroraddUniquePairResourceNameRootParameterIndex (std::unordered_map< std::string, std::pair< UINT, RootParameter > > &mapToAddTo, const std::string &sResourceName, UINT iRootParameterIndex, const RootParameter &parameter)
 
static std::optional< ErroraddCbufferRootParameter (std::vector< RootParameter > &vRootParameters, std::unordered_map< std::string, std::pair< UINT, RootParameter > > &rootParameterIndices, const D3D12_SHADER_INPUT_BIND_DESC &resourceDescription)
 
static std::optional< ErroraddTexture2DRootParameter (std::vector< RootParameter > &vRootParameters, std::unordered_map< std::string, std::pair< UINT, RootParameter > > &rootParameterIndices, const D3D12_SHADER_INPUT_BIND_DESC &resourceDescription, bool bIsReadWrite)
 
static std::optional< ErroraddStructuredBufferRootParameter (std::vector< RootParameter > &vRootParameters, std::unordered_map< std::string, std::pair< UINT, RootParameter > > &rootParameterIndices, const D3D12_SHADER_INPUT_BIND_DESC &resourceDescription, bool bIsReadWrite)
 
static std::variant< bool, ErrorprocessRootConstantsIfFound (const ComPtr< ID3D12ShaderReflection > &pShaderReflection, const D3D12_SHADER_INPUT_BIND_DESC &resourceDescription, std::unordered_map< std::string, size_t > &rootConstantOffsets, std::vector< RootParameter > &vRootParameters, std::unordered_map< std::string, std::pair< UINT, RootParameter > > &rootParameterIndices)
 
+ + + + + +

+Static Private Attributes

static const std::string sRootConstantsVariableName = "constants"
 
static const std::string sRootConstantsTypeName = "RootConstants"
 
+

Detailed Description

+

Generates Root Signature based on HLSL code.

+

Member Function Documentation

+ +

◆ addCbufferRootParameter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::RootSignatureGenerator::addCbufferRootParameter (std::vector< RootParameter > & vRootParameters,
std::unordered_map< std::string, std::pair< UINT, RootParameter > > & rootParameterIndices,
const D3D12_SHADER_INPUT_BIND_DESC & resourceDescription 
)
+
+staticprivate
+
+

Adds a cbuffer shader resource to root parameters.

+
Parameters
+ + + + +
vRootParametersParameters to add the new resource to.
rootParameterIndicesMap to add new parameter to.
resourceDescriptionShader resource description.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ addSpecialResourceRootParametersIfUsed()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ne::RootSignatureGenerator::addSpecialResourceRootParametersIfUsed (std::unordered_map< std::string, std::pair< UINT, RootSignatureGenerator::RootParameter > > & shaderRootParameterIndices,
std::vector< CD3DX12_ROOT_PARAMETER > & vRootParameters,
std::vector< CD3DX12_DESCRIPTOR_RANGE > & vTableRanges,
std::set< std::string > & addedRootParameterNames,
std::unordered_map< std::string, UINT > & rootParameterIndices,
std::array< UINT, static_cast< unsigned int >(SpecialRootParameterSlot::SIZE)> & vSpecialRootParameterIndices 
)
+
+staticprivate
+
+

Adds special root signature resources (if they are actually used).

+
Parameters
+ + + + + + + +
shaderRootParameterIndicesUsed resources of shaders.
vRootParametersSingle root parameters of the root signature that will be generated.
vTableRangesRange root parameters of the root signature that will be generated.
addedRootParameterNamesNames of the root parameters that were added.
rootParameterIndicesPairs of "resource name" - "root parameter index" that were added.
vSpecialRootParameterIndicesIndices of special root parameters.
+
+
+ +
+
+ +

◆ addStructuredBufferRootParameter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::RootSignatureGenerator::addStructuredBufferRootParameter (std::vector< RootParameter > & vRootParameters,
std::unordered_map< std::string, std::pair< UINT, RootParameter > > & rootParameterIndices,
const D3D12_SHADER_INPUT_BIND_DESC & resourceDescription,
bool bIsReadWrite 
)
+
+staticprivate
+
+

Adds a (RW)StructuredBuffer shader resource to root parameters.

+
Parameters
+ + + + + +
vRootParametersParameters to add the new resource to.
rootParameterIndicesMap to add new parameter to.
resourceDescriptionShader resource description.
bIsReadWritetrue if buffer is read/write, false if only read.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ addTexture2DRootParameter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::RootSignatureGenerator::addTexture2DRootParameter (std::vector< RootParameter > & vRootParameters,
std::unordered_map< std::string, std::pair< UINT, RootParameter > > & rootParameterIndices,
const D3D12_SHADER_INPUT_BIND_DESC & resourceDescription,
bool bIsReadWrite 
)
+
+staticprivate
+
+

Adds a (RW)Texture2D shader resource to root parameters.

+
Parameters
+ + + + + +
vRootParametersParameters to add the new resource to.
rootParameterIndicesMap to add new parameter to.
resourceDescriptionShader resource description.
bIsReadWritetrue if buffer is read/write, false if only read.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ addUniquePairResourceNameRootParameterIndex()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::RootSignatureGenerator::addUniquePairResourceNameRootParameterIndex (std::unordered_map< std::string, std::pair< UINT, RootParameter > > & mapToAddTo,
const std::string & sResourceName,
UINT iRootParameterIndex,
const RootParameterparameter 
)
+
+staticprivate
+
+

Adds a new pair of resource name - root parameter index to the specified map, additionally checks if a resource with this name already exists in the map and returns error in this case.

+
Parameters
+ + + + + +
mapToAddToMap to add new pair to.
sResourceNameResource name.
iRootParameterIndexRoot parameter index of the resource.
parameterParameter to add.
+
+
+
Returns
Error if a resource with this name already exists in the map.
+ +
+
+ +

◆ collectInfoFromReflection()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::variant< RootSignatureGenerator::CollectedInfo, Error > ne::RootSignatureGenerator::collectInfoFromReflection (ID3D12Device * pDevice,
const ComPtr< ID3D12ShaderReflection > & pShaderReflection 
)
+
+static
+
+

Generates root signature based on HLSL code reflection.

+
Parameters
+ + + +
pDeviceDirectX device.
pShaderReflectionReflection from compiled HLSL shader.
+
+
+
Returns
Error if something was wrong, otherwise generated root signature with used parameters.
+ +
+
+ +

◆ findStaticSamplerForSamplerResource()

+ +
+
+ + + + + +
+ + + + + + + + +
std::variant< SamplerType, Error > ne::RootSignatureGenerator::findStaticSamplerForSamplerResource (const D3D12_SHADER_INPUT_BIND_DESC & samplerResourceDescription)
+
+staticprivate
+
+

Finds static sampler for the specified sampler resource.

+
Parameters
+ + +
samplerResourceDescriptionHLSL resource description.
+
+
+
Returns
Error if static sampler is not found, otherwise found static sampler.
+ +
+
+ +

◆ generateCompute()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::variant< RootSignatureGenerator::Generated, Error > ne::RootSignatureGenerator::generateCompute (DirectXRendererpRenderer,
HlslShaderpComputeShader 
)
+
+static
+
+

Generates a new root signature using the compute shader info.

+
Remarks
Expects that root signature information is already collected for shader (see collectInfoFromReflection), otherwise returns error.
+
Parameters
+ + + +
pRendererDirectX renderer.
pComputeShaderCompute shader.
+
+
+
Returns
Error if something went wrong, otherwise generated root signature.
+ +
+
+ +

◆ generateGraphics()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< RootSignatureGenerator::Generated, Error > ne::RootSignatureGenerator::generateGraphics (DirectXRendererpRenderer,
HlslShaderpVertexShader,
HlslShaderpPixelShader 
)
+
+static
+
+

Generates a new root signature using the vertex and pixel shader info.

+
Remarks
Expects that root signature information is already collected for both shaders (see collectInfoFromReflection), otherwise returns error.
+
Warning
If a shader uses a static sampler this function will take the current texture filtering setting from the RenderSettings and will set it as a static sampler. This means that once the current texture filtering setting is changed you need to re-run this function to set a new filter into the root signature's static sampler.
+
Parameters
+ + + + +
pRendererDirectX renderer.
pVertexShaderVertex shader.
pPixelShaderPixel shader. Specify nullptr to generate root signature only for vertex shader.
+
+
+
Returns
Error if something went wrong, otherwise generated root signature.
+ +
+
+ +

◆ processRootConstantsIfFound()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< bool, Error > ne::RootSignatureGenerator::processRootConstantsIfFound (const ComPtr< ID3D12ShaderReflection > & pShaderReflection,
const D3D12_SHADER_INPUT_BIND_DESC & resourceDescription,
std::unordered_map< std::string, size_t > & rootConstantOffsets,
std::vector< RootParameter > & vRootParameters,
std::unordered_map< std::string, std::pair< UINT, RootParameter > > & rootParameterIndices 
)
+
+staticprivate
+
+

Looks if the specified cbuffer resource description stores root constants (sRootConstantsTypeName) and if it does adds root constant offsets to the specified map.

+
Parameters
+ + + + + + +
pShaderReflectionShader reflection.
resourceDescriptionCbuffer description.
rootConstantOffsetsIf found root constants, their offsets will be added here.
vRootParametersParameters to add the new resource to (if root constants are found).
rootParameterIndicesMap to add new parameter to (if root constants are found).
+
+
+
Returns
Error if something went wrong, otherwise false if no root constants were found and true if root constants were found and variable offsets were added.
+ +
+
+

Member Data Documentation

+ +

◆ sRootConstantsTypeName

+ +
+
+ + + + + +
+ + + + +
const std::string ne::RootSignatureGenerator::sRootConstantsTypeName = "RootConstants"
+
+inlinestaticprivate
+
+

Name of the shader struct that stores root constants.

+ +
+
+ +

◆ sRootConstantsVariableName

+ +
+
+ + + + + +
+ + + + +
const std::string ne::RootSignatureGenerator::sRootConstantsVariableName = "constants"
+
+inlinestaticprivate
+
+

Name of the shader cbuffer that will be considered as buffer that stores root constants.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/hlsl/RootSignatureGenerator.h
  • +
  • src/engine_lib/private/shader/hlsl/RootSignatureGenerator.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1RootSignatureGenerator.js b/classne_1_1RootSignatureGenerator.js new file mode 100644 index 000000000..e00f583e0 --- /dev/null +++ b/classne_1_1RootSignatureGenerator.js @@ -0,0 +1,18 @@ +var classne_1_1RootSignatureGenerator = +[ + [ "CollectedInfo", "structne_1_1RootSignatureGenerator_1_1CollectedInfo.html", "structne_1_1RootSignatureGenerator_1_1CollectedInfo" ], + [ "Generated", "structne_1_1RootSignatureGenerator_1_1Generated.html", "structne_1_1RootSignatureGenerator_1_1Generated" ], + [ "RootParameter", "classne_1_1RootSignatureGenerator_1_1RootParameter.html", "classne_1_1RootSignatureGenerator_1_1RootParameter" ], + [ "addCbufferRootParameter", "classne_1_1RootSignatureGenerator.html#a045e6dc8a1f5825d0f6dcef0b2846d35", null ], + [ "addSpecialResourceRootParametersIfUsed", "classne_1_1RootSignatureGenerator.html#a5ee6a55e1308f9ad9aad09220b0926cf", null ], + [ "addStructuredBufferRootParameter", "classne_1_1RootSignatureGenerator.html#ac2ec702d20cc94e10a9064fe314778e4", null ], + [ "addTexture2DRootParameter", "classne_1_1RootSignatureGenerator.html#aad50e6eb8ae97779a5fdc2158e4456f9", null ], + [ "addUniquePairResourceNameRootParameterIndex", "classne_1_1RootSignatureGenerator.html#af8f76ee52018743d024a24c7134fe2fd", null ], + [ "collectInfoFromReflection", "classne_1_1RootSignatureGenerator.html#a3f8b9fb865d2e56872c4ee525298d3fb", null ], + [ "findStaticSamplerForSamplerResource", "classne_1_1RootSignatureGenerator.html#ad1a3ea4eb8e2e6b537e67fdcaba657c5", null ], + [ "generateCompute", "classne_1_1RootSignatureGenerator.html#a3e29b37cbfed89d7bca3b699e8436024", null ], + [ "generateGraphics", "classne_1_1RootSignatureGenerator.html#a40f6aca1c59ce13664201a7ec34ca2ee", null ], + [ "processRootConstantsIfFound", "classne_1_1RootSignatureGenerator.html#a504d256c86cf6332c136748885352e4c", null ], + [ "sRootConstantsTypeName", "classne_1_1RootSignatureGenerator.html#a0a9f9f8c3de6c045b74b9e4d2054220f", null ], + [ "sRootConstantsVariableName", "classne_1_1RootSignatureGenerator.html#ac619c86cc59c437c1ec93546ced9da51", null ] +]; \ No newline at end of file diff --git a/classne_1_1RootSignatureGenerator_1_1RootParameter-members.html b/classne_1_1RootSignatureGenerator_1_1RootParameter-members.html new file mode 100644 index 000000000..4159fa001 --- /dev/null +++ b/classne_1_1RootSignatureGenerator_1_1RootParameter-members.html @@ -0,0 +1,123 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/classne_1_1RootSignatureGenerator_1_1RootParameter.html b/classne_1_1RootSignatureGenerator_1_1RootParameter.html new file mode 100644 index 000000000..6e46c2980 --- /dev/null +++ b/classne_1_1RootSignatureGenerator_1_1RootParameter.html @@ -0,0 +1,487 @@ + + + + + + + +Nameless Engine: ne::RootSignatureGenerator::RootParameter Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::RootSignatureGenerator::RootParameter Class Reference
+
+
+ +

#include <RootSignatureGenerator.h>

+ + + + +

+Public Types

enum class  Type { CONSTANTS +, CBV +, SRV +, UAV + }
 
+ + + + + + + + + + + + + +

+Public Member Functions

 RootParameter ()=default
 
 RootParameter (UINT iBindPoint, UINT iSpace, Type type, bool bIsTable=false, UINT iCount=1)
 
CD3DX12_ROOT_PARAMETER generateSingleDescriptorDescription () const
 
CD3DX12_DESCRIPTOR_RANGE generateTableRange () const
 
D3D12_SHADER_VISIBILITY getVisibility () const
 
bool isTable () const
 
+ + + + + + + + + + + + + +

+Private Attributes

UINT iBindPoint = 0
 
UINT iSpace = 0
 
Type type
 
UINT iCount = 0
 
bool bIsTable = false
 
D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL
 
+

Detailed Description

+

Wrapper for D3D root parameter type.

+

Member Enumeration Documentation

+ +

◆ Type

+ +
+
+ + + + + +
+ + + + +
enum class ne::RootSignatureGenerator::RootParameter::Type
+
+strong
+
+

Describes a root parameter type.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ RootParameter() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
ne::RootSignatureGenerator::RootParameter::RootParameter ()
+
+default
+
+

Creates uninitialized parameter.

+ +
+
+ +

◆ RootParameter() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ne::RootSignatureGenerator::RootParameter::RootParameter (UINT iBindPoint,
UINT iSpace,
RootParameter::Type type,
bool bIsTable = false,
UINT iCount = 1 
)
+
+

Initializes a root parameter.

+
Parameters
+ + + + + + +
iBindPointRegister binding index.
iSpaceRegister space.
typeRoot parameter type.
bIsTabletrue to initialize this parameter as descriptor table (even if descriptor count is 1), otherwise false to initialize it as just one descriptor.
iCountIf type is table them defined the number of descriptors this parameter stores, if type is constants then the number of 32 bit constants, otherwise ignored.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ generateSingleDescriptorDescription()

+ +
+
+ + + + + + + +
CD3DX12_ROOT_PARAMETER ne::RootSignatureGenerator::RootParameter::generateSingleDescriptorDescription () const
+
+

Generates root parameter description that describes a single descriptor.

+
Remarks
Shows error if this parameter was initialized as descriptor table.
+
Returns
Root parameter description.
+ +
+
+ +

◆ generateTableRange()

+ +
+
+ + + + + + + +
CD3DX12_DESCRIPTOR_RANGE ne::RootSignatureGenerator::RootParameter::generateTableRange () const
+
+

Generates root table range description.

+
Remarks
Shows error if this parameter was initialized as a single descriptor.
+
Returns
Root table range description.
+ +
+
+ +

◆ getVisibility()

+ +
+
+ + + + + + + +
D3D12_SHADER_VISIBILITY ne::RootSignatureGenerator::RootParameter::getVisibility () const
+
+

Returns visibility of this parameter.

+
Returns
Visibility.
+ +
+
+ +

◆ isTable()

+ +
+
+ + + + + + + +
bool ne::RootSignatureGenerator::RootParameter::isTable () const
+
+

Tells whether this parameter describes a descriptor table or just a single view.

+
Returns
true if generateTableRange should be used, otherwise generateSingleDescriptorDescription.
+ +
+
+

Member Data Documentation

+ +

◆ bIsTable

+ +
+
+ + + + + +
+ + + + +
bool ne::RootSignatureGenerator::RootParameter::bIsTable = false
+
+private
+
+

Whether this parameter should be initialized as descriptor table or not.

+ +
+
+ +

◆ iBindPoint

+ +
+
+ + + + + +
+ + + + +
UINT ne::RootSignatureGenerator::RootParameter::iBindPoint = 0
+
+private
+
+

Binding register index.

+ +
+
+ +

◆ iCount

+ +
+
+ + + + + +
+ + + + +
UINT ne::RootSignatureGenerator::RootParameter::iCount = 0
+
+private
+
+

If type is table them defined the number of descriptors this parameter stores, if type is constants then the number of 32 bit constants, otherwise ignored.

+ +
+
+ +

◆ iSpace

+ +
+
+ + + + + +
+ + + + +
UINT ne::RootSignatureGenerator::RootParameter::iSpace = 0
+
+private
+
+

Binding register space.

+ +
+
+ +

◆ type

+ +
+
+ + + + + +
+ + + + +
Type ne::RootSignatureGenerator::RootParameter::type
+
+private
+
+

Parameter type.

+ +
+
+ +

◆ visibility

+ +
+
+ + + + + +
+ + + + +
D3D12_SHADER_VISIBILITY ne::RootSignatureGenerator::RootParameter::visibility = D3D12_SHADER_VISIBILITY_ALL
+
+private
+
+

Visibility of this parameter.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/hlsl/RootSignatureGenerator.h
  • +
  • src/engine_lib/private/shader/hlsl/RootSignatureGenerator.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1RootSignatureGenerator_1_1RootParameter.js b/classne_1_1RootSignatureGenerator_1_1RootParameter.js new file mode 100644 index 000000000..2a90b8c65 --- /dev/null +++ b/classne_1_1RootSignatureGenerator_1_1RootParameter.js @@ -0,0 +1,21 @@ +var classne_1_1RootSignatureGenerator_1_1RootParameter = +[ + [ "Type", "classne_1_1RootSignatureGenerator_1_1RootParameter.html#a5ceefae221c3d54741bee6ef88b9b59f", [ + [ "CONSTANTS", "classne_1_1RootSignatureGenerator_1_1RootParameter.html#a5ceefae221c3d54741bee6ef88b9b59fa407ad4b1e907d46d14c6d93d89764214", null ], + [ "CBV", "classne_1_1RootSignatureGenerator_1_1RootParameter.html#a5ceefae221c3d54741bee6ef88b9b59fa67f5d41ba054c96a26203555f6481cc8", null ], + [ "SRV", "classne_1_1RootSignatureGenerator_1_1RootParameter.html#a5ceefae221c3d54741bee6ef88b9b59fab71ecf0b186ac1b938e15483f792b7db", null ], + [ "UAV", "classne_1_1RootSignatureGenerator_1_1RootParameter.html#a5ceefae221c3d54741bee6ef88b9b59fa6902d76cea698982754404da77e5e08a", null ] + ] ], + [ "RootParameter", "classne_1_1RootSignatureGenerator_1_1RootParameter.html#a13523f698ce9e04f408b94fdbca56c2b", null ], + [ "RootParameter", "classne_1_1RootSignatureGenerator_1_1RootParameter.html#a77422bf3eecd38e6d1dfe21e39a184e2", null ], + [ "generateSingleDescriptorDescription", "classne_1_1RootSignatureGenerator_1_1RootParameter.html#a1f1ba2eb092e2c938202694630266feb", null ], + [ "generateTableRange", "classne_1_1RootSignatureGenerator_1_1RootParameter.html#aa0265621533a19869ecba78866b4b91e", null ], + [ "getVisibility", "classne_1_1RootSignatureGenerator_1_1RootParameter.html#aa5cf1cbf4b3988b5292816b7e53d26b5", null ], + [ "isTable", "classne_1_1RootSignatureGenerator_1_1RootParameter.html#a1126962985b630af94ed15b1be0295e8", null ], + [ "bIsTable", "classne_1_1RootSignatureGenerator_1_1RootParameter.html#a03111223ee06a9aa4528afe147802b80", null ], + [ "iBindPoint", "classne_1_1RootSignatureGenerator_1_1RootParameter.html#a63cc0c0d9fa6f9c22eb2bb6109583920", null ], + [ "iCount", "classne_1_1RootSignatureGenerator_1_1RootParameter.html#a9e07e982d9608cd6af173b7607ef5187", null ], + [ "iSpace", "classne_1_1RootSignatureGenerator_1_1RootParameter.html#a6f8eb2c5b7d6947480c690f06f6f047b", null ], + [ "type", "classne_1_1RootSignatureGenerator_1_1RootParameter.html#a93b153aac08f239e9503ef03e5a0b364", null ], + [ "visibility", "classne_1_1RootSignatureGenerator_1_1RootParameter.html#abb61b1bfa4e876fe35cf8607985740e0", null ] +]; \ No newline at end of file diff --git a/classne_1_1Serializable-members.html b/classne_1_1Serializable-members.html new file mode 100644 index 000000000..7fb381178 --- /dev/null +++ b/classne_1_1Serializable-members.html @@ -0,0 +1,135 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::Serializable Member List
+
+
+ +

This is the complete list of members for ne::Serializable, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
deserialize(const std::filesystem::path &pathToFile)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)ne::Serializablestatic
deserialize(std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, const std::string &sEntityId)ne::Serializablestatic
deserialize(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})ne::Serializablestatic
deserializeFromSection(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sSectionName, const std::string &sTypeGuid, const std::string &sEntityId, const std::optional< std::filesystem::path > &optionalPathToFile)ne::Serializableprivatestatic
deserializeMultiple(std::filesystem::path pathToFile)ne::Serializablestatic
getClassForGuid(const std::string &sGuid)ne::Serializableprivatestatic
getClassForGuid(const rfk::Struct *pArchetypeToAnalyze, const std::string &sGuid)ne::Serializableprivatestatic
getIdsFromFile(std::filesystem::path pathToFile)ne::Serializablestatic
getPathDeserializedFromRelativeToRes() constne::Serializable
onAfterDeserialized()ne::Serializableinlineprotectedvirtual
pathDeserializedFromRelativeToResne::Serializableprivate
resolvePathToToml(std::filesystem::path &pathToFile)ne::Serializableprivatestatic
sCustomAttributePrefixne::Serializableprivatestatic
Serializable()=default (defined in ne::Serializable)ne::Serializable
SerializableObjectFieldSerializer (defined in ne::Serializable)ne::Serializablefriend
serialize(std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})ne::Serializable
serialize(toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serialize(toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serializeMultiple(std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)ne::Serializablestatic
sNothingToSerializeKeyne::Serializableinlineprivatestatic
sPathRelativeToResKeyne::Serializableinlineprivatestatic
sSubEntityFieldNameKeyne::Serializableinlineprivatestatic
~Serializable() override=default (defined in ne::Serializable)ne::Serializablevirtual
+
+ + + + diff --git a/classne_1_1Serializable.html b/classne_1_1Serializable.html new file mode 100644 index 000000000..1a7c47284 --- /dev/null +++ b/classne_1_1Serializable.html @@ -0,0 +1,1161 @@ + + + + + + + +Nameless Engine: ne::Serializable Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <Serializable.h>

+
+Inheritance diagram for ne::Serializable:
+
+
+ + +ne::Material +ne::MeshData +ne::Node +ne::RenderSettings +ne::EnvironmentNode +ne::SpatialNode +ne::CameraNode +ne::DirectionalLightNode +ne::MeshNode +ne::PointLightNode +ne::SpotlightNode +ne::EditorCameraNode + +
+ + + + + + + + + + +

+Public Member Functions

std::optional< Errorserialize (std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})
 
std::variant< std::string, Errorserialize (toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::variant< std::string, Errorserialize (toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::optional< std::pair< std::string, std::string > > getPathDeserializedFromRelativeToRes () const
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static std::variant< std::pair< std::set< std::string >, toml::value >, ErrorgetIdsFromFile (std::filesystem::path pathToFile)
 
static std::optional< ErrorserializeMultiple (std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::same_as<SmartPointer, sgc::GcPtr<Serializable>> || std::same_as<SmartPointer, std::unique_ptr<Serializable>>
static std::variant< std::vector< DeserializedObjectInformation< SmartPointer > >, ErrordeserializeMultiple (std::filesystem::path pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})
 
+ + + +

+Protected Member Functions

virtual void onAfterDeserialized ()
 
+ + + + + + + + + + +

+Static Private Member Functions

static std::optional< ErrorresolvePathToToml (std::filesystem::path &pathToFile)
 
static const rfk::Class * getClassForGuid (const std::string &sGuid)
 
static const rfk::Struct * getClassForGuid (const rfk::Struct *pArchetypeToAnalyze, const std::string &sGuid)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, ErrordeserializeFromSection (const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sSectionName, const std::string &sTypeGuid, const std::string &sEntityId, const std::optional< std::filesystem::path > &optionalPathToFile)
 
+ + + +

+Private Attributes

std::optional< std::pair< std::string, std::string > > pathDeserializedFromRelativeToRes
 
+ + + + + + + + + +

+Static Private Attributes

static const auto sSubEntityFieldNameKey = ".field_name"
 
static const auto sPathRelativeToResKey = ".path_relative_to_res"
 
static const auto sNothingToSerializeKey = ".none"
 
static constexpr std::string_view sCustomAttributePrefix = ".."
 
+ + + +

+Friends

+class SerializableObjectFieldSerializer
 
+

Detailed Description

+

Adds support for serialization/deserialization for your reflected type.

+

Inherit your class/struct from this class to add functions which will serialize the type and reflected fields (even inherited) that are marked with special properties.

+

Member Function Documentation

+ +

◆ deserialize() [1/5]

+ +
+
+
+template<typename SmartPointer , typename InnerType >
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
+ + + + + +
+ + + + + + + + +
std::variant< SmartPointer, Error > ne::Serializable::deserialize (const std::filesystem::path & pathToFile)
+
+static
+
+

Deserializes an object and all reflected fields (including inherited) from a file. Specify the type of an object (that is located in the file) as the T template parameter, which can be entity's actual type or entity's parent (up to Serializable).

+
Remarks
You can use either sgc::GcPtr or std::unique_ptr as a smart pointer for deserialized object.
+
Parameters
+ + +
pathToFileFile to read reflected data from. The ".toml" extension will be added automatically if not specified in the path.
+
+
+
Returns
Error if something went wrong, otherwise a pointer to deserialized object.
+ +
+
+ +

◆ deserialize() [2/5]

+ +
+
+
+template<typename SmartPointer , typename InnerType >
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::variant< SmartPointer, Error > ne::Serializable::deserialize (const std::filesystem::path & pathToFile,
const std::string & sEntityId 
)
+
+static
+
+

Deserializes an object and all reflected fields (including inherited) from a file. Specify the type of an object (that is located in the file) as the T template parameter, which can be entity's actual type or entity's parent (up to Serializable).

+
Remarks
This is an overloaded function, see a more detailed documentation for the other overload.
+
Parameters
+ + + +
pathToFileFile to read reflected data from. The ".toml" extension will be added automatically if not specified in the path.
sEntityIdUnique ID of this object. When serializing multiple objects into one toml value provide different IDs for each object so they could be differentiated.
+
+
+
Returns
Error if something went wrong, otherwise a pointer to deserialized object.
+ +
+
+ +

◆ deserialize() [3/5]

+ +
+
+
+template<typename SmartPointer , typename InnerType >
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::variant< SmartPointer, Error > ne::Serializable::deserialize (const std::filesystem::path & pathToFile,
std::unordered_map< std::string, std::string > & customAttributes 
)
+
+static
+
+

Deserializes an object and all reflected fields (including inherited) from a file. Specify the type of an object (that is located in the file) as the T template parameter, which can be entity's actual type or entity's parent (up to Serializable).

+
Remarks
This is an overloaded function, see a more detailed documentation for the other overload.
+
Parameters
+ + + +
pathToFileFile to read reflected data from. The ".toml" extension will be added automatically if not specified in the path.
customAttributesPairs of values that were associated with this object.
+
+
+
Returns
Error if something went wrong, otherwise a pointer to deserialized object.
+ +
+
+ +

◆ deserialize() [4/5]

+ +
+
+
+template<typename SmartPointer , typename InnerType >
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< SmartPointer, Error > ne::Serializable::deserialize (const toml::value & tomlData,
std::unordered_map< std::string, std::string > & customAttributes,
std::string sEntityId = "",
const std::optional< std::filesystem::path > & optionalPathToFile = {} 
)
+
+static
+
+

Deserializes an object and all reflected fields (including inherited) from a toml value. Specify the type of an object (that is located in the file) as the T template parameter, which can be entity's actual type or entity's parent (up to Serializable).

+
Remarks
This is an overloaded function, see a more detailed documentation for the other overload.
+
Parameters
+ + + + + +
tomlDataToml value to retrieve an object from.
customAttributesPairs of values that were associated with this object.
sEntityIdUnique ID of this object. When serializing multiple objects into one toml value provide different IDs for each object so they could be differentiated.
optionalPathToFileOptional. Path to the file that this TOML data is deserialized from. Used for fields marked as Serialize(AsExternal)
+
+
+
Warning
Don't use dots in the entity ID, dots are used in recursion when this function is called from this function to process reflected field (sub entity).
+
Returns
Error if something went wrong, otherwise a pointer to deserialized object.
+ +
+
+ +

◆ deserialize() [5/5]

+ +
+
+
+template<typename SmartPointer , typename InnerType >
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< SmartPointer, Error > ne::Serializable::deserialize (std::filesystem::path pathToFile,
std::unordered_map< std::string, std::string > & customAttributes,
const std::string & sEntityId 
)
+
+static
+
+

Deserializes an object and all reflected fields (including inherited) from a file. Specify the type of an object (that is located in the file) as the T template parameter, which can be entity's actual type or entity's parent (up to Serializable).

+
Remarks
This is an overloaded function, see a more detailed documentation for the other overload.
+
Parameters
+ + + + +
pathToFileFile to read reflected data from. The ".toml" extension will be added automatically if not specified in the path.
customAttributesPairs of values that were associated with this object.
sEntityIdUnique ID of this object. When serializing multiple objects into one toml value provide different IDs for each object so they could be differentiated.
+
+
+
Returns
Error if something went wrong, otherwise a pointer to deserialized object.
+ +
+
+ +

◆ deserializeFromSection()

+ +
+
+
+template<typename SmartPointer , typename InnerType >
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< SmartPointer, Error > ne::Serializable::deserializeFromSection (const toml::value & tomlData,
std::unordered_map< std::string, std::string > & customAttributes,
const std::string & sSectionName,
const std::string & sTypeGuid,
const std::string & sEntityId,
const std::optional< std::filesystem::path > & optionalPathToFile 
)
+
+staticprivate
+
+

Deserializes an object and all reflected fields (including inherited) from a file. Specify the type of an object (that is located in the file) as the T template parameter, which can be entity's actual type or entity's parent (up to Serializable).

+
Remarks
This is an overloaded function, see a more detailed documentation for the other overload.
+
Parameters
+ + + + + + + +
tomlDataToml value to retrieve an object from.
customAttributesPairs of values that were associated with this object.
sSectionNameName of the TOML section to deserialize.
sTypeGuidGUID of the type to deserialize (taken from section name).
sEntityIdEntity ID chain string.
optionalPathToFileOptional. Path to the file that this TOML data is deserialized from. Used for fields marked as Serialize(AsExternal)
+
+
+
Returns
Error if something went wrong, otherwise a pointer to deserialized object.
+ +
+
+ +

◆ deserializeMultiple()

+ +
+
+
+template<typename SmartPointer , typename InnerType >
+requires std::same_as<SmartPointer, sgc::GcPtr<Serializable>> || std::same_as<SmartPointer, std::unique_ptr<Serializable>>
+ + + + + +
+ + + + + + + + +
std::variant< std::vector< DeserializedObjectInformation< SmartPointer > >, Error > ne::Serializable::deserializeMultiple (std::filesystem::path pathToFile)
+
+static
+
+

Deserializes multiple objects and their reflected fields (including inherited) from a file.

+
Parameters
+ + +
pathToFileFile to read reflected data from. The ".toml" extension will be added automatically if not specified in the path.
+
+
+
Returns
Error if something went wrong, otherwise an array of pointers to deserialized objects.
+ +
+
+ +

◆ getClassForGuid() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
const rfk::Struct * ne::Serializable::getClassForGuid (const rfk::Struct * pArchetypeToAnalyze,
const std::string & sGuid 
)
+
+staticprivate
+
+

Looks for all children of the specified archetype to find a type that has the specified GUID.

+
Parameters
+ + + +
pArchetypeToAnalyzeType which children to analyze.
sGuidGUID to look for.
+
+
+
Returns
nullptr if not found, otherwise valid pointer.
+ +
+
+ +

◆ getClassForGuid() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
const rfk::Class * ne::Serializable::getClassForGuid (const std::string & sGuid)
+
+staticprivate
+
+

Returns archetype for the specified GUID.

+
Parameters
+ + +
sGuidGUID to look for.
+
+
+
Returns
nullptr if not found, otherwise valid pointer.
+ +
+
+ +

◆ getIdsFromFile()

+ +
+
+ + + + + +
+ + + + + + + + +
std::variant< std::pair< std::set< std::string >, toml::value >, Error > ne::Serializable::getIdsFromFile (std::filesystem::path pathToFile)
+
+static
+
+

Analyzes the file for serialized objects, gathers and returns unique IDs of those objects.

+
Parameters
+ + +
pathToFileFile to read serialized data from. The ".toml" extension will be added automatically if not specified in the path.
+
+
+
Returns
Error if something went wrong, otherwise array of unique IDs of objects that exist in the specified file and parsed TOML data that you can reuse.
+ +
+
+ +

◆ getPathDeserializedFromRelativeToRes()

+ +
+
+ + + + + + + +
std::optional< std::pair< std::string, std::string > > ne::Serializable::getPathDeserializedFromRelativeToRes () const
+
+

If this object was deserialized from a file that is located in the res directory of this project, returns a pair of values:

    +
  • path to this file relative to the res directory,
  • +
  • unique ID of this object in this file.
  • +
+

This path will never point to a backup file and will always point to the original file (even if the backup file was used in deserialization).

+

Example: say this object is deserialized from the file located at .../res/game/test.toml, this value will be equal to the following pair: {game/test.toml, some.id}.

+
Returns
Empty if this object was not deserialized previously, otherwise path to the file that was used in deserialization relative to the res directory.
+ +
+
+ +

◆ onAfterDeserialized()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void ne::Serializable::onAfterDeserialized ()
+
+inlineprotectedvirtual
+
+

Called after the object was successfully deserialized. Used to execute post-deserialization logic.

+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +

Reimplemented in ne::DirectionalLightNode, ne::PointLightNode, ne::SpotlightNode, ne::MeshNode, ne::SpatialNode, ne::Material, and ne::RenderSettings.

+ +
+
+ +

◆ resolvePathToToml()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::Serializable::resolvePathToToml (std::filesystem::path & pathToFile)
+
+staticprivate
+
+

Adds ".toml" extension to the path (if needed) and copies a backup file to the specified path if the specified path does not exist but there is a backup file.

+
Parameters
+ + +
pathToFilePath to toml file (may point to non-existing path or don't have ".toml" extension).
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ serialize() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::Serializable::serialize (std::filesystem::path pathToFile,
bool bEnableBackup,
const std::unordered_map< std::string, std::string > & customAttributes = {} 
)
+
+

Serializes the object and all reflected fields (including inherited) that are marked with ne::Serialize property into a file. Serialized object can later be deserialized using deserialize.

+
Parameters
+ + + + +
pathToFileFile to write reflected data to. The ".toml" extension will be added automatically if not specified in the path. If the specified file already exists it will be overwritten. If the directories of the specified file do not exist they will be recursively created.
bEnableBackupIf 'true' will also use a backup (copy) file. deserialize can use backup file if the original file does not exist. Generally you want to use a backup file if you are saving important information, such as player progress, other cases such as player game settings and etc. usually do not need a backup but you can use it if you want.
customAttributesOptional. Custom pairs of values that will be saved as this object's additional information and could be later retrieved in deserialize.
+
+
+
Remarks
If file's parent directories do no exist they will be created.
+
+In order for a field to be serialized with the object, you need to mark it with ne::Serialize property like so:
using namespace ne;
+
RPROPERTY(Serialize)
+
int iMyValue = 0;
+
Definition: SerializeProperty.h:42
+
Note that not all reflected fields can be serialized, only specific types can be serialized. Const fields, pointer fields, lvalue references, rvalue references and C-arrays will always be ignored and will not be serialized (no error returned). Supported for serialization types are:
    +
  • bool
  • +
  • int
  • +
  • unsigned int
  • +
  • long long
  • +
  • unsigned long long
  • +
  • float
  • +
  • double
  • +
  • std::string
  • +
  • T (where T is any type that derives from Serializable)
  • +
  • and more, see io/serializers directory for available field serializers (you don't need to use them directly, they will be automatically picked inside of this function).
  • +
+
+
Returns
Error if something went wrong, for example when found an unsupported for serialization reflected field.
+ +
+
+ +

◆ serialize() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::string, Error > ne::Serializable::serialize (toml::value & tomlData,
const std::string & sEntityId = "",
const std::unordered_map< std::string, std::string > & customAttributes = {},
const std::optional< std::filesystem::path > & optionalPathToFile = {},
bool bEnableBackup = false 
)
+
+

Serializes the object and all reflected fields (including inherited) into a toml value.

+
Remarks
This is an overloaded function. See full documentation for other overload.
+
Parameters
+ + + + + + +
tomlDataToml value to append this object to.
sEntityIdUnique ID of this object. When serializing multiple objects into one toml value provide different IDs for each object so they could be differentiated. Don't use dots in the entity ID, dots are used in recursion when this function is called from this function to process reflected field (sub entity).
customAttributesOptional. Custom pairs of values that will be saved as this object's additional information and could be later retrieved in deserialize.
optionalPathToFileOptional. Path to the file that this TOML data will be serialized. Used for fields marked as Serialize(AsExternal).
bEnableBackupOptional. If this TOML data will be serialized to file whether the backup file is needed or not. Used for fields marked as Serialize(AsExternal).
+
+
+
Returns
Error if something went wrong, for example when found an unsupported for serialization reflected field, otherwise name of the section that was used to store this entity.
+ +
+
+ +

◆ serialize() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::string, Error > ne::Serializable::serialize (toml::value & tomlData,
SerializablepOriginalObject,
std::string sEntityId = "",
const std::unordered_map< std::string, std::string > & customAttributes = {},
const std::optional< std::filesystem::path > & optionalPathToFile = {},
bool bEnableBackup = false 
)
+
+

Serializes the object and all reflected fields (including inherited) into a toml value.

+
Remarks
This is an overloaded function that takes an original object to serialize only changed values. See full documentation for other overload.
+
Parameters
+ + + + + + + +
tomlDataToml value to append this object to.
pOriginalObjectOptional. Original object of the same type as the object being serialized, this object is a deserialized version of the object being serialized, used to compare serializable fields' values and only serialize changed values.
sEntityIdUnique ID of this object. When serializing multiple objects into one toml value provide different IDs for each object so they could be differentiated. Don't use dots in the entity ID, dots are used in recursion when this function is called from this function to process reflected field (sub entity).
customAttributesOptional. Custom pairs of values that will be saved as this object's additional information and could be later retrieved in deserialize.
optionalPathToFileOptional. Path to the file that this TOML data will be serialized. Used for fields marked as Serialize(AsExternal).
bEnableBackupOptional. If this TOML data will be serialized to file whether the backup file is needed or not. Used for fields marked as Serialize(AsExternal).
+
+
+
Returns
Error if something went wrong, for example when found an unsupported for serialization reflected field, otherwise name of the section that was used to store this entity.
+ +
+
+ +

◆ serializeMultiple()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::Serializable::serializeMultiple (std::filesystem::path pathToFile,
std::vector< SerializableObjectInformationvObjects,
bool bEnableBackup 
)
+
+static
+
+

Serializes multiple objects, their reflected fields (including inherited) and provided custom attributes (if any) into a file.

+
Parameters
+ + + + +
pathToFileFile to write reflected data to. The ".toml" extension will be added automatically if not specified in the path. If the specified file already exists it will be overwritten.
vObjectsArray of objects to serialize, their unique IDs (so they could be differentiated in the file) and custom attributes (if any). Don't use dots in the entity IDs, dots are used internally.
bEnableBackupIf 'true' will also use a backup (copy) file. deserialize can use backup file if the original file does not exist. Generally you want to use a backup file if you are saving important information, such as player progress, other cases such as player game settings and etc. usually do not need a backup but you can use it if you want.
+
+
+
Returns
Error if something went wrong, for example when found an unsupported for serialization reflected field.
+ +
+
+

Member Data Documentation

+ +

◆ pathDeserializedFromRelativeToRes

+ +
+
+ + + + + +
+ + + + +
std::optional<std::pair<std::string, std::string> > ne::Serializable::pathDeserializedFromRelativeToRes
+
+private
+
+

If this object was deserialized from a file that is located in the res directory of this project, this field will contain a pair of values:

    +
  • path to this file relative to the res directory,
  • +
  • unique ID of this object in this file.
  • +
+

This path will never point to a backup file and will always point to the original file (even if the backup file was used in deserialization).

+

Example: say this object is deserialized from the file located at .../res/game/test.toml, this value will be equal to game/test.toml.

+ +
+
+ +

◆ sCustomAttributePrefix

+ +
+
+ + + + + +
+ + + + +
constexpr std::string_view ne::Serializable::sCustomAttributePrefix = ".."
+
+staticconstexprprivate
+
+

Text that we add to custom (user-specified) attributes in TOML files.

+ +
+
+ +

◆ sNothingToSerializeKey

+ +
+
+ + + + + +
+ + + + +
const auto ne::Serializable::sNothingToSerializeKey = ".none"
+
+inlinestaticprivate
+
+

Name of the key which we use when there is nothing to serialize.

+ +
+
+ +

◆ sPathRelativeToResKey

+ +
+
+ + + + + +
+ + + + +
const auto ne::Serializable::sPathRelativeToResKey = ".path_relative_to_res"
+
+inlinestaticprivate
+
+

Name of the key which we use when we serialize an object that was previously deserialized from the res directory.

+ +
+
+ +

◆ sSubEntityFieldNameKey

+ +
+
+ + + + + +
+ + + + +
const auto ne::Serializable::sSubEntityFieldNameKey = ".field_name"
+
+inlinestaticprivate
+
+

Name of the key in which to store name of the field a section represents.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/io/Serializable.h
  • +
  • src/engine_lib/private/io/Serializable.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1Serializable.js b/classne_1_1Serializable.js new file mode 100644 index 000000000..4c00ae2e3 --- /dev/null +++ b/classne_1_1Serializable.js @@ -0,0 +1,25 @@ +var classne_1_1Serializable = +[ + [ "deserialize", "classne_1_1Serializable.html#a464dd6597a8eb7793dfde75c36a44a24", null ], + [ "deserialize", "classne_1_1Serializable.html#afb8e66a57cc108fca4d35ae40de8e22a", null ], + [ "deserialize", "classne_1_1Serializable.html#a3162d0dbc003bfcef8c0ae0846b32f77", null ], + [ "deserialize", "classne_1_1Serializable.html#af67ef936c5d20e2f861430b48c69c95a", null ], + [ "deserialize", "classne_1_1Serializable.html#a32a58a89522b5cca64db7b6750a73a19", null ], + [ "deserializeFromSection", "classne_1_1Serializable.html#adf799d17a8e7649d66c956fee4bb921b", null ], + [ "deserializeMultiple", "classne_1_1Serializable.html#a5d16d519e3d326cbdc101e78ca1a2478", null ], + [ "getClassForGuid", "classne_1_1Serializable.html#a8c9ca7767a0cac5a0612ff2243e15fd0", null ], + [ "getClassForGuid", "classne_1_1Serializable.html#ae524a157024d00ae1ab1ee6a3a44b01a", null ], + [ "getIdsFromFile", "classne_1_1Serializable.html#a6cd50b9cef87748dede76ba3ef125e43", null ], + [ "getPathDeserializedFromRelativeToRes", "classne_1_1Serializable.html#a0404cdf34dc3fb25b7932a87ed9ade38", null ], + [ "onAfterDeserialized", "classne_1_1Serializable.html#a00002d59e5d0dcda6e53c20b59947150", null ], + [ "resolvePathToToml", "classne_1_1Serializable.html#aab36f16bc593429b096f1112ad5cd52d", null ], + [ "serialize", "classne_1_1Serializable.html#a2b1c9ee24ea69f0b6231eff5a262e348", null ], + [ "serialize", "classne_1_1Serializable.html#af0a79714019d1b40ce8d063b920bbdcf", null ], + [ "serialize", "classne_1_1Serializable.html#aa99dd41bee3fdcea40c80bf317cc590d", null ], + [ "serializeMultiple", "classne_1_1Serializable.html#a1f76ea78f80fb43e5e481277a930b364", null ], + [ "pathDeserializedFromRelativeToRes", "classne_1_1Serializable.html#aa26ef7fb597d68900cf353dfd6f63120", null ], + [ "sCustomAttributePrefix", "classne_1_1Serializable.html#a8e6d9e5fd4a908f96fa6bea88924ec42", null ], + [ "sNothingToSerializeKey", "classne_1_1Serializable.html#a909285db66b8dad8e83bfad4dcafa59c", null ], + [ "sPathRelativeToResKey", "classne_1_1Serializable.html#ab488404eca6e23051944f1618e9fbbcb", null ], + [ "sSubEntityFieldNameKey", "classne_1_1Serializable.html#a23b63a86bea9420f2d053c90c234c232", null ] +]; \ No newline at end of file diff --git a/classne_1_1Serializable.png b/classne_1_1Serializable.png new file mode 100644 index 0000000000000000000000000000000000000000..56a4b831068a51d906ff97e021b7de10d9bcf24b GIT binary patch literal 4585 zcmc&&dtB33mdCQlR4uISRJ00d*Cpu)?JuY>sg?&EsOX>Gl?C;YtzpO8?oiq z+;-*>PJ4Shu?CfUMK-D#P}ZN~bAzK$GvOA6J&8KS0L{P4EcuZZ^dKz>Rietu&dz4T zy&XMsG`db%-|L8TH*3Ht2vwF{B|pcrZmT}jnFdwH#a7(VX#t0n3|dAazhWdKvk?ow z#4f8pj@rLt(J^xWjvX8SbePW}@-4GJV2CB4WxT>7)nSYQfwhfIdQMVBMa78NqT)0& zK~Pcg$IC#;nj@LX5!t|u0ujyMzw7G9{zt;S}i>DiEe%`*hZGga*n%uyi zR_y-q#`+SQv&cy-$rK^SY?9of>q)09hQCcCmR?+Vy4D*UeKB@9b)s&#u-5nn0dv}H8dS7~wO(L~)PWh3?-rmM<<+0&2_)~O<}+bbY2;oQTscI6;v&?~+aJZY_%=jTq|KyCL-tK%upcm7OZ88&-G3 zFqv^$8vSrqIzL$3b{iXxp8p|Sq5KTJu?ZDG*%_9{+q-)p&Xs%}VK#V<%2z3e?W)Bw zJi87AY0Jd75lUpMDjUTvA~>8aNS||ooMzKGeVefB^Yfmjs_r<2H5vbHabG6k2qhX` z_FaVjqWS%NiRrV_>*QgDI3L-{?LlR~FCKfLrK;C0@oCay-i}0g*My^d7i`f{&-Sxi z^%hQd@H0PedE`7WQEgGk)g{&}Y2+@JyVX{tBs4?_1jA2%Fy5lY1bTO56y`$|!w{1e z^UdtT4`V({S@u!bV*1LE4vknS^@)Ntq)ymU#T^xru7~7%lB}IL_S7-E032bPIKGSu zU8J4Q%A!Osl+x&TeGSJweYZpEG&29${v10@uq(TR>r8rhGn~qTb=^z;dMd802CIlI zCdZ@L1^8xs5YGLEu`rxTeRwqNDzbIrs{y<_p`pIqd8rLzTJI4mvsU0Ec(SkcCwB&D z7v4n~T*Yqul_H1d_yV1Ln*6rnt7A~Uj(pXy_~+&ZF1s z#f|YGx(|X}X|uJBRqYG<6*xYihc62NJ$!l&7XJe0hSwAGn_l4EOUl7`QxKZ?9t)7Q zy+z$Wq2pESQIkOUmd7zMbs~Yra+;k&Xs$mHSAawZfkWtF>-vME4OIaf+Je-TQVxvg z^c-YHA{?}#@SxWC_v-vG5LO~SNQu^xX4Q*J5#hBODJ|yn?CZ0cWk@DW@`j;Ln8>9v zbpNv4m3#;5;5T`39KlGB}rL1&6|yj45=mN6ppp{o?x!M zq*py!X8Dvl^YFlUBYp~o_~J{)%DHmU6o=PMNN|lsaB_;DFvL$7frV1zY3|ImPf{C* zH~&6fl-Rsecmdxq(_%MNElxn81wLMS)2shNzt3=zB#)M zTP0$<*HFhEHw@s*^vhS4|HBIR#RCJ%MVSN2yF@sHdxD>wr*b}FUK*BHtp*8L+l%A%RbO}Amc!0}Q6FsbebNi7!;Z%YX9zdcNael-yw zG~hwiAmr~e zw#uJ>6Lq<=nJRNJ-?k5hXp2Tz1CFbY#;x81KeSza3;Q}#L0=Pg7JmHi4RM7d9$B)G z)lSNvh^iA!kN-q^xmA(Qypa9Gbs%8e0JZ7u$8()0&m8+T(b15+RDK~6Y!alTUj#sV z4bj?dyj1jUEJGho$w|t1u`-e!+&;5!g{QgD)K{2;XxBw>W4K%Mtz)Z9CO5C>8Mo10 zLb-=JYRPX#@#iRQjpP<`zpRDq;4E`_LhUwwNs|_dK?vU4;PVj6+LIyAbwQ=fo#O-= zuhLZI<|f+iwhJ=eiKt36aqeq2f^70830GE@L|S#HbUmBNIc|L6)>=e7!IW3!II-t@ zrSzGX#?s*ivF}nZyi9h-kvaiK%prC<|2f;ApU==JlFK!AcM#-$&HWz8fX;}#+9T>4 z{RY`O`4PW%yVtO6Ey6wMQuB1CPW{!E4C1ZjE?Ue}Kf~t-@@1PpfNCGz!HU$1dx90q zDZFunsp23`xyu;&NK1G%w*M~<1w)^>O0h?4DN_U!U|Rvp84!Av60gcT>r?DUUlsu?rHC)}ad z-ISj^p!O~~UL^{koD|^*WpT~uS$r^gqFfuEb}2FwvDQZBF9mNQqxf0P%0;X_`aAm!N1c#c8$Fl!DPVG zS#c=u?1qpB5tL}nY@)kh@hS+-^g4zZ?>e;nP6$q?+3oA4o8D%)M&ox7!=d2P)rLn{ z=k*Ly`7cPZ5p3h{sq~`w8T;Y zD1J|)pB+?{`l*e+OV2E;Bof|M%&J#@kN(||tS*Am)_n$$EN7~gXXws><}QD~okuhYP*EvtN*wkSzifRiU>ZeKjT6z;JUyV)z&MwOF`cjC z02Mi(;~*o{h;MB}zT&w;8@qp;arT-~@ z%M-y>&PD*LeE+WBlmx-|Hfu}m-JRVB*X@}cn5b7L@cuc@eih%o9_znK!><{8m5q(L zEuFIRs*7Cg0DeI;XePa&1UAc8L8*P}`lYVI;3W7)yx4$^ZHzOUIAyArFW|fOlSVA# zko|T5!Q`1UhyXG7nQ=Y&)9rbrb!vNW4AvuMh?TZ@cZv<{LMo2n6Kurcql?&BmRx-% zqSAN8=jC_bEcvr3B#a^DYu-&j3M;PK0esl)p0}H#I)d3AsP^tBxwT66{J+C}PK7`5 zDyEBpGAQMz>4Py7^2-U~0-U?C6JFxRP5^i%hemh0kUF7hyT*v1$SrrWlzZ61Fs3*% z-RI@3>>iE&Vh^5qCInp%*hVJ*h(BCqYFtgmunB>mYxXtH^qMZ;=n~}m?Ma&yl4Q!Q zItSl2xDF^R2Bi$?D!fu2?CJm6Ij2DOFSiB7ShLxx?LI1@c~QIp{8PpX`Z)M-?MHvS F@;5XQTQL9t literal 0 HcmV?d00001 diff --git a/classne_1_1SerializableObjectFieldSerializer-members.html b/classne_1_1SerializableObjectFieldSerializer-members.html new file mode 100644 index 000000000..6388e054d --- /dev/null +++ b/classne_1_1SerializableObjectFieldSerializer-members.html @@ -0,0 +1,129 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::SerializableObjectFieldSerializer Member List
+
+
+ +

This is the complete list of members for ne::SerializableObjectFieldSerializer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
cloneField(Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField) overridene::SerializableObjectFieldSerializervirtual
cloneSerializableObject(Serializable *pFrom, Serializable *pTo, bool bNotifyAboutDeserialized)ne::SerializableObjectFieldSerializerstatic
deserializeField(const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes) overridene::SerializableObjectFieldSerializervirtual
deserializeSerializableObject(const toml::value *pTomlDocument, const toml::value *pTomlValue, const std::string &sFieldName, Serializable *pTarget, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes)ne::SerializableObjectFieldSerializerstatic
GameManager (defined in ne::SerializableObjectFieldSerializer)ne::SerializableObjectFieldSerializerfriend
IFieldSerializer()=default (defined in ne::IFieldSerializer)ne::IFieldSerializer
isDerivedFromSerializable(rfk::Archetype const *pArchetype)ne::SerializableObjectFieldSerializerstatic
isFieldSerializable(rfk::Field const &field)ne::SerializableObjectFieldSerializerstatic
isFieldTypeSupported(const rfk::Field *pField) overridene::SerializableObjectFieldSerializervirtual
isFieldValueEqual(Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB) overridene::SerializableObjectFieldSerializervirtual
isSerializableObjectValueEqual(Serializable *pObjectA, Serializable *pObjectB)ne::SerializableObjectFieldSerializerstatic
isTypeDerivesFromSerializable(const std::string &sCanonicalTypeName)ne::SerializableObjectFieldSerializerstatic
isTypeDerivesFromSerializable(const std::string &sCanonicalTypeName, const rfk::Namespace *pNamespace)ne::SerializableObjectFieldSerializerprivatestatic
SerializableObjectFieldSerializer()=default (defined in ne::SerializableObjectFieldSerializer)ne::SerializableObjectFieldSerializer
serializeField(toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr) overridene::SerializableObjectFieldSerializervirtual
serializeFieldObject(Serializable *pObject, toml::value *pTomlData, const std::string &sFieldName, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr)ne::SerializableObjectFieldSerializerstatic
sSubEntityFieldNameKeyne::SerializableObjectFieldSerializerinlineprivatestatic
~IFieldSerializer()=default (defined in ne::IFieldSerializer)ne::IFieldSerializervirtual
~SerializableObjectFieldSerializer() override=default (defined in ne::SerializableObjectFieldSerializer)ne::SerializableObjectFieldSerializervirtual
+
+ + + + diff --git a/classne_1_1SerializableObjectFieldSerializer.html b/classne_1_1SerializableObjectFieldSerializer.html new file mode 100644 index 000000000..6c8a2f1eb --- /dev/null +++ b/classne_1_1SerializableObjectFieldSerializer.html @@ -0,0 +1,946 @@ + + + + + + + +Nameless Engine: ne::SerializableObjectFieldSerializer Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <SerializableObjectFieldSerializer.h>

+
+Inheritance diagram for ne::SerializableObjectFieldSerializer:
+
+
+ + +ne::IFieldSerializer + +
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual bool isFieldTypeSupported (const rfk::Field *pField) override
 
virtual std::optional< ErrorserializeField (toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr) override
 
virtual std::optional< ErrordeserializeField (const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes) override
 
virtual std::optional< ErrorcloneField (Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField) override
 
virtual bool isFieldValueEqual (Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB) override
 
virtual bool isFieldTypeSupported (const rfk::Field *pField)=0
 
virtual std::optional< ErrorserializeField (toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr)=0
 
virtual std::optional< ErrordeserializeField (const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes)=0
 
virtual std::optional< ErrorcloneField (Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField)=0
 
virtual bool isFieldValueEqual (Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB)=0
 
+ + + + + + + + + + + + + + + +

+Static Public Member Functions

static std::optional< ErrorserializeFieldObject (Serializable *pObject, toml::value *pTomlData, const std::string &sFieldName, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr)
 
static std::optional< ErrorcloneSerializableObject (Serializable *pFrom, Serializable *pTo, bool bNotifyAboutDeserialized)
 
static std::variant< std::unique_ptr< Serializable >, ErrordeserializeSerializableObject (const toml::value *pTomlDocument, const toml::value *pTomlValue, const std::string &sFieldName, Serializable *pTarget, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes)
 
static bool isSerializableObjectValueEqual (Serializable *pObjectA, Serializable *pObjectB)
 
static bool isTypeDerivesFromSerializable (const std::string &sCanonicalTypeName)
 
static bool isFieldSerializable (rfk::Field const &field)
 
static bool isDerivedFromSerializable (rfk::Archetype const *pArchetype)
 
+ + + +

+Static Private Member Functions

static bool isTypeDerivesFromSerializable (const std::string &sCanonicalTypeName, const rfk::Namespace *pNamespace)
 
+ + + +

+Static Private Attributes

static const auto sSubEntityFieldNameKey = ".field_name"
 
+ + + +

+Friends

+class GameManager
 
+

Detailed Description

+

Serializer for field types that derive from Serializable class.

+

Member Function Documentation

+ +

◆ cloneField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::SerializableObjectFieldSerializer::cloneField (SerializablepFromInstance,
const rfk::Field * pFromField,
SerializablepToInstance,
const rfk::Field * pToField 
)
+
+overridevirtual
+
+

Clones field's data from one object to another.

+
Parameters
+ + + + + +
pFromInstanceInstance to copy the field from.
pFromFieldField to copy.
pToInstanceInstance to copy to.
pToFieldField to copy to.
+
+
+
Returns
Error if something went wrong, empty otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ cloneSerializableObject()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::SerializableObjectFieldSerializer::cloneSerializableObject (SerializablepFrom,
SerializablepTo,
bool bNotifyAboutDeserialized 
)
+
+static
+
+

Clones reflected serializable fields of one object to another.

+
Remarks
This function can be used by other serializers.
+
Parameters
+ + + + +
pFromObject to clone fields from.
pToObject to clone fields to.
bNotifyAboutDeserializedWhether or not to notify the target object we cloned fields to about it being finally deserialized or not. This should be true if you are calling this function as the last step of your deserialize function or in some special cases for new objects that won't reach deserialize function (for ex. when copying data to new object), otherwise false.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ deserializeField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::SerializableObjectFieldSerializer::deserializeField (const toml::value * pTomlDocument,
const toml::value * pTomlValue,
SerializablepFieldOwner,
const rfk::Field * pField,
const std::string & sOwnerSectionName,
const std::string & sEntityId,
std::unordered_map< std::string, std::string > & customAttributes 
)
+
+overridevirtual
+
+

Deserializes field from a TOML value.

+
Parameters
+ + + + + + + + +
pTomlDocumentTOML document that contains a value to deserialize.
pTomlValueTOML value to deserialize the field from.
pFieldOwnerField's owner.
pFieldField to deserialize TOML value to.
sOwnerSectionNameName of the TOML section where is field was found.
sEntityIdCurrent ID string of the entity (field owner) that we are deserializing.
customAttributesPairs of values that were found with this object in TOML data. Only found when deserializing a field of type that derives from Serializable.
+
+
+
Returns
Error if something went wrong, empty otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ deserializeSerializableObject()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< Serializable >, Error > ne::SerializableObjectFieldSerializer::deserializeSerializableObject (const toml::value * pTomlDocument,
const toml::value * pTomlValue,
const std::string & sFieldName,
SerializablepTarget,
const std::string & sOwnerSectionName,
const std::string & sEntityId,
std::unordered_map< std::string, std::string > & customAttributes 
)
+
+static
+
+

Deserializes field's object from a TOML value.

+
Remarks
This function can be used by other serializers.
+
Parameters
+ + + + + + + + +
pTomlDocumentTOML document that contains a value to deserialize.
pTomlValueTOML value to deserialize the field from.
sFieldNameName of the field to deserialize to.
pTargetField's object to deserialize the value to.
sOwnerSectionNameName of the TOML section where is field was found.
sEntityIdCurrent ID string of the entity (field owner) that we are deserializing.
customAttributesPairs of values that were found with this object in TOML data. Only found when deserializing a field of type that derives from Serializable.
+
+
+
Returns
Error if something went wrong, otherwise deserialized object.
+ +
+
+ +

◆ isDerivedFromSerializable()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ne::SerializableObjectFieldSerializer::isDerivedFromSerializable (rfk::Archetype const * pArchetype)
+
+static
+
+

Tests whether the specified archetype is Serializable or derives at some point from Serializable class.

+
Parameters
+ + +
pArchetypeArchetype to test.
+
+
+
Returns
Whether the specified archetype is derived from Serializable or not.
+ +
+
+ +

◆ isFieldSerializable()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ne::SerializableObjectFieldSerializer::isFieldSerializable (rfk::Field const & field)
+
+static
+
+

Returns whether the specified field can be serialized or not.

+
Parameters
+ + +
fieldField to test.
+
+
+
Returns
Whether the field can be serialized or not.
+ +
+
+ +

◆ isFieldTypeSupported()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ne::SerializableObjectFieldSerializer::isFieldTypeSupported (const rfk::Field * pField)
+
+overridevirtual
+
+

Tests if this serializer supports serialization/deserialization of this field.

+
Parameters
+ + +
pFieldField to test for serialization/deserialization support.
+
+
+
Returns
true if this serializer can be used to serialize this field, false otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ isFieldValueEqual()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool ne::SerializableObjectFieldSerializer::isFieldValueEqual (SerializablepFieldAOwner,
const rfk::Field * pFieldA,
SerializablepFieldBOwner,
const rfk::Field * pFieldB 
)
+
+overridevirtual
+
+

Checks if the specified fields' values are equal or not.

+
Parameters
+ + + + + +
pFieldAOwnerOwner of the field A.
pFieldAField A to compare.
pFieldBOwnerOwner of the field B.
pFieldBField B to compare.
+
+
+
Returns
false if some field is unsupported by this serializer or if fields' values are not equal, true otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ isSerializableObjectValueEqual()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool ne::SerializableObjectFieldSerializer::isSerializableObjectValueEqual (SerializablepObjectA,
SerializablepObjectB 
)
+
+static
+
+

Checks if the specified fields' values are equal or not.

+
Remarks
Uses all registered field serializers to compare each field.
+
+This function can be used by other serializers.
+
Parameters
+ + + +
pObjectAObject to compare with B.
pObjectBObject to compare with A.
+
+
+
Returns
false if some field is unsupported by this serializer or if fields' values are not equal, true otherwise.
+ +
+
+ +

◆ isTypeDerivesFromSerializable() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ne::SerializableObjectFieldSerializer::isTypeDerivesFromSerializable (const std::string & sCanonicalTypeName)
+
+static
+
+

Looks if the specified canonical type name derives from Serializable or not.

+
Parameters
+ + +
sCanonicalTypeNameCanonical type name (not just type name, see rfk::Field::getCanonicalTypeName).
+
+
+
Returns
false if the specified type was not found to be derived from Serializable, otherwise true.
+ +
+
+ +

◆ isTypeDerivesFromSerializable() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool ne::SerializableObjectFieldSerializer::isTypeDerivesFromSerializable (const std::string & sCanonicalTypeName,
const rfk::Namespace * pNamespace 
)
+
+staticprivate
+
+

Looks if the specified canonical type name derives from Serializable.

+
Parameters
+ + + +
sCanonicalTypeNameCanonical type name without namespace in the name.
pNamespaceOptional. Namespace that the specified type resides in.
+
+
+
Returns
false if the specified type was not found to be derived from Serializable, otherwise true.
+ +
+
+ +

◆ serializeField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::SerializableObjectFieldSerializer::serializeField (toml::value * pTomlData,
SerializablepFieldOwner,
const rfk::Field * pField,
const std::string & sSectionName,
const std::string & sEntityId,
size_t & iSubEntityId,
SerializablepOriginalObject = nullptr 
)
+
+overridevirtual
+
+

Serializes field into a TOML value.

+
Parameters
+ + + + + + + + +
pTomlDataTOML value to serialize the field to.
pFieldOwnerField's owner.
pFieldField to serialize.
sSectionNameName of the section (for TOML value) to use for this field.
sEntityIdCurrent ID string of the entity (field owner) that we are serializing. Only used when serializing a field of type that derives from Serializable.
iSubEntityIdCurrent ID of the sub entity (sub entity of the field owner). Only used when serializing a field of type that derives from Serializable.
pOriginalObjectOptional. Original object of the same type as the object being serialized, this object is a deserialized version of the object being serialized, used to compare serializable fields' values and only serialize changed values. Only used when serializing a field of type that derives from Serializable.
+
+
+
Returns
Error if something went wrong, empty otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ serializeFieldObject()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::SerializableObjectFieldSerializer::serializeFieldObject (SerializablepObject,
toml::value * pTomlData,
const std::string & sFieldName,
const std::string & sSectionName,
const std::string & sEntityId,
size_t & iSubEntityId,
SerializablepOriginalObject = nullptr 
)
+
+static
+
+

Serializes field's object (serializable object wrapped into a container, such as gc) into a TOML value.

+
Remarks
This function can be used by other serializers.
+
Parameters
+ + + + + + + + +
pObjectObject to serialize.
pTomlDataTOML value to serialize the field to.
sFieldNameName of the field to serialize.
sSectionNameName of the section (for TOML value) to use for this field.
sEntityIdCurrent ID string of the entity (field owner) that we are serializing. Only used when serializing a field of type that derives from Serializable.
iSubEntityIdCurrent ID of the sub entity (sub entity of the field owner). Only used when serializing a field of type that derives from Serializable.
pOriginalObjectOptional. Original object of the same type as the object being serialized, this object is a deserialized version of the object being serialized, used to compare serializable fields' values and only serialize changed values. Only used when serializing a field of type that derives from Serializable.
+
+
+
Returns
Error if something went wrong, empty otherwise.
+ +
+
+

Member Data Documentation

+ +

◆ sSubEntityFieldNameKey

+ +
+
+ + + + + +
+ + + + +
const auto ne::SerializableObjectFieldSerializer::sSubEntityFieldNameKey = ".field_name"
+
+inlinestaticprivate
+
+

Name of the key in which to store name of the field a section represents.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classne_1_1SerializableObjectFieldSerializer.js b/classne_1_1SerializableObjectFieldSerializer.js new file mode 100644 index 000000000..64433d684 --- /dev/null +++ b/classne_1_1SerializableObjectFieldSerializer.js @@ -0,0 +1,17 @@ +var classne_1_1SerializableObjectFieldSerializer = +[ + [ "cloneField", "classne_1_1SerializableObjectFieldSerializer.html#aade78685d1a01e220300e0f3221b4e85", null ], + [ "cloneSerializableObject", "classne_1_1SerializableObjectFieldSerializer.html#a4de4b69ef3d5c2c526d20284af92fa2c", null ], + [ "deserializeField", "classne_1_1SerializableObjectFieldSerializer.html#acd380b1c75bc23c9147292ff6d7992f8", null ], + [ "deserializeSerializableObject", "classne_1_1SerializableObjectFieldSerializer.html#aabceb0f46d2e228aa52452da411985c7", null ], + [ "isDerivedFromSerializable", "classne_1_1SerializableObjectFieldSerializer.html#a1608dcee1d57e8d2950120eaa060ac4b", null ], + [ "isFieldSerializable", "classne_1_1SerializableObjectFieldSerializer.html#a070f38772e32e7ba38fae023791268ef", null ], + [ "isFieldTypeSupported", "classne_1_1SerializableObjectFieldSerializer.html#a1ec9cc957f39f6d171ecaeb990d76474", null ], + [ "isFieldValueEqual", "classne_1_1SerializableObjectFieldSerializer.html#a1e3866f8b86529cd0dac45ce264d4635", null ], + [ "isSerializableObjectValueEqual", "classne_1_1SerializableObjectFieldSerializer.html#aeb49606637b47d3a2fe0747cd98beca9", null ], + [ "isTypeDerivesFromSerializable", "classne_1_1SerializableObjectFieldSerializer.html#a8e712f2c8e7b3ddceb9ed1b8999374db", null ], + [ "isTypeDerivesFromSerializable", "classne_1_1SerializableObjectFieldSerializer.html#a0b843de0c152918239c68497b4170cc2", null ], + [ "serializeField", "classne_1_1SerializableObjectFieldSerializer.html#a3d028fa3ecb3f45b53146487e32ee779", null ], + [ "serializeFieldObject", "classne_1_1SerializableObjectFieldSerializer.html#a9d90acc0ff74cb2ac1e2bceffb6ea01d", null ], + [ "sSubEntityFieldNameKey", "classne_1_1SerializableObjectFieldSerializer.html#a68b44cd006a6b1fc7ed4a8092b3cb59b", null ] +]; \ No newline at end of file diff --git a/classne_1_1SerializableObjectFieldSerializer.png b/classne_1_1SerializableObjectFieldSerializer.png new file mode 100644 index 0000000000000000000000000000000000000000..fbd494b80ea1f01c483353bdb1a8199e2a50a882 GIT binary patch literal 760 zcmVvTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0007m zNkl*b41|Y?RQdiV-ZbUMCQy}aHd>I|Op{^*{xCSN*tTt3QrJjxK{**o z&Lt-!$+>hfS=g`Rb3B&DbbFadmdp6nMw0xc{(y`mjSAWE)Q$c^tnbLeo`K`8(xAv< zit>}8j(whu#xLgFdXVI}z9EZ|l$dHVYl?uGx-*37nmUl=puWnPiNTz+23d+akgR3N z8dj1V)CFX^DpWbkwL}ML=~ZFTe%ga1$8}B4I_J!m4wVvf7Mr=%9wa%gKiG|L&Y31t zs*mbF*^Rcay|0b=eU>X<@k_XpNHrT(+sYRGaSO1EbOZj z*ZABqulw_x{=VjoYnqyprTF9!E7R-t{7KW;ZZE@d2+^*|qF3>cjcU!CKBg%*7oWW4 z8YVr;xiQ8&7DDQvb7t&isYE1HvcvWQtH|D%(xNxKJ`bU?p2 + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::Serialize Member List
+
+
+ +

This is the complete list of members for ne::Serialize, including all inherited members.

+ + + + + + +
getSerializationType() constne::Serialize
serializationTypene::Serializeprivate
Serialize() (defined in ne::Serialize)ne::Serializeinline
Serialize(FieldSerializationType serializationType)ne::Serialize
~Serialize() override=default (defined in ne::Serialize)ne::Serializevirtual
+
+ + + + diff --git a/classne_1_1Serialize.html b/classne_1_1Serialize.html new file mode 100644 index 000000000..03f87729a --- /dev/null +++ b/classne_1_1Serialize.html @@ -0,0 +1,212 @@ + + + + + + + +Nameless Engine: ne::Serialize Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::Serialize Class Reference
+
+
+ +

#include <SerializeProperty.h>

+
+Inheritance diagram for ne::Serialize:
+
+
+ +
+ + + + + + +

+Public Member Functions

 Serialize (FieldSerializationType serializationType)
 
FieldSerializationType getSerializationType () const
 
+ + + +

+Private Attributes

FieldSerializationType serializationType
 
+

Detailed Description

+

Add this property to your reflected field to make it serializable (i.e. it will be serialized and deserialized) when you serialize/deserialize the object.

+

Example:

RPROPERTY(ne::Serialize)
+
int iKey = 42; // will be serialized and deserialized
+
Definition: SerializeProperty.h:42
+

Constructor & Destructor Documentation

+ +

◆ Serialize()

+ +
+
+ + + + + + + + +
ne::Serialize::Serialize (FieldSerializationType serializationType)
+
+

Initializes the property.

+
Parameters
+ + +
serializationTypeDefined how this field should be serialized.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getSerializationType()

+ +
+
+ + + + + + + +
FieldSerializationType ne::Serialize::getSerializationType () const
+
+

Returns how this field should be serialized.

+
Returns
Serialization type.
+ +
+
+

Member Data Documentation

+ +

◆ serializationType

+ +
+
+ + + + + +
+ + + + +
FieldSerializationType ne::Serialize::serializationType
+
+private
+
+

Defines how to serialize this property.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/io/properties/SerializeProperty.h
  • +
  • src/engine_lib/private/io/properties/SerializeProperty.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1Serialize.js b/classne_1_1Serialize.js new file mode 100644 index 000000000..474d546e7 --- /dev/null +++ b/classne_1_1Serialize.js @@ -0,0 +1,6 @@ +var classne_1_1Serialize = +[ + [ "Serialize", "classne_1_1Serialize.html#a52398891b39f15c4969c39ab7a6f1836", null ], + [ "getSerializationType", "classne_1_1Serialize.html#ac4ea052ff89820d1ad8f102f26f57b42", null ], + [ "serializationType", "classne_1_1Serialize.html#a89e5a52f55c77340fa650ef4b844fbab", null ] +]; \ No newline at end of file diff --git a/classne_1_1Serialize.png b/classne_1_1Serialize.png new file mode 100644 index 0000000000000000000000000000000000000000..1b20f9af544048f22cc79ff4141a9c8ba665132a GIT binary patch literal 476 zcmV<20VDp2P)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0004J zNklg*C$k%(W(*{-5tS98@uUNXCge>MS$FI410=LbXamdPQ?VDZ7*1TVD zMke2>hR?9JZy5RNoQy4zkMAGghrDW2R+cljBz20TPRPrTk$pZ)cJ z&(k~~=>i}j{nupwxT&gA^c|##2vq>^nGOKpijO=FI+Kq)iEQQ#_gTXh=CN zRb%6(x_Hi%wX3{b)`Pfh9a$&(Y+bDAyBucxQg%7??oTo?3yR3p8IeOGZn3+Ke&e>8 z%ORdN98MCD^LWOCd!$o9#@n7DLz?Y-*%I$FCHr;aW@a31q?s8<{~0MFLe&onF=3=l SV{`=o0000 + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::Shader Member List
+
+
+ +

This is the complete list of members for ne::Shader, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
checkCachedAdditionalCompilationResultsInfo(ConfigManager &cacheMetadataConfigManager, std::optional< ShaderCacheInvalidationReason > &cacheInvalidationReason)ne::Shaderinlineprotectedvirtual
compileRenderDependentShader(Renderer *pRenderer, const std::filesystem::path &shaderCacheDirectory, const std::string &sConfiguration, const ShaderDescription &shaderDescription)ne::Shaderprivatestatic
compileShader(Renderer *pRenderer, const std::filesystem::path &shaderCacheDirectory, const std::string &sConfiguration, const ShaderDescription &shaderDescription)ne::Shaderstatic
createFromCache(Renderer *pRenderer, const std::filesystem::path &pathToCompiledShaderBytecode, ShaderDescription &shaderDescription, const std::string &sShaderNameWithoutConfiguration, std::optional< ShaderCacheInvalidationReason > &cacheInvalidationReason)ne::Shaderstatic
createRenderDependentShaderFromCache(Renderer *pRenderer, const std::filesystem::path &pathToSourceShaderFile, const std::filesystem::path &pathToCompiledShaderBytecode, const std::string &sShaderName, ShaderType shaderType, std::optional< VertexFormat > vertexFormat)ne::Shaderprivatestatic
getCurrentAmountOfShadersInMemory()ne::Shaderstatic
getFrameConstantsShaderResourceName()ne::Shaderinlinestatic
getPathToCompiledShader()ne::Shaderprotected
getRenderer() constne::Shaderprotected
getShaderName() constne::Shader
getShaderType() constne::Shader
getVertexFormat() constne::Shader
notifyShaderBytecodeLoadedIntoMemory()ne::Shaderprotectedstatic
notifyShaderBytecodeReleasedFromMemory()ne::Shaderprotectedstatic
operator=(const Shader &)=delete (defined in ne::Shader)ne::Shader
optionalVertexFormatne::Shaderprivate
pathToCompiledShaderne::Shaderprivate
pFrameConstantBufferNamene::Shaderprivatestatic
pRendererne::Shaderprivate
releaseShaderDataFromMemoryIfLoaded()=0ne::Shaderpure virtual
saveAdditionalCompilationResultsInfo(ConfigManager &cacheMetadataConfigManager)ne::Shaderinlineprotectedvirtual
sCompiledBytecodeHashKeyNamene::Shaderinlineprivatestatic
Shader()=delete (defined in ne::Shader)ne::Shader
Shader(const Shader &)=delete (defined in ne::Shader)ne::Shader
Shader(Renderer *pRenderer, std::filesystem::path pathToCompiledShader, const std::string &sShaderName, ShaderType shaderType, std::optional< VertexFormat > vertexFormat)ne::Shaderprotected
shaderTypene::Shaderprivate
sShaderNamene::Shaderprivate
~Shader()=default (defined in ne::Shader)ne::Shadervirtual
+
+ + + + diff --git a/classne_1_1Shader.html b/classne_1_1Shader.html new file mode 100644 index 000000000..f2c73ff54 --- /dev/null +++ b/classne_1_1Shader.html @@ -0,0 +1,1028 @@ + + + + + + + +Nameless Engine: ne::Shader Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <Shader.h>

+
+Inheritance diagram for ne::Shader:
+
+
+ + +ne::GlslShader +ne::HlslShader + +
+ + + + + + + + + + + + + + +

+Public Member Functions

Shader (const Shader &)=delete
 
+Shaderoperator= (const Shader &)=delete
 
std::string getShaderName () const
 
ShaderType getShaderType () const
 
std::optional< VertexFormat > getVertexFormat () const
 
virtual bool releaseShaderDataFromMemoryIfLoaded ()=0
 
+ + + + + + + + + +

+Static Public Member Functions

static constexpr const char * getFrameConstantsShaderResourceName ()
 
static size_t getCurrentAmountOfShadersInMemory ()
 
static std::variant< std::shared_ptr< Shader >, std::string, ErrorcompileShader (Renderer *pRenderer, const std::filesystem::path &shaderCacheDirectory, const std::string &sConfiguration, const ShaderDescription &shaderDescription)
 
static std::variant< std::shared_ptr< Shader >, ErrorcreateFromCache (Renderer *pRenderer, const std::filesystem::path &pathToCompiledShaderBytecode, ShaderDescription &shaderDescription, const std::string &sShaderNameWithoutConfiguration, std::optional< ShaderCacheInvalidationReason > &cacheInvalidationReason)
 
+ + + + + + + + + + + +

+Protected Member Functions

 Shader (Renderer *pRenderer, std::filesystem::path pathToCompiledShader, const std::string &sShaderName, ShaderType shaderType, std::optional< VertexFormat > vertexFormat)
 
virtual std::optional< ErrorsaveAdditionalCompilationResultsInfo (ConfigManager &cacheMetadataConfigManager)
 
virtual std::optional< ErrorcheckCachedAdditionalCompilationResultsInfo (ConfigManager &cacheMetadataConfigManager, std::optional< ShaderCacheInvalidationReason > &cacheInvalidationReason)
 
std::variant< std::filesystem::path, ErrorgetPathToCompiledShader ()
 
RenderergetRenderer () const
 
+ + + + + +

+Static Protected Member Functions

static void notifyShaderBytecodeLoadedIntoMemory ()
 
static void notifyShaderBytecodeReleasedFromMemory ()
 
+ + + + + +

+Static Private Member Functions

static std::variant< std::shared_ptr< Shader >, std::string, ErrorcompileRenderDependentShader (Renderer *pRenderer, const std::filesystem::path &shaderCacheDirectory, const std::string &sConfiguration, const ShaderDescription &shaderDescription)
 
static std::variant< std::shared_ptr< Shader >, ErrorcreateRenderDependentShaderFromCache (Renderer *pRenderer, const std::filesystem::path &pathToSourceShaderFile, const std::filesystem::path &pathToCompiledShaderBytecode, const std::string &sShaderName, ShaderType shaderType, std::optional< VertexFormat > vertexFormat)
 
+ + + + + + + + + + + +

+Private Attributes

Renderer *const pRenderer = nullptr
 
const std::optional< VertexFormat > optionalVertexFormat
 
const std::string sShaderName
 
const ShaderType shaderType
 
const std::filesystem::path pathToCompiledShader
 
+ + + + + +

+Static Private Attributes

static const auto sCompiledBytecodeHashKeyName = "compiled_bytecode_hash"
 
static constexpr auto pFrameConstantBufferName = "frameData"
 
+

Detailed Description

+

Base class for different types/formats of shaders to implement.

+

Represents a single compiled shader variant from the ShaderPack.

+

Constructor & Destructor Documentation

+ +

◆ Shader()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ne::Shader::Shader (RendererpRenderer,
std::filesystem::path pathToCompiledShader,
const std::string & sShaderName,
ShaderType shaderType,
std::optional< VertexFormat > vertexFormat 
)
+
+protected
+
+

Constructor.

+
Parameters
+ + + + + + +
pRendererUsed renderer.
pathToCompiledShaderPath to compiled shader bytecode on disk.
sShaderNameUnique name of this shader.
shaderTypeType of this shader.
vertexFormatVertex format that this shader uses (can be empty if not applicable, for example if this is a compute shader).
+
+
+ +
+
+

Member Function Documentation

+ +

◆ checkCachedAdditionalCompilationResultsInfo()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual std::optional< Error > ne::Shader::checkCachedAdditionalCompilationResultsInfo (ConfigManagercacheMetadataConfigManager,
std::optional< ShaderCacheInvalidationReason > & cacheInvalidationReason 
)
+
+inlineprotectedvirtual
+
+

Used to check cached data of shader language specific (additional) shader compilation results (such as reflection data, i.e. if there are some other compilation results besides compiled shader bytecode which is automatically hashed and checked) whether its valid or not.

+
Parameters
+ + + +
cacheMetadataConfigManagerConfig manager to write the data to.
cacheInvalidationReasonWill be not empty if cache was invalidated (i.e. cache can't be used).
+
+
+
Returns
Error if some internal error occurred.
+ +

Reimplemented in ne::GlslShader, and ne::HlslShader.

+ +
+
+ +

◆ compileRenderDependentShader()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::shared_ptr< Shader >, std::string, Error > ne::Shader::compileRenderDependentShader (RendererpRenderer,
const std::filesystem::path & shaderCacheDirectory,
const std::string & sConfiguration,
const ShaderDescriptionshaderDescription 
)
+
+staticprivate
+
+

Compiles a HLSL/GLSL shader depending on the used renderer.

+
Parameters
+ + + + + +
pRendererCurrent renderer.
shaderCacheDirectoryDirectory to store this shader's cache, for example: ".../shader_cache/engine.default".
sConfigurationShader configuration text that will be added to the name.
shaderDescriptionDescription that describes the shader and how the shader should be compiled.
+
+
+
Returns
One of the three values: compiled shader, string containing shader compilation error/warning or an internal error.
+ +
+
+ +

◆ compileShader()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::shared_ptr< Shader >, std::string, Error > ne::Shader::compileShader (RendererpRenderer,
const std::filesystem::path & shaderCacheDirectory,
const std::string & sConfiguration,
const ShaderDescriptionshaderDescription 
)
+
+static
+
+

Compiles a shader.

+
Parameters
+ + + + + +
pRendererCurrent renderer.
shaderCacheDirectoryDirectory to store this shader's cache, for example: ".../shader_cache/engine.default".
sConfigurationShader configuration text that will be added to the name.
shaderDescriptionDescription that describes the shader and how the shader should be compiled.
+
+
+
Returns
One of the three values: compiled shader, string containing shader compilation error/warning or an internal error.
+ +
+
+ +

◆ createFromCache()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::shared_ptr< Shader >, Error > ne::Shader::createFromCache (RendererpRenderer,
const std::filesystem::path & pathToCompiledShaderBytecode,
ShaderDescriptionshaderDescription,
const std::string & sShaderNameWithoutConfiguration,
std::optional< ShaderCacheInvalidationReason > & cacheInvalidationReason 
)
+
+static
+
+

Creates a new shader using shader cache.

+
Parameters
+ + + + + + +
pRendererUsed renderer.
pathToCompiledShaderBytecodePath to compiled shader bytecode on disk (with configuration), for example: ".../shader_cache/engine.default.vs/shader16604691462768904089".
shaderDescriptionDescription that describes the shader and how the shader should be compiled. Used for cache invalidation.
sShaderNameWithoutConfigurationInitial shader name without configuration hash, this name is used for logging.
cacheInvalidationReasonWill be not empty if cache was invalidated (i.e. cache can't be used).
+
+
+
Returns
Error if the shader cache is corrupted/invalidated (cache invalidation reason should have a value and returned Error will contain a full description of this invalidation reason) or there was something wrong while attempting to load the cache, otherwise a shader created using shader cache.
+ +
+
+ +

◆ createRenderDependentShaderFromCache()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::shared_ptr< Shader >, Error > ne::Shader::createRenderDependentShaderFromCache (RendererpRenderer,
const std::filesystem::path & pathToSourceShaderFile,
const std::filesystem::path & pathToCompiledShaderBytecode,
const std::string & sShaderName,
ShaderType shaderType,
std::optional< VertexFormat > vertexFormat 
)
+
+staticprivate
+
+

Creates a new HLSL/GLSL shader depending on the used renderer, expects that all cached shader data is valid.

+
Parameters
+ + + + + + + +
pRendererUsed renderer.
pathToSourceShaderFilePath to shader source code file.
pathToCompiledShaderBytecodePath to compiled shader bytecode on disk.
sShaderNameUnique name of this shader.
shaderTypeType of this shader.
vertexFormatCan be empty if non applicable (for example if this shader is a compute shader).
+
+
+
Returns
Error if something went wrong, otherwise created shader.
+ +
+
+ +

◆ getCurrentAmountOfShadersInMemory()

+ +
+
+ + + + + +
+ + + + + + + +
size_t ne::Shader::getCurrentAmountOfShadersInMemory ()
+
+static
+
+

Returns the current amount shaders (vertex, pixel, etc.) loaded into the memory (RAM/VRAM).

+
Returns
Current amount of shaders loaded into the memory (RAM/VRAM).
+ +
+
+ +

◆ getFrameConstantsShaderResourceName()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr const char * ne::Shader::getFrameConstantsShaderResourceName ()
+
+inlinestaticconstexpr
+
+

Returns name of the shader resource that stores frame-global constants.

+
Returns
Shader resource name.
+ +
+
+ +

◆ getPathToCompiledShader()

+ +
+
+ + + + + +
+ + + + + + + +
std::variant< std::filesystem::path, Error > ne::Shader::getPathToCompiledShader ()
+
+protected
+
+

Returns path to compiled shader blob on disk.

+
Returns
Error if the compiled shader does not exist, otherwise path to compiled shader.
+ +
+
+ +

◆ getRenderer()

+ +
+
+ + + + + +
+ + + + + + + +
Renderer * ne::Shader::getRenderer () const
+
+protected
+
+

Returns renderer.

+
Returns
renderer.
+ +
+
+ +

◆ getShaderName()

+ +
+
+ + + + + + + +
std::string ne::Shader::getShaderName () const
+
+

Returns unique name of this shader.

+
Returns
Unique name of this shader.
+ +
+
+ +

◆ getShaderType()

+ +
+
+ + + + + + + +
ShaderType ne::Shader::getShaderType () const
+
+

Returns type of this shader.

+
Returns
Shader type.
+ +
+
+ +

◆ getVertexFormat()

+ +
+
+ + + + + + + +
std::optional< VertexFormat > ne::Shader::getVertexFormat () const
+
+

Returns vertex format used by this shader.

+
Returns
Empty if not applicable (for example if this shader is a compute shader), otherwise used vertex format.
+ +
+
+ +

◆ notifyShaderBytecodeLoadedIntoMemory()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Shader::notifyShaderBytecodeLoadedIntoMemory ()
+
+staticprotected
+
+

Derived shader classes should call this function once they load shader bytecode into the memory from the disk.

+ +
+
+ +

◆ notifyShaderBytecodeReleasedFromMemory()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Shader::notifyShaderBytecodeReleasedFromMemory ()
+
+staticprotected
+
+

Derived shader classes should call this function once they release shader bytecode from the memory.

+ +
+
+ +

◆ releaseShaderDataFromMemoryIfLoaded()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool ne::Shader::releaseShaderDataFromMemoryIfLoaded ()
+
+pure virtual
+
+

Releases underlying shader bytecode for each shader from memory (this object will not be deleted) if the shader bytecode was loaded into memory. Next time this shader will be needed it will be loaded from disk.

+
Returns
false if was released from memory, true if was not loaded in memory previously.
+ +

Implemented in ne::GlslShader, and ne::HlslShader.

+ +
+
+ +

◆ saveAdditionalCompilationResultsInfo()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual std::optional< Error > ne::Shader::saveAdditionalCompilationResultsInfo (ConfigManagercacheMetadataConfigManager)
+
+inlineprotectedvirtual
+
+

Used to save data of shader language specific (additional) shader compilation results (such as reflection data, i.e. if there are some other compilation results besides compiled shader bytecode which is automatically hashed and checked) to later check them in checkCachedAdditionalCompilationResultsInfo.

+
Parameters
+ + +
cacheMetadataConfigManagerConfig manager to write the data to.
+
+
+
Returns
Error if something went wrong.
+ +

Reimplemented in ne::GlslShader, and ne::HlslShader.

+ +
+
+

Member Data Documentation

+ +

◆ optionalVertexFormat

+ +
+
+ + + + + +
+ + + + +
const std::optional<VertexFormat> ne::Shader::optionalVertexFormat
+
+private
+
+

Vertex format that this shader uses.

+
Remarks
Can be empty if non applicable (for example if this shader is a compute shader).
+ +
+
+ +

◆ pathToCompiledShader

+ +
+
+ + + + + +
+ + + + +
const std::filesystem::path ne::Shader::pathToCompiledShader
+
+private
+
+

Path to compiled shader.

+ +
+
+ +

◆ pFrameConstantBufferName

+ +
+
+ + + + + +
+ + + + +
constexpr auto ne::Shader::pFrameConstantBufferName = "frameData"
+
+staticconstexprprivate
+
+

Name of the cbuffer/uniform resource used to store frame data in shaders.

+ +
+
+ +

◆ pRenderer

+ +
+
+ + + + + +
+ + + + +
Renderer* const ne::Shader::pRenderer = nullptr
+
+private
+
+

Do not delete. Used renderer.

+ +
+
+ +

◆ sCompiledBytecodeHashKeyName

+ +
+
+ + + + + +
+ + + + +
const auto ne::Shader::sCompiledBytecodeHashKeyName = "compiled_bytecode_hash"
+
+inlinestaticprivate
+
+

Name of the key used to store compiled bytecode hash in the metadata file.

+ +
+
+ +

◆ shaderType

+ +
+
+ + + + + +
+ + + + +
const ShaderType ne::Shader::shaderType
+
+private
+
+

Type of this shader.

+ +
+
+ +

◆ sShaderName

+ +
+
+ + + + + +
+ + + + +
const std::string ne::Shader::sShaderName
+
+private
+
+

Unique shader name received from ShaderManager.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/general/Shader.h
  • +
  • src/engine_lib/private/shader/general/Shader.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1Shader.js b/classne_1_1Shader.js new file mode 100644 index 000000000..c5692bc27 --- /dev/null +++ b/classne_1_1Shader.js @@ -0,0 +1,27 @@ +var classne_1_1Shader = +[ + [ "Shader", "classne_1_1Shader.html#a636024292405941806fc15521ce9b287", null ], + [ "checkCachedAdditionalCompilationResultsInfo", "classne_1_1Shader.html#a11818ca25d7c8c0fd54106974986ea5e", null ], + [ "compileRenderDependentShader", "classne_1_1Shader.html#aa27ff6aa3242003827ec215977a14125", null ], + [ "compileShader", "classne_1_1Shader.html#a1ed2a99d9fbcba50b665c59e39e67e38", null ], + [ "createFromCache", "classne_1_1Shader.html#ac8556a2d59aac40ce122be453611608c", null ], + [ "createRenderDependentShaderFromCache", "classne_1_1Shader.html#aee13925a6c8f208f9adab11fc710ff35", null ], + [ "getCurrentAmountOfShadersInMemory", "classne_1_1Shader.html#a98489a6ee5b3cdede368328501da1eda", null ], + [ "getFrameConstantsShaderResourceName", "classne_1_1Shader.html#a90155a175ff12db3d1a4a56b3fee662e", null ], + [ "getPathToCompiledShader", "classne_1_1Shader.html#ac75f07c83fa4d33247354653b9e05640", null ], + [ "getRenderer", "classne_1_1Shader.html#a210613fe5a5262b52dec7fad1b6335e9", null ], + [ "getShaderName", "classne_1_1Shader.html#a61ec6ae20ef30b58a0fb2b975dbc73ba", null ], + [ "getShaderType", "classne_1_1Shader.html#a3ffa1bc747721fd8c0f7ff04fd85a6ea", null ], + [ "getVertexFormat", "classne_1_1Shader.html#a0ccf42ee5ff6e2b432f46316c231860c", null ], + [ "notifyShaderBytecodeLoadedIntoMemory", "classne_1_1Shader.html#ad1f2db6459f9b9c7adf6a2b09938d7e9", null ], + [ "notifyShaderBytecodeReleasedFromMemory", "classne_1_1Shader.html#a7919d112571cf03c409fa713a741192a", null ], + [ "releaseShaderDataFromMemoryIfLoaded", "classne_1_1Shader.html#a129137959e2dd2f04911aa4985b56a13", null ], + [ "saveAdditionalCompilationResultsInfo", "classne_1_1Shader.html#a6fb50e7c63a8fb2f2b599441dcb414e8", null ], + [ "optionalVertexFormat", "classne_1_1Shader.html#a16d650cdfd0c3d2c8bc3e3bbb6eb7163", null ], + [ "pathToCompiledShader", "classne_1_1Shader.html#a71aa98f2359111db49af5d06c87a0340", null ], + [ "pFrameConstantBufferName", "classne_1_1Shader.html#a67bba3bc4576c51b1d7fa87c58e3588c", null ], + [ "pRenderer", "classne_1_1Shader.html#ad47865f8c80247a067a5faa0f7d18438", null ], + [ "sCompiledBytecodeHashKeyName", "classne_1_1Shader.html#a840aa620bd658b9716fd1f500e7d787c", null ], + [ "shaderType", "classne_1_1Shader.html#a330a0ab1cb0f458dc2dec50bbb978dd7", null ], + [ "sShaderName", "classne_1_1Shader.html#a9ea3663fd2e444e970fa115805aff102", null ] +]; \ No newline at end of file diff --git a/classne_1_1Shader.png b/classne_1_1Shader.png new file mode 100644 index 0000000000000000000000000000000000000000..ad7fc1dd45402103cca8ecbc7827f9a0ee849a82 GIT binary patch literal 676 zcmeAS@N?(olHy`uVBq!ia0vp^$ACD1gBeJcR{b&rQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#NuJJzX3_Dj46+eLd-wf&km> z{#94@{1=|TLy>Fep~AcAW$1f2)c4;|h#NQi7H-G$P>b`Po*)PxDm9H{+&)#2_ z_d0$3wL8ma-#k&Dl{o#rPEOd~-xoc0@2dEqRb$3meBRFV+qNIij-ShWpA+~tOQibn znKe(In_l|)`Oc%G_bRribv{~RWUT$6zOaEU=J1&}64x0r4w#-f(^tsb!1ivDpcBV* z#tX{K2i`xIlR8|$-Cv#2BUb)lM`zpo5Qe`Gq!{)h;cx?N zxA6Vd$VpzWOqMl1{@QEfE)~x#_Avar-ldE)lMl6Dw7Xh=w_eLnvdl1H&oZH9?bcGi zD}&zrKV#fJ-)&#gn(oQZZ%Td0I$OKVr0g?`X1)2d$}r9Mv1=|Eg@$d|nLcqT$3|0W z>B?o-qbtQ8UOskf{u|c=TZF|ApEuoSeSVi$b+o?r^;LSSSz`^Q@6URkuxb8P&Y*wy z`l8p|+~&GD7T-pZ?_j|7g+|KA^X* z?r2k)3-nq@Z??xJN%<>4kDoqalGO9j=pW;Mj^s_(KZ}+F(-VWItDnm{r-UW|H(f@$ literal 0 HcmV?d00001 diff --git a/classne_1_1ShaderArrayIndex-members.html b/classne_1_1ShaderArrayIndex-members.html new file mode 100644 index 000000000..04e8506a2 --- /dev/null +++ b/classne_1_1ShaderArrayIndex-members.html @@ -0,0 +1,121 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ShaderArrayIndex Member List
+
+
+ +

This is the complete list of members for ne::ShaderArrayIndex, including all inherited members.

+ + + + + + + + + + + + +
getActualIndex() constne::ShaderArrayIndex
iIndexIntoShaderArrayne::ShaderArrayIndexprivate
operator=(const ShaderArrayIndex &)=delete (defined in ne::ShaderArrayIndex)ne::ShaderArrayIndex
operator=(ShaderArrayIndex &&)=delete (defined in ne::ShaderArrayIndex)ne::ShaderArrayIndex
pManagerne::ShaderArrayIndexprivate
ShaderArrayIndex()=delete (defined in ne::ShaderArrayIndex)ne::ShaderArrayIndex
ShaderArrayIndex(const ShaderArrayIndex &)=delete (defined in ne::ShaderArrayIndex)ne::ShaderArrayIndex
ShaderArrayIndex(ShaderArrayIndex &&)=delete (defined in ne::ShaderArrayIndex)ne::ShaderArrayIndex
ShaderArrayIndex(ShaderArrayIndexManager *pManager, unsigned int iIndexIntoShaderArray)ne::ShaderArrayIndexprivate
ShaderArrayIndexManagerne::ShaderArrayIndexfriend
~ShaderArrayIndex()ne::ShaderArrayIndex
+
+ + + + diff --git a/classne_1_1ShaderArrayIndex.html b/classne_1_1ShaderArrayIndex.html new file mode 100644 index 000000000..f97f37b66 --- /dev/null +++ b/classne_1_1ShaderArrayIndex.html @@ -0,0 +1,313 @@ + + + + + + + +Nameless Engine: ne::ShaderArrayIndex Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::ShaderArrayIndex Class Reference
+
+
+ +

#include <ShaderArrayIndexManager.h>

+ + + + + + + + + + + + + + +

+Public Member Functions

ShaderArrayIndex (const ShaderArrayIndex &)=delete
 
+ShaderArrayIndexoperator= (const ShaderArrayIndex &)=delete
 
ShaderArrayIndex (ShaderArrayIndex &&)=delete
 
+ShaderArrayIndexoperator= (ShaderArrayIndex &&)=delete
 
unsigned int getActualIndex () const
 
 ~ShaderArrayIndex ()
 
+ + + +

+Private Member Functions

 ShaderArrayIndex (ShaderArrayIndexManager *pManager, unsigned int iIndexIntoShaderArray)
 
+ + + + + +

+Private Attributes

ShaderArrayIndexManagerpManager = nullptr
 
unsigned int iIndexIntoShaderArray
 
+ + + +

+Friends

class ShaderArrayIndexManager
 
+

Detailed Description

+

RAII-style class that holds an index into a shader array and marks it as unused in destructor so that other shader resources can use it later.

+

Constructor & Destructor Documentation

+ +

◆ ~ShaderArrayIndex()

+ +
+
+ + + + + + + +
ne::ShaderArrayIndex::~ShaderArrayIndex ()
+
+

Notifies the manager (that created this index) about index no longer being used.

+ +
+
+ +

◆ ShaderArrayIndex()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ne::ShaderArrayIndex::ShaderArrayIndex (ShaderArrayIndexManagerpManager,
unsigned int iIndexIntoShaderArray 
)
+
+private
+
+

Constructs a new array index.

+
Parameters
+ + + +
pManagerManager that created this index.
iIndexIntoShaderArrayActual index into a shader array.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getActualIndex()

+ +
+
+ + + + + + + +
unsigned int ne::ShaderArrayIndex::getActualIndex () const
+
+

Returns an actual index into the shader array.

+
Returns
Index into the shader array.
+ +
+
+

Friends And Related Function Documentation

+ +

◆ ShaderArrayIndexManager

+ +
+
+ + + + + +
+ + + + +
friend class ShaderArrayIndexManager
+
+friend
+
+

Only index manager can created indices.

+ +
+
+

Member Data Documentation

+ +

◆ iIndexIntoShaderArray

+ +
+
+ + + + + +
+ + + + +
unsigned int ne::ShaderArrayIndex::iIndexIntoShaderArray
+
+private
+
+

Actual index into a shader array.

+ +
+
+ +

◆ pManager

+ +
+
+ + + + + +
+ + + + +
ShaderArrayIndexManager* ne::ShaderArrayIndex::pManager = nullptr
+
+private
+
+

Manager that created this index.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/general/resource/ShaderArrayIndexManager.h
  • +
  • src/engine_lib/private/shader/general/resource/ShaderArrayIndexManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ShaderArrayIndex.js b/classne_1_1ShaderArrayIndex.js new file mode 100644 index 000000000..bb895650e --- /dev/null +++ b/classne_1_1ShaderArrayIndex.js @@ -0,0 +1,9 @@ +var classne_1_1ShaderArrayIndex = +[ + [ "~ShaderArrayIndex", "classne_1_1ShaderArrayIndex.html#a037772a8c435ea927c131956af466e43", null ], + [ "ShaderArrayIndex", "classne_1_1ShaderArrayIndex.html#a121d1c966c6d5f1f0df78386b996b7e6", null ], + [ "getActualIndex", "classne_1_1ShaderArrayIndex.html#a02149f17e195a983700f0904a439caf3", null ], + [ "ShaderArrayIndexManager", "classne_1_1ShaderArrayIndex.html#a62a2c2b3a9c83678fa0df2b314424763", null ], + [ "iIndexIntoShaderArray", "classne_1_1ShaderArrayIndex.html#a5f617e253d427fb61d1efa7eb20c992c", null ], + [ "pManager", "classne_1_1ShaderArrayIndex.html#a5bd72a621befac7330bfe7727f43cac1", null ] +]; \ No newline at end of file diff --git a/classne_1_1ShaderArrayIndexManager-members.html b/classne_1_1ShaderArrayIndexManager-members.html new file mode 100644 index 000000000..8cdd80ff6 --- /dev/null +++ b/classne_1_1ShaderArrayIndexManager-members.html @@ -0,0 +1,119 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ShaderArrayIndexManager Member List
+
+
+ +

This is the complete list of members for ne::ShaderArrayIndexManager, including all inherited members.

+ + + + + + + + + + +
iArraySizene::ShaderArrayIndexManagerprivate
mtxDatane::ShaderArrayIndexManagerprivate
onIndexNoLongerUsed(unsigned int iIndex)ne::ShaderArrayIndexManagerprivate
reserveIndex()ne::ShaderArrayIndexManager
ShaderArrayIndex (defined in ne::ShaderArrayIndexManager)ne::ShaderArrayIndexManagerfriend
ShaderArrayIndexManager()=delete (defined in ne::ShaderArrayIndexManager)ne::ShaderArrayIndexManager
ShaderArrayIndexManager(const std::string &sName, unsigned int iArraySize)ne::ShaderArrayIndexManager
sNamene::ShaderArrayIndexManagerprivate
~ShaderArrayIndexManager()ne::ShaderArrayIndexManager
+
+ + + + diff --git a/classne_1_1ShaderArrayIndexManager.html b/classne_1_1ShaderArrayIndexManager.html new file mode 100644 index 000000000..b61c4ac62 --- /dev/null +++ b/classne_1_1ShaderArrayIndexManager.html @@ -0,0 +1,337 @@ + + + + + + + +Nameless Engine: ne::ShaderArrayIndexManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::ShaderArrayIndexManager Class Reference
+
+
+ +

#include <ShaderArrayIndexManager.h>

+ + + + +

+Classes

struct  InternalData
 
+ + + + + + + +

+Public Member Functions

 ShaderArrayIndexManager (const std::string &sName, unsigned int iArraySize)
 
 ~ShaderArrayIndexManager ()
 
std::unique_ptr< ShaderArrayIndexreserveIndex ()
 
+ + + +

+Private Member Functions

void onIndexNoLongerUsed (unsigned int iIndex)
 
+ + + + + + + +

+Private Attributes

std::pair< std::recursive_mutex, InternalDatamtxData
 
const unsigned int iArraySize = 0
 
const std::string sName
 
+ + + +

+Friends

+class ShaderArrayIndex
 
+

Detailed Description

+

Controls and provides indices into shader arrays (defined in shaders).

+
Remarks
If you need to bind something to a specific descriptor in a shader array this manager can give you an index to a descriptor (in the array) that you can use.
+

Constructor & Destructor Documentation

+ +

◆ ShaderArrayIndexManager()

+ +
+
+ + + + + + + + + + + + + + + + + + +
ne::ShaderArrayIndexManager::ShaderArrayIndexManager (const std::string & sName,
unsigned int iArraySize 
)
+
+

Constructs a new index manager.

+
Parameters
+ + + +
sNameName of the manager (used for logging). It's recommended to not only specify the shader resource name (that this manager is handling) but also some additional information if possible.
iArraySizeSpecified to mark the maximum possible number of elements in the array, if reached a warning will be logged.
+
+
+ +
+
+ +

◆ ~ShaderArrayIndexManager()

+ +
+
+ + + + + + + +
ne::ShaderArrayIndexManager::~ShaderArrayIndexManager ()
+
+

Makes sure there are no active indices in use.

+ +
+
+

Member Function Documentation

+ +

◆ onIndexNoLongerUsed()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::ShaderArrayIndexManager::onIndexNoLongerUsed (unsigned int iIndex)
+
+private
+
+

Called by index objects in their destructor to notify that an index is no longer used.

+
Parameters
+ + +
iIndexIndex that's no longer being used.
+
+
+ +
+
+ +

◆ reserveIndex()

+ +
+
+ + + + + + + +
std::unique_ptr< ShaderArrayIndex > ne::ShaderArrayIndexManager::reserveIndex ()
+
+

Returns a new (unused) index into the shader array that this manager is handling.

+
Returns
New index.
+ +
+
+

Member Data Documentation

+ +

◆ iArraySize

+ +
+
+ + + + + +
+ + + + +
const unsigned int ne::ShaderArrayIndexManager::iArraySize = 0
+
+private
+
+

Optional parameter that could be specified during creation to mark the maximum possible number of elements in the array.

+ +
+
+ +

◆ mtxData

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, InternalData> ne::ShaderArrayIndexManager::mtxData
+
+private
+
+

Internal data.

+ +
+
+ +

◆ sName

+ +
+
+ + + + + +
+ + + + +
const std::string ne::ShaderArrayIndexManager::sName
+
+private
+
+

Name of the manager (used for logging).

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/general/resource/ShaderArrayIndexManager.h
  • +
  • src/engine_lib/private/shader/general/resource/ShaderArrayIndexManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ShaderArrayIndexManager.js b/classne_1_1ShaderArrayIndexManager.js new file mode 100644 index 000000000..144354939 --- /dev/null +++ b/classne_1_1ShaderArrayIndexManager.js @@ -0,0 +1,11 @@ +var classne_1_1ShaderArrayIndexManager = +[ + [ "InternalData", "structne_1_1ShaderArrayIndexManager_1_1InternalData.html", "structne_1_1ShaderArrayIndexManager_1_1InternalData" ], + [ "ShaderArrayIndexManager", "classne_1_1ShaderArrayIndexManager.html#a5a424260884f301156e09359e65902ec", null ], + [ "~ShaderArrayIndexManager", "classne_1_1ShaderArrayIndexManager.html#ac471051864cae59ce7f16fc7c56c7313", null ], + [ "onIndexNoLongerUsed", "classne_1_1ShaderArrayIndexManager.html#afde4c4dbea1109ddd21798382e0d0986", null ], + [ "reserveIndex", "classne_1_1ShaderArrayIndexManager.html#ad6cb66b311cee6e85d8ffc7089a38c1b", null ], + [ "iArraySize", "classne_1_1ShaderArrayIndexManager.html#a80cfc493b356e321d6d25dbf64f65f93", null ], + [ "mtxData", "classne_1_1ShaderArrayIndexManager.html#a5e8515cc71bac8b449dcac6ecd4e4f53", null ], + [ "sName", "classne_1_1ShaderArrayIndexManager.html#a70df4c78228287b39a5a43fc1c913c05", null ] +]; \ No newline at end of file diff --git a/classne_1_1ShaderCacheManager-members.html b/classne_1_1ShaderCacheManager-members.html new file mode 100644 index 000000000..4a2064b01 --- /dev/null +++ b/classne_1_1ShaderCacheManager-members.html @@ -0,0 +1,124 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ShaderCacheManager Member List
+
+
+ +

This is the complete list of members for ne::ShaderCacheManager, including all inherited members.

+ + + + + + + + + + + + + + + +
create(Renderer *pRenderer)ne::ShaderCacheManagerprivatestatic
createNewShaderCache()ne::ShaderCacheManagerprivate
isGlobalShaderCacheOutdated(const ConfigManager &cacheConfig)ne::ShaderCacheManagerprivate
isLanguageSpecificGlobalCacheOutdated(const ConfigManager &cacheConfig)=0ne::ShaderCacheManagerprotectedpure virtual
operator=(const ShaderCacheManager &)=delete (defined in ne::ShaderCacheManager)ne::ShaderCacheManager
pRendererne::ShaderCacheManagerprivate
refreshShaderCache()ne::ShaderCacheManager
sGlobalShaderCacheInfoFileNamene::ShaderCacheManagerprivatestatic
ShaderCacheManager()=delete (defined in ne::ShaderCacheManager)ne::ShaderCacheManager
ShaderCacheManager(const ShaderCacheManager &)=delete (defined in ne::ShaderCacheManager)ne::ShaderCacheManager
ShaderCacheManager(Renderer *pRenderer)ne::ShaderCacheManagerprotected
ShaderManager (defined in ne::ShaderCacheManager)ne::ShaderCacheManagerfriend
writeLanguageSpecificParameters(ConfigManager &cacheConfig)=0ne::ShaderCacheManagerprotectedpure virtual
~ShaderCacheManager()=default (defined in ne::ShaderCacheManager)ne::ShaderCacheManagervirtual
+
+ + + + diff --git a/classne_1_1ShaderCacheManager.html b/classne_1_1ShaderCacheManager.html new file mode 100644 index 000000000..e7d0057fd --- /dev/null +++ b/classne_1_1ShaderCacheManager.html @@ -0,0 +1,460 @@ + + + + + + + +Nameless Engine: ne::ShaderCacheManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <ShaderCacheManager.h>

+
+Inheritance diagram for ne::ShaderCacheManager:
+
+
+ + +ne::GlslShaderCacheManager +ne::HlslShaderCacheManager + +
+ + + + +

+Classes

struct  GlobalShaderCacheParameterNames
 
+ + + + + + + +

+Public Member Functions

ShaderCacheManager (const ShaderCacheManager &)=delete
 
+ShaderCacheManageroperator= (const ShaderCacheManager &)=delete
 
std::optional< ErrorrefreshShaderCache ()
 
+ + + + + + + +

+Protected Member Functions

 ShaderCacheManager (Renderer *pRenderer)
 
virtual std::optional< std::string > isLanguageSpecificGlobalCacheOutdated (const ConfigManager &cacheConfig)=0
 
virtual std::optional< ErrorwriteLanguageSpecificParameters (ConfigManager &cacheConfig)=0
 
+ + + + + +

+Private Member Functions

std::optional< ErrorcreateNewShaderCache ()
 
std::optional< std::string > isGlobalShaderCacheOutdated (const ConfigManager &cacheConfig)
 
+ + + +

+Static Private Member Functions

static std::unique_ptr< ShaderCacheManagercreate (Renderer *pRenderer)
 
+ + + +

+Private Attributes

Renderer *const pRenderer = nullptr
 
+ + + +

+Static Private Attributes

static constexpr std::string_view sGlobalShaderCacheInfoFileName = ".shader_cache.toml"
 
+ + + +

+Friends

+class ShaderManager
 
+

Detailed Description

+

Responsible for validating shader cache, reading and updating the cache.

+

Constructor & Destructor Documentation

+ +

◆ ShaderCacheManager()

+ +
+
+ + + + + +
+ + + + + + + + +
ne::ShaderCacheManager::ShaderCacheManager (RendererpRenderer)
+
+protected
+
+

Only used internally, use create to create objects of this type.

+
Parameters
+ + +
pRendererUsed renderer.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + +
std::unique_ptr< ShaderCacheManager > ne::ShaderCacheManager::create (RendererpRenderer)
+
+staticprivate
+
+

Creates a new render-specific cache manager.

+
Parameters
+ + +
pRendererUsed renderer.
+
+
+
Returns
Cache manager.
+ +
+
+ +

◆ createNewShaderCache()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::ShaderCacheManager::createNewShaderCache ()
+
+private
+
+

Deletes the current shader cache directory (if exists) and creates a new one with a new config that stores renderer's parameters.

+
Returns
Error if something went wrong.
+ +
+
+ +

◆ isGlobalShaderCacheOutdated()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< std::string > ne::ShaderCacheManager::isGlobalShaderCacheOutdated (const ConfigManagercacheConfig)
+
+private
+
+

Makes sure that the cache was generated using the same parameters as the current renderer's state and that the cache can be safely used.

+
Parameters
+ + +
cacheConfigConfig that stores global cache parameters.
+
+
+
Returns
Empty if cache can be safely used, otherwise reason why it's outdated and cache can't be used.
+ +
+
+ +

◆ isLanguageSpecificGlobalCacheOutdated()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual std::optional< std::string > ne::ShaderCacheManager::isLanguageSpecificGlobalCacheOutdated (const ConfigManagercacheConfig)
+
+protectedpure virtual
+
+

Makes sure that the cache was generated using the same parameters as the current renderer's state and that the cache can be safely used. This function checks shader language specific parameters that might have changed.

+
Parameters
+ + +
cacheConfigConfig that stores global cache parameters.
+
+
+
Returns
Empty if cache can be safely used, otherwise reason why it's outdated and cache can't be used.
+ +

Implemented in ne::GlslShaderCacheManager, and ne::HlslShaderCacheManager.

+ +
+
+ +

◆ refreshShaderCache()

+ +
+
+ + + + + + + +
std::optional< Error > ne::ShaderCacheManager::refreshShaderCache ()
+
+

Checks if any of the global shader cache parameters changed (such as build mode, shader model, etc.). If changed deletes the whole shader cache directory (including caches of previously compiled shaders) and creates a fresh new shader cache directory with up to date global parameters file.

+
Remarks
If no global shader cache metadata file existed it will create it.
+
Returns
An error if something went wrong.
+ +
+
+ +

◆ writeLanguageSpecificParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual std::optional< Error > ne::ShaderCacheManager::writeLanguageSpecificParameters (ConfigManagercacheConfig)
+
+protectedpure virtual
+
+

Writes shader language specific parameters that affect shader cache into the specified config.

+
Parameters
+ + +
cacheConfigConfig that stores global cache parameters.
+
+
+
Returns
Error if something went wrong.
+ +

Implemented in ne::GlslShaderCacheManager, and ne::HlslShaderCacheManager.

+ +
+
+

Member Data Documentation

+ +

◆ pRenderer

+ +
+
+ + + + + +
+ + + + +
Renderer* const ne::ShaderCacheManager::pRenderer = nullptr
+
+private
+
+

Used renderer.

+ +
+
+ +

◆ sGlobalShaderCacheInfoFileName

+ +
+
+ + + + + +
+ + + + +
constexpr std::string_view ne::ShaderCacheManager::sGlobalShaderCacheInfoFileName = ".shader_cache.toml"
+
+staticconstexprprivate
+
+

Name of the file used to store global shader cache information. Global shader cache information is used to determine if the shader cache is valid or not (needs to be recompiled or not).

+

Starts with a dot on purpose (because no shader can start with a dot - reserved for internal use).

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/general/cache/ShaderCacheManager.h
  • +
  • src/engine_lib/private/shader/general/cache/ShaderCacheManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ShaderCacheManager.js b/classne_1_1ShaderCacheManager.js new file mode 100644 index 000000000..81e63d9c7 --- /dev/null +++ b/classne_1_1ShaderCacheManager.js @@ -0,0 +1,13 @@ +var classne_1_1ShaderCacheManager = +[ + [ "GlobalShaderCacheParameterNames", "structne_1_1ShaderCacheManager_1_1GlobalShaderCacheParameterNames.html", "structne_1_1ShaderCacheManager_1_1GlobalShaderCacheParameterNames" ], + [ "ShaderCacheManager", "classne_1_1ShaderCacheManager.html#a0b053d2a069dcbdf7dd7c16358eaa517", null ], + [ "create", "classne_1_1ShaderCacheManager.html#a88eaa115dda2f124d317150bbbe3ef62", null ], + [ "createNewShaderCache", "classne_1_1ShaderCacheManager.html#a751381c8f07c63b5adbdfaa1c21ddbe2", null ], + [ "isGlobalShaderCacheOutdated", "classne_1_1ShaderCacheManager.html#ab660f563940cac6e8c55ff17cd82fa96", null ], + [ "isLanguageSpecificGlobalCacheOutdated", "classne_1_1ShaderCacheManager.html#a0397467d494307953652bbb3bc032b1c", null ], + [ "refreshShaderCache", "classne_1_1ShaderCacheManager.html#a6d89f494055e8d601df024a240068af1", null ], + [ "writeLanguageSpecificParameters", "classne_1_1ShaderCacheManager.html#a0157bf45305829fa4b3aacb9fae473c7", null ], + [ "pRenderer", "classne_1_1ShaderCacheManager.html#af3a1bec0d912cca3640ea16616c315c0", null ], + [ "sGlobalShaderCacheInfoFileName", "classne_1_1ShaderCacheManager.html#a7a923af976c2986159f70546b24faa79", null ] +]; \ No newline at end of file diff --git a/classne_1_1ShaderCacheManager.png b/classne_1_1ShaderCacheManager.png new file mode 100644 index 0000000000000000000000000000000000000000..d1b67098a8602100204002728c59efbf59a6d351 GIT binary patch literal 1040 zcmeAS@N?(olHy`uVBq!ia0y~yU@QZ&12~w0q!rV;6F^Ejz$e7@|Ns9$=8HF9OZyKk zw=mEwkeGhv#eo9{fa1ZEF0TN}ah3%61v3EoU|`NP`w9aC^K4HS$B+ufw{zc4+PsI4 zW%fcX)9>|1)n|W5l(wF2_0^3(W$IT4o=rx#Pdw5;;BM-Bxx|(+CTenSyl>~-ZHK4c z$hD4vGwNA?m;C=TCujGiho^)xcT0SoTKet3{YU$zzk((9fBI^Bx5W0a{Vu*$X|wHb z-#&rgTRv#4E?a;8)xEzzZZMyI^D#W+Z{4cvQ*Ts%x30{c{#bgW{pzZhny5hd#H=qYq2Ybf4A@1cKYMgt8q#ztep!tE(%$BW()iGjn`)$18M8tD1Wavlu_*I z4!3I^-zGSpoBBubvc>whMK$GH%i~wx4c@q6`cs4Gjr_u9Am#lgGZnwB3b|k9@U`jU z%L&)Z4EKruJ};-AaHaN1`nQ(N?s^s1?rmw^@_N?vgUWAu_iX$AvGqpo@B6Q}u04`> z`~OC^xvCp)e`DWTB7Xaw_Qu;~JA`)UwxcrkG5j|1z5JAA0+Yonwh2rfAxZ2V*WOOM z!`L+S2IHdA<@4?^CIMOh8ilMJb_iJ$!Ur6;-+o(`$r$4wzW&$|K7n=QVEdP#zHny0xcGI4kL{>j_>Yv0s=tTFn(`t9@cO@(^>@ziefC@aURe{p zhVQ-nC%z5*fBl0j{T|h?o@TV`Rm<1?0V3z5BL8|V-SpwxgMDwUE?c}`am)JO{Q1GZ z@^hxIpZHEK_j3OKh@E@3?QNH-%P6foVRG)b)bG$g@~cz7cxjz__Cbcfck_PF>djZb z86-~rem!e{%YX6NTXKp^55IZ3R_^OJ>HHr*pZ-&P|J!%j_1pfB_HWy}w{N<9?Y@rH zzPH{SHeFJg{C@Ukj?C+(XTJ!3bGs*gL;L?i-MOAtD_0#eJf!ET9(w)%&fM$1 z@2hUK|MQR2J^gMv6Bt~!(1~4&M1EajE?ESjkWWh d|1A0?&mXmSzHM*08!+!Oc)I$ztaD0e0su&zBr5;_ literal 0 HcmV?d00001 diff --git a/classne_1_1ShaderConfiguration-members.html b/classne_1_1ShaderConfiguration-members.html new file mode 100644 index 000000000..b36d69b0d --- /dev/null +++ b/classne_1_1ShaderConfiguration-members.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ShaderConfiguration Member List
+
+ +
+ + + + diff --git a/classne_1_1ShaderConfiguration.html b/classne_1_1ShaderConfiguration.html new file mode 100644 index 000000000..513990b19 --- /dev/null +++ b/classne_1_1ShaderConfiguration.html @@ -0,0 +1,249 @@ + + + + + + + +Nameless Engine: ne::ShaderConfiguration Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::ShaderConfiguration Class Reference
+
+
+ +

#include <ShaderMacro.h>

+ + + + + + +

+Public Member Functions

 ShaderConfiguration (Renderer *pRenderer)
 
void updateShaderConfiguration ()
 
+ + + + + +

+Public Attributes

std::set< ShaderMacro > currentVertexShaderConfiguration
 
std::set< ShaderMacro > currentPixelShaderConfiguration
 
+ + + +

+Private Attributes

RendererpRenderer = nullptr
 
+

Detailed Description

+

Describes a group of shader macros.

+

Constructor & Destructor Documentation

+ +

◆ ShaderConfiguration()

+ +
+
+ + + + + +
+ + + + + + + + +
ne::ShaderConfiguration::ShaderConfiguration (RendererpRenderer)
+
+inline
+
+

Saves render to use.

+
Parameters
+ + +
pRendererRenderer to use.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ updateShaderConfiguration()

+ +
+
+ + + + + + + +
void ne::ShaderConfiguration::updateShaderConfiguration ()
+
+

Updates the current shader configuration (settings) for the render and all currently existing shaders based on the current values from this struct.

+
Remarks
Flushes the command queue and recreates pipelines' internal resources so that they will use new shader configuration.
+ +
+
+

Member Data Documentation

+ +

◆ currentPixelShaderConfiguration

+ +
+
+ + + + +
std::set<ShaderMacro> ne::ShaderConfiguration::currentPixelShaderConfiguration
+
+

Pixel shader macros.

+ +
+
+ +

◆ currentVertexShaderConfiguration

+ +
+
+ + + + +
std::set<ShaderMacro> ne::ShaderConfiguration::currentVertexShaderConfiguration
+
+

Vertex shader macros.

+ +
+
+ +

◆ pRenderer

+ +
+
+ + + + + +
+ + + + +
Renderer* ne::ShaderConfiguration::pRenderer = nullptr
+
+private
+
+

Used renderer.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/general/ShaderMacro.h
  • +
  • src/engine_lib/private/shader/general/ShaderMacro.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ShaderConfiguration.js b/classne_1_1ShaderConfiguration.js new file mode 100644 index 000000000..468d832b0 --- /dev/null +++ b/classne_1_1ShaderConfiguration.js @@ -0,0 +1,8 @@ +var classne_1_1ShaderConfiguration = +[ + [ "ShaderConfiguration", "classne_1_1ShaderConfiguration.html#aaaeb988d1f0747062c84af9bf88ce69a", null ], + [ "updateShaderConfiguration", "classne_1_1ShaderConfiguration.html#a7a25c478bba8426de264bb787416b970", null ], + [ "currentPixelShaderConfiguration", "classne_1_1ShaderConfiguration.html#aa60140441c2deb2c065ff3f2bc4ddd6a", null ], + [ "currentVertexShaderConfiguration", "classne_1_1ShaderConfiguration.html#a3097b928b6df3741b50599bf984ff297", null ], + [ "pRenderer", "classne_1_1ShaderConfiguration.html#a03bc12d02a4f1194b6e031cb317f5273", null ] +]; \ No newline at end of file diff --git a/classne_1_1ShaderCpuWriteResourceBinding-members.html b/classne_1_1ShaderCpuWriteResourceBinding-members.html new file mode 100644 index 000000000..549dc72b2 --- /dev/null +++ b/classne_1_1ShaderCpuWriteResourceBinding-members.html @@ -0,0 +1,129 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ShaderCpuWriteResourceBinding Member List
+
+
+ +

This is the complete list of members for ne::ShaderCpuWriteResourceBinding, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
changeUsedPipelines(const std::unordered_set< Pipeline * > &pipelinesToUse) overridene::ShaderCpuWriteResourceBindingvirtual
copyResourceIndexToShaderConstants(PipelineShaderConstantsManager *pShaderConstantsManager, Pipeline *pUsedPipeline, size_t iCurrentFrameResourceIndex)ne::ShaderCpuWriteResourceBindinginline
create(const std::string &sShaderResourceName, const std::string &sResourceAdditionalInfo, size_t iResourceSizeInBytes, const std::unordered_set< Pipeline * > &pipelinesToUse, const std::function< void *()> &onStartedUpdatingResource, const std::function< void()> &onFinishedUpdatingResource)ne::ShaderCpuWriteResourceBindingprotectedstatic
getResourceDataSizeInBytes() constne::ShaderCpuWriteResourceBindinginline
getShaderResourceName() constne::ShaderResourceBindingBase
getUintShaderConstantOffsetsFromPipelines(const std::unordered_set< Pipeline * > &pipelines, const std::string &sFieldName)ne::ShaderCpuWriteResourceBindingprotectedstatic
iResourceDataSizeInBytesne::ShaderCpuWriteResourceBindingprivate
mtxUintShaderConstantOffsetsne::ShaderCpuWriteResourceBindingprotected
onAfterAllPipelinesRefreshedResources() overridene::ShaderCpuWriteResourceBindingprotectedvirtual
onFinishedUpdatingResourcene::ShaderCpuWriteResourceBindingprivate
onStartedUpdatingResourcene::ShaderCpuWriteResourceBindingprivate
ShaderCpuWriteResourceBinding(const std::string &sShaderResourceName, size_t iResourceDataSizeInBytes, const std::function< void *()> &onStartedUpdatingResource, const std::function< void()> &onFinishedUpdatingResource, const std::unordered_map< Pipeline *, size_t > &uintShaderConstantOffsets)ne::ShaderCpuWriteResourceBindingprotected
ShaderCpuWriteResourceBindingManager (defined in ne::ShaderCpuWriteResourceBinding)ne::ShaderCpuWriteResourceBindingfriend
ShaderResourceBindingBase(const std::string &sShaderResourceName)ne::ShaderResourceBindingBaseprotected
sShaderResourceNamene::ShaderResourceBindingBaseprivate
updateResource(size_t iCurrentFrameResourceIndex)ne::ShaderCpuWriteResourceBindinginlineprivate
vResourceDatane::ShaderCpuWriteResourceBindingprotected
~ShaderCpuWriteResourceBinding() override=default (defined in ne::ShaderCpuWriteResourceBinding)ne::ShaderCpuWriteResourceBindingvirtual
~ShaderResourceBindingBase()=default (defined in ne::ShaderResourceBindingBase)ne::ShaderResourceBindingBasevirtual
+
+ + + + diff --git a/classne_1_1ShaderCpuWriteResourceBinding.html b/classne_1_1ShaderCpuWriteResourceBinding.html new file mode 100644 index 000000000..c42e450f2 --- /dev/null +++ b/classne_1_1ShaderCpuWriteResourceBinding.html @@ -0,0 +1,678 @@ + + + + + + + +Nameless Engine: ne::ShaderCpuWriteResourceBinding Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <ShaderCpuWriteResourceBinding.h>

+
+Inheritance diagram for ne::ShaderCpuWriteResourceBinding:
+
+
+ + +ne::ShaderResourceBindingBase + +
+ + + + + + + + + + + + + +

+Public Member Functions

void copyResourceIndexToShaderConstants (PipelineShaderConstantsManager *pShaderConstantsManager, Pipeline *pUsedPipeline, size_t iCurrentFrameResourceIndex)
 
size_t getResourceDataSizeInBytes () const
 
virtual std::optional< ErrorchangeUsedPipelines (const std::unordered_set< Pipeline * > &pipelinesToUse) override
 
- Public Member Functions inherited from ne::ShaderResourceBindingBase
virtual std::optional< ErrorchangeUsedPipelines (const std::unordered_set< Pipeline * > &pipelinesToUse)=0
 
std::string getShaderResourceName () const
 
+ + + + + + + + + + +

+Protected Member Functions

 ShaderCpuWriteResourceBinding (const std::string &sShaderResourceName, size_t iResourceDataSizeInBytes, const std::function< void *()> &onStartedUpdatingResource, const std::function< void()> &onFinishedUpdatingResource, const std::unordered_map< Pipeline *, size_t > &uintShaderConstantOffsets)
 
virtual std::optional< ErroronAfterAllPipelinesRefreshedResources () override
 
- Protected Member Functions inherited from ne::ShaderResourceBindingBase
 ShaderResourceBindingBase (const std::string &sShaderResourceName)
 
virtual std::optional< ErroronAfterAllPipelinesRefreshedResources ()=0
 
+ + + + + +

+Static Protected Member Functions

static std::variant< std::unique_ptr< ShaderCpuWriteResourceBinding >, Errorcreate (const std::string &sShaderResourceName, const std::string &sResourceAdditionalInfo, size_t iResourceSizeInBytes, const std::unordered_set< Pipeline * > &pipelinesToUse, const std::function< void *()> &onStartedUpdatingResource, const std::function< void()> &onFinishedUpdatingResource)
 
static std::variant< std::unordered_map< Pipeline *, size_t >, ErrorgetUintShaderConstantOffsetsFromPipelines (const std::unordered_set< Pipeline * > &pipelines, const std::string &sFieldName)
 
+ + + + + +

+Protected Attributes

std::pair< std::recursive_mutex, std::unordered_map< Pipeline *, size_t > > mtxUintShaderConstantOffsets
 
std::array< std::unique_ptr< DynamicCpuWriteShaderResourceArraySlot >, FrameResourceManager::getFrameResourceCount()> vResourceData
 
+ + + +

+Private Member Functions

void updateResource (size_t iCurrentFrameResourceIndex)
 
+ + + + + + + +

+Private Attributes

const std::function< void *()> onStartedUpdatingResource
 
const std::function< void()> onFinishedUpdatingResource
 
const size_t iResourceDataSizeInBytes = 0
 
+ + + +

+Friends

+class ShaderCpuWriteResourceBindingManager
 
+

Detailed Description

+

References a single (non-array) shader resource (that is written in a shader file) that has CPU write access available (can be updated from the CPU side).

+

Constructor & Destructor Documentation

+ +

◆ ShaderCpuWriteResourceBinding()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ne::ShaderCpuWriteResourceBinding::ShaderCpuWriteResourceBinding (const std::string & sShaderResourceName,
size_t iResourceDataSizeInBytes,
const std::function< void *()> & onStartedUpdatingResource,
const std::function< void()> & onFinishedUpdatingResource,
const std::unordered_map< Pipeline *, size_t > & uintShaderConstantOffsets 
)
+
+protected
+
+

Constructs a partially initialized object.

+
Remarks
Only used internally, instead use create.
+
Parameters
+ + + + + + +
sShaderResourceNameName of the resource we are referencing (should be exactly the same as the resource name written in the shader file we are referencing).
iResourceDataSizeInBytesSize (in bytes) of the data that this resource will contain.
onStartedUpdatingResourceFunction that will be called when started updating resource data. Function returns pointer to data of the specified resource data size that needs to be copied into the resource.
onFinishedUpdatingResourceFunction that will be called when finished updating (usually used for unlocking resource data mutex).
uintShaderConstantOffsetsOffsets of root/push constants (per-pipeline) to copy an index into array to.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ changeUsedPipelines()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::ShaderCpuWriteResourceBinding::changeUsedPipelines (const std::unordered_set< Pipeline * > & pipelinesToUse)
+
+overridevirtual
+
+

Called to make the resource to discard currently used pipelines and bind/reference other pipelines.

+
Warning
Expects that the caller is using some mutex to protect this shader resource from being used in the draw function while this function is not finished (i.e. make sure the CPU will not queue a new frame while this function is not finished).
+
Remarks
For example, for this function can be called from a mesh node that changed its geometry and thus added/removed some material slots, or if some material that mesh node is using changed its pipeline.
+
Parameters
+ + +
pipelinesToUsePipelines to use instead of the current ones.
+
+
+
Returns
Error if something went wrong.
+ +

Implements ne::ShaderResourceBindingBase.

+ +
+
+ +

◆ copyResourceIndexToShaderConstants()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::ShaderCpuWriteResourceBinding::copyResourceIndexToShaderConstants (PipelineShaderConstantsManagerpShaderConstantsManager,
PipelinepUsedPipeline,
size_t iCurrentFrameResourceIndex 
)
+
+inline
+
+

Copies resource index (into shader arrays) to a root/push constant.

+
Parameters
+ + + + +
pShaderConstantsManagerShader constants manager.
pUsedPipelineCurrent pipeline.
iCurrentFrameResourceIndexIndex of the current frame resource.
+
+
+ +
+
+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< ShaderCpuWriteResourceBinding >, Error > ne::ShaderCpuWriteResourceBinding::create (const std::string & sShaderResourceName,
const std::string & sResourceAdditionalInfo,
size_t iResourceSizeInBytes,
const std::unordered_set< Pipeline * > & pipelinesToUse,
const std::function< void *()> & onStartedUpdatingResource,
const std::function< void()> & onFinishedUpdatingResource 
)
+
+staticprotected
+
+

Creates a new shader CPU-write resource.

+
Parameters
+ + + + + + + +
sShaderResourceNameName of the resource we are referencing (should be exactly the same as the resource name written in the shader file we are referencing).
sResourceAdditionalInfoAdditional text that we will append to created resource name (used for logging).
iResourceSizeInBytesSize of the data that this resource will contain.
pipelinesToUsePipelines that use shader/parameters we are referencing.
onStartedUpdatingResourceFunction that will be called when started updating resource data. Function returns pointer to data of the specified resource data size that needs to be copied into the resource.
onFinishedUpdatingResourceFunction that will be called when finished updating (usually used for unlocking resource data mutex).
+
+
+
Returns
Error if something went wrong, otherwise created shader resource.
+ +
+
+ +

◆ getResourceDataSizeInBytes()

+ +
+
+ + + + + +
+ + + + + + + +
size_t ne::ShaderCpuWriteResourceBinding::getResourceDataSizeInBytes () const
+
+inline
+
+

Returns size of the resource data.

+
Returns
Size in bytes.
+ +
+
+ +

◆ getUintShaderConstantOffsetsFromPipelines()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::variant< std::unordered_map< Pipeline *, size_t >, Error > ne::ShaderCpuWriteResourceBinding::getUintShaderConstantOffsetsFromPipelines (const std::unordered_set< Pipeline * > & pipelines,
const std::string & sFieldName 
)
+
+staticprotected
+
+

Looks for root/push constants (field) named after the shader resource in the specified pipelines and returns offsets of such fields.

+
Parameters
+ + + +
pipelinesPipelines to scan.
sFieldNameName of the root/push constant field to look for.
+
+
+
Returns
Error if something went wrong, otherwise pairs of "pipeline" - "offset of field".
+ +
+
+ +

◆ onAfterAllPipelinesRefreshedResources()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::ShaderCpuWriteResourceBinding::onAfterAllPipelinesRefreshedResources ()
+
+overrideprotectedvirtual
+
+

Called from pipeline manager to notify that all pipelines released their internal resources and now restored them so their internal resources (for example push constants) might be different now and shader resource now needs to check that everything that it needs is still there and possibly re-bind to pipeline's descriptors since these might have been also re-created.

+
Returns
Error if something went wrong.
+ +

Implements ne::ShaderResourceBindingBase.

+ +
+
+ +

◆ updateResource()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::ShaderCpuWriteResourceBinding::updateResource (size_t iCurrentFrameResourceIndex)
+
+inlineprivate
+
+

Copies up to date data to the GPU resource of the specified frame resource.

+
Remarks
Called by shader resource manager.
+
+Should only be called when resource actually needs an update, otherwise you would cause a useless copy operations.
+
Parameters
+ + +
iCurrentFrameResourceIndexIndex of currently used frame resource.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ iResourceDataSizeInBytes

+ +
+
+ + + + + +
+ + + + +
const size_t ne::ShaderCpuWriteResourceBinding::iResourceDataSizeInBytes = 0
+
+private
+
+

Size (in bytes) of the data that the resource contains.

+ +
+
+ +

◆ mtxUintShaderConstantOffsets

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, std::unordered_map<Pipeline*, size_t> > ne::ShaderCpuWriteResourceBinding::mtxUintShaderConstantOffsets
+
+protected
+
+

Offsets of root/push constants (per-pipeline) to copy an index into array to.

+ +
+
+ +

◆ onFinishedUpdatingResource

+ +
+
+ + + + + +
+ + + + +
const std::function<void()> ne::ShaderCpuWriteResourceBinding::onFinishedUpdatingResource
+
+private
+
+

Function to call when finished updating (usually used for unlocking resource data mutex).

+ +
+
+ +

◆ onStartedUpdatingResource

+ +
+
+ + + + + +
+ + + + +
const std::function<void*()> ne::ShaderCpuWriteResourceBinding::onStartedUpdatingResource
+
+private
+
+

Function used to update resource data. Returns pointer to data of size iResourceDataSizeInBytes that needs to be copied into resource data storage (GPU resource).

+ +
+
+ +

◆ vResourceData

+ +
+
+ + + + + +
+ + + + +
std::array< std::unique_ptr<DynamicCpuWriteShaderResourceArraySlot>, FrameResourceManager::getFrameResourceCount()> ne::ShaderCpuWriteResourceBinding::vResourceData
+
+protected
+
+

Stores data for shaders to use (per frame resource). Index (from array start) will be copied to push constant so that shaders can index into the array and access the data.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/general/resource/binding/cpuwrite/ShaderCpuWriteResourceBinding.h
  • +
  • src/engine_lib/private/shader/general/resource/binding/cpuwrite/ShaderCpuWriteResourceBinding.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ShaderCpuWriteResourceBinding.js b/classne_1_1ShaderCpuWriteResourceBinding.js new file mode 100644 index 000000000..101b9f55f --- /dev/null +++ b/classne_1_1ShaderCpuWriteResourceBinding.js @@ -0,0 +1,16 @@ +var classne_1_1ShaderCpuWriteResourceBinding = +[ + [ "ShaderCpuWriteResourceBinding", "classne_1_1ShaderCpuWriteResourceBinding.html#af6c9a2063ccf95219b02b677246af7ff", null ], + [ "changeUsedPipelines", "classne_1_1ShaderCpuWriteResourceBinding.html#a7bc2c8bc3aea60dc7d57710549932a12", null ], + [ "copyResourceIndexToShaderConstants", "classne_1_1ShaderCpuWriteResourceBinding.html#ae1fdd09dc4a1ed860ef49d2ea2a844c0", null ], + [ "create", "classne_1_1ShaderCpuWriteResourceBinding.html#a8a22646effb6575c74bd41857583da75", null ], + [ "getResourceDataSizeInBytes", "classne_1_1ShaderCpuWriteResourceBinding.html#ad61d5d64df67b98b7b941a14b73ba56f", null ], + [ "getUintShaderConstantOffsetsFromPipelines", "classne_1_1ShaderCpuWriteResourceBinding.html#aeb8cb2153b57969d7623cd46b7f2d5fb", null ], + [ "onAfterAllPipelinesRefreshedResources", "classne_1_1ShaderCpuWriteResourceBinding.html#a7a7beba941bc6302e57e78b6a259e265", null ], + [ "updateResource", "classne_1_1ShaderCpuWriteResourceBinding.html#a33648104f7e366bbda652e92a4742b26", null ], + [ "iResourceDataSizeInBytes", "classne_1_1ShaderCpuWriteResourceBinding.html#ac2c2f454b05fc0e7a2d3f8dd30fd7b5b", null ], + [ "mtxUintShaderConstantOffsets", "classne_1_1ShaderCpuWriteResourceBinding.html#aeb55d3e832595e7c09be95535e98a33a", null ], + [ "onFinishedUpdatingResource", "classne_1_1ShaderCpuWriteResourceBinding.html#a5524efd84ed3ab90145dc567d1ae99dd", null ], + [ "onStartedUpdatingResource", "classne_1_1ShaderCpuWriteResourceBinding.html#a068a1984ca2ea0e6537717d3639dee7f", null ], + [ "vResourceData", "classne_1_1ShaderCpuWriteResourceBinding.html#ab297577a375d25254e9e4b7d9ab796f7", null ] +]; \ No newline at end of file diff --git a/classne_1_1ShaderCpuWriteResourceBinding.png b/classne_1_1ShaderCpuWriteResourceBinding.png new file mode 100644 index 0000000000000000000000000000000000000000..d67e01900793fb42d7cc7b3be4e39294860e5a97 GIT binary patch literal 869 zcmeAS@N?(olHy`uVBq!ia0vp^cY!#7gBeJ!GHK8QQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#Ns7c)B=-R4~4sn>hKC0#D2K z+mh-3|LfOf>#8;`_;#+^UBd5Lln0Z4!=3OouXpijuTimFp(gA3ZKbFCq}o@tyHbDe zw)eQS^2N^ESKU;8`kXvnotGcFLi^+WWw)8#Hiwot%6r;{zY%TSDP+GSdK-&u<|;L< zW82=_K0SW>pXHj(M}JN#Js)gYq@sWR!mEs9>Mx^wrZ0NN89XIHXaC&&+VB57dh_Qn zyUG4jeQ7n5)|r0OD=B=r{@S$gci&!~@Jx9A{8Zf4#V-uLuj}!@v~_vO)xV`Lw@W|h zv`KA@y7bh+&?kHPd82f7<;>fw_j0fHvRNFv^>f~vjl0iZe_7PC;aaTqOkb<=_fCgT z-MPi~U2jKYeZl)8%gyWudu*Q-n|^ln^?tT)^^Ud6zWi9aT(URW>-yALo|Epc?Edd= zy(oK*-K3nA%lCHs%X@CSa`U9hN$y!CDmRyd!=^Vc_IhauFsrx;gJ=#`?@jC7!_8*mdCjrMJ!t({E1JQJoofY3KZn z-72=h)k>aPrI&Q0qxznN_#M6RZSVS@6}Rp0eVVYedd6EjwcloaGY?rkEquMzeD|DH zhcBykznPQ9bL`Efx6i7)g-`ZKe91ayq#HVY>FKyY_l@Ox>tffvnk~4L34ZmAD-D|eb{$1Q9dOm%ZZ7yw_vtx4Q+;yR$kBmPxo#PQ>H`R*t zKkxeXtFzViYZiVRn{py${)*jwT^$}W{lz_2^AAV&o?fac?`r<-L#gTIzv*96S1+qx zoi;CchhBMK>`Tq8$XH|5m*0P77X8-^I literal 0 HcmV?d00001 diff --git a/classne_1_1ShaderCpuWriteResourceBindingManager-members.html b/classne_1_1ShaderCpuWriteResourceBindingManager-members.html new file mode 100644 index 000000000..dadb49210 --- /dev/null +++ b/classne_1_1ShaderCpuWriteResourceBindingManager-members.html @@ -0,0 +1,125 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ShaderCpuWriteResourceBindingManager Member List
+
+
+ +

This is the complete list of members for ne::ShaderCpuWriteResourceBindingManager, including all inherited members.

+ + + + + + + + + + + + + + + + +
createShaderCpuWriteResource(const std::string &sShaderResourceName, const std::string &sResourceAdditionalInfo, size_t iResourceDataSizeInBytes, const std::unordered_set< Pipeline * > &pipelinesToUse, const std::function< void *()> &onStartedUpdatingResource, const std::function< void()> &onFinishedUpdatingResource)ne::ShaderCpuWriteResourceBindingManager
destroyResource(ShaderCpuWriteResourceBinding *pResourceToDestroy)ne::ShaderCpuWriteResourceBindingManagerprivate
getResources()ne::ShaderCpuWriteResourceBindingManager
handleResourceCreation(std::variant< std::unique_ptr< ShaderCpuWriteResourceBinding >, Error > result)ne::ShaderCpuWriteResourceBindingManagerprivate
markResourceAsNeedsUpdate(ShaderCpuWriteResourceBinding *pResourceToDestroy)ne::ShaderCpuWriteResourceBindingManager
mtxShaderCpuWriteResourcesne::ShaderCpuWriteResourceBindingManagerprivate
operator=(const ShaderCpuWriteResourceBindingManager &)=delete (defined in ne::ShaderCpuWriteResourceBindingManager)ne::ShaderCpuWriteResourceBindingManager
pRendererne::ShaderCpuWriteResourceBindingManagerprivate
Renderer (defined in ne::ShaderCpuWriteResourceBindingManager)ne::ShaderCpuWriteResourceBindingManagerfriend
ShaderCpuWriteResourceBindingManager()=delete (defined in ne::ShaderCpuWriteResourceBindingManager)ne::ShaderCpuWriteResourceBindingManager
ShaderCpuWriteResourceBindingManager(const ShaderCpuWriteResourceBindingManager &)=delete (defined in ne::ShaderCpuWriteResourceBindingManager)ne::ShaderCpuWriteResourceBindingManager
ShaderCpuWriteResourceBindingManager(Renderer *pRenderer)ne::ShaderCpuWriteResourceBindingManagerprivate
ShaderCpuWriteResourceBindingUniquePtr (defined in ne::ShaderCpuWriteResourceBindingManager)ne::ShaderCpuWriteResourceBindingManagerfriend
updateResources(size_t iCurrentFrameResourceIndex)ne::ShaderCpuWriteResourceBindingManager
~ShaderCpuWriteResourceBindingManager()ne::ShaderCpuWriteResourceBindingManager
+
+ + + + diff --git a/classne_1_1ShaderCpuWriteResourceBindingManager.html b/classne_1_1ShaderCpuWriteResourceBindingManager.html new file mode 100644 index 000000000..c4b6d863a --- /dev/null +++ b/classne_1_1ShaderCpuWriteResourceBindingManager.html @@ -0,0 +1,474 @@ + + + + + + + +Nameless Engine: ne::ShaderCpuWriteResourceBindingManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::ShaderCpuWriteResourceBindingManager Class Reference
+
+
+ +

#include <ShaderCpuWriteResourceBindingManager.h>

+ + + + +

+Classes

struct  Resources
 
+ + + + + + + + + + + + + + + +

+Public Member Functions

ShaderCpuWriteResourceBindingManager (const ShaderCpuWriteResourceBindingManager &)=delete
 
+ShaderCpuWriteResourceBindingManageroperator= (const ShaderCpuWriteResourceBindingManager &)=delete
 
 ~ShaderCpuWriteResourceBindingManager ()
 
std::variant< ShaderCpuWriteResourceBindingUniquePtr, ErrorcreateShaderCpuWriteResource (const std::string &sShaderResourceName, const std::string &sResourceAdditionalInfo, size_t iResourceDataSizeInBytes, const std::unordered_set< Pipeline * > &pipelinesToUse, const std::function< void *()> &onStartedUpdatingResource, const std::function< void()> &onFinishedUpdatingResource)
 
void updateResources (size_t iCurrentFrameResourceIndex)
 
void markResourceAsNeedsUpdate (ShaderCpuWriteResourceBinding *pResourceToDestroy)
 
std::pair< std::recursive_mutex, Resources > * getResources ()
 
+ + + + + + + +

+Private Member Functions

 ShaderCpuWriteResourceBindingManager (Renderer *pRenderer)
 
std::variant< ShaderCpuWriteResourceBindingUniquePtr, ErrorhandleResourceCreation (std::variant< std::unique_ptr< ShaderCpuWriteResourceBinding >, Error > result)
 
void destroyResource (ShaderCpuWriteResourceBinding *pResourceToDestroy)
 
+ + + + + +

+Private Attributes

RendererpRenderer = nullptr
 
std::pair< std::recursive_mutex, ResourcesmtxShaderCpuWriteResources
 
+ + + + + +

+Friends

+class Renderer
 
+class ShaderCpuWriteResourceBindingUniquePtr
 
+

Detailed Description

+

Stores all shader resource bindings that have CPU write access.

+

Constructor & Destructor Documentation

+ +

◆ ~ShaderCpuWriteResourceBindingManager()

+ +
+
+ + + + + + + +
ne::ShaderCpuWriteResourceBindingManager::~ShaderCpuWriteResourceBindingManager ()
+
+

Makes sure that no resource exists.

+ +
+
+ +

◆ ShaderCpuWriteResourceBindingManager()

+ +
+
+ + + + + +
+ + + + + + + + +
ne::ShaderCpuWriteResourceBindingManager::ShaderCpuWriteResourceBindingManager (RendererpRenderer)
+
+private
+
+

Initializes manager.

+
Parameters
+ + +
pRenderer
+
+
+ +
+
+

Member Function Documentation

+ +

◆ createShaderCpuWriteResource()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< ShaderCpuWriteResourceBindingUniquePtr, Error > ne::ShaderCpuWriteResourceBindingManager::createShaderCpuWriteResource (const std::string & sShaderResourceName,
const std::string & sResourceAdditionalInfo,
size_t iResourceDataSizeInBytes,
const std::unordered_set< Pipeline * > & pipelinesToUse,
const std::function< void *()> & onStartedUpdatingResource,
const std::function< void()> & onFinishedUpdatingResource 
)
+
+

Creates a new render-specific shader resource.

+
Parameters
+ + + + + + + +
sShaderResourceNameName of the resource we are referencing (should be exactly the same as the resource name written in the shader file we are referencing).
sResourceAdditionalInfoAdditional text that we will append to created resource name (used for logging).
iResourceDataSizeInBytesSize of the data that this resource will contain.
pipelinesToUsePipelines that use shader/parameters we are referencing.
onStartedUpdatingResourceFunction that will be called when started updating resource data. Function returns pointer to data of the specified resource data size that needs to be copied into the resource.
onFinishedUpdatingResourceFunction that will be called when finished updating (usually used for unlocking resource data mutex).
+
+
+
Returns
Error if something went wrong, otherwise created shader resource.
+ +
+
+ +

◆ destroyResource()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::ShaderCpuWriteResourceBindingManager::destroyResource (ShaderCpuWriteResourceBindingpResourceToDestroy)
+
+private
+
+

Called by shader CPU write resource unique pointers to destroy the specified resource because it will no longer be used.

+
Parameters
+ + +
pResourceToDestroyResource to destroy.
+
+
+ +
+
+ +

◆ getResources()

+ +
+
+ + + + + + + +
std::pair< std::recursive_mutex, ShaderCpuWriteResourceBindingManager::Resources > * ne::ShaderCpuWriteResourceBindingManager::getResources ()
+
+

Returns internal resources.

+
Returns
Internal resources.
+ +
+
+ +

◆ handleResourceCreation()

+ +
+
+ + + + + +
+ + + + + + + + +
std::variant< ShaderCpuWriteResourceBindingUniquePtr, Error > ne::ShaderCpuWriteResourceBindingManager::handleResourceCreation (std::variant< std::unique_ptr< ShaderCpuWriteResourceBinding >, Errorresult)
+
+private
+
+

Processes resource creation.

+
Parameters
+ + +
resultResult of resource creation function.
+
+
+
Returns
Result of resource creation.
+ +
+
+ +

◆ markResourceAsNeedsUpdate()

+ +
+
+ + + + + + + + +
void ne::ShaderCpuWriteResourceBindingManager::markResourceAsNeedsUpdate (ShaderCpuWriteResourceBindingpResourceToDestroy)
+
+

Marks resource as "needs update", this will cause resource's update callback function to be later called multiple times.

+
Parameters
+ + +
pResourceToDestroyResource to mark as "needs update".
+
+
+ +
+
+ +

◆ updateResources()

+ +
+
+ + + + + + + + +
void ne::ShaderCpuWriteResourceBindingManager::updateResources (size_t iCurrentFrameResourceIndex)
+
+

Updates all resources marked as "needs update" and copies new (updated) data to the GPU resource of the specified frame resource.

+
Parameters
+ + +
iCurrentFrameResourceIndexIndex of the frame resource that will be used to submit the next frame.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ mtxShaderCpuWriteResources

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, Resources> ne::ShaderCpuWriteResourceBindingManager::mtxShaderCpuWriteResources
+
+private
+
+

Shader CPU write resources.

+ +
+
+ +

◆ pRenderer

+ +
+
+ + + + + +
+ + + + +
Renderer* ne::ShaderCpuWriteResourceBindingManager::pRenderer = nullptr
+
+private
+
+

Renderer that owns this manager.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/general/resource/binding/cpuwrite/ShaderCpuWriteResourceBindingManager.h
  • +
  • src/engine_lib/private/shader/general/resource/binding/cpuwrite/ShaderCpuWriteResourceBindingManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ShaderCpuWriteResourceBindingManager.js b/classne_1_1ShaderCpuWriteResourceBindingManager.js new file mode 100644 index 000000000..fd5821916 --- /dev/null +++ b/classne_1_1ShaderCpuWriteResourceBindingManager.js @@ -0,0 +1,14 @@ +var classne_1_1ShaderCpuWriteResourceBindingManager = +[ + [ "Resources", "structne_1_1ShaderCpuWriteResourceBindingManager_1_1Resources.html", "structne_1_1ShaderCpuWriteResourceBindingManager_1_1Resources" ], + [ "~ShaderCpuWriteResourceBindingManager", "classne_1_1ShaderCpuWriteResourceBindingManager.html#ab47c204ddf9ca67b3a54caa7e77fe0a6", null ], + [ "ShaderCpuWriteResourceBindingManager", "classne_1_1ShaderCpuWriteResourceBindingManager.html#a1f14598de45ac6b859feed077efe526f", null ], + [ "createShaderCpuWriteResource", "classne_1_1ShaderCpuWriteResourceBindingManager.html#ac72f18bb5467c304b92ad311c538eccf", null ], + [ "destroyResource", "classne_1_1ShaderCpuWriteResourceBindingManager.html#a39a238fca36d55a121ceb843dbac289a", null ], + [ "getResources", "classne_1_1ShaderCpuWriteResourceBindingManager.html#aefbb3032d20e81cad856648fe41c4b31", null ], + [ "handleResourceCreation", "classne_1_1ShaderCpuWriteResourceBindingManager.html#af6d4a93fb5562dfb17feee2c90ef88a6", null ], + [ "markResourceAsNeedsUpdate", "classne_1_1ShaderCpuWriteResourceBindingManager.html#a6a61adffdf7d6a8c3c6984c1e6996812", null ], + [ "updateResources", "classne_1_1ShaderCpuWriteResourceBindingManager.html#a16c272216f9b3d5953290e14551c794e", null ], + [ "mtxShaderCpuWriteResources", "classne_1_1ShaderCpuWriteResourceBindingManager.html#a91e46393a14c37f89c38bff6a9947601", null ], + [ "pRenderer", "classne_1_1ShaderCpuWriteResourceBindingManager.html#a78c472bb9ac3b9a9ae42a2858390396d", null ] +]; \ No newline at end of file diff --git a/classne_1_1ShaderCpuWriteResourceBindingUniquePtr-members.html b/classne_1_1ShaderCpuWriteResourceBindingUniquePtr-members.html new file mode 100644 index 000000000..1f35bbba1 --- /dev/null +++ b/classne_1_1ShaderCpuWriteResourceBindingUniquePtr-members.html @@ -0,0 +1,122 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ShaderCpuWriteResourceBindingUniquePtr Member List
+
+
+ +

This is the complete list of members for ne::ShaderCpuWriteResourceBindingUniquePtr, including all inherited members.

+ + + + + + + + + + + + + +
getResource() constne::ShaderCpuWriteResourceBindingUniquePtrinline
markAsNeedsUpdate()ne::ShaderCpuWriteResourceBindingUniquePtr
operator=(const ShaderCpuWriteResourceBindingUniquePtr &)=delete (defined in ne::ShaderCpuWriteResourceBindingUniquePtr)ne::ShaderCpuWriteResourceBindingUniquePtr
operator=(ShaderCpuWriteResourceBindingUniquePtr &&other) noexceptne::ShaderCpuWriteResourceBindingUniquePtr
pManagerne::ShaderCpuWriteResourceBindingUniquePtrprivate
pResourcene::ShaderCpuWriteResourceBindingUniquePtrprivate
ShaderCpuWriteResourceBindingManager (defined in ne::ShaderCpuWriteResourceBindingUniquePtr)ne::ShaderCpuWriteResourceBindingUniquePtrfriend
ShaderCpuWriteResourceBindingUniquePtr()=default (defined in ne::ShaderCpuWriteResourceBindingUniquePtr)ne::ShaderCpuWriteResourceBindingUniquePtr
ShaderCpuWriteResourceBindingUniquePtr(const ShaderCpuWriteResourceBindingUniquePtr &)=delete (defined in ne::ShaderCpuWriteResourceBindingUniquePtr)ne::ShaderCpuWriteResourceBindingUniquePtr
ShaderCpuWriteResourceBindingUniquePtr(ShaderCpuWriteResourceBindingUniquePtr &&other) noexceptne::ShaderCpuWriteResourceBindingUniquePtr
ShaderCpuWriteResourceBindingUniquePtr(ShaderCpuWriteResourceBindingManager *pManager, ShaderCpuWriteResourceBinding *pResource)ne::ShaderCpuWriteResourceBindingUniquePtrprivate
~ShaderCpuWriteResourceBindingUniquePtr() (defined in ne::ShaderCpuWriteResourceBindingUniquePtr)ne::ShaderCpuWriteResourceBindingUniquePtr
+
+ + + + diff --git a/classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html b/classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html new file mode 100644 index 000000000..3b100f8d1 --- /dev/null +++ b/classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html @@ -0,0 +1,364 @@ + + + + + + + +Nameless Engine: ne::ShaderCpuWriteResourceBindingUniquePtr Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::ShaderCpuWriteResourceBindingUniquePtr Class Reference
+
+
+ +

#include <ShaderCpuWriteResourceBindingUniquePtr.h>

+ + + + + + + + + + + + + + +

+Public Member Functions

ShaderCpuWriteResourceBindingUniquePtr (const ShaderCpuWriteResourceBindingUniquePtr &)=delete
 
+ShaderCpuWriteResourceBindingUniquePtroperator= (const ShaderCpuWriteResourceBindingUniquePtr &)=delete
 
 ShaderCpuWriteResourceBindingUniquePtr (ShaderCpuWriteResourceBindingUniquePtr &&other) noexcept
 
ShaderCpuWriteResourceBindingUniquePtroperator= (ShaderCpuWriteResourceBindingUniquePtr &&other) noexcept
 
void markAsNeedsUpdate ()
 
ShaderCpuWriteResourceBindinggetResource () const
 
+ + + +

+Private Member Functions

 ShaderCpuWriteResourceBindingUniquePtr (ShaderCpuWriteResourceBindingManager *pManager, ShaderCpuWriteResourceBinding *pResource)
 
+ + + + + +

+Private Attributes

ShaderCpuWriteResourceBindingManagerpManager = nullptr
 
ShaderCpuWriteResourceBindingpResource = nullptr
 
+ + + +

+Friends

+class ShaderCpuWriteResourceBindingManager
 
+

Detailed Description

+

Small raw pointer wrapper that acts like std::unique_ptr for shader CPU write resource bindings to do some extra work when started/stopped referencing a resource.

+

When deleted causes the resource to be also deleted.

+

Constructor & Destructor Documentation

+ +

◆ ShaderCpuWriteResourceBindingUniquePtr() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
ne::ShaderCpuWriteResourceBindingUniquePtr::ShaderCpuWriteResourceBindingUniquePtr (ShaderCpuWriteResourceBindingUniquePtr && other)
+
+noexcept
+
+

Move constructor.

+
Parameters
+ + +
otherOther object.
+
+
+ +
+
+ +

◆ ShaderCpuWriteResourceBindingUniquePtr() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ne::ShaderCpuWriteResourceBindingUniquePtr::ShaderCpuWriteResourceBindingUniquePtr (ShaderCpuWriteResourceBindingManagerpManager,
ShaderCpuWriteResourceBindingpResource 
)
+
+private
+
+

Constructs a new unique pointer.

+
Parameters
+ + + +
pManagerManager that owns the resource.
pResourceResource to point to.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getResource()

+ +
+
+ + + + + +
+ + + + + + + +
ShaderCpuWriteResourceBinding * ne::ShaderCpuWriteResourceBindingUniquePtr::getResource () const
+
+inline
+
+

Returns the underlying resource.

+
Returns
nullptr if moved or not initialized, otherwise valid pointer to resource.
+ +
+
+ +

◆ markAsNeedsUpdate()

+ +
+
+ + + + + + + +
void ne::ShaderCpuWriteResourceBindingUniquePtr::markAsNeedsUpdate ()
+
+

Marks shader resource as "needs update", this will cause resource's update callback to be called multiple times.

+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
ShaderCpuWriteResourceBindingUniquePtr & ne::ShaderCpuWriteResourceBindingUniquePtr::operator= (ShaderCpuWriteResourceBindingUniquePtr && other)
+
+noexcept
+
+

Move assignment.

+
Parameters
+ + +
otherOther object.
+
+
+
Returns
Result of move assignment.
+ +
+
+

Member Data Documentation

+ +

◆ pManager

+ +
+
+ + + + + +
+ + + + +
ShaderCpuWriteResourceBindingManager* ne::ShaderCpuWriteResourceBindingUniquePtr::pManager = nullptr
+
+private
+
+

Manager that owns the resource we are pointing to.

+ +
+
+ +

◆ pResource

+ +
+
+ + + + + +
+ + + + +
ShaderCpuWriteResourceBinding* ne::ShaderCpuWriteResourceBindingUniquePtr::pResource = nullptr
+
+private
+
+

Resource we are pointing to.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/general/resource/binding/cpuwrite/ShaderCpuWriteResourceBindingUniquePtr.h
  • +
  • src/engine_lib/private/shader/general/resource/binding/cpuwrite/ShaderCpuWriteResourceBindingUniquePtr.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ShaderCpuWriteResourceBindingUniquePtr.js b/classne_1_1ShaderCpuWriteResourceBindingUniquePtr.js new file mode 100644 index 000000000..eff2bf19c --- /dev/null +++ b/classne_1_1ShaderCpuWriteResourceBindingUniquePtr.js @@ -0,0 +1,10 @@ +var classne_1_1ShaderCpuWriteResourceBindingUniquePtr = +[ + [ "ShaderCpuWriteResourceBindingUniquePtr", "classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html#abd1d66d75b317333b829c1f9a864e29b", null ], + [ "ShaderCpuWriteResourceBindingUniquePtr", "classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html#ac6eb58a83bfc18d5f2e1847c9dcfd1b0", null ], + [ "getResource", "classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html#a48fda1bec582b81e5649c9af885e7f8a", null ], + [ "markAsNeedsUpdate", "classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html#afe9f2436048cef54a38ea54976ae6834", null ], + [ "operator=", "classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html#a6b00d6c1679e69af2d486ae8ed73ffae", null ], + [ "pManager", "classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html#a45bea1c8d39d064909658dc1adb1a5d4", null ], + [ "pResource", "classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html#a30851b027f19c369f1e349ec5a8475cb", null ] +]; \ No newline at end of file diff --git a/classne_1_1ShaderFilesystemPaths-members.html b/classne_1_1ShaderFilesystemPaths-members.html new file mode 100644 index 000000000..dc57a3917 --- /dev/null +++ b/classne_1_1ShaderFilesystemPaths-members.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ShaderFilesystemPaths Member List
+
+
+ +

This is the complete list of members for ne::ShaderFilesystemPaths, including all inherited members.

+ + + + + + + +
getPathToShaderCacheDirectory()ne::ShaderFilesystemPathsinlinestatic
getShaderCacheBaseFileName()ne::ShaderFilesystemPathsinlinestatic
operator=(const ShaderFilesystemPaths &)=delete (defined in ne::ShaderFilesystemPaths)ne::ShaderFilesystemPaths
ShaderFilesystemPaths()=delete (defined in ne::ShaderFilesystemPaths)ne::ShaderFilesystemPaths
ShaderFilesystemPaths(const ShaderFilesystemPaths &)=delete (defined in ne::ShaderFilesystemPaths)ne::ShaderFilesystemPaths
sShaderCacheBaseFileNamene::ShaderFilesystemPathsinlineprivatestatic
+
+ + + + diff --git a/classne_1_1ShaderFilesystemPaths.html b/classne_1_1ShaderFilesystemPaths.html new file mode 100644 index 000000000..b36bbd490 --- /dev/null +++ b/classne_1_1ShaderFilesystemPaths.html @@ -0,0 +1,221 @@ + + + + + + + +Nameless Engine: ne::ShaderFilesystemPaths Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <ShaderFilesystemPaths.hpp>

+ + + + + + +

+Public Member Functions

ShaderFilesystemPaths (const ShaderFilesystemPaths &)=delete
 
+ShaderFilesystemPathsoperator= (const ShaderFilesystemPaths &)=delete
 
+ + + + + +

+Static Public Member Functions

static std::filesystem::path getPathToShaderCacheDirectory ()
 
static std::string getShaderCacheBaseFileName ()
 
+ + + +

+Static Private Attributes

static constexpr auto sShaderCacheBaseFileName = "shader"
 
+

Detailed Description

+

Provides a set of static functions related to the filesystem paths to store shaders.

+

Member Function Documentation

+ +

◆ getPathToShaderCacheDirectory()

+ +
+
+ + + + + +
+ + + + + + + +
static std::filesystem::path ne::ShaderFilesystemPaths::getPathToShaderCacheDirectory ()
+
+inlinestatic
+
+

Returns path to the directory used to store shader cache, for example: ".../nameless-engine/<project_name>/shader_cache/".

+
Returns
Path to shader cache directory (created if not existed before).
+ +
+
+ +

◆ getShaderCacheBaseFileName()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string ne::ShaderFilesystemPaths::getShaderCacheBaseFileName ()
+
+inlinestatic
+
+

Returns base file name used in shader cache. This name is used within a shader specific directory (like ".../shader_cache/engine.default"), to name different files using different extensions (like "shader", "shader.pdb", "shader.reflection" and etc.).

+
Returns
Base file name.
+ +
+
+

Member Data Documentation

+ +

◆ sShaderCacheBaseFileName

+ +
+
+ + + + + +
+ + + + +
constexpr auto ne::ShaderFilesystemPaths::sShaderCacheBaseFileName = "shader"
+
+inlinestaticconstexprprivate
+
+

Base name of the file used to store shader cache.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classne_1_1ShaderFilesystemPaths.js b/classne_1_1ShaderFilesystemPaths.js new file mode 100644 index 000000000..cf2c20f1b --- /dev/null +++ b/classne_1_1ShaderFilesystemPaths.js @@ -0,0 +1,6 @@ +var classne_1_1ShaderFilesystemPaths = +[ + [ "getPathToShaderCacheDirectory", "classne_1_1ShaderFilesystemPaths.html#a81e8852b1bbe64318913e8f0535c0349", null ], + [ "getShaderCacheBaseFileName", "classne_1_1ShaderFilesystemPaths.html#ab46855d84c9a86ce8170de61d5e9daa1", null ], + [ "sShaderCacheBaseFileName", "classne_1_1ShaderFilesystemPaths.html#a8c613593e444e2b433550c67d7e2e384", null ] +]; \ No newline at end of file diff --git a/classne_1_1ShaderLightArray-members.html b/classne_1_1ShaderLightArray-members.html new file mode 100644 index 000000000..db7a1b7c9 --- /dev/null +++ b/classne_1_1ShaderLightArray-members.html @@ -0,0 +1,133 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ShaderLightArray Member List
+
+
+ +

This is the complete list of members for ne::ShaderLightArray, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
create(Renderer *pRenderer, const std::string &sShaderLightResourceName, const std::function< void(size_t)> &onSizeChanged, const std::optional< std::pair< std::function< void(size_t)>, std::string > > &optionalOnLightsInCameraFrustumCulled)ne::ShaderLightArraystatic
freeSlot(ShaderLightArraySlot *pSlot)ne::ShaderLightArrayprivate
getInternalResources()ne::ShaderLightArray
getShaderResourceName() constne::ShaderLightArray
iElementSizeInBytesne::ShaderLightArrayprivate
LightingShaderResourceManager (defined in ne::ShaderLightArray)ne::ShaderLightArrayfriend
markSlotAsNeedsUpdate(ShaderLightArraySlot *pSlot)ne::ShaderLightArrayprivate
mtxResourcesne::ShaderLightArrayprivate
onLightsInCameraFrustumCulled(size_t iCurrentFrameResourceIndex)ne::ShaderLightArrayprivate
onSizeChangedne::ShaderLightArrayprivate
optionalCallbackOnLightsInCameraFrustumCulledne::ShaderLightArrayprivate
pRendererne::ShaderLightArrayprivate
recreateArray(bool bIsInitialization=false)ne::ShaderLightArrayprivate
Renderer (defined in ne::ShaderLightArray)ne::ShaderLightArrayfriend
reserveNewSlot(Node *pSpawnedOwnerLightNode, size_t iDataSizeInBytes, const std::function< void *()> &startUpdateCallback, const std::function< void()> &finishUpdateCallback)ne::ShaderLightArray
ShaderLightArray()=delete (defined in ne::ShaderLightArray)ne::ShaderLightArray
ShaderLightArray(Renderer *pRenderer, const std::string &sShaderLightResourceName, const std::function< void(size_t)> &onSizeChanged, const std::optional< std::function< void(size_t)> > &optionalCallbackOnLightsInCameraFrustumCulled, const std::string &sIndicesLightsInFrustumShaderResourceName="")ne::ShaderLightArrayprivate
ShaderLightArraySlot (defined in ne::ShaderLightArray)ne::ShaderLightArrayfriend
sShaderLightResourceNamene::ShaderLightArrayprivate
updateBindingsInAllPipelines()ne::ShaderLightArrayprivate
updatePipelineBinding(Pipeline *pPipeline)ne::ShaderLightArrayprivate
updateSlotsMarkedAsNeedsUpdate(size_t iCurrentFrameResourceIndex)ne::ShaderLightArrayprivate
~ShaderLightArray()ne::ShaderLightArray
+
+ + + + diff --git a/classne_1_1ShaderLightArray.html b/classne_1_1ShaderLightArray.html new file mode 100644 index 000000000..0749aaca8 --- /dev/null +++ b/classne_1_1ShaderLightArray.html @@ -0,0 +1,801 @@ + + + + + + + +Nameless Engine: ne::ShaderLightArray Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <ShaderLightArray.h>

+ + + + +

+Classes

struct  Resources
 
+ + + + + + + + + +

+Public Member Functions

 ~ShaderLightArray ()
 
std::variant< std::unique_ptr< ShaderLightArraySlot >, ErrorreserveNewSlot (Node *pSpawnedOwnerLightNode, size_t iDataSizeInBytes, const std::function< void *()> &startUpdateCallback, const std::function< void()> &finishUpdateCallback)
 
std::pair< std::recursive_mutex, Resources > * getInternalResources ()
 
std::string getShaderResourceName () const
 
+ + + +

+Static Public Member Functions

static std::unique_ptr< ShaderLightArraycreate (Renderer *pRenderer, const std::string &sShaderLightResourceName, const std::function< void(size_t)> &onSizeChanged, const std::optional< std::pair< std::function< void(size_t)>, std::string > > &optionalOnLightsInCameraFrustumCulled)
 
+ + + + + + + + + + + + + + + + + +

+Private Member Functions

 ShaderLightArray (Renderer *pRenderer, const std::string &sShaderLightResourceName, const std::function< void(size_t)> &onSizeChanged, const std::optional< std::function< void(size_t)> > &optionalCallbackOnLightsInCameraFrustumCulled, const std::string &sIndicesLightsInFrustumShaderResourceName="")
 
void onLightsInCameraFrustumCulled (size_t iCurrentFrameResourceIndex)
 
std::optional< ErrorrecreateArray (bool bIsInitialization=false)
 
void updateSlotsMarkedAsNeedsUpdate (size_t iCurrentFrameResourceIndex)
 
std::optional< ErrorupdateBindingsInAllPipelines ()
 
std::optional< ErrorupdatePipelineBinding (Pipeline *pPipeline)
 
void freeSlot (ShaderLightArraySlot *pSlot)
 
void markSlotAsNeedsUpdate (ShaderLightArraySlot *pSlot)
 
+ + + + + + + + + + + + + +

+Private Attributes

std::pair< std::recursive_mutex, ResourcesmtxResources
 
RendererpRenderer = nullptr
 
size_t iElementSizeInBytes = 0
 
const std::optional< std::function< void(size_t)> > optionalCallbackOnLightsInCameraFrustumCulled
 
const std::function< void(size_t)> onSizeChanged
 
const std::string sShaderLightResourceName
 
+ + + + + + + +

+Friends

+class ShaderLightArraySlot
 
+class LightingShaderResourceManager
 
+class Renderer
 
+

Detailed Description

+

Manages an array (defined in shaders) related to lighting and allows modifying array data from CPU side.

+

Constructor & Destructor Documentation

+ +

◆ ~ShaderLightArray()

+ +
+
+ + + + + + + +
ne::ShaderLightArray::~ShaderLightArray ()
+
+

Makes sure there are no active slots.

+ +
+
+ +

◆ ShaderLightArray()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ne::ShaderLightArray::ShaderLightArray (RendererpRenderer,
const std::string & sShaderLightResourceName,
const std::function< void(size_t)> & onSizeChanged,
const std::optional< std::function< void(size_t)> > & optionalCallbackOnLightsInCameraFrustumCulled,
const std::string & sIndicesLightsInFrustumShaderResourceName = "" 
)
+
+private
+
+

Creates a new array.

+
Warning
Only used internally, prefer to use create.
+
Parameters
+ + + + + + +
pRendererUsed renderer.
sShaderLightResourceNameName of the resource (specified in shader code) that this array should bind to.
onSizeChangedCallback that will be called after array's size changed with the current array size passed as the only argument.
optionalCallbackOnLightsInCameraFrustumCulledIf specified will be called after array of indices to lights in camera frustum changed (indices changed) with the current frame resource index as the only argument, otherwise (if empty) GPU resources for such array will not be created and this callback will never be called.
sIndicesLightsInFrustumShaderResourceNameIf callback for culled lights in camera frustum is specified stores name of the shader resource used for the array of indices of non-culled lights.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::unique_ptr< ShaderLightArray > ne::ShaderLightArray::create (RendererpRenderer,
const std::string & sShaderLightResourceName,
const std::function< void(size_t)> & onSizeChanged,
const std::optional< std::pair< std::function< void(size_t)>, std::string > > & optionalOnLightsInCameraFrustumCulled 
)
+
+static
+
+

Creates a new array.

+
Parameters
+ + + + + +
pRendererUsed renderer.
sShaderLightResourceNameName of the resource (specified in shader code) that this array should bind to.
onSizeChangedCallback that will be called after array's size changed with the current array size passed as the only argument.
optionalOnLightsInCameraFrustumCulledA pair of callback and shader resource name that are used for array that stores indices of light sources in camera's frustum. If specified the callback will be called after array of indices to lights in camera frustum changed (indices changed) with the current frame resource index as the only argument, otherwise (if empty) GPU resources for such array will not be created and this callback will never be called.
+
+
+
Returns
Created array.
+ +
+
+ +

◆ freeSlot()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::ShaderLightArray::freeSlot (ShaderLightArraySlotpSlot)
+
+private
+
+

Called by slot-objects to notify the array that a slot is no longer used.

+
Parameters
+ + +
pSlotSlot that is being destroyed.
+
+
+ +
+
+ +

◆ getInternalResources()

+ +
+
+ + + + + + + +
std::pair< std::recursive_mutex, ShaderLightArray::Resources > * ne::ShaderLightArray::getInternalResources ()
+
+

Returns internal resources of this array.

+
Remarks
Generally used for tests (read-only), you should not modify them.
+
Returns
Internal resources.
+ +
+
+ +

◆ getShaderResourceName()

+ +
+
+ + + + + + + +
std::string ne::ShaderLightArray::getShaderResourceName () const
+
+

Returns name of the resource (specified in shader code) that this array is binded to.

+
Returns
Shader resource name.
+ +
+
+ +

◆ markSlotAsNeedsUpdate()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::ShaderLightArray::markSlotAsNeedsUpdate (ShaderLightArraySlotpSlot)
+
+private
+
+

Queues the specified slot's data to be updated later.

+
Parameters
+ + +
pSlotSlot to update later.
+
+
+ +
+
+ +

◆ onLightsInCameraFrustumCulled()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::ShaderLightArray::onLightsInCameraFrustumCulled (size_t iCurrentFrameResourceIndex)
+
+private
+
+

Called after the renderer culls lights (so that indices of lights sources in camera's frustum change) to copy the new (modified) data to the GPU.

+
Parameters
+ + +
iCurrentFrameResourceIndexIndex of the frame resource that will be used to submit the next frame.
+
+
+ +
+
+ +

◆ recreateArray()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::ShaderLightArray::recreateArray (bool bIsInitialization = false)
+
+private
+
+

(Re)creates GPU resources to hold the current number of active slots and updates all previously existing slots.

+
Parameters
+ + +
bIsInitializationtrue if we are creating resources for the first time and there are no active slots at the moment but since we need valid (non nullptr resources) we will create resources that will hold 1 slot, false otherwise.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ reserveNewSlot()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< ShaderLightArraySlot >, Error > ne::ShaderLightArray::reserveNewSlot (NodepSpawnedOwnerLightNode,
size_t iDataSizeInBytes,
const std::function< void *()> & startUpdateCallback,
const std::function< void()> & finishUpdateCallback 
)
+
+

Reserves a new slot in the array to store some data.

+
Remarks
While you hold the returned slot-object (and while it's not destroyed), it can call update callbacks at any time.
+
+Update callbacks will be called inside of this function to copy the initial data.
+
+If you mark your slot as "needs update" callbacks may be called multiple times (this is perfectly fine, just don't rely on your callbacks being called only once).
+
Parameters
+ + + + + +
pSpawnedOwnerLightNodeSpawned light node that requests the slot. Used for light culling.
iDataSizeInBytesSize of the data that you want to store in the slot in bytes.
startUpdateCallbackCallback that will be called after you mark your slot as "needs +update" when the engine is ready to copy the data to the GPU. You must return a pointer which data will be copied.
finishUpdateCallbackCallback that will be called after the copying of your new data is finished.
+
+
+
Returns
Error if something went wrong, otherwise reserved slot.
+ +
+
+ +

◆ updateBindingsInAllPipelines()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::ShaderLightArray::updateBindingsInAllPipelines ()
+
+private
+
+

Binds the underlying GPU resource to descriptors of pipelines that use this array in shaders.

+
Remarks
Does nothing if DirectX renderer is used.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ updatePipelineBinding()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::ShaderLightArray::updatePipelineBinding (PipelinepPipeline)
+
+private
+
+

Binds the underlying GPU resource to the specified pipeline's descriptor (if this pipeline's shaders use this array, otherwise return empty).

+
Remarks
Does nothing if DirectX renderer is used.
+
Parameters
+ + +
pPipelinePipeline to bind to / rebind to.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ updateSlotsMarkedAsNeedsUpdate()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::ShaderLightArray::updateSlotsMarkedAsNeedsUpdate (size_t iCurrentFrameResourceIndex)
+
+private
+
+

Goes through all slots that are marked as "needs update" and copies their new data to the GPU resource.

+
Parameters
+ + +
iCurrentFrameResourceIndexIndex of the frame resource that will be used to submit the next frame.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ iElementSizeInBytes

+ +
+
+ + + + + +
+ + + + +
size_t ne::ShaderLightArray::iElementSizeInBytes = 0
+
+private
+
+

Size of one array element in bytes.

+ +
+
+ +

◆ mtxResources

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, Resources> ne::ShaderLightArray::mtxResources
+
+private
+
+

Internal data.

+ +
+
+ +

◆ onSizeChanged

+ +
+
+ + + + + +
+ + + + +
const std::function<void(size_t)> ne::ShaderLightArray::onSizeChanged
+
+private
+
+

Callback that will be called after array's size changed with the current array size passed as the only argument.

+ +
+
+ +

◆ optionalCallbackOnLightsInCameraFrustumCulled

+ +
+
+ + + + + +
+ + + + +
const std::optional<std::function<void(size_t)> > ne::ShaderLightArray::optionalCallbackOnLightsInCameraFrustumCulled
+
+private
+
+

If specified will be called after array of indices to lights in camera frustum changed (indices changed) with the current frame resource index as the only argument, otherwise (if empty) GPU resources for such array will not be created and this callback will never be called.

+ +
+
+ +

◆ pRenderer

+ +
+
+ + + + + +
+ + + + +
Renderer* ne::ShaderLightArray::pRenderer = nullptr
+
+private
+
+

Used renderer.

+ +
+
+ +

◆ sShaderLightResourceName

+ +
+
+ + + + + +
+ + + + +
const std::string ne::ShaderLightArray::sShaderLightResourceName
+
+private
+
+

Name of the resource (specified in shader code) that this array should bind to.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/general/resource/ShaderLightArray.h
  • +
  • src/engine_lib/private/shader/general/resource/ShaderLightArray.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ShaderLightArray.js b/classne_1_1ShaderLightArray.js new file mode 100644 index 000000000..8469d9309 --- /dev/null +++ b/classne_1_1ShaderLightArray.js @@ -0,0 +1,23 @@ +var classne_1_1ShaderLightArray = +[ + [ "Resources", "structne_1_1ShaderLightArray_1_1Resources.html", "structne_1_1ShaderLightArray_1_1Resources" ], + [ "~ShaderLightArray", "classne_1_1ShaderLightArray.html#ab31abec30f8efd631644f951a9943e1e", null ], + [ "ShaderLightArray", "classne_1_1ShaderLightArray.html#a82364a0934412cb48f7ac3f8d2a71696", null ], + [ "create", "classne_1_1ShaderLightArray.html#abf03e290231b8ccbf397735d8b5da41d", null ], + [ "freeSlot", "classne_1_1ShaderLightArray.html#a3328662ff475820aae6c436b08ef8bc7", null ], + [ "getInternalResources", "classne_1_1ShaderLightArray.html#a1ebc69a64306d5c8018702d33c56f67a", null ], + [ "getShaderResourceName", "classne_1_1ShaderLightArray.html#a1ba83acfc58436dcb6c7bb1d0e9dcc41", null ], + [ "markSlotAsNeedsUpdate", "classne_1_1ShaderLightArray.html#a3a1ca46441de4fdd45cb53339968fecb", null ], + [ "onLightsInCameraFrustumCulled", "classne_1_1ShaderLightArray.html#a47d9f5f3d4916adb095077b84dccad0a", null ], + [ "recreateArray", "classne_1_1ShaderLightArray.html#a545c6de44ae5674b637ddc849599c8ba", null ], + [ "reserveNewSlot", "classne_1_1ShaderLightArray.html#aae70b6d70f55db9c6a6c7e6a4e79813c", null ], + [ "updateBindingsInAllPipelines", "classne_1_1ShaderLightArray.html#a0ab06a0a73281fe8a8c3a55f3dac39fe", null ], + [ "updatePipelineBinding", "classne_1_1ShaderLightArray.html#a9c45a8a69b61832fb3563a00baa685c9", null ], + [ "updateSlotsMarkedAsNeedsUpdate", "classne_1_1ShaderLightArray.html#a57ff63eebae0040b8a82ced015c22662", null ], + [ "iElementSizeInBytes", "classne_1_1ShaderLightArray.html#acc4c669a2419d42c01c780d5c7ce9484", null ], + [ "mtxResources", "classne_1_1ShaderLightArray.html#a15f7189a54f5809dcc61dbd61eb8bb39", null ], + [ "onSizeChanged", "classne_1_1ShaderLightArray.html#acb1cd03348735f995151cca2af72dc35", null ], + [ "optionalCallbackOnLightsInCameraFrustumCulled", "classne_1_1ShaderLightArray.html#a61485718d7dc7043ba990c7eec6beed1", null ], + [ "pRenderer", "classne_1_1ShaderLightArray.html#aa20bb571bf72d18efd48b3c7cc5d540f", null ], + [ "sShaderLightResourceName", "classne_1_1ShaderLightArray.html#ae2f84853d5b089acaa0c88910c6bb470", null ] +]; \ No newline at end of file diff --git a/classne_1_1ShaderLightArraySlot-members.html b/classne_1_1ShaderLightArraySlot-members.html new file mode 100644 index 000000000..30d770fa8 --- /dev/null +++ b/classne_1_1ShaderLightArraySlot-members.html @@ -0,0 +1,123 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ShaderLightArraySlot Member List
+
+
+ +

This is the complete list of members for ne::ShaderLightArraySlot, including all inherited members.

+ + + + + + + + + + + + + + +
finishUpdateCallbackne::ShaderLightArraySlotprivate
getCurrentIndexIntoArray() constne::ShaderLightArraySlotinline
iIndexIntoArrayne::ShaderLightArraySlotprivate
markAsNeedsUpdate()ne::ShaderLightArraySlot
operator=(const ShaderLightArraySlot &)=delete (defined in ne::ShaderLightArraySlot)ne::ShaderLightArraySlot
pArrayne::ShaderLightArraySlotprivate
pSpawnedOwnerLightNodene::ShaderLightArraySlotprivate
ShaderLightArray (defined in ne::ShaderLightArraySlot)ne::ShaderLightArraySlotfriend
ShaderLightArraySlot()=delete (defined in ne::ShaderLightArraySlot)ne::ShaderLightArraySlot
ShaderLightArraySlot(const ShaderLightArraySlot &)=delete (defined in ne::ShaderLightArraySlot)ne::ShaderLightArraySlot
ShaderLightArraySlot(ShaderLightArray *pArray, Node *pSpawnedOwnerLightNode, size_t iIndexIntoArray, const std::function< void *()> &startUpdateCallback, const std::function< void()> &finishUpdateCallback)ne::ShaderLightArraySlotprivate
startUpdateCallbackne::ShaderLightArraySlotprivate
~ShaderLightArraySlot() (defined in ne::ShaderLightArraySlot)ne::ShaderLightArraySlot
+
+ + + + diff --git a/classne_1_1ShaderLightArraySlot.html b/classne_1_1ShaderLightArraySlot.html new file mode 100644 index 000000000..56f9fb92a --- /dev/null +++ b/classne_1_1ShaderLightArraySlot.html @@ -0,0 +1,390 @@ + + + + + + + +Nameless Engine: ne::ShaderLightArraySlot Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::ShaderLightArraySlot Class Reference
+
+
+ +

#include <ShaderLightArray.h>

+ + + + + + + + + + +

+Public Member Functions

ShaderLightArraySlot (const ShaderLightArraySlot &)=delete
 
+ShaderLightArraySlotoperator= (const ShaderLightArraySlot &)=delete
 
void markAsNeedsUpdate ()
 
size_t getCurrentIndexIntoArray () const
 
+ + + +

+Private Member Functions

 ShaderLightArraySlot (ShaderLightArray *pArray, Node *pSpawnedOwnerLightNode, size_t iIndexIntoArray, const std::function< void *()> &startUpdateCallback, const std::function< void()> &finishUpdateCallback)
 
+ + + + + + + + + + + +

+Private Attributes

ShaderLightArraypArray = nullptr
 
Node *const pSpawnedOwnerLightNode = nullptr
 
const std::function< void *()> startUpdateCallback
 
const std::function< void()> finishUpdateCallback
 
size_t iIndexIntoArray = 0
 
+ + + +

+Friends

+class ShaderLightArray
 
+

Detailed Description

+

RAII-like object that frees the slot (marks it as unused) in its destructor and stores all information needed to update the slot's data.

+

Constructor & Destructor Documentation

+ +

◆ ShaderLightArraySlot()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ne::ShaderLightArraySlot::ShaderLightArraySlot (ShaderLightArraypArray,
NodepSpawnedOwnerLightNode,
size_t iIndexIntoArray,
const std::function< void *()> & startUpdateCallback,
const std::function< void()> & finishUpdateCallback 
)
+
+private
+
+

Creates a new slot.

+
Parameters
+ + + + + + +
pArrayArray that allocated space for this slot.
pSpawnedOwnerLightNodeSpawned light node that requested the slot.
iIndexIntoArrayIndex into array.
startUpdateCallbackCallback that will be called by array to start copying new data to the GPU.
finishUpdateCallbackCallback that will be called by array to finish copying new data to the GPU.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getCurrentIndexIntoArray()

+ +
+
+ + + + + +
+ + + + + + + +
size_t ne::ShaderLightArraySlot::getCurrentIndexIntoArray () const
+
+inline
+
+

Returns the current index (because it may change later) into the array.

+
Returns
Index.
+ +
+
+ +

◆ markAsNeedsUpdate()

+ +
+
+ + + + + + + +
void ne::ShaderLightArraySlot::markAsNeedsUpdate ()
+
+

Marks resources as "needs update", the resource will not be updated immediately but only when it will be safe to modify the underlying GPU resource of the array that this slot is referencing.

+
Remarks
Causes update callbacks to be called multiple times later.
+ +
+
+

Member Data Documentation

+ +

◆ finishUpdateCallback

+ +
+
+ + + + + +
+ + + + +
const std::function<void()> ne::ShaderLightArraySlot::finishUpdateCallback
+
+private
+
+

Callback that will be called by array to finish copying new data to the GPU.

+ +
+
+ +

◆ iIndexIntoArray

+ +
+
+ + + + + +
+ + + + +
size_t ne::ShaderLightArraySlot::iIndexIntoArray = 0
+
+private
+
+

Index into pArray.

+ +
+
+ +

◆ pArray

+ +
+
+ + + + + +
+ + + + +
ShaderLightArray* ne::ShaderLightArraySlot::pArray = nullptr
+
+private
+
+

Array that allocated space for this slot.

+ +
+
+ +

◆ pSpawnedOwnerLightNode

+ +
+
+ + + + + +
+ + + + +
Node* const ne::ShaderLightArraySlot::pSpawnedOwnerLightNode = nullptr
+
+private
+
+

Spawned light node (point/spot/directional/etc) that requested this slot.

+
Remarks
Do not delete (free) this pointer. It's safe to store a raw pointer here because when a light node despawns it destroys this slot object so this pointer is always valid.
+ +
+
+ +

◆ startUpdateCallback

+ +
+
+ + + + + +
+ + + + +
const std::function<void*()> ne::ShaderLightArraySlot::startUpdateCallback
+
+private
+
+

Callback that will be called by array to start copying new data to the GPU.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/general/resource/ShaderLightArray.h
  • +
  • src/engine_lib/private/shader/general/resource/ShaderLightArray.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ShaderLightArraySlot.js b/classne_1_1ShaderLightArraySlot.js new file mode 100644 index 000000000..6515e8931 --- /dev/null +++ b/classne_1_1ShaderLightArraySlot.js @@ -0,0 +1,11 @@ +var classne_1_1ShaderLightArraySlot = +[ + [ "ShaderLightArraySlot", "classne_1_1ShaderLightArraySlot.html#aae03ed0253b5a738e8a4d40598c2f931", null ], + [ "getCurrentIndexIntoArray", "classne_1_1ShaderLightArraySlot.html#ad6e9749490d9b666091ebd826b55ee5b", null ], + [ "markAsNeedsUpdate", "classne_1_1ShaderLightArraySlot.html#a21fe2de979e1fa1585836d4ea2f26cfb", null ], + [ "finishUpdateCallback", "classne_1_1ShaderLightArraySlot.html#ad8c76a96029b061b36f225f8d1c119aa", null ], + [ "iIndexIntoArray", "classne_1_1ShaderLightArraySlot.html#abc1714d6b76b689a9769e4cf76cebdf8", null ], + [ "pArray", "classne_1_1ShaderLightArraySlot.html#ab6d7dfa8936060b9ddd4d943632d6be5", null ], + [ "pSpawnedOwnerLightNode", "classne_1_1ShaderLightArraySlot.html#ad2a3b93eae7d588786cc7dd802ba16e3", null ], + [ "startUpdateCallback", "classne_1_1ShaderLightArraySlot.html#a082a89cfbc8ce192acb19a2a6c880e80", null ] +]; \ No newline at end of file diff --git a/classne_1_1ShaderManager-members.html b/classne_1_1ShaderManager-members.html new file mode 100644 index 000000000..735aa7f25 --- /dev/null +++ b/classne_1_1ShaderManager-members.html @@ -0,0 +1,133 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ShaderManager Member List
+
+
+ +

This is the complete list of members for ne::ShaderManager, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
compileShaders(std::vector< ShaderDescription > vShadersToCompile, const std::function< void(size_t iCompiledShaderCount, size_t iTotalShadersToCompile)> &onProgress, const std::function< void(ShaderDescription shaderDescription, std::variant< std::string, Error > error)> &onError, const std::function< void()> &onCompleted)ne::ShaderManager
compileShaderTask(size_t iQueryId, const std::shared_ptr< std::atomic< size_t > > &pCompiledShaderCount, size_t iTotalShaderCount, ShaderDescription shaderDescription, const std::function< void(size_t iCompiledShaderCount, size_t iTotalShadersToCompile)> &onProgress, const std::function< void(ShaderDescription shaderDescription, std::variant< std::string, Error > error)> &onError, const std::function< void()> &onCompleted)ne::ShaderManagerprotected
findShader(const std::string &sShaderName)ne::ShaderManagerprotected
iMaximumShaderNameLengthne::ShaderManagerinlineprivatestatic
isShaderNameCanBeUsed(const std::string &sShaderName)ne::ShaderManager
iTotalCompileShadersQueriesne::ShaderManagerprivate
markShaderToBeRemoved(const std::string &sShaderName)ne::ShaderManager
mtxShaderDatane::ShaderManagerprivate
operator=(const ShaderManager &)=delete (defined in ne::ShaderManager)ne::ShaderManager
performSelfValidation()ne::ShaderManager
pRendererne::ShaderManagerprivate
pShaderCacheManagerne::ShaderManagerprivate
refreshShaderCache()ne::ShaderManagerprotected
releaseShaderBytecodeIfNotUsed(const std::string &sShaderName)ne::ShaderManagerprotected
removeShaderIfMarkedToBeRemoved(const std::string &sShaderName)ne::ShaderManagerprotected
Renderer (defined in ne::ShaderManager)ne::ShaderManagerfriend
setRendererConfigurationForShaders(const std::set< ShaderMacro > &configuration, ShaderType shaderType)ne::ShaderManagerprotected
ShaderManager(Renderer *pRenderer)ne::ShaderManager
ShaderManager()=delete (defined in ne::ShaderManager)ne::ShaderManager
ShaderManager(const ShaderManager &)=delete (defined in ne::ShaderManager)ne::ShaderManager
ShaderUser (defined in ne::ShaderManager)ne::ShaderManagerfriend
vValidCharactersForShaderNamene::ShaderManagerinlineprivatestatic
~ShaderManager()=default (defined in ne::ShaderManager)ne::ShaderManagervirtual
+
+ + + + diff --git a/classne_1_1ShaderManager.html b/classne_1_1ShaderManager.html new file mode 100644 index 000000000..8301164de --- /dev/null +++ b/classne_1_1ShaderManager.html @@ -0,0 +1,741 @@ + + + + + + + +Nameless Engine: ne::ShaderManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <ShaderManager.h>

+ + + + +

+Classes

struct  ShaderData
 
+ + + + + + + + + + + + + + + +

+Public Member Functions

 ShaderManager (Renderer *pRenderer)
 
ShaderManager (const ShaderManager &)=delete
 
+ShaderManageroperator= (const ShaderManager &)=delete
 
std::optional< ErrorcompileShaders (std::vector< ShaderDescription > vShadersToCompile, const std::function< void(size_t iCompiledShaderCount, size_t iTotalShadersToCompile)> &onProgress, const std::function< void(ShaderDescription shaderDescription, std::variant< std::string, Error > error)> &onError, const std::function< void()> &onCompleted)
 
bool isShaderNameCanBeUsed (const std::string &sShaderName)
 
bool markShaderToBeRemoved (const std::string &sShaderName)
 
void performSelfValidation ()
 
+ + + + + + + + + + + + + +

+Protected Member Functions

void setRendererConfigurationForShaders (const std::set< ShaderMacro > &configuration, ShaderType shaderType)
 
void compileShaderTask (size_t iQueryId, const std::shared_ptr< std::atomic< size_t > > &pCompiledShaderCount, size_t iTotalShaderCount, ShaderDescription shaderDescription, const std::function< void(size_t iCompiledShaderCount, size_t iTotalShadersToCompile)> &onProgress, const std::function< void(ShaderDescription shaderDescription, std::variant< std::string, Error > error)> &onError, const std::function< void()> &onCompleted)
 
std::shared_ptr< ShaderPackfindShader (const std::string &sShaderName)
 
void releaseShaderBytecodeIfNotUsed (const std::string &sShaderName)
 
void removeShaderIfMarkedToBeRemoved (const std::string &sShaderName)
 
std::optional< ErrorrefreshShaderCache ()
 
+ + + + + + + + + +

+Private Attributes

std::unique_ptr< ShaderCacheManagerpShaderCacheManager
 
std::pair< std::recursive_mutex, ShaderDatamtxShaderData
 
std::atomic< size_t > iTotalCompileShadersQueries = 0
 
Renderer *const pRenderer = nullptr
 
+ + + + + +

+Static Private Attributes

static const std::array< char, 65 > vValidCharactersForShaderName
 
static const size_t iMaximumShaderNameLength = 40
 
+ + + + + +

+Friends

+class ShaderUser
 
+class Renderer
 
+

Detailed Description

+

Handles shader compilation and controls shader registry.

+

Constructor & Destructor Documentation

+ +

◆ ShaderManager()

+ +
+
+ + + + + + + + +
ne::ShaderManager::ShaderManager (RendererpRenderer)
+
+

Constructor.

+
Parameters
+ + +
pRendererParent renderer that uses this shader manager.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ compileShaders()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::ShaderManager::compileShaders (std::vector< ShaderDescriptionvShadersToCompile,
const std::function< void(size_t iCompiledShaderCount, size_t iTotalShadersToCompile)> & onProgress,
const std::function< void(ShaderDescription shaderDescription, std::variant< std::string, Error > error)> & onError,
const std::function< void()> & onCompleted 
)
+
+

Add shaders to be asynchronously compiled.

+

Compiled shaders are stored on disk, when a shader is needed it will be automatically loaded from disk into memory and when no longer being used it will be released from memory (stored on disk again).

+
Remarks
If a shader was already compiled previously compilation results will be stored in the shader cache on the disk and if the cache is currently valid (for ex. shader source file has not changed, included shader source files also not changed, defined shader macros not changed, build configuration not changed and etc.), shader compilation will be skipped and instead the shader will be loaded from the cache (which is faster than compiling the shader).
+
Parameters
+ + + + + +
vShadersToCompileArray of shaders to compile. Use isShaderNameCanBeUsed to check if a shader name is free (unique).
onProgressCallback function that will be called when each shader is compiled. This will also be called when all shaders are compiled (together with 'onCompleted'). The first argument is number of compiled shaders and the second one is total number of shaders to compile.
onErrorCallback function that will be called if an error occurred. This might be one of the two things: shader compilation error/warning (shader contains error) or internal error (engine failed to compile shader). If there was a shader compilation error/warning, this shader will be marked as processed and onProgress will be called (but this shader will not be added to shader manager and will not be available, you will need to fix the error and add this shader again).
onCompletedCallback function that will be called once all shaders are compiled.
+
+
+
Remarks
Note that all callback functions will be queued to be executed on the main thread and will be called later from the main thread before next frame is rendered. Because callbacks are called from the main thread it's safe to call functions that are marked as "should only be called from the main thread" from the callback functions. If you are using member functions as callbacks you need to make sure that the owner object of these member functions will not be deleted until onCompleted is called.
+
Returns
An error if something went wrong.
+ +
+
+ +

◆ compileShaderTask()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ne::ShaderManager::compileShaderTask (size_t iQueryId,
const std::shared_ptr< std::atomic< size_t > > & pCompiledShaderCount,
size_t iTotalShaderCount,
ShaderDescription shaderDescription,
const std::function< void(size_t iCompiledShaderCount, size_t iTotalShadersToCompile)> & onProgress,
const std::function< void(ShaderDescription shaderDescription, std::variant< std::string, Error > error)> & onError,
const std::function< void()> & onCompleted 
)
+
+protected
+
+

Compiles each shader. Executed as a thread pooled task to do this work asynchronously.

+
Parameters
+ + + + + + + + +
iQueryIdUnique number used to differentiate different calls compileShaders.
pCompiledShaderCountCurrent total number of shaders compiled (in query).
iTotalShaderCountTotal number of shaders to compile in this query (might be bigger than the size of the vShadersToCompile argument because the query is divided in smaller tasks).
shaderDescriptionShader to compile.
onProgressCallback function that will be called when each shader is compiled. This will also be called when all shaders are compiled (together with 'onCompleted'). The first argument is number of compiled shaders and the second one is total number of shaders to compile.
onErrorCallback function that will be called if an error occurred. This might be one of the two things: shader compilation error/warning (shader contains error) or internal error (engine failed somewhere). If there was a shader compilation error/warning, this shader will be marked as processed and onProgress will be called (but this shader will not be added to shader manager and will not be available, use will need to fix the error and add this shader again).
onCompletedCallback function that will be called once all shaders are compiled.
+
+
+ +
+
+ +

◆ findShader()

+ +
+
+ + + + + +
+ + + + + + + + +
std::shared_ptr< ShaderPack > ne::ShaderManager::findShader (const std::string & sShaderName)
+
+protected
+
+
Warning
Should only be called by ShaderUser class.
+

Returns compiled shader (compiled using compileShaders).

+
Parameters
+ + +
sShaderNameName of this shader.
+
+
+
Returns
nullptr if the shader with the specified name was not found, valid pointer otherwise.
+ +
+
+ +

◆ isShaderNameCanBeUsed()

+ +
+
+ + + + + + + + +
bool ne::ShaderManager::isShaderNameCanBeUsed (const std::string & sShaderName)
+
+

Checks if the shader name is free (no shader with this name found) to be used in compileShaders.

+
Parameters
+ + +
sShaderNameName to check.
+
+
+
Returns
true if can be used (no shader with this name found), false otherwise.
+ +
+
+ +

◆ markShaderToBeRemoved()

+ +
+
+ + + + + + + + +
bool ne::ShaderManager::markShaderToBeRemoved (const std::string & sShaderName)
+
+

Removes the shader if nobody is referencing it, otherwise marks shader to be removed later.

+

Typically you would not use this function as we expect you to make one call to compileShaders in the beginning of the game to compile ALL of your shaders (for all levels) and never remove them as compiled shaders are not stored in memory, they are stored on disk and when actually needed/used loaded from disk to memory. If some shader was used but no longer needed it will be released from memory until someone will need it again.

+

If somebody is still referencing this shader, the shader will be added to "to remove" array and will be removed later when nobody is referencing this shader (specifically when only one std::shared_ptr<Shader> instance pointing to this shader will exist (it will exist in ShaderManager as ShaderManager stores pointer to each shader)).

+
Parameters
+ + +
sShaderNameShader name to be marked for removal.
+
+
+
Returns
'true' if someone is still referencing this shader and it cannot be removed right now, thus shader's name still cannot be used in compileShaders. Returns 'false' if nobody was referencing this shader and it was removed, thus shader's name can now be used in compileShaders.
+ +
+
+ +

◆ performSelfValidation()

+ +
+
+ + + + + + + +
void ne::ShaderManager::performSelfValidation ()
+
+

Analyzes the current state to see if any shader-related errors have place (like unused shaders in memory or etc.). Fixes errors and reports them in log.

+ +
+
+ +

◆ refreshShaderCache()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::ShaderManager::refreshShaderCache ()
+
+protected
+
+

Looks if any of the global shader cache parameters changed (such as build mode, shader model, etc.), clears shader cache directory and creates a fresh new shader cache directory with up to date info.

+
Remarks
If no global shader cache metadata file existed it will create it.
+
Returns
An error if something went wrong.
+ +
+
+ +

◆ releaseShaderBytecodeIfNotUsed()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::ShaderManager::releaseShaderBytecodeIfNotUsed (const std::string & sShaderName)
+
+protected
+
+

Looks if the specified shader is not used by anyone and releases shader bytecode from memory if it was previously loaded.

+
Parameters
+ + +
sShaderNameName of the shader to release bytecode.
+
+
+ +
+
+ +

◆ removeShaderIfMarkedToBeRemoved()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::ShaderManager::removeShaderIfMarkedToBeRemoved (const std::string & sShaderName)
+
+protected
+
+

Looks if this shader was marked "to be removed" and that it's not being used by anyone else, if this is correct removes the shader.

+
Parameters
+ + +
sShaderNameName of the shader to remove.
+
+
+ +
+
+ +

◆ setRendererConfigurationForShaders()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::ShaderManager::setRendererConfigurationForShaders (const std::set< ShaderMacro > & configuration,
ShaderType shaderType 
)
+
+protected
+
+

Sets renderer's shader configuration for specific types of shaders.

+
Warning
If the configuration is changed we will try to release old shader resources from the memory. Make sure no object is holding shared pointers to old shaders (with old configuration), otherwise there would be an error printed in the logs.
+
Parameters
+ + + +
configurationConfiguration to set.
shaderTypeTypes of shaders to set the configuration to.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ iMaximumShaderNameLength

+ +
+
+ + + + + +
+ + + + +
const size_t ne::ShaderManager::iMaximumShaderNameLength = 40
+
+inlinestaticprivate
+
+

Maximum length of a shader name.

+ +
+
+ +

◆ iTotalCompileShadersQueries

+ +
+
+ + + + + +
+ + + + +
std::atomic<size_t> ne::ShaderManager::iTotalCompileShadersQueries = 0
+
+private
+
+

Total number of "compile shaders" queries. Used to differentiate calls to compileShaderTask.

+ +
+
+ +

◆ mtxShaderData

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, ShaderData> ne::ShaderManager::mtxShaderData
+
+private
+
+

Internal shader data guarded by mutex.

+ +
+
+ +

◆ pRenderer

+ +
+
+ + + + + +
+ + + + +
Renderer* const ne::ShaderManager::pRenderer = nullptr
+
+private
+
+

Do not delete. Parent renderer that uses this shader manager.

+ +
+
+ +

◆ pShaderCacheManager

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<ShaderCacheManager> ne::ShaderManager::pShaderCacheManager
+
+private
+
+

Handles everything related to shader cache.

+ +
+
+ +

◆ vValidCharactersForShaderName

+ +
+
+ + + + + +
+ + + + +
const std::array<char, 65> ne::ShaderManager::vValidCharactersForShaderName
+
+inlinestaticprivate
+
+Initial value:
= {
+
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
+
'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
+
'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
+
'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', '_', '-'}
+

Array of characters that can be used for shader name. We limit amount of valid characters because we store compiled shaders on disk and different filesystems have different limitations for file names.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/shader/ShaderManager.h
  • +
  • src/engine_lib/private/shader/general/ShaderManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ShaderManager.js b/classne_1_1ShaderManager.js new file mode 100644 index 000000000..86c7577dc --- /dev/null +++ b/classne_1_1ShaderManager.js @@ -0,0 +1,21 @@ +var classne_1_1ShaderManager = +[ + [ "ShaderData", "structne_1_1ShaderManager_1_1ShaderData.html", "structne_1_1ShaderManager_1_1ShaderData" ], + [ "ShaderManager", "classne_1_1ShaderManager.html#a7b7db57803fdfd091373e3efc2a23808", null ], + [ "compileShaders", "classne_1_1ShaderManager.html#a8d2166c0698051cb43ba0b44dd1e6536", null ], + [ "compileShaderTask", "classne_1_1ShaderManager.html#a435cd6d65d44e573a745f15f3172102a", null ], + [ "findShader", "classne_1_1ShaderManager.html#a65e06a6661d97629ce2b0bfed110e6ea", null ], + [ "isShaderNameCanBeUsed", "classne_1_1ShaderManager.html#a87aa310492aa04059696943383403f7f", null ], + [ "markShaderToBeRemoved", "classne_1_1ShaderManager.html#a005b1de2299a6257502f772992ab52b5", null ], + [ "performSelfValidation", "classne_1_1ShaderManager.html#a09beef22fcf157936533b5b7a8e62ac6", null ], + [ "refreshShaderCache", "classne_1_1ShaderManager.html#ae5a1e41b8eccc56ef48163f4d5bbd09c", null ], + [ "releaseShaderBytecodeIfNotUsed", "classne_1_1ShaderManager.html#ac605a789b555ca9fa5a267e258ec4143", null ], + [ "removeShaderIfMarkedToBeRemoved", "classne_1_1ShaderManager.html#aac23eeac24f3692764f9bb9592441c50", null ], + [ "setRendererConfigurationForShaders", "classne_1_1ShaderManager.html#a6bd5b94c95221216d98e690d502c5336", null ], + [ "iMaximumShaderNameLength", "classne_1_1ShaderManager.html#a43b2d9ff0bf54dd02457e394a373e583", null ], + [ "iTotalCompileShadersQueries", "classne_1_1ShaderManager.html#a5d7f0bf39c48d5471354b19b0327289a", null ], + [ "mtxShaderData", "classne_1_1ShaderManager.html#ab348a57a97036ac786b40b061cc6e307", null ], + [ "pRenderer", "classne_1_1ShaderManager.html#a7cd027c36ca5f4e81f04ee3c66adedde", null ], + [ "pShaderCacheManager", "classne_1_1ShaderManager.html#a1df76e59cacdb2d3f2e3c480ad78a7f4", null ], + [ "vValidCharactersForShaderName", "classne_1_1ShaderManager.html#a539c5b65b2158cab00f5161e9c3b9663", null ] +]; \ No newline at end of file diff --git a/classne_1_1ShaderPack-members.html b/classne_1_1ShaderPack-members.html new file mode 100644 index 000000000..ccd828e70 --- /dev/null +++ b/classne_1_1ShaderPack-members.html @@ -0,0 +1,128 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ShaderPack Member List
+
+
+ +

This is the complete list of members for ne::ShaderPack, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
addEngineMacrosToShaderDescription(ShaderDescription &description, const std::set< ShaderMacro > &shaderConfigurationMacros, Renderer *pRenderer)ne::ShaderPackprivatestatic
compileShaderPack(Renderer *pRenderer, const ShaderDescription &shaderDescription)ne::ShaderPackstatic
createFromCache(Renderer *pRenderer, const ShaderDescription &shaderDescription, std::optional< ShaderCacheInvalidationReason > &cacheInvalidationReason)ne::ShaderPackstatic
getInternalResources()ne::ShaderPack
getShader(const std::set< ShaderMacro > &additionalConfiguration, std::set< ShaderMacro > &fullShaderConfiguration)ne::ShaderPack
getShaderName() constne::ShaderPack
getShaderType()ne::ShaderPack
mtxInternalResourcesne::ShaderPackprivate
operator=(const ShaderPack &)=delete (defined in ne::ShaderPack)ne::ShaderPack
releaseShaderPackDataFromMemoryIfLoaded()ne::ShaderPack
setRendererConfiguration(const std::set< ShaderMacro > &renderConfiguration)ne::ShaderPackprivate
ShaderManager (defined in ne::ShaderPack)ne::ShaderPackfriend
ShaderPack()=delete (defined in ne::ShaderPack)ne::ShaderPack
ShaderPack(const ShaderPack &)=delete (defined in ne::ShaderPack)ne::ShaderPack
ShaderPack(const std::string &sShaderName, ShaderType shaderType)ne::ShaderPackprivate
shaderTypene::ShaderPackprivate
sShaderNamene::ShaderPackprivate
~ShaderPack()=default (defined in ne::ShaderPack)ne::ShaderPackvirtual
+
+ + + + diff --git a/classne_1_1ShaderPack.html b/classne_1_1ShaderPack.html new file mode 100644 index 000000000..166b74b29 --- /dev/null +++ b/classne_1_1ShaderPack.html @@ -0,0 +1,600 @@ + + + + + + + +Nameless Engine: ne::ShaderPack Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <ShaderPack.h>

+ + + + +

+Classes

struct  InternalResources
 
+ + + + + + + + + + + + + + + +

+Public Member Functions

ShaderPack (const ShaderPack &)=delete
 
+ShaderPackoperator= (const ShaderPack &)=delete
 
bool releaseShaderPackDataFromMemoryIfLoaded ()
 
std::shared_ptr< ShadergetShader (const std::set< ShaderMacro > &additionalConfiguration, std::set< ShaderMacro > &fullShaderConfiguration)
 
std::string getShaderName () const
 
ShaderType getShaderType ()
 
std::pair< std::mutex, InternalResources > * getInternalResources ()
 
+ + + + + +

+Static Public Member Functions

static std::variant< std::shared_ptr< ShaderPack >, std::string, ErrorcompileShaderPack (Renderer *pRenderer, const ShaderDescription &shaderDescription)
 
static std::variant< std::shared_ptr< ShaderPack >, ErrorcreateFromCache (Renderer *pRenderer, const ShaderDescription &shaderDescription, std::optional< ShaderCacheInvalidationReason > &cacheInvalidationReason)
 
+ + + + + +

+Private Member Functions

 ShaderPack (const std::string &sShaderName, ShaderType shaderType)
 
void setRendererConfiguration (const std::set< ShaderMacro > &renderConfiguration)
 
+ + + +

+Static Private Member Functions

static void addEngineMacrosToShaderDescription (ShaderDescription &description, const std::set< ShaderMacro > &shaderConfigurationMacros, Renderer *pRenderer)
 
+ + + + + + + +

+Private Attributes

std::pair< std::mutex, InternalResourcesmtxInternalResources
 
std::string sShaderName
 
ShaderType shaderType
 
+ + + +

+Friends

+class ShaderManager
 
+

Detailed Description

+

Represents a group of different variants of one shader (typically this means one shader compiled with different combinations of predefined macros).

+

Constructor & Destructor Documentation

+ +

◆ ShaderPack()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ne::ShaderPack::ShaderPack (const std::string & sShaderName,
ShaderType shaderType 
)
+
+private
+
+

Constructor to create an empty shader pack.

+
Parameters
+ + + +
sShaderNameInitial name of the shader.
shaderTypeType of shaders this pack stores.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ addEngineMacrosToShaderDescription()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::ShaderPack::addEngineMacrosToShaderDescription (ShaderDescriptiondescription,
const std::set< ShaderMacro > & shaderConfigurationMacros,
RendererpRenderer 
)
+
+staticprivate
+
+

Adds additional defined macros to shader description that engine shaders expect.

+
Parameters
+ + + + +
descriptionShader description to modify.
shaderConfigurationMacrosMacros of the current shader configuration to add.
pRendererUsed renderer.
+
+
+ +
+
+ +

◆ compileShaderPack()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::variant< std::shared_ptr< ShaderPack >, std::string, Error > ne::ShaderPack::compileShaderPack (RendererpRenderer,
const ShaderDescriptionshaderDescription 
)
+
+static
+
+

Compiles a shader pack.

+
Parameters
+ + + +
pRendererUsed renderer.
shaderDescriptionDescription that describes the shader and how the shader should be compiled.
+
+
+
Returns
One of the three values: compiled shader pack, string containing shader compilation error/warning, internal error
+ +
+
+ +

◆ createFromCache()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::shared_ptr< ShaderPack >, Error > ne::ShaderPack::createFromCache (RendererpRenderer,
const ShaderDescriptionshaderDescription,
std::optional< ShaderCacheInvalidationReason > & cacheInvalidationReason 
)
+
+static
+
+

Creates a new shader pack using shader cache on the disk.

+
Parameters
+ + + + +
pRendererUsed renderer.
shaderDescriptionDescription that describes the shader and how the shader should be compiled. Used for cache invalidation.
cacheInvalidationReasonWill be not empty if cache was invalidated. Used for testing.
+
+
+
Returns
Error if shader cache is corrupted or invalid, this also means that corrupted/invalid shader cache directory was deleted and cache for this shader no longer exists, otherwise a shader pack created using cache.
+ +
+
+ +

◆ getInternalResources()

+ +
+
+ + + + + + + +
std::pair< std::mutex, ShaderPack::InternalResources > * ne::ShaderPack::getInternalResources ()
+
+

Returns internal resources that this shader pack uses.

+
Returns
Internal resources.
+ +
+
+ +

◆ getShader()

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::shared_ptr< Shader > ne::ShaderPack::getShader (const std::set< ShaderMacro > & additionalConfiguration,
std::set< ShaderMacro > & fullShaderConfiguration 
)
+
+

Returns a shader that matches the current renderer's shader configuration and the specified additional configuration.

+
Remarks
Since renderer's shader configuration usually does not contain all needed macros for a shader, you should specify an additional configuration that will be considered together with the renderer's configuration to find a matching shader that has uses this configuration (macros).
+
+Some macros that the renderer defines in the current renderer shader configuration will not be appended to the specified configuration if they are not applicable (i.e. if the renderer defines texture filtering macro but your configuration does not have a diffuse texture macro - adding texture filtering macro is useless) see ShaderMacro::isMacroShouldBeConsideredInConfiguration.
+
+If the a shader that matches the target configuration is not found an error will be shown and an exception will be thrown.
+
Parameters
+ + + +
additionalConfigurationMacros that the renderer does not define but that are needed by the current configuration for the shader. If this array contains a macro that the renderer already defines an error will be shown and an exception will be thrown.
fullShaderConfigurationOutput. Full shader configuration (might include renderer's configuration) of the found shader.
+
+
+
Returns
Found shader.
+ +
+
+ +

◆ getShaderName()

+ +
+
+ + + + + + + +
std::string ne::ShaderPack::getShaderName () const
+
+

Returns unique name of this shader.

+
Returns
Unique name of this shader.
+ +
+
+ +

◆ getShaderType()

+ +
+
+ + + + + + + +
ShaderType ne::ShaderPack::getShaderType ()
+
+

Returns type of this shader.

+
Returns
Shader type.
+ +
+
+ +

◆ releaseShaderPackDataFromMemoryIfLoaded()

+ +
+
+ + + + + + + +
bool ne::ShaderPack::releaseShaderPackDataFromMemoryIfLoaded ()
+
+

Releases underlying shader bytecode for each shader from memory (this object will not be deleted) if the shader bytecode was loaded into memory. Next time this shader will be needed it will be loaded from disk.

+
Returns
false if at least one shader variant was released from memory, true if all variants were not loaded into memory.
+ +
+
+ +

◆ setRendererConfiguration()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::ShaderPack::setRendererConfiguration (const std::set< ShaderMacro > & renderConfiguration)
+
+private
+
+

Sets renderer's shader configuration, it will be considered in the further calls to getShader.

+
Warning
If the configuration is changed we will try to release old shader's resources from the memory. Make sure no object is holding shared pointers to old shader (old configuration), otherwise there would be an error printed in the logs.
+
Parameters
+ + +
renderConfigurationNew renderer configuration.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ mtxInternalResources

+ +
+
+ + + + + +
+ + + + +
std::pair<std::mutex, InternalResources> ne::ShaderPack::mtxInternalResources
+
+private
+
+

Used data.

+ +
+
+ +

◆ shaderType

+ +
+
+ + + + + +
+ + + + +
ShaderType ne::ShaderPack::shaderType
+
+private
+
+

Type of shaders this pack stores.

+ +
+
+ +

◆ sShaderName

+ +
+
+ + + + + +
+ + + + +
std::string ne::ShaderPack::sShaderName
+
+private
+
+

Initial shader name (without configuration text).

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/general/ShaderPack.h
  • +
  • src/engine_lib/private/shader/general/ShaderPack.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ShaderPack.js b/classne_1_1ShaderPack.js new file mode 100644 index 000000000..0601fa258 --- /dev/null +++ b/classne_1_1ShaderPack.js @@ -0,0 +1,17 @@ +var classne_1_1ShaderPack = +[ + [ "InternalResources", "structne_1_1ShaderPack_1_1InternalResources.html", "structne_1_1ShaderPack_1_1InternalResources" ], + [ "ShaderPack", "classne_1_1ShaderPack.html#a42ceba304a51e8c5585dbe9c1771f869", null ], + [ "addEngineMacrosToShaderDescription", "classne_1_1ShaderPack.html#ae213785f3aee3b1c7942d509557b9d10", null ], + [ "compileShaderPack", "classne_1_1ShaderPack.html#a3c7a7c5e1701d992df2a23ffb1a9dff0", null ], + [ "createFromCache", "classne_1_1ShaderPack.html#afdc9476711344b190a2a07855106acce", null ], + [ "getInternalResources", "classne_1_1ShaderPack.html#adca074fdbd97f63b79d9f85093539b1c", null ], + [ "getShader", "classne_1_1ShaderPack.html#ad75d45005776472f0afac481ac569abd", null ], + [ "getShaderName", "classne_1_1ShaderPack.html#a86ea31924003ccee3a3d8550986df6a8", null ], + [ "getShaderType", "classne_1_1ShaderPack.html#ad7359b8a3b2719f520503653aa7ae6b3", null ], + [ "releaseShaderPackDataFromMemoryIfLoaded", "classne_1_1ShaderPack.html#a794382bfd7d48874044a2f2e8ed28835", null ], + [ "setRendererConfiguration", "classne_1_1ShaderPack.html#ab663e6d76007cf72fa73d27a080b11de", null ], + [ "mtxInternalResources", "classne_1_1ShaderPack.html#a3e3f35470603f26915aad667807d52ea", null ], + [ "shaderType", "classne_1_1ShaderPack.html#a881769542fcc6c539e914044e76bcaae", null ], + [ "sShaderName", "classne_1_1ShaderPack.html#ac9e80f76d3fe09e95c34aab120404159", null ] +]; \ No newline at end of file diff --git a/classne_1_1ShaderResourceBindingBase-members.html b/classne_1_1ShaderResourceBindingBase-members.html new file mode 100644 index 000000000..2d00cf97c --- /dev/null +++ b/classne_1_1ShaderResourceBindingBase-members.html @@ -0,0 +1,117 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ShaderResourceBindingBase Member List
+
+
+ +

This is the complete list of members for ne::ShaderResourceBindingBase, including all inherited members.

+ + + + + + + + +
changeUsedPipelines(const std::unordered_set< Pipeline * > &pipelinesToUse)=0ne::ShaderResourceBindingBasepure virtual
getShaderResourceName() constne::ShaderResourceBindingBase
onAfterAllPipelinesRefreshedResources()=0ne::ShaderResourceBindingBaseprotectedpure virtual
PipelineManager (defined in ne::ShaderResourceBindingBase)ne::ShaderResourceBindingBasefriend
ShaderResourceBindingBase(const std::string &sShaderResourceName)ne::ShaderResourceBindingBaseprotected
sShaderResourceNamene::ShaderResourceBindingBaseprivate
~ShaderResourceBindingBase()=default (defined in ne::ShaderResourceBindingBase)ne::ShaderResourceBindingBasevirtual
+
+ + + + diff --git a/classne_1_1ShaderResourceBindingBase.html b/classne_1_1ShaderResourceBindingBase.html new file mode 100644 index 000000000..67a3d5449 --- /dev/null +++ b/classne_1_1ShaderResourceBindingBase.html @@ -0,0 +1,306 @@ + + + + + + + +Nameless Engine: ne::ShaderResourceBindingBase Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::ShaderResourceBindingBase Class Referenceabstract
+
+
+ +

#include <ShaderResourceBinding.h>

+
+Inheritance diagram for ne::ShaderResourceBindingBase:
+
+
+ + +ne::ShaderCpuWriteResourceBinding +ne::ShaderTextureResourceBinding +ne::GlslShaderTextureResourceBinding +ne::HlslShaderTextureResourceBinding + +
+ + + + + + +

+Public Member Functions

virtual std::optional< ErrorchangeUsedPipelines (const std::unordered_set< Pipeline * > &pipelinesToUse)=0
 
std::string getShaderResourceName () const
 
+ + + + + +

+Protected Member Functions

 ShaderResourceBindingBase (const std::string &sShaderResourceName)
 
virtual std::optional< ErroronAfterAllPipelinesRefreshedResources ()=0
 
+ + + +

+Private Attributes

const std::string sShaderResourceName
 
+ + + +

+Friends

+class PipelineManager
 
+

Detailed Description

+

Base class for shader resource bindings.

+
Remarks
A shader resource binding acts as a bridge between game/engine entities that want to set/bind some data (like buffer/texture) to some shader resource (defined in HLSL/GLSL) and the renderer that is able to set/bind the specified data to a binding that corresponds to the specified shader resources (defined in HLSL/GLSL) so that the specified data can be accessed in shaders.
+

Constructor & Destructor Documentation

+ +

◆ ShaderResourceBindingBase()

+ +
+
+ + + + + +
+ + + + + + + + +
ne::ShaderResourceBindingBase::ShaderResourceBindingBase (const std::string & sShaderResourceName)
+
+protected
+
+

Initializes the binding.

+
Parameters
+ + +
sShaderResourceNameName of the resource we are referencing (should be exactly the same as the resource name written in the shader file we are referencing).
+
+
+ +
+
+

Member Function Documentation

+ +

◆ changeUsedPipelines()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual std::optional< Error > ne::ShaderResourceBindingBase::changeUsedPipelines (const std::unordered_set< Pipeline * > & pipelinesToUse)
+
+pure virtual
+
+

Called to make the resource to discard currently used pipelines and bind/reference other pipelines.

+
Warning
Expects that the caller is using some mutex to protect this shader resource from being used in the draw function while this function is not finished (i.e. make sure the CPU will not queue a new frame while this function is not finished).
+
Remarks
For example, for this function can be called from a mesh node that changed its geometry and thus added/removed some material slots, or if some material that mesh node is using changed its pipeline.
+
Parameters
+ + +
pipelinesToUsePipelines to use instead of the current ones.
+
+
+
Returns
Error if something went wrong.
+ +

Implemented in ne::ShaderCpuWriteResourceBinding, ne::GlslShaderTextureResourceBinding, and ne::HlslShaderTextureResourceBinding.

+ +
+
+ +

◆ getShaderResourceName()

+ +
+
+ + + + + + + +
std::string ne::ShaderResourceBindingBase::getShaderResourceName () const
+
+

Returns name of the resource (from the shader code) that this binding references.

+
Returns
Resource name.
+ +
+
+ +

◆ onAfterAllPipelinesRefreshedResources()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::optional< Error > ne::ShaderResourceBindingBase::onAfterAllPipelinesRefreshedResources ()
+
+protectedpure virtual
+
+

Called from the pipeline manager to notify that all pipelines released their internal resources and now restored them so their internal resources (for example push constants) might be different now and shader resource now needs to check that everything that it needs is still there and possibly re-bind to pipeline's descriptors since these might have been also re-created.

+
Returns
Error if something went wrong.
+ +

Implemented in ne::ShaderCpuWriteResourceBinding, ne::GlslShaderTextureResourceBinding, and ne::HlslShaderTextureResourceBinding.

+ +
+
+

Member Data Documentation

+ +

◆ sShaderResourceName

+ +
+
+ + + + + +
+ + + + +
const std::string ne::ShaderResourceBindingBase::sShaderResourceName
+
+private
+
+

Name of the resource we are referencing (name in the shader code).

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/general/resource/binding/ShaderResourceBinding.h
  • +
  • src/engine_lib/private/shader/general/resource/binding/ShaderResourceBinding.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ShaderResourceBindingBase.js b/classne_1_1ShaderResourceBindingBase.js new file mode 100644 index 000000000..6508e913c --- /dev/null +++ b/classne_1_1ShaderResourceBindingBase.js @@ -0,0 +1,8 @@ +var classne_1_1ShaderResourceBindingBase = +[ + [ "ShaderResourceBindingBase", "classne_1_1ShaderResourceBindingBase.html#a605b56970e874418a368dda9eca826ef", null ], + [ "changeUsedPipelines", "classne_1_1ShaderResourceBindingBase.html#a994a141941a81fd2058c36f144c1685f", null ], + [ "getShaderResourceName", "classne_1_1ShaderResourceBindingBase.html#a741dd05156bdd35eed54ab3e549b448c", null ], + [ "onAfterAllPipelinesRefreshedResources", "classne_1_1ShaderResourceBindingBase.html#aeeb20e00c70013812394fc38f24677c8", null ], + [ "sShaderResourceName", "classne_1_1ShaderResourceBindingBase.html#a9f8fc5fdd024fa41de9e601b633ab649", null ] +]; \ No newline at end of file diff --git a/classne_1_1ShaderResourceBindingBase.png b/classne_1_1ShaderResourceBindingBase.png new file mode 100644 index 0000000000000000000000000000000000000000..a1bb2da2d4fc07d0e00a2d079d141046ee6dee11 GIT binary patch literal 2089 zcmb7FX;@Qd7LHbGp`a6#9mQf4fr=m^i?XOm0|jn`1O&=vk$o!=gh7@EW+ny@f*?ha zfMQKZfFQCOX`qB<6fp{6(}u7VFbNQYkc9}$4bM#bjL-b&+#mOT-~Ha_ob#UZp7Z5i z1dwVfx+)L|M9sw+?g@eHM1yPm7oUOeRavD0_|d!QhCys?ZGp>oi)+b*ZnBNJ@ekT% zFWz-^b%FoU#ltn=nKITBKtsU&_G7*CE*k>b-RuHChe_SB#1RzpP5$CE%>qhGC0R4G zM=Xj4VmNw97308Y#20F(e7l0ASvEv~91l@XbtE%{^4SvL7vLv!k(23=vGY9*-hSAt zJgka(M6WAAG^-L^;z}}l>wfbSCj0i+*sUbCMex_e!^Y#emjVatm*1QTv}y4im1JyL z3Ou3*J0>&jl+HA+g#l%Q!Q<+h4JqQqm95sFRa4qJ?~5_B36=>hNt;(LUgck|4Q|>1 zy&vK2U+f{FXP;ICevmGESGuPVxcTpRB8}2RQpKtgolBgvHdO5at&3h+9n%f4r&SoXvD|IymhFj5m5SB)hqinbnH4+sc+=pIwE; zg#~M1+|FR!nP)B58A8XxPTd4BIijZ(>!NgloWV6D<`AW!ayDw=JFa9yQ;`Va894|I zItrdRlMiKke^QoV9(MinL)jsTxLxWIPIgMlr)JUt%AxGj3fy6{Zy#ccoc1ZIcp&mW zRYZWOX3*0vznj3ho%R3ADpqCBGg-PrmQGRET`5BcAWsoL@vD%-pEC3ZY<4I)pv`)L zCZH2#^EWP|=y?1r+D-$SkUm7g<5P;aH3x<6h7t4dsYW1oxZ=>sVS+L|m$Z?GukpF1 zYIV4}y>DFfZ0;HrTi}C(!$0^I7WGQ$CWxA zXs=ZYb^Xafb*O0H+XD!A-3Ka~Mc!~LC6;W!$UvEwMO{JfyKt7-Ry;`|OZvPMkNxwT z<0PN-&@%|F&{wM+H|PO#KWHkkY}Zhc1TUel{nhr;*TS+zq^;GSz~ z@#wN^S}S>jEj}3~YPs2MAf{wFKfTI_V)O7iAeCG|EfTYr>jGrRlE` zg$o1N?&cJJ!;smY4tKH`5MPi`s4-UeAJ3zJL2qor{?P)*#@%KQ{DkNRascc}BI)=y zovx3oGR3h#T+1r8ya}B-KuLr48Ix*n1kvV4A}iDC?Y7=F31!U#|FHb{>%k3&XPNiV zW3g@jtaX^ArAT0;^4Z@Ct*&>k_n7XzQ=R{~9~rC@q~&!TX-k!DnqxO}&{;(B?T?46 zuH}4Cq{qls11b`JJ)DmpuOfqGl`j2+hC<^X+VvMMvkfP(CWh6vOqu9_oPBm;R)I~> z-&oAY*SL@k4JTc|*0>2E;QB=%ZUz+KqkTLKyl02Zk;tdhfd#N&pI6+-;?^!q>M z{(E~(wPORumIj{)=yBm-%;P0yhBMMz3Sw3NP3#lasAN7?=HGcxVj7B`!{4Sww_F<> zH1Qh2TS<>srTKsxyCCg`s$>ga8R zVd;6t8nzvVjCd<+yd92d%~v`*>VJoj)==57t}`~`KS@)oS&q|ek@|%-wW8{;q;KgT z2c1l)?qyCoD2FAbaVN*-spFg0;q5Ac7*6@Laa8j8AT0mOlQ?@{+M9lI`7}S(hx23p z`w42m#Pq_zqviArgJZRAN!t+FH0&5*EebczwU)CE+ zWliyynO}j{DB)82;E&4w%kxI(8Yc)lByObli8vu*R#nT&fR$%$0oP)AQwbi!PNc>c zZMbR9<`kw>v_2sbSmNw;!fXs@ieeNK%6WTyc~nFP&9Kw@9vNK^Y+=3@A>`~RaD#MI zX1t(`fa6Yq`m7i%dq)XY<*Fgr4K{}qdOoAL$mlcyBU?BibsVup;Uufp{@|q!aX|oZ J+WFv|e*pla9RdIV literal 0 HcmV?d00001 diff --git a/classne_1_1ShaderTextureResourceBinding-members.html b/classne_1_1ShaderTextureResourceBinding-members.html new file mode 100644 index 000000000..589a8d588 --- /dev/null +++ b/classne_1_1ShaderTextureResourceBinding-members.html @@ -0,0 +1,119 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ShaderTextureResourceBinding Member List
+
+
+ +

This is the complete list of members for ne::ShaderTextureResourceBinding, including all inherited members.

+ + + + + + + + + + +
changeUsedPipelines(const std::unordered_set< Pipeline * > &pipelinesToUse)=0ne::ShaderResourceBindingBasepure virtual
getShaderResourceName() constne::ShaderResourceBindingBase
onAfterAllPipelinesRefreshedResources()=0ne::ShaderResourceBindingBaseprotectedpure virtual
ShaderResourceBindingBase(const std::string &sShaderResourceName)ne::ShaderResourceBindingBaseprotected
ShaderTextureResourceBinding(const std::string &sShaderResourceName)ne::ShaderTextureResourceBindingprotected
sShaderResourceNamene::ShaderResourceBindingBaseprivate
useNewTexture(std::unique_ptr< TextureHandle > pTextureToUse)=0ne::ShaderTextureResourceBindingpure virtual
~ShaderResourceBindingBase()=default (defined in ne::ShaderResourceBindingBase)ne::ShaderResourceBindingBasevirtual
~ShaderTextureResourceBinding() override=default (defined in ne::ShaderTextureResourceBinding)ne::ShaderTextureResourceBindingvirtual
+
+ + + + diff --git a/classne_1_1ShaderTextureResourceBinding.html b/classne_1_1ShaderTextureResourceBinding.html new file mode 100644 index 000000000..2aca51cfc --- /dev/null +++ b/classne_1_1ShaderTextureResourceBinding.html @@ -0,0 +1,224 @@ + + + + + + + +Nameless Engine: ne::ShaderTextureResourceBinding Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::ShaderTextureResourceBinding Class Referenceabstract
+
+
+ +

#include <ShaderResourceBinding.h>

+
+Inheritance diagram for ne::ShaderTextureResourceBinding:
+
+
+ + +ne::ShaderResourceBindingBase +ne::GlslShaderTextureResourceBinding +ne::HlslShaderTextureResourceBinding + +
+ + + + + + + + + +

+Public Member Functions

virtual std::optional< ErroruseNewTexture (std::unique_ptr< TextureHandle > pTextureToUse)=0
 
- Public Member Functions inherited from ne::ShaderResourceBindingBase
virtual std::optional< ErrorchangeUsedPipelines (const std::unordered_set< Pipeline * > &pipelinesToUse)=0
 
std::string getShaderResourceName () const
 
+ + + + + + + + +

+Protected Member Functions

 ShaderTextureResourceBinding (const std::string &sShaderResourceName)
 
- Protected Member Functions inherited from ne::ShaderResourceBindingBase
 ShaderResourceBindingBase (const std::string &sShaderResourceName)
 
virtual std::optional< ErroronAfterAllPipelinesRefreshedResources ()=0
 
+

Detailed Description

+

References some texture from shader code (can also a single texture in the array of textures).

+

Constructor & Destructor Documentation

+ +

◆ ShaderTextureResourceBinding()

+ +
+
+ + + + + +
+ + + + + + + + +
ne::ShaderTextureResourceBinding::ShaderTextureResourceBinding (const std::string & sShaderResourceName)
+
+protected
+
+

Initializes the binding.

+
Parameters
+ + +
sShaderResourceNameName of the resource we are referencing (should be exactly the same as the resource name written in the shader file we are referencing).
+
+
+ +
+
+

Member Function Documentation

+ +

◆ useNewTexture()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual std::optional< Error > ne::ShaderTextureResourceBinding::useNewTexture (std::unique_ptr< TextureHandlepTextureToUse)
+
+pure virtual
+
+

Makes the binding to reference the new (specified) texture.

+
Warning
Expects that the caller is using some mutex to protect this binding from being used in the draw function while this function is not finished (i.e. make sure the CPU will not queue a new frame while this function is not finished).
+
Parameters
+ + +
pTextureToUseTexture to reference.
+
+
+
Returns
Error if something went wrong.
+ +

Implemented in ne::GlslShaderTextureResourceBinding, and ne::HlslShaderTextureResourceBinding.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/general/resource/binding/ShaderResourceBinding.h
  • +
  • src/engine_lib/private/shader/general/resource/binding/ShaderResourceBinding.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ShaderTextureResourceBinding.js b/classne_1_1ShaderTextureResourceBinding.js new file mode 100644 index 000000000..6f44db842 --- /dev/null +++ b/classne_1_1ShaderTextureResourceBinding.js @@ -0,0 +1,5 @@ +var classne_1_1ShaderTextureResourceBinding = +[ + [ "ShaderTextureResourceBinding", "classne_1_1ShaderTextureResourceBinding.html#aa9ee18e305ac2dd28e568b26547ed002", null ], + [ "useNewTexture", "classne_1_1ShaderTextureResourceBinding.html#add4e143f594bbe46d08065f0b8bd03ca", null ] +]; \ No newline at end of file diff --git a/classne_1_1ShaderTextureResourceBinding.png b/classne_1_1ShaderTextureResourceBinding.png new file mode 100644 index 0000000000000000000000000000000000000000..0bbd336b1ccb8115ff8563d6a456f8b4c3304bd3 GIT binary patch literal 1682 zcmcJQYcShs6vh*#QLJ9Jt*$kK3R~4xZJ1QuwuU9WxFm63RkULNh@wGU+iHu}Rs|^y z)y}3R(Ijg$QR3D{>AFOVNE>Xcp$H*p#I@PK{j@u~Gdr_0`_4Si`MuBi@_smT-drya zHyy37wIC3P4%*!X1A#!rAm?mV2R%t!ECh?b*D0K zMMlSSTk=sy+vm>M2v1<#IHPGy16J+LXhwwc_^HI0peQFyPX?BE`!5w zwH)r)2FUJ9BbZy3)mpsPP9zZYsAX%7;=Mc}($p^fqGt%Y ziSR^Ui(shD0&Rj}A~w1jPdAXQH$$f$9?b%c1jB0x@D1*NfiVgoA_m7ozEhJk?IB-Y zilhZz%CUz}=^7c)b&d9U)`A2FX}`Iy5dy6Lv)&H{P|nwH4!~jLO;3gmQXBnu)332t zHDz>nACOY~-oR~j=*~Ue&24Y1Ni#FX^ug|#Z-ZW4fbuBYof*bG-H!O->8wzUjO(#R zSfEPnqh=jcgrLc%;zNQFVoGxPJroyNHcNDo)h z%fI+3k)(Ot5Zytyrop>tMQ0pQf6(41h&bzv2Trmd{EE}|S|o@DIf*3(!RKnDG;+Bk z*A)rvq}J@pz)Sfn`;9$?zH98$FFWYfnK7_?BC+>!w1~2g%30dQVeg*wMh2k!7ObfR=!XITdW9SYbq14vQ*&X5Wd5lh zBKlfA~UsHR44_^*^qLb!XY;VyI_n#F+YHY|n(I zj#<;RifM=9mH@aN=_MXevNG~2>?KJ+on?;;kGpcvaVs5eg04W$+US4GtlFqSI+``u zx8zE?ChcSu1czsj_=|J%mkm)}&P{g(uj0e)5<(u#$zbrSs3tDI#YJT0YgaKp-|Upp zKH<{4^~bnu)y0iGH-k>$N=cMj--lZkZS0ZB(M5TKAL-8GW1ys}T##I_J|B)xOXmxp zHVXy{6Dt<=Y?GPCEYXJIWzSYt^hAobMWj)>b|496(&;rT2OI2Af?%>Z z*yFCp6Y20ZfmvXR&V<616Newp+GpdTA-#=4z;#4Wyh z8b_*@eadN^t>0ps!b{DP*ZTR9ZoOfRGQ~i<F7UgW&$& S4MXtvfS_GHTv*O$ulx>?Y(E45 literal 0 HcmV?d00001 diff --git a/classne_1_1ShaderTextureResourceBindingManager-members.html b/classne_1_1ShaderTextureResourceBindingManager-members.html new file mode 100644 index 000000000..b6a468b55 --- /dev/null +++ b/classne_1_1ShaderTextureResourceBindingManager-members.html @@ -0,0 +1,123 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ShaderTextureResourceBindingManager Member List
+
+
+ +

This is the complete list of members for ne::ShaderTextureResourceBindingManager, including all inherited members.

+ + + + + + + + + + + + + + +
createShaderTextureResource(const std::string &sShaderResourceName, const std::string &sResourceAdditionalInfo, const std::unordered_set< Pipeline * > &pipelinesToUse, std::unique_ptr< TextureHandle > pTextureToUse)ne::ShaderTextureResourceBindingManager
destroyResource(ShaderTextureResourceBinding *pResourceToDestroy)ne::ShaderTextureResourceBindingManagerprivate
getResources()ne::ShaderTextureResourceBindingManager
handleResourceCreation(std::variant< std::unique_ptr< ShaderTextureResourceBinding >, Error > result)ne::ShaderTextureResourceBindingManagerprivate
mtxShaderTextureResourcesne::ShaderTextureResourceBindingManagerprivate
operator=(const ShaderTextureResourceBindingManager &)=delete (defined in ne::ShaderTextureResourceBindingManager)ne::ShaderTextureResourceBindingManager
pRendererne::ShaderTextureResourceBindingManagerprivate
Renderer (defined in ne::ShaderTextureResourceBindingManager)ne::ShaderTextureResourceBindingManagerfriend
ShaderTextureResourceBindingManager()=delete (defined in ne::ShaderTextureResourceBindingManager)ne::ShaderTextureResourceBindingManager
ShaderTextureResourceBindingManager(const ShaderTextureResourceBindingManager &)=delete (defined in ne::ShaderTextureResourceBindingManager)ne::ShaderTextureResourceBindingManager
ShaderTextureResourceBindingManager(Renderer *pRenderer)ne::ShaderTextureResourceBindingManagerprivate
ShaderTextureResourceBindingUniquePtr (defined in ne::ShaderTextureResourceBindingManager)ne::ShaderTextureResourceBindingManagerfriend
~ShaderTextureResourceBindingManager()ne::ShaderTextureResourceBindingManager
+
+ + + + diff --git a/classne_1_1ShaderTextureResourceBindingManager.html b/classne_1_1ShaderTextureResourceBindingManager.html new file mode 100644 index 000000000..c24b7f7ee --- /dev/null +++ b/classne_1_1ShaderTextureResourceBindingManager.html @@ -0,0 +1,403 @@ + + + + + + + +Nameless Engine: ne::ShaderTextureResourceBindingManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::ShaderTextureResourceBindingManager Class Reference
+
+
+ +

#include <ShaderTextureResourceBindingManager.h>

+ + + + + + + + + + + + +

+Public Member Functions

ShaderTextureResourceBindingManager (const ShaderTextureResourceBindingManager &)=delete
 
+ShaderTextureResourceBindingManageroperator= (const ShaderTextureResourceBindingManager &)=delete
 
 ~ShaderTextureResourceBindingManager ()
 
std::variant< ShaderTextureResourceBindingUniquePtr, ErrorcreateShaderTextureResource (const std::string &sShaderResourceName, const std::string &sResourceAdditionalInfo, const std::unordered_set< Pipeline * > &pipelinesToUse, std::unique_ptr< TextureHandle > pTextureToUse)
 
std::pair< std::recursive_mutex, std::unordered_map< ShaderTextureResourceBinding *, std::unique_ptr< ShaderTextureResourceBinding > > > * getResources ()
 
+ + + + + + + +

+Private Member Functions

 ShaderTextureResourceBindingManager (Renderer *pRenderer)
 
std::variant< ShaderTextureResourceBindingUniquePtr, ErrorhandleResourceCreation (std::variant< std::unique_ptr< ShaderTextureResourceBinding >, Error > result)
 
void destroyResource (ShaderTextureResourceBinding *pResourceToDestroy)
 
+ + + + + +

+Private Attributes

RendererpRenderer = nullptr
 
std::pair< std::recursive_mutex, std::unordered_map< ShaderTextureResourceBinding *, std::unique_ptr< ShaderTextureResourceBinding > > > mtxShaderTextureResources
 
+ + + + + +

+Friends

+class Renderer
 
+class ShaderTextureResourceBindingUniquePtr
 
+

Detailed Description

+

Owns all shader resources that references texture resource.

+
Remarks
This manager does not really do anything but it provides a single and thread-safe way to interact with all shader resources. Initial motivation for this manager was to have a safe way to notify all texture resources using ShaderResourceBase::onAfterAllPipelinesRefreshedResources from pipeline manager (to avoid running this function on not fully initialized shader resources or shader resources that are being destroyed because this could happen if instead of this manager we just had some notifications on ShaderResourceBase constructor/destructor).
+

Constructor & Destructor Documentation

+ +

◆ ~ShaderTextureResourceBindingManager()

+ +
+
+ + + + + + + +
ne::ShaderTextureResourceBindingManager::~ShaderTextureResourceBindingManager ()
+
+

Makes sure that no resource exists.

+ +
+
+ +

◆ ShaderTextureResourceBindingManager()

+ +
+
+ + + + + +
+ + + + + + + + +
ne::ShaderTextureResourceBindingManager::ShaderTextureResourceBindingManager (RendererpRenderer)
+
+private
+
+

Initializes manager.

+
Parameters
+ + +
pRenderer
+
+
+ +
+
+

Member Function Documentation

+ +

◆ createShaderTextureResource()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< ShaderTextureResourceBindingUniquePtr, Error > ne::ShaderTextureResourceBindingManager::createShaderTextureResource (const std::string & sShaderResourceName,
const std::string & sResourceAdditionalInfo,
const std::unordered_set< Pipeline * > & pipelinesToUse,
std::unique_ptr< TextureHandlepTextureToUse 
)
+
+

Creates a new render-specific shader resource.

+
Parameters
+ + + + + +
sShaderResourceNameName of the resource we are referencing (should be exactly the same as the resource name written in the shader file we are referencing).
sResourceAdditionalInfoAdditional text that we will append to created resource name (used for logging).
pipelinesToUsePipelines that use shader/parameters we are referencing.
pTextureToUseTexture that should be binded to a descriptor.
+
+
+
Returns
Error if something went wrong, otherwise created shader resource.
+ +
+
+ +

◆ destroyResource()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::ShaderTextureResourceBindingManager::destroyResource (ShaderTextureResourceBindingpResourceToDestroy)
+
+private
+
+

Called by shader texture resource unique pointers to destroy the specified resource because it will no longer be used.

+
Parameters
+ + +
pResourceToDestroyResource to destroy.
+
+
+ +
+
+ +

◆ getResources()

+ +
+
+ + + + + + + +
std::pair< std::recursive_mutex, std::unordered_map< ShaderTextureResourceBinding *, std::unique_ptr< ShaderTextureResourceBinding > > > * ne::ShaderTextureResourceBindingManager::getResources ()
+
+

Returns all shader resources that reference textures.

+
Remarks
Do not free (delete) or modify unique pointers or returned map.
+
Returns
Internal resources.
+ +
+
+ +

◆ handleResourceCreation()

+ +
+
+ + + + + +
+ + + + + + + + +
std::variant< ShaderTextureResourceBindingUniquePtr, Error > ne::ShaderTextureResourceBindingManager::handleResourceCreation (std::variant< std::unique_ptr< ShaderTextureResourceBinding >, Errorresult)
+
+private
+
+

Processes resource creation.

+
Parameters
+ + +
resultResult of resource creation function.
+
+
+
Returns
Result of resource creation.
+ +
+
+

Member Data Documentation

+ +

◆ mtxShaderTextureResources

+ +
+
+ + + + + +
+ + + + +
std::pair< std::recursive_mutex, std::unordered_map<ShaderTextureResourceBinding*, std::unique_ptr<ShaderTextureResourceBinding> > > ne::ShaderTextureResourceBindingManager::mtxShaderTextureResources
+
+private
+
+

Shader texture resources.

+
Remarks
Storing pairs of "raw pointer" - "unique pointer" to quickly find needed resources when need to destroy some resource given a raw pointer.
+ +
+
+ +

◆ pRenderer

+ +
+
+ + + + + +
+ + + + +
Renderer* ne::ShaderTextureResourceBindingManager::pRenderer = nullptr
+
+private
+
+

Renderer that owns this manager.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/general/resource/binding/texture/ShaderTextureResourceBindingManager.h
  • +
  • src/engine_lib/private/shader/general/resource/binding/texture/ShaderTextureResourceBindingManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ShaderTextureResourceBindingManager.js b/classne_1_1ShaderTextureResourceBindingManager.js new file mode 100644 index 000000000..961c30bed --- /dev/null +++ b/classne_1_1ShaderTextureResourceBindingManager.js @@ -0,0 +1,11 @@ +var classne_1_1ShaderTextureResourceBindingManager = +[ + [ "~ShaderTextureResourceBindingManager", "classne_1_1ShaderTextureResourceBindingManager.html#a572be35070c082bb695f00e0956835e6", null ], + [ "ShaderTextureResourceBindingManager", "classne_1_1ShaderTextureResourceBindingManager.html#a3c5f6cd000c9ca1b878c86f10d505d1e", null ], + [ "createShaderTextureResource", "classne_1_1ShaderTextureResourceBindingManager.html#ab169d6343a60876e0748b358f901407f", null ], + [ "destroyResource", "classne_1_1ShaderTextureResourceBindingManager.html#a6b8a74810c30429ad595367438029d28", null ], + [ "getResources", "classne_1_1ShaderTextureResourceBindingManager.html#ac9716e4c88de526e16d5eef010d83dca", null ], + [ "handleResourceCreation", "classne_1_1ShaderTextureResourceBindingManager.html#af6cdaa7ed156a6f464a4dcc629bb86f3", null ], + [ "mtxShaderTextureResources", "classne_1_1ShaderTextureResourceBindingManager.html#a39bc00cee6fc45ffed9f6cf568845b69", null ], + [ "pRenderer", "classne_1_1ShaderTextureResourceBindingManager.html#aa9f360bd9aa162696622e0600a1bb3bd", null ] +]; \ No newline at end of file diff --git a/classne_1_1ShaderTextureResourceBindingUniquePtr-members.html b/classne_1_1ShaderTextureResourceBindingUniquePtr-members.html new file mode 100644 index 000000000..3c8101584 --- /dev/null +++ b/classne_1_1ShaderTextureResourceBindingUniquePtr-members.html @@ -0,0 +1,121 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ShaderTextureResourceBindingUniquePtr Member List
+
+
+ +

This is the complete list of members for ne::ShaderTextureResourceBindingUniquePtr, including all inherited members.

+ + + + + + + + + + + + +
getResource() constne::ShaderTextureResourceBindingUniquePtrinline
operator=(const ShaderTextureResourceBindingUniquePtr &)=delete (defined in ne::ShaderTextureResourceBindingUniquePtr)ne::ShaderTextureResourceBindingUniquePtr
operator=(ShaderTextureResourceBindingUniquePtr &&other) noexceptne::ShaderTextureResourceBindingUniquePtr
pManagerne::ShaderTextureResourceBindingUniquePtrprivate
pResourcene::ShaderTextureResourceBindingUniquePtrprivate
ShaderTextureResourceBindingManager (defined in ne::ShaderTextureResourceBindingUniquePtr)ne::ShaderTextureResourceBindingUniquePtrfriend
ShaderTextureResourceBindingUniquePtr()=default (defined in ne::ShaderTextureResourceBindingUniquePtr)ne::ShaderTextureResourceBindingUniquePtr
ShaderTextureResourceBindingUniquePtr(const ShaderTextureResourceBindingUniquePtr &)=delete (defined in ne::ShaderTextureResourceBindingUniquePtr)ne::ShaderTextureResourceBindingUniquePtr
ShaderTextureResourceBindingUniquePtr(ShaderTextureResourceBindingUniquePtr &&other) noexceptne::ShaderTextureResourceBindingUniquePtr
ShaderTextureResourceBindingUniquePtr(ShaderTextureResourceBindingManager *pManager, ShaderTextureResourceBinding *pResource)ne::ShaderTextureResourceBindingUniquePtrprivate
~ShaderTextureResourceBindingUniquePtr() (defined in ne::ShaderTextureResourceBindingUniquePtr)ne::ShaderTextureResourceBindingUniquePtr
+
+ + + + diff --git a/classne_1_1ShaderTextureResourceBindingUniquePtr.html b/classne_1_1ShaderTextureResourceBindingUniquePtr.html new file mode 100644 index 000000000..d5c1603c6 --- /dev/null +++ b/classne_1_1ShaderTextureResourceBindingUniquePtr.html @@ -0,0 +1,344 @@ + + + + + + + +Nameless Engine: ne::ShaderTextureResourceBindingUniquePtr Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::ShaderTextureResourceBindingUniquePtr Class Reference
+
+
+ +

#include <ShaderTextureResourceBindingUniquePtr.h>

+ + + + + + + + + + + + +

+Public Member Functions

ShaderTextureResourceBindingUniquePtr (const ShaderTextureResourceBindingUniquePtr &)=delete
 
+ShaderTextureResourceBindingUniquePtroperator= (const ShaderTextureResourceBindingUniquePtr &)=delete
 
 ShaderTextureResourceBindingUniquePtr (ShaderTextureResourceBindingUniquePtr &&other) noexcept
 
ShaderTextureResourceBindingUniquePtroperator= (ShaderTextureResourceBindingUniquePtr &&other) noexcept
 
ShaderTextureResourceBindinggetResource () const
 
+ + + +

+Private Member Functions

 ShaderTextureResourceBindingUniquePtr (ShaderTextureResourceBindingManager *pManager, ShaderTextureResourceBinding *pResource)
 
+ + + + + +

+Private Attributes

ShaderTextureResourceBindingManagerpManager = nullptr
 
ShaderTextureResourceBindingpResource = nullptr
 
+ + + +

+Friends

+class ShaderTextureResourceBindingManager
 
+

Detailed Description

+

Small raw pointer wrapper that acts like std::unique_ptr for shader texture resource bindings to do some extra work when started/stopped referencing a resource.

+

When deleted causes the resource to be also deleted.

+

Constructor & Destructor Documentation

+ +

◆ ShaderTextureResourceBindingUniquePtr() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
ne::ShaderTextureResourceBindingUniquePtr::ShaderTextureResourceBindingUniquePtr (ShaderTextureResourceBindingUniquePtr && other)
+
+noexcept
+
+

Move constructor.

+
Parameters
+ + +
otherOther object.
+
+
+ +
+
+ +

◆ ShaderTextureResourceBindingUniquePtr() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ne::ShaderTextureResourceBindingUniquePtr::ShaderTextureResourceBindingUniquePtr (ShaderTextureResourceBindingManagerpManager,
ShaderTextureResourceBindingpResource 
)
+
+private
+
+

Constructs a new unique pointer.

+
Parameters
+ + + +
pManagerManager that owns the resource.
pResourceResource to point to.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getResource()

+ +
+
+ + + + + +
+ + + + + + + +
ShaderTextureResourceBinding * ne::ShaderTextureResourceBindingUniquePtr::getResource () const
+
+inline
+
+

Returns the underlying resource.

+
Returns
nullptr if moved or not initialized, otherwise valid pointer to resource.
+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
ShaderTextureResourceBindingUniquePtr & ne::ShaderTextureResourceBindingUniquePtr::operator= (ShaderTextureResourceBindingUniquePtr && other)
+
+noexcept
+
+

Move assignment.

+
Parameters
+ + +
otherOther object.
+
+
+
Returns
Result of move assignment.
+ +
+
+

Member Data Documentation

+ +

◆ pManager

+ +
+
+ + + + + +
+ + + + +
ShaderTextureResourceBindingManager* ne::ShaderTextureResourceBindingUniquePtr::pManager = nullptr
+
+private
+
+

Manager that owns the resource we are pointing to.

+ +
+
+ +

◆ pResource

+ +
+
+ + + + + +
+ + + + +
ShaderTextureResourceBinding* ne::ShaderTextureResourceBindingUniquePtr::pResource = nullptr
+
+private
+
+

Resource we are pointing to.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/general/resource/binding/texture/ShaderTextureResourceBindingUniquePtr.h
  • +
  • src/engine_lib/private/shader/general/resource/binding/texture/ShaderTextureResourceBindingUniquePtr.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ShaderTextureResourceBindingUniquePtr.js b/classne_1_1ShaderTextureResourceBindingUniquePtr.js new file mode 100644 index 000000000..e5afc4f37 --- /dev/null +++ b/classne_1_1ShaderTextureResourceBindingUniquePtr.js @@ -0,0 +1,9 @@ +var classne_1_1ShaderTextureResourceBindingUniquePtr = +[ + [ "ShaderTextureResourceBindingUniquePtr", "classne_1_1ShaderTextureResourceBindingUniquePtr.html#a9c914f9cf46978f0f5ecc5b012a32e65", null ], + [ "ShaderTextureResourceBindingUniquePtr", "classne_1_1ShaderTextureResourceBindingUniquePtr.html#a11790c77dc523ed2e7f1226cab6e62dc", null ], + [ "getResource", "classne_1_1ShaderTextureResourceBindingUniquePtr.html#a57222be5717c13b28576cae4d9b84511", null ], + [ "operator=", "classne_1_1ShaderTextureResourceBindingUniquePtr.html#a5ab423bb76406c1a80252b38a69e1e3a", null ], + [ "pManager", "classne_1_1ShaderTextureResourceBindingUniquePtr.html#a9c0f2106a28995d25436707c88355ecc", null ], + [ "pResource", "classne_1_1ShaderTextureResourceBindingUniquePtr.html#ad45e591a7831145e12ed323638475266", null ] +]; \ No newline at end of file diff --git a/classne_1_1ShaderUser-members.html b/classne_1_1ShaderUser-members.html new file mode 100644 index 000000000..5f8eb392a --- /dev/null +++ b/classne_1_1ShaderUser-members.html @@ -0,0 +1,120 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ShaderUser Member List
+
+
+ +

This is the complete list of members for ne::ShaderUser, including all inherited members.

+ + + + + + + + + + + +
addShader(const std::string &sShaderName)ne::ShaderUserprotected
findShader(ShaderType shaderType)ne::ShaderUserprotected
mtxAssignedShadersne::ShaderUserprivate
operator=(const ShaderUser &)=delete (defined in ne::ShaderUser)ne::ShaderUser
pShaderManagerne::ShaderUserprivate
releaseShader(const std::string &sShaderName) constne::ShaderUserprivate
ShaderUser()=delete (defined in ne::ShaderUser)ne::ShaderUser
ShaderUser(const ShaderUser &)=delete (defined in ne::ShaderUser)ne::ShaderUser
ShaderUser(ShaderManager *pShaderManager)ne::ShaderUserprotected
~ShaderUser()ne::ShaderUserprotectedvirtual
+
+ + + + diff --git a/classne_1_1ShaderUser.html b/classne_1_1ShaderUser.html new file mode 100644 index 000000000..b322a43fc --- /dev/null +++ b/classne_1_1ShaderUser.html @@ -0,0 +1,380 @@ + + + + + + + +Nameless Engine: ne::ShaderUser Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <ShaderUser.h>

+
+Inheritance diagram for ne::ShaderUser:
+
+
+ + +ne::Pipeline +ne::DirectXPso +ne::VulkanPipeline + +
+ + + + + + +

+Public Member Functions

ShaderUser (const ShaderUser &)=delete
 
+ShaderUseroperator= (const ShaderUser &)=delete
 
+ + + + + + + + + +

+Protected Member Functions

 ShaderUser (ShaderManager *pShaderManager)
 
virtual ~ShaderUser ()
 
bool addShader (const std::string &sShaderName)
 
ShaderPackfindShader (ShaderType shaderType)
 
+ + + +

+Private Member Functions

void releaseShader (const std::string &sShaderName) const
 
+ + + + + +

+Private Attributes

std::pair< std::mutex, std::unordered_map< ShaderType, std::shared_ptr< ShaderPack > > > mtxAssignedShaders
 
ShaderManagerpShaderManager
 
+

Detailed Description

+

The only class that is allowed to store shaders (not counting ShaderManager).

+

Other classes should inherit from this class in order to work with shaders.

+

Allows storing one shader per shader type.

+

Constructor & Destructor Documentation

+ +

◆ ShaderUser()

+ +
+
+ + + + + +
+ + + + + + + + +
ne::ShaderUser::ShaderUser (ShaderManagerpShaderManager)
+
+protected
+
+

Constructor.

+
Parameters
+ + +
pShaderManagerShader manager to use.
+
+
+ +
+
+ +

◆ ~ShaderUser()

+ +
+
+ + + + + +
+ + + + + + + +
ne::ShaderUser::~ShaderUser ()
+
+protectedvirtual
+
+

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ addShader()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ne::ShaderUser::addShader (const std::string & sShaderName)
+
+protected
+
+

Adds a shader to be stored (for usage).

+
Warning
If a shader of this type was already added it will be replaced with the new one.
+
Remarks
Adding the same shader that was already added is safe as this will do nothing.
+
Parameters
+ + +
sShaderNameName of the compiled shader (see ShaderManager::compileShaders).
+
+
+
Returns
false if shader was added successfully, true if it was not found in ShaderManager.
+ +
+
+ +

◆ findShader()

+ +
+
+ + + + + +
+ + + + + + + + +
ShaderPack * ne::ShaderUser::findShader (ShaderType shaderType)
+
+protected
+
+

Looks for a previously added shader (see addShader) for the specified type.

+
Warning
Do not delete returned pointer. Returned shader will not be destroyed until this ShaderUser object is not destroyed. Once this ShaderUser object is destroyed there is no guarantee that the shader will be valid.
+
Parameters
+ + +
shaderTypeType of the shader to query.
+
+
+
Returns
nullptr if a shader of this type was not added before, valid pointer otherwise.
+ +
+
+ +

◆ releaseShader()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::ShaderUser::releaseShader (const std::string & sShaderName) const
+
+private
+
+

Uses ShaderManager to release shader bytecode if needed and removes shader if it was marked as "to remove".

+
Parameters
+ + +
sShaderNameName of the shader to release.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ mtxAssignedShaders

+ +
+
+ + + + + +
+ + + + +
std::pair<std::mutex, std::unordered_map<ShaderType, std::shared_ptr<ShaderPack> > > ne::ShaderUser::mtxAssignedShaders
+
+private
+
+

Assigned shaders (see addShader). Must be used with mutex.

+ +
+
+ +

◆ pShaderManager

+ +
+
+ + + + + +
+ + + + +
ShaderManager* ne::ShaderUser::pShaderManager
+
+private
+
+

Shader manager to work with shaders.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/general/ShaderUser.h
  • +
  • src/engine_lib/private/shader/general/ShaderUser.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ShaderUser.js b/classne_1_1ShaderUser.js new file mode 100644 index 000000000..a83fdd1e6 --- /dev/null +++ b/classne_1_1ShaderUser.js @@ -0,0 +1,10 @@ +var classne_1_1ShaderUser = +[ + [ "ShaderUser", "classne_1_1ShaderUser.html#ac15d8ee87b0b270395bd82996295731d", null ], + [ "~ShaderUser", "classne_1_1ShaderUser.html#ac20528d5e1938e7c4ff6cc7f80b75b12", null ], + [ "addShader", "classne_1_1ShaderUser.html#a0057b3ae30961b3500575722f9db2f18", null ], + [ "findShader", "classne_1_1ShaderUser.html#a114354cd7387a460273a1134bf47fb77", null ], + [ "releaseShader", "classne_1_1ShaderUser.html#a295d7fab3b2217af0e91169d766c81d4", null ], + [ "mtxAssignedShaders", "classne_1_1ShaderUser.html#a42d469bd25703e5efc4042b8e7e39215", null ], + [ "pShaderManager", "classne_1_1ShaderUser.html#a9cf0c3bb95f00f5192b8da3f283d09b3", null ] +]; \ No newline at end of file diff --git a/classne_1_1ShaderUser.png b/classne_1_1ShaderUser.png new file mode 100644 index 0000000000000000000000000000000000000000..60e4a9bf269080ca8abc55cbd7f9271735746771 GIT binary patch literal 1073 zcmeAS@N?(olHy`uVBq!ia0vp^pMbc7gBeJ^;&(FyQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#NuMc)B=-R4~4s`+Cx91p&6% z{aW4M>mN-%a$8|Xc2U@))UuZ=8k~$R{;~d$cj8!R$`G%zWJ*wUjN}5%b#sEesvnwMCRGayO z>$J-+7hAr0{Bh0ukZotfFIRG9>V131>~1-GT`Xtx%$ezD@((YJU9jgps7$+0|GZn<>IKcR58j4tivQ!d@xVdM}T0~GppY%1d{At#Qtj25c0 z2lnomUv&NMxu12X_#f}KydQAW*zCa9!qkS2rxv$~_{{XnJ{vh#<*G%|l+!^|!^CrvIX&c|_ z0(HdPf6BlA$Rr=2Q>|3BXrWM zoZxx$cF4F)(tKRudfV&&*;B7~C3inj{zb$#*@yR~cM=RN8BPn$9G&26hldHpl)nBH-d*(?6L z-H5efw~2lfb!?k|-Q(Rlp7qDKz2Bs=_xP>p5tB66>3IHrd}`7a0brQ@1qNQ$3EQd3 jJsS<(ERRV@f95|XJ#o_7f2r!g%+28G>gTe~DWM4fjtv(B literal 0 HcmV?d00001 diff --git a/classne_1_1ShadowMapArrayIndexManager-members.html b/classne_1_1ShadowMapArrayIndexManager-members.html new file mode 100644 index 000000000..887dff19e --- /dev/null +++ b/classne_1_1ShadowMapArrayIndexManager-members.html @@ -0,0 +1,128 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ShadowMapArrayIndexManager Member List
+
+
+ +

This is the complete list of members for ne::ShadowMapArrayIndexManager, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
bindShadowMapsToAllPipelines()=0ne::ShadowMapArrayIndexManagerprotectedpure virtual
bindShadowMapsToPipeline(Pipeline *pPipeline)=0ne::ShadowMapArrayIndexManagerprotectedpure virtual
changeShadowMapArrayIndex(ShadowMapHandle *pShadowMapHandle, unsigned int iNewArrayIndex)ne::ShadowMapArrayIndexManagerprotectedstatic
create(Renderer *pRenderer, GpuResourceManager *pResourceManager, const std::string &sShaderArrayResourceName)ne::ShadowMapArrayIndexManagerstatic
getRenderer() constne::ShadowMapArrayIndexManagerprotected
getShaderArrayResourceName()ne::ShadowMapArrayIndexManagerprotected
operator=(const ShadowMapArrayIndexManager &)=delete (defined in ne::ShadowMapArrayIndexManager)ne::ShadowMapArrayIndexManager
operator=(ShadowMapArrayIndexManager &&) noexcept=delete (defined in ne::ShadowMapArrayIndexManager)ne::ShadowMapArrayIndexManager
pRendererne::ShadowMapArrayIndexManagerprivate
registerShadowMapResource(ShadowMapHandle *pShadowMapHandle)=0ne::ShadowMapArrayIndexManagerprotectedpure virtual
ShadowMapArrayIndexManager()=delete (defined in ne::ShadowMapArrayIndexManager)ne::ShadowMapArrayIndexManager
ShadowMapArrayIndexManager(const ShadowMapArrayIndexManager &)=delete (defined in ne::ShadowMapArrayIndexManager)ne::ShadowMapArrayIndexManager
ShadowMapArrayIndexManager(ShadowMapArrayIndexManager &&) noexcept=delete (defined in ne::ShadowMapArrayIndexManager)ne::ShadowMapArrayIndexManager
ShadowMapArrayIndexManager(Renderer *pRenderer, const std::string &sShaderArrayResourceName)ne::ShadowMapArrayIndexManagerprotected
ShadowMapManager (defined in ne::ShadowMapArrayIndexManager)ne::ShadowMapArrayIndexManagerfriend
sShaderArrayResourceNamene::ShadowMapArrayIndexManagerprivate
unregisterShadowMapResource(ShadowMapHandle *pShadowMapHandle)=0ne::ShadowMapArrayIndexManagerprotectedpure virtual
~ShadowMapArrayIndexManager()=default (defined in ne::ShadowMapArrayIndexManager)ne::ShadowMapArrayIndexManagervirtual
+
+ + + + diff --git a/classne_1_1ShadowMapArrayIndexManager.html b/classne_1_1ShadowMapArrayIndexManager.html new file mode 100644 index 000000000..392c7e6e6 --- /dev/null +++ b/classne_1_1ShadowMapArrayIndexManager.html @@ -0,0 +1,576 @@ + + + + + + + +Nameless Engine: ne::ShadowMapArrayIndexManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <ShadowMapArrayIndexManager.h>

+
+Inheritance diagram for ne::ShadowMapArrayIndexManager:
+
+
+ + +ne::DirectXShadowMapArrayIndexManager +ne::VulkanShadowMapArrayIndexManager + +
+ + + + + + + + + + +

+Public Member Functions

ShadowMapArrayIndexManager (const ShadowMapArrayIndexManager &)=delete
 
+ShadowMapArrayIndexManageroperator= (const ShadowMapArrayIndexManager &)=delete
 
ShadowMapArrayIndexManager (ShadowMapArrayIndexManager &&) noexcept=delete
 
+ShadowMapArrayIndexManageroperator= (ShadowMapArrayIndexManager &&) noexcept=delete
 
+ + + +

+Static Public Member Functions

static std::variant< std::unique_ptr< ShadowMapArrayIndexManager >, Errorcreate (Renderer *pRenderer, GpuResourceManager *pResourceManager, const std::string &sShaderArrayResourceName)
 
+ + + + + + + + + + + + + + + +

+Protected Member Functions

 ShadowMapArrayIndexManager (Renderer *pRenderer, const std::string &sShaderArrayResourceName)
 
virtual std::optional< ErrorregisterShadowMapResource (ShadowMapHandle *pShadowMapHandle)=0
 
virtual std::optional< ErrorunregisterShadowMapResource (ShadowMapHandle *pShadowMapHandle)=0
 
virtual std::optional< ErrorbindShadowMapsToPipeline (Pipeline *pPipeline)=0
 
virtual std::optional< ErrorbindShadowMapsToAllPipelines ()=0
 
std::string_view getShaderArrayResourceName ()
 
RenderergetRenderer () const
 
+ + + +

+Static Protected Member Functions

static void changeShadowMapArrayIndex (ShadowMapHandle *pShadowMapHandle, unsigned int iNewArrayIndex)
 
+ + + + + +

+Private Attributes

Renderer *const pRenderer = nullptr
 
const std::string sShaderArrayResourceName
 
+ + + +

+Friends

+class ShadowMapManager
 
+

Detailed Description

+

Manages indices of shadows maps into a descriptor array used by shaders.

+

Allows requesting an index into the array of shadow maps and binds specified shadow map to array's descriptor.

+

Binds array of descriptors to the rendering pipeline to be used by shaders.

+

Constructor & Destructor Documentation

+ +

◆ ShadowMapArrayIndexManager()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ne::ShadowMapArrayIndexManager::ShadowMapArrayIndexManager (RendererpRenderer,
const std::string & sShaderArrayResourceName 
)
+
+protected
+
+

Initializes object.

+
Parameters
+ + + +
pRendererRenderer.
sShaderArrayResourceNameName of the array (defined in shaders) that this manager controls.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ bindShadowMapsToAllPipelines()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::optional< Error > ne::ShadowMapArrayIndexManager::bindShadowMapsToAllPipelines ()
+
+protectedpure virtual
+
+

Goes through all graphics pipelines and binds shadow maps to pipelines that use them.

+
Returns
Error if something went wrong.
+ +

Implemented in ne::DirectXShadowMapArrayIndexManager, and ne::VulkanShadowMapArrayIndexManager.

+ +
+
+ +

◆ bindShadowMapsToPipeline()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual std::optional< Error > ne::ShadowMapArrayIndexManager::bindShadowMapsToPipeline (PipelinepPipeline)
+
+protectedpure virtual
+
+

Looks if the specified pipeline uses shadow maps and if uses binds shadow maps to the pipeline.

+
Parameters
+ + +
pPipelinePipeline to bind shadow maps to.
+
+
+
Returns
Error if something went wrong.
+ +

Implemented in ne::DirectXShadowMapArrayIndexManager, and ne::VulkanShadowMapArrayIndexManager.

+ +
+
+ +

◆ changeShadowMapArrayIndex()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::ShadowMapArrayIndexManager::changeShadowMapArrayIndex (ShadowMapHandlepShadowMapHandle,
unsigned int iNewArrayIndex 
)
+
+staticprotected
+
+

Usually called by derived classes to notify some shadow map handle that its descriptor array index was changed (because base index manager class is a friend class to the shadow map handle).

+
Parameters
+ + + +
pShadowMapHandleShadow map handle to notify.
iNewArrayIndexNew array index for this shadow map.
+
+
+ +
+
+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< ShadowMapArrayIndexManager >, Error > ne::ShadowMapArrayIndexManager::create (RendererpRenderer,
GpuResourceManagerpResourceManager,
const std::string & sShaderArrayResourceName 
)
+
+static
+
+

Creates a new renderer-specific index manager.

+
Parameters
+ + + + +
pRendererRenderer.
pResourceManagerResource manager.
sShaderArrayResourceNameName of the array (defined in shaders) that this manager controls.
+
+
+
Returns
Error if something went wrong, otherwise created manager.
+ +
+
+ +

◆ getRenderer()

+ +
+
+ + + + + +
+ + + + + + + +
Renderer * ne::ShadowMapArrayIndexManager::getRenderer () const
+
+protected
+
+

Returns renderer.

+
Warning
Do not delete (free) returned pointer.
+
Returns
Renderer.
+ +
+
+ +

◆ getShaderArrayResourceName()

+ +
+
+ + + + + +
+ + + + + + + +
std::string_view ne::ShadowMapArrayIndexManager::getShaderArrayResourceName ()
+
+protected
+
+

Returns name of the array (defined in shaders) that this manager controls.

+
Returns
Array name.
+ +
+
+ +

◆ registerShadowMapResource()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual std::optional< Error > ne::ShadowMapArrayIndexManager::registerShadowMapResource (ShadowMapHandlepShadowMapHandle)
+
+protectedpure virtual
+
+

Reserves an index into a descriptor array for the shadow map resource of the specified handle and bind internal GPU shadow map resource (if the handle) to that descriptor.

+
Remarks
Use unregisterShadowMapResource to unregister it later (must be done before this manager is destroyed) when shadow map is being destroyed.
+
+If internal GPU shadow map resource of the handle changes you must unregister and then register the handle again (after the new GPU resource was set to the handle) to bind the new GPU resource to the descriptor.
+
Parameters
+ + +
pShadowMapHandleShadow map to register.
+
+
+
Returns
Error if something went wrong.
+ +

Implemented in ne::DirectXShadowMapArrayIndexManager, and ne::VulkanShadowMapArrayIndexManager.

+ +
+
+ +

◆ unregisterShadowMapResource()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual std::optional< Error > ne::ShadowMapArrayIndexManager::unregisterShadowMapResource (ShadowMapHandlepShadowMapHandle)
+
+protectedpure virtual
+
+

Unregisters a shadow map and frees its index into a descriptor array to be used by others.

+
Parameters
+ + +
pShadowMapHandleShadow map to unregister.
+
+
+
Returns
Error if something went wrong.
+ +

Implemented in ne::DirectXShadowMapArrayIndexManager, and ne::VulkanShadowMapArrayIndexManager.

+ +
+
+

Member Data Documentation

+ +

◆ pRenderer

+ +
+
+ + + + + +
+ + + + +
Renderer* const ne::ShadowMapArrayIndexManager::pRenderer = nullptr
+
+private
+
+

Do not delete (free). Renderer.

+ +
+
+ +

◆ sShaderArrayResourceName

+ +
+
+ + + + + +
+ + + + +
const std::string ne::ShadowMapArrayIndexManager::sShaderArrayResourceName
+
+private
+
+

Name of the array (defined in shaders) that this manager controls.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/general/resource/shadow/ShadowMapArrayIndexManager.h
  • +
  • src/engine_lib/private/render/general/resource/shadow/ShadowMapArrayIndexManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ShadowMapArrayIndexManager.js b/classne_1_1ShadowMapArrayIndexManager.js new file mode 100644 index 000000000..77e9808f5 --- /dev/null +++ b/classne_1_1ShadowMapArrayIndexManager.js @@ -0,0 +1,14 @@ +var classne_1_1ShadowMapArrayIndexManager = +[ + [ "ShadowMapArrayIndexManager", "classne_1_1ShadowMapArrayIndexManager.html#a1f0f881fdde61426686c58790e19f391", null ], + [ "bindShadowMapsToAllPipelines", "classne_1_1ShadowMapArrayIndexManager.html#a283ebedde27fe846847f6e6adcb44ad1", null ], + [ "bindShadowMapsToPipeline", "classne_1_1ShadowMapArrayIndexManager.html#a491d3eaf6fc69f239ae4bccc4abc6eff", null ], + [ "changeShadowMapArrayIndex", "classne_1_1ShadowMapArrayIndexManager.html#a9d790c4e38cde1dafcb51d35f46b4dd7", null ], + [ "create", "classne_1_1ShadowMapArrayIndexManager.html#ae6d05e46a6008971f9941a2b423c9bdf", null ], + [ "getRenderer", "classne_1_1ShadowMapArrayIndexManager.html#a07fe51c35001aa9b5720f1abba58d45c", null ], + [ "getShaderArrayResourceName", "classne_1_1ShadowMapArrayIndexManager.html#ab77f0f16fe42c573772c6d04a788772d", null ], + [ "registerShadowMapResource", "classne_1_1ShadowMapArrayIndexManager.html#a255378744537bc9c65de2e4979df0c58", null ], + [ "unregisterShadowMapResource", "classne_1_1ShadowMapArrayIndexManager.html#a430cb961ba89ed63febcdc08e71b65dc", null ], + [ "pRenderer", "classne_1_1ShadowMapArrayIndexManager.html#a5d6a104f7848a1d8c6f388619be4a9cb", null ], + [ "sShaderArrayResourceName", "classne_1_1ShadowMapArrayIndexManager.html#a9712673eeccb5e80dd4bba1a2f0002b8", null ] +]; \ No newline at end of file diff --git a/classne_1_1ShadowMapArrayIndexManager.png b/classne_1_1ShadowMapArrayIndexManager.png new file mode 100644 index 0000000000000000000000000000000000000000..d64e54129bb75cc7a84f7a700886062d3000acb3 GIT binary patch literal 1372 zcmbtUe>l^59RF^Xwwg0@p%NpHJIRkDCO3CqE+LVm91}%`Ydy``Ol9r6j;v%9&F_;R z$&W;h>8v7&Q)3w!$0$7cl{wb9=ls}x_3u6R*S-IEy??!)_w#;#-k;}v&Cl0EYs-!; z003xtc^>cw03;5!{m>dPvbR53ht*EM!vXGUwHh|3KB^e$t@oU4EocVW;;ELF7C3(F zR&NEI!_fVGj{&g%S%}E|J^(;XdL3{LNI=XL&hiA#SaOt!exh>*ob|L>+7vYf0Kw+P$h{nKZ4cp4x!!MkRC-*8`A*ufd}ZUk9tJ5C=ieqP zM)sAwj)CV`V1Q2|z{$xZ2$-54f)XSNd_k*xEdcKRucD2`*!{<1!VRvz@7P2@BqkdH zc*u+ZlwD6r;Q|>b6oi_{NxQoL)#El`U%gIeu%iod!4K|HEixyAyBRLuJqryIOJPpku^7`<0kTf>?Yx z80iM)1SLT@97WHBfJ(}BN23v^DLN@2R#GH0rcieJ9GTRY%u4A)kCf*w^mz}>SE)b$ zJ2BNGki+eCR1yV-MBx~gJDwHUKl@Sig(~F7`*SWOEHO>K(kI!4EX+CS=T{_2nQ*h$x?U;75<8$AUb>e1^gA$$*Zm>E! zk!1^#+c*6<#~b_dGjHbR9_dTCyJP;vz}h7-Lts-Uc~e(crFZ*qc4 zeV-08ie2zb|Ca-`BEOb~h?N^xVpDTMd#oXwjN!%_c8vD3`Cn^Q>(pIQ0 + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ShadowMapHandle Member List
+
+
+ +

This is the complete list of members for ne::ShadowMapHandle, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
changeArrayIndex(unsigned int iNewArrayIndex)ne::ShadowMapHandleprivate
getResources()ne::ShadowMapHandleinline
getShadowMapSize() constne::ShadowMapHandleinline
getShadowMapType() constne::ShadowMapHandleinline
iShadowMapSizene::ShadowMapHandleprivate
mtxResourcesne::ShadowMapHandleprivate
onArrayIndexChangedne::ShadowMapHandleprivate
operator=(const ShadowMapHandle &)=delete (defined in ne::ShadowMapHandle)ne::ShadowMapHandle
operator=(ShadowMapHandle &&other) noexcept=delete (defined in ne::ShadowMapHandle)ne::ShadowMapHandle
pManagerne::ShadowMapHandleprivate
recreateFramebuffers()ne::ShadowMapHandleprivate
setUpdatedResources(GpuResource *pDepthTexture, size_t iShadowMapSize, GpuResource *pColorTexture=nullptr)ne::ShadowMapHandleprivate
ShadowMapArrayIndexManager (defined in ne::ShadowMapHandle)ne::ShadowMapHandlefriend
ShadowMapHandle()=delete (defined in ne::ShadowMapHandle)ne::ShadowMapHandle
ShadowMapHandle(const ShadowMapHandle &)=delete (defined in ne::ShadowMapHandle)ne::ShadowMapHandle
ShadowMapHandle(ShadowMapHandle &&other) noexcept=delete (defined in ne::ShadowMapHandle)ne::ShadowMapHandle
ShadowMapHandle(ShadowMapManager *pManager, GpuResource *pDepthTexture, ShadowMapType type, size_t iTextureSize, const std::function< void(unsigned int)> &onArrayIndexChanged, GpuResource *pColorTexture=nullptr)ne::ShadowMapHandleprivate
ShadowMapManager (defined in ne::ShadowMapHandle)ne::ShadowMapHandlefriend
shadowMapTypene::ShadowMapHandleprivate
~ShadowMapHandle() (defined in ne::ShadowMapHandle)ne::ShadowMapHandle
+
+ + + + diff --git a/classne_1_1ShadowMapHandle.html b/classne_1_1ShadowMapHandle.html new file mode 100644 index 000000000..51e106f6a --- /dev/null +++ b/classne_1_1ShadowMapHandle.html @@ -0,0 +1,567 @@ + + + + + + + +Nameless Engine: ne::ShadowMapHandle Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <ShadowMapHandle.h>

+ + + + +

+Classes

struct  InternalResources
 
+ + + + + + + + + + + + + + + +

+Public Member Functions

ShadowMapHandle (const ShadowMapHandle &)=delete
 
+ShadowMapHandleoperator= (const ShadowMapHandle &)=delete
 
ShadowMapHandle (ShadowMapHandle &&other) noexcept=delete
 
+ShadowMapHandleoperator= (ShadowMapHandle &&other) noexcept=delete
 
std::pair< std::recursive_mutex, InternalResources > * getResources ()
 
ShadowMapType getShadowMapType () const
 
size_t getShadowMapSize () const
 
+ + + + + + + + + +

+Private Member Functions

 ShadowMapHandle (ShadowMapManager *pManager, GpuResource *pDepthTexture, ShadowMapType type, size_t iTextureSize, const std::function< void(unsigned int)> &onArrayIndexChanged, GpuResource *pColorTexture=nullptr)
 
void changeArrayIndex (unsigned int iNewArrayIndex)
 
void setUpdatedResources (GpuResource *pDepthTexture, size_t iShadowMapSize, GpuResource *pColorTexture=nullptr)
 
void recreateFramebuffers ()
 
+ + + + + + + + + + + +

+Private Attributes

ShadowMapManagerpManager = nullptr
 
std::pair< std::recursive_mutex, InternalResourcesmtxResources
 
size_t iShadowMapSize = 0
 
const std::function< void(unsigned int)> onArrayIndexChanged
 
const ShadowMapType shadowMapType = ShadowMapType::DIRECTIONAL
 
+ + + + + +

+Friends

+class ShadowMapManager
 
+class ShadowMapArrayIndexManager
 
+

Detailed Description

+

Small raw pointer wrapper that acts kind of like std::unique_ptr for shadow maps to do some extra work when started/stopped referencing a shadow map.

+

When deleted causes the resource to be also deleted.

+

Constructor & Destructor Documentation

+ +

◆ ShadowMapHandle()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ne::ShadowMapHandle::ShadowMapHandle (ShadowMapManagerpManager,
GpuResourcepDepthTexture,
ShadowMapType type,
size_t iTextureSize,
const std::function< void(unsigned int)> & onArrayIndexChanged,
GpuResourcepColorTexture = nullptr 
)
+
+private
+
+

Constructs a new handle.

+
Parameters
+ + + + + + + +
pManagerManager that owns the resource.
pDepthTextureResource to point to.
typeType of the shadow map this handle references.
iTextureSizeSize (in pixels) of the shadow map.
onArrayIndexChangedCalled after the index of the shadow map into the descriptor array of shadow maps was initialized/changed.
pColorTextureOptional "color" target, used for point lights to store additional information.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ changeArrayIndex()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::ShadowMapHandle::changeArrayIndex (unsigned int iNewArrayIndex)
+
+private
+
+

Called by array index manager to notify the shadow map user about array index changed.

+
Parameters
+ + +
iNewArrayIndexNew array index.
+
+
+ +
+
+ +

◆ getResources()

+ +
+
+ + + + + +
+ + + + + + + +
std::pair< std::recursive_mutex, InternalResources > * ne::ShadowMapHandle::getResources ()
+
+inline
+
+

Returns the underlying resource.

+
Warning
Do not delete (free) returned pointer.
+
Remarks
Use returned resource only when mutex is locked.
+
Returns
Valid pointer to resource.
+ +
+
+ +

◆ getShadowMapSize()

+ +
+
+ + + + + +
+ + + + + + + +
size_t ne::ShadowMapHandle::getShadowMapSize () const
+
+inline
+
+

Returns the current size of the shadow map resource.

+
Returns
Size in pixels.
+ +
+
+ +

◆ getShadowMapType()

+ +
+
+ + + + + +
+ + + + + + + +
ShadowMapType ne::ShadowMapHandle::getShadowMapType () const
+
+inline
+
+

Returns type of a shadow map that this handle references.

+
Returns
Shadow map type.
+ +
+
+ +

◆ recreateFramebuffers()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::ShadowMapHandle::recreateFramebuffers ()
+
+private
+
+

(Re)creates framebuffers from mtxResources if running Vulkan renderer.

+ +
+
+ +

◆ setUpdatedResources()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::ShadowMapHandle::setUpdatedResources (GpuResourcepDepthTexture,
size_t iShadowMapSize,
GpuResourcepColorTexture = nullptr 
)
+
+private
+
+

Called by shadow map manager after GPU resources were re-created (due to some render settings changed for example) to assign new resources.

+
Parameters
+ + + + +
pDepthTextureResource to point to.
iShadowMapSizeSize (in pixels) of the shadow map.
pColorTextureOptional "color" target, used for point lights to store additional information.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ iShadowMapSize

+ +
+
+ + + + + +
+ + + + +
size_t ne::ShadowMapHandle::iShadowMapSize = 0
+
+private
+
+

Size (in pixels) of the mtxResources texture, used for fast access.

+ +
+
+ +

◆ mtxResources

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, InternalResources> ne::ShadowMapHandle::mtxResources
+
+private
+
+

Resource that this handle references.

+ +
+
+ +

◆ onArrayIndexChanged

+ +
+
+ + + + + +
+ + + + +
const std::function<void(unsigned int)> ne::ShadowMapHandle::onArrayIndexChanged
+
+private
+
+

Called after the index of the shadow map into the descriptor array of shadow maps was initialized/changed.

+ +
+
+ +

◆ pManager

+ +
+
+ + + + + +
+ + + + +
ShadowMapManager* ne::ShadowMapHandle::pManager = nullptr
+
+private
+
+

Manager that owns the resource we are pointing to.

+ +
+
+ +

◆ shadowMapType

+ +
+
+ + + + + +
+ + + + +
const ShadowMapType ne::ShadowMapHandle::shadowMapType = ShadowMapType::DIRECTIONAL
+
+private
+
+

Type of the shadow map that this handle references.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/general/resource/shadow/ShadowMapHandle.h
  • +
  • src/engine_lib/private/render/general/resource/shadow/ShadowMapHandle.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ShadowMapHandle.js b/classne_1_1ShadowMapHandle.js new file mode 100644 index 000000000..58f1877fd --- /dev/null +++ b/classne_1_1ShadowMapHandle.js @@ -0,0 +1,16 @@ +var classne_1_1ShadowMapHandle = +[ + [ "InternalResources", "structne_1_1ShadowMapHandle_1_1InternalResources.html", "structne_1_1ShadowMapHandle_1_1InternalResources" ], + [ "ShadowMapHandle", "classne_1_1ShadowMapHandle.html#a8f8e2251279ff44699033533ca53b77b", null ], + [ "changeArrayIndex", "classne_1_1ShadowMapHandle.html#a8c0bcc02eb4a5eb6eb5f88d6425c37da", null ], + [ "getResources", "classne_1_1ShadowMapHandle.html#a356969647bcc25ef9d2422fd6628019c", null ], + [ "getShadowMapSize", "classne_1_1ShadowMapHandle.html#ad98533a1b6a3a75258cbdda340b58553", null ], + [ "getShadowMapType", "classne_1_1ShadowMapHandle.html#ac3cbc9cb3295c4d2184c8963c04eb1f2", null ], + [ "recreateFramebuffers", "classne_1_1ShadowMapHandle.html#a4ddc9e9db7d9976a42c8a65a48623234", null ], + [ "setUpdatedResources", "classne_1_1ShadowMapHandle.html#ad8a418c66c28f7c0c573461909ee7d64", null ], + [ "iShadowMapSize", "classne_1_1ShadowMapHandle.html#a87916d14c7fd2ed212c219f48c905cf6", null ], + [ "mtxResources", "classne_1_1ShadowMapHandle.html#a5777a0bed24a146642a00cd1e7fb8f85", null ], + [ "onArrayIndexChanged", "classne_1_1ShadowMapHandle.html#a5b5e4dd72fe6231c33b5a7d3d996f480", null ], + [ "pManager", "classne_1_1ShadowMapHandle.html#abc29fe8108c5700e9839d1b37108c58f", null ], + [ "shadowMapType", "classne_1_1ShadowMapHandle.html#a6dd406a66318c3643acbd2dc7e097838", null ] +]; \ No newline at end of file diff --git a/classne_1_1ShadowMapManager-members.html b/classne_1_1ShadowMapManager-members.html new file mode 100644 index 000000000..ca4abca19 --- /dev/null +++ b/classne_1_1ShadowMapManager-members.html @@ -0,0 +1,140 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ShadowMapManager Member List
+
+
+ +

This is the complete list of members for ne::ShadowMapManager, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bindShadowMapsToAllPipelines()ne::ShadowMapManagerprivate
bindShadowMapsToPipeline(Pipeline *pPipeline)ne::ShadowMapManagerprivate
correctShadowMapResolutionForType(unsigned int iRenderSettingsShadowMapSize, ShadowMapType type)ne::ShadowMapManagerprivate
create(GpuResourceManager *pResourceManager)ne::ShadowMapManagerstatic
createShadowMap(const std::string &sResourceName, ShadowMapType type, const std::function< void(unsigned int)> &onArrayIndexChanged)ne::ShadowMapManager
getArrayIndexManagerBasedOnShadowMapType(ShadowMapType type)ne::ShadowMapManagerprivate
getDirectionalShadowMapsShaderResourceName()ne::ShadowMapManagerinlinestatic
getInternalResources()ne::ShadowMapManagerinline
getPointShadowMapsShaderResourceName()ne::ShadowMapManagerinlinestatic
getRenderer() constne::ShadowMapManager
getShadowPassDepthBias()ne::ShadowMapManagerstatic
getShadowPassDepthSlopeFactor()ne::ShadowMapManagerstatic
getSpotShadowMapsShaderResourceName()ne::ShadowMapManagerinlinestatic
getVisibleDistanceToNearClipPlaneRatio()ne::ShadowMapManagerinlinestatic
mtxInternalResourcesne::ShadowMapManagerprivate
onShadowMapHandleBeingDestroyed(ShadowMapHandle *pHandleToResourceDestroy)ne::ShadowMapManagerprivate
operator=(const ShadowMapManager &)=delete (defined in ne::ShadowMapManager)ne::ShadowMapManager
pDirectionalShadowMapsShaderResourceNamene::ShadowMapManagerprivatestatic
PipelineManager (defined in ne::ShadowMapManager)ne::ShadowMapManagerfriend
pPointShadowMapsShaderResourceNamene::ShadowMapManagerprivatestatic
pResourceManagerne::ShadowMapManagerprivate
pSpotShadowMapsShaderResourceNamene::ShadowMapManagerprivatestatic
recreateShadowMaps()ne::ShadowMapManagerprivate
Renderer (defined in ne::ShadowMapManager)ne::ShadowMapManagerfriend
ShadowMapHandle (defined in ne::ShadowMapManager)ne::ShadowMapManagerfriend
ShadowMapManager()=delete (defined in ne::ShadowMapManager)ne::ShadowMapManager
ShadowMapManager(const ShadowMapManager &)=delete (defined in ne::ShadowMapManager)ne::ShadowMapManager
ShadowMapManager(GpuResourceManager *pResourceManager, std::array< std::unique_ptr< ShadowMapArrayIndexManager >, static_cast< size_t >(ShadowMapType::SIZE)> vShadowMapArrayIndexManagers)ne::ShadowMapManagerprivate
visibleDistanceToNearClipPlaneRatione::ShadowMapManagerprivatestatic
~ShadowMapManager()ne::ShadowMapManager
+
+ + + + diff --git a/classne_1_1ShadowMapManager.html b/classne_1_1ShadowMapManager.html new file mode 100644 index 000000000..84cc2dbbc --- /dev/null +++ b/classne_1_1ShadowMapManager.html @@ -0,0 +1,910 @@ + + + + + + + +Nameless Engine: ne::ShadowMapManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <ShadowMapManager.h>

+ + + + + + +

+Classes

struct  InternalResources
 
struct  ShadowMapHandleResources
 
+ + + + + + + + + + + + + +

+Public Member Functions

ShadowMapManager (const ShadowMapManager &)=delete
 
+ShadowMapManageroperator= (const ShadowMapManager &)=delete
 
 ~ShadowMapManager ()
 
std::variant< std::unique_ptr< ShadowMapHandle >, ErrorcreateShadowMap (const std::string &sResourceName, ShadowMapType type, const std::function< void(unsigned int)> &onArrayIndexChanged)
 
std::pair< std::recursive_mutex, InternalResources > * getInternalResources ()
 
RenderergetRenderer () const
 
+ + + + + + + + + + + + + + + +

+Static Public Member Functions

static int getShadowPassDepthBias ()
 
static float getShadowPassDepthSlopeFactor ()
 
static constexpr const char * getDirectionalShadowMapsShaderResourceName ()
 
static constexpr const char * getSpotShadowMapsShaderResourceName ()
 
static constexpr const char * getPointShadowMapsShaderResourceName ()
 
static constexpr float getVisibleDistanceToNearClipPlaneRatio ()
 
static std::variant< std::unique_ptr< ShadowMapManager >, Errorcreate (GpuResourceManager *pResourceManager)
 
+ + + + + + + + + + + + + + + +

+Private Member Functions

 ShadowMapManager (GpuResourceManager *pResourceManager, std::array< std::unique_ptr< ShadowMapArrayIndexManager >, static_cast< size_t >(ShadowMapType::SIZE)> vShadowMapArrayIndexManagers)
 
std::optional< ErrorbindShadowMapsToPipeline (Pipeline *pPipeline)
 
std::optional< ErrorbindShadowMapsToAllPipelines ()
 
void onShadowMapHandleBeingDestroyed (ShadowMapHandle *pHandleToResourceDestroy)
 
std::optional< ErrorrecreateShadowMaps ()
 
unsigned int correctShadowMapResolutionForType (unsigned int iRenderSettingsShadowMapSize, ShadowMapType type)
 
ShadowMapArrayIndexManagergetArrayIndexManagerBasedOnShadowMapType (ShadowMapType type)
 
+ + + + + +

+Private Attributes

std::pair< std::recursive_mutex, InternalResourcesmtxInternalResources
 
GpuResourceManagerpResourceManager = nullptr
 
+ + + + + + + + + +

+Static Private Attributes

static constexpr float visibleDistanceToNearClipPlaneRatio = 0.004F
 
static constexpr auto pDirectionalShadowMapsShaderResourceName = "directionalShadowMaps"
 
static constexpr auto pSpotShadowMapsShaderResourceName = "spotShadowMaps"
 
static constexpr auto pPointShadowMapsShaderResourceName = "pointShadowMaps"
 
+ + + + + + + +

+Friends

+class ShadowMapHandle
 
+class Renderer
 
+class PipelineManager
 
+

Detailed Description

+

Stores all shadow maps.

+
Remarks
Although shadow maps are textures they are not managed by the texture manager because shadow maps are special (specific) textures and they need special treatment/management logic that texture manager should not care about.
+

Constructor & Destructor Documentation

+ +

◆ ~ShadowMapManager()

+ +
+
+ + + + + + + +
ne::ShadowMapManager::~ShadowMapManager ()
+
+

Makes sure that no resource exists.

+ +
+
+ +

◆ ShadowMapManager()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ne::ShadowMapManager::ShadowMapManager (GpuResourceManagerpResourceManager,
std::array< std::unique_ptr< ShadowMapArrayIndexManager >, static_cast< size_t >(ShadowMapType::SIZE)> vShadowMapArrayIndexManagers 
)
+
+private
+
+

Initializes the manager.

+
Parameters
+ + + +
pResourceManagerResource manager that owns this object.
vShadowMapArrayIndexManagersArray index managers for various light source types
+
+
+ +
+
+

Member Function Documentation

+ +

◆ bindShadowMapsToAllPipelines()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::ShadowMapManager::bindShadowMapsToAllPipelines ()
+
+private
+
+

Goes through all graphics pipelines ad binds shadow maps to pipelines that use them.

+
Returns
Error if something went wrong.
+ +
+
+ +

◆ bindShadowMapsToPipeline()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::ShadowMapManager::bindShadowMapsToPipeline (PipelinepPipeline)
+
+private
+
+

Looks if the specified pipeline uses shadow maps and if uses binds shadow maps to the pipeline.

+
Parameters
+ + +
pPipelinePipeline to bind shadow maps to.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ correctShadowMapResolutionForType()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
unsigned int ne::ShadowMapManager::correctShadowMapResolutionForType (unsigned int iRenderSettingsShadowMapSize,
ShadowMapType type 
)
+
+private
+
+

Returns shadow map texture size (in pixels) that should be used for the specified shadow map type. (the specified value might be corrected for the specified shadow map type).

+
Parameters
+ + + +
iRenderSettingsShadowMapSizeShadow map size from render settings.
typeShadow map size.
+
+
+
Returns
Shadow map size to use for this shadow map type.
+ +
+
+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + +
std::variant< std::unique_ptr< ShadowMapManager >, Error > ne::ShadowMapManager::create (GpuResourceManagerpResourceManager)
+
+static
+
+

Creates a new shadow map manager.

+
Parameters
+ + +
pResourceManagerResource manager that owns this object.
+
+
+
Returns
Error if something went wrong, otherwise created shadow map manager.
+ +
+
+ +

◆ createShadowMap()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< ShadowMapHandle >, Error > ne::ShadowMapManager::createShadowMap (const std::string & sResourceName,
ShadowMapType type,
const std::function< void(unsigned int)> & onArrayIndexChanged 
)
+
+

Creates a shadow map.

+
Parameters
+ + + + +
sResourceNameName of the GPU resource that will be created, used for logging.
typeType of a shadow map to create depending on the light source type.
onArrayIndexChangedCalled after the index of the returned shadow map into the descriptor array of shadow maps was initialized/changed.
+
+
+
Returns
Error if something went wrong, otherwise created shadow map. Returning unique ptr although shadow map handle already behaves like unique ptr in order for the manager to be able to store raw pointers to handles without fearing that a raw pointer will point to invalid handle due to moveing the handle.
+ +
+
+ +

◆ getArrayIndexManagerBasedOnShadowMapType()

+ +
+
+ + + + + +
+ + + + + + + + +
ShadowMapArrayIndexManager * ne::ShadowMapManager::getArrayIndexManagerBasedOnShadowMapType (ShadowMapType type)
+
+private
+
+

Returns pointer to one of the array index managers from mtxInternalResources depending on the specified shadow map type.

+
Warning
Do not delete (free) returned pointer.
+
Remarks
Expects that mtxInternalResources is locked.
+
Parameters
+ + +
typeType of the shadow map to determine the manager.
+
+
+
Returns
nullptr if specified not supported shadow map type, otherwise valid pointer.
+ +
+
+ +

◆ getDirectionalShadowMapsShaderResourceName()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr const char * ne::ShadowMapManager::getDirectionalShadowMapsShaderResourceName ()
+
+inlinestaticconstexpr
+
+

Returns name of the shader resource (from shader code) that stores all directional light shadow maps.

+
Returns
Shader resource name.
+ +
+
+ +

◆ getInternalResources()

+ +
+
+ + + + + +
+ + + + + + + +
std::pair< std::recursive_mutex, InternalResources > * ne::ShadowMapManager::getInternalResources ()
+
+inline
+
+

Returns internal resources of this manager.

+
Warning
Do not delete (free) returned pointer.
+
Returns
Internal resources.
+ +
+
+ +

◆ getPointShadowMapsShaderResourceName()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr const char * ne::ShadowMapManager::getPointShadowMapsShaderResourceName ()
+
+inlinestaticconstexpr
+
+

Returns name of the shader resource (from shader code) that stores all point light shadow maps.

+
Returns
Shader resource name.
+ +
+
+ +

◆ getRenderer()

+ +
+
+ + + + + + + +
Renderer * ne::ShadowMapManager::getRenderer () const
+
+

Returns renderer.

+
Returns
Renderer.
+ +
+
+ +

◆ getShadowPassDepthBias()

+ +
+
+ + + + + +
+ + + + + + + +
int ne::ShadowMapManager::getShadowPassDepthBias ()
+
+static
+
+

Constant depth bias (offset) to apply when rendering depth to shadow maps to avoid an effect known as "shadow acne" (stair-stepping).

+
Returns
Constant depth bias.
+ +
+
+ +

◆ getShadowPassDepthSlopeFactor()

+ +
+
+ + + + + +
+ + + + + + + +
float ne::ShadowMapManager::getShadowPassDepthSlopeFactor ()
+
+static
+
+

Constant depth slope bias (multiplier) to apply when rendering depth to shadow maps to avoid an effect known as "shadow acne" (stair-stepping).

+
Returns
Constant depth slope factor.
+ +
+
+ +

◆ getSpotShadowMapsShaderResourceName()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr const char * ne::ShadowMapManager::getSpotShadowMapsShaderResourceName ()
+
+inlinestaticconstexpr
+
+

Returns name of the shader resource (from shader code) that stores all spot light shadow maps.

+
Returns
Shader resource name.
+ +
+
+ +

◆ getVisibleDistanceToNearClipPlaneRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr float ne::ShadowMapManager::getVisibleDistanceToNearClipPlaneRatio ()
+
+inlinestaticconstexpr
+
+

Returns constant used to convert visible (non-clipped) distance to near clip plane for shadow mapping.

+
Returns
Far to near Z ratio.
+ +
+
+ +

◆ onShadowMapHandleBeingDestroyed()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::ShadowMapManager::onShadowMapHandleBeingDestroyed (ShadowMapHandlepHandleToResourceDestroy)
+
+private
+
+

Called by destructor of shadow map handle to notify the manager that a resource is no longer used.

+
Parameters
+ + +
pHandleToResourceDestroyHandle to resource to destroy.
+
+
+ +
+
+ +

◆ recreateShadowMaps()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::ShadowMapManager::recreateShadowMaps ()
+
+private
+
+

Called by the renderer to notify the manager that shadow quality setting was changed and all shadow maps should now be re-created using the new shadow map resolution.

+
Returns
Error if something went wrong.
+ +
+
+

Member Data Documentation

+ +

◆ mtxInternalResources

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, InternalResources> ne::ShadowMapManager::mtxInternalResources
+
+private
+
+

Allocated shadow maps.

+
Remarks
Storing pairs of "raw pointer" - "unique pointer" to quickly find needed resources when need to destroy some resource given a raw pointer.
+
+Storing raw pointers here is safe because shadow map handle will notify us before destroying the resource so we will remove the raw pointer and shadow map handle
+ +
+
+ +

◆ pDirectionalShadowMapsShaderResourceName

+ +
+
+ + + + + +
+ + + + +
constexpr auto ne::ShadowMapManager::pDirectionalShadowMapsShaderResourceName = "directionalShadowMaps"
+
+staticconstexprprivate
+
+

Name of the shader resource (from shader code) that stores all directional shadow maps.

+ +
+
+ +

◆ pPointShadowMapsShaderResourceName

+ +
+
+ + + + + +
+ + + + +
constexpr auto ne::ShadowMapManager::pPointShadowMapsShaderResourceName = "pointShadowMaps"
+
+staticconstexprprivate
+
+

Name of the shader resource (from shader code) that stores all point shadow maps.

+ +
+
+ +

◆ pResourceManager

+ +
+
+ + + + + +
+ + + + +
GpuResourceManager* ne::ShadowMapManager::pResourceManager = nullptr
+
+private
+
+

Do not delete (free) this pointer. GPU resource manager that owns this object.

+ +
+
+ +

◆ pSpotShadowMapsShaderResourceName

+ +
+
+ + + + + +
+ + + + +
constexpr auto ne::ShadowMapManager::pSpotShadowMapsShaderResourceName = "spotShadowMaps"
+
+staticconstexprprivate
+
+

Name of the shader resource (from shader code) that stores all spot shadow maps.

+ +
+
+ +

◆ visibleDistanceToNearClipPlaneRatio

+ +
+
+ + + + + +
+ + + + +
constexpr float ne::ShadowMapManager::visibleDistanceToNearClipPlaneRatio = 0.004F
+
+staticconstexprprivate
+
+

Constant used to convert visible (non-clipped) distance to near clip plane for shadow mapping.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/general/resource/shadow/ShadowMapManager.h
  • +
  • src/engine_lib/private/render/general/resource/shadow/ShadowMapManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ShadowMapManager.js b/classne_1_1ShadowMapManager.js new file mode 100644 index 000000000..e89051dc3 --- /dev/null +++ b/classne_1_1ShadowMapManager.js @@ -0,0 +1,29 @@ +var classne_1_1ShadowMapManager = +[ + [ "InternalResources", "structne_1_1ShadowMapManager_1_1InternalResources.html", "structne_1_1ShadowMapManager_1_1InternalResources" ], + [ "ShadowMapHandleResources", "structne_1_1ShadowMapManager_1_1ShadowMapHandleResources.html", "structne_1_1ShadowMapManager_1_1ShadowMapHandleResources" ], + [ "~ShadowMapManager", "classne_1_1ShadowMapManager.html#af9e145ab19d0c5745fefca168ebca19e", null ], + [ "ShadowMapManager", "classne_1_1ShadowMapManager.html#ab2160d05ed38e5ab2ae6ac7f5011f6a5", null ], + [ "bindShadowMapsToAllPipelines", "classne_1_1ShadowMapManager.html#a9b6ce0b9dfdce9646454013a505eb901", null ], + [ "bindShadowMapsToPipeline", "classne_1_1ShadowMapManager.html#ad4c128e8327e2fbed373f94a1e327cf8", null ], + [ "correctShadowMapResolutionForType", "classne_1_1ShadowMapManager.html#a42e4558005a41dd1e56529f95ca0c8d6", null ], + [ "create", "classne_1_1ShadowMapManager.html#afdeaed693969ef6c0086bd4cbe1e7566", null ], + [ "createShadowMap", "classne_1_1ShadowMapManager.html#aaa3738a11cb6e6d13f2b32a72cb2d884", null ], + [ "getArrayIndexManagerBasedOnShadowMapType", "classne_1_1ShadowMapManager.html#a95e60fc5e0f6c1b4123673d919bc39fa", null ], + [ "getDirectionalShadowMapsShaderResourceName", "classne_1_1ShadowMapManager.html#ae122edf82ee3612ccd217f223216229b", null ], + [ "getInternalResources", "classne_1_1ShadowMapManager.html#a39f611895ac4f76c50ac43b8954811e5", null ], + [ "getPointShadowMapsShaderResourceName", "classne_1_1ShadowMapManager.html#a5ebcd4be52c938935837c85764229845", null ], + [ "getRenderer", "classne_1_1ShadowMapManager.html#a279927b58f6d9b133a52fa64f30c83a3", null ], + [ "getShadowPassDepthBias", "classne_1_1ShadowMapManager.html#a8b91d5b4bb295bc2d476ef2245348d17", null ], + [ "getShadowPassDepthSlopeFactor", "classne_1_1ShadowMapManager.html#a8193cb1ecfc0af6f57a5a428d1a13e6a", null ], + [ "getSpotShadowMapsShaderResourceName", "classne_1_1ShadowMapManager.html#a5c0dddca2553708ee6f96742a088fd80", null ], + [ "getVisibleDistanceToNearClipPlaneRatio", "classne_1_1ShadowMapManager.html#a98d0cfa3f9a8786f34ec00ec560afa2e", null ], + [ "onShadowMapHandleBeingDestroyed", "classne_1_1ShadowMapManager.html#a45d27940a9c5513d4f71fff46459859d", null ], + [ "recreateShadowMaps", "classne_1_1ShadowMapManager.html#aa1ffc8307e6ade709bb3910fbe5289a6", null ], + [ "mtxInternalResources", "classne_1_1ShadowMapManager.html#af787913862612c7c18dae345fb0cd1f7", null ], + [ "pDirectionalShadowMapsShaderResourceName", "classne_1_1ShadowMapManager.html#a83c118221584c70df6f1cb65eb03e755", null ], + [ "pPointShadowMapsShaderResourceName", "classne_1_1ShadowMapManager.html#a1797ba789929450c4e49491838f2125e", null ], + [ "pResourceManager", "classne_1_1ShadowMapManager.html#ace5a6dbb7289d9d35ef1bab45db45397", null ], + [ "pSpotShadowMapsShaderResourceName", "classne_1_1ShadowMapManager.html#a0eb08feb300194ad045bcc235e2218bf", null ], + [ "visibleDistanceToNearClipPlaneRatio", "classne_1_1ShadowMapManager.html#a4d36fca7a59c30ba9fc474f13a7bce7b", null ] +]; \ No newline at end of file diff --git a/classne_1_1SpatialNode-members.html b/classne_1_1SpatialNode-members.html new file mode 100644 index 000000000..f151b2293 --- /dev/null +++ b/classne_1_1SpatialNode-members.html @@ -0,0 +1,241 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::SpatialNode Member List
+
+
+ +

This is the complete list of members for ne::SpatialNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addChildNode(const sgc::GcPtr< Node > &pNode, AttachmentRule locationRule=AttachmentRule::KEEP_WORLD, AttachmentRule rotationRule=AttachmentRule::KEEP_WORLD, AttachmentRule scaleRule=AttachmentRule::KEEP_WORLD)ne::Node
applyAttachmentRule(Node::AttachmentRule locationRule, const glm::vec3 &worldLocationBeforeAttachment, Node::AttachmentRule rotationRule, const glm::vec3 &worldRotationBeforeAttachment, Node::AttachmentRule scaleRule, const glm::vec3 &worldScaleBeforeAttachment)ne::SpatialNodeprivate
AttachmentRule enum namene::Node
bSerializene::Nodeprivate
createNotificationBroadcaster()ne::Nodeinlineprotected
createTimer(const std::string &sTimerName)ne::Nodeprotected
deserialize(const std::filesystem::path &pathToFile)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)ne::Serializablestatic
deserialize(std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, const std::string &sEntityId)ne::Serializablestatic
deserialize(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})ne::Serializablestatic
deserializeFromSection(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sSectionName, const std::string &sTypeGuid, const std::string &sEntityId, const std::optional< std::filesystem::path > &optionalPathToFile)ne::Serializableprivatestatic
deserializeMultiple(std::filesystem::path pathToFile)ne::Serializablestatic
deserializeNodeTree(const std::filesystem::path &pathToFile)ne::Nodestatic
despawn()ne::Nodeprivate
detachFromParentAndDespawn()ne::Node
enableTimer(Timer *pTimer, bool bEnable)ne::Nodeprivate
findValidWorld()ne::Nodeprivate
getActionEventBindings()ne::Nodeprotected
getAliveNodeCount()ne::Nodestatic
getAxisEventBindings()ne::Nodeprotected
getChildNodeOfType(const std::string &sChildNodeName="")ne::Node
getChildNodes()ne::Node
getClassForGuid(const std::string &sGuid)ne::Serializableprivatestatic
getClassForGuid(const rfk::Struct *pArchetypeToAnalyze, const std::string &sGuid)ne::Serializableprivatestatic
getClosestSpatialParent()ne::SpatialNode
getGameInstance()ne::Nodestatic
getIdsFromFile(std::filesystem::path pathToFile)ne::Serializablestatic
getInformationForSerialization(size_t &iId, std::optional< size_t > iParentId)ne::Nodeprivate
getNodeId() constne::Node
getNodeName() constne::Node
getParentNode()ne::Node
getParentNodeOfType(const std::string &sParentNodeName="")ne::Node
getPathDeserializedFromRelativeToRes() constne::Serializable
getRelativeLocation() constne::SpatialNodeinline
getRelativeRotation() constne::SpatialNodeinline
getRelativeRotationMatrix()ne::SpatialNode
getRelativeScale() constne::SpatialNodeinline
getSpawnDespawnMutex()ne::Nodeprotected
getTickGroup() constne::Node
getWorldForwardDirection()ne::SpatialNode
getWorldLocation()ne::SpatialNode
getWorldMatrix()ne::SpatialNode
getWorldRightDirection()ne::SpatialNode
getWorldRootNode()ne::Node
getWorldRotation()ne::SpatialNode
getWorldRotationQuaternion()ne::SpatialNode
getWorldScale()ne::SpatialNode
getWorldUpDirection()ne::SpatialNode
iNodeIdne::Nodeprivate
isCalledEveryFrame()ne::Node
isChildOf(Node *pNode)ne::Node
isParentOf(Node *pNode)ne::Node
isReceivingInput()ne::Node
isSerialized() constne::Node
isSpawned()ne::Node
isTreeDeserializedFromOneFile(const std::string &sPathRelativeToRes)ne::Nodeprivate
lockChildren()ne::Nodeprivate
mtxBindedActionEventsne::Nodeprivate
mtxBindedAxisEventsne::Nodeprivate
mtxChildNodesne::Nodeprivate
mtxCreatedBroadcastersne::Nodeprivate
mtxCreatedTimersne::Nodeprivate
mtxIsCalledEveryFramene::Nodeprivate
mtxIsReceivingInputne::Nodeprivate
mtxIsSpawnedne::Nodeprivate
mtxLocalSpacene::SpatialNodeprivate
mtxParentNodene::Nodeprivate
mtxSpatialParentne::SpatialNodeprivate
mtxWorldMatrixne::SpatialNodeprivate
Node (defined in ne::SpatialNode)ne::SpatialNodefriend
ne::Node::Node(const std::string &sName)ne::Node
Node(const Node &)=delete (defined in ne::Node)ne::Node
Node(Node &&)=delete (defined in ne::Node)ne::Node
notifyAboutAttachedToNewParent(bool bThisNodeBeingAttached)ne::Nodeprivate
notifyAboutDetachingFromParent(bool bThisNodeBeingDetached)ne::Nodeprivate
onAfterAttachedToNewParent(bool bThisNodeBeingAttached) overridene::SpatialNodeprotectedvirtual
onAfterDeserialized() overridene::SpatialNodeprotectedvirtual
onBeforeDetachedFromParent(bool bThisNodeBeingDetached)ne::Nodeinlineprotectedvirtual
onBeforeNewFrame(float timeSincePrevFrameInSec)ne::Nodeinlineprotectedvirtual
onChildNodesSpawned()ne::Nodeinlineprotectedvirtual
onDespawning()ne::Nodeinlineprotectedvirtual
onInputActionEvent(unsigned int iActionId, KeyboardModifiers modifiers, bool bIsPressedDown)ne::Nodeprivate
onInputAxisEvent(unsigned int iAxisEventId, KeyboardModifiers modifiers, float input)ne::Nodeprivate
onMouseMove(double xOffset, double yOffset)ne::Nodeinlineprotectedvirtual
onMouseScrollMove(int iOffset)ne::Nodeinlineprotectedvirtual
onSpawning() overridene::SpatialNodeprotectedvirtual
onWorldLocationRotationScaleChanged()ne::SpatialNodeinlineprotectedvirtual
operator=(const Node &)=delete (defined in ne::Node)ne::Node
operator=(Node &&)=delete (defined in ne::Node)ne::Node
pathDeserializedFromRelativeToResne::Serializableprivate
pWorldne::Nodeprivate
recalculateLocalMatrix()ne::SpatialNodeprivate
recalculateWorldMatrix(bool bNotifyChildren=true)ne::SpatialNodeprivate
recalculateWorldMatrixForNodeAndNotifyChildren(Node *pNode)ne::SpatialNodeprivate
relativeLocationne::SpatialNodeprivate
relativeRotationne::SpatialNodeprivate
relativeScalene::SpatialNodeprivate
resolvePathToToml(std::filesystem::path &pathToFile)ne::Serializableprivatestatic
sCustomAttributePrefixne::Serializableprivatestatic
Serializable()=default (defined in ne::Serializable)ne::Serializable
serialize(std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})ne::Serializable
serialize(toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serialize(toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serializeMultiple(std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)ne::Serializablestatic
serializeNodeTree(const std::filesystem::path &pathToFile, bool bEnableBackup)ne::Node
setIsCalledEveryFrame(bool bEnable)ne::Nodeprotected
setIsReceivingInput(bool bEnable)ne::Nodeprotected
setNodeName(const std::string &sName)ne::Node
setRelativeLocation(const glm::vec3 &location)ne::SpatialNode
setRelativeRotation(const glm::vec3 &rotation)ne::SpatialNode
setRelativeScale(const glm::vec3 &scale)ne::SpatialNode
setSerialize(bool bSerialize)ne::Node
setTickGroup(TickGroup tickGroup)ne::Nodeprotected
setWorldLocation(const glm::vec3 &location)ne::SpatialNode
setWorldRotation(const glm::vec3 &rotation)ne::SpatialNode
setWorldScale(const glm::vec3 &scale)ne::SpatialNode
sExternalNodeTreePathAttributeNamene::Nodeinlineprivatestatic
sNodeNamene::Nodeprivate
sNothingToSerializeKeyne::Serializableinlineprivatestatic
sParentNodeIdAttributeNamene::Nodeinlineprivatestatic
sPathRelativeToResKeyne::Serializableinlineprivatestatic
SpatialNode() (defined in ne::SpatialNode)ne::SpatialNode
SpatialNode(const std::string &sNodeName)ne::SpatialNode
spawn()ne::Nodeprivate
sSubEntityFieldNameKeyne::Serializableinlineprivatestatic
tickGroupne::Nodeprivate
unlockChildren()ne::Nodeprivate
~Node() overridene::Nodevirtual
~Serializable() override=default (defined in ne::Serializable)ne::Serializablevirtual
~SpatialNode() override=default (defined in ne::SpatialNode)ne::SpatialNodevirtual
+
+ + + + diff --git a/classne_1_1SpatialNode.html b/classne_1_1SpatialNode.html new file mode 100644 index 000000000..d89d2e264 --- /dev/null +++ b/classne_1_1SpatialNode.html @@ -0,0 +1,1278 @@ + + + + + + + +Nameless Engine: ne::SpatialNode Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <SpatialNode.h>

+
+Inheritance diagram for ne::SpatialNode:
+
+
+ + +ne::Node +ne::Serializable +ne::CameraNode +ne::DirectionalLightNode +ne::MeshNode +ne::PointLightNode +ne::SpotlightNode +ne::EditorCameraNode + +
+ + + + + + +

+Classes

struct  LocalSpaceInformation
 
struct  WorldMatrixInformation
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SpatialNode (const std::string &sNodeName)
 
void setRelativeLocation (const glm::vec3 &location)
 
void setRelativeRotation (const glm::vec3 &rotation)
 
void setRelativeScale (const glm::vec3 &scale)
 
void setWorldLocation (const glm::vec3 &location)
 
void setWorldRotation (const glm::vec3 &rotation)
 
void setWorldScale (const glm::vec3 &scale)
 
glm::vec3 getRelativeLocation () const
 
glm::vec3 getRelativeRotation () const
 
glm::vec3 getRelativeScale () const
 
glm::mat4x4 getRelativeRotationMatrix ()
 
glm::vec3 getWorldLocation ()
 
glm::vec3 getWorldRotation ()
 
glm::quat getWorldRotationQuaternion ()
 
glm::vec3 getWorldScale ()
 
glm::vec3 getWorldForwardDirection ()
 
glm::vec3 getWorldRightDirection ()
 
glm::vec3 getWorldUpDirection ()
 
glm::mat4x4 getWorldMatrix ()
 
std::pair< std::recursive_mutex, sgc::GcPtr< SpatialNode > > * getClosestSpatialParent ()
 
- Public Member Functions inherited from ne::Node
 Node ()
 
 Node (const std::string &sName)
 
Node (const Node &)=delete
 
+Nodeoperator= (const Node &)=delete
 
Node (Node &&)=delete
 
+Nodeoperator= (Node &&)=delete
 
virtual ~Node () override
 
void setNodeName (const std::string &sName)
 
void detachFromParentAndDespawn ()
 
void addChildNode (const sgc::GcPtr< Node > &pNode, AttachmentRule locationRule=AttachmentRule::KEEP_WORLD, AttachmentRule rotationRule=AttachmentRule::KEEP_WORLD, AttachmentRule scaleRule=AttachmentRule::KEEP_WORLD)
 
void setSerialize (bool bSerialize)
 
std::optional< ErrorserializeNodeTree (const std::filesystem::path &pathToFile, bool bEnableBackup)
 
std::string getNodeName () const
 
sgc::GcPtr< NodegetWorldRootNode ()
 
std::pair< std::recursive_mutex, sgc::GcPtr< Node > > * getParentNode ()
 
std::pair< std::recursive_mutex, sgc::GcVector< sgc::GcPtr< Node > > > * getChildNodes ()
 
template<typename NodeType >
+requires std::derived_from<NodeType, Node>
sgc::GcPtr< NodeType > getParentNodeOfType (const std::string &sParentNodeName="")
 
template<typename NodeType >
+requires std::derived_from<NodeType, Node>
sgc::GcPtr< NodeType > getChildNodeOfType (const std::string &sChildNodeName="")
 
TickGroup getTickGroup () const
 
std::optional< size_t > getNodeId () const
 
bool isCalledEveryFrame ()
 
bool isReceivingInput ()
 
bool isSpawned ()
 
bool isParentOf (Node *pNode)
 
bool isChildOf (Node *pNode)
 
bool isSerialized () const
 
- Public Member Functions inherited from ne::Serializable
std::optional< Errorserialize (std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})
 
std::variant< std::string, Errorserialize (toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::variant< std::string, Errorserialize (toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::optional< std::pair< std::string, std::string > > getPathDeserializedFromRelativeToRes () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void onAfterDeserialized () override
 
virtual void onSpawning () override
 
virtual void onAfterAttachedToNewParent (bool bThisNodeBeingAttached) override
 
virtual void onWorldLocationRotationScaleChanged ()
 
- Protected Member Functions inherited from ne::Node
void setIsCalledEveryFrame (bool bEnable)
 
void setTickGroup (TickGroup tickGroup)
 
void setIsReceivingInput (bool bEnable)
 
TimercreateTimer (const std::string &sTimerName)
 
template<typename FunctionType >
NodeNotificationBroadcaster< FunctionType > * createNotificationBroadcaster ()
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, bool)> > > * getActionEventBindings ()
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, float)> > > * getAxisEventBindings ()
 
std::recursive_mutex * getSpawnDespawnMutex ()
 
virtual void onMouseMove (double xOffset, double yOffset)
 
virtual void onMouseScrollMove (int iOffset)
 
virtual void onBeforeNewFrame (float timeSincePrevFrameInSec)
 
virtual void onSpawning ()
 
virtual void onChildNodesSpawned ()
 
virtual void onDespawning ()
 
virtual void onBeforeDetachedFromParent (bool bThisNodeBeingDetached)
 
virtual void onAfterAttachedToNewParent (bool bThisNodeBeingAttached)
 
virtual void onAfterDeserialized ()
 
+ + + + + + + + + +

+Private Member Functions

void applyAttachmentRule (Node::AttachmentRule locationRule, const glm::vec3 &worldLocationBeforeAttachment, Node::AttachmentRule rotationRule, const glm::vec3 &worldRotationBeforeAttachment, Node::AttachmentRule scaleRule, const glm::vec3 &worldScaleBeforeAttachment)
 
void recalculateWorldMatrix (bool bNotifyChildren=true)
 
void recalculateLocalMatrix ()
 
void recalculateWorldMatrixForNodeAndNotifyChildren (Node *pNode)
 
+ + + + + + + + + + + + + +

+Private Attributes

glm::vec3 relativeLocation = glm::vec3(0.0F, 0.0F, 0.0F)
 
glm::vec3 relativeRotation = glm::vec3(0.0F, 0.0F, 0.0F)
 
glm::vec3 relativeScale = glm::vec3(1.0F, 1.0F, 1.0F)
 
std::pair< std::recursive_mutex, sgc::GcPtr< SpatialNode > > mtxSpatialParent {}
 
std::pair< std::recursive_mutex, LocalSpaceInformationmtxLocalSpace {}
 
std::pair< std::recursive_mutex, WorldMatrixInformationmtxWorldMatrix {}
 
+ + + +

+Friends

+class Node
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ne::Node
enum class  AttachmentRule { RESET_RELATIVE +, KEEP_RELATIVE +, KEEP_WORLD + }
 
- Static Public Member Functions inherited from ne::Node
static size_t getAliveNodeCount ()
 
static std::variant< sgc::GcPtr< Node >, ErrordeserializeNodeTree (const std::filesystem::path &pathToFile)
 
static GameInstancegetGameInstance ()
 
- Static Public Member Functions inherited from ne::Serializable
static std::variant< std::pair< std::set< std::string >, toml::value >, ErrorgetIdsFromFile (std::filesystem::path pathToFile)
 
static std::optional< ErrorserializeMultiple (std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::same_as<SmartPointer, sgc::GcPtr<Serializable>> || std::same_as<SmartPointer, std::unique_ptr<Serializable>>
static std::variant< std::vector< DeserializedObjectInformation< SmartPointer > >, ErrordeserializeMultiple (std::filesystem::path pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})
 
+

Detailed Description

+

Represents a node that can have a location, rotation and a scale in a 3D space.

+

Constructor & Destructor Documentation

+ +

◆ SpatialNode()

+ +
+
+ + + + + + + + +
ne::SpatialNode::SpatialNode (const std::string & sNodeName)
+
+

Creates a new node with the specified name.

+
Parameters
+ + +
sNodeNameName of this node.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ applyAttachmentRule()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ne::SpatialNode::applyAttachmentRule (Node::AttachmentRule locationRule,
const glm::vec3 & worldLocationBeforeAttachment,
Node::AttachmentRule rotationRule,
const glm::vec3 & worldRotationBeforeAttachment,
Node::AttachmentRule scaleRule,
const glm::vec3 & worldScaleBeforeAttachment 
)
+
+private
+
+

Called by Node class after we have attached to a new parent node and now need to apply attachment rules based on this new parent node.

+
Parameters
+ + + + + + + +
locationRuleDefines how location should change.
worldLocationBeforeAttachmentWorld location of this node before being attached.
rotationRuleDefines how rotation should change.
worldRotationBeforeAttachmentWorld rotation of this node before being attached.
scaleRuleDefines how scale should change.
worldScaleBeforeAttachmentWorld scale of this node before being attached.
+
+
+ +
+
+ +

◆ getClosestSpatialParent()

+ +
+
+ + + + + + + +
std::pair< std::recursive_mutex, sgc::GcPtr< SpatialNode > > * ne::SpatialNode::getClosestSpatialParent ()
+
+

Returns the first (most closer to this node) spatial node in the parent node chain (i.e. cached result of getParentNodeOfType<SpatialNode> that can be used without any search operations).

+
Warning
Avoid saving returned raw pointer as it points to the node's field and does not guarantee that the node will always live while you hold this pointer. Returning raw pointer in order to avoid creating GC pointers (if you for example only want to check closes parent node), but you can always save GC pointer if you need.
+
Returns
nullptr as a gc pointer (second value in the pair) if there is no SpatialNode in the parent node chain, otherwise closest SpatialNode in the parent node chain.
+ +
+
+ +

◆ getRelativeLocation()

+ +
+
+ + + + + +
+ + + + + + + +
glm::vec3 ne::SpatialNode::getRelativeLocation () const
+
+inline
+
+

Returns node's relative location (see setRelativeLocation).

+
Returns
Relative location.
+ +
+
+ +

◆ getRelativeRotation()

+ +
+
+ + + + + +
+ + + + + + + +
glm::vec3 ne::SpatialNode::getRelativeRotation () const
+
+inline
+
+

Returns node's relative rotation in degrees (see setRelativeRotation). Also see getRelativeRotationMatrix.

+
Returns
Relative rotation.
+ +
+
+ +

◆ getRelativeRotationMatrix()

+ +
+
+ + + + + + + +
glm::mat4x4 ne::SpatialNode::getRelativeRotationMatrix ()
+
+

Returns a rotation matrix that applies node's relative rotation.

+
Returns
Rotation matrix.
+ +
+
+ +

◆ getRelativeScale()

+ +
+
+ + + + + +
+ + + + + + + +
glm::vec3 ne::SpatialNode::getRelativeScale () const
+
+inline
+
+

Returns node's relative scale (see setRelativeScale).

+
Returns
Relative scale.
+ +
+
+ +

◆ getWorldForwardDirection()

+ +
+
+ + + + + + + +
glm::vec3 ne::SpatialNode::getWorldForwardDirection ()
+
+

Returns node's forward direction in world space.

+
Returns
Unit vector that points in the node's world forward direction.
+ +
+
+ +

◆ getWorldLocation()

+ +
+
+ + + + + + + +
glm::vec3 ne::SpatialNode::getWorldLocation ()
+
+

Returns node's world location (see setWorldLocation).

+
Remarks
If the node is not spawned and has no parent, returns getRelativeLocation. If the node is not spawned but has a parent, returns its location in the hierarchy.
+
Returns
Location of the node in the world.
+ +
+
+ +

◆ getWorldMatrix()

+ +
+
+ + + + + + + +
glm::mat4x4 ne::SpatialNode::getWorldMatrix ()
+
+

Returns node's world matrix (matrix that transforms node's data (for example vertices) to world space).

+
Returns
World matrix.
+ +
+
+ +

◆ getWorldRightDirection()

+ +
+
+ + + + + + + +
glm::vec3 ne::SpatialNode::getWorldRightDirection ()
+
+

Returns node's right direction in world space.

+
Returns
Unit vector that points in the node's right direction.
+ +
+
+ +

◆ getWorldRotation()

+ +
+
+ + + + + + + +
glm::vec3 ne::SpatialNode::getWorldRotation ()
+
+

Returns node's world rotation in degrees (see setWorldRotation). Also see getWorldRotationQuaternion.

+
Remarks
If the node is not spawned and has no parent, returns getRelativeRotation. If the node is not spawned but has a parent, returns its rotation in the hierarchy.
+
Returns
Rotation of the node in the world.
+ +
+
+ +

◆ getWorldRotationQuaternion()

+ +
+
+ + + + + + + +
glm::quat ne::SpatialNode::getWorldRotationQuaternion ()
+
+

Returns node's world rotation in the quaternion form (see getWorldRotation).

+
Returns
Rotation of the node in the world.
+ +
+
+ +

◆ getWorldScale()

+ +
+
+ + + + + + + +
glm::vec3 ne::SpatialNode::getWorldScale ()
+
+

Returns node's world scale (see setWorldScale).

+
Remarks
If the node is not spawned and has no parent, returns getRelativeScale. If the node is not spawned but has a parent, returns its scale in the hierarchy.
+
Returns
Scale of the node in the world.
+ +
+
+ +

◆ getWorldUpDirection()

+ +
+
+ + + + + + + +
glm::vec3 ne::SpatialNode::getWorldUpDirection ()
+
+

Returns node's up direction in world space.

+
Returns
Unit vector that points in the node's up direction.
+ +
+
+ +

◆ onAfterAttachedToNewParent()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::SpatialNode::onAfterAttachedToNewParent (bool bThisNodeBeingAttached)
+
+overrideprotectedvirtual
+
+

Called after this node or one of the node's parents (in the parent hierarchy) was attached to a new parent node.

+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+
Remarks
This function will also be called on all child nodes after this function is finished.
+
Parameters
+ + +
bThisNodeBeingAttachedtrue if this node was attached to a parent, false if some node in the parent hierarchy was attached to a parent.
+
+
+ +

Reimplemented from ne::Node.

+ +

Reimplemented in ne::EditorCameraNode.

+ +
+
+ +

◆ onAfterDeserialized()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::SpatialNode::onAfterDeserialized ()
+
+overrideprotectedvirtual
+
+

Called after the object was successfully deserialized. Used to execute post-deserialization logic.

+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +

Reimplemented from ne::Serializable.

+ +

Reimplemented in ne::DirectionalLightNode, ne::PointLightNode, ne::SpotlightNode, and ne::MeshNode.

+ +
+
+ +

◆ onSpawning()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::SpatialNode::onSpawning ()
+
+overrideprotectedvirtual
+
+

Called when this node was not spawned previously and it was either attached to a parent node that is spawned or set as world's root node to execute custom spawn logic.

+
Remarks
This node will be marked as spawned before this function is called.
+
+This function is called before any of the child nodes are spawned.
+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +

Reimplemented from ne::Node.

+ +

Reimplemented in ne::DirectionalLightNode, ne::PointLightNode, ne::SpotlightNode, and ne::MeshNode.

+ +
+
+ +

◆ onWorldLocationRotationScaleChanged()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void ne::SpatialNode::onWorldLocationRotationScaleChanged ()
+
+inlineprotectedvirtual
+
+

Called after node's world location/rotation/scale was changed.

+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+
Remarks
If you change location/rotation/scale inside of this function, this function will not be called again (no recursion will occur).
+ +

Reimplemented in ne::CameraNode, ne::DirectionalLightNode, ne::PointLightNode, ne::SpotlightNode, and ne::MeshNode.

+ +
+
+ +

◆ recalculateLocalMatrix()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::SpatialNode::recalculateLocalMatrix ()
+
+private
+
+

Recalculates node's local matrix based on local location/rotation/scale.

+ +
+
+ +

◆ recalculateWorldMatrix()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::SpatialNode::recalculateWorldMatrix (bool bNotifyChildren = true)
+
+private
+
+

Recalculates node's world matrix based on the parent world matrix (can be identity if there's node parent) and optionally notifies spatial child nodes.

+
Warning
Expects mtxLocalSpace to be up to date (see recalculateLocalMatrix).
+
Parameters
+ + +
bNotifyChildrenWhether to notify spatial child nodes so that could recalculate their world matrix or not.
+
+
+ +
+
+ +

◆ recalculateWorldMatrixForNodeAndNotifyChildren()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::SpatialNode::recalculateWorldMatrixForNodeAndNotifyChildren (NodepNode)
+
+private
+
+

Checks if the specified node is a SpatialNode and calls recalculateWorldMatrix, otherwise calls this function on all child nodes.

+
Parameters
+ + +
pNodeNode to recalculate world matrix for (if SpatialNode).
+
+
+ +
+
+ +

◆ setRelativeLocation()

+ +
+
+ + + + + + + + +
void ne::SpatialNode::setRelativeLocation (const glm::vec3 & location)
+
+

Sets node's relative location, if there is another SpatialNode in the parent chain then this location is relative to the first SpatialNode in the parent chain, otherwise if there is no SpatialNode in the parent chain, this location is relative to the world.

+
Parameters
+ + +
locationRelative location.
+
+
+ +
+
+ +

◆ setRelativeRotation()

+ +
+
+ + + + + + + + +
void ne::SpatialNode::setRelativeRotation (const glm::vec3 & rotation)
+
+

Sets node's relative rotation (roll, pitch, yaw in degrees), if there is another SpatialNode in the parent chain then this rotation is relative to the first SpatialNode in the parent chain, otherwise if there is no SpatialNode in the parent chain, this rotation is relative to the world.

+
Parameters
+ + +
rotationRelative rotation.
+
+
+ +
+
+ +

◆ setRelativeScale()

+ +
+
+ + + + + + + + +
void ne::SpatialNode::setRelativeScale (const glm::vec3 & scale)
+
+

Sets node's relative scale, if there is another SpatialNode in the parent chain then this scale is relative to the first SpatialNode in the parent chain, otherwise if there is no SpatialNode in the parent chain, this scale is relative to the world.

+
Parameters
+ + +
scaleRelative scale.
+
+
+ +
+
+ +

◆ setWorldLocation()

+ +
+
+ + + + + + + + +
void ne::SpatialNode::setWorldLocation (const glm::vec3 & location)
+
+

Sets relative location in the way that the resulting node's location in the world would match the specified location.

+
Remarks
If the node is not spawned just sets node's relative location.
+
Parameters
+ + +
locationLocation that the node should take in the world.
+
+
+ +
+
+ +

◆ setWorldRotation()

+ +
+
+ + + + + + + + +
void ne::SpatialNode::setWorldRotation (const glm::vec3 & rotation)
+
+

Sets relative rotation (roll, pitch, yaw in degrees) in the way that the resulting node's rotation in the world would match the specified rotation.

+
Remarks
If the node is not spawned just sets node's relative rotation.
+
Parameters
+ + +
rotationRotation that the node should take in the world.
+
+
+ +
+
+ +

◆ setWorldScale()

+ +
+
+ + + + + + + + +
void ne::SpatialNode::setWorldScale (const glm::vec3 & scale)
+
+

Sets relative scale in the way that the resulting node's scale in the world would match the specified scale.

+
Remarks
If the node is not spawned just sets node's relative scale.
+
Parameters
+ + +
scaleScale that the node should take in the world.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ mtxLocalSpace

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, LocalSpaceInformation> ne::SpatialNode::mtxLocalSpace {}
+
+private
+
+

Matrix that describes basis vectors that define node's local space.

+ +
+
+ +

◆ mtxSpatialParent

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, sgc::GcPtr<SpatialNode> > ne::SpatialNode::mtxSpatialParent {}
+
+private
+
+

First (most closer to this node) spatial node in the parent chain.

+ +
+
+ +

◆ mtxWorldMatrix

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, WorldMatrixInformation> ne::SpatialNode::mtxWorldMatrix {}
+
+private
+
+

World related information, must be used with mutex.

+ +
+
+ +

◆ relativeLocation

+ +
+
+ + + + + +
+ + + + +
glm::vec3 ne::SpatialNode::relativeLocation = glm::vec3(0.0F, 0.0F, 0.0F)
+
+private
+
+

Node's location, if there is another SpatialNode in the parent chain then this location is relative to the first SpatialNode in the parent chain, otherwise if there is no SpatialNode in the parent chain, relative to the world.

+ +
+
+ +

◆ relativeRotation

+ +
+
+ + + + + +
+ + + + +
glm::vec3 ne::SpatialNode::relativeRotation = glm::vec3(0.0F, 0.0F, 0.0F)
+
+private
+
+

Node's rotation in degrees, if there is another SpatialNode in the parent chain then this rotation is relative to the first SpatialNode in the parent chain, otherwise if there is no SpatialNode in the parent chain, relative to the world.

+ +
+
+ +

◆ relativeScale

+ +
+
+ + + + + +
+ + + + +
glm::vec3 ne::SpatialNode::relativeScale = glm::vec3(1.0F, 1.0F, 1.0F)
+
+private
+
+

Node's scale, if there is another SpatialNode in the parent chain then this scale is relative to the first SpatialNode in the parent chain, otherwise if there is no SpatialNode in the parent chain, relative to the world.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/game/nodes/SpatialNode.h
  • +
  • src/engine_lib/private/game/nodes/SpatialNode.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1SpatialNode.js b/classne_1_1SpatialNode.js new file mode 100644 index 000000000..368592d05 --- /dev/null +++ b/classne_1_1SpatialNode.js @@ -0,0 +1,39 @@ +var classne_1_1SpatialNode = +[ + [ "LocalSpaceInformation", "structne_1_1SpatialNode_1_1LocalSpaceInformation.html", "structne_1_1SpatialNode_1_1LocalSpaceInformation" ], + [ "WorldMatrixInformation", "structne_1_1SpatialNode_1_1WorldMatrixInformation.html", "structne_1_1SpatialNode_1_1WorldMatrixInformation" ], + [ "SpatialNode", "classne_1_1SpatialNode.html#ac02b39a7177a89acf9613d4b1bb9f203", null ], + [ "applyAttachmentRule", "classne_1_1SpatialNode.html#a26f0039cbde3055ea33a7090b3d03964", null ], + [ "getClosestSpatialParent", "classne_1_1SpatialNode.html#aa361d4f17cb0cac78ad7f4b1f33d2c05", null ], + [ "getRelativeLocation", "classne_1_1SpatialNode.html#aeb558a9f20e9501a3d8a4b0f4a769f2c", null ], + [ "getRelativeRotation", "classne_1_1SpatialNode.html#a277ebb64994069549f09f5148d890fb9", null ], + [ "getRelativeRotationMatrix", "classne_1_1SpatialNode.html#a50e2381f0d40f43e050cfa9ac2c2d9fa", null ], + [ "getRelativeScale", "classne_1_1SpatialNode.html#a2b030ce699a74fd273d64affd7c34963", null ], + [ "getWorldForwardDirection", "classne_1_1SpatialNode.html#ac8bba3a225a35cd40d5f04c98506aa4e", null ], + [ "getWorldLocation", "classne_1_1SpatialNode.html#acbd42888d6bb7d5ff7e82bd61ed8f8c2", null ], + [ "getWorldMatrix", "classne_1_1SpatialNode.html#a9becf3737c72d57008bbc87d37aea546", null ], + [ "getWorldRightDirection", "classne_1_1SpatialNode.html#a2594545f207a1a4972eade6172cca66c", null ], + [ "getWorldRotation", "classne_1_1SpatialNode.html#af1c06e3d090b282f172c0978c8ddeb17", null ], + [ "getWorldRotationQuaternion", "classne_1_1SpatialNode.html#a9e77c912ebf8f0877addcee649fdffe1", null ], + [ "getWorldScale", "classne_1_1SpatialNode.html#aac522941554b6f4f97f5eb1a2e29d31a", null ], + [ "getWorldUpDirection", "classne_1_1SpatialNode.html#a95209d6c7572ee121505191652ed529b", null ], + [ "onAfterAttachedToNewParent", "classne_1_1SpatialNode.html#ae883c06ca2bc4bd917de5486cbbda0d4", null ], + [ "onAfterDeserialized", "classne_1_1SpatialNode.html#a4ef72e0c9e17fba2aeae88a87c424a84", null ], + [ "onSpawning", "classne_1_1SpatialNode.html#a3af79f3d46f46b70636d67b70dab12d2", null ], + [ "onWorldLocationRotationScaleChanged", "classne_1_1SpatialNode.html#adf62ec87e7faeebafc764a2b71ae92b6", null ], + [ "recalculateLocalMatrix", "classne_1_1SpatialNode.html#aae9f01357ae4a798be84c588dfe11ecc", null ], + [ "recalculateWorldMatrix", "classne_1_1SpatialNode.html#af6a9d48594b1c45a95dde0d1cf542805", null ], + [ "recalculateWorldMatrixForNodeAndNotifyChildren", "classne_1_1SpatialNode.html#a62b2b6516e8a31a398fa1207db20bc23", null ], + [ "setRelativeLocation", "classne_1_1SpatialNode.html#a15d5413bbb88c9b259e8e9e48a271ab6", null ], + [ "setRelativeRotation", "classne_1_1SpatialNode.html#a32914b6236f0d2675736be0f1ea1cac2", null ], + [ "setRelativeScale", "classne_1_1SpatialNode.html#aecf859b09995cfac54203d12d5527627", null ], + [ "setWorldLocation", "classne_1_1SpatialNode.html#a5505c98b284aaf4037e8bf2e31305f2b", null ], + [ "setWorldRotation", "classne_1_1SpatialNode.html#afb2f513f7406d324c9927af5fec07c26", null ], + [ "setWorldScale", "classne_1_1SpatialNode.html#a95c51087d2b8e3bd43ca218de57a7cca", null ], + [ "mtxLocalSpace", "classne_1_1SpatialNode.html#ada55492444a50c37c75d960d612400c8", null ], + [ "mtxSpatialParent", "classne_1_1SpatialNode.html#a5d77f27055f3775057ab0bf195b2c84a", null ], + [ "mtxWorldMatrix", "classne_1_1SpatialNode.html#a624839dac964e36060f5cf43922549d9", null ], + [ "relativeLocation", "classne_1_1SpatialNode.html#a072475ef37d5d228a57d0f690a415d1d", null ], + [ "relativeRotation", "classne_1_1SpatialNode.html#a51a1af4e84b0808687ba2cc75671a226", null ], + [ "relativeScale", "classne_1_1SpatialNode.html#a60c8e2b839f27ff29d797fa69a2fd8df", null ] +]; \ No newline at end of file diff --git a/classne_1_1SpatialNode.png b/classne_1_1SpatialNode.png new file mode 100644 index 0000000000000000000000000000000000000000..386980e5106ed4d6da0045283af040efcd0b1cbe GIT binary patch literal 3538 zcmcgv2~<;O76!CxRm9Fr0|i;Mt=bZx$Py@vbVMl?f-O8C0)esx+4lrUh;6M_gHl07 zmXcOlXkQ><5rb@@Vo(f-n6gL`Q(yogtcDOF0p@=}PN%J>(=(@Ma!y{7``>%d{qJ{| zFK3ToT{O4qZdFrL({z2``6D&84Jb7=^>?;x022MJ+IiqZ@0gp{;nmeu@b$^0EG7F^ znaw+I#p~pCJZWiZ0dmhA{`cVQ<>ZgBo@(H?>V?rL{0aCBaCLsqi=;j!>Q21o`;XJz zBc>t?n}@*|Uqg|7xsT7d;_mkJ0pdj$I}j%dZQjQt6vDG*;?GgYh=xf>3pJ!TYG4 zJKHrhG>(JE9-NbtQxt@15Pd@tO+QOoqNJtU>?*i(i|C5lS$WgAsj{R zoHa&w4%K0cyiZF@ZjO5tVi|4iVaqo9JE;Jk z{+yGQ*8=)d){tYu6Z{v4E~)O0K8@rG z^&C>A{#K-UhF!LJwEe9$SqAuzAlWgH;~4wSYw$#zs+j&Tk2*C^>X{0gojYd>r*^Bra`xmp z2CQM>W_aiAhtH8aa_zUp@E0KWOJDsK{?#m|q`qr|x;iz$2a=rt^%MR2?<&ObUNB~n zE%JtHy^uRAy-;PFfTl9mxVm5Sl_IL9z;w6&4TIIM>>2QJBUP`2CN%Q9vUx0i2>IP; zT{;ArfEo+ZV|dd}sP)CLtAzTVkWAJ3q}ORIda8he;)lR6J{QrNsX$=_;XX7N{u~Kt zxCvd*GgN2oM#L7cJCXoo0aV!wlSf3FY*#EewH9p7X)Jv+#fGDa8N=~+~*!Zrd$EY|`vqQ6br6PzA} zsdd9#a2HxW3^gZ~g2?<-Ef|RkJV+5|XSeHTJ|+gZ799SUBdx(gMiH|S2tt00?2axB z*c40e2=A6tR*}gRgT6bI{=|xw|F;43=|iX8*@Ov2GhJ01X5k5qC1sy%@4|Ah3M^G? zGhX}bcvRWud5V|{YO=+;`0+I)s7C1k2;j`GKwhr$YnV}FBD3rTyJS75e-YL#oG6ZX zCgk~h_1$Oo^p%*r#h|8+&9sr~AJg--dXJ(ieMdi&9WX>+;cb$HIr^I6T7rR`N3QfW z)hkDoL)B@BT>4}1&FD%zP|kS?edT|1GP7zK*q0*GdPEH9Th8j}O9^1(MZBbhy~gu-8C&?`U8{bYN1^eQWBy;a-;+t7+YA9gIDFX*oN^Mm%+@)0bx^^pgg# z#yY-BlO#fr)#JL%8jLvYoS|-P7)mTW3-#EKP7fG%3@P{&>5(L^o9PJu2dWW`HzwOp zyR1Fkgf?j6HRLg1xN2povx{W+vtO%2S1_h1_351Z%DXWR1{Q919r3zj^)t~n-Sar8 zr(D5XAm#8HJRZxG5(#~-X`qiCNFCeICALkW zomOeXNO<_=feftSF<4XyyY!!(8;JV@TxiVT&R?=P`hXd^6mdZaxf{wkFg)5>fy&-{Gi|IPdv^MB3%az#SQ#<#9fK>J zw7^;3Vb;fQ^QPtJH)qBYo}J}EP!B1k_Nqg7XI3p^bZ#M@MM$`b$KZ=<%@JvyVu*#7!QJa~#{}$>I%#FASP6`=+Lc@tK1tg1Nliv@3YLoL60E z*Ugr%3R+E$n-s)oar*ZPIC?NVVJBvyFu6jOr#N)3cdT(fgp&9w3umva%L}ZtVsJ(K z6o+tLkV7S@HiDr11Pyj(h68Q1RT2BG0F4!Ynj1nl``Dv8f+I?WQifA2$8f@|XUP*i zIALZP88cn5jlGu!_}4?^R=!1C5y25BB|@FUqCv31qdHGGGNl^xvZ$rYnCRFAE5b9~ z6Hm+G$lg|Tfh*H^P)1EW(BGNi9!M=-R1VFxNS-d;`iW5;LEs27m+A)MYDTnUPoRhv zUlFkfr+HRsV+hu$ump?yvy&?&E8h$j6F`-J9>xxUdJ6INkF1M8<$rR}L3~SenLy0DwfMX0ecA4cv8$n8SZp@ozsACH9QE_n* zhId%21YgPoJxu=G?}YkGeXFtcY~d~|9n z#cpwdvyviAJ^nV<&dh}zQ?M(2fMgqO-jwGwd<7enm@Q1(z z%!QSF-cVcEV8n%{HIw}IArb={Ct%T~BKw;cJqk_bPe)Gj+a&Mx@wc1!FIdGT*pAPl x!4hjL1vNrB^};>%D=^GyAj8=RF%wYBovZik?g)AX{QFXKJ&bi`{xj&)e*^25bprqZ literal 0 HcmV?d00001 diff --git a/classne_1_1SpotlightNode-members.html b/classne_1_1SpotlightNode-members.html new file mode 100644 index 000000000..d8968378d --- /dev/null +++ b/classne_1_1SpotlightNode-members.html @@ -0,0 +1,276 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::SpotlightNode Member List
+
+
+ +

This is the complete list of members for ne::SpotlightNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addChildNode(const sgc::GcPtr< Node > &pNode, AttachmentRule locationRule=AttachmentRule::KEEP_WORLD, AttachmentRule rotationRule=AttachmentRule::KEEP_WORLD, AttachmentRule scaleRule=AttachmentRule::KEEP_WORLD)ne::Node
applyAttachmentRule(Node::AttachmentRule locationRule, const glm::vec3 &worldLocationBeforeAttachment, Node::AttachmentRule rotationRule, const glm::vec3 &worldRotationBeforeAttachment, Node::AttachmentRule scaleRule, const glm::vec3 &worldScaleBeforeAttachment)ne::SpatialNodeprivate
AttachmentRule enum namene::Node
bSerializene::Nodeprivate
colorne::SpotlightNodeprivate
createNotificationBroadcaster()ne::Nodeinlineprotected
createTimer(const std::string &sTimerName)ne::Nodeprotected
deserialize(const std::filesystem::path &pathToFile)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)ne::Serializablestatic
deserialize(std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)ne::Serializablestatic
deserialize(const std::filesystem::path &pathToFile, const std::string &sEntityId)ne::Serializablestatic
deserialize(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})ne::Serializablestatic
deserializeFromSection(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sSectionName, const std::string &sTypeGuid, const std::string &sEntityId, const std::optional< std::filesystem::path > &optionalPathToFile)ne::Serializableprivatestatic
deserializeMultiple(std::filesystem::path pathToFile)ne::Serializablestatic
deserializeNodeTree(const std::filesystem::path &pathToFile)ne::Nodestatic
despawn()ne::Nodeprivate
detachFromParentAndDespawn()ne::Node
distancene::SpotlightNodeprivate
enableTimer(Timer *pTimer, bool bEnable)ne::Nodeprivate
findValidWorld()ne::Nodeprivate
getActionEventBindings()ne::Nodeprotected
getAliveNodeCount()ne::Nodestatic
getAxisEventBindings()ne::Nodeprotected
getChildNodeOfType(const std::string &sChildNodeName="")ne::Node
getChildNodes()ne::Node
getClassForGuid(const std::string &sGuid)ne::Serializableprivatestatic
getClassForGuid(const rfk::Struct *pArchetypeToAnalyze, const std::string &sGuid)ne::Serializableprivatestatic
getClosestSpatialParent()ne::SpatialNode
getGameInstance()ne::Nodestatic
getIdsFromFile(std::filesystem::path pathToFile)ne::Serializablestatic
getIndexIntoShadowPassInfoShaderArray()ne::SpotlightNodeprivate
getInformationForSerialization(size_t &iId, std::optional< size_t > iParentId)ne::Nodeprivate
getLightColor() constne::SpotlightNode
getLightDistance() constne::SpotlightNode
getLightInnerConeAngle() constne::SpotlightNode
getLightIntensity() constne::SpotlightNode
getLightOuterConeAngle() constne::SpotlightNode
getMaxLightConeAngle()ne::SpotlightNodeinlinestatic
getNodeId() constne::Node
getNodeName() constne::Node
getParentNode()ne::Node
getParentNodeOfType(const std::string &sParentNodeName="")ne::Node
getPathDeserializedFromRelativeToRes() constne::Serializable
getRelativeLocation() constne::SpatialNodeinline
getRelativeRotation() constne::SpatialNodeinline
getRelativeRotationMatrix()ne::SpatialNode
getRelativeScale() constne::SpatialNodeinline
getShadowMapHandle() constne::SpotlightNodeprivate
getShape()ne::SpotlightNode
getSpawnDespawnMutex()ne::Nodeprotected
getTickGroup() constne::Node
getWorldForwardDirection()ne::SpatialNode
getWorldLocation()ne::SpatialNode
getWorldMatrix()ne::SpatialNode
getWorldRightDirection()ne::SpatialNode
getWorldRootNode()ne::Node
getWorldRotation()ne::SpatialNode
getWorldRotationQuaternion()ne::SpatialNode
getWorldScale()ne::SpatialNode
getWorldUpDirection()ne::SpatialNode
innerConeAnglene::SpotlightNodeprivate
iNodeIdne::Nodeprivate
intensityne::SpotlightNodeprivate
isCalledEveryFrame()ne::Node
isChildOf(Node *pNode)ne::Node
isParentOf(Node *pNode)ne::Node
isReceivingInput()ne::Node
isSerialized() constne::Node
isSpawned()ne::Node
isTreeDeserializedFromOneFile(const std::string &sPathRelativeToRes)ne::Nodeprivate
lockChildren()ne::Nodeprivate
markShaderDataToBeCopiedToGpu()ne::SpotlightNodeprivate
maxConeAnglene::SpotlightNodeprivatestatic
mtxBindedActionEventsne::Nodeprivate
mtxBindedAxisEventsne::Nodeprivate
mtxChildNodesne::Nodeprivate
mtxCreatedBroadcastersne::Nodeprivate
mtxCreatedTimersne::Nodeprivate
mtxIsCalledEveryFramene::Nodeprivate
mtxIsReceivingInputne::Nodeprivate
mtxIsSpawnedne::Nodeprivate
mtxLocalSpacene::SpatialNodeprivate
mtxParentNodene::Nodeprivate
mtxShaderDatane::SpotlightNodeprivate
mtxShapene::SpotlightNodeprivate
mtxSpatialParentne::SpatialNodeprivate
mtxWorldMatrixne::SpatialNodeprivate
ne::Node::Node(const std::string &sName)ne::Node
Node(const Node &)=delete (defined in ne::Node)ne::Node
Node(Node &&)=delete (defined in ne::Node)ne::Node
notifyAboutAttachedToNewParent(bool bThisNodeBeingAttached)ne::Nodeprivate
notifyAboutDetachingFromParent(bool bThisNodeBeingDetached)ne::Nodeprivate
onAfterAttachedToNewParent(bool bThisNodeBeingAttached) overridene::SpatialNodeprotectedvirtual
onAfterDeserialized() overridene::SpotlightNodeprotectedvirtual
onBeforeDetachedFromParent(bool bThisNodeBeingDetached)ne::Nodeinlineprotectedvirtual
onBeforeNewFrame(float timeSincePrevFrameInSec)ne::Nodeinlineprotectedvirtual
onChildNodesSpawned()ne::Nodeinlineprotectedvirtual
onDespawning() overridene::SpotlightNodeprotectedvirtual
onFinishedUpdatingShaderData()ne::SpotlightNodeprivate
onFinishedUpdatingShadowPassData()ne::SpotlightNodeprivate
onInputActionEvent(unsigned int iActionId, KeyboardModifiers modifiers, bool bIsPressedDown)ne::Nodeprivate
onInputAxisEvent(unsigned int iAxisEventId, KeyboardModifiers modifiers, float input)ne::Nodeprivate
onMouseMove(double xOffset, double yOffset)ne::Nodeinlineprotectedvirtual
onMouseScrollMove(int iOffset)ne::Nodeinlineprotectedvirtual
onShadowMapArrayIndexChanged(unsigned int iNewIndexIntoArray)ne::SpotlightNodeprivate
onSpawning() overridene::SpotlightNodeprotectedvirtual
onStartedUpdatingShaderData()ne::SpotlightNodeprivate
onStartedUpdatingShadowPassData()ne::SpotlightNodeprivate
onWorldLocationRotationScaleChanged() overridene::SpotlightNodeprotectedvirtual
operator=(const Node &)=delete (defined in ne::Node)ne::Node
operator=(Node &&)=delete (defined in ne::Node)ne::Node
outerConeAnglene::SpotlightNodeprivate
pathDeserializedFromRelativeToResne::Serializableprivate
pShadowMapHandlene::SpotlightNodeprivate
pWorldne::Nodeprivate
recalculateAndMarkShaderDataToBeCopiedToGpu()ne::SpotlightNodeprivate
recalculateLocalMatrix()ne::SpatialNodeprivate
recalculateShadowMappingShaderData()ne::SpotlightNodeprivate
recalculateShape()ne::SpotlightNodeprivate
recalculateWorldMatrix(bool bNotifyChildren=true)ne::SpatialNodeprivate
recalculateWorldMatrixForNodeAndNotifyChildren(Node *pNode)ne::SpatialNodeprivate
relativeLocationne::SpatialNodeprivate
relativeRotationne::SpatialNodeprivate
relativeScalene::SpatialNodeprivate
Renderer (defined in ne::SpotlightNode)ne::SpotlightNodefriend
resolvePathToToml(std::filesystem::path &pathToFile)ne::Serializableprivatestatic
sCustomAttributePrefixne::Serializableprivatestatic
Serializable()=default (defined in ne::Serializable)ne::Serializable
serialize(std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})ne::Serializable
serialize(toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serialize(toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)ne::Serializable
serializeMultiple(std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)ne::Serializablestatic
serializeNodeTree(const std::filesystem::path &pathToFile, bool bEnableBackup)ne::Node
setIsCalledEveryFrame(bool bEnable)ne::Nodeprotected
setIsReceivingInput(bool bEnable)ne::Nodeprotected
setLightColor(const glm::vec3 &color)ne::SpotlightNode
setLightDistance(float distance)ne::SpotlightNode
setLightInnerConeAngle(float innerConeAngle)ne::SpotlightNode
setLightIntensity(float intensity)ne::SpotlightNode
setLightOuterConeAngle(float outerConeAngle)ne::SpotlightNode
setNodeName(const std::string &sName)ne::Node
setRelativeLocation(const glm::vec3 &location)ne::SpatialNode
setRelativeRotation(const glm::vec3 &rotation)ne::SpatialNode
setRelativeScale(const glm::vec3 &scale)ne::SpatialNode
setSerialize(bool bSerialize)ne::Node
setTickGroup(TickGroup tickGroup)ne::Nodeprotected
setWorldLocation(const glm::vec3 &location)ne::SpatialNode
setWorldRotation(const glm::vec3 &rotation)ne::SpatialNode
setWorldScale(const glm::vec3 &scale)ne::SpatialNode
sExternalNodeTreePathAttributeNamene::Nodeinlineprivatestatic
sNodeNamene::Nodeprivate
sNothingToSerializeKeyne::Serializableinlineprivatestatic
sParentNodeIdAttributeNamene::Nodeinlineprivatestatic
sPathRelativeToResKeyne::Serializableinlineprivatestatic
SpatialNode() (defined in ne::SpatialNode)ne::SpatialNode
SpatialNode(const std::string &sNodeName)ne::SpatialNode
spawn()ne::Nodeprivate
SpotlightNode() (defined in ne::SpotlightNode)ne::SpotlightNode
SpotlightNode(const std::string &sNodeName)ne::SpotlightNode
sSubEntityFieldNameKeyne::Serializableinlineprivatestatic
tickGroupne::Nodeprivate
unlockChildren()ne::Nodeprivate
~Node() overridene::Nodevirtual
~Serializable() override=default (defined in ne::Serializable)ne::Serializablevirtual
~SpatialNode() override=default (defined in ne::SpatialNode)ne::SpatialNodevirtual
~SpotlightNode() override=default (defined in ne::SpotlightNode)ne::SpotlightNodevirtual
+
+ + + + diff --git a/classne_1_1SpotlightNode.html b/classne_1_1SpotlightNode.html new file mode 100644 index 000000000..768a94c38 --- /dev/null +++ b/classne_1_1SpotlightNode.html @@ -0,0 +1,1377 @@ + + + + + + + +Nameless Engine: ne::SpotlightNode Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <SpotlightNode.h>

+
+Inheritance diagram for ne::SpotlightNode:
+
+
+ + +ne::SpatialNode +ne::Node +ne::Serializable + +
+ + + + + + +

+Classes

struct  ShaderData
 
struct  SpotlightShaderData
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SpotlightNode (const std::string &sNodeName)
 
void setLightColor (const glm::vec3 &color)
 
void setLightIntensity (float intensity)
 
void setLightDistance (float distance)
 
void setLightInnerConeAngle (float innerConeAngle)
 
void setLightOuterConeAngle (float outerConeAngle)
 
glm::vec3 getLightColor () const
 
float getLightIntensity () const
 
float getLightDistance () const
 
float getLightInnerConeAngle () const
 
float getLightOuterConeAngle () const
 
std::pair< std::mutex, Cone > * getShape ()
 
- Public Member Functions inherited from ne::SpatialNode
 SpatialNode (const std::string &sNodeName)
 
void setRelativeLocation (const glm::vec3 &location)
 
void setRelativeRotation (const glm::vec3 &rotation)
 
void setRelativeScale (const glm::vec3 &scale)
 
void setWorldLocation (const glm::vec3 &location)
 
void setWorldRotation (const glm::vec3 &rotation)
 
void setWorldScale (const glm::vec3 &scale)
 
glm::vec3 getRelativeLocation () const
 
glm::vec3 getRelativeRotation () const
 
glm::vec3 getRelativeScale () const
 
glm::mat4x4 getRelativeRotationMatrix ()
 
glm::vec3 getWorldLocation ()
 
glm::vec3 getWorldRotation ()
 
glm::quat getWorldRotationQuaternion ()
 
glm::vec3 getWorldScale ()
 
glm::vec3 getWorldForwardDirection ()
 
glm::vec3 getWorldRightDirection ()
 
glm::vec3 getWorldUpDirection ()
 
glm::mat4x4 getWorldMatrix ()
 
std::pair< std::recursive_mutex, sgc::GcPtr< SpatialNode > > * getClosestSpatialParent ()
 
- Public Member Functions inherited from ne::Node
 Node ()
 
 Node (const std::string &sName)
 
Node (const Node &)=delete
 
+Nodeoperator= (const Node &)=delete
 
Node (Node &&)=delete
 
+Nodeoperator= (Node &&)=delete
 
virtual ~Node () override
 
void setNodeName (const std::string &sName)
 
void detachFromParentAndDespawn ()
 
void addChildNode (const sgc::GcPtr< Node > &pNode, AttachmentRule locationRule=AttachmentRule::KEEP_WORLD, AttachmentRule rotationRule=AttachmentRule::KEEP_WORLD, AttachmentRule scaleRule=AttachmentRule::KEEP_WORLD)
 
void setSerialize (bool bSerialize)
 
std::optional< ErrorserializeNodeTree (const std::filesystem::path &pathToFile, bool bEnableBackup)
 
std::string getNodeName () const
 
sgc::GcPtr< NodegetWorldRootNode ()
 
std::pair< std::recursive_mutex, sgc::GcPtr< Node > > * getParentNode ()
 
std::pair< std::recursive_mutex, sgc::GcVector< sgc::GcPtr< Node > > > * getChildNodes ()
 
template<typename NodeType >
+requires std::derived_from<NodeType, Node>
sgc::GcPtr< NodeType > getParentNodeOfType (const std::string &sParentNodeName="")
 
template<typename NodeType >
+requires std::derived_from<NodeType, Node>
sgc::GcPtr< NodeType > getChildNodeOfType (const std::string &sChildNodeName="")
 
TickGroup getTickGroup () const
 
std::optional< size_t > getNodeId () const
 
bool isCalledEveryFrame ()
 
bool isReceivingInput ()
 
bool isSpawned ()
 
bool isParentOf (Node *pNode)
 
bool isChildOf (Node *pNode)
 
bool isSerialized () const
 
- Public Member Functions inherited from ne::Serializable
std::optional< Errorserialize (std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})
 
std::variant< std::string, Errorserialize (toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::variant< std::string, Errorserialize (toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)
 
std::optional< std::pair< std::string, std::string > > getPathDeserializedFromRelativeToRes () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static constexpr float getMaxLightConeAngle ()
 
- Static Public Member Functions inherited from ne::Node
static size_t getAliveNodeCount ()
 
static std::variant< sgc::GcPtr< Node >, ErrordeserializeNodeTree (const std::filesystem::path &pathToFile)
 
static GameInstancegetGameInstance ()
 
- Static Public Member Functions inherited from ne::Serializable
static std::variant< std::pair< std::set< std::string >, toml::value >, ErrorgetIdsFromFile (std::filesystem::path pathToFile)
 
static std::optional< ErrorserializeMultiple (std::filesystem::path pathToFile, std::vector< SerializableObjectInformation > vObjects, bool bEnableBackup)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const std::filesystem::path &pathToFile, const std::string &sEntityId)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::same_as<SmartPointer, sgc::GcPtr<Serializable>> || std::same_as<SmartPointer, std::unique_ptr<Serializable>>
static std::variant< std::vector< DeserializedObjectInformation< SmartPointer > >, ErrordeserializeMultiple (std::filesystem::path pathToFile)
 
template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
+requires std::derived_from<InnerType, Serializable> && (std::same_as<SmartPointer, sgc::GcPtr<InnerType>> || std::same_as<SmartPointer, std::unique_ptr<InnerType>>)
static std::variant< SmartPointer, Errordeserialize (const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void onAfterDeserialized () override
 
virtual void onSpawning () override
 
virtual void onDespawning () override
 
virtual void onWorldLocationRotationScaleChanged () override
 
- Protected Member Functions inherited from ne::SpatialNode
virtual void onAfterDeserialized () override
 
virtual void onSpawning () override
 
virtual void onAfterAttachedToNewParent (bool bThisNodeBeingAttached) override
 
virtual void onWorldLocationRotationScaleChanged ()
 
- Protected Member Functions inherited from ne::Node
void setIsCalledEveryFrame (bool bEnable)
 
void setTickGroup (TickGroup tickGroup)
 
void setIsReceivingInput (bool bEnable)
 
TimercreateTimer (const std::string &sTimerName)
 
template<typename FunctionType >
NodeNotificationBroadcaster< FunctionType > * createNotificationBroadcaster ()
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, bool)> > > * getActionEventBindings ()
 
std::pair< std::recursive_mutex, std::unordered_map< unsigned int, std::function< void(KeyboardModifiers, float)> > > * getAxisEventBindings ()
 
std::recursive_mutex * getSpawnDespawnMutex ()
 
virtual void onMouseMove (double xOffset, double yOffset)
 
virtual void onMouseScrollMove (int iOffset)
 
virtual void onBeforeNewFrame (float timeSincePrevFrameInSec)
 
virtual void onSpawning ()
 
virtual void onChildNodesSpawned ()
 
virtual void onDespawning ()
 
virtual void onBeforeDetachedFromParent (bool bThisNodeBeingDetached)
 
virtual void onAfterAttachedToNewParent (bool bThisNodeBeingAttached)
 
virtual void onAfterDeserialized ()
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

ShadowMapHandlegetShadowMapHandle () const
 
unsigned int getIndexIntoShadowPassInfoShaderArray ()
 
void onShadowMapArrayIndexChanged (unsigned int iNewIndexIntoArray)
 
void * onStartedUpdatingShaderData ()
 
void onFinishedUpdatingShaderData ()
 
void * onStartedUpdatingShadowPassData ()
 
void onFinishedUpdatingShadowPassData ()
 
void recalculateShadowMappingShaderData ()
 
void recalculateAndMarkShaderDataToBeCopiedToGpu ()
 
void markShaderDataToBeCopiedToGpu ()
 
void recalculateShape ()
 
+ + + + + + + + + + + + + + + + + +

+Private Attributes

std::pair< std::recursive_mutex, ShaderDatamtxShaderData
 
std::pair< std::mutex, ConemtxShape
 
std::unique_ptr< ShadowMapHandlepShadowMapHandle
 
glm::vec3 color = glm::vec3(1.0F, 1.0F, 1.0F)
 
float intensity = 1.0F
 
float distance = 15.0F
 
float innerConeAngle = 25.0F
 
float outerConeAngle = 45.0F
 
+ + + +

+Static Private Attributes

static constexpr float maxConeAngle = 80.0F
 
+ + + +

+Friends

+class Renderer
 
+ + + + +

+Additional Inherited Members

- Public Types inherited from ne::Node
enum class  AttachmentRule { RESET_RELATIVE +, KEEP_RELATIVE +, KEEP_WORLD + }
 
+

Detailed Description

+

Represents a spotlight in world.

+

Constructor & Destructor Documentation

+ +

◆ SpotlightNode()

+ +
+
+ + + + + + + + +
ne::SpotlightNode::SpotlightNode (const std::string & sNodeName)
+
+

Creates a new node with the specified name.

+
Parameters
+ + +
sNodeNameName of this node.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getIndexIntoShadowPassInfoShaderArray()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int ne::SpotlightNode::getIndexIntoShadowPassInfoShaderArray ()
+
+private
+
+

Used by renderer and returns the current index (because it may change later) into the shader array that stores shadow pass info of spawned light sources.

+
Returns
Index into array.
+ +
+
+ +

◆ getLightColor()

+ +
+
+ + + + + + + +
glm::vec3 ne::SpotlightNode::getLightColor () const
+
+

Returns color of this light source.

+
Returns
Color in RGB format in range [0.0; 1.0].
+ +
+
+ +

◆ getLightDistance()

+ +
+
+ + + + + + + +
float ne::SpotlightNode::getLightDistance () const
+
+

Returns lit distance.

+
Returns
Distance.
+ +
+
+ +

◆ getLightInnerConeAngle()

+ +
+
+ + + + + + + +
float ne::SpotlightNode::getLightInnerConeAngle () const
+
+

Returns light cutoff angle of the inner cone (hard light edge).

+
Returns
Angle in degrees in range [0.0; getMaxLightConeAngle].
+ +
+
+ +

◆ getLightIntensity()

+ +
+
+ + + + + + + +
float ne::SpotlightNode::getLightIntensity () const
+
+

Returns intensity of this light source.

+
Returns
Intensity in range [0.0; 1.0].
+ +
+
+ +

◆ getLightOuterConeAngle()

+ +
+
+ + + + + + + +
float ne::SpotlightNode::getLightOuterConeAngle () const
+
+

Returns light cutoff angle of the outer cone (soft light edge).

+
Returns
Angle in degrees in range [getLightInnerConeAngle; getMaxLightConeAngle].
+ +
+
+ +

◆ getMaxLightConeAngle()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr float ne::SpotlightNode::getMaxLightConeAngle ()
+
+inlinestaticconstexpr
+
+

Returns the maximum angle for getLightInnerConeAngle and getLightOuterConeAngle.

+
Returns
Maximum cone angle (in degrees).
+ +
+
+ +

◆ getShadowMapHandle()

+ +
+
+ + + + + +
+ + + + + + + +
ShadowMapHandle * ne::SpotlightNode::getShadowMapHandle () const
+
+private
+
+

Used by renderer and returns handle to shadow map texture that this light source uses.

+
Remarks
Do not delete (free) returned pointer.
+
Returns
nullptr if node is not spawned, otherwise valid pointer.
+ +
+
+ +

◆ getShape()

+ +
+
+ + + + + + + +
std::pair< std::mutex, Cone > * ne::SpotlightNode::getShape ()
+
+

Returns shape of this light source in world space.

+
Warning
Only valid while spawned.
+
+Must be used under mutex.
+
+Do not delete (free) returned pointer.
+
Returns
Shape.
+ +
+
+ +

◆ markShaderDataToBeCopiedToGpu()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::SpotlightNode::markShaderDataToBeCopiedToGpu ()
+
+private
+
+

Marks array slot at mtxShaderData as "needs update" (if the slot is created) to later be copied to the GPU resource.

+
Remarks
Does nothing if the slot is nullptr.
+ +
+
+ +

◆ onAfterDeserialized()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::SpotlightNode::onAfterDeserialized ()
+
+overrideprotectedvirtual
+
+

Called after the object was successfully deserialized. Used to execute post-deserialization logic.

+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +

Reimplemented from ne::SpatialNode.

+ +
+
+ +

◆ onDespawning()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::SpotlightNode::onDespawning ()
+
+overrideprotectedvirtual
+
+

Called before this node is despawned from the world to execute custom despawn logic.

+
Remarks
This node will be marked as despawned after this function is called.
+
+This function is called after all child nodes were despawned.
+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +

Reimplemented from ne::Node.

+ +
+
+ +

◆ onFinishedUpdatingShaderData()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::SpotlightNode::onFinishedUpdatingShaderData ()
+
+private
+
+

Called after onStartedUpdatingShaderData to notify this node that the renderer has finished copying the data to the GPU resource.

+ +
+
+ +

◆ onFinishedUpdatingShadowPassData()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::SpotlightNode::onFinishedUpdatingShadowPassData ()
+
+private
+
+

Called after onStartedUpdatingShadowPassData to notify this node that the renderer has finished copying the data to the GPU resource.

+ +
+
+ +

◆ onShadowMapArrayIndexChanged()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::SpotlightNode::onShadowMapArrayIndexChanged (unsigned int iNewIndexIntoArray)
+
+private
+
+

Called after the index into a descriptor array of pShadowMapHandle was initialized/changed.

+
Parameters
+ + +
iNewIndexIntoArrayNew index to use.
+
+
+ +
+
+ +

◆ onSpawning()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::SpotlightNode::onSpawning ()
+
+overrideprotectedvirtual
+
+

Called when this node was not spawned previously and it was either attached to a parent node that is spawned or set as world's root node to execute custom spawn logic.

+
Remarks
This node will be marked as spawned before this function is called.
+
+This function is called before any of the child nodes are spawned. If you need to do some logic after child nodes are spawned use onChildNodesSpawned.
+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+ +

Reimplemented from ne::SpatialNode.

+ +
+
+ +

◆ onStartedUpdatingShaderData()

+ +
+
+ + + + + +
+ + + + + + + +
void * ne::SpotlightNode::onStartedUpdatingShaderData ()
+
+private
+
+

Callback that will be called by the renderer when it's ready to copy new (updated) mtxShaderData to the GPU resource.

+
Returns
Pointer to the shader data at mtxShaderData.
+ +
+
+ +

◆ onStartedUpdatingShadowPassData()

+ +
+
+ + + + + +
+ + + + + + + +
void * ne::SpotlightNode::onStartedUpdatingShadowPassData ()
+
+private
+
+

Callback that will be called by the renderer when it's ready to copy new (updated) viewProjectionMatrix of the light source to the GPU resource.

+
Returns
Pointer to the viewProjectionMatrix at mtxShaderData.
+ +
+
+ +

◆ onWorldLocationRotationScaleChanged()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::SpotlightNode::onWorldLocationRotationScaleChanged ()
+
+overrideprotectedvirtual
+
+

Called after node's world location/rotation/scale was changed.

+
Warning
If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic.
+
Remarks
If you change location/rotation/scale inside of this function, this function will not be called again (no recursion will occur).
+ +

Reimplemented from ne::SpatialNode.

+ +
+
+ +

◆ recalculateAndMarkShaderDataToBeCopiedToGpu()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::SpotlightNode::recalculateAndMarkShaderDataToBeCopiedToGpu ()
+
+private
+
+

Recalculates shader data according to the current spotlight data and calls markShaderDataToBeCopiedToGpu.

+
Remarks
Does nothing if the slot is nullptr.
+ +
+
+ +

◆ recalculateShadowMappingShaderData()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::SpotlightNode::recalculateShadowMappingShaderData ()
+
+private
+
+

(Re)calculates data used for shadow pass and shadow mapping mapping.

+
Remarks
Does not call markShaderDataToBeCopiedToGpu.
+ +
+
+ +

◆ recalculateShape()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::SpotlightNode::recalculateShape ()
+
+private
+
+

Recalculates mtxShaderData according to the current parameters (state).

+
Remarks
Takes information from mtxShaderData and expects that it's updated.
+ +
+
+ +

◆ setLightColor()

+ +
+
+ + + + + + + + +
void ne::SpotlightNode::setLightColor (const glm::vec3 & color)
+
+

Sets light's color.

+
Parameters
+ + +
colorColor in RGB format in range [0.0; 1.0].
+
+
+ +
+
+ +

◆ setLightDistance()

+ +
+
+ + + + + + + + +
void ne::SpotlightNode::setLightDistance (float distance)
+
+

Sets lit distance (i.e. attenuation distance).

+
Parameters
+ + +
distanceLit distance.
+
+
+ +
+
+ +

◆ setLightInnerConeAngle()

+ +
+
+ + + + + + + + +
void ne::SpotlightNode::setLightInnerConeAngle (float innerConeAngle)
+
+

Sets angle of spotlight's inner cone (cone that will have hard light edges), see setLightOuterConeAngle for configuring soft light edges.

+
Parameters
+ + +
innerConeAngleAngle in degrees in range [0.0; getMaxLightConeAngle] (will be clamped if outside of the range).
+
+
+ +
+
+ +

◆ setLightIntensity()

+ +
+
+ + + + + + + + +
void ne::SpotlightNode::setLightIntensity (float intensity)
+
+

Sets light's intensity.

+
Parameters
+ + +
intensityIntensity in range [0.0; 1.0] (will be clamped if outside of the range).
+
+
+ +
+
+ +

◆ setLightOuterConeAngle()

+ +
+
+ + + + + + + + +
void ne::SpotlightNode::setLightOuterConeAngle (float outerConeAngle)
+
+

Sets angle of spotlight's inner cone (cone that will have hard light edges), see setLightOuterConeAngle for configuring soft light edges.

+
Parameters
+ + +
outerConeAngleAngle in degrees in range [getLightInnerConeAngle; getMaxLightConeAngle] (will be clamped if outside of the range).
+
+
+ +
+
+

Member Data Documentation

+ +

◆ color

+ +
+
+ + + + + +
+ + + + +
glm::vec3 ne::SpotlightNode::color = glm::vec3(1.0F, 1.0F, 1.0F)
+
+private
+
+

Color of the light source.

+ +
+
+ +

◆ distance

+ +
+
+ + + + + +
+ + + + +
float ne::SpotlightNode::distance = 15.0F
+
+private
+
+

Lit distance.

+ +
+
+ +

◆ innerConeAngle

+ +
+
+ + + + + +
+ + + + +
float ne::SpotlightNode::innerConeAngle = 25.0F
+
+private
+
+

Light cutoff angle (in degrees) of the inner cone (hard light edge). Valid values range is [0.0F, maxConeAngle].

+ +
+
+ +

◆ intensity

+ +
+
+ + + + + +
+ + + + +
float ne::SpotlightNode::intensity = 1.0F
+
+private
+
+

Light intensity, valid values range is [0.0F; 1.0F].

+ +
+
+ +

◆ maxConeAngle

+ +
+
+ + + + + +
+ + + + +
constexpr float ne::SpotlightNode::maxConeAngle = 80.0F
+
+staticconstexprprivate
+
+

Maximum value for innerConeAngle and outerConeAngle.

+ +
+
+ +

◆ mtxShaderData

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, ShaderData> ne::SpotlightNode::mtxShaderData
+
+private
+
+

Only valid while spawned. Up to date data that will be copied to the GPU.

+ +
+
+ +

◆ mtxShape

+ +
+
+ + + + + +
+ + + + +
std::pair<std::mutex, Cone> ne::SpotlightNode::mtxShape
+
+private
+
+

Stores up-to-date cone shape (in world space) that represents the spotlight.

+
Remarks
Only valid while spawned.
+ +
+
+ +

◆ outerConeAngle

+ +
+
+ + + + + +
+ + + + +
float ne::SpotlightNode::outerConeAngle = 45.0F
+
+private
+
+

Light cutoff angle (in degrees) of the outer cone (soft light edge). Valid values range is [innerConeAngle, maxConeAngle].

+ +
+
+ +

◆ pShadowMapHandle

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<ShadowMapHandle> ne::SpotlightNode::pShadowMapHandle
+
+private
+
+

References shadow map of the light source.

+
Remarks
Only valid while spawned.
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/game/nodes/light/SpotlightNode.h
  • +
  • src/engine_lib/private/game/nodes/light/SpotlightNode.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1SpotlightNode.js b/classne_1_1SpotlightNode.js new file mode 100644 index 000000000..1a76e2142 --- /dev/null +++ b/classne_1_1SpotlightNode.js @@ -0,0 +1,42 @@ +var classne_1_1SpotlightNode = +[ + [ "ShaderData", "structne_1_1SpotlightNode_1_1ShaderData.html", "structne_1_1SpotlightNode_1_1ShaderData" ], + [ "SpotlightShaderData", "structne_1_1SpotlightNode_1_1SpotlightShaderData.html", "structne_1_1SpotlightNode_1_1SpotlightShaderData" ], + [ "SpotlightNode", "classne_1_1SpotlightNode.html#a199b559a25939ea3c00dab93e7123107", null ], + [ "getIndexIntoShadowPassInfoShaderArray", "classne_1_1SpotlightNode.html#ac6af2a343602cbf1dfb7fd0388783a89", null ], + [ "getLightColor", "classne_1_1SpotlightNode.html#a0f69cdb3b0e435a0b039096a3f55c040", null ], + [ "getLightDistance", "classne_1_1SpotlightNode.html#a60fb43aeb84bc3ef4402e2cd861fc37b", null ], + [ "getLightInnerConeAngle", "classne_1_1SpotlightNode.html#a473c13f9f02fd3d6ce2950e5af7640c2", null ], + [ "getLightIntensity", "classne_1_1SpotlightNode.html#a773c16b46fe96fc7627d9db634cb31cf", null ], + [ "getLightOuterConeAngle", "classne_1_1SpotlightNode.html#a38329dd8164b4750b874a4231175d74f", null ], + [ "getMaxLightConeAngle", "classne_1_1SpotlightNode.html#a9e950327863ee31e22bec1368056921a", null ], + [ "getShadowMapHandle", "classne_1_1SpotlightNode.html#a4d9ee93af57b605afc3bc87889519cb0", null ], + [ "getShape", "classne_1_1SpotlightNode.html#a0be3858c4c5ea09b4d04f060e6d40703", null ], + [ "markShaderDataToBeCopiedToGpu", "classne_1_1SpotlightNode.html#abd3bfa9de6cc0f55938e69a31371f82e", null ], + [ "onAfterDeserialized", "classne_1_1SpotlightNode.html#aa34d6c205b21d9b7beeaa2769c0ecb96", null ], + [ "onDespawning", "classne_1_1SpotlightNode.html#a8f09cc94a4a701d7f9771e0cddddeebe", null ], + [ "onFinishedUpdatingShaderData", "classne_1_1SpotlightNode.html#a840d32981f5133a1b60b78be61512869", null ], + [ "onFinishedUpdatingShadowPassData", "classne_1_1SpotlightNode.html#a4b442dcbfae7ca18ef8b2596a29c96d2", null ], + [ "onShadowMapArrayIndexChanged", "classne_1_1SpotlightNode.html#a801eab825445391194df24cbc406eaea", null ], + [ "onSpawning", "classne_1_1SpotlightNode.html#ab2281ef335d11edcd87971e8ed3d92c1", null ], + [ "onStartedUpdatingShaderData", "classne_1_1SpotlightNode.html#a4285419429a5fcc7780f0e09b455c447", null ], + [ "onStartedUpdatingShadowPassData", "classne_1_1SpotlightNode.html#a67a7965a252a4dc0c0930a7b55119449", null ], + [ "onWorldLocationRotationScaleChanged", "classne_1_1SpotlightNode.html#a9c37f11e3e4aae66a316dd7c5a2bc477", null ], + [ "recalculateAndMarkShaderDataToBeCopiedToGpu", "classne_1_1SpotlightNode.html#afd8dd380c787cf909b01afcbadd52783", null ], + [ "recalculateShadowMappingShaderData", "classne_1_1SpotlightNode.html#ac6aa271da830cd1c3bbf9176c65c67f8", null ], + [ "recalculateShape", "classne_1_1SpotlightNode.html#aacee3dce9ea926d06c4c1626543092f5", null ], + [ "setLightColor", "classne_1_1SpotlightNode.html#a7ca35e137d40e80b55e6e5a5a0975f4d", null ], + [ "setLightDistance", "classne_1_1SpotlightNode.html#a80dedcd160957e4a0d06c20de8c904d3", null ], + [ "setLightInnerConeAngle", "classne_1_1SpotlightNode.html#a72b25ed6e8dd9dc8c3fb6d18dc79cced", null ], + [ "setLightIntensity", "classne_1_1SpotlightNode.html#a773f1e3cbe5277c253b8cdcac5a48946", null ], + [ "setLightOuterConeAngle", "classne_1_1SpotlightNode.html#aa370282a587a18d263394791da885dbc", null ], + [ "color", "classne_1_1SpotlightNode.html#a3a5059d31824996972470a4a99cc6055", null ], + [ "distance", "classne_1_1SpotlightNode.html#af90a6f7718ca09f46447ecc3534624bb", null ], + [ "innerConeAngle", "classne_1_1SpotlightNode.html#a714b4f0b154fe65652c9a0f65593871c", null ], + [ "intensity", "classne_1_1SpotlightNode.html#ad2bc8175ae23247a18e47d79c384e2f7", null ], + [ "maxConeAngle", "classne_1_1SpotlightNode.html#a1a8692bd15e11e49ee528b08a52ef9ba", null ], + [ "mtxShaderData", "classne_1_1SpotlightNode.html#aabdc7730c31fd4de721d6a84d5e44de8", null ], + [ "mtxShape", "classne_1_1SpotlightNode.html#a6743c0d574660f74b48b160357823d93", null ], + [ "outerConeAngle", "classne_1_1SpotlightNode.html#a04553071ad23e7712f262d0d8a02a383", null ], + [ "pShadowMapHandle", "classne_1_1SpotlightNode.html#a90d629136e58c7ae03c301cfe4b02202", null ] +]; \ No newline at end of file diff --git a/classne_1_1SpotlightNode.png b/classne_1_1SpotlightNode.png new file mode 100644 index 0000000000000000000000000000000000000000..5a305621ab324edce52706ed3651d6cacd925994 GIT binary patch literal 1170 zcmeAS@N?(olHy`uVBq!ia0vp^c|iPwgBeI#?NXi&q@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB) zeyxXp=l|HTj;rIHuCP{mwor9=o42)rT0N&?OQArJSEk51Z%tL@fAjQOuJr8;z42+U zS+LjHuL(z=?~1NBP79Ac`zONu`PP)8{j-ivyD;hLp;_;Ze$>qm@{;v0S^a$9+}`rY z?R{J0HJ6qg+Wcl)`}=LHBKLm%voG&{v2^U#BcWydUSDhPUflllk9GR?)E!svud-Qt zChc{w*Voh!;ZNtX{C~524B9d52`#S~dJ1G41lKVe94cjS+rf8$<2s{Er{S?e0ac(!CaWm_TcCHwe$uPe zTb}RkK9~H%^{&y|oOf3jt$%%J&Z$`e`yWWnIj*y@`t!WIyBMQ0UT0pjyu5bvX{+pl z*>$GNINv_ZJylw^{P3yEVOw_PR{YgV_;1-Fz} z#^~pytzDfVmh1QZ?dI%NdG+tVozh93CY7sQ{IhnWk?KqH!nrDv53M|nlJ@8wlW1rB zz$tvd;@GQYnJe4&udf$PeI}-*>$&Su>zh}t z-*0?W++{fF%I8h*zFj_66>IA@sp{UzcLLUD{U*tMc$sFlJhi?o`|4EX-%C$TQL&Cu z_jKFgH>pQreYfGUM24C}ECziWcV$Ywl3qPKSGl&iG(K+TI_3?CfJb%qfr%2yGVFnq z+(3SQ^#0|cKgyoG#Y_Eu1?)~C!hKIl6&iXfPwKu zchZvY1(ZgI6Gx&<%ba4l*4IVnZg$u&-F-FaoTd4hiN8Z{sm9#OeXqT1>FU?{F>BwY z9BS3eX(I6<%&T-YZeC?x zefjmTSFc}b_SsI~wa!XzUG*kKb=%alo8RmT`nmGmmXKd(@09kRUsr3%xA6GvonaT_ zw6a&PyS2|~d+X`y?^}$D&;9I5U!Qi)a{n>^lH*$EET60Y(b&D&zR>b{P49o^Q + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::StringFieldSerializer Member List
+
+
+ +

This is the complete list of members for ne::StringFieldSerializer, including all inherited members.

+ + + + + + + + + + + +
cloneField(Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField) overridene::StringFieldSerializervirtual
deserializeField(const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes) overridene::StringFieldSerializervirtual
IFieldSerializer()=default (defined in ne::IFieldSerializer)ne::IFieldSerializer
isFieldTypeSupported(const rfk::Field *pField) overridene::StringFieldSerializervirtual
isFieldValueEqual(Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB) overridene::StringFieldSerializervirtual
serializeField(toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr) overridene::StringFieldSerializervirtual
sStringCanonicalTypeNamene::StringFieldSerializerinlineprivatestatic
StringFieldSerializer()=default (defined in ne::StringFieldSerializer)ne::StringFieldSerializer
~IFieldSerializer()=default (defined in ne::IFieldSerializer)ne::IFieldSerializervirtual
~StringFieldSerializer() override=default (defined in ne::StringFieldSerializer)ne::StringFieldSerializervirtual
+
+ + + + diff --git a/classne_1_1StringFieldSerializer.html b/classne_1_1StringFieldSerializer.html new file mode 100644 index 000000000..9c5c82302 --- /dev/null +++ b/classne_1_1StringFieldSerializer.html @@ -0,0 +1,505 @@ + + + + + + + +Nameless Engine: ne::StringFieldSerializer Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::StringFieldSerializer Class Reference
+
+
+ +

#include <StringFieldSerializer.h>

+
+Inheritance diagram for ne::StringFieldSerializer:
+
+
+ + +ne::IFieldSerializer + +
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual bool isFieldTypeSupported (const rfk::Field *pField) override
 
virtual std::optional< ErrorserializeField (toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr) override
 
virtual std::optional< ErrordeserializeField (const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes) override
 
virtual std::optional< ErrorcloneField (Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField) override
 
virtual bool isFieldValueEqual (Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB) override
 
virtual bool isFieldTypeSupported (const rfk::Field *pField)=0
 
virtual std::optional< ErrorserializeField (toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr)=0
 
virtual std::optional< ErrordeserializeField (const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes)=0
 
virtual std::optional< ErrorcloneField (Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField)=0
 
virtual bool isFieldValueEqual (Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB)=0
 
+ + + +

+Static Private Attributes

static const std::string sStringCanonicalTypeName = "std::basic_string<char>"
 
+

Detailed Description

+

Serializer for the std::string field type.

+

Member Function Documentation

+ +

◆ cloneField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::StringFieldSerializer::cloneField (SerializablepFromInstance,
const rfk::Field * pFromField,
SerializablepToInstance,
const rfk::Field * pToField 
)
+
+overridevirtual
+
+

Clones field's data from one object to another.

+
Parameters
+ + + + + +
pFromInstanceInstance to copy the field from.
pFromFieldField to copy.
pToInstanceInstance to copy to.
pToFieldField to copy to.
+
+
+
Returns
Error if something went wrong, empty otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ deserializeField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::StringFieldSerializer::deserializeField (const toml::value * pTomlDocument,
const toml::value * pTomlValue,
SerializablepFieldOwner,
const rfk::Field * pField,
const std::string & sOwnerSectionName,
const std::string & sEntityId,
std::unordered_map< std::string, std::string > & customAttributes 
)
+
+overridevirtual
+
+

Deserializes field from a TOML value.

+
Parameters
+ + + + + + + + +
pTomlDocumentTOML document that contains a value to deserialize.
pTomlValueTOML value to deserialize the field from.
pFieldOwnerField's owner.
pFieldField to deserialize TOML value to.
sOwnerSectionNameName of the TOML section where is field was found.
sEntityIdCurrent ID string of the entity (field owner) that we are deserializing.
customAttributesPairs of values that were found with this object in TOML data. Only found when deserializing a field of type that derives from Serializable.
+
+
+
Returns
Error if something went wrong, empty otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ isFieldTypeSupported()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ne::StringFieldSerializer::isFieldTypeSupported (const rfk::Field * pField)
+
+overridevirtual
+
+

Tests if this serializer supports serialization/deserialization of this field.

+
Parameters
+ + +
pFieldField to test for serialization/deserialization support.
+
+
+
Returns
true if this serializer can be used to serialize this field, false otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ isFieldValueEqual()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool ne::StringFieldSerializer::isFieldValueEqual (SerializablepFieldAOwner,
const rfk::Field * pFieldA,
SerializablepFieldBOwner,
const rfk::Field * pFieldB 
)
+
+overridevirtual
+
+

Checks if the specified fields' values are equal or not.

+
Parameters
+ + + + + +
pFieldAOwnerOwner of the field A.
pFieldAField A to compare.
pFieldBOwnerOwner of the field B.
pFieldBField B to compare.
+
+
+
Returns
false if some field is unsupported by this serializer or if fields' values are not equal, true otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ serializeField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::StringFieldSerializer::serializeField (toml::value * pTomlData,
SerializablepFieldOwner,
const rfk::Field * pField,
const std::string & sSectionName,
const std::string & sEntityId,
size_t & iSubEntityId,
SerializablepOriginalObject = nullptr 
)
+
+overridevirtual
+
+

Serializes field into a TOML value.

+
Parameters
+ + + + + + + + +
pTomlDataTOML value to serialize the field to.
pFieldOwnerField's owner.
pFieldField to serialize.
sSectionNameName of the section (for TOML value) to use for this field.
sEntityIdCurrent ID string of the entity (field owner) that we are serializing. Only used when serializing a field of type that derives from Serializable.
iSubEntityIdCurrent ID of the sub entity (sub entity of the field owner). Only used when serializing a field of type that derives from Serializable.
pOriginalObjectOptional. Original object of the same type as the object being serialized, this object is a deserialized version of the object being serialized, used to compare serializable fields' values and only serialize changed values. Only used when serializing a field of type that derives from Serializable.
+
+
+
Returns
Error if something went wrong, empty otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+

Member Data Documentation

+ +

◆ sStringCanonicalTypeName

+ +
+
+ + + + + +
+ + + + +
const std::string ne::StringFieldSerializer::sStringCanonicalTypeName = "std::basic_string<char>"
+
+inlinestaticprivate
+
+

Canonical type name for std::string fields.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/io/serializers/StringFieldSerializer.h
  • +
  • src/engine_lib/private/io/serializers/StringFieldSerializer.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1StringFieldSerializer.js b/classne_1_1StringFieldSerializer.js new file mode 100644 index 000000000..e6f017474 --- /dev/null +++ b/classne_1_1StringFieldSerializer.js @@ -0,0 +1,9 @@ +var classne_1_1StringFieldSerializer = +[ + [ "cloneField", "classne_1_1StringFieldSerializer.html#a173e92693293da7619d95975d9ab4a5a", null ], + [ "deserializeField", "classne_1_1StringFieldSerializer.html#a65ab73d3993240b01dfe68d079742e30", null ], + [ "isFieldTypeSupported", "classne_1_1StringFieldSerializer.html#a0f4ff779aac5f1e1d5f96bd178b091b5", null ], + [ "isFieldValueEqual", "classne_1_1StringFieldSerializer.html#a231538092259a22d71dd92ac46905691", null ], + [ "serializeField", "classne_1_1StringFieldSerializer.html#a48acbfca114bda02ae99cd170b4527d5", null ], + [ "sStringCanonicalTypeName", "classne_1_1StringFieldSerializer.html#aa8da35dc89ea30012f32209fe4e28700", null ] +]; \ No newline at end of file diff --git a/classne_1_1StringFieldSerializer.png b/classne_1_1StringFieldSerializer.png new file mode 100644 index 0000000000000000000000000000000000000000..62b3faffb7412ddddcb1b284c6b36a0100be05ed GIT binary patch literal 693 zcmV;m0!safP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0006& zNklyG3q41|k{)bjg3@#ezCCJ=Ye^d7NCo}mOCZ1^yC@)z5-ZHoyTNiL;e zB1vDtM3TNfVM=>D|IT51Sh{P9WNXH*pCrkVK4l_FqsDZOru)7N^uUz%Q=h#$x?;*< zsUyRieU695F2~tgkYuMRQ(mL3)-&0uj8=IkOBmPUK+?2%oQ${0rvX#hFOlqJnFg~Y zP4k#^-ga@S*{+wj+$#08owgv!PH)6%l210dRTxap4dbaTNV3zXclVG_nn|fo$zR`{ zEt==LtM8{;Rn4vxW?y$Cc~g8_NYYm@k)*F+B1vDtM3TOCrfu7{wFCg)(F*_;(}GN| z*LqM3GVMsqL9NIXbq4_ND3}1iS17@{3|mJo5NB^<{){+yg;)%TK>^2 zEK{~>_W5Dk=vt+%XPAs*-l;jyHqeiXgN~D#Z->;&-ny1>-C>5#_GatlcC&Y;TW0Em zjJje|v%RYd#jR3b+i8ngoQ65>G7WCAx0%GVFYCvPUP zU41{*s%mz{xv#rlzsLXD2jGWHeR+zAd`&-%)BU?4BJv&md*5IYk^f%7BqHK#QKpnq bT1$TbXl{7z&g=mT00000NkvXXu0mjfCNNHe literal 0 HcmV?d00001 diff --git a/classne_1_1TextureHandle-members.html b/classne_1_1TextureHandle-members.html new file mode 100644 index 000000000..aebf410de --- /dev/null +++ b/classne_1_1TextureHandle-members.html @@ -0,0 +1,123 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::TextureHandle Member List
+
+
+ +

This is the complete list of members for ne::TextureHandle, including all inherited members.

+ + + + + + + + + + + + + + +
getPathToResourceRelativeRes()ne::TextureHandle
getResource()ne::TextureHandle
operator=(const TextureHandle &)=delete (defined in ne::TextureHandle)ne::TextureHandle
operator=(TextureHandle &&)=delete (defined in ne::TextureHandle)ne::TextureHandle
pTexturene::TextureHandleprivate
pTextureManagerne::TextureHandleprivate
sPathToResourceRelativeResne::TextureHandleprivate
TextureHandle()=delete (defined in ne::TextureHandle)ne::TextureHandle
TextureHandle(const TextureHandle &)=delete (defined in ne::TextureHandle)ne::TextureHandle
TextureHandle(TextureHandle &&)=delete (defined in ne::TextureHandle)ne::TextureHandle
TextureHandle(TextureManager *pTextureManager, const std::string &sPathToResourceRelativeRes, GpuResource *pTexture)ne::TextureHandleprivate
TextureManager (defined in ne::TextureHandle)ne::TextureHandlefriend
~TextureHandle()ne::TextureHandle
+
+ + + + diff --git a/classne_1_1TextureHandle.html b/classne_1_1TextureHandle.html new file mode 100644 index 000000000..c06e57932 --- /dev/null +++ b/classne_1_1TextureHandle.html @@ -0,0 +1,344 @@ + + + + + + + +Nameless Engine: ne::TextureHandle Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <TextureHandle.h>

+ + + + + + + + + + + + + + + + +

+Public Member Functions

TextureHandle (const TextureHandle &)=delete
 
+TextureHandleoperator= (const TextureHandle &)=delete
 
TextureHandle (TextureHandle &&)=delete
 
+TextureHandleoperator= (TextureHandle &&)=delete
 
GpuResourcegetResource ()
 
std::string getPathToResourceRelativeRes ()
 
 ~TextureHandle ()
 
+ + + +

+Private Member Functions

 TextureHandle (TextureManager *pTextureManager, const std::string &sPathToResourceRelativeRes, GpuResource *pTexture)
 
+ + + + + + + +

+Private Attributes

const std::string sPathToResourceRelativeRes
 
TextureManager *const pTextureManager = nullptr
 
GpuResource *const pTexture = nullptr
 
+ + + +

+Friends

+class TextureManager
 
+

Detailed Description

+

RAII-style object that tells the manager to not release the texture from the memory while it's being used. A texture resource will be released from the memory when no texture handle that references the same resource path will exist.

+

Constructor & Destructor Documentation

+ +

◆ ~TextureHandle()

+ +
+
+ + + + + + + +
ne::TextureHandle::~TextureHandle ()
+
+

Notifies manager about handle no longer referencing the texture.

+ +
+
+ +

◆ TextureHandle()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ne::TextureHandle::TextureHandle (TextureManagerpTextureManager,
const std::string & sPathToResourceRelativeRes,
GpuResourcepTexture 
)
+
+private
+
+

Creates a new texture handle that references a specific texture resource.

+
Parameters
+ + + + +
pTextureManagerTexture manager that created this handle. It will be notified when the texture handle is being destroyed.
sPathToResourceRelativeResPath to the texture (file/directory) relative to res directory that this texture handle references.
pTextureTexture resource that this handle references.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getPathToResourceRelativeRes()

+ +
+
+ + + + + + + +
std::string ne::TextureHandle::getPathToResourceRelativeRes ()
+
+

Path to texture (file/directory) relative to res directory.

+
Returns
Path relative res directory.
+ +
+
+ +

◆ getResource()

+ +
+
+ + + + + + + +
GpuResource * ne::TextureHandle::getResource ()
+
+

Returns the underlying GPU resource.

+
Returns
GPU resource.
+ +
+
+

Member Data Documentation

+ +

◆ pTexture

+ +
+
+ + + + + +
+ + + + +
GpuResource* const ne::TextureHandle::pTexture = nullptr
+
+private
+
+

Do not delete (free) this pointer. Texture resource that this handle references.

+ +
+
+ +

◆ pTextureManager

+ +
+
+ + + + + +
+ + + + +
TextureManager* const ne::TextureHandle::pTextureManager = nullptr
+
+private
+
+

Do not delete (free) this pointer. Texture manager that created this object.

+ +
+
+ +

◆ sPathToResourceRelativeRes

+ +
+
+ + + + + +
+ + + + +
const std::string ne::TextureHandle::sPathToResourceRelativeRes
+
+private
+
+

Path to texture (file/directory) relative to res directory.

+
Remarks
Used in texture manager to determine which texture resource this handle references.
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/material/TextureHandle.h
  • +
  • src/engine_lib/private/material/TextureHandle.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1TextureHandle.js b/classne_1_1TextureHandle.js new file mode 100644 index 000000000..ac9a39aa6 --- /dev/null +++ b/classne_1_1TextureHandle.js @@ -0,0 +1,10 @@ +var classne_1_1TextureHandle = +[ + [ "~TextureHandle", "classne_1_1TextureHandle.html#a864df0ae321949f96c49db7877c19895", null ], + [ "TextureHandle", "classne_1_1TextureHandle.html#a3ed805f9d0b3a86834879d8bf50974e2", null ], + [ "getPathToResourceRelativeRes", "classne_1_1TextureHandle.html#ae45b667613cae49c44d6ea0e2b4f6fa6", null ], + [ "getResource", "classne_1_1TextureHandle.html#aad972f4110514144ae690eaeb3b3fd3f", null ], + [ "pTexture", "classne_1_1TextureHandle.html#aa60e20f76856958da21eda8e049545e4", null ], + [ "pTextureManager", "classne_1_1TextureHandle.html#a50113f86d879cd2f20053e8132b828a3", null ], + [ "sPathToResourceRelativeRes", "classne_1_1TextureHandle.html#a1b0358befaed9fabad049e9484aa99c8", null ] +]; \ No newline at end of file diff --git a/classne_1_1TextureImporter-members.html b/classne_1_1TextureImporter-members.html new file mode 100644 index 000000000..341a8e6ab --- /dev/null +++ b/classne_1_1TextureImporter-members.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::TextureImporter Member List
+
+
+ +

This is the complete list of members for ne::TextureImporter, including all inherited members.

+ + + + + +
getImportedFileName()ne::TextureImporterinlinestatic
importTexture(const std::filesystem::path &pathToTexture, TextureImportFormat textureImportFormat, const std::string &sPathToOutputDirRelativeRes, const std::string &sOutputDirectoryName)ne::TextureImporterstatic
pImportedFileNamene::TextureImporterprivatestatic
TextureImporter()=delete (defined in ne::TextureImporter)ne::TextureImporter
+
+ + + + diff --git a/classne_1_1TextureImporter.html b/classne_1_1TextureImporter.html new file mode 100644 index 000000000..763001990 --- /dev/null +++ b/classne_1_1TextureImporter.html @@ -0,0 +1,244 @@ + + + + + + + +Nameless Engine: ne::TextureImporter Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::TextureImporter Class Reference
+
+
+ +

#include <TextureImporter.h>

+ + + + + + +

+Static Public Member Functions

static constexpr const char * getImportedFileName ()
 
static std::optional< ErrorimportTexture (const std::filesystem::path &pathToTexture, TextureImportFormat textureImportFormat, const std::string &sPathToOutputDirRelativeRes, const std::string &sOutputDirectoryName)
 
+ + + +

+Static Private Attributes

static constexpr auto pImportedFileName = "t"
 
+

Detailed Description

+

Provides static functions for importing files in special formats (such as PNG) as textures into engine formats.

+

Member Function Documentation

+ +

◆ getImportedFileName()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr const char * ne::TextureImporter::getImportedFileName ()
+
+inlinestaticconstexpr
+
+

Returns file name that importer adds before extension to the imported texture file.

+
Returns
File name.
+ +
+
+ +

◆ importTexture()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::TextureImporter::importTexture (const std::filesystem::path & pathToTexture,
TextureImportFormat textureImportFormat,
const std::string & sPathToOutputDirRelativeRes,
const std::string & sOutputDirectoryName 
)
+
+static
+
+

Blocks the current thread, converts the specified texture into engine-supported formats and creates new textures in the specified directory relative to res directory.

+
Parameters
+ + + + + +
pathToTexturePath to the texture image to convert.
textureImportFormatFormat of the imported texture.
sPathToOutputDirRelativeResPath to a directory relative to the res directory that will store results, for example: game/player/textures (located at res/game/player/textures).
sOutputDirectoryNameName of the new directory that does not exists yet but will be created in the specified directory (relative to the res) to store the results (allowed characters A-z and numbers 0-9, maximum length is 10 characters), for example: diffuse.
+
+
+
Returns
Error if something went wrong.
+ +
+
+

Member Data Documentation

+ +

◆ pImportedFileName

+ +
+
+ + + + + +
+ + + + +
constexpr auto ne::TextureImporter::pImportedFileName = "t"
+
+staticconstexprprivate
+
+

File name that we add before extension to the imported texture file.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/io/TextureImporter.h
  • +
  • src/engine_lib/private/io/TextureImporter.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1TextureImporter.js b/classne_1_1TextureImporter.js new file mode 100644 index 000000000..b46d26610 --- /dev/null +++ b/classne_1_1TextureImporter.js @@ -0,0 +1,6 @@ +var classne_1_1TextureImporter = +[ + [ "getImportedFileName", "classne_1_1TextureImporter.html#a4bbfc788869a4a751aa0396765f25c50", null ], + [ "importTexture", "classne_1_1TextureImporter.html#a25aebfc1c8079c6e5013249a77df6b8c", null ], + [ "pImportedFileName", "classne_1_1TextureImporter.html#ad2200d8a86c7ddfe970afeebbe9d9c8c", null ] +]; \ No newline at end of file diff --git a/classne_1_1TextureManager-members.html b/classne_1_1TextureManager-members.html new file mode 100644 index 000000000..6cbcf78a5 --- /dev/null +++ b/classne_1_1TextureManager-members.html @@ -0,0 +1,125 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::TextureManager Member List
+
+
+ +

This is the complete list of members for ne::TextureManager, including all inherited members.

+ + + + + + + + + + + + + + + + +
createNewTextureHandle(const std::string &sPathToResourceRelativeRes)ne::TextureManagerprivate
determineTextureFormatExtension()ne::TextureManagerprivate
getTexture(const std::string &sPathToResourceRelativeRes)ne::TextureManager
getTextureInMemoryCount()ne::TextureManager
loadTextureAndCreateNewTextureHandle(const std::string &sPathToResourceRelativeRes)ne::TextureManagerprivate
mtxTextureResourcesne::TextureManagerprivate
operator=(const TextureManager &)=delete (defined in ne::TextureManager)ne::TextureManager
pResourceManagerne::TextureManagerprivate
releaseTextureResourceIfNotUsed(const std::string &sPathToResourceRelativeRes)ne::TextureManagerprivate
sTextureFormatExtensionne::TextureManagerprivate
TextureHandle (defined in ne::TextureManager)ne::TextureManagerfriend
TextureManager(const TextureManager &)=delete (defined in ne::TextureManager)ne::TextureManager
TextureManager()=delete (defined in ne::TextureManager)ne::TextureManager
TextureManager(GpuResourceManager *pResourceManager)ne::TextureManager
~TextureManager()ne::TextureManager
+
+ + + + diff --git a/classne_1_1TextureManager.html b/classne_1_1TextureManager.html new file mode 100644 index 000000000..b1f710469 --- /dev/null +++ b/classne_1_1TextureManager.html @@ -0,0 +1,461 @@ + + + + + + + +Nameless Engine: ne::TextureManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <TextureManager.h>

+ + + + +

+Classes

struct  TextureResource
 
+ + + + + + + + + + + + + +

+Public Member Functions

TextureManager (const TextureManager &)=delete
 
+TextureManageroperator= (const TextureManager &)=delete
 
 TextureManager (GpuResourceManager *pResourceManager)
 
 ~TextureManager ()
 
size_t getTextureInMemoryCount ()
 
std::variant< std::unique_ptr< TextureHandle >, ErrorgetTexture (const std::string &sPathToResourceRelativeRes)
 
+ + + + + + + + + +

+Private Member Functions

void releaseTextureResourceIfNotUsed (const std::string &sPathToResourceRelativeRes)
 
void determineTextureFormatExtension ()
 
std::unique_ptr< TextureHandlecreateNewTextureHandle (const std::string &sPathToResourceRelativeRes)
 
std::variant< std::unique_ptr< TextureHandle >, ErrorloadTextureAndCreateNewTextureHandle (const std::string &sPathToResourceRelativeRes)
 
+ + + + + + + +

+Private Attributes

std::pair< std::recursive_mutex, std::unordered_map< std::string, TextureResource > > mtxTextureResources
 
std::string sTextureFormatExtension
 
GpuResourceManager *const pResourceManager = nullptr
 
+ + + +

+Friends

+class TextureHandle
 
+

Detailed Description

+

Controls texture loading and owns all textures.

+

Constructor & Destructor Documentation

+ +

◆ TextureManager()

+ +
+
+ + + + + + + + +
ne::TextureManager::TextureManager (GpuResourceManagerpResourceManager)
+
+

Creates a new texture manager.

+
Parameters
+ + +
pResourceManagerResource manager that owns this object.
+
+
+ +
+
+ +

◆ ~TextureManager()

+ +
+
+ + + + + + + +
ne::TextureManager::~TextureManager ()
+
+

Makes sure that no resource is loaded in the memory.

+ +
+
+

Member Function Documentation

+ +

◆ createNewTextureHandle()

+ +
+
+ + + + + +
+ + + + + + + + +
std::unique_ptr< TextureHandle > ne::TextureManager::createNewTextureHandle (const std::string & sPathToResourceRelativeRes)
+
+private
+
+

Creates a new texture handle for the specified path by using mtxTextureResources.

+
Remarks
Increment handle counter.
+
Parameters
+ + +
sPathToResourceRelativeResPath to texture (file/directory) relative to res directory.
+
+
+
Returns
New texture handle.
+ +
+
+ +

◆ determineTextureFormatExtension()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::TextureManager::determineTextureFormatExtension ()
+
+private
+
+

Initializes sTextureFormatExtension depending on the current renderer.

+ +
+
+ +

◆ getTexture()

+ +
+
+ + + + + + + + +
std::variant< std::unique_ptr< TextureHandle >, Error > ne::TextureManager::getTexture (const std::string & sPathToResourceRelativeRes)
+
+

Looks if the specified texture is loaded in the GPU memory or not and if not loads it in the GPU memory and returns a new handle that references this texture (if the texture is already loaded just returns a new handle).

+
Parameters
+ + +
sPathToResourceRelativeResPath to texture (file/directory) relative to res directory.
+
+
+
Returns
Error if something went wrong, otherwise RAII-style object that tells the manager to not release the texture from the memory while it's being used. A texture resource will be released from the memory when no texture handle that references this path will exist. Returning std::unique_ptr so that the handle can be "moved" and "reset" and we don't need to care about implementing this functionality for the handle class.
+ +
+
+ +

◆ getTextureInMemoryCount()

+ +
+
+ + + + + + + +
size_t ne::TextureManager::getTextureInMemoryCount ()
+
+

Returns the current number of textures loaded in the memory.

+
Returns
Textures in memory.
+ +
+
+ +

◆ loadTextureAndCreateNewTextureHandle()

+ +
+
+ + + + + +
+ + + + + + + + +
std::variant< std::unique_ptr< TextureHandle >, Error > ne::TextureManager::loadTextureAndCreateNewTextureHandle (const std::string & sPathToResourceRelativeRes)
+
+private
+
+

Loads the texture from the specified path and creates a new handle using createNewTextureHandle.

+
Parameters
+ + +
sPathToResourceRelativeResPath to texture (file/directory) relative to res directory.
+
+
+
Returns
Error if something went wrong, otherwise created texture handle.
+ +
+
+ +

◆ releaseTextureResourceIfNotUsed()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::TextureManager::releaseTextureResourceIfNotUsed (const std::string & sPathToResourceRelativeRes)
+
+private
+
+

Called by texture handles in their destructor to notify the manager about a texture handle no longer referencing a texture resource so that the manager can release the texture resource if no other texture handle is referencing it.

+
Parameters
+ + +
sPathToResourceRelativeResPath to texture (file/directory) relative to res directory.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ mtxTextureResources

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, std::unordered_map<std::string, TextureResource> > ne::TextureManager::mtxTextureResources
+
+private
+
+

Stores pairs of "path to texture (file/directory) relative to `res` directory" - "loaded +texture resource".

+ +
+
+ +

◆ pResourceManager

+ +
+
+ + + + + +
+ + + + +
GpuResourceManager* const ne::TextureManager::pResourceManager = nullptr
+
+private
+
+

Do not delete (free) this pointer. Resource manager that owns this object.

+ +
+
+ +

◆ sTextureFormatExtension

+ +
+
+ + + + + +
+ + + + +
std::string ne::TextureManager::sTextureFormatExtension
+
+private
+
+

Either ".dds" or ".ktx" depending on the current renderer.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/material/TextureManager.h
  • +
  • src/engine_lib/private/material/TextureManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1TextureManager.js b/classne_1_1TextureManager.js new file mode 100644 index 000000000..55f7c41e9 --- /dev/null +++ b/classne_1_1TextureManager.js @@ -0,0 +1,15 @@ +var classne_1_1TextureManager = +[ + [ "TextureResource", "structne_1_1TextureManager_1_1TextureResource.html", "structne_1_1TextureManager_1_1TextureResource" ], + [ "TextureManager", "classne_1_1TextureManager.html#a9ad02e8d158593504b08ce1eae1a7ca0", null ], + [ "~TextureManager", "classne_1_1TextureManager.html#aa39de6ae0a73574699777743fb7dbe5b", null ], + [ "createNewTextureHandle", "classne_1_1TextureManager.html#ab4cf5f60eb0e62615b50b183aade6061", null ], + [ "determineTextureFormatExtension", "classne_1_1TextureManager.html#abd42d25226801617a66a276d8679acd9", null ], + [ "getTexture", "classne_1_1TextureManager.html#aaffb98fbd3dfca5272382db486828830", null ], + [ "getTextureInMemoryCount", "classne_1_1TextureManager.html#a7513750d0f4e2343d2cd9d392f0380d1", null ], + [ "loadTextureAndCreateNewTextureHandle", "classne_1_1TextureManager.html#a7042b3ef960770a80fda068024123295", null ], + [ "releaseTextureResourceIfNotUsed", "classne_1_1TextureManager.html#ac77052739df05199bc528a0856c06dc5", null ], + [ "mtxTextureResources", "classne_1_1TextureManager.html#a2c1c3469db309be020ef8114de540b90", null ], + [ "pResourceManager", "classne_1_1TextureManager.html#aa716b5a73c47de0039cf5ef9e0480cbd", null ], + [ "sTextureFormatExtension", "classne_1_1TextureManager.html#aaef42d1ed7ad4cce4c506518887e0420", null ] +]; \ No newline at end of file diff --git a/classne_1_1ThreadPool-members.html b/classne_1_1ThreadPool-members.html new file mode 100644 index 000000000..8bd50218f --- /dev/null +++ b/classne_1_1ThreadPool-members.html @@ -0,0 +1,122 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::ThreadPool Member List
+
+
+ +

This is the complete list of members for ne::ThreadPool, including all inherited members.

+ + + + + + + + + + + + + +
addTask(const std::function< void()> &task)ne::ThreadPool
bIsShuttingDownne::ThreadPoolprivate
cvNewTasksne::ThreadPoolprivate
iMinThreadCountne::ThreadPoolprivate
mtxTaskQueuene::ThreadPoolprivate
operator=(const ThreadPool &)=delete (defined in ne::ThreadPool)ne::ThreadPool
processTasksThread()ne::ThreadPoolprotected
stop()ne::ThreadPool
ThreadPool()ne::ThreadPool
ThreadPool(const ThreadPool &)=delete (defined in ne::ThreadPool)ne::ThreadPool
vRunningThreadsne::ThreadPoolprivate
~ThreadPool()ne::ThreadPool
+
+ + + + diff --git a/classne_1_1ThreadPool.html b/classne_1_1ThreadPool.html new file mode 100644 index 000000000..a322450b7 --- /dev/null +++ b/classne_1_1ThreadPool.html @@ -0,0 +1,380 @@ + + + + + + + +Nameless Engine: ne::ThreadPool Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <ThreadPool.h>

+ + + + + + + + + + + + + + +

+Public Member Functions

 ThreadPool ()
 
ThreadPool (const ThreadPool &)=delete
 
+ThreadPooloperator= (const ThreadPool &)=delete
 
 ~ThreadPool ()
 
void addTask (const std::function< void()> &task)
 
void stop ()
 
+ + + +

+Protected Member Functions

void processTasksThread ()
 
+ + + + + + + + + + + +

+Private Attributes

std::condition_variable cvNewTasks
 
std::vector< std::thread > vRunningThreads
 
std::pair< std::mutex, std::queue< std::function< void()> > > mtxTaskQueue
 
std::atomic_flag bIsShuttingDown
 
const unsigned int iMinThreadCount = 4
 
+

Detailed Description

+

A very simple thread pool.

+

Constructor & Destructor Documentation

+ +

◆ ThreadPool()

+ +
+
+ + + + + + + +
ne::ThreadPool::ThreadPool ()
+
+

Creates threads to execute tasks.

+ +
+
+ +

◆ ~ThreadPool()

+ +
+
+ + + + + + + +
ne::ThreadPool::~ThreadPool ()
+
+

Waits for all threads to stop.

+ +
+
+

Member Function Documentation

+ +

◆ addTask()

+ +
+
+ + + + + + + + +
void ne::ThreadPool::addTask (const std::function< void()> & task)
+
+

Adds a new task to be executed in the thread pool.

+
Parameters
+ + +
taskA task to add.
+
+
+ +
+
+ +

◆ processTasksThread()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::ThreadPool::processTasksThread ()
+
+protected
+
+

Function that each thread is executing. Waits for new tasks and processes one.

+ +
+
+ +

◆ stop()

+ +
+
+ + + + + + + +
void ne::ThreadPool::stop ()
+
+

Stop all working threads. Can be called explicitly. If not called explicitly will be called in destructor.

+ +
+
+

Member Data Documentation

+ +

◆ bIsShuttingDown

+ +
+
+ + + + + +
+ + + + +
std::atomic_flag ne::ThreadPool::bIsShuttingDown
+
+private
+
+

Atomic flag to set when destructor is called so that running threads are notified to finish.

+ +
+
+ +

◆ cvNewTasks

+ +
+
+ + + + + +
+ + + + +
std::condition_variable ne::ThreadPool::cvNewTasks
+
+private
+
+

Condition variable to wait until new tasks are added.

+ +
+
+ +

◆ iMinThreadCount

+ +
+
+ + + + + +
+ + + + +
const unsigned int ne::ThreadPool::iMinThreadCount = 4
+
+private
+
+

Minimum amount of threads to create when hardware concurrency information is not available.

+ +
+
+ +

◆ mtxTaskQueue

+ +
+
+ + + + + +
+ + + + +
std::pair<std::mutex, std::queue<std::function<void()> > > ne::ThreadPool::mtxTaskQueue
+
+private
+
+

Mutex for read/write operations on task queue. Task queue that contains all tasks to be executed in the thread pool.

+ +
+
+ +

◆ vRunningThreads

+ +
+
+ + + + + +
+ + + + +
std::vector<std::thread> ne::ThreadPool::vRunningThreads
+
+private
+
+

Array of running threads.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/misc/ThreadPool.h
  • +
  • src/engine_lib/private/misc/ThreadPool.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1ThreadPool.js b/classne_1_1ThreadPool.js new file mode 100644 index 000000000..24a4de835 --- /dev/null +++ b/classne_1_1ThreadPool.js @@ -0,0 +1,13 @@ +var classne_1_1ThreadPool = +[ + [ "ThreadPool", "classne_1_1ThreadPool.html#a56117439a6897fab5e8ae84c3c754e69", null ], + [ "~ThreadPool", "classne_1_1ThreadPool.html#aa8d941103615e754d86c63e0f6414998", null ], + [ "addTask", "classne_1_1ThreadPool.html#af15d7bc0f05008ffc8c63e4cda46a557", null ], + [ "processTasksThread", "classne_1_1ThreadPool.html#ac2742a67849bfeb63ddbc87b82f0ba90", null ], + [ "stop", "classne_1_1ThreadPool.html#a9e37ae656bbc187039137e24e92dd90c", null ], + [ "bIsShuttingDown", "classne_1_1ThreadPool.html#a8718ef111637ad96d53ace9c5bde21d7", null ], + [ "cvNewTasks", "classne_1_1ThreadPool.html#aa488f3ca175539fed87cb144cbabb779", null ], + [ "iMinThreadCount", "classne_1_1ThreadPool.html#ad61886cc465f83e718bfde4179f7bff7", null ], + [ "mtxTaskQueue", "classne_1_1ThreadPool.html#a258d22803923f0dcf4086fdb58a387e2", null ], + [ "vRunningThreads", "classne_1_1ThreadPool.html#a295493e8f889ec5bd6c39b5d65dfe200", null ] +]; \ No newline at end of file diff --git a/classne_1_1Timer-members.html b/classne_1_1Timer-members.html new file mode 100644 index 000000000..793b35e31 --- /dev/null +++ b/classne_1_1Timer-members.html @@ -0,0 +1,144 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::Timer Member List
+
+
+ +

This is the complete list of members for ne::Timer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bIsEnabledne::Timerprivate
bIsLoopingne::Timerprivate
bIsRunningne::Timerprivate
bIsShuttingDownne::Timerprivate
bIsStopRequestedne::Timerprivate
callbackForTimeoutne::Timerprivate
callbackValidatorne::Timerprivate
cvTerminateTimerThreadne::Timerprivate
elapsedTimeWhenStoppedne::Timerprivate
GameInstance (defined in ne::Timer)ne::Timerfriend
getElapsedTimeInMs()ne::Timer
getName() constne::Timer
getStartCount()ne::Timer
isEnabled()ne::Timer
isRunning()ne::Timer
isStopped()ne::Timer
iStartCountne::Timerprivate
iTimeToWaitInMsne::Timerprivate
mtxTerminateTimerThreadne::Timerprivate
mtxTimeWhenStartedne::Timerprivate
Node (defined in ne::Timer)ne::Timerfriend
operator=(const Timer &)=delete (defined in ne::Timer)ne::Timer
setCallbackForTimeout(long long iTimeToWaitInMs, const std::function< void()> &callback, bool bIsLooping=false)ne::Timer
setCallbackValidator(const std::function< bool(size_t)> &validator)ne::Timerprotected
setEnable(bool bEnable)ne::Timerprotected
start()ne::Timer
sTimerNamene::Timerprivate
stop(bool bDisableTimer=false)ne::Timer
Timer()=delete (defined in ne::Timer)ne::Timer
Timer(const Timer &)=delete (defined in ne::Timer)ne::Timer
Timer(const std::string &sTimerName)ne::Timerprotected
timerThread(std::chrono::milliseconds timeToWaitInMs)ne::Timerprivate
timerThreadFuturene::Timerprivate
~Timer() (defined in ne::Timer)ne::Timer
+
+ + + + diff --git a/classne_1_1Timer.html b/classne_1_1Timer.html new file mode 100644 index 000000000..98ed8c868 --- /dev/null +++ b/classne_1_1Timer.html @@ -0,0 +1,928 @@ + + + + + + + +Nameless Engine: ne::Timer Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <Timer.h>

+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Timer (const Timer &)=delete
 
+Timeroperator= (const Timer &)=delete
 
void setCallbackForTimeout (long long iTimeToWaitInMs, const std::function< void()> &callback, bool bIsLooping=false)
 
void start ()
 
void stop (bool bDisableTimer=false)
 
std::optional< long long > getElapsedTimeInMs ()
 
std::string getName () const
 
size_t getStartCount ()
 
bool isRunning ()
 
bool isStopped ()
 
bool isEnabled ()
 
+ + + + + + + +

+Protected Member Functions

 Timer (const std::string &sTimerName)
 
void setCallbackValidator (const std::function< bool(size_t)> &validator)
 
void setEnable (bool bEnable)
 
+ + + +

+Private Member Functions

void timerThread (std::chrono::milliseconds timeToWaitInMs)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::optional< std::future< void > > timerThreadFuture
 
std::optional< std::function< void()> > callbackForTimeout
 
std::optional< std::function< bool(size_t)> > callbackValidator
 
std::string sTimerName
 
std::pair< std::mutex, std::optional< std::chrono::steady_clock::time_point > > mtxTimeWhenStarted
 
size_t iStartCount = 0
 
std::mutex mtxTerminateTimerThread
 
std::condition_variable cvTerminateTimerThread
 
std::atomic_flag bIsShuttingDown {}
 
std::atomic_flag bIsStopRequested {}
 
std::optional< long long > elapsedTimeWhenStopped
 
long long iTimeToWaitInMs = 0
 
bool bIsRunning = false
 
bool bIsEnabled = true
 
bool bIsLooping = false
 
+ + + + + +

+Friends

+class Node
 
+class GameInstance
 
+

Detailed Description

+

Simple timer that can trigger a callback function on a timeout.

+

Constructor & Destructor Documentation

+ +

◆ Timer()

+ +
+
+ + + + + +
+ + + + + + + + +
ne::Timer::Timer (const std::string & sTimerName)
+
+protected
+
+

Constructor.

+
Parameters
+ + +
sTimerNameName of this timer (used for logging). Don't add "timer" word to your timer's name as it will be appended in the logs.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getElapsedTimeInMs()

+ +
+
+ + + + + + + +
std::optional< long long > ne::Timer::getElapsedTimeInMs ()
+
+

Returns the time that has passed since the timer was started (see start).

+
Returns
Empty if the start was never called before, otherwise time in milliseconds since the timer was started.
+
Remarks
For looping timers (see start) returns time since the beginning of the current loop iteration. Each new loop will reset elapsed time to 0.
+
+Note that if you call this function right after the call to start with a callback function set (see setCallbackForTimeout) this function may return empty because the timer thread is not started yet.
+ +
+
+ +

◆ getName()

+ +
+
+ + + + + + + +
std::string ne::Timer::getName () const
+
+

Returns timer's name (only used for logging purposes).

+
Returns
Timer's name.
+ +
+
+ +

◆ getStartCount()

+ +
+
+ + + + + + + +
size_t ne::Timer::getStartCount ()
+
+

Returns the amount of times start was called.

+
Returns
start call count.
+ +
+
+ +

◆ isEnabled()

+ +
+
+ + + + + + + +
bool ne::Timer::isEnabled ()
+
+

Whether this timer can use start function or not.

+
Returns
true if start can be called, false otherwise.
+ +
+
+ +

◆ isRunning()

+ +
+
+ + + + + + + +
bool ne::Timer::isRunning ()
+
+

Whether this timer is running (started) or not (finished/not started).

+
Returns
true if currently running, false otherwise.
+ +
+
+ +

◆ isStopped()

+ +
+
+ + + + + + + +
bool ne::Timer::isStopped ()
+
+

Whether this timer was running (started) and was stopped using stop.

+
Returns
true if the timer was stopped using stop and is not running right now, false otherwise.
+ +
+
+ +

◆ setCallbackForTimeout()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::Timer::setCallbackForTimeout (long long iTimeToWaitInMs,
const std::function< void()> & callback,
bool bIsLooping = false 
)
+
+

Sets a function to be executed when the waiting time is over (timeout event).

+

Example:

class GrenadeNode : public MeshNode
+
{
+
public:
+
// ...
+
+
void throw(){
+
pExplodeTimer->setCallbackForTimeout(3000, [this]() { explode(); });
+
pExplodeTimer->start();
+
}
+
private:
+
void explode(){
+
// ...
+
}
+
+
Timer* pExplodeTimer = nullptr;
+
}
+
Definition: MeshNode.h:28
+
Remarks
If the timer is currently running (see isRunning) this call will be ignored and an error will be logged.
+
+Upon a timeout the timer will submit a deferred task with your callback function to the main thread because deferred tasks are executed each frame you might expect a slight delay after the timeout event and before your callback is actually started, the delay should be generally smaller that ~30 ms so it should not make a big difference to you, but note that you probably want to avoid using callback timers for benchmarking or other high precision timing events due to this delay.
+
Parameters
+ + + + +
iTimeToWaitInMsTime this timer should wait (in milliseconds) until the callback is called.
callbackFunction to execute on timeout.
bIsLoopingWhether the timer should start again after a timeout or not. If specified true, after the waiting time is over (timeout) the timer will automatically restart itself and will start the waiting time again.
+
+
+ +
+
+ +

◆ setCallbackValidator()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::Timer::setCallbackValidator (const std::function< bool(size_t)> & validator)
+
+protected
+
+

Sets a function to be called from a deferred task before the actual callback to test if the actual callback should be started or not.

+

Example of typical callback validator:

pTimer->setCallbackValidator([pTimer](size_t iStartCount) -> bool {
+
// Timer does not have a validator by default because it does not know whether
+
// the timer object will still be alive or not at the moment when the validator is started
+
// so it's up to the owner to guarantee that.
+
+
if (iStartCount != pTimer->getStartCount()) {
+
// The timer was stopped and started (probably with some other callback).
+
return false; // don't run the actual callback
+
}
+
+
return !pTimer->isStopped(); // only run the actual callback if the timer was not stopped
+
}
+
size_t iStartCount
Definition: Timer.h:222
+
Remarks
If the timer is currently running (see isRunning) this call will be ignored and an error will be logged.
+
Parameters
+ + +
validatorValidator function. The only parameter is getStartCount at the moment of timeout event. Returns true if the actual callback needs to be started and false if the actual callback should not be started.
+
+
+ +
+
+ +

◆ setEnable()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::Timer::setEnable (bool bEnable)
+
+protected
+
+

Determines whether start will work or not.

+
Parameters
+ + +
bEnabletrue to allow using start, false otherwise.
+
+
+ +
+
+ +

◆ start()

+ +
+
+ + + + + + + +
void ne::Timer::start ()
+
+

Starts the timer.

+
Remarks
If you want to add a callback function to be executed on timeout see setCallbackForTimeout.
+
+If the timer is currently running it will be stopped (see stop).
+ +
+
+ +

◆ stop()

+ +
+
+ + + + + + + + +
void ne::Timer::stop (bool bDisableTimer = false)
+
+

Stops the timer and timer looping (if was specified in start).

+
Remarks
If a callback function was previously specified (see setCallbackForTimeout), the timer was running and the callback function was started it will continue running without stopping. If the timer was running and the callback function was not started yet it will be never started.
+
Parameters
+ + +
bDisableTimerSpecify true to make future start calls to be ignored, false to allow restarting the timer.
+
+
+ +
+
+ +

◆ timerThread()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::Timer::timerThread (std::chrono::milliseconds timeToWaitInMs)
+
+private
+
+

Timer thread that waits until a timeout or a shutdown.

+
Parameters
+ + +
timeToWaitInMsTime this thread should wait.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ bIsEnabled

+ +
+
+ + + + + +
+ + + + +
bool ne::Timer::bIsEnabled = true
+
+private
+
+

true if start calls should be allowed (able to restart the timer) or false to ignore calls to start function (won't be able to start the timer).

+ +
+
+ +

◆ bIsLooping

+ +
+
+ + + + + +
+ + + + +
bool ne::Timer::bIsLooping = false
+
+private
+
+

Whether the timer should restart itself upon a timeout or not.

+ +
+
+ +

◆ bIsRunning

+ +
+
+ + + + + +
+ + + + +
bool ne::Timer::bIsRunning = false
+
+private
+
+

Whether the timer is currently running or not.

+ +
+
+ +

◆ bIsShuttingDown

+ +
+
+ + + + + +
+ + + + +
std::atomic_flag ne::Timer::bIsShuttingDown {}
+
+private
+
+

Whether the destructor was called or not.

+ +
+
+ +

◆ bIsStopRequested

+ +
+
+ + + + + +
+ + + + +
std::atomic_flag ne::Timer::bIsStopRequested {}
+
+private
+
+

Whether the timer was explicitly stopped or not.

+ +
+
+ +

◆ callbackForTimeout

+ +
+
+ + + + + +
+ + + + +
std::optional<std::function<void()> > ne::Timer::callbackForTimeout
+
+private
+
+

Function to call on timeout.

+ +
+
+ +

◆ callbackValidator

+ +
+
+ + + + + +
+ + + + +
std::optional<std::function<bool(size_t)> > ne::Timer::callbackValidator
+
+private
+
+

Function to call from a deferred task before callbackForTimeout to test if the callback should be started or not.

+ +
+
+ +

◆ cvTerminateTimerThread

+ +
+
+ + + + + +
+ + + + +
std::condition_variable ne::Timer::cvTerminateTimerThread
+
+private
+
+

Condition variable for timer thread termination.

+ +
+
+ +

◆ elapsedTimeWhenStopped

+ +
+
+ + + + + +
+ + + + +
std::optional<long long> ne::Timer::elapsedTimeWhenStopped
+
+private
+
+

getElapsedTimeInMs when stop was called.

+ +
+
+ +

◆ iStartCount

+ +
+
+ + + + + +
+ + + + +
size_t ne::Timer::iStartCount = 0
+
+private
+
+

The number of times start was called.

+ +
+
+ +

◆ iTimeToWaitInMs

+ +
+
+ + + + + +
+ + + + +
long long ne::Timer::iTimeToWaitInMs = 0
+
+private
+
+

Time to wait until the callback is called.

+ +
+
+ +

◆ mtxTerminateTimerThread

+ +
+
+ + + + + +
+ + + + +
std::mutex ne::Timer::mtxTerminateTimerThread
+
+private
+
+

Mutex for read/write operations on data that the timer thread is using.

+ +
+
+ +

◆ mtxTimeWhenStarted

+ +
+
+ + + + + +
+ + + + +
std::pair<std::mutex, std::optional<std::chrono::steady_clock::time_point> > ne::Timer::mtxTimeWhenStarted
+
+private
+
+

Time when the start was called. Not empty if start was called.

+ +
+
+ +

◆ sTimerName

+ +
+
+ + + + + +
+ + + + +
std::string ne::Timer::sTimerName
+
+private
+
+

Name of this timer (used for logging).

+ +
+
+ +

◆ timerThreadFuture

+ +
+
+ + + + + +
+ + + + +
std::optional<std::future<void> > ne::Timer::timerThreadFuture
+
+private
+
+

Future of the waiting thread.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/misc/Timer.h
  • +
  • src/engine_lib/private/misc/Timer.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1Timer.js b/classne_1_1Timer.js new file mode 100644 index 000000000..da56e4336 --- /dev/null +++ b/classne_1_1Timer.js @@ -0,0 +1,31 @@ +var classne_1_1Timer = +[ + [ "Timer", "classne_1_1Timer.html#ac7b56b08458195237f492738e18bd7f5", null ], + [ "getElapsedTimeInMs", "classne_1_1Timer.html#aea4d4cb8702cd5017a0e786bdf2cca92", null ], + [ "getName", "classne_1_1Timer.html#a615873fbc3308b957519eb59cf73c9c3", null ], + [ "getStartCount", "classne_1_1Timer.html#ab8b529dbd73e58bc2901295aef47e099", null ], + [ "isEnabled", "classne_1_1Timer.html#a29a7fec318f11ccd58f3591d61829fed", null ], + [ "isRunning", "classne_1_1Timer.html#a3cdc8fc9b982da60af83e9f0d9356f42", null ], + [ "isStopped", "classne_1_1Timer.html#aae25a268580fe3b0b85026e05f706501", null ], + [ "setCallbackForTimeout", "classne_1_1Timer.html#adda0aa36c796bf3d9087f50d1a3388b8", null ], + [ "setCallbackValidator", "classne_1_1Timer.html#a42298aa372846901f5139e57a96b9d55", null ], + [ "setEnable", "classne_1_1Timer.html#a1e4b01f28b5d3436354dd5b382f273c3", null ], + [ "start", "classne_1_1Timer.html#ac46cfad93a59a7cfe0671783d0b3d9ad", null ], + [ "stop", "classne_1_1Timer.html#a04379b8607c06511158f5c2f3ee7f173", null ], + [ "timerThread", "classne_1_1Timer.html#a0f17e0b04cf2f82037a6ce01746a4d33", null ], + [ "bIsEnabled", "classne_1_1Timer.html#a76a103e31719b66aa77762243471cda4", null ], + [ "bIsLooping", "classne_1_1Timer.html#a74ad7719fa6f31b9d6a75a7ed8837ebf", null ], + [ "bIsRunning", "classne_1_1Timer.html#a0c8a12568362277dcf86adf5dccbd7aa", null ], + [ "bIsShuttingDown", "classne_1_1Timer.html#ac7a32d2adb24d1ccf9a366b24ae1883b", null ], + [ "bIsStopRequested", "classne_1_1Timer.html#afc8380fd0f41b14ec9e862e0d618dcac", null ], + [ "callbackForTimeout", "classne_1_1Timer.html#a581203dd5bb3caced184dc46efab616c", null ], + [ "callbackValidator", "classne_1_1Timer.html#a41bd2bb3dd1984b7a97e18c7205aa233", null ], + [ "cvTerminateTimerThread", "classne_1_1Timer.html#a3c05c141e0c1fc85391171212488fd6c", null ], + [ "elapsedTimeWhenStopped", "classne_1_1Timer.html#aadb19734549133e6b8b6749a068540d3", null ], + [ "iStartCount", "classne_1_1Timer.html#a4f6edada61d8ff396d3282155f00a7d7", null ], + [ "iTimeToWaitInMs", "classne_1_1Timer.html#ab048f0fbea3639ce1d3ad0bd65df8b10", null ], + [ "mtxTerminateTimerThread", "classne_1_1Timer.html#a76cdf05b5af8f11c7f5dca674a058be0", null ], + [ "mtxTimeWhenStarted", "classne_1_1Timer.html#a8e0ce3323dbb910c5c24402e7eed7124", null ], + [ "sTimerName", "classne_1_1Timer.html#a0316d6c147c94eb3a07232c126552d3d", null ], + [ "timerThreadFuture", "classne_1_1Timer.html#adb99a5d02b725d2ed8e85f61a7af0031", null ] +]; \ No newline at end of file diff --git a/classne_1_1UniqueValueGenerator-members.html b/classne_1_1UniqueValueGenerator-members.html new file mode 100644 index 000000000..a6fccf337 --- /dev/null +++ b/classne_1_1UniqueValueGenerator-members.html @@ -0,0 +1,117 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::UniqueValueGenerator Member List
+
+
+ +

This is the complete list of members for ne::UniqueValueGenerator, including all inherited members.

+ + + + + + + + +
get()ne::UniqueValueGeneratorstatic
getUniqueWindowName()ne::UniqueValueGenerator
iWindowCounterne::UniqueValueGeneratorprivate
operator=(const UniqueValueGenerator &)=delete (defined in ne::UniqueValueGenerator)ne::UniqueValueGenerator
UniqueValueGenerator(const UniqueValueGenerator &)=delete (defined in ne::UniqueValueGenerator)ne::UniqueValueGenerator
UniqueValueGenerator()=default (defined in ne::UniqueValueGenerator)ne::UniqueValueGeneratorprivate
~UniqueValueGenerator() (defined in ne::UniqueValueGenerator)ne::UniqueValueGeneratorvirtual
+
+ + + + diff --git a/classne_1_1UniqueValueGenerator.html b/classne_1_1UniqueValueGenerator.html new file mode 100644 index 000000000..6e1aacbaf --- /dev/null +++ b/classne_1_1UniqueValueGenerator.html @@ -0,0 +1,214 @@ + + + + + + + +Nameless Engine: ne::UniqueValueGenerator Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::UniqueValueGenerator Class Reference
+
+
+ +

#include <UniqueValueGenerator.h>

+ + + + + + + + +

+Public Member Functions

UniqueValueGenerator (const UniqueValueGenerator &)=delete
 
+UniqueValueGeneratoroperator= (const UniqueValueGenerator &)=delete
 
std::string getUniqueWindowName ()
 
+ + + +

+Static Public Member Functions

static UniqueValueGeneratorget ()
 
+ + + +

+Private Attributes

unsigned long long iWindowCounter = 0
 
+

Detailed Description

+

Used to generate unique values and names.

+

Member Function Documentation

+ +

◆ get()

+ +
+
+ + + + + +
+ + + + + + + +
UniqueValueGenerator & ne::UniqueValueGenerator::get ()
+
+static
+
+

Returns a reference to the generator instance. If no instance was created yet, this function will create it and return a reference to it.

+
Returns
Reference to the generator instance.
+ +
+
+ +

◆ getUniqueWindowName()

+ +
+
+ + + + + + + +
std::string ne::UniqueValueGenerator::getUniqueWindowName ()
+
+

Returns a unique window name.

+
Returns
Unique window name.
+ +
+
+

Member Data Documentation

+ +

◆ iWindowCounter

+ +
+
+ + + + + +
+ + + + +
unsigned long long ne::UniqueValueGenerator::iWindowCounter = 0
+
+private
+
+

Used to make sure that window class names are unique.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classne_1_1UniqueValueGenerator.js b/classne_1_1UniqueValueGenerator.js new file mode 100644 index 000000000..e2f558ac9 --- /dev/null +++ b/classne_1_1UniqueValueGenerator.js @@ -0,0 +1,6 @@ +var classne_1_1UniqueValueGenerator = +[ + [ "get", "classne_1_1UniqueValueGenerator.html#ab4a93d2f5dd3cf695ec0efef311ca0df", null ], + [ "getUniqueWindowName", "classne_1_1UniqueValueGenerator.html#a7c0313496f8a24d49d5073b2ba036fbb", null ], + [ "iWindowCounter", "classne_1_1UniqueValueGenerator.html#ae16ef42b2a2dfef4f4870e92a61b5830", null ] +]; \ No newline at end of file diff --git a/classne_1_1UnorderedMapFieldSerializer-members.html b/classne_1_1UnorderedMapFieldSerializer-members.html new file mode 100644 index 000000000..4369ae415 --- /dev/null +++ b/classne_1_1UnorderedMapFieldSerializer-members.html @@ -0,0 +1,119 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::UnorderedMapFieldSerializer Member List
+
+
+ +

This is the complete list of members for ne::UnorderedMapFieldSerializer, including all inherited members.

+ + + + + + + + + + +
cloneField(Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField) overridene::UnorderedMapFieldSerializervirtual
deserializeField(const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes) overridene::UnorderedMapFieldSerializervirtual
IFieldSerializer()=default (defined in ne::IFieldSerializer)ne::IFieldSerializer
isFieldTypeSupported(const rfk::Field *pField) overridene::UnorderedMapFieldSerializervirtual
isFieldValueEqual(Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB) overridene::UnorderedMapFieldSerializervirtual
serializeField(toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr) overridene::UnorderedMapFieldSerializervirtual
UnorderedMapFieldSerializer()=default (defined in ne::UnorderedMapFieldSerializer)ne::UnorderedMapFieldSerializer
~IFieldSerializer()=default (defined in ne::IFieldSerializer)ne::IFieldSerializervirtual
~UnorderedMapFieldSerializer() override=default (defined in ne::UnorderedMapFieldSerializer)ne::UnorderedMapFieldSerializervirtual
+
+ + + + diff --git a/classne_1_1UnorderedMapFieldSerializer.html b/classne_1_1UnorderedMapFieldSerializer.html new file mode 100644 index 000000000..797a0de3d --- /dev/null +++ b/classne_1_1UnorderedMapFieldSerializer.html @@ -0,0 +1,475 @@ + + + + + + + +Nameless Engine: ne::UnorderedMapFieldSerializer Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::UnorderedMapFieldSerializer Class Reference
+
+
+ +

#include <UnorderedMapFieldSerializer.h>

+
+Inheritance diagram for ne::UnorderedMapFieldSerializer:
+
+
+ + +ne::IFieldSerializer + +
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual bool isFieldTypeSupported (const rfk::Field *pField) override
 
virtual std::optional< ErrorserializeField (toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr) override
 
virtual std::optional< ErrordeserializeField (const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes) override
 
virtual std::optional< ErrorcloneField (Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField) override
 
virtual bool isFieldValueEqual (Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB) override
 
virtual bool isFieldTypeSupported (const rfk::Field *pField)=0
 
virtual std::optional< ErrorserializeField (toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr)=0
 
virtual std::optional< ErrordeserializeField (const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes)=0
 
virtual std::optional< ErrorcloneField (Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField)=0
 
virtual bool isFieldValueEqual (Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB)=0
 
+

Detailed Description

+

Serializer for some std::unordered_map<T, T> field types, the following inner types are supported: bool, int, unsigned int, long long, unsigned long long, float, double, std::string.

+

Member Function Documentation

+ +

◆ cloneField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::UnorderedMapFieldSerializer::cloneField (SerializablepFromInstance,
const rfk::Field * pFromField,
SerializablepToInstance,
const rfk::Field * pToField 
)
+
+overridevirtual
+
+

Clones field's data from one object to another.

+
Parameters
+ + + + + +
pFromInstanceInstance to copy the field from.
pFromFieldField to copy.
pToInstanceInstance to copy to.
pToFieldField to copy to.
+
+
+
Returns
Error if something went wrong, empty otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ deserializeField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::UnorderedMapFieldSerializer::deserializeField (const toml::value * pTomlDocument,
const toml::value * pTomlValue,
SerializablepFieldOwner,
const rfk::Field * pField,
const std::string & sOwnerSectionName,
const std::string & sEntityId,
std::unordered_map< std::string, std::string > & customAttributes 
)
+
+overridevirtual
+
+

Deserializes field from a TOML value.

+
Parameters
+ + + + + + + + +
pTomlDocumentTOML document that contains a value to deserialize.
pTomlValueTOML value to deserialize the field from.
pFieldOwnerField's owner.
pFieldField to deserialize TOML value to.
sOwnerSectionNameName of the TOML section where is field was found.
sEntityIdCurrent ID string of the entity (field owner) that we are deserializing.
customAttributesPairs of values that were found with this object in TOML data. Only found when deserializing a field of type that derives from Serializable.
+
+
+
Returns
Error if something went wrong, empty otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ isFieldTypeSupported()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ne::UnorderedMapFieldSerializer::isFieldTypeSupported (const rfk::Field * pField)
+
+overridevirtual
+
+

Tests if this serializer supports serialization/deserialization of this field.

+
Parameters
+ + +
pFieldField to test for serialization/deserialization support.
+
+
+
Returns
true if this serializer can be used to serialize this field, false otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ isFieldValueEqual()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool ne::UnorderedMapFieldSerializer::isFieldValueEqual (SerializablepFieldAOwner,
const rfk::Field * pFieldA,
SerializablepFieldBOwner,
const rfk::Field * pFieldB 
)
+
+overridevirtual
+
+

Checks if the specified fields' values are equal or not.

+
Parameters
+ + + + + +
pFieldAOwnerOwner of the field A.
pFieldAField A to compare.
pFieldBOwnerOwner of the field B.
pFieldBField B to compare.
+
+
+
Returns
false if some field is unsupported by this serializer or if fields' values are not equal, true otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ serializeField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::UnorderedMapFieldSerializer::serializeField (toml::value * pTomlData,
SerializablepFieldOwner,
const rfk::Field * pField,
const std::string & sSectionName,
const std::string & sEntityId,
size_t & iSubEntityId,
SerializablepOriginalObject = nullptr 
)
+
+overridevirtual
+
+

Serializes field into a TOML value.

+
Parameters
+ + + + + + + + +
pTomlDataTOML value to serialize the field to.
pFieldOwnerField's owner.
pFieldField to serialize.
sSectionNameName of the section (for TOML value) to use for this field.
sEntityIdCurrent ID string of the entity (field owner) that we are serializing. Only used when serializing a field of type that derives from Serializable.
iSubEntityIdCurrent ID of the sub entity (sub entity of the field owner). Only used when serializing a field of type that derives from Serializable.
pOriginalObjectOptional. Original object of the same type as the object being serialized, this object is a deserialized version of the object being serialized, used to compare serializable fields' values and only serialize changed values. Only used when serializing a field of type that derives from Serializable.
+
+
+
Returns
Error if something went wrong, empty otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classne_1_1UnorderedMapFieldSerializer.js b/classne_1_1UnorderedMapFieldSerializer.js new file mode 100644 index 000000000..13afbc0f5 --- /dev/null +++ b/classne_1_1UnorderedMapFieldSerializer.js @@ -0,0 +1,8 @@ +var classne_1_1UnorderedMapFieldSerializer = +[ + [ "cloneField", "classne_1_1UnorderedMapFieldSerializer.html#a4276dac8bfad846d5ca32269e5d52c85", null ], + [ "deserializeField", "classne_1_1UnorderedMapFieldSerializer.html#a89f311522840bfb21d4ac363e7b789ec", null ], + [ "isFieldTypeSupported", "classne_1_1UnorderedMapFieldSerializer.html#a12fb1b1c575f9e870444c1d00a86d7d8", null ], + [ "isFieldValueEqual", "classne_1_1UnorderedMapFieldSerializer.html#af84dc8bd83cddb5cb93fdecc85bfffb5", null ], + [ "serializeField", "classne_1_1UnorderedMapFieldSerializer.html#a5a5fd430dd41791039c18d43f72df037", null ] +]; \ No newline at end of file diff --git a/classne_1_1UnorderedMapFieldSerializer.png b/classne_1_1UnorderedMapFieldSerializer.png new file mode 100644 index 0000000000000000000000000000000000000000..8149964b0fda04a8fb9fb003294788edb8733c87 GIT binary patch literal 751 zcmeAS@N?(olHy`uVBq!ia0vp^$ALJ2gBeK9+A)zINJ$6ygt-3y{~ySF@#br3|Doj; z2ATyD)6cv(aNqz?Jb2RO6+k)8k|4ie1|S~{%$a6iVPIgY@^omQ{mh~JKxR(2~^ymFbl!yAjANjd+LW-WWkcF1K?{Q4&fCoR1ACiN`-UNGh7 z_CLDYlQ+bM37`CETzAi7()pLQGAfxS7Snbg-uqAPk!qjO{C7p6?rSVwef(~HIO6#q z9;yAa{9ijxn*No^J+}PKf#QhZqc3~d70+BTYgAePa%#;CQQz7(1zT*zCdExlKJGQ? z`WLJAb+Oa?<33h-PYa#8|J!9bmCDHdr;a<;-e3wpo|~0no`0)ZMgMi}`>UR{8GNeo zN&lbj-E{WZp7^it-QT+%UTi&Zpn!s65uN^f2n1)C^^$^<~al_FkN!CW@b7 zM`PZhj}>>ApQy)rywFYaea7EN5_#s z5OGoSc#_q&`BAe9A8*+vp1Y#le)?4vrN`-i_@@7nIi7VlCp-Px1B>_%Z_d7yS*o{^ ze@ScUwx5MJ6Kow!L-yJn&sq^!vS`*q{~*uo#NPY6y5esXgsgwK-lAu%eO~*opxnlN z*3z!B|0C8M%~a$!OI`M@W_69k?$hmacbDGh)8rFhD!bzTe7^;gpWfJ*XIZi|_JPFg ztnXFDZ!b!^@tQVQKlF)^UGO`ze{s#5E5~m>e64IW?bt@k+UvD*a;3}E^Y_XAd$iZ+ zYa-*Cr&YB(Sj#PASY-=lT)R-+ym9N1cRVlao<7t4U;jG%@9%|&UNKbveKo)Sy#1~K ypucUF?k?!)sPQ?es3hbLCXC%Rm)7k6$Dkg#cyCWh$0K0UWbkzLb6Mw<&;$TR3S{2^ literal 0 HcmV?d00001 diff --git a/classne_1_1UploadBuffer-members.html b/classne_1_1UploadBuffer-members.html new file mode 100644 index 000000000..969d4eb7b --- /dev/null +++ b/classne_1_1UploadBuffer-members.html @@ -0,0 +1,123 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::UploadBuffer Member List
+
+
+ +

This is the complete list of members for ne::UploadBuffer, including all inherited members.

+ + + + + + + + + + + + + + +
copyDataToElement(size_t iElementIndex, const void *pData, size_t iDataSize)ne::UploadBufferinline
getElementCount() constne::UploadBuffer
getElementSizeInBytes() constne::UploadBuffer
getInternalResource() constne::UploadBuffer
iElementCountne::UploadBufferprivate
iElementSizeInBytesne::UploadBufferprivate
operator=(UploadBuffer &)=delete (defined in ne::UploadBuffer)ne::UploadBuffer
pGpuResourcene::UploadBufferprivate
pMappedResourceDatane::UploadBufferprivate
UploadBuffer(std::unique_ptr< GpuResource > pGpuResourceToUse, size_t iElementSizeInBytes, size_t iElementCount)ne::UploadBuffer
UploadBuffer()=delete (defined in ne::UploadBuffer)ne::UploadBuffer
UploadBuffer(UploadBuffer &)=delete (defined in ne::UploadBuffer)ne::UploadBuffer
~UploadBuffer() (defined in ne::UploadBuffer)ne::UploadBuffer
+
+ + + + diff --git a/classne_1_1UploadBuffer.html b/classne_1_1UploadBuffer.html new file mode 100644 index 000000000..50d37acb0 --- /dev/null +++ b/classne_1_1UploadBuffer.html @@ -0,0 +1,400 @@ + + + + + + + +Nameless Engine: ne::UploadBuffer Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::UploadBuffer Class Reference
+
+
+ +

#include <UploadBuffer.h>

+ + + + + + + + + + + + + + + + +

+Public Member Functions

 UploadBuffer (std::unique_ptr< GpuResource > pGpuResourceToUse, size_t iElementSizeInBytes, size_t iElementCount)
 
UploadBuffer (UploadBuffer &)=delete
 
+UploadBufferoperator= (UploadBuffer &)=delete
 
void copyDataToElement (size_t iElementIndex, const void *pData, size_t iDataSize)
 
size_t getElementCount () const
 
size_t getElementSizeInBytes () const
 
GpuResourcegetInternalResource () const
 
+ + + + + + + + + +

+Private Attributes

std::unique_ptr< GpuResourcepGpuResource
 
unsigned char * pMappedResourceData = nullptr
 
size_t iElementSizeInBytes = 0
 
size_t iElementCount = 0
 
+

Detailed Description

+

Wrapper class with handy functions that takes ownership of a GPU resource with available CPU write access, typically used when a buffer needs to be frequently updated from the CPU side.

+

Constructor & Destructor Documentation

+ +

◆ UploadBuffer()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ne::UploadBuffer::UploadBuffer (std::unique_ptr< GpuResourcepGpuResourceToUse,
size_t iElementSizeInBytes,
size_t iElementCount 
)
+
+

Initializes the wrapper with data to use.

+
Parameters
+ + + + +
pGpuResourceToUseGPU resource with available CPU access.
iElementSizeInBytesSize of one buffer element in bytes (already padded if needed).
iElementCountAmount of elements in the resource.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ copyDataToElement()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::UploadBuffer::copyDataToElement (size_t iElementIndex,
const void * pData,
size_t iDataSize 
)
+
+inline
+
+

Copies the specified data to the element in the resource.

+
Parameters
+ + + + +
iElementIndexIndex of the element to copy the data to (see getElementCount).
pDataData to copy.
iDataSizeSize in bytes of data to copy.
+
+
+ +
+
+ +

◆ getElementCount()

+ +
+
+ + + + + + + +
size_t ne::UploadBuffer::getElementCount () const
+
+

Returns the number of elements stored in the buffer.

+
Returns
Number of elements stored in the buffer.
+ +
+
+ +

◆ getElementSizeInBytes()

+ +
+
+ + + + + + + +
size_t ne::UploadBuffer::getElementSizeInBytes () const
+
+

Returns the size of one element (includes padding if it was needed) stored in the buffer.

+
Returns
Element size in bytes.
+ +
+
+ +

◆ getInternalResource()

+ +
+
+ + + + + + + +
GpuResource * ne::UploadBuffer::getInternalResource () const
+
+

Returns GPU resource that this object wraps.

+
Warning
Do not delete (free) returned pointer.
+
Returns
GPU resource.
+ +
+
+

Member Data Documentation

+ +

◆ iElementCount

+ +
+
+ + + + + +
+ + + + +
size_t ne::UploadBuffer::iElementCount = 0
+
+private
+
+

Amount of elements in pGpuResource.

+ +
+
+ +

◆ iElementSizeInBytes

+ +
+
+ + + + + +
+ + + + +
size_t ne::UploadBuffer::iElementSizeInBytes = 0
+
+private
+
+

Size of one buffer element in bytes (see iElementCount).

+ +
+
+ +

◆ pGpuResource

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<GpuResource> ne::UploadBuffer::pGpuResource
+
+private
+
+

GPU resource with available CPU access.

+
Warning
In DirectX, before releasing this resource we should Unmap it.
+ +
+
+ +

◆ pMappedResourceData

+ +
+
+ + + + + +
+ + + + +
unsigned char* ne::UploadBuffer::pMappedResourceData = nullptr
+
+private
+
+

CPU pointer to the data located in pGpuResource.

+
Remarks
CPU reads should be avoided, they will work, but are prohibitively slow on many common GPU architectures.
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/general/resource/UploadBuffer.h
  • +
  • src/engine_lib/private/render/general/resource/UploadBuffer.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1UploadBuffer.js b/classne_1_1UploadBuffer.js new file mode 100644 index 000000000..6e9b219f0 --- /dev/null +++ b/classne_1_1UploadBuffer.js @@ -0,0 +1,12 @@ +var classne_1_1UploadBuffer = +[ + [ "UploadBuffer", "classne_1_1UploadBuffer.html#ab31ad949c3d972cbfa6bda83d3fd8485", null ], + [ "copyDataToElement", "classne_1_1UploadBuffer.html#a0576ed6e3eaee33ff4c3a2c2d88518cc", null ], + [ "getElementCount", "classne_1_1UploadBuffer.html#a9ff8ca5b5291cffd5fe8acbd8b3256ef", null ], + [ "getElementSizeInBytes", "classne_1_1UploadBuffer.html#a66ac386509b4137b422a9f0855edf4ff", null ], + [ "getInternalResource", "classne_1_1UploadBuffer.html#afe8afef68f06fdd2dcab71318b70ab85", null ], + [ "iElementCount", "classne_1_1UploadBuffer.html#ae35a838446a01a7961192d90b0a7c22f", null ], + [ "iElementSizeInBytes", "classne_1_1UploadBuffer.html#ac128a9a35daf3b0a13ed07475d2bee7d", null ], + [ "pGpuResource", "classne_1_1UploadBuffer.html#a470eaf8071f3297926ac11d4b89b4e60", null ], + [ "pMappedResourceData", "classne_1_1UploadBuffer.html#a8d118da3d08f11f27ce934a4e0942bd2", null ] +]; \ No newline at end of file diff --git a/classne_1_1VectorFieldSerializer-members.html b/classne_1_1VectorFieldSerializer-members.html new file mode 100644 index 000000000..2e25bac08 --- /dev/null +++ b/classne_1_1VectorFieldSerializer-members.html @@ -0,0 +1,121 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::VectorFieldSerializer Member List
+
+
+ +

This is the complete list of members for ne::VectorFieldSerializer, including all inherited members.

+ + + + + + + + + + + + +
cloneField(Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField) overridene::VectorFieldSerializervirtual
deserializeField(const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes) overridene::VectorFieldSerializervirtual
IFieldSerializer()=default (defined in ne::IFieldSerializer)ne::IFieldSerializer
isFieldTypeSupported(const rfk::Field *pField) overridene::VectorFieldSerializervirtual
isFieldValueEqual(Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB) overridene::VectorFieldSerializervirtual
isMostInnerTypeSerializable(const std::string &sFieldCanonicalTypeName)ne::VectorFieldSerializerprivatestatic
serializeField(toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr) overridene::VectorFieldSerializervirtual
sStringCanonicalTypeNamene::VectorFieldSerializerinlineprivatestatic
VectorFieldSerializer()=default (defined in ne::VectorFieldSerializer)ne::VectorFieldSerializer
~IFieldSerializer()=default (defined in ne::IFieldSerializer)ne::IFieldSerializervirtual
~VectorFieldSerializer() override=default (defined in ne::VectorFieldSerializer)ne::VectorFieldSerializervirtual
+
+ + + + diff --git a/classne_1_1VectorFieldSerializer.html b/classne_1_1VectorFieldSerializer.html new file mode 100644 index 000000000..7d447b7d4 --- /dev/null +++ b/classne_1_1VectorFieldSerializer.html @@ -0,0 +1,545 @@ + + + + + + + +Nameless Engine: ne::VectorFieldSerializer Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <VectorFieldSerializer.h>

+
+Inheritance diagram for ne::VectorFieldSerializer:
+
+
+ + +ne::IFieldSerializer + +
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual bool isFieldTypeSupported (const rfk::Field *pField) override
 
virtual std::optional< ErrorserializeField (toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr) override
 
virtual std::optional< ErrordeserializeField (const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes) override
 
virtual std::optional< ErrorcloneField (Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField) override
 
virtual bool isFieldValueEqual (Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB) override
 
virtual bool isFieldTypeSupported (const rfk::Field *pField)=0
 
virtual std::optional< ErrorserializeField (toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr)=0
 
virtual std::optional< ErrordeserializeField (const toml::value *pTomlDocument, const toml::value *pTomlValue, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sOwnerSectionName, const std::string &sEntityId, std::unordered_map< std::string, std::string > &customAttributes)=0
 
virtual std::optional< ErrorcloneField (Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField)=0
 
virtual bool isFieldValueEqual (Serializable *pFieldAOwner, const rfk::Field *pFieldA, Serializable *pFieldBOwner, const rfk::Field *pFieldB)=0
 
+ + + +

+Static Private Member Functions

static bool isMostInnerTypeSerializable (const std::string &sFieldCanonicalTypeName)
 
+ + + +

+Static Private Attributes

static const std::string sStringCanonicalTypeName = "std::basic_string<char>"
 
+

Detailed Description

+

Serializer for some std::vector<T> field types, the following inner vector types are supported: bool, int, unsigned int, long long, unsigned long long, float, double, std::string, MeshVertex. Additionally, supported inner types include std::unique_ptr<T> where T is any type that derives from Serializable.

+

Member Function Documentation

+ +

◆ cloneField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::VectorFieldSerializer::cloneField (SerializablepFromInstance,
const rfk::Field * pFromField,
SerializablepToInstance,
const rfk::Field * pToField 
)
+
+overridevirtual
+
+

Clones field's data from one object to another.

+
Parameters
+ + + + + +
pFromInstanceInstance to copy the field from.
pFromFieldField to copy.
pToInstanceInstance to copy to.
pToFieldField to copy to.
+
+
+
Returns
Error if something went wrong, empty otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ deserializeField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::VectorFieldSerializer::deserializeField (const toml::value * pTomlDocument,
const toml::value * pTomlValue,
SerializablepFieldOwner,
const rfk::Field * pField,
const std::string & sOwnerSectionName,
const std::string & sEntityId,
std::unordered_map< std::string, std::string > & customAttributes 
)
+
+overridevirtual
+
+

Deserializes field from a TOML value.

+
Parameters
+ + + + + + + + +
pTomlDocumentTOML document that contains a value to deserialize.
pTomlValueTOML value to deserialize the field from.
pFieldOwnerField's owner.
pFieldField to deserialize TOML value to.
sOwnerSectionNameName of the TOML section where is field was found.
sEntityIdCurrent ID string of the entity (field owner) that we are deserializing.
customAttributesPairs of values that were found with this object in TOML data. Only found when deserializing a field of type that derives from Serializable.
+
+
+
Returns
Error if something went wrong, empty otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ isFieldTypeSupported()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ne::VectorFieldSerializer::isFieldTypeSupported (const rfk::Field * pField)
+
+overridevirtual
+
+

Tests if this serializer supports serialization/deserialization of this field.

+
Parameters
+ + +
pFieldField to test for serialization/deserialization support.
+
+
+
Returns
true if this serializer can be used to serialize this field, false otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ isFieldValueEqual()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool ne::VectorFieldSerializer::isFieldValueEqual (SerializablepFieldAOwner,
const rfk::Field * pFieldA,
SerializablepFieldBOwner,
const rfk::Field * pFieldB 
)
+
+overridevirtual
+
+

Checks if the specified fields' values are equal or not.

+
Parameters
+ + + + + +
pFieldAOwnerOwner of the field A.
pFieldAField A to compare.
pFieldBOwnerOwner of the field B.
pFieldBField B to compare.
+
+
+
Returns
false if some field is unsupported by this serializer or if fields' values are not equal, true otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+ +

◆ isMostInnerTypeSerializable()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ne::VectorFieldSerializer::isMostInnerTypeSerializable (const std::string & sFieldCanonicalTypeName)
+
+staticprivate
+
+

Looks if the specified type contains Serializable type. Supports the following type format: SomeContainerType<SomeOtherContainerType<T>>.

+
Parameters
+ + +
sFieldCanonicalTypeNameCanonical type name.
+
+
+
Returns
false if the most inner type is not Serializable, otherwise true.
+ +
+
+ +

◆ serializeField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::VectorFieldSerializer::serializeField (toml::value * pTomlData,
SerializablepFieldOwner,
const rfk::Field * pField,
const std::string & sSectionName,
const std::string & sEntityId,
size_t & iSubEntityId,
SerializablepOriginalObject = nullptr 
)
+
+overridevirtual
+
+

Serializes field into a TOML value.

+
Parameters
+ + + + + + + + +
pTomlDataTOML value to serialize the field to.
pFieldOwnerField's owner.
pFieldField to serialize.
sSectionNameName of the section (for TOML value) to use for this field.
sEntityIdCurrent ID string of the entity (field owner) that we are serializing. Only used when serializing a field of type that derives from Serializable.
iSubEntityIdCurrent ID of the sub entity (sub entity of the field owner). Only used when serializing a field of type that derives from Serializable.
pOriginalObjectOptional. Original object of the same type as the object being serialized, this object is a deserialized version of the object being serialized, used to compare serializable fields' values and only serialize changed values. Only used when serializing a field of type that derives from Serializable.
+
+
+
Returns
Error if something went wrong, empty otherwise.
+ +

Implements ne::IFieldSerializer.

+ +
+
+

Member Data Documentation

+ +

◆ sStringCanonicalTypeName

+ +
+
+ + + + + +
+ + + + +
const std::string ne::VectorFieldSerializer::sStringCanonicalTypeName = "std::basic_string<char>"
+
+inlinestaticprivate
+
+

Canonical type name for std::string fields.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/io/serializers/VectorFieldSerializer.h
  • +
  • src/engine_lib/private/io/serializers/VectorFieldSerializer.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1VectorFieldSerializer.js b/classne_1_1VectorFieldSerializer.js new file mode 100644 index 000000000..a51c1b21b --- /dev/null +++ b/classne_1_1VectorFieldSerializer.js @@ -0,0 +1,10 @@ +var classne_1_1VectorFieldSerializer = +[ + [ "cloneField", "classne_1_1VectorFieldSerializer.html#a5ada0bab82838106d75fff4aa224d8c7", null ], + [ "deserializeField", "classne_1_1VectorFieldSerializer.html#afb26619237c0acd15d41b6fe47197c73", null ], + [ "isFieldTypeSupported", "classne_1_1VectorFieldSerializer.html#ac1dc541e313001d544ed2bc7583ccd68", null ], + [ "isFieldValueEqual", "classne_1_1VectorFieldSerializer.html#a07fa11d7ccd0673d227b9abab92e647d", null ], + [ "isMostInnerTypeSerializable", "classne_1_1VectorFieldSerializer.html#a6d92c3aeb1ea8adacc489f3cf19a1975", null ], + [ "serializeField", "classne_1_1VectorFieldSerializer.html#a0cfc065e6e5c7538500f303a9679746e", null ], + [ "sStringCanonicalTypeName", "classne_1_1VectorFieldSerializer.html#a3fa05b4859812c3aa4c20a88d1a56999", null ] +]; \ No newline at end of file diff --git a/classne_1_1VectorFieldSerializer.png b/classne_1_1VectorFieldSerializer.png new file mode 100644 index 0000000000000000000000000000000000000000..093878f0430a42367aff62152aabe1e5ec1cce8c GIT binary patch literal 674 zcmV;T0$u%yP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0006l zNkl$uv>_C`nX&xdSucnr4Vv@qxJFnQbZCep+B)J|b zMv@Uyj3gt(#LE6TevVMY=ql+D*>EQvZSFy4`|8X@*Fk&@9 zZRDiuJ%5ufu4ddvkmQ{gvAR*;auoAR)vrlUws5yzH<0AOTgKcLuErk3u0spS5ijA8S3=6QNm7JYv2*DbFif0HWT)%s?{Y3l>K_+3 zJ^dGAlH}-O$7p`IBu!{yWq-K({QgcmduFEnI__%Q*95hZOUMx4;?Ax5RNJqM)u42j@L~_EcQIeBHL_;>b9L{)<%4Pm9{Zo3vgCrR%}+RLlsWMT)&tk*_L%(Ib>t# z%JzS3i2wWZYTL0Z^D9Y`;-r`)MMyD8ijZQG6k!)DrIZEv4+H&ugs5rI_W%F@07*qo IM6N<$f}&J8c>n+a literal 0 HcmV?d00001 diff --git a/classne_1_1VertexFormatDescription-members.html b/classne_1_1VertexFormatDescription-members.html new file mode 100644 index 000000000..f180f669e --- /dev/null +++ b/classne_1_1VertexFormatDescription-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::VertexFormatDescription Member List
+
+
+ +

This is the complete list of members for ne::VertexFormatDescription, including all inherited members.

+ + + + +
createDescription(VertexFormat type, Renderer *pRenderer)ne::VertexFormatDescriptionstatic
VertexFormatDescription()=default (defined in ne::VertexFormatDescription)ne::VertexFormatDescription
~VertexFormatDescription()=default (defined in ne::VertexFormatDescription)ne::VertexFormatDescriptionvirtual
+
+ + + + diff --git a/classne_1_1VertexFormatDescription.html b/classne_1_1VertexFormatDescription.html new file mode 100644 index 000000000..0b20cca57 --- /dev/null +++ b/classne_1_1VertexFormatDescription.html @@ -0,0 +1,183 @@ + + + + + + + +Nameless Engine: ne::VertexFormatDescription Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::VertexFormatDescription Class Reference
+
+
+ +

#include <VertexFormat.h>

+
+Inheritance diagram for ne::VertexFormatDescription:
+
+
+ + +ne::GlslVertexFormatDescription +ne::HlslVertexFormatDescription +ne::MeshNodeGlslVertexFormatDescription +ne::MeshNodeHlslVertexFormatDescription + +
+ + + + +

+Static Public Member Functions

static std::unique_ptr< VertexFormatDescriptioncreateDescription (VertexFormat type, Renderer *pRenderer)
 
+

Detailed Description

+

Base class to describe information about a vertex format.

+

Member Function Documentation

+ +

◆ createDescription()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< VertexFormatDescription > ne::VertexFormatDescription::createDescription (VertexFormat type,
RendererpRenderer 
)
+
+static
+
+

Creates vertex format description.

+
Parameters
+ + + +
typeType of the vertex format.
pRendererUsed renderer.
+
+
+
Returns
Vertex format description.
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/shader/general/format/VertexFormat.h
  • +
  • src/engine_lib/private/shader/general/format/VertexFormat.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1VertexFormatDescription.js b/classne_1_1VertexFormatDescription.js new file mode 100644 index 000000000..dfde771e5 --- /dev/null +++ b/classne_1_1VertexFormatDescription.js @@ -0,0 +1,4 @@ +var classne_1_1VertexFormatDescription = +[ + [ "createDescription", "classne_1_1VertexFormatDescription.html#a12bbedae0fb811f3c2edf5305ef8e3c2", null ] +]; \ No newline at end of file diff --git a/classne_1_1VertexFormatDescription.png b/classne_1_1VertexFormatDescription.png new file mode 100644 index 0000000000000000000000000000000000000000..3d7225117d6edf15782da3ab975811933f2d44cd GIT binary patch literal 1765 zcmbVNdsLHG6916yC&lnkK~nS>y1Q`Ts1OL{ogj-;Pu0I-XRK9mRmTR<3B+E~Mq{z$wN-gYM(`y|R@vB2<^cJ<=5{^lUG zR~C{ge8uDOU_1VXxCK6YKPNE`55W573f$5#1^{4I%%O-+@~jpb7aq{v5K&a(KLu~Y zml@9f_YDFAp)fAD;`v`~qC19{TogHW0`w#2693feB++qqMEPa3BiIjQ#Ug=nDjKk9 zi%&r_Mj2y1Vbi!^Rd1VSX|^Rj2QdjR%G0VBq?1dw{(svIBtIoP3?9$pY9d)>sX_R?rm73asjrv)Aez+UYM&NX=- zj`DhLK0ZPm;@q$E z37#drrF@w&5&CK`VJ8UaUb%s3Ph>&8!!gId$!F;ImU#@IY}16#=D)zt&S#5{wW^|6 z&O{(9x-EoC5;be^4ZFbpgGd`|BG6^n=lgT8Dn5Ecb3>F{DeB?E`49oeGXgXs`wwnb zcj((n-g8Xq2i!Q`F4=%1VFNLpDy>VN?ErxtrGQ&+xz)kE_pM8oU|s2s0Q!&qR{zZ~ zusiI)`+-C7c2S$GD);qOtwgAYx6*u2H8@4X@3*~k`!8`sh7V~qabxbZ8qrO%C+^P} zR?7D{G2MHFWKt0XIq3bs9ti?^C`p-^A1=yUIq>=U=QENq9$y&nA`pwp)!cqy zJa1YwFZA~fgV&#&Nwh#gbneQ$Ia-nmR*PcXl+Ir^JOfNB9ceo2B{W_972& zN`|QcbLnekuI+O>&NnPNAN5+9<*TjkWuD616{)*cXU7N-%XjNUT#UmN1K*s8Iuk?L ze{`==Gv106@#51-5KSv?mOnD41`S+g)XH1~<>T?K7avIEBdJe~?Ih1NKh)hLa-lYK zl~4~s$py~V7?y6V2ltLW{ChmOd|hUH5P}AOe~+7ec}l#Vc!W5Ij`pIpZwbP?0A3u2 z{)0FIi(6^^#trd8P}3K5eZz7L1foZa9KrvaBmV;#-?1!2T2Yf2a-0f__?0H(b)oRP z$7w0ht`q-Z(#AN6PebQ$Ph0e2dlOx0T0T7)o{XOumg6Akt?Og~l6_Uw8Gw=B6(|m% zUXJPv$}^_)&O)`k_>ynS_ifD=Aj83njI*h_a%>ep6xVzCa-GDwNLX>hoWRN+GU<;} z^0}J$r2G#EO!CA>#iL=gv8!sjzH73{FkL{cnw?Cg$&*8W_>%qi$;KzaOkd-NsK<-k z$%=aOPh`oNOj2zoB~-h$VV{H6?`g*Cj_P}^Bq<5i%~>x{@`Zuip-e>aKn09;3r{sJ z2-bG_vosAq#&N3_0_B!2tq_#nlIzLO7-_YFywLTVO(#5x@odq8l{b(UUlOyiy9s@1{U+7Eo$EzOn7a_?#j0t!etVdw=5%0#?A5&7G+`~jP8q@Qqjp?@eKfrt}voEVjwB1(` dam4G&c=(Jg)3EmG6d8b5OjO(<=3i1u{|y4UTaN$$ literal 0 HcmV?d00001 diff --git a/classne_1_1VulkanPipeline-members.html b/classne_1_1VulkanPipeline-members.html new file mode 100644 index 000000000..e4c76f2e4 --- /dev/null +++ b/classne_1_1VulkanPipeline-members.html @@ -0,0 +1,165 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::VulkanPipeline Member List
+
+
+ +

This is the complete list of members for ne::VulkanPipeline, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addShader(const std::string &sShaderName)ne::ShaderUserprotected
bindBuffersIfUsed(const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> &vResources, const std::string &sShaderResourceName, VkDescriptorType descriptorType)ne::VulkanPipeline
bindFrameDataDescriptors()ne::VulkanPipelineprivate
bindImageIfUsed(GpuResource *pImageResourceToBind, std::string_view sShaderResourceName, VkDescriptorType descriptorType, VkImageLayout imageLayout, VkSampler pSampler)ne::VulkanPipeline
combineShaderNames(std::string_view sVertexShaderName, std::string_view sPixelShaderName, std::string_view sComputeShaderName="")ne::Pipelinestatic
createComputePipeline(Renderer *pRenderer, PipelineManager *pPipelineManager, const std::string &sComputeShaderName)ne::VulkanPipelinestatic
createComputePipeline(VulkanRenderer *pVulkanRenderer, GlslShader *pComputeShader)ne::VulkanPipelineprivate
createGraphicsPipeline(Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration)ne::VulkanPipelinestatic
createGraphicsPipeline(VulkanRenderer *pVulkanRenderer, GlslShader *pVertexShader, GlslShader *pFragmentShader, bool bUsePixelBlending)ne::VulkanPipelineprivate
definePushConstants(const std::unordered_map< std::string, size_t > &pushConstantUintFieldOffsets, const std::unordered_map< std::string, uint32_t, StdStringHash, std::equal_to<> > &resourceBindings)ne::VulkanPipelineprivate
findShader(ShaderType shaderType)ne::ShaderUserprotected
generateComputePipelineForShader(const std::string &sComputeShaderName)ne::VulkanPipelineprivate
generateGraphicsPipeline()ne::VulkanPipelineprivate
getConfiguration() constne::Pipeline
getCurrentShaderConfiguration(ShaderType shaderType)ne::Pipeline
getInternalResources()ne::VulkanPipelineinline
getMaterialsThatUseThisPipeline()ne::Pipeline
getPipelineIdentifier() constne::Pipeline
getRenderer() constne::Pipeline
getShaderConstants()ne::Pipeline
getUintConstantOffset(const std::string &sConstantName)ne::Pipeline
mtxAssignedShadersne::ShaderUserprivate
mtxComputeShadersThatUseThisPipelinene::Pipelineprivate
mtxInternalResourcesne::VulkanPipelineprivate
mtxMaterialsThatUseThisPipelinene::Pipelineprivate
mtxShaderConstantsDatane::Pipelineprivate
onComputeShaderNoLongerUsingPipeline(ComputeShaderInterface *pComputeShaderInterface)ne::Pipelineprivate
onComputeShaderUsingPipeline(ComputeShaderInterface *pComputeShaderInterface)ne::Pipelineprivate
onMaterialNoLongerUsingPipeline(Material *pMaterial)ne::Pipelineprivate
onMaterialUsingPipeline(Material *pMaterial)ne::Pipelineprivate
operator=(const VulkanPipeline &)=delete (defined in ne::VulkanPipeline)ne::VulkanPipeline
operator=(const Pipeline &)=delete (defined in ne::Pipeline)ne::Pipeline
operator=(const ShaderUser &)=delete (defined in ne::ShaderUser)ne::ShaderUser
Pipeline()=delete (defined in ne::Pipeline)ne::Pipeline
Pipeline(const Pipeline &)=delete (defined in ne::Pipeline)ne::Pipeline
Pipeline(Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration)ne::Pipelineexplicitprotected
pPipelineConfigurationne::Pipelineprivate
pPipelineManagerne::Pipelineprivate
pRendererne::Pipelineprivate
pShaderManagerne::ShaderUserprivate
releaseInternalResources() overridene::VulkanPipelineprotectedvirtual
releaseShader(const std::string &sShaderName) constne::ShaderUserprivate
restoreInternalResources() overridene::VulkanPipelineprotectedvirtual
saveUsedShaderConfiguration(ShaderType shaderType, std::set< ShaderMacro > &&fullConfiguration)ne::Pipelineprotected
setShaderConstants(const std::unordered_map< std::string, size_t > &uintConstantsOffsets)ne::Pipelineprotected
ShaderUser()=delete (defined in ne::ShaderUser)ne::ShaderUser
ShaderUser(const ShaderUser &)=delete (defined in ne::ShaderUser)ne::ShaderUser
ShaderUser(ShaderManager *pShaderManager)ne::ShaderUserprotected
usedShaderConfigurationne::Pipelineprivate
VulkanPipeline()=delete (defined in ne::VulkanPipeline)ne::VulkanPipeline
VulkanPipeline(const VulkanPipeline &)=delete (defined in ne::VulkanPipeline)ne::VulkanPipeline
VulkanPipeline(Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration)ne::VulkanPipelineprivate
~Pipeline() override=default (defined in ne::Pipeline)ne::Pipelinevirtual
~ShaderUser()ne::ShaderUserprotectedvirtual
~VulkanPipeline() override (defined in ne::VulkanPipeline)ne::VulkanPipelinevirtual
+
+ + + + diff --git a/classne_1_1VulkanPipeline.html b/classne_1_1VulkanPipeline.html new file mode 100644 index 000000000..612a557f3 --- /dev/null +++ b/classne_1_1VulkanPipeline.html @@ -0,0 +1,855 @@ + + + + + + + +Nameless Engine: ne::VulkanPipeline Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <VulkanPipeline.h>

+
+Inheritance diagram for ne::VulkanPipeline:
+
+
+ + +ne::Pipeline +ne::ShaderUser + +
+ + + + +

+Classes

struct  InternalResources
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

VulkanPipeline (const VulkanPipeline &)=delete
 
+VulkanPipelineoperator= (const VulkanPipeline &)=delete
 
std::optional< ErrorbindBuffersIfUsed (const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> &vResources, const std::string &sShaderResourceName, VkDescriptorType descriptorType)
 
std::optional< ErrorbindImageIfUsed (GpuResource *pImageResourceToBind, std::string_view sShaderResourceName, VkDescriptorType descriptorType, VkImageLayout imageLayout, VkSampler pSampler)
 
std::pair< std::recursive_mutex, InternalResources > * getInternalResources ()
 
- Public Member Functions inherited from ne::Pipeline
Pipeline (const Pipeline &)=delete
 
+Pipelineoperator= (const Pipeline &)=delete
 
std::optional< std::set< ShaderMacro > > getCurrentShaderConfiguration (ShaderType shaderType)
 
std::variant< size_t, ErrorgetUintConstantOffset (const std::string &sConstantName)
 
std::pair< std::mutex, std::unordered_set< Material * > > * getMaterialsThatUseThisPipeline ()
 
std::string getPipelineIdentifier () const
 
RenderergetRenderer () const
 
const PipelineConfigurationgetConfiguration () const
 
std::pair< std::mutex, std::optional< ShaderConstantsData > > * getShaderConstants ()
 
- Public Member Functions inherited from ne::ShaderUser
ShaderUser (const ShaderUser &)=delete
 
+ShaderUseroperator= (const ShaderUser &)=delete
 
+ + + + + + + + +

+Static Public Member Functions

static std::variant< std::shared_ptr< VulkanPipeline >, ErrorcreateGraphicsPipeline (Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration)
 
static std::variant< std::shared_ptr< VulkanPipeline >, ErrorcreateComputePipeline (Renderer *pRenderer, PipelineManager *pPipelineManager, const std::string &sComputeShaderName)
 
- Static Public Member Functions inherited from ne::Pipeline
static std::string combineShaderNames (std::string_view sVertexShaderName, std::string_view sPixelShaderName, std::string_view sComputeShaderName="")
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual std::optional< ErrorreleaseInternalResources () override
 
virtual std::optional< ErrorrestoreInternalResources () override
 
- Protected Member Functions inherited from ne::Pipeline
 Pipeline (Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration)
 
void saveUsedShaderConfiguration (ShaderType shaderType, std::set< ShaderMacro > &&fullConfiguration)
 
virtual std::optional< ErrorreleaseInternalResources ()=0
 
virtual std::optional< ErrorrestoreInternalResources ()=0
 
void setShaderConstants (const std::unordered_map< std::string, size_t > &uintConstantsOffsets)
 
- Protected Member Functions inherited from ne::ShaderUser
 ShaderUser (ShaderManager *pShaderManager)
 
virtual ~ShaderUser ()
 
bool addShader (const std::string &sShaderName)
 
ShaderPackfindShader (ShaderType shaderType)
 
+ + + + + + + + + + + + + + + +

+Private Member Functions

 VulkanPipeline (Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration)
 
std::optional< ErrorgenerateGraphicsPipeline ()
 
std::optional< ErrorgenerateComputePipelineForShader (const std::string &sComputeShaderName)
 
std::optional< ErrorcreateGraphicsPipeline (VulkanRenderer *pVulkanRenderer, GlslShader *pVertexShader, GlslShader *pFragmentShader, bool bUsePixelBlending)
 
std::optional< ErrorcreateComputePipeline (VulkanRenderer *pVulkanRenderer, GlslShader *pComputeShader)
 
std::optional< ErrorbindFrameDataDescriptors ()
 
std::variant< VkPushConstantRange, ErrordefinePushConstants (const std::unordered_map< std::string, size_t > &pushConstantUintFieldOffsets, const std::unordered_map< std::string, uint32_t, StdStringHash, std::equal_to<> > &resourceBindings)
 
+ + + +

+Private Attributes

std::pair< std::recursive_mutex, InternalResourcesmtxInternalResources
 
+

Detailed Description

+

VkPipeline object wrapper.

+

Constructor & Destructor Documentation

+ +

◆ VulkanPipeline()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ne::VulkanPipeline::VulkanPipeline (RendererpRenderer,
PipelineManagerpPipelineManager,
std::unique_ptr< PipelineConfigurationpPipelineConfiguration 
)
+
+private
+
+

Constructs uninitialized pipeline.

+
Parameters
+ + + + +
pRendererUsed renderer.
pPipelineManagerPipeline manager that owns this pipeline.
pPipelineConfigurationSettings and usage details.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ bindBuffersIfUsed()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::VulkanPipeline::bindBuffersIfUsed (const std::array< GpuResource *, FrameResourceManager::getFrameResourceCount()> & vResources,
const std::string & sShaderResourceName,
VkDescriptorType descriptorType 
)
+
+

Binds the specified GPU resources (buffers, not images) to this pipeline if it uses the specified shader resource.

+
Parameters
+ + + + +
vResourcesResources to bind.
sShaderResourceNameName of the shader resource (name from shader code) to bind to.
descriptorTypeType of the descriptor to bind.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ bindFrameDataDescriptors()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::VulkanPipeline::bindFrameDataDescriptors ()
+
+private
+
+

Binds descriptors that reference "frameData" shader resource to frame resources' uniform buffers.

+
Remarks
Expects that descriptor sets in mtxInternalResources are initialized.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ bindImageIfUsed()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::VulkanPipeline::bindImageIfUsed (GpuResourcepImageResourceToBind,
std::string_view sShaderResourceName,
VkDescriptorType descriptorType,
VkImageLayout imageLayout,
VkSampler pSampler 
)
+
+

Binds the specified GPU resource (image, not buffer) to this pipeline if it uses the specified shader resource.

+
Parameters
+ + + + + + +
pImageResourceToBindImage to bind.
sShaderResourceNameName of the shader resource (name from shader code) to bind to.
descriptorTypeType of the descriptor to bind.
imageLayoutLayout of the image.
pSamplerSampler to use for the image.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ createComputePipeline() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::shared_ptr< VulkanPipeline >, Error > ne::VulkanPipeline::createComputePipeline (RendererpRenderer,
PipelineManagerpPipelineManager,
const std::string & sComputeShaderName 
)
+
+static
+
+

Assigns compute shader to create a compute pipeline.

+
Parameters
+ + + + +
pRendererUsed renderer.
pPipelineManagerPipeline manager that owns this pipeline.
sComputeShaderNameName of the compiled compute shader (see ShaderManager::compileShaders).
+
+
+
Returns
Error if shader was not found in ShaderManager or if failed to generate pipeline, otherwise created pipeline.
+ +
+
+ +

◆ createComputePipeline() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::VulkanPipeline::createComputePipeline (VulkanRendererpVulkanRenderer,
GlslShaderpComputeShader 
)
+
+private
+
+

Fully initializes mtxInternalResources by creating a compute pipeline for the specified shader.

+
Parameters
+ + + +
pVulkanRendererVulkan renderer.
pComputeShaderCompute shader to use in the pipeline.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ createGraphicsPipeline() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::shared_ptr< VulkanPipeline >, Error > ne::VulkanPipeline::createGraphicsPipeline (RendererpRenderer,
PipelineManagerpPipelineManager,
std::unique_ptr< PipelineConfigurationpPipelineConfiguration 
)
+
+static
+
+

Assigns vertex and pixel shaders to create a graphics pipeline (for usual rendering).

+
Parameters
+ + + + +
pRendererUsed renderer.
pPipelineManagerPipeline manager that owns this pipeline.
pPipelineConfigurationSettings that determine pipeline usage and usage details.
+
+
+
Returns
Error if one or both were not found in ShaderManager or if failed to generate pipeline, otherwise created pipeline.
+ +
+
+ +

◆ createGraphicsPipeline() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::VulkanPipeline::createGraphicsPipeline (VulkanRendererpVulkanRenderer,
GlslShaderpVertexShader,
GlslShaderpFragmentShader,
bool bUsePixelBlending 
)
+
+private
+
+

Fully initializes mtxInternalResources by creating a graphics pipeline for the specified shaders.

+
Parameters
+ + + + + +
pVulkanRendererVulkan renderer.
pVertexShaderVertex shader to use in the pipeline.
pFragmentShaderFragment shader to use in the pipeline. Specify nullptr if you want to create depth only pipeline (used for z-prepass).
bUsePixelBlendingWhether the pipeline should use blending or not (for transparency).
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ definePushConstants()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::variant< VkPushConstantRange, Error > ne::VulkanPipeline::definePushConstants (const std::unordered_map< std::string, size_t > & pushConstantUintFieldOffsets,
const std::unordered_map< std::string, uint32_t, StdStringHash, std::equal_to<> > & resourceBindings 
)
+
+private
+
+

Initializes internal push constants manager and returns push constants description.

+
Parameters
+ + + +
pushConstantUintFieldOffsetsStores pairs of "name of field defined in GLSL push constants" (all with uint type) and "offset from the beginning of the push constants struct +(in `uint`s not bytes)".
resourceBindingsMap of pairs "resource name" (from GLSL code) - "layout +binding index".
+
+
+
Returns
Error if something went wrong, otherwise push constants range.
+ +
+
+ +

◆ generateComputePipelineForShader()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::VulkanPipeline::generateComputePipelineForShader (const std::string & sComputeShaderName)
+
+private
+
+

(Re)generates Vulkan compute pipeline and pipeline layout for the specified shader.

+
Warning
If a shader of some type was already added it will be replaced with the new one. When shader is replaced the old shader gets freed from the memory and a new pipeline is immediately generated. Make sure the GPU is not using old shader/pipeline.
+
Parameters
+ + +
sComputeShaderNameName of the compiled compute shader (see ShaderManager::compileShaders).
+
+
+
Returns
Error if failed to generate pipeline.
+ +
+
+ +

◆ generateGraphicsPipeline()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::VulkanPipeline::generateGraphicsPipeline ()
+
+private
+
+

(Re)generates Vulkan pipeline and pipeline layout.

+
Warning
If a shader of some type was already added it will be replaced with the new one. When shader is replaced the old shader gets freed from the memory and a new pipeline is immediately generated. Make sure the GPU is not using old shader/pipeline.
+
Returns
Error if failed to generate pipeline.
+ +
+
+ +

◆ getInternalResources()

+ +
+
+ + + + + +
+ + + + + + + +
std::pair< std::recursive_mutex, InternalResources > * ne::VulkanPipeline::getInternalResources ()
+
+inline
+
+

Returns internal resources that this pipeline uses.

+
Returns
Internal resources.
+ +
+
+ +

◆ releaseInternalResources()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::VulkanPipeline::releaseInternalResources ()
+
+overrideprotectedvirtual
+
+

Releases internal resources such as root signature or descriptor layout, internal pipeline object and etc.

+
Warning
Expects that the GPU is not referencing this Pipeline (command queue is empty) and that no drawing will occur until restoreInternalResources is called.
+
Remarks
Typically used before (!) changing something in the pipeline. Often it's a shader configuration change due to a change in some settings, for example when a material that uses this pipeline requested to use a diffuse texture, thus we need to define a "use diffuse texture" shader macro and for that we change the shader variant.
+
Returns
Error if something went wrong.
+ +

Implements ne::Pipeline.

+ +
+
+ +

◆ restoreInternalResources()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::VulkanPipeline::restoreInternalResources ()
+
+overrideprotectedvirtual
+
+

Creates internal resources using the current shader configuration.

+
Remarks
Called after releaseInternalResources to create resources that will now reference changed (new) resources.
+
Returns
Error if something went wrong.
+ +

Implements ne::Pipeline.

+ +
+
+

Member Data Documentation

+ +

◆ mtxInternalResources

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, InternalResources> ne::VulkanPipeline::mtxInternalResources
+
+private
+
+

Internal resources. Must be used with mutex when changing.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/vulkan/pipeline/VulkanPipeline.h
  • +
  • src/engine_lib/private/render/vulkan/pipeline/VulkanPipeline.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1VulkanPipeline.js b/classne_1_1VulkanPipeline.js new file mode 100644 index 000000000..1d4f59429 --- /dev/null +++ b/classne_1_1VulkanPipeline.js @@ -0,0 +1,19 @@ +var classne_1_1VulkanPipeline = +[ + [ "InternalResources", "structne_1_1VulkanPipeline_1_1InternalResources.html", "structne_1_1VulkanPipeline_1_1InternalResources" ], + [ "VulkanPipeline", "classne_1_1VulkanPipeline.html#ae0287419c4562b26ff727a12ab84a79c", null ], + [ "bindBuffersIfUsed", "classne_1_1VulkanPipeline.html#a76f1504c355cc84ea78c071a8e9d0e2a", null ], + [ "bindFrameDataDescriptors", "classne_1_1VulkanPipeline.html#a521a3000b4791af8f8273c8a01126bc9", null ], + [ "bindImageIfUsed", "classne_1_1VulkanPipeline.html#a3d56db292e08242cea53ecb59443f627", null ], + [ "createComputePipeline", "classne_1_1VulkanPipeline.html#a8c03e8298ec83e5a95148abc77937bae", null ], + [ "createComputePipeline", "classne_1_1VulkanPipeline.html#a7ec3cb31b77a830a626f9956fcfad663", null ], + [ "createGraphicsPipeline", "classne_1_1VulkanPipeline.html#a124250d5c8831bc3edee3d4f64af4954", null ], + [ "createGraphicsPipeline", "classne_1_1VulkanPipeline.html#a8cebaf1166f0e6b1c4cdf97878898f0a", null ], + [ "definePushConstants", "classne_1_1VulkanPipeline.html#a4f870a6a2501b7eb449fe47928e29039", null ], + [ "generateComputePipelineForShader", "classne_1_1VulkanPipeline.html#a71297686d899c8de2f12c4874b955806", null ], + [ "generateGraphicsPipeline", "classne_1_1VulkanPipeline.html#a271ed56d31af0e20e6f1a4b396931e31", null ], + [ "getInternalResources", "classne_1_1VulkanPipeline.html#a3433d274f84a57bca9149c23aaebfe40", null ], + [ "releaseInternalResources", "classne_1_1VulkanPipeline.html#a1e5ef7c56fa62ee2c66245e9d29ef6d9", null ], + [ "restoreInternalResources", "classne_1_1VulkanPipeline.html#a9e94d5f9478270ae6ba80bafba14db5b", null ], + [ "mtxInternalResources", "classne_1_1VulkanPipeline.html#a08db272e8993e637b9eef09c00664e72", null ] +]; \ No newline at end of file diff --git a/classne_1_1VulkanPipeline.png b/classne_1_1VulkanPipeline.png new file mode 100644 index 0000000000000000000000000000000000000000..398b06caaacfb1e7e4ff93c0a19e3dccd7914f62 GIT binary patch literal 762 zcmeAS@N?(olHy`uVBq!ia0vp^B|zN4!3-oBMeNIglyrbki0l9V|AEXGZ@!lHA6jl< zpjjX>{mhF42Mz$mgC|{H0hHq`3GxeO0P?}WoN4wI1_q{9PZ!6K3dXl{6N_Fe@U%=% zJ+}Dw{2!KlWd7cY(@Vw+}FEQ)d`Nxiv+|Hi3 z_I9zytTN7B&x@LuT@5q5zBKRIwfAT1U*^`U-a5AR_lt%8?oUm=Z-2h3Zr!)OaM`)|KfV*UDa2 z_%D3smz!YhylIzd5C!FE5tMXs6@}AUzXm-Ob%5DaSU7_3gA`t?-Lp5$7~1Onh$H*QD6Y&El_q zJboN{VY2rBX^(SH1xreYt_Mmh|2?jMN&Wv!l~8UC&s~}eR9-IIy}^pP3Rq}24{kW4g** z`|SGh)m%5;{E@NRb$R>o>{ouRxqN3MLoXkDxuU8xtv!B8_DLo!rANyex;l2e)XVVF c^u1;uuV2nl-tcHSFqJZRy85}Sb4q9e0FMx1^8f$< literal 0 HcmV?d00001 diff --git a/classne_1_1VulkanRenderer-members.html b/classne_1_1VulkanRenderer-members.html new file mode 100644 index 000000000..bada8ec84 --- /dev/null +++ b/classne_1_1VulkanRenderer-members.html @@ -0,0 +1,320 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::VulkanRenderer Member List
+
+
+ +

This is the complete list of members for ne::VulkanRenderer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bIsBeingDestroyedne::VulkanRendererprivate
bIsUsingMsaaRenderTargetne::VulkanRendererprivate
bIsVulkanInitializedne::VulkanRendererprivate
bIsWindowMinimizedne::Rendererprivate
bNeedToRecreateSwapchainne::VulkanRendererprivate
calculateFrameStatistics()ne::Rendererprivate
clampSettingsToMaxSupported()ne::Rendererprotected
compileEngineShaders() constne::Rendererprotected
create(GameManager *pGameManager, const std::vector< std::string > &vBlacklistedGpuNames)ne::VulkanRendererstatic
ne::Renderer::create(GameManager *pGameManager, std::optional< RendererType > preferredRenderer)ne::Rendererstatic
createCommandPool()ne::VulkanRendererprivate
createComputeTextureSampler()ne::VulkanRendererprivate
createDepthImage()ne::VulkanRendererprivate
createDepthOnlyRenderPass()ne::VulkanRendererprivate
createLogicalDevice()ne::VulkanRendererprivate
createMainRenderPass()ne::VulkanRendererprivate
createMsaaImage()ne::VulkanRendererprivate
createOneTimeSubmitCommandBuffer()ne::VulkanRenderer
createRenderer(GameManager *pGameManager, std::optional< RendererType > preferredRenderer)ne::Rendererprivatestatic
createRenderer(RendererType type, GameManager *pGameManager, const std::vector< std::string > &vBlacklistedGpuNames)ne::Rendererprivatestatic
createRenderPasses(bool bIsRendererInitialization)ne::VulkanRendererprivate
createShadowMappingRenderPasses()ne::VulkanRendererprivate
createShadowTextureSampler()ne::VulkanRendererprivate
createSwapChain()ne::VulkanRendererprivate
createSwapChainFramebuffers()ne::VulkanRendererprivate
createTextureSampler()ne::VulkanRendererprivate
createVulkanInstance()ne::VulkanRendererprivate
createWindowSurface()ne::VulkanRendererprivate
cullLightsOutsideCameraFrustum(CameraProperties *pActiveCameraProperties, size_t iCurrentFrameResourceIndex)ne::Rendererprotected
depthImageFormatne::VulkanRendererprivatestatic
depthImageTilingne::VulkanRendererprivatestatic
depthResolveModene::VulkanRendererprivatestatic
destroySwapChainAndDependentResources(bool bDestroyPipelineManager)ne::VulkanRendererprivate
dispatchComputeShadersOnGraphicsQueue(VulkanFrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, std::unordered_map< Pipeline *, std::unordered_set< ComputeShaderInterface * > > &computePipelinesToSubmit)ne::VulkanRendererprivatestatic
drawMeshesDepthPrepass(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vOpaquePipelines) overridene::VulkanRendererprivatevirtual
drawMeshesMainPass(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vOpaquePipelines, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vTransparentPipelines) overridene::VulkanRendererprivatevirtual
drawMeshesMainPassSpecificPipelines(const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &pipelinesOfSpecificType, VkCommandBuffer pCommandBuffer, size_t iCurrentFrameResourceIndex)ne::VulkanRendererprivate
drawNextFrame()ne::Rendererprotected
drawShadowMappingPass(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, GraphicsPipelineRegistry *pGraphicsPipelines) overridene::VulkanRendererprivatevirtual
executeComputeShadersOnGraphicsQueue(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, ComputeExecutionStage stage) overridene::VulkanRendererprivatevirtual
getCommandPool() constne::VulkanRenderer
getComputeTextureSampler() constne::VulkanRenderer
getCurrentlyUsedGpuName() const overridene::VulkanRenderervirtual
getDepthImageFormat()ne::VulkanRendererinlinestatic
getDepthOnlyRenderPass() constne::VulkanRenderer
getDepthTextureNoMultisampling() overridene::VulkanRenderervirtual
getDirectionalLightNodeShadowMappingInfo(DirectionalLightNode *pNode, ShadowMapHandle *&pShadowMapHandle, unsigned int &iShadowPassLightInfoArrayIndex)ne::Rendererprotectedstatic
getDrawCallCounter()ne::Rendererinlineprotected
getFrameConstants()ne::Rendererinlineprotected
getFrameResourceManager() constne::Renderer
getGameManager() constne::Renderer
getGlobalShaderResourceBindingManager() constne::Renderer
getGraphicsQueue() constne::VulkanRenderer
getInstance() constne::VulkanRenderer
getLightingShaderResourceManager() constne::Renderer
getLogicalDevice() constne::VulkanRenderer
getMainRenderPass() constne::VulkanRenderer
getMaxDepth()ne::Rendererinlinestatic
getMaxSupportedAntialiasingQuality() const overridene::VulkanRendererprotectedvirtual
getMeshesInCameraFrustum(CameraProperties *pActiveCameraProperties, GraphicsPipelineRegistry *pGraphicsPipelines)ne::Rendererprotected
getMinDepth()ne::Rendererinlinestatic
getMsaaSampleCount() constne::VulkanRenderer
getPhysicalDevice() constne::VulkanRenderer
getPipelineManager() constne::Renderer
getPointLightNodeShadowMapHandle(PointLightNode *pNode)ne::Rendererprotectedstatic
getPointLightShadowPassLightInfoArrayIndex(PointLightNode *pNode, size_t iCubemapFaceIndex)ne::Rendererprotectedstatic
getRecommendedSwapChainBufferCount()ne::Rendererinlineprotectedstatic
getRenderResourcesMutex()ne::Renderer
getRenderSettings()ne::Renderer
getRenderStatistics()ne::Renderer
getRenderTargetSize() const overridene::VulkanRenderervirtual
getRequiredVulkanInstanceExtensions()ne::VulkanRendererprivatestatic
getResourceManager() constne::Renderer
getShaderConfiguration()ne::Renderer
getShaderCpuWriteResourceManager() constne::Renderer
getShaderManager() constne::Renderer
getShaderTextureResourceManager() constne::Renderer
getShadowMapFormat()ne::VulkanRendererinlinestatic
getShadowMappingPointLightColorTargetFormat()ne::VulkanRendererinlinestatic
getShadowMappingRenderPass(bool bIsForPointLights) constne::VulkanRenderer
getShadowTextureSampler() constne::VulkanRenderer
getSpotlightNodeShadowMappingInfo(SpotlightNode *pNode, ShadowMapHandle *&pShadowMapHandle, unsigned int &iShadowPassLightInfoArrayIndex)ne::Rendererprotectedstatic
getSupportedGpuNames() const overridene::VulkanRenderervirtual
getSupportedRefreshRates() const overridene::VulkanRenderervirtual
getSupportedRenderResolutions() const overridene::VulkanRenderervirtual
getSwapChainExtent() constne::VulkanRenderer
getTextureSampler()ne::VulkanRenderer
getTotalVideoMemoryInMb() constne::Renderer
getType() const overridene::VulkanRenderervirtual
getUsedApiVersion() const overridene::VulkanRenderervirtual
getUsedVideoMemoryInMb() constne::Renderer
getUsedVulkanVersion()ne::VulkanRendererstatic
getWindow() constne::Renderer
iCurrentImageSemaphorene::VulkanRendererprivate
iDepthOnlyRenderPassDepthImageAttachmentIndexne::VulkanRendererprivatestatic
iDepthOnlyRenderPassDepthResolveTargetAttachmentIndexne::VulkanRendererprivatestatic
iLastAcquiredImageIndexne::VulkanRendererprivate
iMainRenderPassColorAttachmentIndexne::VulkanRendererprivatestatic
iMainRenderPassColorResolveTargetAttachmentIndexne::VulkanRendererprivatestatic
iMainRenderPassDepthAttachmentIndexne::VulkanRendererprivatestatic
indexTypeFormatne::VulkanRendererprivatestatic
initialize(const std::vector< std::string > &vBlacklistedGpuNames)ne::VulkanRendererprivate
initializeRenderer()ne::Rendererprotected
initializeRenderSettings()ne::Rendererprivate
initializeResourceManagers()ne::Rendererprotected
initializeVulkan(const std::vector< std::string > &vBlacklistedGpuNames)ne::VulkanRendererprivate
iRecommendedSwapChainBufferCountne::Rendererprivatestatic
isDeviceSuitable(VkPhysicalDevice pGpu)ne::VulkanRendererprivate
isGpuSupportsSwapChain(VkPhysicalDevice pGpu)ne::VulkanRendererprivate
isGpuSupportsUsedDeviceExtensions(VkPhysicalDevice pGpuDevice)ne::VulkanRendererprivatestatic
isInitialized() const overridene::VulkanRendererprotectedvirtual
isUsedDepthImageFormatSupported()ne::VulkanRendererprivate
iSwapChainImageCountne::VulkanRendererprivate
iUsedVulkanVersionne::VulkanRendererprivatestatic
maxDepthne::Rendererprivatestatic
meshesInFrustumLastFramene::Rendererprivate
minDepthne::Rendererprivatestatic
msaaSampleCountne::VulkanRendererprivate
mtxFrameConstantsne::Rendererprivate
mtxRenderSettingsne::Rendererprivate
mtxRwRenderResourcesne::Rendererprivate
mtxShaderConfigurationne::Rendererprivate
mtxSpawnedEnvironmentNodene::Rendererprivate
onActiveCameraChanged()ne::Rendererprivate
onFramebufferSizeChanged(int iWidth, int iHeight)ne::Rendererprotected
onFramebufferSizeChangedDerived(int iWidth, int iHeight) overridene::VulkanRendererprotectedvirtual
onRenderSettingsChanged(bool bShadowMapSizeChanged=false)ne::Rendererprotected
onRenderSettingsChangedDerived() overridene::VulkanRendererprotectedvirtual
operator=(const VulkanRenderer &)=delete (defined in ne::VulkanRenderer)ne::VulkanRenderer
operator=(const Renderer &)=delete (defined in ne::Renderer)ne::Renderer
pCommandPoolne::VulkanRendererprivate
pComputeTextureSamplerne::VulkanRendererprivate
pDepthImagene::VulkanRendererprivate
pDepthImageNoMultisamplingne::VulkanRendererprivate
pDepthOnlyRenderPassne::VulkanRendererprivate
pFrameResourceManagerne::Rendererprivate
pGameManagerne::Rendererprivate
pGlobalShaderResourceBindingManagerne::Rendererprivate
pGraphicsQueuene::VulkanRendererprivate
physicalDeviceQueueFamilyIndicesne::VulkanRendererprivate
pickPhysicalDevice(const std::vector< std::string > &vBlacklistedGpuNames)ne::VulkanRendererprivate
pickSwapChainExtent(const VkSurfaceCapabilitiesKHR &surfaceCapabilities)ne::VulkanRendererprivate
pInstancene::VulkanRendererprivate
pLightingShaderResourceManagerne::Rendererprivate
pLogicalDevicene::VulkanRendererprivate
pMainRenderPassne::VulkanRendererprivate
pMsaaImagene::VulkanRendererprivate
pPhysicalDevicene::VulkanRendererprivate
pPipelineManagerne::Rendererprivate
pPresentQueuene::VulkanRendererprivate
prepareForDrawingNextFrame(CameraProperties *pCameraProperties, FrameResource *pCurrentFrameResource) overridene::VulkanRendererprivatevirtual
prepareRenderTargetForNextFrame() overridene::VulkanRendererprivatevirtual
present(FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex) overridene::VulkanRendererprivatevirtual
pResourceManagerne::Rendererprivate
pShaderCpuWriteResourceManagerne::Rendererprivate
pShaderManagerne::Rendererprivate
pShaderTextureResourceManagerne::Rendererprivate
pShadowMappingDirectionalSpotRenderPassne::VulkanRendererprivate
pShadowMappingPointRenderPassne::VulkanRendererprivate
pShadowTextureSamplerne::VulkanRendererprivate
pSwapChainne::VulkanRendererprivate
pTextureSamplerne::VulkanRendererprivate
pWindowSurfacene::VulkanRendererprivate
queryQueueFamilyIndices(VkPhysicalDevice pGpu)ne::VulkanRendererprivate
querySwapChainSupportDetails(VkPhysicalDevice pGpu)ne::VulkanRendererprivate
rateGpuSuitability(VkPhysicalDevice pGpuDevice)ne::VulkanRendererprivate
recalculateLightTileFrustums()ne::Rendererprotected
recreateSwapChainAndDependentResources()ne::VulkanRendererprivate
Renderer()=delete (defined in ne::Renderer)ne::Renderer
Renderer(const Renderer &)=delete (defined in ne::Renderer)ne::Renderer
Renderer(GameManager *pGameManager)ne::Rendererprotected
renderStatsne::Rendererprivate
resetFrameResourceManager()ne::Rendererprotected
resetGpuResourceManager()ne::Rendererprotected
resetLightingShaderResourceManager()ne::Rendererprotected
resetPipelineManager()ne::Rendererprotected
setObjectDebugOnlyName(Renderer *pRenderer, void *pObject, VkObjectType objectType, const std::string &sResourceName)ne::VulkanRendererstatic
setupRenderStats()ne::Rendererprivate
shadowMapFormatne::VulkanRendererprivatestatic
shadowMappingPointLightColorTargetFormatne::VulkanRendererprivatestatic
startDepthOnlyRenderPass(VkCommandBuffer pCommandBuffer, size_t iAcquiredImageIndex)ne::VulkanRendererprivate
startMainRenderPass(VkCommandBuffer pCommandBuffer, size_t iAcquiredImageIndex)ne::VulkanRendererprivate
startShadowMappingRenderPass(VkRenderPass pShadowMappingRenderPass, VkCommandBuffer pCommandBuffer, VkFramebuffer pFramebufferToUse, uint32_t iShadowMapSize)ne::VulkanRendererprivatestatic
stencilResolveModene::VulkanRendererprivatestatic
submitWaitDestroyOneTimeSubmitCommandBuffer(VkCommandBuffer pOneTimeSubmitCommandBuffer)ne::VulkanRenderer
sUsedGpuNamene::VulkanRendererprivate
swapChainExtentne::VulkanRendererprivate
swapChainImageColorSpacene::VulkanRendererprivatestatic
swapChainImageFormatne::VulkanRendererprivatestatic
transitionImageLayout(VkImage pImage, VkFormat imageFormat, VkImageAspectFlags aspect, uint32_t levelCount, uint32_t layerCount, VkImageLayout oldLayout, VkImageLayout newLayout)ne::VulkanRenderer
updateFrameConstantsBuffer(FrameResource *pCurrentFrameResource, CameraProperties *pCameraProperties)ne::Rendererprotected
updateMsaaSampleCount()ne::VulkanRendererprivate
updateResourcesForNextFrame(unsigned int iRenderTargetWidth, unsigned int iRenderTargetHeight, CameraProperties *pCameraProperties)ne::Rendererprivate
updateShaderConfiguration()ne::Rendererprivate
updateTargetTimeToRenderFrame()ne::Rendererprivate
vImageSemaphoresne::VulkanRendererprivate
vSupportedGpuNamesne::VulkanRendererprivate
vSwapChainFramebuffersDepthOnlyRenderPassne::VulkanRendererprivate
vSwapChainFramebuffersMainRenderPassne::VulkanRendererprivate
vSwapChainImageFenceRefsne::VulkanRendererprivate
vSwapChainImagesne::VulkanRendererprivate
vSwapChainImageViewsne::VulkanRendererprivate
VulkanRenderer()=delete (defined in ne::VulkanRenderer)ne::VulkanRenderer
VulkanRenderer(const VulkanRenderer &)=delete (defined in ne::VulkanRenderer)ne::VulkanRenderer
VulkanRenderer(GameManager *pGameManager)ne::VulkanRendererprotected
vUsedDeviceExtensionNamesne::VulkanRendererinlineprivatestatic
waitForGpuToFinishUsingFrameResource(FrameResource *pFrameResource) overridene::VulkanRendererprotectedvirtual
waitForGpuToFinishWorkUpToThisPoint() overridene::VulkanRenderervirtual
~Renderer() (defined in ne::Renderer)ne::Renderervirtual
~VulkanRenderer() override (defined in ne::VulkanRenderer)ne::VulkanRenderervirtual
+
+ + + + diff --git a/classne_1_1VulkanRenderer.html b/classne_1_1VulkanRenderer.html new file mode 100644 index 000000000..1ed54ae9f --- /dev/null +++ b/classne_1_1VulkanRenderer.html @@ -0,0 +1,4352 @@ + + + + + + + +Nameless Engine: ne::VulkanRenderer Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <VulkanRenderer.h>

+
+Inheritance diagram for ne::VulkanRenderer:
+
+
+ + +ne::Renderer + +
+ + + + + + + + +

+Classes

struct  QueueFamilyIndices
 
struct  SwapChainImageSemaphores
 
struct  SwapChainSupportDetails
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

VulkanRenderer (const VulkanRenderer &)=delete
 
+VulkanRendereroperator= (const VulkanRenderer &)=delete
 
VkSampler getTextureSampler ()
 
virtual std::vector< std::string > getSupportedGpuNames () const override
 
virtual std::variant< std::set< std::pair< unsigned int, unsigned int > >, ErrorgetSupportedRenderResolutions () const override
 
virtual std::variant< std::set< std::pair< unsigned int, unsigned int > >, ErrorgetSupportedRefreshRates () const override
 
virtual RendererType getType () const override
 
virtual std::string getUsedApiVersion () const override
 
virtual std::string getCurrentlyUsedGpuName () const override
 
virtual void waitForGpuToFinishWorkUpToThisPoint () override
 
std::variant< VkCommandBuffer, ErrorcreateOneTimeSubmitCommandBuffer ()
 
std::optional< ErrorsubmitWaitDestroyOneTimeSubmitCommandBuffer (VkCommandBuffer pOneTimeSubmitCommandBuffer)
 
std::optional< ErrortransitionImageLayout (VkImage pImage, VkFormat imageFormat, VkImageAspectFlags aspect, uint32_t levelCount, uint32_t layerCount, VkImageLayout oldLayout, VkImageLayout newLayout)
 
virtual std::pair< unsigned int, unsigned int > getRenderTargetSize () const override
 
VkDevice getLogicalDevice () const
 
VkPhysicalDevice getPhysicalDevice () const
 
VkInstance getInstance () const
 
VkRenderPass getMainRenderPass () const
 
VkRenderPass getDepthOnlyRenderPass () const
 
VkRenderPass getShadowMappingRenderPass (bool bIsForPointLights) const
 
VkCommandPool getCommandPool () const
 
VkQueue getGraphicsQueue () const
 
VkSampler getComputeTextureSampler () const
 
VkSampler getShadowTextureSampler () const
 
std::optional< VkExtent2D > getSwapChainExtent () const
 
VkSampleCountFlagBits getMsaaSampleCount () const
 
virtual GpuResourcegetDepthTextureNoMultisampling () override
 
- Public Member Functions inherited from ne::Renderer
Renderer (const Renderer &)=delete
 
+Rendereroperator= (const Renderer &)=delete
 
virtual std::vector< std::string > getSupportedGpuNames () const =0
 
virtual std::variant< std::set< std::pair< unsigned int, unsigned int > >, ErrorgetSupportedRenderResolutions () const =0
 
virtual std::variant< std::set< std::pair< unsigned int, unsigned int > >, ErrorgetSupportedRefreshRates () const =0
 
virtual RendererType getType () const =0
 
virtual std::string getUsedApiVersion () const =0
 
std::pair< std::recursive_mutex *, RenderSettings * > getRenderSettings ()
 
RenderStatisticsgetRenderStatistics ()
 
virtual std::string getCurrentlyUsedGpuName () const =0
 
size_t getTotalVideoMemoryInMb () const
 
size_t getUsedVideoMemoryInMb () const
 
virtual void waitForGpuToFinishWorkUpToThisPoint ()=0
 
std::pair< std::recursive_mutex, std::unique_ptr< ShaderConfiguration > > * getShaderConfiguration ()
 
virtual std::pair< unsigned int, unsigned int > getRenderTargetSize () const =0
 
WindowgetWindow () const
 
GameManagergetGameManager () const
 
ShaderManagergetShaderManager () const
 
PipelineManagergetPipelineManager () const
 
GpuResourceManagergetResourceManager () const
 
FrameResourceManagergetFrameResourceManager () const
 
ShaderCpuWriteResourceBindingManagergetShaderCpuWriteResourceManager () const
 
ShaderTextureResourceBindingManagergetShaderTextureResourceManager () const
 
LightingShaderResourceManagergetLightingShaderResourceManager () const
 
GlobalShaderResourceBindingManagergetGlobalShaderResourceBindingManager () const
 
std::recursive_mutex * getRenderResourcesMutex ()
 
virtual GpuResourcegetDepthTextureNoMultisampling ()=0
 
+ + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static uint32_t getUsedVulkanVersion ()
 
static constexpr VkFormat getDepthImageFormat ()
 
static constexpr VkFormat getShadowMapFormat ()
 
static constexpr VkFormat getShadowMappingPointLightColorTargetFormat ()
 
static std::variant< std::unique_ptr< Renderer >, std::pair< Error, std::string > > create (GameManager *pGameManager, const std::vector< std::string > &vBlacklistedGpuNames)
 
static void setObjectDebugOnlyName (Renderer *pRenderer, void *pObject, VkObjectType objectType, const std::string &sResourceName)
 
- Static Public Member Functions inherited from ne::Renderer
static constexpr float getMinDepth ()
 
static constexpr float getMaxDepth ()
 
static std::variant< std::unique_ptr< Renderer >, Errorcreate (GameManager *pGameManager, std::optional< RendererType > preferredRenderer)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

 VulkanRenderer (GameManager *pGameManager)
 
virtual std::variant< AntialiasingQuality, ErrorgetMaxSupportedAntialiasingQuality () const override
 
virtual void onFramebufferSizeChangedDerived (int iWidth, int iHeight) override
 
virtual std::optional< ErroronRenderSettingsChangedDerived () override
 
virtual void waitForGpuToFinishUsingFrameResource (FrameResource *pFrameResource) override
 
virtual bool isInitialized () const override
 
- Protected Member Functions inherited from ne::Renderer
 Renderer (GameManager *pGameManager)
 
std::optional< ErrorcompileEngineShaders () const
 
void updateFrameConstantsBuffer (FrameResource *pCurrentFrameResource, CameraProperties *pCameraProperties)
 
void resetGpuResourceManager ()
 
void resetPipelineManager ()
 
void resetFrameResourceManager ()
 
void resetLightingShaderResourceManager ()
 
virtual std::variant< AntialiasingQuality, ErrorgetMaxSupportedAntialiasingQuality () const =0
 
void onFramebufferSizeChanged (int iWidth, int iHeight)
 
virtual void onFramebufferSizeChangedDerived (int iWidth, int iHeight)
 
void drawNextFrame ()
 
virtual void prepareRenderTargetForNextFrame ()
 
virtual void prepareForDrawingNextFrame (CameraProperties *pCameraProperties, FrameResource *pCurrentFrameResource)=0
 
virtual void drawShadowMappingPass (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, GraphicsPipelineRegistry *pGraphicsPipelines)=0
 
virtual void drawMeshesDepthPrepass (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vOpaquePipelines)=0
 
virtual void executeComputeShadersOnGraphicsQueue (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, ComputeExecutionStage stage)=0
 
virtual void drawMeshesMainPass (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vOpaquePipelines, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vTransparentPipelines)=0
 
virtual void present (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex)=0
 
std::optional< ErroronRenderSettingsChanged (bool bShadowMapSizeChanged=false)
 
virtual std::optional< ErroronRenderSettingsChangedDerived ()=0
 
virtual void waitForGpuToFinishUsingFrameResource (FrameResource *pFrameResource)=0
 
virtual bool isInitialized () const =0
 
std::optional< ErrorinitializeRenderer ()
 
std::optional< ErrorinitializeResourceManagers ()
 
std::optional< ErrorclampSettingsToMaxSupported ()
 
std::optional< ErrorrecalculateLightTileFrustums ()
 
MeshesInFrustumgetMeshesInCameraFrustum (CameraProperties *pActiveCameraProperties, GraphicsPipelineRegistry *pGraphicsPipelines)
 
void cullLightsOutsideCameraFrustum (CameraProperties *pActiveCameraProperties, size_t iCurrentFrameResourceIndex)
 
std::pair< std::mutex, FrameConstants > * getFrameConstants ()
 
std::atomic< size_t > * getDrawCallCounter ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

std::optional< Errorinitialize (const std::vector< std::string > &vBlacklistedGpuNames)
 
std::optional< ErrorinitializeVulkan (const std::vector< std::string > &vBlacklistedGpuNames)
 
std::optional< ErrorcreateVulkanInstance ()
 
std::optional< ErrorcreateWindowSurface ()
 
size_t rateGpuSuitability (VkPhysicalDevice pGpuDevice)
 
std::variant< std::string, ErrorisDeviceSuitable (VkPhysicalDevice pGpu)
 
std::variant< SwapChainSupportDetails, ErrorquerySwapChainSupportDetails (VkPhysicalDevice pGpu)
 
std::variant< VulkanRenderer::QueueFamilyIndices, ErrorqueryQueueFamilyIndices (VkPhysicalDevice pGpu)
 
std::variant< std::string, ErrorisGpuSupportsSwapChain (VkPhysicalDevice pGpu)
 
std::optional< ErrorpickPhysicalDevice (const std::vector< std::string > &vBlacklistedGpuNames)
 
std::optional< ErrorcreateLogicalDevice ()
 
std::optional< ErrorcreateSwapChain ()
 
std::optional< ErrorcreateCommandPool ()
 
std::variant< VkExtent2D, ErrorpickSwapChainExtent (const VkSurfaceCapabilitiesKHR &surfaceCapabilities)
 
std::optional< ErrorcreateRenderPasses (bool bIsRendererInitialization)
 
std::optional< ErrorcreateMainRenderPass ()
 
std::optional< ErrorcreateDepthOnlyRenderPass ()
 
std::optional< ErrorcreateShadowMappingRenderPasses ()
 
void destroySwapChainAndDependentResources (bool bDestroyPipelineManager)
 
std::optional< ErrorcreateTextureSampler ()
 
std::optional< ErrorcreateComputeTextureSampler ()
 
std::optional< ErrorcreateShadowTextureSampler ()
 
bool isUsedDepthImageFormatSupported ()
 
std::optional< ErrorcreateDepthImage ()
 
std::optional< ErrorcreateMsaaImage ()
 
std::optional< ErrorrecreateSwapChainAndDependentResources ()
 
std::optional< ErrorcreateSwapChainFramebuffers ()
 
virtual void prepareRenderTargetForNextFrame () override
 
virtual void prepareForDrawingNextFrame (CameraProperties *pCameraProperties, FrameResource *pCurrentFrameResource) override
 
void startMainRenderPass (VkCommandBuffer pCommandBuffer, size_t iAcquiredImageIndex)
 
void startDepthOnlyRenderPass (VkCommandBuffer pCommandBuffer, size_t iAcquiredImageIndex)
 
virtual void drawShadowMappingPass (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, GraphicsPipelineRegistry *pGraphicsPipelines) override
 
virtual void drawMeshesDepthPrepass (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vOpaquePipelines) override
 
virtual void executeComputeShadersOnGraphicsQueue (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, ComputeExecutionStage stage) override
 
virtual void drawMeshesMainPass (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vOpaquePipelines, const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &vTransparentPipelines) override
 
virtual void present (FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex) override
 
void drawMeshesMainPassSpecificPipelines (const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > &pipelinesOfSpecificType, VkCommandBuffer pCommandBuffer, size_t iCurrentFrameResourceIndex)
 
std::optional< ErrorupdateMsaaSampleCount ()
 
+ + + + + + + + + +

+Static Private Member Functions

static std::variant< std::vector< const char * >, ErrorgetRequiredVulkanInstanceExtensions ()
 
static std::variant< std::string, ErrorisGpuSupportsUsedDeviceExtensions (VkPhysicalDevice pGpuDevice)
 
static void startShadowMappingRenderPass (VkRenderPass pShadowMappingRenderPass, VkCommandBuffer pCommandBuffer, VkFramebuffer pFramebufferToUse, uint32_t iShadowMapSize)
 
static bool dispatchComputeShadersOnGraphicsQueue (VulkanFrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, std::unordered_map< Pipeline *, std::unordered_set< ComputeShaderInterface * > > &computePipelinesToSubmit)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

VkInstance pInstance = nullptr
 
VkSurfaceKHR pWindowSurface = nullptr
 
VkPhysicalDevice pPhysicalDevice = nullptr
 
VkDevice pLogicalDevice = nullptr
 
VkQueue pGraphicsQueue = nullptr
 
VkQueue pPresentQueue = nullptr
 
VkSwapchainKHR pSwapChain = nullptr
 
std::unique_ptr< VulkanResourcepDepthImage = nullptr
 
std::unique_ptr< VulkanResourcepDepthImageNoMultisampling = nullptr
 
std::unique_ptr< VulkanResourcepMsaaImage = nullptr
 
VkRenderPass pDepthOnlyRenderPass = nullptr
 
VkRenderPass pMainRenderPass = nullptr
 
VkRenderPass pShadowMappingDirectionalSpotRenderPass = nullptr
 
VkRenderPass pShadowMappingPointRenderPass = nullptr
 
VkCommandPool pCommandPool = nullptr
 
VkSampler pTextureSampler = nullptr
 
VkSampler pComputeTextureSampler = nullptr
 
VkSampler pShadowTextureSampler = nullptr
 
std::vector< VkImage > vSwapChainImages
 
std::vector< VkImageView > vSwapChainImageViews
 
std::vector< VkFramebuffer > vSwapChainFramebuffersMainRenderPass
 
std::vector< VkFramebuffer > vSwapChainFramebuffersDepthOnlyRenderPass
 
std::vector< std::pair< VkFence, size_t > > vSwapChainImageFenceRefs
 
std::vector< SwapChainImageSemaphoresvImageSemaphores
 
size_t iCurrentImageSemaphore = 0
 
std::vector< std::string > vSupportedGpuNames
 
std::string sUsedGpuName
 
QueueFamilyIndices physicalDeviceQueueFamilyIndices
 
std::optional< VkExtent2D > swapChainExtent
 
VkSampleCountFlagBits msaaSampleCount = VK_SAMPLE_COUNT_1_BIT
 
uint32_t iSwapChainImageCount = 0
 
uint32_t iLastAcquiredImageIndex = 0
 
bool bIsVulkanInitialized = false
 
bool bNeedToRecreateSwapchain = false
 
bool bIsUsingMsaaRenderTarget = false
 
bool bIsBeingDestroyed = false
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Private Attributes

static constexpr size_t iMainRenderPassColorAttachmentIndex = 0
 
static constexpr size_t iMainRenderPassDepthAttachmentIndex = 1
 
static constexpr size_t iMainRenderPassColorResolveTargetAttachmentIndex = 2
 
static constexpr size_t iDepthOnlyRenderPassDepthImageAttachmentIndex = 0
 
static constexpr size_t iDepthOnlyRenderPassDepthResolveTargetAttachmentIndex = 1
 
static constexpr auto swapChainImageFormat = VK_FORMAT_B8G8R8A8_UNORM
 
static constexpr auto swapChainImageColorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
 
static constexpr auto depthImageFormat = VK_FORMAT_D32_SFLOAT
 
static constexpr auto shadowMapFormat = VK_FORMAT_D32_SFLOAT
 
static constexpr auto shadowMappingPointLightColorTargetFormat = VK_FORMAT_R32_SFLOAT
 
static constexpr auto depthImageTiling = VK_IMAGE_TILING_OPTIMAL
 
static constexpr auto indexTypeFormat = VK_INDEX_TYPE_UINT32
 
static constexpr auto depthResolveMode = VK_RESOLVE_MODE_MAX_BIT
 
static constexpr auto stencilResolveMode = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT
 
static constexpr uint32_t iUsedVulkanVersion = VK_API_VERSION_1_2
 
static const std::vector< const char * > vUsedDeviceExtensionNames
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Static Protected Member Functions inherited from ne::Renderer
static consteval unsigned int getRecommendedSwapChainBufferCount ()
 
static void getDirectionalLightNodeShadowMappingInfo (DirectionalLightNode *pNode, ShadowMapHandle *&pShadowMapHandle, unsigned int &iShadowPassLightInfoArrayIndex)
 
static void getSpotlightNodeShadowMappingInfo (SpotlightNode *pNode, ShadowMapHandle *&pShadowMapHandle, unsigned int &iShadowPassLightInfoArrayIndex)
 
static unsigned int getPointLightShadowPassLightInfoArrayIndex (PointLightNode *pNode, size_t iCubemapFaceIndex)
 
static ShadowMapHandlegetPointLightNodeShadowMapHandle (PointLightNode *pNode)
 
+

Detailed Description

+

Renderer made with Vulkan API.

+

Constructor & Destructor Documentation

+ +

◆ VulkanRenderer()

+ +
+
+ + + + + +
+ + + + + + + + +
ne::VulkanRenderer::VulkanRenderer (GameManagerpGameManager)
+
+protected
+
+

Creates an empty (uninitialized) renderer.

+
Remarks
Use initialize to initialize the renderer.
+
Parameters
+ + +
pGameManagerGameManager object that owns this renderer.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< Renderer >, std::pair< Error, std::string > > ne::VulkanRenderer::create (GameManagerpGameManager,
const std::vector< std::string > & vBlacklistedGpuNames 
)
+
+static
+
+

Creates a new DirectX renderer.

+
Parameters
+ + + +
pGameManagerGameManager object that owns this renderer.
vBlacklistedGpuNamesNames of GPUs that should not be used, generally this means that these GPUs were previously used to create the renderer but something went wrong.
+
+
+
Returns
Created renderer if successful, otherwise multiple values in a pair: error and a name of the GPU that the renderer tried to use (can be empty if failed before picking a GPU or if all supported GPUs are blacklisted).
+ +
+
+ +

◆ createCommandPool()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::VulkanRenderer::createCommandPool ()
+
+private
+
+

Creates pCommandPool.

+
Warning
Expects pLogicalDevice to be valid.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ createComputeTextureSampler()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::VulkanRenderer::createComputeTextureSampler ()
+
+private
+
+

Creates pComputeTextureSampler.

+
Warning
Expects that pLogicalDevice is valid.
+
+Expected to be called only once so that this sampler will never be re-created.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ createDepthImage()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::VulkanRenderer::createDepthImage ()
+
+private
+
+

Creates pDepthImage.

+
Warning
Expects that GPU resource manager and swapChainExtent are valid.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ createDepthOnlyRenderPass()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::VulkanRenderer::createDepthOnlyRenderPass ()
+
+private
+
+

Creates pDepthOnlyRenderPass (z-prepass) using the current msaaSampleCount.

+
Warning
Expects pLogicalDevice to be valid.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ createLogicalDevice()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::VulkanRenderer::createLogicalDevice ()
+
+private
+
+

Creates pLogicalDevice.

+
Warning
Expects pPhysicalDevice to be valid.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ createMainRenderPass()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::VulkanRenderer::createMainRenderPass ()
+
+private
+
+

Creates pMainRenderPass using the current msaaSampleCount.

+
Warning
Expects pLogicalDevice to be valid.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ createMsaaImage()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::VulkanRenderer::createMsaaImage ()
+
+private
+
+

Creates pMsaaImage using the current msaaSampleCount (does nothing if only 1 sample is used).

+
Warning
Expects that GPU resource manager and swapChainExtent are valid.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ createOneTimeSubmitCommandBuffer()

+ +
+
+ + + + + + + +
std::variant< VkCommandBuffer, Error > ne::VulkanRenderer::createOneTimeSubmitCommandBuffer ()
+
+

Creates a new one-time submit command buffer to be later used with submitWaitDestroyOneTimeSubmitCommandBuffer.

+
Returns
Error if something went wrong, otherwise created command buffer.
+ +
+
+ +

◆ createRenderPasses()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::VulkanRenderer::createRenderPasses (bool bIsRendererInitialization)
+
+private
+
+

Creates render passes using the current msaaSampleCount.

+
Warning
Expects pLogicalDevice to be valid.
+
Parameters
+ + +
bIsRendererInitializationSpecify true if the renderer is doing initialization, false if some render settings (or similar) was changed and the renderer re-creates resources that may depend on changed settings/parameters.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ createShadowMappingRenderPasses()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::VulkanRenderer::createShadowMappingRenderPasses ()
+
+private
+
+

Creates render passes used in shadow mapping.

+
Warning
Expects pLogicalDevice to be valid.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ createShadowTextureSampler()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::VulkanRenderer::createShadowTextureSampler ()
+
+private
+
+

Creates sampler for shadow mapping.

+
Warning
Expects that pLogicalDevice is valid.
+
+Expected to be called only once so that this sampler will never be re-created.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ createSwapChain()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::VulkanRenderer::createSwapChain ()
+
+private
+
+

Creates pSwapChain.

+
Warning
Expects pPhysicalDevice to be valid.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ createSwapChainFramebuffers()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::VulkanRenderer::createSwapChainFramebuffers ()
+
+private
+
+

Creates swap chain framebuffers.

+
Returns
Error if something went wrong.
+ +
+
+ +

◆ createTextureSampler()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::VulkanRenderer::createTextureSampler ()
+
+private
+
+

Creates pTextureSampler using the current texture filtering mode from the render settings.

+
Warning
Expects that pLogicalDevice is valid.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ createVulkanInstance()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::VulkanRenderer::createVulkanInstance ()
+
+private
+
+

Creates Vulkan API instance.

+
Returns
Error if something went wrong.
+ +
+
+ +

◆ createWindowSurface()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::VulkanRenderer::createWindowSurface ()
+
+private
+
+

Creates Vulkan window representation object.

+
Remarks
Should be called after createVulkanInstance but before pickPhysicalDevice as window surface is used when picking a device.
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ destroySwapChainAndDependentResources()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::VulkanRenderer::destroySwapChainAndDependentResources (bool bDestroyPipelineManager)
+
+private
+
+

Destroys swap chain, framebuffers, graphics pipeline, render pass, image views, frees command buffers and other objects that depend on the swap chain images.

+
Parameters
+ + +
bDestroyPipelineManagertrue to destroy the pipeline manager, this is generally used when the renderer is being destroyed, otherwise if you just want to recreate some resources specify false and make sure all pipeline resources were released and will not be restored before this function is finished.
+
+
+ +
+
+ +

◆ dispatchComputeShadersOnGraphicsQueue()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool ne::VulkanRenderer::dispatchComputeShadersOnGraphicsQueue (VulkanFrameResourcepCurrentFrameResource,
size_t iCurrentFrameResourceIndex,
std::unordered_map< Pipeline *, std::unordered_set< ComputeShaderInterface * > > & computePipelinesToSubmit 
)
+
+staticprivate
+
+

Submits compute dispatch commands using pGraphicsQueue.

+
Parameters
+ + + + +
pCurrentFrameResourceCurrent frame resource.
iCurrentFrameResourceIndexIndex of the current frame resource.
computePipelinesToSubmitCompute shaders and their pipelines to dispatch.
+
+
+
Returns
true if dispatched some shaders, false if nothing to dispatch.
+ +
+
+ +

◆ drawMeshesDepthPrepass()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::VulkanRenderer::drawMeshesDepthPrepass (FrameResourcepCurrentFrameResource,
size_t iCurrentFrameResourceIndex,
const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > & vOpaquePipelines 
)
+
+overrideprivatevirtual
+
+

Submits commands to draw meshes and the specified depth only (vertex shader only) pipelines.

+
Parameters
+ + + + +
pCurrentFrameResourceFrame resource of the frame being submitted.
iCurrentFrameResourceIndexIndex of the current frame resource.
vOpaquePipelinesOpaque pipelines (depth pipeline will be retrieved from them).
+
+
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ drawMeshesMainPass()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ne::VulkanRenderer::drawMeshesMainPass (FrameResourcepCurrentFrameResource,
size_t iCurrentFrameResourceIndex,
const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > & vOpaquePipelines,
const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > & vTransparentPipelines 
)
+
+overrideprivatevirtual
+
+

Submits commands to draw meshes for main (color) pass.

+
Parameters
+ + + + + +
pCurrentFrameResourceFrame resource of the frame being submitted.
iCurrentFrameResourceIndexIndex of the current frame resource.
vOpaquePipelinesOpaque pipelines to draw.
vTransparentPipelinesTransparent pipelines to draw.
+
+
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ drawMeshesMainPassSpecificPipelines()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::VulkanRenderer::drawMeshesMainPassSpecificPipelines (const std::vector< Renderer::MeshesInFrustum::PipelineInFrustumInfo > & pipelinesOfSpecificType,
VkCommandBuffer pCommandBuffer,
size_t iCurrentFrameResourceIndex 
)
+
+private
+
+

Submits commands to draw meshes and pipelines of specific types (only opaque or transparent).

+
Parameters
+ + + + +
pipelinesOfSpecificTypePipelines to use.
pCommandBufferCommand buffer to use.
iCurrentFrameResourceIndexIndex of the current frame resource.
+
+
+ +
+
+ +

◆ drawShadowMappingPass()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::VulkanRenderer::drawShadowMappingPass (FrameResourcepCurrentFrameResource,
size_t iCurrentFrameResourceIndex,
GraphicsPipelineRegistrypGraphicsPipelines 
)
+
+overrideprivatevirtual
+
+

Submits commands to draw world from the perspective of all spawned light sources to capture shadow maps.

+
Parameters
+ + + + +
pCurrentFrameResourceFrame resource of the frame being submitted.
iCurrentFrameResourceIndexIndex of the current frame resource.
pGraphicsPipelinesGraphics pipelines to draw.
+
+
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ executeComputeShadersOnGraphicsQueue()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::VulkanRenderer::executeComputeShadersOnGraphicsQueue (FrameResourcepCurrentFrameResource,
size_t iCurrentFrameResourceIndex,
ComputeExecutionStage stage 
)
+
+overrideprivatevirtual
+
+

Executes compute shaders of the specified stage.

+
Warning
Expects that mutex for compute shaders is locked.
+
Parameters
+ + + + +
pCurrentFrameResourceFrame resource of the frame being submitted.
iCurrentFrameResourceIndexIndex of the current frame resource.
stageStage of compute shaders to execute.
+
+
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ getCommandPool()

+ +
+
+ + + + + + + +
VkCommandPool ne::VulkanRenderer::getCommandPool () const
+
+

Returns Vulkan command pool used in the renderer.

+
Returns
nullptr if command pool is not created yet, otherwise used command pool.
+ +
+
+ +

◆ getComputeTextureSampler()

+ +
+
+ + + + + + + +
VkSampler ne::VulkanRenderer::getComputeTextureSampler () const
+
+

Returns Vulkan texture sampler for fetching texels in compute shaders.

+
Remarks
Used for compute shaders that need to read textures.
+
+Guaranteed to never be re-created.
+
Returns
nullptr if not created yet, otherwise valid sampler.
+ +
+
+ +

◆ getCurrentlyUsedGpuName()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ne::VulkanRenderer::getCurrentlyUsedGpuName () const
+
+overridevirtual
+
+

Returns the name of the GPU that is being currently used.

+
Returns
Name of the GPU.
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ getDepthImageFormat()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr VkFormat ne::VulkanRenderer::getDepthImageFormat ()
+
+inlinestaticconstexpr
+
+

Returns format used for depth image.

+
Returns
Format.
+ +
+
+ +

◆ getDepthOnlyRenderPass()

+ +
+
+ + + + + + + +
VkRenderPass ne::VulkanRenderer::getDepthOnlyRenderPass () const
+
+

Returns depth only render pass (z-prepass).

+
Returns
nullptr if render pass is not created yet, otherwise valid pointer.
+ +
+
+ +

◆ getDepthTextureNoMultisampling()

+ +
+
+ + + + + +
+ + + + + + + +
GpuResource * ne::VulkanRenderer::getDepthTextureNoMultisampling ()
+
+overridevirtual
+
+

Returns pointer to the texture resource that represents renderer's depth texture without multisampling (resolved resource).

+
Warning
If MSAA is enabled this function will return one resource (pointer to a separate depth resolved resource), if it's disabled it will return the other resource (pointer to depth texture). So it may be a good idea to query this pointer every time you need it instead of saving it and reusing it because every frame this pointer may change (due to other reasons such as render target resize and etc).
+
Returns
Pointer to depth texture.
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ getGraphicsQueue()

+ +
+
+ + + + + + + +
VkQueue ne::VulkanRenderer::getGraphicsQueue () const
+
+

Returns Vulkan graphics queue used in the renderer.

+
Returns
nullptr if graphics queue is not created yet, otherwise used graphics queue.
+ +
+
+ +

◆ getInstance()

+ +
+
+ + + + + + + +
VkInstance ne::VulkanRenderer::getInstance () const
+
+

Returns Vulkan instance used in the renderer.

+
Returns
nullptr if Vulkan instance is not created yet, otherwise used Vulkan instance.
+ +
+
+ +

◆ getLogicalDevice()

+ +
+
+ + + + + + + +
VkDevice ne::VulkanRenderer::getLogicalDevice () const
+
+

Returns logical device used in the renderer.

+
Returns
nullptr if logical device is not created yet, otherwise used logical device.
+ +
+
+ +

◆ getMainRenderPass()

+ +
+
+ + + + + + + +
VkRenderPass ne::VulkanRenderer::getMainRenderPass () const
+
+

Returns main render pass.

+
Returns
nullptr if render pass is not created yet, otherwise valid pointer.
+ +
+
+ +

◆ getMaxSupportedAntialiasingQuality()

+ +
+
+ + + + + +
+ + + + + + + +
std::variant< AntialiasingQuality, Error > ne::VulkanRenderer::getMaxSupportedAntialiasingQuality () const
+
+overrideprotectedvirtual
+
+

Returns the maximum anti-aliasing quality that can be used on the picked GPU (getCurrentlyUsedGpuName).

+
Remarks
Note that the maximum supported AA quality can differ depending on the used GPU/renderer.
+
Returns
Error if something went wrong, otherwise DISABLED if AA is not supported or the maximum supported AA quality.
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ getMsaaSampleCount()

+ +
+
+ + + + + + + +
VkSampleCountFlagBits ne::VulkanRenderer::getMsaaSampleCount () const
+
+

Returns sample count of the current MSAA quality.

+
Returns
MSAA sample count.
+ +
+
+ +

◆ getPhysicalDevice()

+ +
+
+ + + + + + + +
VkPhysicalDevice ne::VulkanRenderer::getPhysicalDevice () const
+
+

Returns physical device used in the renderer.

+
Returns
nullptr if physical device is not created yet, otherwise used physical device.
+ +
+
+ +

◆ getRenderTargetSize()

+ +
+
+ + + + + +
+ + + + + + + +
std::pair< unsigned int, unsigned int > ne::VulkanRenderer::getRenderTargetSize () const
+
+overridevirtual
+
+

Returns size of the render target (size of the underlying render image).

+
Returns
Render image size in pixels (width and height).
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ getRequiredVulkanInstanceExtensions()

+ +
+
+ + + + + +
+ + + + + + + +
std::variant< std::vector< const char * >, Error > ne::VulkanRenderer::getRequiredVulkanInstanceExtensions ()
+
+staticprivate
+
+

Returns names of essential Vulkan instance extensions that the renderer will use.

+
Returns
Names of Vulkan instance extension.
+ +
+
+ +

◆ getShadowMapFormat()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr VkFormat ne::VulkanRenderer::getShadowMapFormat ()
+
+inlinestaticconstexpr
+
+

Returns texture format used for shadow maps.

+
Returns
Shadow map format.
+ +
+
+ +

◆ getShadowMappingPointLightColorTargetFormat()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr VkFormat ne::VulkanRenderer::getShadowMappingPointLightColorTargetFormat ()
+
+inlinestaticconstexpr
+
+

Returns texture format used for point lights as "color" target (does not actually store color) during shadow pass.

+
Returns
Shadow map format.
+ +
+
+ +

◆ getShadowMappingRenderPass()

+ +
+
+ + + + + + + + +
VkRenderPass ne::VulkanRenderer::getShadowMappingRenderPass (bool bIsForPointLights) const
+
+

Returns render pass used for shadow mapping.

+
Parameters
+ + +
bIsForPointLightsSpecify false if you need render pass for shadow mapping of directional and spot lights, otherwise specify true to get render pass for shadow mapping of point lights.
+
+
+
Returns
nullptr if render pass is not created yet, otherwise valid pointer.
+ +
+
+ +

◆ getShadowTextureSampler()

+ +
+
+ + + + + + + +
VkSampler ne::VulkanRenderer::getShadowTextureSampler () const
+
+

Returns Vulkan texture sampler for sampling shadow textures.

+
Remarks
Guaranteed to never be re-created.
+
Returns
nullptr if not created yet, otherwise valid sampler.
+ +
+
+ +

◆ getSupportedGpuNames()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< std::string > ne::VulkanRenderer::getSupportedGpuNames () const
+
+overridevirtual
+
+

Looks for video adapters (GPUs) that support this renderer.

+
Remarks
Note that returned array might differ depending on the used renderer.
+
Returns
Empty array if no GPU supports used renderer, otherwise array with GPU names that can be used for this renderer.
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ getSupportedRefreshRates()

+ +
+
+ + + + + +
+ + + + + + + +
std::variant< std::set< std::pair< unsigned int, unsigned int > >, Error > ne::VulkanRenderer::getSupportedRefreshRates () const
+
+overridevirtual
+
+

Returns a list of supported screen refresh rates (pairs of numerator and denominator).

+
Remarks
The list of supported refresh rates depends on the currently used GPU, so if changing used GPU this list might return different values.
+
Returns
Error if something went wrong, otherwise refresh rates.
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ getSupportedRenderResolutions()

+ +
+
+ + + + + +
+ + + + + + + +
std::variant< std::set< std::pair< unsigned int, unsigned int > >, Error > ne::VulkanRenderer::getSupportedRenderResolutions () const
+
+overridevirtual
+
+

Returns a list of supported render resolution (pairs of width and height).

+
Returns
Error if something went wrong, otherwise render resolutions.
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ getSwapChainExtent()

+ +
+
+ + + + + + + +
std::optional< VkExtent2D > ne::VulkanRenderer::getSwapChainExtent () const
+
+

Returns the size of images in the swap chain.

+
Returns
Empty if the swap chain is not initialized, otherwise the size of images in the swap chain.
+ +
+
+ +

◆ getTextureSampler()

+ +
+
+ + + + + + + +
VkSampler ne::VulkanRenderer::getTextureSampler ()
+
+

Returns sampler for textures.

+
Returns
nullptr if not created yet, otherwise valid pointer.
+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
RendererType ne::VulkanRenderer::getType () const
+
+overridevirtual
+
+

Returns renderer's type.

+
Returns
Renderer's type.
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ getUsedApiVersion()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ne::VulkanRenderer::getUsedApiVersion () const
+
+overridevirtual
+
+

Returns API version or a feature level that the renderer uses.

+

For example DirectX renderer will return used feature level and Vulkan renderer will return used Vulkan API version.

+
Returns
Used API version.
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ getUsedVulkanVersion()

+ +
+
+ + + + + +
+ + + + + + + +
uint32_t ne::VulkanRenderer::getUsedVulkanVersion ()
+
+static
+
+

Returns used Vulkan API version.

+
Returns
Vulkan API version that the renderer uses.
+ +
+
+ +

◆ initialize()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::VulkanRenderer::initialize (const std::vector< std::string > & vBlacklistedGpuNames)
+
+private
+
+

Initializes the renderer.

+
Remarks
This function is usually called after constructing a new empty (uninitialized) Vulkan renderer.
+
Parameters
+ + +
vBlacklistedGpuNamesNames of GPUs that should not be used, generally this means that these GPUs were previously used to create the renderer but something went wrong.
+
+
+
Returns
Error if something went wrong (for ex. if the hardware does not support this renderer).
+ +
+
+ +

◆ initializeVulkan()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::VulkanRenderer::initializeVulkan (const std::vector< std::string > & vBlacklistedGpuNames)
+
+private
+
+

Initializes essential Vulkan entities.

+
Parameters
+ + +
vBlacklistedGpuNamesNames of GPUs that should not be used, generally this means that these GPUs were previously used to create the renderer but something went wrong.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ isDeviceSuitable()

+ +
+
+ + + + + +
+ + + + + + + + +
std::variant< std::string, Error > ne::VulkanRenderer::isDeviceSuitable (VkPhysicalDevice pGpu)
+
+private
+
+

Checks if the specified GPU fits all essential requirements of the renderer.

+
Parameters
+ + +
pGpuGPU to test.
+
+
+
Returns
Empty string if the GPU is suitable, non-empty string with description on what the specified GPU does not support, error message if an internal error occurred.
+ +
+
+ +

◆ isGpuSupportsSwapChain()

+ +
+
+ + + + + +
+ + + + + + + + +
std::variant< std::string, Error > ne::VulkanRenderer::isGpuSupportsSwapChain (VkPhysicalDevice pGpu)
+
+private
+
+

Checks if the specified GPU supports all used swap chain formats/modes.

+
Warning
Make sure to check that device extension VK_KHR_SWAPCHAIN_EXTENSION_NAME is supported before calling this function.
+
Remarks
Expects pWindowSurface to be valid.
+
Parameters
+ + +
pGpuGPU to test.
+
+
+
Returns
Empty string if the GPU suits swap chain requirements, non-empty string with description on what the specified GPU does not support, error message if an internal error occurred.
+ +
+
+ +

◆ isGpuSupportsUsedDeviceExtensions()

+ +
+
+ + + + + +
+ + + + + + + + +
std::variant< std::string, Error > ne::VulkanRenderer::isGpuSupportsUsedDeviceExtensions (VkPhysicalDevice pGpuDevice)
+
+staticprivate
+
+

Checks if the specified physical device supports used device extensions.

+
Parameters
+ + +
pGpuDeviceGPU to check.
+
+
+
Returns
Empty string if the GPU supports all used device extensions, non-empty string with device extension name that the specified GPU does not support, error message if an internal error occurred.
+ +
+
+ +

◆ isInitialized()

+ +
+
+ + + + + +
+ + + + + + + +
bool ne::VulkanRenderer::isInitialized () const
+
+overrideprotectedvirtual
+
+

Tells whether the renderer is initialized or not.

+

Initialized renderer means that the hardware supports it and it's safe to use renderer functionality such as onRenderSettingsChanged.

+
Returns
Whether the renderer is initialized or not.
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ isUsedDepthImageFormatSupported()

+ +
+
+ + + + + +
+ + + + + + + +
bool ne::VulkanRenderer::isUsedDepthImageFormatSupported ()
+
+private
+
+

Tells if depthImageFormat is supported by the hardware.

+
Returns
true if supported, false otherwise.
+ +
+
+ +

◆ onFramebufferSizeChangedDerived()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::VulkanRenderer::onFramebufferSizeChangedDerived (int iWidth,
int iHeight 
)
+
+overrideprotectedvirtual
+
+

Called when the framebuffer size was changed.

+
Parameters
+ + + +
iWidthNew width of the framebuffer (in pixels).
iHeightNew height of the framebuffer (in pixels).
+
+
+ +

Reimplemented from ne::Renderer.

+ +
+
+ +

◆ onRenderSettingsChangedDerived()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::VulkanRenderer::onRenderSettingsChangedDerived ()
+
+overrideprotectedvirtual
+
+

Called after some render setting is changed to recreate internal resources to match the current settings.

+
Returns
Error if something went wrong.
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ pickPhysicalDevice()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::VulkanRenderer::pickPhysicalDevice (const std::vector< std::string > & vBlacklistedGpuNames)
+
+private
+
+

Picks the first GPU that fits renderer's needs.

+
Warning
Expects pInstance to be valid.
+
Parameters
+ + +
vBlacklistedGpuNamesNames of GPUs that should not be used, generally this means that these GPUs were previously used to create the renderer but something went wrong.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ pickSwapChainExtent()

+ +
+
+ + + + + +
+ + + + + + + + +
std::variant< VkExtent2D, Error > ne::VulkanRenderer::pickSwapChainExtent (const VkSurfaceCapabilitiesKHR & surfaceCapabilities)
+
+private
+
+

Chooses the appropriate swap chain size.

+
Parameters
+ + +
surfaceCapabilitiesPhysical device surface's swap chain surface capabilities.
+
+
+
Returns
Error if something went wrong, otherwise swap chain size to use.
+ +
+
+ +

◆ prepareForDrawingNextFrame()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::VulkanRenderer::prepareForDrawingNextFrame (CameraPropertiespCameraProperties,
FrameResourcepCurrentFrameResource 
)
+
+overrideprivatevirtual
+
+

Setups everything for render commands to be recorded (resets command buffers and etc.).

+
Warning
Expects that render resources mutex is locked.
+
Remarks
When this function is called this means that the current frame resource is no longer used by the GPU.
+
Parameters
+ + + +
pCameraPropertiesCamera properties to use.
pCurrentFrameResourceFrame resource of the frame being submitted.
+
+
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ prepareRenderTargetForNextFrame()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::VulkanRenderer::prepareRenderTargetForNextFrame ()
+
+overrideprivatevirtual
+
+

Called before prepareForDrawingNextFrame to do early frame preparations.

+
Remarks
It's expected that render target's size will not change after this function is finished and before a new frame is submitted.
+ +

Reimplemented from ne::Renderer.

+ +
+
+ +

◆ present()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::VulkanRenderer::present (FrameResourcepCurrentFrameResource,
size_t iCurrentFrameResourceIndex 
)
+
+overrideprivatevirtual
+
+

Does the final frame rendering logic to present the frame on the screen.

+
Parameters
+ + + +
pCurrentFrameResourceFrame resource of the frame being submitted.
iCurrentFrameResourceIndexIndex of the current frame resource.
+
+
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ queryQueueFamilyIndices()

+ +
+
+ + + + + +
+ + + + + + + + +
std::variant< VulkanRenderer::QueueFamilyIndices, Error > ne::VulkanRenderer::queryQueueFamilyIndices (VkPhysicalDevice pGpu)
+
+private
+
+

Retrieves the information about used queue families and their indices.

+
Parameters
+ + +
pGpuGPU to query for queue families.
+
+
+
Remarks
Expects pWindowSurface to be valid.
+
Returns
Error if something went wrong, otherwise indices of used queue families returned by vkGetPhysicalDeviceQueueFamilyProperties.
+ +
+
+ +

◆ querySwapChainSupportDetails()

+ +
+
+ + + + + +
+ + + + + + + + +
std::variant< VulkanRenderer::SwapChainSupportDetails, Error > ne::VulkanRenderer::querySwapChainSupportDetails (VkPhysicalDevice pGpu)
+
+private
+
+

Queries swap chain support details from the specified GPU.

+
Warning
Make sure to check that device extension VK_KHR_SWAPCHAIN_EXTENSION_NAME is supported before calling this function.
+
Remarks
Expects pWindowSurface to be valid.
+
Parameters
+ + +
pGpuGPU to test.
+
+
+
Returns
Error if something went wrong, otherwise swap chain support details.
+ +
+
+ +

◆ rateGpuSuitability()

+ +
+
+ + + + + +
+ + + + + + + + +
size_t ne::VulkanRenderer::rateGpuSuitability (VkPhysicalDevice pGpuDevice)
+
+private
+
+

Tells how good the specified GPU suits the renderer's needs.

+
Parameters
+ + +
pGpuDeviceGPU to test.
+
+
+
Returns
Zero if this GPU cannon be used (see logs for description), otherwise GPU's score (to compare with others).
+ +
+
+ +

◆ recreateSwapChainAndDependentResources()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::VulkanRenderer::recreateSwapChainAndDependentResources ()
+
+private
+
+

Recreates pSwapChain and all dependent resources after it was created using createSwapChain.

+
Returns
Error if something went wrong.
+ +
+
+ +

◆ setObjectDebugOnlyName()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ne::VulkanRenderer::setObjectDebugOnlyName (RendererpRenderer,
void * pObject,
VkObjectType objectType,
const std::string & sResourceName 
)
+
+static
+
+

Sets name of the object for debugging purposes using Vulkan's debugging utils extension.

+
Remarks
Does nothing in release builds.
+
Parameters
+ + + + + +
pRendererVulkan renderer.
pObjectObject to name.
objectTypeType of the object.
sResourceNameName to set.
+
+
+ +
+
+ +

◆ startDepthOnlyRenderPass()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::VulkanRenderer::startDepthOnlyRenderPass (VkCommandBuffer pCommandBuffer,
size_t iAcquiredImageIndex 
)
+
+private
+
+

Adds render pass start commands to the specified command buffer with pDepthOnlyRenderPass.

+
Parameters
+ + + +
pCommandBufferCommand buffer to modify.
iAcquiredImageIndexIndex of the framebuffer to use.
+
+
+ +
+
+ +

◆ startMainRenderPass()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::VulkanRenderer::startMainRenderPass (VkCommandBuffer pCommandBuffer,
size_t iAcquiredImageIndex 
)
+
+private
+
+

Adds render pass start commands to the specified command buffer with pMainRenderPass.

+
Parameters
+ + + +
pCommandBufferCommand buffer to modify.
iAcquiredImageIndexIndex of the framebuffer to use.
+
+
+ +
+
+ +

◆ startShadowMappingRenderPass()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ne::VulkanRenderer::startShadowMappingRenderPass (VkRenderPass pShadowMappingRenderPass,
VkCommandBuffer pCommandBuffer,
VkFramebuffer pFramebufferToUse,
uint32_t iShadowMapSize 
)
+
+staticprivate
+
+

Adds render pass start commands to the specified command buffer with the specified shadow mapping render pass.

+
Parameters
+ + + + + +
pShadowMappingRenderPasspShadowMappingDirectionalSpotRenderPass or pShadowMappingPointRenderPass.
pCommandBufferCommand buffer to modify.
pFramebufferToUseFramebuffer to use.
iShadowMapSizeSize of the framebuffer image.
+
+
+ +
+
+ +

◆ submitWaitDestroyOneTimeSubmitCommandBuffer()

+ +
+
+ + + + + + + + +
std::optional< Error > ne::VulkanRenderer::submitWaitDestroyOneTimeSubmitCommandBuffer (VkCommandBuffer pOneTimeSubmitCommandBuffer)
+
+

Submits a one-time submit command buffer created by createOneTimeSubmitCommandBuffer, then waits for a temporary fence to be signaled (meaning that submitted commands were executed on the GPU) and destroys the command buffer.

+
Parameters
+ + +
pOneTimeSubmitCommandBufferCommand buffer created by createOneTimeSubmitCommandBuffer with recorded commands to submit.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ transitionImageLayout()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::VulkanRenderer::transitionImageLayout (VkImage pImage,
VkFormat imageFormat,
VkImageAspectFlags aspect,
uint32_t levelCount,
uint32_t layerCount,
VkImageLayout oldLayout,
VkImageLayout newLayout 
)
+
+

Creates a one-time submit command buffer to change image layout.

+
Parameters
+ + + + + + + + +
pImageImage to use.
imageFormatImage format.
aspectAspect of the image that will be affected.
levelCountDefines how much mipmaps will be affected.
layerCountDefines how much image layers will be affected.
oldLayoutOld (current) image layout.
newLayoutNew image layout.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ updateMsaaSampleCount()

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::VulkanRenderer::updateMsaaSampleCount ()
+
+private
+
+

Queries the current render settings for MSAA quality and updates msaaSampleCount.

+
Returns
Error if something went wrong.
+ +
+
+ +

◆ waitForGpuToFinishUsingFrameResource()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::VulkanRenderer::waitForGpuToFinishUsingFrameResource (FrameResourcepFrameResource)
+
+overrideprotectedvirtual
+
+

Blocks the current thread until the GPU is finished using the specified frame resource.

+
Remarks
Generally the current frame resource will be passed and so the current frame resource mutex will be locked at the time of calling and until the function is not finished it will not be unlocked.
+
Parameters
+ + +
pFrameResourceFrame resource to wait for.
+
+
+ +

Implements ne::Renderer.

+ +
+
+ +

◆ waitForGpuToFinishWorkUpToThisPoint()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::VulkanRenderer::waitForGpuToFinishWorkUpToThisPoint ()
+
+overridevirtual
+
+

Blocks the current thread until the GPU finishes executing all queued commands up to this point.

+
Remarks
Typically used with getRenderResourcesMutex.
+ +

Implements ne::Renderer.

+ +
+
+

Member Data Documentation

+ +

◆ bIsBeingDestroyed

+ +
+
+ + + + + +
+ + + + +
bool ne::VulkanRenderer::bIsBeingDestroyed = false
+
+private
+
+

Marked as true when entered destructor.

+ +
+
+ +

◆ bIsUsingMsaaRenderTarget

+ +
+
+ + + + + +
+ + + + +
bool ne::VulkanRenderer::bIsUsingMsaaRenderTarget = false
+
+private
+
+

Tells if MSAA is enabled or not and whether we are using multisampled render target or not.

+ +
+
+ +

◆ bIsVulkanInitialized

+ +
+
+ + + + + +
+ + + + +
bool ne::VulkanRenderer::bIsVulkanInitialized = false
+
+private
+
+

Tells if initializeVulkan was finished successfully or not.

+ +
+
+ +

◆ bNeedToRecreateSwapchain

+ +
+
+ + + + + +
+ + + + +
bool ne::VulkanRenderer::bNeedToRecreateSwapchain = false
+
+private
+
+

true if we received VK_SUBOPTIMAL_KHR and need to re-create the swapchain, false otherwise.

+ +
+
+ +

◆ depthImageFormat

+ +
+
+ + + + + +
+ + + + +
constexpr auto ne::VulkanRenderer::depthImageFormat = VK_FORMAT_D32_SFLOAT
+
+staticconstexprprivate
+
+

Format of pDepthImage.

+ +
+
+ +

◆ depthImageTiling

+ +
+
+ + + + + +
+ + + + +
constexpr auto ne::VulkanRenderer::depthImageTiling = VK_IMAGE_TILING_OPTIMAL
+
+staticconstexprprivate
+
+

Tiling option for pDepthImage.

+ +
+
+ +

◆ depthResolveMode

+ +
+
+ + + + + +
+ + + + +
constexpr auto ne::VulkanRenderer::depthResolveMode = VK_RESOLVE_MODE_MAX_BIT
+
+staticconstexprprivate
+
+

Used mode for resolving multisampled depth image.

+ +
+
+ +

◆ iCurrentImageSemaphore

+ +
+
+ + + + + +
+ + + + +
size_t ne::VulkanRenderer::iCurrentImageSemaphore = 0
+
+private
+
+

Index into vImageSemaphores.

+ +
+
+ +

◆ iDepthOnlyRenderPassDepthImageAttachmentIndex

+ +
+
+ + + + + +
+ + + + +
constexpr size_t ne::VulkanRenderer::iDepthOnlyRenderPassDepthImageAttachmentIndex = 0
+
+staticconstexprprivate
+
+
+ +

◆ iDepthOnlyRenderPassDepthResolveTargetAttachmentIndex

+ +
+
+ + + + + +
+ + + + +
constexpr size_t ne::VulkanRenderer::iDepthOnlyRenderPassDepthResolveTargetAttachmentIndex = 1
+
+staticconstexprprivate
+
+
+ +

◆ iLastAcquiredImageIndex

+ +
+
+ + + + + +
+ + + + +
uint32_t ne::VulkanRenderer::iLastAcquiredImageIndex = 0
+
+private
+
+

Index of the last acquired image from the swap chain.

+ +
+
+ +

◆ iMainRenderPassColorAttachmentIndex

+ +
+
+ + + + + +
+ + + + +
constexpr size_t ne::VulkanRenderer::iMainRenderPassColorAttachmentIndex = 0
+
+staticconstexprprivate
+
+

Index of the color attachment in pMainRenderPass.

+ +
+
+ +

◆ iMainRenderPassColorResolveTargetAttachmentIndex

+ +
+
+ + + + + +
+ + + + +
constexpr size_t ne::VulkanRenderer::iMainRenderPassColorResolveTargetAttachmentIndex = 2
+
+staticconstexprprivate
+
+

Index of the color resolve target attachment in pMainRenderPass.

+ +
+
+ +

◆ iMainRenderPassDepthAttachmentIndex

+ +
+
+ + + + + +
+ + + + +
constexpr size_t ne::VulkanRenderer::iMainRenderPassDepthAttachmentIndex = 1
+
+staticconstexprprivate
+
+

Index of the depth attachment in pMainRenderPass.

+ +
+
+ +

◆ indexTypeFormat

+ +
+
+ + + + + +
+ + + + +
constexpr auto ne::VulkanRenderer::indexTypeFormat = VK_INDEX_TYPE_UINT32
+
+staticconstexprprivate
+
+

Format of indices.

+ +
+
+ +

◆ iSwapChainImageCount

+ +
+
+ + + + + +
+ + + + +
uint32_t ne::VulkanRenderer::iSwapChainImageCount = 0
+
+private
+
+

The number of swap chain images that we have in pSwapChain.

+ +
+
+ +

◆ iUsedVulkanVersion

+ +
+
+ + + + + +
+ + + + +
constexpr uint32_t ne::VulkanRenderer::iUsedVulkanVersion = VK_API_VERSION_1_2
+
+staticconstexprprivate
+
+

Version of the Vulkan API that the renderer uses.

+ +
+
+ +

◆ msaaSampleCount

+ +
+
+ + + + + +
+ + + + +
VkSampleCountFlagBits ne::VulkanRenderer::msaaSampleCount = VK_SAMPLE_COUNT_1_BIT
+
+private
+
+

Used MSAA sample count.

+ +
+
+ +

◆ pCommandPool

+ +
+
+ + + + + +
+ + + + +
VkCommandPool ne::VulkanRenderer::pCommandPool = nullptr
+
+private
+
+

Used to create command buffers.

+ +
+
+ +

◆ pComputeTextureSampler

+ +
+
+ + + + + +
+ + + + +
VkSampler ne::VulkanRenderer::pComputeTextureSampler = nullptr
+
+private
+
+

Texture sampler with nearest filtering and mipmapping for fetching texels in compute shader.

+
Remarks
Always valid and not re-created when texture filtering (render setting) is changed.
+ +
+
+ +

◆ pDepthImage

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<VulkanResource> ne::VulkanRenderer::pDepthImage = nullptr
+
+private
+
+

Depth buffer.

+ +
+
+ +

◆ pDepthImageNoMultisampling

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<VulkanResource> ne::VulkanRenderer::pDepthImageNoMultisampling = nullptr
+
+private
+
+

Depth buffer without multisampling (for light culing compute shader).

+
Warning
When pDepthImage does not use multisampling this buffer is not used and does not store contents of pDepthImage.
+
Remarks
Stores non-multisampled depth data from pDepthImage for shaders.
+ +
+
+ +

◆ pDepthOnlyRenderPass

+ +
+
+ + + + + +
+ + + + +
VkRenderPass ne::VulkanRenderer::pDepthOnlyRenderPass = nullptr
+
+private
+
+

Render pass for z-prepass.

+ +
+
+ +

◆ pGraphicsQueue

+ +
+
+ + + + + +
+ + + + +
VkQueue ne::VulkanRenderer::pGraphicsQueue = nullptr
+
+private
+
+

Graphics queue.

+ +
+
+ +

◆ physicalDeviceQueueFamilyIndices

+ +
+
+ + + + + +
+ + + + +
QueueFamilyIndices ne::VulkanRenderer::physicalDeviceQueueFamilyIndices
+
+private
+
+

Queue family indices of current pPhysicalDevice.

+ +
+
+ +

◆ pInstance

+ +
+
+ + + + + +
+ + + + +
VkInstance ne::VulkanRenderer::pInstance = nullptr
+
+private
+
+

Vulkan API instance.

+ +
+
+ +

◆ pLogicalDevice

+ +
+
+ + + + + +
+ + + + +
VkDevice ne::VulkanRenderer::pLogicalDevice = nullptr
+
+private
+
+

Logical device to interface with pPhysicalDevice.

+ +
+
+ +

◆ pMainRenderPass

+ +
+
+ + + + + +
+ + + + +
VkRenderPass ne::VulkanRenderer::pMainRenderPass = nullptr
+
+private
+
+

Render pass for main pass.

+ +
+
+ +

◆ pMsaaImage

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<VulkanResource> ne::VulkanRenderer::pMsaaImage = nullptr
+
+private
+
+

Image with multiple samples per pixel for MSAA.

+ +
+
+ +

◆ pPhysicalDevice

+ +
+
+ + + + + +
+ + + + +
VkPhysicalDevice ne::VulkanRenderer::pPhysicalDevice = nullptr
+
+private
+
+

GPU that is being used by this renderer.

+ +
+
+ +

◆ pPresentQueue

+ +
+
+ + + + + +
+ + + + +
VkQueue ne::VulkanRenderer::pPresentQueue = nullptr
+
+private
+
+

Presentation queue.

+ +
+
+ +

◆ pShadowMappingDirectionalSpotRenderPass

+ +
+
+ + + + + +
+ + + + +
VkRenderPass ne::VulkanRenderer::pShadowMappingDirectionalSpotRenderPass = nullptr
+
+private
+
+

Render pass for shadow mapping of directional and spot lights.

+ +
+
+ +

◆ pShadowMappingPointRenderPass

+ +
+
+ + + + + +
+ + + + +
VkRenderPass ne::VulkanRenderer::pShadowMappingPointRenderPass = nullptr
+
+private
+
+

Render pass for shadow mapping of point lights.

+ +
+
+ +

◆ pShadowTextureSampler

+ +
+
+ + + + + +
+ + + + +
VkSampler ne::VulkanRenderer::pShadowTextureSampler = nullptr
+
+private
+
+

Texture sampler for directional and spot shadow maps.

+
Remarks
Always valid and not re-created when texture filtering (render setting) is changed.
+ +
+
+ +

◆ pSwapChain

+ +
+
+ + + + + +
+ + + + +
VkSwapchainKHR ne::VulkanRenderer::pSwapChain = nullptr
+
+private
+
+

Swap chain.

+ +
+
+ +

◆ pTextureSampler

+ +
+
+ + + + + +
+ + + + +
VkSampler ne::VulkanRenderer::pTextureSampler = nullptr
+
+private
+
+

Texture sampler.

+ +
+
+ +

◆ pWindowSurface

+ +
+
+ + + + + +
+ + + + +
VkSurfaceKHR ne::VulkanRenderer::pWindowSurface = nullptr
+
+private
+
+

Vulkan window representation.

+ +
+
+ +

◆ shadowMapFormat

+ +
+
+ + + + + +
+ + + + +
constexpr auto ne::VulkanRenderer::shadowMapFormat = VK_FORMAT_D32_SFLOAT
+
+staticconstexprprivate
+
+

Format used for shadow maps.

+ +
+
+ +

◆ shadowMappingPointLightColorTargetFormat

+ +
+
+ + + + + +
+ + + + +
constexpr auto ne::VulkanRenderer::shadowMappingPointLightColorTargetFormat = VK_FORMAT_R32_SFLOAT
+
+staticconstexprprivate
+
+

Format used for point lights as "color" target (does not actually store color) during shadow pass.

+ +
+
+ +

◆ stencilResolveMode

+ +
+
+ + + + + +
+ + + + +
constexpr auto ne::VulkanRenderer::stencilResolveMode = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT
+
+staticconstexprprivate
+
+

Used mode for resolving multisampled depth image.

+ +
+
+ +

◆ sUsedGpuName

+ +
+
+ + + + + +
+ + + + +
std::string ne::VulkanRenderer::sUsedGpuName
+
+private
+
+

Name of the pPhysicalDevice.

+ +
+
+ +

◆ swapChainExtent

+ +
+
+ + + + + +
+ + + + +
std::optional<VkExtent2D> ne::VulkanRenderer::swapChainExtent
+
+private
+
+

Size of images in the swap chain.

+ +
+
+ +

◆ swapChainImageColorSpace

+ +
+
+ + + + + +
+ + + + +
constexpr auto ne::VulkanRenderer::swapChainImageColorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
+
+staticconstexprprivate
+
+

Color space of vSwapChainImages.

+ +
+
+ +

◆ swapChainImageFormat

+ +
+
+ + + + + +
+ + + + +
constexpr auto ne::VulkanRenderer::swapChainImageFormat = VK_FORMAT_B8G8R8A8_UNORM
+
+staticconstexprprivate
+
+

Format of vSwapChainImages.

+ +
+
+ +

◆ vImageSemaphores

+ +
+
+ + + + + +
+ + + + +
std::vector<SwapChainImageSemaphores> ne::VulkanRenderer::vImageSemaphores
+
+private
+
+

Semaphores related to swap chain images.

+
Remarks
Size of this array is equal to iSwapChainImageCount.
+ +
+
+ +

◆ vSupportedGpuNames

+ +
+
+ + + + + +
+ + + + +
std::vector<std::string> ne::VulkanRenderer::vSupportedGpuNames
+
+private
+
+

List of supported GPUs, filled during pickPhysicalDevice.

+ +
+
+ +

◆ vSwapChainFramebuffersDepthOnlyRenderPass

+ +
+
+ + + + + +
+ + + + +
std::vector<VkFramebuffer> ne::VulkanRenderer::vSwapChainFramebuffersDepthOnlyRenderPass
+
+private
+
+

Framebuffers that point to vSwapChainImageViews and reference depth only render pass.

+
Remarks
Size of this array is equal to iSwapChainImageCount.
+ +
+
+ +

◆ vSwapChainFramebuffersMainRenderPass

+ +
+
+ + + + + +
+ + + + +
std::vector<VkFramebuffer> ne::VulkanRenderer::vSwapChainFramebuffersMainRenderPass
+
+private
+
+

Framebuffers that point to vSwapChainImageViews and reference main render pass.

+
Remarks
Size of this array is equal to iSwapChainImageCount.
+ +
+
+ +

◆ vSwapChainImageFenceRefs

+ +
+
+ + + + + +
+ + + + +
std::vector<std::pair<VkFence, size_t> > ne::VulkanRenderer::vSwapChainImageFenceRefs
+
+private
+
+

Stores pairs of "references to fences of a frame resources" - "frame resource index".

+
Remarks
Used to synchronize vkAcquireNextImageKHR calls and wait for a frame resource that uses the swap chain image.
+
+Size of this array is equal to iSwapChainImageCount.
+ +
+
+ +

◆ vSwapChainImages

+ +
+
+ + + + + +
+ + + + +
std::vector<VkImage> ne::VulkanRenderer::vSwapChainImages
+
+private
+
+

Swap chain images.

+
Remarks
Size of this array is equal to iSwapChainImageCount.
+ +
+
+ +

◆ vSwapChainImageViews

+ +
+
+ + + + + +
+ + + + +
std::vector<VkImageView> ne::VulkanRenderer::vSwapChainImageViews
+
+private
+
+

Views to vSwapChainImages.

+
Remarks
Size of this array is equal to iSwapChainImageCount.
+ +
+
+ +

◆ vUsedDeviceExtensionNames

+ +
+
+ + + + + +
+ + + + +
const std::vector<const char*> ne::VulkanRenderer::vUsedDeviceExtensionNames
+
+inlinestaticprivate
+
+Initial value:
= {
+
VK_KHR_SWAPCHAIN_EXTENSION_NAME}
+

Array of physical device extensions that we use.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/vulkan/VulkanRenderer.h
  • +
  • src/engine_lib/private/render/vulkan/VulkanRenderer.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1VulkanRenderer.js b/classne_1_1VulkanRenderer.js new file mode 100644 index 000000000..2e7b37657 --- /dev/null +++ b/classne_1_1VulkanRenderer.js @@ -0,0 +1,137 @@ +var classne_1_1VulkanRenderer = +[ + [ "QueueFamilyIndices", "structne_1_1VulkanRenderer_1_1QueueFamilyIndices.html", "structne_1_1VulkanRenderer_1_1QueueFamilyIndices" ], + [ "SwapChainImageSemaphores", "structne_1_1VulkanRenderer_1_1SwapChainImageSemaphores.html", "structne_1_1VulkanRenderer_1_1SwapChainImageSemaphores" ], + [ "SwapChainSupportDetails", "structne_1_1VulkanRenderer_1_1SwapChainSupportDetails.html", "structne_1_1VulkanRenderer_1_1SwapChainSupportDetails" ], + [ "VulkanRenderer", "classne_1_1VulkanRenderer.html#a2cd8cc2433f8da659e5e72f315f7ec4c", null ], + [ "create", "classne_1_1VulkanRenderer.html#a72f6619897fdb3232624e240783970ad", null ], + [ "createCommandPool", "classne_1_1VulkanRenderer.html#ade11ccb2b6db9600acda37859587df57", null ], + [ "createComputeTextureSampler", "classne_1_1VulkanRenderer.html#a1710a797dad8501705c06d307cf48c81", null ], + [ "createDepthImage", "classne_1_1VulkanRenderer.html#a3c1974da9773bc5908a0c8c482d9583a", null ], + [ "createDepthOnlyRenderPass", "classne_1_1VulkanRenderer.html#aecb0609c18ccac6662fa096258a93718", null ], + [ "createLogicalDevice", "classne_1_1VulkanRenderer.html#ac03701aac30a708bd63b42c77ce55618", null ], + [ "createMainRenderPass", "classne_1_1VulkanRenderer.html#ac3a2829ecb547e4bb6ccce2b92d8e943", null ], + [ "createMsaaImage", "classne_1_1VulkanRenderer.html#aa531822b46e63a1df0396bd9877b3eca", null ], + [ "createOneTimeSubmitCommandBuffer", "classne_1_1VulkanRenderer.html#a6ba6849ba3e37cc117afec21b339f97e", null ], + [ "createRenderPasses", "classne_1_1VulkanRenderer.html#ab8d78098e6ef1c645f722fefcd8f494d", null ], + [ "createShadowMappingRenderPasses", "classne_1_1VulkanRenderer.html#a34e46570dd6eff948ed4c9954002b433", null ], + [ "createShadowTextureSampler", "classne_1_1VulkanRenderer.html#afcc002e2b0f9a23dfb3901201fb576cd", null ], + [ "createSwapChain", "classne_1_1VulkanRenderer.html#a12e7cdf043898ecb3941625e48e43d51", null ], + [ "createSwapChainFramebuffers", "classne_1_1VulkanRenderer.html#a1baf0a69e479a0c765cbd89a7434695a", null ], + [ "createTextureSampler", "classne_1_1VulkanRenderer.html#a737d9784afa5358a973580273ef5a23f", null ], + [ "createVulkanInstance", "classne_1_1VulkanRenderer.html#a9a5f2dc988ff0dbbda8aabdfe393ae5f", null ], + [ "createWindowSurface", "classne_1_1VulkanRenderer.html#a586500bcb331bb423a61ac9bddb30436", null ], + [ "destroySwapChainAndDependentResources", "classne_1_1VulkanRenderer.html#a245053a3aed78b4cc1b8e1c1c416d21c", null ], + [ "dispatchComputeShadersOnGraphicsQueue", "classne_1_1VulkanRenderer.html#a71dec7fcf5ddc1f4bcabb94a091fa68e", null ], + [ "drawMeshesDepthPrepass", "classne_1_1VulkanRenderer.html#a9adfef1f5c1a3d766b60594b1671e310", null ], + [ "drawMeshesMainPass", "classne_1_1VulkanRenderer.html#ab379f5bf43b961a79dfe11bd1cd2b0a9", null ], + [ "drawMeshesMainPassSpecificPipelines", "classne_1_1VulkanRenderer.html#afa1ccacfb1ed1749dfb2c75aecdb7a77", null ], + [ "drawShadowMappingPass", "classne_1_1VulkanRenderer.html#a1f11c831e45a8489c2e15ba2fbc26dc9", null ], + [ "executeComputeShadersOnGraphicsQueue", "classne_1_1VulkanRenderer.html#a0491f1ed9a420d8758f7091398d2bc88", null ], + [ "getCommandPool", "classne_1_1VulkanRenderer.html#a4bfac946f7d02bde23fc62106eed5561", null ], + [ "getComputeTextureSampler", "classne_1_1VulkanRenderer.html#a841bbb1e1f79595e68c8f771dc17da6f", null ], + [ "getCurrentlyUsedGpuName", "classne_1_1VulkanRenderer.html#a603e6ac31825bf57a772c0e89a89ec8b", null ], + [ "getDepthImageFormat", "classne_1_1VulkanRenderer.html#a843071a0c9dde64b9eae832fde1b8e97", null ], + [ "getDepthOnlyRenderPass", "classne_1_1VulkanRenderer.html#a20260337b2a82568f06e8f2d1bd2c4e4", null ], + [ "getDepthTextureNoMultisampling", "classne_1_1VulkanRenderer.html#a26352c2baa0cdc7764911d55b15bc037", null ], + [ "getGraphicsQueue", "classne_1_1VulkanRenderer.html#abca6b972881780350eec71ce0869dc2d", null ], + [ "getInstance", "classne_1_1VulkanRenderer.html#a070da1c1fd3bf14ab93a1ccba8908b52", null ], + [ "getLogicalDevice", "classne_1_1VulkanRenderer.html#a664c90ee63237b1a5177bf5cbb9e54a3", null ], + [ "getMainRenderPass", "classne_1_1VulkanRenderer.html#a35a06a845e9c0ae7d5b9f9ccf3e03b6d", null ], + [ "getMaxSupportedAntialiasingQuality", "classne_1_1VulkanRenderer.html#a507467fc554d7206093d7284ecc0b049", null ], + [ "getMsaaSampleCount", "classne_1_1VulkanRenderer.html#a41b0c33fd86d697831304e0a0dd098c2", null ], + [ "getPhysicalDevice", "classne_1_1VulkanRenderer.html#aa6b515b9b5dfb8c1c7a95e98339f1c51", null ], + [ "getRenderTargetSize", "classne_1_1VulkanRenderer.html#aff7cba297c4619c36856488e11a63247", null ], + [ "getRequiredVulkanInstanceExtensions", "classne_1_1VulkanRenderer.html#ad54eb71349aae9c81c5068f43ea488e0", null ], + [ "getShadowMapFormat", "classne_1_1VulkanRenderer.html#a347daefa40e801343ff6e3ee02b1cc39", null ], + [ "getShadowMappingPointLightColorTargetFormat", "classne_1_1VulkanRenderer.html#a1fb781e6224b2efc4a54490d76c1ff10", null ], + [ "getShadowMappingRenderPass", "classne_1_1VulkanRenderer.html#a208c97cb75b621724bbd22a7b49c07d4", null ], + [ "getShadowTextureSampler", "classne_1_1VulkanRenderer.html#ae7e11b0f1ffac78a633cdcb9a3c40424", null ], + [ "getSupportedGpuNames", "classne_1_1VulkanRenderer.html#a66d3142a7256c58c9e5621ea1572df0a", null ], + [ "getSupportedRefreshRates", "classne_1_1VulkanRenderer.html#a80d2498bc0ef0353911f54aa6bd6c2e6", null ], + [ "getSupportedRenderResolutions", "classne_1_1VulkanRenderer.html#a6b99ca902231e396a0abef4fe3a1cdfb", null ], + [ "getSwapChainExtent", "classne_1_1VulkanRenderer.html#ac7f8f4f08713e16f16fbf4937da819a3", null ], + [ "getTextureSampler", "classne_1_1VulkanRenderer.html#a10568b5e33484ba43ae1d4e0ef0a3c58", null ], + [ "getType", "classne_1_1VulkanRenderer.html#a87693c1fba2a1765915317d9ff817f28", null ], + [ "getUsedApiVersion", "classne_1_1VulkanRenderer.html#ada9f5059b75b65b93f4f45325f7184a4", null ], + [ "getUsedVulkanVersion", "classne_1_1VulkanRenderer.html#acc334f432f35b32742ae93ba72e027b5", null ], + [ "initialize", "classne_1_1VulkanRenderer.html#a3c46c72809425573ad938dfb4e131ccc", null ], + [ "initializeVulkan", "classne_1_1VulkanRenderer.html#a44bbc7d6b14f8a8b6a9ac9790ba1b8db", null ], + [ "isDeviceSuitable", "classne_1_1VulkanRenderer.html#a81ad1d11a7975507e79ce9e1e9e7b610", null ], + [ "isGpuSupportsSwapChain", "classne_1_1VulkanRenderer.html#a022a996bf0a4ffe8ff63a43b6af9b6e6", null ], + [ "isGpuSupportsUsedDeviceExtensions", "classne_1_1VulkanRenderer.html#aba975934c63978e6abe5d81a18a63a92", null ], + [ "isInitialized", "classne_1_1VulkanRenderer.html#aba9922f163c30de28d88bab2218841fd", null ], + [ "isUsedDepthImageFormatSupported", "classne_1_1VulkanRenderer.html#a535406f12090a37dbdbb0c3de64c6265", null ], + [ "onFramebufferSizeChangedDerived", "classne_1_1VulkanRenderer.html#ac51bddb238dd93b8653067c0c64fbc5a", null ], + [ "onRenderSettingsChangedDerived", "classne_1_1VulkanRenderer.html#a044c441415996a4391768b740384871b", null ], + [ "pickPhysicalDevice", "classne_1_1VulkanRenderer.html#a2d17f56242f67d07950c3fb0169d9ffa", null ], + [ "pickSwapChainExtent", "classne_1_1VulkanRenderer.html#ac673f06adac6b10b0d9773de553873d9", null ], + [ "prepareForDrawingNextFrame", "classne_1_1VulkanRenderer.html#aedbedcc94ae5a0149ef01122c578fd68", null ], + [ "prepareRenderTargetForNextFrame", "classne_1_1VulkanRenderer.html#aeda042e148260fe4693b728775a91740", null ], + [ "present", "classne_1_1VulkanRenderer.html#a1a5e581efdf77fd3e927a5a58d4f89da", null ], + [ "queryQueueFamilyIndices", "classne_1_1VulkanRenderer.html#a1676cee71601db7969ab9993bfedb590", null ], + [ "querySwapChainSupportDetails", "classne_1_1VulkanRenderer.html#a47b70ab9bf361cd01f7ccac5545766ba", null ], + [ "rateGpuSuitability", "classne_1_1VulkanRenderer.html#a4690a07dc723725e760768b1a454ec01", null ], + [ "recreateSwapChainAndDependentResources", "classne_1_1VulkanRenderer.html#ab7a93662bc19a87d3df0afe21466941a", null ], + [ "setObjectDebugOnlyName", "classne_1_1VulkanRenderer.html#a73e8afa9d6e86aeb33be8fa1c453c8e3", null ], + [ "startDepthOnlyRenderPass", "classne_1_1VulkanRenderer.html#a4f4d6c9fdc4a49289136ba7d47946b38", null ], + [ "startMainRenderPass", "classne_1_1VulkanRenderer.html#ac02641d6d9eb0a4da9d07eca2f6df847", null ], + [ "startShadowMappingRenderPass", "classne_1_1VulkanRenderer.html#adc006ddec7ab5d6a4e495efaff01058a", null ], + [ "submitWaitDestroyOneTimeSubmitCommandBuffer", "classne_1_1VulkanRenderer.html#a5be101433f7df8f6fedfd7d4d3f4985e", null ], + [ "transitionImageLayout", "classne_1_1VulkanRenderer.html#a363deaf734f4f58cd5106a0c8a0802ae", null ], + [ "updateMsaaSampleCount", "classne_1_1VulkanRenderer.html#a8a8c74ba10f06441ddcdc4cb989e7aec", null ], + [ "waitForGpuToFinishUsingFrameResource", "classne_1_1VulkanRenderer.html#afa790a607caa70247e134dfc452a0a49", null ], + [ "waitForGpuToFinishWorkUpToThisPoint", "classne_1_1VulkanRenderer.html#a3ba1205f16b9038da69db0c001550943", null ], + [ "bIsBeingDestroyed", "classne_1_1VulkanRenderer.html#a4c02c3788b4cbf31e171783c416ce3b0", null ], + [ "bIsUsingMsaaRenderTarget", "classne_1_1VulkanRenderer.html#a75bf971931daf9f0ca0adb71e763c4a8", null ], + [ "bIsVulkanInitialized", "classne_1_1VulkanRenderer.html#a24ef179470bc3740973f5f94567310b9", null ], + [ "bNeedToRecreateSwapchain", "classne_1_1VulkanRenderer.html#a260f960d9ffa0f044738eff73bdd4784", null ], + [ "depthImageFormat", "classne_1_1VulkanRenderer.html#a277331e6e8951e7db11500a9adde3639", null ], + [ "depthImageTiling", "classne_1_1VulkanRenderer.html#a59b309f5f59fed39563d3fe2893b82d1", null ], + [ "depthResolveMode", "classne_1_1VulkanRenderer.html#a5f2687dad58c52e725cda098c14582e0", null ], + [ "iCurrentImageSemaphore", "classne_1_1VulkanRenderer.html#ad760e367dfdc6635cd2e4d8cd8c0f9ab", null ], + [ "iDepthOnlyRenderPassDepthImageAttachmentIndex", "classne_1_1VulkanRenderer.html#a7a02beb2a5ddf30d137775ae689b7e42", null ], + [ "iDepthOnlyRenderPassDepthResolveTargetAttachmentIndex", "classne_1_1VulkanRenderer.html#aaadb8a4947d61794e42e754432015a26", null ], + [ "iLastAcquiredImageIndex", "classne_1_1VulkanRenderer.html#a7fcba807d95a120c70073fc34ee004ac", null ], + [ "iMainRenderPassColorAttachmentIndex", "classne_1_1VulkanRenderer.html#a1de07c4ad8280ce9dad181aa053bbc64", null ], + [ "iMainRenderPassColorResolveTargetAttachmentIndex", "classne_1_1VulkanRenderer.html#adf90eae1124256195e3940020aba0072", null ], + [ "iMainRenderPassDepthAttachmentIndex", "classne_1_1VulkanRenderer.html#a92ba65d4956388418e59bc6deb8b613e", null ], + [ "indexTypeFormat", "classne_1_1VulkanRenderer.html#a97bd70cca7ae7440e0cbe802ca81447f", null ], + [ "iSwapChainImageCount", "classne_1_1VulkanRenderer.html#a35cf860ba0c5cfee1a3b004e3059ebfb", null ], + [ "iUsedVulkanVersion", "classne_1_1VulkanRenderer.html#af53d53fb3c12c28b016fda142cdd18f2", null ], + [ "msaaSampleCount", "classne_1_1VulkanRenderer.html#a9b42f573c4591e2778172503d8cd4d0d", null ], + [ "pCommandPool", "classne_1_1VulkanRenderer.html#a26466d01d327fa6c08f70952c1c4fcd1", null ], + [ "pComputeTextureSampler", "classne_1_1VulkanRenderer.html#a5bcf2cea84ab332c38127a6730281b82", null ], + [ "pDepthImage", "classne_1_1VulkanRenderer.html#a381afdbdc2e4df87806f51a443f02b62", null ], + [ "pDepthImageNoMultisampling", "classne_1_1VulkanRenderer.html#a6eae1fbd4b5d52b925ddf1521d8d7d58", null ], + [ "pDepthOnlyRenderPass", "classne_1_1VulkanRenderer.html#aef93999ba66bac87974a444092be9a52", null ], + [ "pGraphicsQueue", "classne_1_1VulkanRenderer.html#af94ec4223715e882d2a6a10fce46875a", null ], + [ "physicalDeviceQueueFamilyIndices", "classne_1_1VulkanRenderer.html#a8632129baa17acf6324c4ff9cf4fb6f8", null ], + [ "pInstance", "classne_1_1VulkanRenderer.html#ae7d8f3d9cbc80dfec91abfc84f8f4ef1", null ], + [ "pLogicalDevice", "classne_1_1VulkanRenderer.html#a4b72ac67263d9e718f95214a823c8865", null ], + [ "pMainRenderPass", "classne_1_1VulkanRenderer.html#aecd3c39cbed7a71daca4113101946452", null ], + [ "pMsaaImage", "classne_1_1VulkanRenderer.html#a57a6cc1e77934c7974abcf2fafa4e13e", null ], + [ "pPhysicalDevice", "classne_1_1VulkanRenderer.html#aaf590460af70c900d8f03e7f9c039b5a", null ], + [ "pPresentQueue", "classne_1_1VulkanRenderer.html#a57df121e6648a8ecf76af55bc3e7436d", null ], + [ "pShadowMappingDirectionalSpotRenderPass", "classne_1_1VulkanRenderer.html#a68e87cc69b9b840872f5a3bc67a4be30", null ], + [ "pShadowMappingPointRenderPass", "classne_1_1VulkanRenderer.html#a0c5aaea6b30613e856567eec78172039", null ], + [ "pShadowTextureSampler", "classne_1_1VulkanRenderer.html#affc1856c23bbdf9a97819a2cc9fcd6d7", null ], + [ "pSwapChain", "classne_1_1VulkanRenderer.html#ac76aec9c5294592503420f83df985759", null ], + [ "pTextureSampler", "classne_1_1VulkanRenderer.html#a7067d9ed480a9f4dd1d798ab38d84bf3", null ], + [ "pWindowSurface", "classne_1_1VulkanRenderer.html#adc4ef9ce95ed2cd2985a75e2a669dfda", null ], + [ "shadowMapFormat", "classne_1_1VulkanRenderer.html#ae373f4efe6fdfd5e0b6bb7c11744b2ab", null ], + [ "shadowMappingPointLightColorTargetFormat", "classne_1_1VulkanRenderer.html#a8c6e8c90a17cdd220d2e283f6d477b07", null ], + [ "stencilResolveMode", "classne_1_1VulkanRenderer.html#abe61b6d29c18f3fe82834ab9cadab702", null ], + [ "sUsedGpuName", "classne_1_1VulkanRenderer.html#ac4db7fe74b51ff3cc4f9f6aadff8dc6c", null ], + [ "swapChainExtent", "classne_1_1VulkanRenderer.html#a2c46a9d3b0553c0a990bda93c7cbe6c9", null ], + [ "swapChainImageColorSpace", "classne_1_1VulkanRenderer.html#a48bc1b785d9580a11a7607f5bc27654c", null ], + [ "swapChainImageFormat", "classne_1_1VulkanRenderer.html#ae8b79b60342a809010a052fa71970066", null ], + [ "vImageSemaphores", "classne_1_1VulkanRenderer.html#a929cdba2f3e2706c1c3b505f7f349377", null ], + [ "vSupportedGpuNames", "classne_1_1VulkanRenderer.html#a5f265697a9a8b83fbfe4753510b24763", null ], + [ "vSwapChainFramebuffersDepthOnlyRenderPass", "classne_1_1VulkanRenderer.html#ab4083804472a4c73560767f159f8486c", null ], + [ "vSwapChainFramebuffersMainRenderPass", "classne_1_1VulkanRenderer.html#af71551705046c22f849d76ad47cdd732", null ], + [ "vSwapChainImageFenceRefs", "classne_1_1VulkanRenderer.html#af43ae0ffb38e78bf0ba8f08b3f45cd44", null ], + [ "vSwapChainImages", "classne_1_1VulkanRenderer.html#ad4c109ccbb605587115f78f679b9cd99", null ], + [ "vSwapChainImageViews", "classne_1_1VulkanRenderer.html#a00ab177c322afec734df3855099a18ce", null ], + [ "vUsedDeviceExtensionNames", "classne_1_1VulkanRenderer.html#a7f63236458627346b36fd4f34ec22850", null ] +]; \ No newline at end of file diff --git a/classne_1_1VulkanRenderer.png b/classne_1_1VulkanRenderer.png new file mode 100644 index 0000000000000000000000000000000000000000..4703c1eb0e8959194668cb2160d33d87e04c1e27 GIT binary patch literal 533 zcmV+w0_y#VP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0004? zNklyrfCNHY9Df4mQxU#8^}8f_sLSv}&YR(B@wvNg;ajs#QO&h$Ym)5f6uvI8qts=Zb)Ytznk0KV zcdj}1ncFcp(~Bf~dIhdCRt?>o4z72mYLe{fMd!^k-%i6KBUUEut|rNj;`K_B!xeCn9IlUs=bZB-0l*J*1AtkY3BTPY(r3aK_B{Gj_y?yw z-~cdQ0SAEL3OE1^SHJ;axB?CU!xeA<7_NW=z;Fc|0KTD=Qko?s5s^6xxQNJb{ayGr zR3|J|Z}vU7A|j2R7<&u+kn<`$Ee3WQ_GYDW?X&iK3fy$p@7i3uwl;9JvaTAq{#|G4 zd+Rp!GOl*c4f4==8Pv3gWw-wW4+YS`ZFu$rYT(-}zkaW4cBbkh=O!^8?oPrVdwj X?W<;_X9iKb00000NkvXXu0mjf*% + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::VulkanResource Member List
+
+
+ +

This is the complete list of members for ne::VulkanResource, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
create(VulkanResourceManager *pResourceManager, const std::string &sResourceName, VmaAllocator pMemoryAllocator, const VkBufferCreateInfo &bufferInfo, const VmaAllocationCreateInfo &allocationInfo, unsigned int iElementSizeInBytes, unsigned int iElementCount)ne::VulkanResourceprivatestatic
create(VulkanResourceManager *pResourceManager, const std::string &sResourceName, VmaAllocator pMemoryAllocator, const VkImageCreateInfo &imageInfo, const VmaAllocationCreateInfo &allocationInfo, std::optional< VkImageAspectFlags > viewDescription, bool bIsCubeMapView=false)ne::VulkanResourceprivatestatic
create(VulkanResourceManager *pResourceManager, const std::string &sResourceName, ktxVulkanTexture ktxTexture)ne::VulkanResourceprivatestatic
getElementCount() constne::GpuResource
getElementSizeInBytes() constne::GpuResource
getInternalBufferResource() constne::VulkanResourceinline
getInternalCubemapImageView(size_t iCubemapFaceIndex=0)ne::VulkanResourceinline
getInternalImage() constne::VulkanResourceinline
getInternalImageView() constne::VulkanResourceinline
getInternalImageViewDepthAspect() constne::VulkanResourceinline
getInternalResourceMemory()ne::VulkanResourceinline
getResourceManager() constne::GpuResource
getResourceName() constne::GpuResource
GpuResource()=delete (defined in ne::GpuResource)ne::GpuResource
GpuResource(GpuResourceManager *pManager, const std::string &sResourceName, unsigned int iElementSizeInBytes, unsigned int iElementCount)ne::GpuResource
GpuResource(GpuResource &)=delete (defined in ne::GpuResource)ne::GpuResource
iElementCountne::GpuResourceprivate
iElementSizeInBytesne::GpuResourceprivate
isStorageResource() constne::VulkanResource
isUsedAsStorageResourcene::VulkanResourceprivate
mtxResourceMemoryne::VulkanResourceprivate
operator=(const VulkanResource &)=delete (defined in ne::VulkanResource)ne::VulkanResource
operator=(GpuResource &)=delete (defined in ne::GpuResource)ne::GpuResource
optionalKtxTexturene::VulkanResourceprivate
pBufferResourcene::VulkanResourceprivate
pDepthAspectImageViewne::VulkanResourceprivate
pGlobalShaderResourceBindingne::GpuResourceprivate
pImageResourcene::VulkanResourceprivate
pImageViewne::VulkanResourceprivate
pManagerne::GpuResourceprivate
sResourceNamene::GpuResourceprivate
vCubeMapViewsne::VulkanResourceprivate
VulkanResource()=delete (defined in ne::VulkanResource)ne::VulkanResource
VulkanResource(const VulkanResource &)=delete (defined in ne::VulkanResource)ne::VulkanResource
VulkanResource(VulkanResourceManager *pResourceManager, const std::string &sResourceName, std::variant< VkBuffer, VkImage > pInternalResource, bool isStorageResource, VmaAllocation pResourceMemory, unsigned int iElementSizeInBytes, unsigned int iElementCount)ne::VulkanResourceprivate
VulkanResource(VulkanResourceManager *pResourceManager, const std::string &sResourceName, ktxVulkanTexture ktxTexture)ne::VulkanResourceprivate
VulkanResourceManager (defined in ne::VulkanResource)ne::VulkanResourcefriend
~GpuResource() (defined in ne::GpuResource)ne::GpuResourcevirtual
~VulkanResource() override (defined in ne::VulkanResource)ne::VulkanResourcevirtual
+
+ + + + diff --git a/classne_1_1VulkanResource.html b/classne_1_1VulkanResource.html new file mode 100644 index 000000000..c8e33657e --- /dev/null +++ b/classne_1_1VulkanResource.html @@ -0,0 +1,953 @@ + + + + + + + +Nameless Engine: ne::VulkanResource Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <VulkanResource.h>

+
+Inheritance diagram for ne::VulkanResource:
+
+
+ + +ne::GpuResource + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

VulkanResource (const VulkanResource &)=delete
 
+VulkanResourceoperator= (const VulkanResource &)=delete
 
VkBuffer getInternalBufferResource () const
 
VkImageView getInternalImageView () const
 
VkImageView getInternalCubemapImageView (size_t iCubemapFaceIndex=0)
 
VkImageView getInternalImageViewDepthAspect () const
 
VkImage getInternalImage () const
 
bool isStorageResource () const
 
std::pair< std::recursive_mutex, VmaAllocation > * getInternalResourceMemory ()
 
- Public Member Functions inherited from ne::GpuResource
 GpuResource (GpuResourceManager *pManager, const std::string &sResourceName, unsigned int iElementSizeInBytes, unsigned int iElementCount)
 
GpuResource (GpuResource &)=delete
 
+GpuResourceoperator= (GpuResource &)=delete
 
std::string getResourceName () const
 
unsigned int getElementSizeInBytes () const
 
unsigned int getElementCount () const
 
GpuResourceManagergetResourceManager () const
 
+ + + + + +

+Private Member Functions

 VulkanResource (VulkanResourceManager *pResourceManager, const std::string &sResourceName, std::variant< VkBuffer, VkImage > pInternalResource, bool isStorageResource, VmaAllocation pResourceMemory, unsigned int iElementSizeInBytes, unsigned int iElementCount)
 
 VulkanResource (VulkanResourceManager *pResourceManager, const std::string &sResourceName, ktxVulkanTexture ktxTexture)
 
+ + + + + + + +

+Static Private Member Functions

static std::variant< std::unique_ptr< VulkanResource >, Errorcreate (VulkanResourceManager *pResourceManager, const std::string &sResourceName, VmaAllocator pMemoryAllocator, const VkBufferCreateInfo &bufferInfo, const VmaAllocationCreateInfo &allocationInfo, unsigned int iElementSizeInBytes, unsigned int iElementCount)
 
static std::variant< std::unique_ptr< VulkanResource >, Errorcreate (VulkanResourceManager *pResourceManager, const std::string &sResourceName, VmaAllocator pMemoryAllocator, const VkImageCreateInfo &imageInfo, const VmaAllocationCreateInfo &allocationInfo, std::optional< VkImageAspectFlags > viewDescription, bool bIsCubeMapView=false)
 
static std::variant< std::unique_ptr< VulkanResource >, Errorcreate (VulkanResourceManager *pResourceManager, const std::string &sResourceName, ktxVulkanTexture ktxTexture)
 
+ + + + + + + + + + + + + + + + + +

+Private Attributes

std::optional< ktxVulkanTexture > optionalKtxTexture
 
VkBuffer pBufferResource = nullptr
 
VkImage pImageResource = nullptr
 
VkImageView pImageView = nullptr
 
VkImageView pDepthAspectImageView = nullptr
 
std::vector< VkImageView > vCubeMapViews
 
std::pair< std::recursive_mutex, VmaAllocation > mtxResourceMemory
 
const bool isUsedAsStorageResource = false
 
+ + + +

+Friends

+class VulkanResourceManager
 
+

Detailed Description

+

Vulkan buffer/memory wrapper.

+

Constructor & Destructor Documentation

+ +

◆ VulkanResource() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ne::VulkanResource::VulkanResource (VulkanResourceManagerpResourceManager,
const std::string & sResourceName,
std::variant< VkBuffer, VkImage > pInternalResource,
bool isStorageResource,
VmaAllocation pResourceMemory,
unsigned int iElementSizeInBytes,
unsigned int iElementCount 
)
+
+private
+
+

Constructor. Creates an empty resource.

+
Parameters
+ + + + + + + + +
pResourceManagerOwner resource manager.
sResourceNameName of the resource.
pInternalResourceCreated Vulkan resource.
isStorageResourceDefines if this resource is a storage buffer/image or not.
pResourceMemoryAllocated memory for the created Vulkan resource.
iElementSizeInBytesResource size information. Size of one array element (if array), otherwise specify size of the whole resource.
iElementCountResource size information. Total number of elements in the array (if array), otherwise specify 1.
+
+
+ +
+
+ +

◆ VulkanResource() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ne::VulkanResource::VulkanResource (VulkanResourceManagerpResourceManager,
const std::string & sResourceName,
ktxVulkanTexture ktxTexture 
)
+
+private
+
+

Constructor. Initializes resources as a wrapper for KTX image.

+
Parameters
+ + + + +
pResourceManagerOwner resource manager.
sResourceNameName of the resource.
ktxTextureCreated KTX texture (already loaded in the GPU memory) that this resource will wrap.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ create() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< VulkanResource >, Error > ne::VulkanResource::create (VulkanResourceManagerpResourceManager,
const std::string & sResourceName,
ktxVulkanTexture ktxTexture 
)
+
+staticprivate
+
+

Creates a new image resource.

+
Parameters
+ + + + +
pResourceManagerOwner resource manager.
sResourceNameResource name, used for logging.
ktxTextureCreated KTX texture (already loaded in the GPU memory) that this resource will wrap.
+
+
+
Returns
Error if something went wrong, otherwise created resource.
+ +
+
+ +

◆ create() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< VulkanResource >, Error > ne::VulkanResource::create (VulkanResourceManagerpResourceManager,
const std::string & sResourceName,
VmaAllocator pMemoryAllocator,
const VkBufferCreateInfo & bufferInfo,
const VmaAllocationCreateInfo & allocationInfo,
unsigned int iElementSizeInBytes,
unsigned int iElementCount 
)
+
+staticprivate
+
+

Creates a new buffer resource.

+
Parameters
+ + + + + + + + +
pResourceManagerOwner resource manager.
sResourceNameResource name, used for logging.
pMemoryAllocatorAllocator to create resource.
bufferInfoBuffer creation info.
allocationInfoAllocation creation info.
iElementSizeInBytesResource size information. Size of one array element (if array), otherwise specify size of the whole resource.
iElementCountResource size information. Total number of elements in the array (if array), otherwise specify 1.
+
+
+
Returns
Error if something went wrong, otherwise created resource.
+ +
+
+ +

◆ create() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< VulkanResource >, Error > ne::VulkanResource::create (VulkanResourceManagerpResourceManager,
const std::string & sResourceName,
VmaAllocator pMemoryAllocator,
const VkImageCreateInfo & imageInfo,
const VmaAllocationCreateInfo & allocationInfo,
std::optional< VkImageAspectFlags > viewDescription,
bool bIsCubeMapView = false 
)
+
+staticprivate
+
+

Creates a new image resource.

+
Parameters
+ + + + + + + + +
pResourceManagerOwner resource manager.
sResourceNameResource name, used for logging.
pMemoryAllocatorAllocator to create resource.
imageInfoImage creation info.
allocationInfoAllocation creation info.
viewDescriptionIf specified also creates an image view that references the image.
bIsCubeMapViewtrue to create a view to a cubemap, false to create a 2D texture view. Ignored if view description is not specified.
+
+
+
Returns
Error if something went wrong, otherwise created resource.
+ +
+
+ +

◆ getInternalBufferResource()

+ +
+
+ + + + + +
+ + + + + + + +
VkBuffer ne::VulkanResource::getInternalBufferResource () const
+
+inline
+
+

Returns internal buffer resource.

+
Remarks
Do not delete (free) returned pointer.
+
+Returned pointer is only valid while this object is valid.
+
Returns
nullptr if this resource uses image as internal resource not a buffer, otherwise internal buffer resource.
+ +
+
+ +

◆ getInternalCubemapImageView()

+ +
+
+ + + + + +
+ + + + + + + + +
VkImageView ne::VulkanResource::getInternalCubemapImageView (size_t iCubemapFaceIndex = 0)
+
+inline
+
+

Returns internal image view for cubemap textures.

+
Remarks
Do not delete (free) returned pointer.
+
+Returned pointer is only valid while this object is valid.
+
Parameters
+ + +
iCubemapFaceIndexIndex of the cubemap face to get the view to.
+
+
+
Returns
nullptr if this resource uses buffer as internal resource not an image or not a cubemap, otherwise internal image view.
+ +
+
+ +

◆ getInternalImage()

+ +
+
+ + + + + +
+ + + + + + + +
VkImage ne::VulkanResource::getInternalImage () const
+
+inline
+
+

Returns internal image.

+
Remarks
Do not delete (free) returned pointer.
+
+Returned pointer is only valid while this object is valid.
+
Returns
nullptr if this resource uses buffer as internal resource not an image, otherwise internal image.
+ +
+
+ +

◆ getInternalImageView()

+ +
+
+ + + + + +
+ + + + + + + +
VkImageView ne::VulkanResource::getInternalImageView () const
+
+inline
+
+

Returns internal image view.

+
Remarks
Do not delete (free) returned pointer.
+
+Returned pointer is only valid while this object is valid.
+
Returns
nullptr if this resource uses buffer as internal resource not an image, otherwise internal image view.
+ +
+
+ +

◆ getInternalImageViewDepthAspect()

+ +
+
+ + + + + +
+ + + + + + + +
VkImageView ne::VulkanResource::getInternalImageViewDepthAspect () const
+
+inline
+
+

Returns internal image view that only references depth aspect of the image.

+
Remarks
Do not delete (free) returned pointer.
+
+Returned pointer is only valid while this object is valid.
+
Returns
Image view that only references depth aspect if the image was created with depth and stencil aspects, otherwise nullptr.
+ +
+
+ +

◆ getInternalResourceMemory()

+ +
+
+ + + + + +
+ + + + + + + +
std::pair< std::recursive_mutex, VmaAllocation > * ne::VulkanResource::getInternalResourceMemory ()
+
+inline
+
+

Returns memory allocation of the internal resource.

+
Remarks
Do not delete (free) returned pointer.
+
+Returned pointer is only valid while this object is valid.
+
Returns
Memory allocation of the internal resource.
+ +
+
+ +

◆ isStorageResource()

+ +
+
+ + + + + + + +
bool ne::VulkanResource::isStorageResource () const
+
+

Tells if this resource is a storage buffer/image or not.

+
Returns
Storage bit from resource usage.
+ +
+
+

Member Data Documentation

+ +

◆ isUsedAsStorageResource

+ +
+
+ + + + + +
+ + + + +
const bool ne::VulkanResource::isUsedAsStorageResource = false
+
+private
+
+

Defines if this resource is a storage buffer/image or not.

+ +
+
+ +

◆ mtxResourceMemory

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, VmaAllocation> ne::VulkanResource::mtxResourceMemory
+
+private
+
+

Allocated memory for created resource.

+
Remarks
Using mutex because "access to a VmaAllocation object must be externally synchronized".
+ +
+
+ +

◆ optionalKtxTexture

+ +
+
+ + + + + +
+ + + + +
std::optional<ktxVulkanTexture> ne::VulkanResource::optionalKtxTexture
+
+private
+
+

Not empty if the object was created as a wrapper around KTX texture.

+ +
+
+ +

◆ pBufferResource

+ +
+
+ + + + + +
+ + + + +
VkBuffer ne::VulkanResource::pBufferResource = nullptr
+
+private
+
+

Created buffer Vulkan resource.

+
Remarks
nullptr if pImageResource is used.
+ +
+
+ +

◆ pDepthAspectImageView

+ +
+
+ + + + + +
+ + + + +
VkImageView ne::VulkanResource::pDepthAspectImageView = nullptr
+
+private
+
+

Optional view that references pImageResource depth aspect.

+
Remarks
Only used when pImageResource specified both depth and stencil aspects.
+ +
+
+ +

◆ pImageResource

+ +
+
+ + + + + +
+ + + + +
VkImage ne::VulkanResource::pImageResource = nullptr
+
+private
+
+

Created image Vulkan resource.

+
Remarks
nullptr if pBufferResource is used.
+ +
+
+ +

◆ pImageView

+ +
+
+ + + + + +
+ + + + +
VkImageView ne::VulkanResource::pImageView = nullptr
+
+private
+
+

Optional view that references pImageResource.

+ +
+
+ +

◆ vCubeMapViews

+ +
+
+ + + + + +
+ + + + +
std::vector<VkImageView> ne::VulkanResource::vCubeMapViews
+
+private
+
+

Views to each face of the cubemap texture (only valid if the resource is a cubemap texture).

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/vulkan/resource/VulkanResource.h
  • +
  • src/engine_lib/private/render/vulkan/resource/VulkanResource.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1VulkanResource.js b/classne_1_1VulkanResource.js new file mode 100644 index 000000000..f33ba5ca8 --- /dev/null +++ b/classne_1_1VulkanResource.js @@ -0,0 +1,23 @@ +var classne_1_1VulkanResource = +[ + [ "VulkanResource", "classne_1_1VulkanResource.html#a86c3e8d31717ebe606c73583c427b296", null ], + [ "VulkanResource", "classne_1_1VulkanResource.html#a1726eea36c762dad94d8126dcf9d93cd", null ], + [ "create", "classne_1_1VulkanResource.html#ac7ef62c793386a8c4516c0ed8b9f0830", null ], + [ "create", "classne_1_1VulkanResource.html#a676b4c1ad0f17d0aeec309b2b0887457", null ], + [ "create", "classne_1_1VulkanResource.html#acf5a6afb5245c1b11692f8bd578e2442", null ], + [ "getInternalBufferResource", "classne_1_1VulkanResource.html#a4d203427f5eea6ddcff4096259adc4be", null ], + [ "getInternalCubemapImageView", "classne_1_1VulkanResource.html#af06df7d7876bcb54051a070af1b4b7dc", null ], + [ "getInternalImage", "classne_1_1VulkanResource.html#a32d12a5637f2a970ab6f0d45a66c70e8", null ], + [ "getInternalImageView", "classne_1_1VulkanResource.html#ad1dd065e7c59ef45f351eb6f4bdb1de7", null ], + [ "getInternalImageViewDepthAspect", "classne_1_1VulkanResource.html#af77930223a146475d8877c30114da79e", null ], + [ "getInternalResourceMemory", "classne_1_1VulkanResource.html#a070df83c8b0b49122e0b8b4dc617d613", null ], + [ "isStorageResource", "classne_1_1VulkanResource.html#a07219fb46896d75ea8d1e3c7c5d7851f", null ], + [ "isUsedAsStorageResource", "classne_1_1VulkanResource.html#aa0af1158058bedb20deafa96a8997810", null ], + [ "mtxResourceMemory", "classne_1_1VulkanResource.html#a08ed78ff874115fd27193ec035640ed5", null ], + [ "optionalKtxTexture", "classne_1_1VulkanResource.html#a7eaddd98e847c4cf5000760425b2efc0", null ], + [ "pBufferResource", "classne_1_1VulkanResource.html#ae0e824896e06ba2dc43a7a679af51e87", null ], + [ "pDepthAspectImageView", "classne_1_1VulkanResource.html#a2601eb9e4603339359aa13f98e52563a", null ], + [ "pImageResource", "classne_1_1VulkanResource.html#aa7c6b5023f1eab54948b5a52a716e476", null ], + [ "pImageView", "classne_1_1VulkanResource.html#ae5a145e3090f1c31779c8715ae474826", null ], + [ "vCubeMapViews", "classne_1_1VulkanResource.html#a697691b6e834be227f9364c784c1b6dd", null ] +]; \ No newline at end of file diff --git a/classne_1_1VulkanResource.png b/classne_1_1VulkanResource.png new file mode 100644 index 0000000000000000000000000000000000000000..78b9f239b8ee5ec9e5150881003b338d9927926e GIT binary patch literal 571 zcmeAS@N?(olHy`uVBq!ia0vp^wLl!e!3-psbGrTmDd_;85ZC|zLChC#zLxeMT5e&W zSs*d}%!>mD4gkf2CtY3vl;bQ3@(X4F^1;BIY4#Nc2F7EaE{-7;jBn>&%+prnacOt# zdiH<+j@deq&AyY)`i9ud!~KRev|rJ@nqxcq!`tc zo9Ar4FXLzu4`i`a-}K6A?Va^5_3?)7H|iD_^7d%T-~7HsZAbPp{pTCMz23JtzACPo z$M%(U{Jr1zey)E>ZfA!rjyRH2jCr|F(I{A(L^1ORi z8EpQ+*Ac=vhQJQev*H~))Gl8G#vbSB}Zr%`iB_1djz zj12Mxj14A1Z>M`Nv%9+Qr100B-|THapXOuG)Ujqr+3<#8!of|<4s1XHNhE;-`vbi+ zGZ%OS37yvSl>Br2+uy0IIsThp-2UQq>2^(bZO^17lV!ebntFjt@^hKYe6g$FWWH_N z?w=AbI-**;hI*~2s5m-;uqnKb3#Chs7&m*0ZCPCnxPsFq&S_`F&W7|jfxu6{1- HoD!M<0W2Ls literal 0 HcmV?d00001 diff --git a/classne_1_1VulkanResourceManager-members.html b/classne_1_1VulkanResourceManager-members.html new file mode 100644 index 000000000..380a2f139 --- /dev/null +++ b/classne_1_1VulkanResourceManager-members.html @@ -0,0 +1,150 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::VulkanResourceManager Member List
+
+
+ +

This is the complete list of members for ne::VulkanResourceManager, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
convertResourceUsageTypeToVkBufferUsageType(ResourceUsageType usage)ne::VulkanResourceManagerprivatestatic
convertTextureResourceFormatToVkFormat(ShaderReadWriteTextureResourceFormat format)ne::VulkanResourceManagerstatic
create(VulkanRenderer *pRenderer)ne::VulkanResourceManagerstatic
ne::GpuResourceManager::create(Renderer *pRenderer)ne::GpuResourceManagerprotectedstatic
createBuffer(const std::string &sResourceName, const VkBufferCreateInfo &bufferInfo, const VmaAllocationCreateInfo &allocationInfo, unsigned int iElementSizeInBytes, unsigned int iElementCount)ne::VulkanResourceManager
createBuffer(const std::string &sResourceName, VkDeviceSize iBufferSize, VkBufferUsageFlags bufferUsage, bool bAllowCpuWrite, unsigned int iElementSizeInBytes, unsigned int iElementCount)ne::VulkanResourceManagerprivate
createImage(const std::string &sResourceName, uint32_t iImageWidth, uint32_t iImageHeight, uint32_t iTextureMipLevelCount, VkSampleCountFlagBits sampleCount, VkFormat imageFormat, VkImageTiling imageTilingMode, VkImageUsageFlags imageUsage, std::optional< VkImageAspectFlags > viewDescription, bool bIsCubeMap=false)ne::VulkanResourceManager
createRendererSpecificManager(Renderer *pRenderer)ne::GpuResourceManagerprotectedstatic
createResource(const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource) overridene::VulkanResourceManagervirtual
createResourceWithCpuWriteAccess(const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, std::optional< bool > isUsedInShadersAsArrayResource) overridene::VulkanResourceManagervirtual
createResourceWithData(const std::string &sResourceName, const void *pBufferData, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource) overridene::VulkanResourceManagervirtual
createShaderReadWriteTextureResource(const std::string &sResourceName, unsigned int iWidth, unsigned int iHeight, ShaderReadWriteTextureResourceFormat format) overridene::VulkanResourceManagervirtual
createShadowMapTexture(const std::string &sResourceName, unsigned int iTextureSize, bool bPointLightColorCubemap) overridene::VulkanResourceManagerprivatevirtual
getCurrentStateInfo() overridene::VulkanResourceManagervirtual
getDynamicCpuWriteShaderResourceArrayManager() constne::GpuResourceManager
getRenderer() constne::GpuResourceManager
getShadowMapManager() constne::GpuResourceManager
getTextureManager() constne::GpuResourceManager
getTotalAliveResourceCount()ne::GpuResourceManager
getTotalVideoMemoryInMb() const overridene::VulkanResourceManagervirtual
getUsedVideoMemoryInMb() const overridene::VulkanResourceManagervirtual
GpuResourceManager()=delete (defined in ne::GpuResourceManager)ne::GpuResourceManager
GpuResourceManager(Renderer *pRenderer)ne::GpuResourceManagerprotected
iAliveResourceCountne::GpuResourceManagerprivate
KtxLoadingCallbackManager (defined in ne::VulkanResourceManager)ne::VulkanResourceManagerfriend
loadTextureFromDisk(const std::string &sResourceName, const std::filesystem::path &pathToTextureFile) overridene::VulkanResourceManagervirtual
operator=(const VulkanResourceManager &)=delete (defined in ne::VulkanResourceManager)ne::VulkanResourceManager
pDynamicCpuWriteShaderResourceArrayManagerne::GpuResourceManagerprivate
pMemoryAllocatorne::VulkanResourceManagerprivate
pRendererne::GpuResourceManagerprivate
pShadowMapManagerne::GpuResourceManagerprivate
pTextureManagerne::GpuResourceManagerprivate
resetManagers()ne::GpuResourceManagerprotected
UploadBuffer (defined in ne::VulkanResourceManager)ne::VulkanResourceManagerfriend
VulkanResource (defined in ne::VulkanResourceManager)ne::VulkanResourceManagerfriend
VulkanResourceManager()=delete (defined in ne::VulkanResourceManager)ne::VulkanResourceManager
VulkanResourceManager(const VulkanResourceManager &)=delete (defined in ne::VulkanResourceManager)ne::VulkanResourceManager
VulkanResourceManager(VulkanRenderer *pRenderer, VmaAllocator pMemoryAllocator)ne::VulkanResourceManagerprivate
~GpuResourceManager()=default (defined in ne::GpuResourceManager)ne::GpuResourceManagervirtual
~VulkanResourceManager() override (defined in ne::VulkanResourceManager)ne::VulkanResourceManagervirtual
+
+ + + + diff --git a/classne_1_1VulkanResourceManager.html b/classne_1_1VulkanResourceManager.html new file mode 100644 index 000000000..bb5e6fec4 --- /dev/null +++ b/classne_1_1VulkanResourceManager.html @@ -0,0 +1,1110 @@ + + + + + + + +Nameless Engine: ne::VulkanResourceManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <VulkanResourceManager.h>

+
+Inheritance diagram for ne::VulkanResourceManager:
+
+
+ + +ne::GpuResourceManager + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

VulkanResourceManager (const VulkanResourceManager &)=delete
 
+VulkanResourceManageroperator= (const VulkanResourceManager &)=delete
 
virtual size_t getTotalVideoMemoryInMb () const override
 
virtual size_t getUsedVideoMemoryInMb () const override
 
std::variant< std::unique_ptr< VulkanResource >, ErrorcreateBuffer (const std::string &sResourceName, const VkBufferCreateInfo &bufferInfo, const VmaAllocationCreateInfo &allocationInfo, unsigned int iElementSizeInBytes, unsigned int iElementCount)
 
std::variant< std::unique_ptr< VulkanResource >, ErrorcreateImage (const std::string &sResourceName, uint32_t iImageWidth, uint32_t iImageHeight, uint32_t iTextureMipLevelCount, VkSampleCountFlagBits sampleCount, VkFormat imageFormat, VkImageTiling imageTilingMode, VkImageUsageFlags imageUsage, std::optional< VkImageAspectFlags > viewDescription, bool bIsCubeMap=false)
 
virtual std::variant< std::unique_ptr< GpuResource >, ErrorloadTextureFromDisk (const std::string &sResourceName, const std::filesystem::path &pathToTextureFile) override
 
virtual std::variant< std::unique_ptr< UploadBuffer >, ErrorcreateResourceWithCpuWriteAccess (const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, std::optional< bool > isUsedInShadersAsArrayResource) override
 
virtual std::variant< std::unique_ptr< GpuResource >, ErrorcreateResourceWithData (const std::string &sResourceName, const void *pBufferData, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource) override
 
virtual std::variant< std::unique_ptr< GpuResource >, ErrorcreateResource (const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource) override
 
virtual std::variant< std::unique_ptr< GpuResource >, ErrorcreateShaderReadWriteTextureResource (const std::string &sResourceName, unsigned int iWidth, unsigned int iHeight, ShaderReadWriteTextureResourceFormat format) override
 
virtual std::string getCurrentStateInfo () override
 
- Public Member Functions inherited from ne::GpuResourceManager
virtual size_t getTotalVideoMemoryInMb () const =0
 
virtual size_t getUsedVideoMemoryInMb () const =0
 
virtual std::variant< std::unique_ptr< GpuResource >, ErrorloadTextureFromDisk (const std::string &sResourceName, const std::filesystem::path &pathToTextureFile)=0
 
virtual std::variant< std::unique_ptr< UploadBuffer >, ErrorcreateResourceWithCpuWriteAccess (const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, std::optional< bool > isUsedInShadersAsArrayResource)=0
 
virtual std::variant< std::unique_ptr< GpuResource >, ErrorcreateResourceWithData (const std::string &sResourceName, const void *pBufferData, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource)=0
 
virtual std::variant< std::unique_ptr< GpuResource >, ErrorcreateResource (const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource)=0
 
virtual std::variant< std::unique_ptr< GpuResource >, ErrorcreateShaderReadWriteTextureResource (const std::string &sResourceName, unsigned int iWidth, unsigned int iHeight, ShaderReadWriteTextureResourceFormat format)=0
 
virtual std::string getCurrentStateInfo ()=0
 
RenderergetRenderer () const
 
TextureManagergetTextureManager () const
 
ShadowMapManagergetShadowMapManager () const
 
DynamicCpuWriteShaderResourceArrayManagergetDynamicCpuWriteShaderResourceArrayManager () const
 
size_t getTotalAliveResourceCount ()
 
+ + + + + +

+Static Public Member Functions

static VkFormat convertTextureResourceFormatToVkFormat (ShaderReadWriteTextureResourceFormat format)
 
static std::variant< std::unique_ptr< VulkanResourceManager >, Errorcreate (VulkanRenderer *pRenderer)
 
+ + + + + + + +

+Private Member Functions

 VulkanResourceManager (VulkanRenderer *pRenderer, VmaAllocator pMemoryAllocator)
 
virtual std::variant< std::unique_ptr< GpuResource >, ErrorcreateShadowMapTexture (const std::string &sResourceName, unsigned int iTextureSize, bool bPointLightColorCubemap) override
 
std::variant< std::unique_ptr< VulkanResource >, ErrorcreateBuffer (const std::string &sResourceName, VkDeviceSize iBufferSize, VkBufferUsageFlags bufferUsage, bool bAllowCpuWrite, unsigned int iElementSizeInBytes, unsigned int iElementCount)
 
+ + + +

+Static Private Member Functions

static std::optional< VkBufferUsageFlagBits > convertResourceUsageTypeToVkBufferUsageType (ResourceUsageType usage)
 
+ + + +

+Private Attributes

VmaAllocator pMemoryAllocator = nullptr
 
+ + + + + + + +

+Friends

+class VulkanResource
 
+class UploadBuffer
 
+class KtxLoadingCallbackManager
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from ne::GpuResourceManager
virtual std::variant< std::unique_ptr< GpuResource >, ErrorcreateShadowMapTexture (const std::string &sResourceName, unsigned int iTextureSize, bool bPointLightColorCubemap)=0
 
 GpuResourceManager (Renderer *pRenderer)
 
void resetManagers ()
 
- Static Protected Member Functions inherited from ne::GpuResourceManager
static std::variant< std::unique_ptr< GpuResourceManager >, Errorcreate (Renderer *pRenderer)
 
static std::variant< std::unique_ptr< GpuResourceManager >, ErrorcreateRendererSpecificManager (Renderer *pRenderer)
 
+

Detailed Description

+

Controls resource creation.

+

Constructor & Destructor Documentation

+ +

◆ VulkanResourceManager()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ne::VulkanResourceManager::VulkanResourceManager (VulkanRendererpRenderer,
VmaAllocator pMemoryAllocator 
)
+
+private
+
+

Constructor.

+
Parameters
+ + + +
pRendererDirectX renderer.
pMemoryAllocatorCreated memory allocator to use.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ convertResourceUsageTypeToVkBufferUsageType()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< VkBufferUsageFlagBits > ne::VulkanResourceManager::convertResourceUsageTypeToVkBufferUsageType (ResourceUsageType usage)
+
+staticprivate
+
+

Converts ResourceUsageType to VkBufferUsageFlagBits.

+
Parameters
+ + +
usageResource usage type.
+
+
+
Returns
Empty if resource usage type is set to OTHER, otherwise Vulkan buffer usage flags.
+ +
+
+ +

◆ convertTextureResourceFormatToVkFormat()

+ +
+
+ + + + + +
+ + + + + + + + +
VkFormat ne::VulkanResourceManager::convertTextureResourceFormatToVkFormat (ShaderReadWriteTextureResourceFormat format)
+
+static
+
+

Converts texture resource format to Vulkan format.

+
Parameters
+ + +
formatFormat to convert.
+
+
+
Returns
Vulkan format.
+ +
+
+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + +
std::variant< std::unique_ptr< VulkanResourceManager >, Error > ne::VulkanResourceManager::create (VulkanRendererpRenderer)
+
+static
+
+

Creates a new resource manager.

+
Parameters
+ + +
pRendererVulkan renderer.
+
+
+
Returns
Error if something went wrong, otherwise created resource manager.
+ +
+
+ +

◆ createBuffer() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< VulkanResource >, Error > ne::VulkanResourceManager::createBuffer (const std::string & sResourceName,
const VkBufferCreateInfo & bufferInfo,
const VmaAllocationCreateInfo & allocationInfo,
unsigned int iElementSizeInBytes,
unsigned int iElementCount 
)
+
+

Creates a new buffer resource.

+
Parameters
+ + + + + + +
sResourceNameName of the created resource.
bufferInfoDescription of the created buffer resource.
allocationInfoDescription of created buffer's memory allocation.
iElementSizeInBytesResource size information. Size of one array element (if array), otherwise specify size of the whole resource.
iElementCountResource size information. Total number of elements in the array (if array), otherwise specify 1.
+
+
+
Returns
Error if something went wrong, otherwise created buffer resource.
+ +
+
+ +

◆ createBuffer() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< VulkanResource >, Error > ne::VulkanResourceManager::createBuffer (const std::string & sResourceName,
VkDeviceSize iBufferSize,
VkBufferUsageFlags bufferUsage,
bool bAllowCpuWrite,
unsigned int iElementSizeInBytes,
unsigned int iElementCount 
)
+
+private
+
+

Creates a new buffer and allocates a new memory for it.

+
Parameters
+ + + + + + + +
sResourceNameName of the created buffer.
iBufferSizeSize of the buffer in bytes.
bufferUsageBuffer usage.
bAllowCpuWriteDescribes memory properties of the created buffer. If true the memory will be HOST_VISIBLE, HOST_COHERENT, otherwise DEVICE_LOCAL.
iElementSizeInBytesResource size information. Size of one array element (if array), otherwise specify size of the whole resource.
iElementCountResource size information. Total number of elements in the array (if array), otherwise specify 1.
+
+
+
Returns
Error if something went wrong, otherwise created resource.
+ +
+
+ +

◆ createImage()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< VulkanResource >, Error > ne::VulkanResourceManager::createImage (const std::string & sResourceName,
uint32_t iImageWidth,
uint32_t iImageHeight,
uint32_t iTextureMipLevelCount,
VkSampleCountFlagBits sampleCount,
VkFormat imageFormat,
VkImageTiling imageTilingMode,
VkImageUsageFlags imageUsage,
std::optional< VkImageAspectFlags > viewDescription,
bool bIsCubeMap = false 
)
+
+

Creates a new image and allocates a new memory for it.

+
Parameters
+ + + + + + + + + + + +
sResourceNameName of the created resource.
iImageWidthWidth of the image in pixels.
iImageHeightHeight of the image in pixels.
iTextureMipLevelCountThe number of mip level the texture has.
sampleCountThe number of samples per pixel. Usually 1 and more than 1 for MSAA.
imageFormatFormat of the image.
imageTilingModeImage tiling mode.
imageUsageImage usage.
viewDescriptionIf specified also creates an image view that references the image.
bIsCubeMaptrue if you need a cubemap, false if a single texture.
+
+
+
Returns
Created image.
+ +
+
+ +

◆ createResource()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< GpuResource >, Error > ne::VulkanResourceManager::createResource (const std::string & sResourceName,
size_t iElementSizeInBytes,
size_t iElementCount,
ResourceUsageType usage,
bool bIsShaderReadWriteResource 
)
+
+overridevirtual
+
+

Creates a new GPU resource (buffer, not a texture) without any initial data.

+
Remarks
This function can be useful if you plan to create a resource to be filled from a (compute) shader and then use this data in some other shader.
+
Parameters
+ + + + + + +
sResourceNameResource name, used for logging.
iElementSizeInBytesSize of one buffer element in bytes.
iElementCountNumber of elements in the resulting buffer.
usageDescribes how you plan to use this resource.
bIsShaderReadWriteResourceSpecify true if you plan to modify the resource from shaders, otherwise false.
+
+
+
Returns
Error if something went wrong, otherwise created resource with filled data.
+ +

Implements ne::GpuResourceManager.

+ +
+
+ +

◆ createResourceWithCpuWriteAccess()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< UploadBuffer >, Error > ne::VulkanResourceManager::createResourceWithCpuWriteAccess (const std::string & sResourceName,
size_t iElementSizeInBytes,
size_t iElementCount,
std::optional< bool > isUsedInShadersAsArrayResource 
)
+
+overridevirtual
+
+

Creates a new GPU resource (buffer) with available CPU write access (only write not read), typically used for resources that needs to be frequently updated from the CPU side.

+

Example:

struct ObjectData{
+
glm::mat4x4 world;
+
};
+
+
auto result = pResourceManager->createResourceWithCpuWriteAccess(
+
"object constant data",
+
sizeof(ObjectData),
+
1,
+
false);
+
Parameters
+ + + + + +
sResourceNameResource name, used for logging.
iElementSizeInBytesSize of one buffer element in bytes.
iElementCountNumber of elements in the resulting buffer.
isUsedInShadersAsArrayResourceSpecify empty if this resource is not going to be used in shaders, false if this resource will be used in shaders as a single (non-array) resource (cbuffer, uniform, might cause padding to 256 bytes and size limitation up to 64 KB) and true if this resource will be used in shaders as an array resource (StructuredBuffer, storage buffer).
+
+
+
Returns
Error if something went wrong, otherwise created resource.
+ +

Implements ne::GpuResourceManager.

+ +
+
+ +

◆ createResourceWithData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< GpuResource >, Error > ne::VulkanResourceManager::createResourceWithData (const std::string & sResourceName,
const void * pBufferData,
size_t iElementSizeInBytes,
size_t iElementCount,
ResourceUsageType usage,
bool bIsShaderReadWriteResource 
)
+
+overridevirtual
+
+

Creates a new GPU resource (buffer, not a texture) and fills it with the specified data.

+

Example:

std::vector<glm::vec3> vVertices;
+
+
auto result = pResourceManager->createResourceWithData(
+
"mesh vertex buffer",
+
vVertices.data(),
+
sizeof(glm::vec3),
+
vVertices.size(),
+
true);
+
Parameters
+ + + + + + + +
sResourceNameResource name, used for logging.
pBufferDataPointer to the data that the new resource will contain.
iElementSizeInBytesSize of one buffer element in bytes.
iElementCountNumber of elements in the resulting buffer.
usageDescribes how you plan to use this resource.
bIsShaderReadWriteResourceSpecify true if you plan to modify the resource from shaders, otherwise false.
+
+
+
Returns
Error if something went wrong, otherwise created resource with filled data.
+ +

Implements ne::GpuResourceManager.

+ +
+
+ +

◆ createShaderReadWriteTextureResource()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< GpuResource >, Error > ne::VulkanResourceManager::createShaderReadWriteTextureResource (const std::string & sResourceName,
unsigned int iWidth,
unsigned int iHeight,
ShaderReadWriteTextureResourceFormat format 
)
+
+overridevirtual
+
+

Creates a texture resource that is available as a read/write resource in shaders.

+
Parameters
+ + + + + +
sResourceNameResource name, used for logging.
iWidthWidth of the texture in pixels.
iHeightHeight of the texture in pixels.
formatFormat of the texture.
+
+
+
Returns
Error if something went wrong, otherwise created texture resource.
+ +

Implements ne::GpuResourceManager.

+ +
+
+ +

◆ createShadowMapTexture()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< GpuResource >, Error > ne::VulkanResourceManager::createShadowMapTexture (const std::string & sResourceName,
unsigned int iTextureSize,
bool bPointLightColorCubemap 
)
+
+overrideprivatevirtual
+
+

Creates a GPU resource to be used as a shadow map.

+
Parameters
+ + + + +
sResourceNameResource name, used for logging.
iTextureSizeSize of one dimension of the texture in pixels. Must be power of 2 (128, 256, 512, 1024, 2048, etc.).
bPointLightColorCubemapfalse is you need a single 2D texture resource or true to have 6 2D textures arranged as a cube map specifically for point lights.
+
+
+
Returns
Error if something went wrong, otherwise created texture resource.
+ +

Implements ne::GpuResourceManager.

+ +
+
+ +

◆ getCurrentStateInfo()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ne::VulkanResourceManager::getCurrentStateInfo ()
+
+overridevirtual
+
+

Dumps internal state of the resource manager in JSON format.

+
Returns
JSON string.
+ +

Implements ne::GpuResourceManager.

+ +
+
+ +

◆ getTotalVideoMemoryInMb()

+ +
+
+ + + + + +
+ + + + + + + +
size_t ne::VulkanResourceManager::getTotalVideoMemoryInMb () const
+
+overridevirtual
+
+

Returns total video memory size (VRAM) in megabytes.

+
Returns
Total video memory size in megabytes.
+ +

Implements ne::GpuResourceManager.

+ +
+
+ +

◆ getUsedVideoMemoryInMb()

+ +
+
+ + + + + +
+ + + + + + + +
size_t ne::VulkanResourceManager::getUsedVideoMemoryInMb () const
+
+overridevirtual
+
+

Returns the amount of video memory (VRAM) occupied by all currently allocated resources.

+
Returns
Size of the video memory used by allocated resources.
+ +

Implements ne::GpuResourceManager.

+ +
+
+ +

◆ loadTextureFromDisk()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< GpuResource >, Error > ne::VulkanResourceManager::loadTextureFromDisk (const std::string & sResourceName,
const std::filesystem::path & pathToTextureFile 
)
+
+overridevirtual
+
+

Loads a texture from a KTX file in the GPU memory.

+
Parameters
+ + + +
sResourceNameResource name, used for logging.
pathToTextureFilePath to the image file that stores texture data.
+
+
+
Returns
Error if something went wrong, otherwise created GPU resource that stores texture data.
+ +

Implements ne::GpuResourceManager.

+ +
+
+

Member Data Documentation

+ +

◆ pMemoryAllocator

+ +
+
+ + + + + +
+ + + + +
VmaAllocator ne::VulkanResourceManager::pMemoryAllocator = nullptr
+
+private
+
+

Vulkan memory allocator.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/vulkan/resource/VulkanResourceManager.h
  • +
  • src/engine_lib/private/render/vulkan/resource/VulkanResourceManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1VulkanResourceManager.js b/classne_1_1VulkanResourceManager.js new file mode 100644 index 000000000..83d35690f --- /dev/null +++ b/classne_1_1VulkanResourceManager.js @@ -0,0 +1,20 @@ +var classne_1_1VulkanResourceManager = +[ + [ "VulkanResourceManager", "classne_1_1VulkanResourceManager.html#a7ecf7ec3593abdf65a194b94dde39058", null ], + [ "convertResourceUsageTypeToVkBufferUsageType", "classne_1_1VulkanResourceManager.html#a059df514f7d83c82a76a2513ddb13a02", null ], + [ "convertTextureResourceFormatToVkFormat", "classne_1_1VulkanResourceManager.html#a6a24d595205d77312fa0af5d3bd9c5e3", null ], + [ "create", "classne_1_1VulkanResourceManager.html#aedcb8a5137bad9f3ce0a61457f20f80a", null ], + [ "createBuffer", "classne_1_1VulkanResourceManager.html#a260c54ebbb06263a3db83fc4d3e5fb1f", null ], + [ "createBuffer", "classne_1_1VulkanResourceManager.html#a4c14e543b942b6e585fa2993caa2e737", null ], + [ "createImage", "classne_1_1VulkanResourceManager.html#a93d53203a1ce3a6c60a0b27799960c35", null ], + [ "createResource", "classne_1_1VulkanResourceManager.html#adc81fd834a7c7a0b9ca9ccc1c8d39174", null ], + [ "createResourceWithCpuWriteAccess", "classne_1_1VulkanResourceManager.html#a188efc9ccb999c3b3e2799391be27e88", null ], + [ "createResourceWithData", "classne_1_1VulkanResourceManager.html#a3ecb83b9bc9c1933c66a08515b4e5f34", null ], + [ "createShaderReadWriteTextureResource", "classne_1_1VulkanResourceManager.html#a42fef744a9adf9b4214a8571740ec6f2", null ], + [ "createShadowMapTexture", "classne_1_1VulkanResourceManager.html#a1f5eb768a33dff3a9eb310c283954a0a", null ], + [ "getCurrentStateInfo", "classne_1_1VulkanResourceManager.html#a8ddb89478c58e0c11ae2d9178b738e3f", null ], + [ "getTotalVideoMemoryInMb", "classne_1_1VulkanResourceManager.html#afc0af46de31f171d7a15c65fc4ffb6bd", null ], + [ "getUsedVideoMemoryInMb", "classne_1_1VulkanResourceManager.html#aada002fa77b56b40f7d1a8144fe6db76", null ], + [ "loadTextureFromDisk", "classne_1_1VulkanResourceManager.html#a0e25dc8a6b3a5ab4ed44fd96a6d4b11d", null ], + [ "pMemoryAllocator", "classne_1_1VulkanResourceManager.html#a3bdc1da71171eee86859a458b94f5749", null ] +]; \ No newline at end of file diff --git a/classne_1_1VulkanResourceManager.png b/classne_1_1VulkanResourceManager.png new file mode 100644 index 0000000000000000000000000000000000000000..f5dd584605be7cd13ea77afa2d254b3c555202b2 GIT binary patch literal 762 zcmeAS@N?(olHy`uVBq!ia0vp^8-O@~gBeKn>GHn=QqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#NsZJzX3_Dj46+eckt3fv2Ut zGvw#r`9GHMic5Rk3dx?URC)ELO2gUXER*-&*p?gZdBdYfmes(sN~^*1Qm{PJ^1uBm zz4LmLwLRljy4>mC!}!O`?uPhXVrga;ySQeaGxux=}UU^#R1Dh~*Gh6mqa;!1O zW@&!^Z zRlRm!?$z(rJGA$m3_7QGtZdS+a<)5Nd&NE^_G&#@9lYq;u1qhL-nhkYE*E%B2-#m9 zzf1qT-=sZDyDRJXE4K01-G2D`{a@RJNq^3BB~1Df!Z3Ns^0EiHx3{&jFz8h=9Po3=dW^ zurc_fDtYi}dXSekr>9GbEbE4jj^#`dE=Pi=A8-$s-f;h{+y1U_mnYM_j+{MV&-gFt z-gBd`t}aiMLmy0W?u|Sjz4X`V#YH}>=QdgeUN*k;MI&Ld-_nbo-L;|-7hmjVjIiH6 z(K)C3#N}_ks*|%M1$ME_J)G7Q+@8IB-iaMI%`T + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::VulkanShadowMapArrayIndexManager Member List
+
+
+ +

This is the complete list of members for ne::VulkanShadowMapArrayIndexManager, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bindShadowMapsToAllPipelines() overridene::VulkanShadowMapArrayIndexManagerprotectedvirtual
bindShadowMapsToAllPipelines(ShadowMapHandle *pOnlyBindThisShadowMap)ne::VulkanShadowMapArrayIndexManagerprivate
bindShadowMapsToPipeline(Pipeline *pPipeline) overridene::VulkanShadowMapArrayIndexManagerprotectedvirtual
bindShadowMapsToPipeline(Pipeline *pPipeline, ShadowMapHandle *pOnlyBindThisShadowMap)ne::VulkanShadowMapArrayIndexManagerprivate
bindShadowMapToPipelineIfUsed(ShadowMapHandle *pShadowMapHandle, VulkanPipeline *pPipeline, VkSampler pSampler)ne::VulkanShadowMapArrayIndexManagerprivate
changeShadowMapArrayIndex(ShadowMapHandle *pShadowMapHandle, unsigned int iNewArrayIndex)ne::ShadowMapArrayIndexManagerprotectedstatic
create(Renderer *pRenderer, GpuResourceManager *pResourceManager, const std::string &sShaderArrayResourceName)ne::ShadowMapArrayIndexManagerstatic
getRenderer() constne::ShadowMapArrayIndexManagerprotected
getShaderArrayResourceName()ne::ShadowMapArrayIndexManagerprotected
mtxInternalDatane::VulkanShadowMapArrayIndexManagerprivate
operator=(const VulkanShadowMapArrayIndexManager &)=delete (defined in ne::VulkanShadowMapArrayIndexManager)ne::VulkanShadowMapArrayIndexManager
operator=(VulkanShadowMapArrayIndexManager &&) noexcept=delete (defined in ne::VulkanShadowMapArrayIndexManager)ne::VulkanShadowMapArrayIndexManager
operator=(const ShadowMapArrayIndexManager &)=delete (defined in ne::ShadowMapArrayIndexManager)ne::ShadowMapArrayIndexManager
operator=(ShadowMapArrayIndexManager &&) noexcept=delete (defined in ne::ShadowMapArrayIndexManager)ne::ShadowMapArrayIndexManager
pRendererne::ShadowMapArrayIndexManagerprivate
registerShadowMapResource(ShadowMapHandle *pShadowMapHandle) overridene::VulkanShadowMapArrayIndexManagerprotectedvirtual
ShadowMapArrayIndexManager()=delete (defined in ne::ShadowMapArrayIndexManager)ne::ShadowMapArrayIndexManager
ShadowMapArrayIndexManager(const ShadowMapArrayIndexManager &)=delete (defined in ne::ShadowMapArrayIndexManager)ne::ShadowMapArrayIndexManager
ShadowMapArrayIndexManager(ShadowMapArrayIndexManager &&) noexcept=delete (defined in ne::ShadowMapArrayIndexManager)ne::ShadowMapArrayIndexManager
ShadowMapArrayIndexManager(Renderer *pRenderer, const std::string &sShaderArrayResourceName)ne::ShadowMapArrayIndexManagerprotected
sShaderArrayResourceNamene::ShadowMapArrayIndexManagerprivate
unregisterShadowMapResource(ShadowMapHandle *pShadowMapHandle) overridene::VulkanShadowMapArrayIndexManagerprotectedvirtual
VulkanShadowMapArrayIndexManager()=delete (defined in ne::VulkanShadowMapArrayIndexManager)ne::VulkanShadowMapArrayIndexManager
VulkanShadowMapArrayIndexManager(const VulkanShadowMapArrayIndexManager &)=delete (defined in ne::VulkanShadowMapArrayIndexManager)ne::VulkanShadowMapArrayIndexManager
VulkanShadowMapArrayIndexManager(VulkanShadowMapArrayIndexManager &&) noexcept=delete (defined in ne::VulkanShadowMapArrayIndexManager)ne::VulkanShadowMapArrayIndexManager
VulkanShadowMapArrayIndexManager(Renderer *pRenderer, const std::string &sShaderArrayResourceName)ne::VulkanShadowMapArrayIndexManager
~ShadowMapArrayIndexManager()=default (defined in ne::ShadowMapArrayIndexManager)ne::ShadowMapArrayIndexManagervirtual
~VulkanShadowMapArrayIndexManager() override (defined in ne::VulkanShadowMapArrayIndexManager)ne::VulkanShadowMapArrayIndexManagervirtual
+
+ + + + diff --git a/classne_1_1VulkanShadowMapArrayIndexManager.html b/classne_1_1VulkanShadowMapArrayIndexManager.html new file mode 100644 index 000000000..52e95601a --- /dev/null +++ b/classne_1_1VulkanShadowMapArrayIndexManager.html @@ -0,0 +1,548 @@ + + + + + + + +Nameless Engine: ne::VulkanShadowMapArrayIndexManager Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::VulkanShadowMapArrayIndexManager Class Reference
+
+
+ +

#include <VulkanShadowMapArrayIndexManager.h>

+
+Inheritance diagram for ne::VulkanShadowMapArrayIndexManager:
+
+
+ + +ne::ShadowMapArrayIndexManager + +
+ + + + +

+Classes

struct  InternalData
 
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

VulkanShadowMapArrayIndexManager (const VulkanShadowMapArrayIndexManager &)=delete
 
+VulkanShadowMapArrayIndexManageroperator= (const VulkanShadowMapArrayIndexManager &)=delete
 
VulkanShadowMapArrayIndexManager (VulkanShadowMapArrayIndexManager &&) noexcept=delete
 
+VulkanShadowMapArrayIndexManageroperator= (VulkanShadowMapArrayIndexManager &&) noexcept=delete
 
 VulkanShadowMapArrayIndexManager (Renderer *pRenderer, const std::string &sShaderArrayResourceName)
 
- Public Member Functions inherited from ne::ShadowMapArrayIndexManager
ShadowMapArrayIndexManager (const ShadowMapArrayIndexManager &)=delete
 
+ShadowMapArrayIndexManageroperator= (const ShadowMapArrayIndexManager &)=delete
 
ShadowMapArrayIndexManager (ShadowMapArrayIndexManager &&) noexcept=delete
 
+ShadowMapArrayIndexManageroperator= (ShadowMapArrayIndexManager &&) noexcept=delete
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual std::optional< ErrorregisterShadowMapResource (ShadowMapHandle *pShadowMapHandle) override
 
virtual std::optional< ErrorunregisterShadowMapResource (ShadowMapHandle *pShadowMapHandle) override
 
virtual std::optional< ErrorbindShadowMapsToPipeline (Pipeline *pPipeline) override
 
virtual std::optional< ErrorbindShadowMapsToAllPipelines () override
 
- Protected Member Functions inherited from ne::ShadowMapArrayIndexManager
 ShadowMapArrayIndexManager (Renderer *pRenderer, const std::string &sShaderArrayResourceName)
 
virtual std::optional< ErrorregisterShadowMapResource (ShadowMapHandle *pShadowMapHandle)=0
 
virtual std::optional< ErrorunregisterShadowMapResource (ShadowMapHandle *pShadowMapHandle)=0
 
virtual std::optional< ErrorbindShadowMapsToPipeline (Pipeline *pPipeline)=0
 
virtual std::optional< ErrorbindShadowMapsToAllPipelines ()=0
 
std::string_view getShaderArrayResourceName ()
 
RenderergetRenderer () const
 
+ + + + + + + +

+Private Member Functions

std::optional< ErrorbindShadowMapsToAllPipelines (ShadowMapHandle *pOnlyBindThisShadowMap)
 
std::optional< ErrorbindShadowMapsToPipeline (Pipeline *pPipeline, ShadowMapHandle *pOnlyBindThisShadowMap)
 
std::optional< ErrorbindShadowMapToPipelineIfUsed (ShadowMapHandle *pShadowMapHandle, VulkanPipeline *pPipeline, VkSampler pSampler)
 
+ + + +

+Private Attributes

std::pair< std::recursive_mutex, InternalDatamtxInternalData
 
+ + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from ne::ShadowMapArrayIndexManager
static std::variant< std::unique_ptr< ShadowMapArrayIndexManager >, Errorcreate (Renderer *pRenderer, GpuResourceManager *pResourceManager, const std::string &sShaderArrayResourceName)
 
- Static Protected Member Functions inherited from ne::ShadowMapArrayIndexManager
static void changeShadowMapArrayIndex (ShadowMapHandle *pShadowMapHandle, unsigned int iNewArrayIndex)
 
+

Detailed Description

+

Manages indices of shadows maps into a descriptor array used by shaders.

+

Constructor & Destructor Documentation

+ +

◆ VulkanShadowMapArrayIndexManager()

+ +
+
+ + + + + + + + + + + + + + + + + + +
ne::VulkanShadowMapArrayIndexManager::VulkanShadowMapArrayIndexManager (RendererpRenderer,
const std::string & sShaderArrayResourceName 
)
+
+

Initializes the manager.

+
Parameters
+ + + +
pRendererRenderer.
sShaderArrayResourceNameName of the array (defined in shaders) that this manager controls.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ bindShadowMapsToAllPipelines() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
std::optional< Error > ne::VulkanShadowMapArrayIndexManager::bindShadowMapsToAllPipelines ()
+
+overrideprotectedvirtual
+
+

Goes through all graphics pipelines ad binds shadow maps to pipelines that use them.

+
Returns
Error if something went wrong.
+ +

Implements ne::ShadowMapArrayIndexManager.

+ +
+
+ +

◆ bindShadowMapsToAllPipelines() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::VulkanShadowMapArrayIndexManager::bindShadowMapsToAllPipelines (ShadowMapHandlepOnlyBindThisShadowMap)
+
+private
+
+

Goes through all graphics pipelines ad binds shadow map(s) to pipelines that use them.

+
Parameters
+ + +
pOnlyBindThisShadowMapIf nullptr then binds all shadow maps from mtxInternalData, otherwise only binds the specified already registered (!) shadow map to all pipelines that reference it.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ bindShadowMapsToPipeline() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::VulkanShadowMapArrayIndexManager::bindShadowMapsToPipeline (PipelinepPipeline)
+
+overrideprotectedvirtual
+
+

Looks if the specified pipeline uses shadow maps and if uses binds shadow maps to the pipeline.

+
Parameters
+ + +
pPipelinePipeline to bind shadow maps to.
+
+
+
Returns
Error if something went wrong.
+ +

Implements ne::ShadowMapArrayIndexManager.

+ +
+
+ +

◆ bindShadowMapsToPipeline() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::VulkanShadowMapArrayIndexManager::bindShadowMapsToPipeline (PipelinepPipeline,
ShadowMapHandlepOnlyBindThisShadowMap 
)
+
+private
+
+

Looks if the specified pipeline uses shadow map(s) and if uses binds shadow map(s) to the pipeline.

+
Parameters
+ + + +
pPipelinePipeline to bind shadow maps to.
pOnlyBindThisShadowMapIf nullptr then binds all shadow maps from mtxInternalData, otherwise only binds the specified already registered (!) shadow map to the specified pipelines if it references it.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ bindShadowMapToPipelineIfUsed()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::optional< Error > ne::VulkanShadowMapArrayIndexManager::bindShadowMapToPipelineIfUsed (ShadowMapHandlepShadowMapHandle,
VulkanPipelinepPipeline,
VkSampler pSampler 
)
+
+private
+
+

Binds the specified shadow map to the specified pipeline.

+
Parameters
+ + + + +
pShadowMapHandleHandle to shadow map to bind.
pPipelinePipeline to bind the shadow map to.
pSamplerTexture sampler to use.
+
+
+
Returns
Error if something went wrong.
+ +
+
+ +

◆ registerShadowMapResource()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::VulkanShadowMapArrayIndexManager::registerShadowMapResource (ShadowMapHandlepShadowMapHandle)
+
+overrideprotectedvirtual
+
+

Reserves an index into a descriptor array for the shadow map resource of the specified handle and bind internal GPU shadow map resource (if the handle) to that descriptor.

+
Remarks
Use unregisterShadowMapResource to unregister it later (must be done before this manager is destroyed) when shadow map is being destroyed.
+
Parameters
+ + +
pShadowMapHandleShadow map to register.
+
+
+
Returns
Error if something went wrong.
+ +

Implements ne::ShadowMapArrayIndexManager.

+ +
+
+ +

◆ unregisterShadowMapResource()

+ +
+
+ + + + + +
+ + + + + + + + +
std::optional< Error > ne::VulkanShadowMapArrayIndexManager::unregisterShadowMapResource (ShadowMapHandlepShadowMapHandle)
+
+overrideprotectedvirtual
+
+

Unregisters a shadow map and frees its index into a descriptor array to be used by others.

+
Parameters
+ + +
pShadowMapHandleShadow map to unregister.
+
+
+
Returns
Error if something went wrong.
+ +

Implements ne::ShadowMapArrayIndexManager.

+ +
+
+

Member Data Documentation

+ +

◆ mtxInternalData

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, InternalData> ne::VulkanShadowMapArrayIndexManager::mtxInternalData
+
+private
+
+

Mutex guarded internal data.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/render/vulkan/resource/shadow/VulkanShadowMapArrayIndexManager.h
  • +
  • src/engine_lib/private/render/vulkan/resource/shadow/VulkanShadowMapArrayIndexManager.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1VulkanShadowMapArrayIndexManager.js b/classne_1_1VulkanShadowMapArrayIndexManager.js new file mode 100644 index 000000000..e5cd2ec8d --- /dev/null +++ b/classne_1_1VulkanShadowMapArrayIndexManager.js @@ -0,0 +1,13 @@ +var classne_1_1VulkanShadowMapArrayIndexManager = +[ + [ "InternalData", "structne_1_1VulkanShadowMapArrayIndexManager_1_1InternalData.html", "structne_1_1VulkanShadowMapArrayIndexManager_1_1InternalData" ], + [ "VulkanShadowMapArrayIndexManager", "classne_1_1VulkanShadowMapArrayIndexManager.html#a2394d01ec3129e0e79ea712972f558c8", null ], + [ "bindShadowMapsToAllPipelines", "classne_1_1VulkanShadowMapArrayIndexManager.html#a2b8342ead9df48d19292f92975fcf9c9", null ], + [ "bindShadowMapsToAllPipelines", "classne_1_1VulkanShadowMapArrayIndexManager.html#a41a7fa9b722b6108ff567975febb1a24", null ], + [ "bindShadowMapsToPipeline", "classne_1_1VulkanShadowMapArrayIndexManager.html#a0326fb92107d8e0c75cadc6f68f4aef4", null ], + [ "bindShadowMapsToPipeline", "classne_1_1VulkanShadowMapArrayIndexManager.html#a510f973bd1cc116473917569e9449507", null ], + [ "bindShadowMapToPipelineIfUsed", "classne_1_1VulkanShadowMapArrayIndexManager.html#abf06bfb2a6414981d9f04b04b3a0f321", null ], + [ "registerShadowMapResource", "classne_1_1VulkanShadowMapArrayIndexManager.html#a0f0bdb3740849a2b1928be5bf30822a4", null ], + [ "unregisterShadowMapResource", "classne_1_1VulkanShadowMapArrayIndexManager.html#a5b3545d2478a89527736c376570c99a6", null ], + [ "mtxInternalData", "classne_1_1VulkanShadowMapArrayIndexManager.html#aae132b978197a4c86e12e85f956d1c6c", null ] +]; \ No newline at end of file diff --git a/classne_1_1VulkanShadowMapArrayIndexManager.png b/classne_1_1VulkanShadowMapArrayIndexManager.png new file mode 100644 index 0000000000000000000000000000000000000000..cd10101f1dadf597deca91eb6409db34f3dab9ec GIT binary patch literal 945 zcmeAS@N?(olHy`uVBq!ia0vp^|A9DwgBeIZoD+N)NJ$6ygt-3y4-$Xz=4)yHq2(3^ zngtTm&%8Kr-~doOc+%w+KsnBmAirP+ARi3OnPy*MU|_cKba4!+V0=6Gecu`do}>K7 zQ!an6fAo5l19xkoP;t6h>f?*D|73n^v+hs2y-jz+hKVT=y8n*)PYT@n-}m1) ztMvYwcIipU&fLZK%HEuru5$mv?mx%1zu&g~xA|?=gf-!_*#9@xzww^*KI7Q_;}wrq ziC?`kd*9!>kfZO{$H-Nl_<16A@@>84k1Owa#m<%c%6qNq)$11H^Ixafvj;gF?c84b zbo!(9x|It~`lnv-yLQ1(Yvsq!ojpFNbvsU|??mD==@K$5j{+s80H|NKg<7I;OscJ|J?th z{0xO#e=sVn6SHSHa`h2=!;Yvw3PU;KaZ_|1%725tXkQoG}iKGvV->1e)TUlek@ zx&2XEv~J%1mF-695-Gj9$HV8(?bc=5o84yoYtOmI8Fu2Ae}xCGTw6YS|J|E^%d)<` ztgWlw!ZSTps_%Gwf6V8P*8Kj#ZolR}o3qbqH*>g(=i<|@p(({2DgAlvUm@@TnwJB KelF{r5}E+3XYS_! literal 0 HcmV?d00001 diff --git a/classne_1_1Window-members.html b/classne_1_1Window-members.html new file mode 100644 index 000000000..f8367e735 --- /dev/null +++ b/classne_1_1Window-members.html @@ -0,0 +1,162 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::Window Member List
+
+
+ +

This is the complete list of members for ne::Window, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bindToWindowEvents()ne::Windowprivate
close() constne::Window
create(WindowBuilderParameters &params)ne::Windowprivatestatic
createCursor(const std::filesystem::path &pathToIcon)ne::Window
getBuilder()ne::Windowstatic
getCursorPosition() constne::Window
getGlfwWindow() constne::Window
getOpacity() constne::Window
getRenderer() constne::Window
getSize() constne::Window
getTitle() constne::Window
glfwFramebufferResizeCallback(GLFWwindow *pGlfwWindow, int iWidth, int iHeight)ne::Windowprivatestatic
glfwWindowFocusCallback(GLFWwindow *pGlfwWindow, int iFocused)ne::Windowprivatestatic
glfwWindowKeyboardCallback(GLFWwindow *pGlfwWindow, int iKey, int iScancode, int iAction, int iMods)ne::Windowprivatestatic
glfwWindowMouseCallback(GLFWwindow *pGlfwWindow, int iButton, int iAction, int iMods)ne::Windowprivatestatic
glfwWindowMouseCursorPosCallback(GLFWwindow *pGlfwWindow, double xPos, double yPos)ne::Windowprivatestatic
glfwWindowMouseScrollCallback(GLFWwindow *pGlfwWindow, double xOffset, double yOffset)ne::Windowprivatestatic
hide() constne::Window
lastMouseXPosne::Windowprivate
lastMouseYPosne::Windowprivate
mainThreadIdne::Windowprivate
maximize() constne::Window
minimize() constne::Window
onFramebufferSizeChanged(int iWidth, int iHeight) constne::Windowprivate
onKeyboardInput(KeyboardKey key, KeyboardModifiers modifiers, bool bIsPressedDown) constne::Window
onMouseInput(MouseButton button, KeyboardModifiers modifiers, bool bIsPressedDown) constne::Window
onMouseMove(double xPos, double yPos)ne::Windowprivate
onMouseScrollMove(int iOffset) constne::Window
onWindowFocusChanged(bool bIsFocused) constne::Windowprivate
operator=(const Window &)=delete (defined in ne::Window)ne::Window
pGameManagerne::Windowprivate
pGlfwWindowne::Windowprivate
preferredRendererne::Windowprivate
processEvents()ne::Window
restore() constne::Window
setCursor(WindowCursor *pCursor)ne::Window
setCursorVisibility(bool bIsVisible) constne::Window
setDefaultCursor()ne::Window
setIcon(const std::filesystem::path &pathToIcon) constne::Window
setOpacity(float opacity) constne::Window
setPreferredRenderer(const std::optional< RendererType > &preferredRenderer)ne::Window
setTitle(const std::string &sNewTitle)ne::Window
show() constne::Window
showErrorIfNotOnMainThread() constne::Windowprivate
sWindowTitlene::Windowprivate
unbindFromWindowEvents()ne::Windowprivate
vCreatedCursorsne::Windowprivate
Window()=delete (defined in ne::Window)ne::Window
Window(const Window &)=delete (defined in ne::Window)ne::Window
Window(GLFWwindow *pGlfwWindow, const std::string &sWindowTitle)ne::Windowprivate
WindowBuilder (defined in ne::Window)ne::Windowfriend
~Window() (defined in ne::Window)ne::Windowvirtual
+
+ + + + diff --git a/classne_1_1Window.html b/classne_1_1Window.html new file mode 100644 index 000000000..1f469d82d --- /dev/null +++ b/classne_1_1Window.html @@ -0,0 +1,1627 @@ + + + + + + + +Nameless Engine: ne::Window Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <Window.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Window (const Window &)=delete
 
+Windowoperator= (const Window &)=delete
 
void setPreferredRenderer (const std::optional< RendererType > &preferredRenderer)
 
template<typename MyGameInstance >
+requires std::derived_from<MyGameInstance, GameInstance>
void processEvents ()
 
void setOpacity (float opacity) const
 
void setTitle (const std::string &sNewTitle)
 
std::optional< ErrorsetIcon (const std::filesystem::path &pathToIcon) const
 
std::variant< WindowCursor *, ErrorcreateCursor (const std::filesystem::path &pathToIcon)
 
void setCursor (WindowCursor *pCursor)
 
void setDefaultCursor ()
 
void setCursorVisibility (bool bIsVisible) const
 
void minimize () const
 
void maximize () const
 
void restore () const
 
void hide () const
 
void show () const
 
void close () const
 
std::pair< int, int > getSize () const
 
std::pair< double, double > getCursorPosition () const
 
std::string getTitle () const
 
float getOpacity () const
 
RenderergetRenderer () const
 
GLFWwindow * getGlfwWindow () const
 
void onKeyboardInput (KeyboardKey key, KeyboardModifiers modifiers, bool bIsPressedDown) const
 
void onMouseInput (MouseButton button, KeyboardModifiers modifiers, bool bIsPressedDown) const
 
void onMouseScrollMove (int iOffset) const
 
+ + + +

+Static Public Member Functions

static WindowBuilder getBuilder ()
 
+ + + + + + + + + + + + + + + +

+Private Member Functions

void bindToWindowEvents ()
 
void unbindFromWindowEvents ()
 
void showErrorIfNotOnMainThread () const
 
void onMouseMove (double xPos, double yPos)
 
void onWindowFocusChanged (bool bIsFocused) const
 
void onFramebufferSizeChanged (int iWidth, int iHeight) const
 
 Window (GLFWwindow *pGlfwWindow, const std::string &sWindowTitle)
 
+ + + + + + + + + + + + + + + +

+Static Private Member Functions

static void glfwWindowKeyboardCallback (GLFWwindow *pGlfwWindow, int iKey, int iScancode, int iAction, int iMods)
 
static void glfwWindowMouseCallback (GLFWwindow *pGlfwWindow, int iButton, int iAction, int iMods)
 
static void glfwWindowFocusCallback (GLFWwindow *pGlfwWindow, int iFocused)
 
static void glfwWindowMouseCursorPosCallback (GLFWwindow *pGlfwWindow, double xPos, double yPos)
 
static void glfwWindowMouseScrollCallback (GLFWwindow *pGlfwWindow, double xOffset, double yOffset)
 
static void glfwFramebufferResizeCallback (GLFWwindow *pGlfwWindow, int iWidth, int iHeight)
 
static std::variant< std::unique_ptr< Window >, Errorcreate (WindowBuilderParameters &params)
 
+ + + + + + + + + + + + + + + + + +

+Private Attributes

std::unique_ptr< GameManagerpGameManager
 
GLFWwindow * pGlfwWindow = nullptr
 
std::vector< std::unique_ptr< WindowCursor > > vCreatedCursors
 
std::thread::id mainThreadId
 
std::string sWindowTitle
 
std::optional< RendererType > preferredRenderer
 
double lastMouseXPos = 0.0
 
double lastMouseYPos = 0.0
 
+ + + +

+Friends

+class WindowBuilder
 
+

Detailed Description

+

Describes a window.

+

Constructor & Destructor Documentation

+ +

◆ Window()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ne::Window::Window (GLFWwindow * pGlfwWindow,
const std::string & sWindowTitle 
)
+
+private
+
+

Default constructor.

+
Parameters
+ + + +
pGlfwWindowCreated GLFW window.
sWindowTitleTitle of this window.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ bindToWindowEvents()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Window::bindToWindowEvents ()
+
+private
+
+

Binds to various window events such as user input events.

+
Remarks
Expects game instance to be created at this point.
+ +
+
+ +

◆ close()

+ +
+
+ + + + + + + +
void ne::Window::close () const
+
+

Closes this window causing game instance, audio engine and etc to be destroyed.

+ +
+
+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + +
std::variant< std::unique_ptr< Window >, Error > ne::Window::create (WindowBuilderParametersparams)
+
+staticprivate
+
+

Creates a new window.

+
Parameters
+ + +
paramsParameters that define initial window state.
+
+
+
Returns
Returns error if something went wrong or created window otherwise.
+ +
+
+ +

◆ createCursor()

+ +
+
+ + + + + + + + +
std::variant< WindowCursor *, Error > ne::Window::createCursor (const std::filesystem::path & pathToIcon)
+
+

Loads the image and creates a new cursor, note that in order for this new cursor to be visible you have to call setCursor.

+
Warning
This function must only be called from the main thread. If this function is called outside of the main thread an error will be shown.
+
Parameters
+ + +
pathToIconPath to the image (.png). The image data should be 32-bit, little-endian, non-premultiplied RGBA, i.e. eight bits per channel with the red channel first.
+
+
+
Returns
Error if something went wrong, otherwise a non-owning pointer to the created cursor that is managed by the window. Do not delete returned pointer, the window owns this cursor and will automatically delete it when the window is closed.
+ +
+
+ +

◆ getBuilder()

+ +
+
+ + + + + +
+ + + + + + + +
WindowBuilder ne::Window::getBuilder ()
+
+static
+
+

Returns a builder for a new window. Use can use this static function to receive a WindowBuilder or create an instance of WindowBuilder manually.

+
Returns
Builder for a new window.
+ +
+
+ +

◆ getCursorPosition()

+ +
+
+ + + + + + + +
std::pair< double, double > ne::Window::getCursorPosition () const
+
+

Returns the current cursor position on window.

+
Warning
This function must only be called from the main thread. If this function is called outside of the main thread an error will be shown.
+
Returns
A pair of X and Y coordinates in range [0.0; 1.0] relative to the upper-left corner of the window.
+ +
+
+ +

◆ getGlfwWindow()

+ +
+
+ + + + + + + +
GLFWwindow * ne::Window::getGlfwWindow () const
+
+

Returns internal GLFW window pointer.

+
Remarks
Do not delete (free) returned pointer.
+
Returns
GLFW window.
+ +
+
+ +

◆ getOpacity()

+ +
+
+ + + + + + + +
float ne::Window::getOpacity () const
+
+

Returns window opacity.

+
Returns
Window opacity.
+ +
+
+ +

◆ getRenderer()

+ +
+
+ + + + + + + +
Renderer * ne::Window::getRenderer () const
+
+

Returns renderer used for this window.

+
Returns
nullptr if renderer was not created yet, valid pointer otherwise.
+ +
+
+ +

◆ getSize()

+ +
+
+ + + + + + + +
std::pair< int, int > ne::Window::getSize () const
+
+

Returns the current window size in pixels.

+
Warning
This function must only be called from the main thread. If this function is called outside of the main thread an error will be shown.
+
Returns
A pair of width and height in pixels.
+ +
+
+ +

◆ getTitle()

+ +
+
+ + + + + + + +
std::string ne::Window::getTitle () const
+
+

Returns the title of this window.

+
Returns
Title of the window.
+ +
+
+ +

◆ glfwFramebufferResizeCallback()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::Window::glfwFramebufferResizeCallback (GLFWwindow * pGlfwWindow,
int iWidth,
int iHeight 
)
+
+staticprivate
+
+

GLFW callback.

+
Parameters
+ + + + +
pGlfwWindowWindow.
iWidthNew width of the framebuffer (in pixels).
iHeightNew height of the framebuffer (in pixels).
+
+
+ +
+
+ +

◆ glfwWindowFocusCallback()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::Window::glfwWindowFocusCallback (GLFWwindow * pGlfwWindow,
int iFocused 
)
+
+staticprivate
+
+

GLFW callback.

+
Parameters
+ + + +
pGlfwWindowThe window that received the event.
iFocusedGLFW_TRUE if the window was given input focus, or GLFW_FALSE if it lost it.
+
+
+ +
+
+ +

◆ glfwWindowKeyboardCallback()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ne::Window::glfwWindowKeyboardCallback (GLFWwindow * pGlfwWindow,
int iKey,
int iScancode,
int iAction,
int iMods 
)
+
+staticprivate
+
+

GLFW callback.

+
Parameters
+ + + + + + +
pGlfwWindowThe window that received the event.
iKeyThe keyboard key that was pressed or released.
iScancodeThe system-specific scancode of the key.
iActionGLFW_PRESS, GLFW_RELEASE or GLFW_REPEAT.
iModsBit field describing which modifier keys were held down.
+
+
+ +
+
+ +

◆ glfwWindowMouseCallback()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ne::Window::glfwWindowMouseCallback (GLFWwindow * pGlfwWindow,
int iButton,
int iAction,
int iMods 
)
+
+staticprivate
+
+

GLFW callback.

+
Parameters
+ + + + + +
pGlfwWindowThe window that received the event.
iButtonThe mouse button that was pressed or released.
iActionOne of GLFW_PRESS or GLFW_RELEASE.
iModsBit field describing which modifier keys were held down.
+
+
+ +
+
+ +

◆ glfwWindowMouseCursorPosCallback()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::Window::glfwWindowMouseCursorPosCallback (GLFWwindow * pGlfwWindow,
double xPos,
double yPos 
)
+
+staticprivate
+
+

GLFW callback.

+
Parameters
+ + + + +
pGlfwWindowThe window that received the event.
xPosThe new x-coordinate, in screen coordinates, of the cursor.
yPosThe new y-coordinate, in screen coordinates, of the cursor.
+
+
+ +
+
+ +

◆ glfwWindowMouseScrollCallback()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::Window::glfwWindowMouseScrollCallback (GLFWwindow * pGlfwWindow,
double xOffset,
double yOffset 
)
+
+staticprivate
+
+

GLFW callback.

+
Parameters
+ + + + +
pGlfwWindowThe window that received the event.
xOffsetThe scroll offset along the x-axis.
yOffsetThe scroll offset along the y-axis.
+
+
+ +
+
+ +

◆ hide()

+ +
+
+ + + + + + + +
void ne::Window::hide () const
+
+

Hides the windows (makes it invisible). Does nothing for fullscreen windows.

+
Warning
This function must only be called from the main thread. If this function is called outside of the main thread an error will be shown.
+ +
+
+ +

◆ maximize()

+ +
+
+ + + + + + + +
void ne::Window::maximize () const
+
+

Maximizes the window.

+
Warning
This function must only be called from the main thread. If this function is called outside of the main thread an error will be shown.
+ +
+
+ +

◆ minimize()

+ +
+
+ + + + + + + +
void ne::Window::minimize () const
+
+

Minimizes the window.

+
Warning
This function must only be called from the main thread. If this function is called outside of the main thread an error will be shown.
+ +
+
+ +

◆ onFramebufferSizeChanged()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::Window::onFramebufferSizeChanged (int iWidth,
int iHeight 
) const
+
+private
+
+

Called when the framebuffer size was changed.

+
Parameters
+ + + +
iWidthNew width of the framebuffer (in pixels).
iHeightNew height of the framebuffer (in pixels).
+
+
+ +
+
+ +

◆ onKeyboardInput()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::Window::onKeyboardInput (KeyboardKey key,
KeyboardModifiers modifiers,
bool bIsPressedDown 
) const
+
+

Called when the window receives keyboard input.

+
Remarks
Made public so you can simulate input in your tests.
+
Parameters
+ + + + +
keyKeyboard key.
modifiersKeyboard modifier keys.
bIsPressedDownWhether the key down event occurred or key up.
+
+
+ +
+
+ +

◆ onMouseInput()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ne::Window::onMouseInput (MouseButton button,
KeyboardModifiers modifiers,
bool bIsPressedDown 
) const
+
+

Called when the window receives mouse input.

+
Remarks
Made public so you can simulate input in your tests.
+
Parameters
+ + + + +
buttonMouse button.
modifiersKeyboard modifier keys.
bIsPressedDownWhether the button down event occurred or button up.
+
+
+ +
+
+ +

◆ onMouseMove()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ne::Window::onMouseMove (double xPos,
double yPos 
)
+
+private
+
+

Called when the window receives mouse movement.

+
Parameters
+ + + +
xPosMouse X position in pixels.
yPosMouse Y position in pixels.
+
+
+ +
+
+ +

◆ onMouseScrollMove()

+ +
+
+ + + + + + + + +
void ne::Window::onMouseScrollMove (int iOffset) const
+
+

Called when the window receives mouse scroll movement.

+
Remarks
Made public so you can simulate input in your tests.
+
Parameters
+ + +
iOffsetMovement offset.
+
+
+ +
+
+ +

◆ onWindowFocusChanged()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::Window::onWindowFocusChanged (bool bIsFocused) const
+
+private
+
+

Called when the window focus was changed.

+
Parameters
+ + +
bIsFocusedWhether the window has gained or lost the focus.
+
+
+ +
+
+ +

◆ processEvents()

+ +
+
+
+template<typename MyGameInstance >
+requires std::derived_from<MyGameInstance, GameInstance>
+ + + + +
void ne::Window::processEvents
+
+

Starts the message queue, rendering and game logic. Set GameInstance derived class to react to user inputs, window events and etc.

+

Will return control after the window was closed.

+ +
+
+ +

◆ restore()

+ +
+
+ + + + + + + +
void ne::Window::restore () const
+
+

Restores the window (makes it visible with normal size). Does nothing for fullscreen windows.

+
Warning
This function must only be called from the main thread. If this function is called outside of the main thread an error will be shown.
+ +
+
+ +

◆ setCursor()

+ +
+
+ + + + + + + + +
void ne::Window::setCursor (WindowCursorpCursor)
+
+

Changes the cursor.

+

Use createCursor to create a new cursor.

+
Warning
This function must only be called from the main thread. If this function is called outside of the main thread an error will be shown.
+
Parameters
+ + +
pCursorCursor to use.
+
+
+ +
+
+ +

◆ setCursorVisibility()

+ +
+
+ + + + + + + + +
void ne::Window::setCursorVisibility (bool bIsVisible) const
+
+

Whether the cursor is visible or not (locked in this window).

+
Parameters
+ + +
bIsVisible'true' shows cursor (normal behavior), 'false' will hide the cursor and lock it to the window.
+
+
+ +
+
+ +

◆ setDefaultCursor()

+ +
+
+ + + + + + + +
void ne::Window::setDefaultCursor ()
+
+

Changes the cursor icon to be system default cursor icon.

+

This function can be used to revert changes made by setCursor function.

+ +
+
+ +

◆ setIcon()

+ +
+
+ + + + + + + + +
std::optional< Error > ne::Window::setIcon (const std::filesystem::path & pathToIcon) const
+
+

Sets new window icon.

+
Warning
This function must only be called from the main thread. If this function is called outside of the main thread an error will be shown.
+
Parameters
+ + +
pathToIconPath to the image (.png). The image data should be 32-bit, little-endian, non-premultiplied RGBA, i.e. eight bits per channel with the red channel first.
+
+
+
Returns
Error if file not found.
+ +
+
+ +

◆ setOpacity()

+ +
+
+ + + + + + + + +
void ne::Window::setOpacity (float opacity) const
+
+

Sets the window opacity (1.0f for opaque, 0.0f for transparent). Does nothing if the OS does not support transparent windows.

+
Parameters
+ + +
opacityOpacity value between 0.0 and 1.0.
+
+
+ +
+
+ +

◆ setPreferredRenderer()

+ +
+
+ + + + + + + + +
void ne::Window::setPreferredRenderer (const std::optional< RendererType > & preferredRenderer)
+
+

Saves the type of the preferred renderer to use for the next game created using this window (when processEvents is called).

+
Remarks
Preferred renderer can also be specified using the renderer config file on the disk (for example this is how users of your game can change it without using your game) but if this function was called and some renderer type was specified (not empty) the setting from the renderer config file will be ignored and the specified here renderer type will be considered instead.
+
+By default (no preferred renderer) on Windows DirectX renderer will be preferred (and Vulkan renderer will be used if DirectX renderer is not supported by the hardware), on other platforms Vulkan renderer will be picked.
+
Parameters
+ + +
preferredRendererRenderer that should be preferred to be used although there is no guarantee that it will actually be used because of OS/hardware support. The specified renderer will be the first one to test OS/hardware support. Specify empty value to clear your previously specified preference.
+
+
+ +
+
+ +

◆ setTitle()

+ +
+
+ + + + + + + + +
void ne::Window::setTitle (const std::string & sNewTitle)
+
+

Sets new window title.

+
Parameters
+ + +
sNewTitleNew window title.
+
+
+ +
+
+ +

◆ show()

+ +
+
+ + + + + + + +
void ne::Window::show () const
+
+

Shows the hidden window on screen.

+
Warning
This function must only be called from the main thread. If this function is called outside of the main thread an error will be shown.
+ +
+
+ +

◆ showErrorIfNotOnMainThread()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Window::showErrorIfNotOnMainThread () const
+
+private
+
+

Checks whether the current thread is the main thread or not and if not shows an error.

+ +
+
+ +

◆ unbindFromWindowEvents()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::Window::unbindFromWindowEvents ()
+
+private
+
+

Unbinds from window events created in bindToWindowEvents.

+
Remarks
Expects game instance to be valid until this function is not finished.
+ +
+
+

Member Data Documentation

+ +

◆ lastMouseXPos

+ +
+
+ + + + + +
+ + + + +
double ne::Window::lastMouseXPos = 0.0
+
+private
+
+

Last mouse X position, used for calculating delta movement.

+ +
+
+ +

◆ lastMouseYPos

+ +
+
+ + + + + +
+ + + + +
double ne::Window::lastMouseYPos = 0.0
+
+private
+
+

Last mouse Y position, used for calculating delta movement.

+ +
+
+ +

◆ mainThreadId

+ +
+
+ + + + + +
+ + + + +
std::thread::id ne::Window::mainThreadId
+
+private
+
+

ID of the main thread.

+ +
+
+ +

◆ pGameManager

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<GameManager> ne::Window::pGameManager
+
+private
+
+

Holds main game objects.

+ +
+
+ +

◆ pGlfwWindow

+ +
+
+ + + + + +
+ + + + +
GLFWwindow* ne::Window::pGlfwWindow = nullptr
+
+private
+
+

GLFW window.

+ +
+
+ +

◆ preferredRenderer

+ +
+
+ + + + + +
+ + + + +
std::optional<RendererType> ne::Window::preferredRenderer
+
+private
+
+

Renderer that the developer wants to use.

+ +
+
+ +

◆ sWindowTitle

+ +
+
+ + + + + +
+ + + + +
std::string ne::Window::sWindowTitle
+
+private
+
+

Title of the window.

+ +
+
+ +

◆ vCreatedCursors

+ +
+
+ + + + + +
+ + + + +
std::vector<std::unique_ptr<WindowCursor> > ne::Window::vCreatedCursors
+
+private
+
+

Array of created cursors using createCursor. Should be used with the mutex.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/game/Window.h
  • +
  • src/engine_lib/private/window/Window.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1Window.js b/classne_1_1Window.js new file mode 100644 index 000000000..2f2b55f2d --- /dev/null +++ b/classne_1_1Window.js @@ -0,0 +1,50 @@ +var classne_1_1Window = +[ + [ "Window", "classne_1_1Window.html#a398013436bb9666a1b73a241ca03b7b5", null ], + [ "bindToWindowEvents", "classne_1_1Window.html#a0a21ba6120db929aff3a4e9d31cd9b38", null ], + [ "close", "classne_1_1Window.html#aa64f0812a116f4ddd2c32615b5881879", null ], + [ "create", "classne_1_1Window.html#a9b5b50ece0bd8627e02c4e489749552d", null ], + [ "createCursor", "classne_1_1Window.html#a218650ea81247783eb3b768311c8662b", null ], + [ "getBuilder", "classne_1_1Window.html#a7c2a38739854b5445626d7698877c683", null ], + [ "getCursorPosition", "classne_1_1Window.html#a74e467463a4c29a266028816722c9ccd", null ], + [ "getGlfwWindow", "classne_1_1Window.html#a72b674801f591afc4f0b3c2373f98829", null ], + [ "getOpacity", "classne_1_1Window.html#a8a59b6905fec3f12199fc8b16d86ba3a", null ], + [ "getRenderer", "classne_1_1Window.html#a05339b9ab53c064050d8c1cab7cf97ca", null ], + [ "getSize", "classne_1_1Window.html#a1f36cf9578b512707cbf98126dc1fd92", null ], + [ "getTitle", "classne_1_1Window.html#a11c12ee65d98b281a352b682ab3a8e0a", null ], + [ "glfwFramebufferResizeCallback", "classne_1_1Window.html#ac57c250f86683edeb7fbce73ff2fc6e9", null ], + [ "glfwWindowFocusCallback", "classne_1_1Window.html#a2d4c36ba3af705eaa819978f3612f6c7", null ], + [ "glfwWindowKeyboardCallback", "classne_1_1Window.html#ad8b5e2911019e47727be995430314585", null ], + [ "glfwWindowMouseCallback", "classne_1_1Window.html#aa5e2106db073a38d5e06181fc1a5c8ec", null ], + [ "glfwWindowMouseCursorPosCallback", "classne_1_1Window.html#ab20e1bf7359ba32effd5cd82d9f71ff4", null ], + [ "glfwWindowMouseScrollCallback", "classne_1_1Window.html#a43b85c95a5ec1e7f7966391c19a62aaf", null ], + [ "hide", "classne_1_1Window.html#a630e9e2b4cc602000a3153f0d3030b08", null ], + [ "maximize", "classne_1_1Window.html#ae3e0d90c39725216ccdcee6a1261e05e", null ], + [ "minimize", "classne_1_1Window.html#ac49be1d6be65f2f8285848741387f8e2", null ], + [ "onFramebufferSizeChanged", "classne_1_1Window.html#a8d02d41e2da8983f74a643ece8621871", null ], + [ "onKeyboardInput", "classne_1_1Window.html#ab001e8adc478d9786e8c7e6d1709e7ff", null ], + [ "onMouseInput", "classne_1_1Window.html#accadf60c741561964cd91838ba82d474", null ], + [ "onMouseMove", "classne_1_1Window.html#a1f8a227df2096eefb218e8c2c68acedc", null ], + [ "onMouseScrollMove", "classne_1_1Window.html#a99b6040442ba87e17aeb117f2a365797", null ], + [ "onWindowFocusChanged", "classne_1_1Window.html#a933186503eae3cc20268ee85f7fd34cb", null ], + [ "processEvents", "classne_1_1Window.html#aa56c65358fd0067acccd567cd4910673", null ], + [ "restore", "classne_1_1Window.html#a3ceabc6dc41dc22ab50ac090f16510b8", null ], + [ "setCursor", "classne_1_1Window.html#a6a66b1291fda77f5fc9f3e0796c24b73", null ], + [ "setCursorVisibility", "classne_1_1Window.html#a85a2d3ea44db5ff3e1d35a4e8e2a7416", null ], + [ "setDefaultCursor", "classne_1_1Window.html#a49e5e779bf99e890ce3543be742596e6", null ], + [ "setIcon", "classne_1_1Window.html#af50d6a10dbf861b7450ff633e5f15aa9", null ], + [ "setOpacity", "classne_1_1Window.html#a75621710e80bc9b618929d535619e2e8", null ], + [ "setPreferredRenderer", "classne_1_1Window.html#a153750b05d15b500bcc4e62a4b5f1a27", null ], + [ "setTitle", "classne_1_1Window.html#addd9d36370af92c039fe462f510470af", null ], + [ "show", "classne_1_1Window.html#a495b1c4bccac831b35bd2499188dd197", null ], + [ "showErrorIfNotOnMainThread", "classne_1_1Window.html#a8f32169e1d18621b2a138b5b8024040e", null ], + [ "unbindFromWindowEvents", "classne_1_1Window.html#a21b7df05cab9cac3a9fe63c74d326670", null ], + [ "lastMouseXPos", "classne_1_1Window.html#a2af20ae73e4912e23eae719b990aea48", null ], + [ "lastMouseYPos", "classne_1_1Window.html#af0d0185848117ddf9db81403906bb5a5", null ], + [ "mainThreadId", "classne_1_1Window.html#ac16b6cf29d2c53d5cf8a972a7b3783c7", null ], + [ "pGameManager", "classne_1_1Window.html#a02e142692c3377630b5c9b9c7630aa9b", null ], + [ "pGlfwWindow", "classne_1_1Window.html#acedc4ae0227f2fdb62df828e58662323", null ], + [ "preferredRenderer", "classne_1_1Window.html#aa305d03b7bb058ab602a4e7cd1c54f3a", null ], + [ "sWindowTitle", "classne_1_1Window.html#a95ed89ef81ff345a87cd13ab3ec23fff", null ], + [ "vCreatedCursors", "classne_1_1Window.html#a14bc0f6f1a4465c633ec386f1874a7dd", null ] +]; \ No newline at end of file diff --git a/classne_1_1WindowBuilder-members.html b/classne_1_1WindowBuilder-members.html new file mode 100644 index 000000000..bf71c4e00 --- /dev/null +++ b/classne_1_1WindowBuilder-members.html @@ -0,0 +1,120 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::WindowBuilder Member List
+
+
+ +

This is the complete list of members for ne::WindowBuilder, including all inherited members.

+ + + + + + + + + + + +
build()ne::WindowBuilder
paramsne::WindowBuilderprivate
WindowBuilder()=default (defined in ne::WindowBuilder)ne::WindowBuilder
withFullscreenMode(bool bEnableFullscreen)ne::WindowBuilder
withIcon(const std::filesystem::path &pathToIcon)ne::WindowBuilder
withMaximizedState(bool bMaximized)ne::WindowBuilder
withSize(int iWidth, int iHeight)ne::WindowBuilder
withSplashScreenMode(bool bIsSplashScreen)ne::WindowBuilder
withTitle(std::string_view sWindowTitle)ne::WindowBuilder
withVisibility(bool bShow)ne::WindowBuilder
+
+ + + + diff --git a/classne_1_1WindowBuilder.html b/classne_1_1WindowBuilder.html new file mode 100644 index 000000000..c4c1a7bd5 --- /dev/null +++ b/classne_1_1WindowBuilder.html @@ -0,0 +1,384 @@ + + + + + + + +Nameless Engine: ne::WindowBuilder Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ne::WindowBuilder Class Reference
+
+
+ +

#include <Window.h>

+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

WindowBuilderwithSize (int iWidth, int iHeight)
 
WindowBuilderwithTitle (std::string_view sWindowTitle)
 
WindowBuilderwithIcon (const std::filesystem::path &pathToIcon)
 
WindowBuilderwithVisibility (bool bShow)
 
WindowBuilderwithMaximizedState (bool bMaximized)
 
WindowBuilderwithSplashScreenMode (bool bIsSplashScreen)
 
WindowBuilderwithFullscreenMode (bool bEnableFullscreen)
 
std::variant< std::unique_ptr< Window >, Errorbuild ()
 
+ + + +

+Private Attributes

WindowBuilderParameters params
 
+

Detailed Description

+

Builder pattern class for Window.

+

Member Function Documentation

+ +

◆ build()

+ +
+
+ + + + + + + +
std::variant< std::unique_ptr< Window >, Error > ne::WindowBuilder::build ()
+
+

Builds/creates a new window with the configured parameters.

+
Returns
Returns error if something went wrong or created window otherwise.
+
Warning
This function should only be called from the main thread.
+ +
+
+ +

◆ withFullscreenMode()

+ +
+
+ + + + + + + + +
WindowBuilder & ne::WindowBuilder::withFullscreenMode (bool bEnableFullscreen)
+
+

Whether a window should be shown in the fullscreen mode or not.

+
Remarks
Note that your application might have better performance and more stable frame pacing if you run it in fullscreen mode.
+
Parameters
+ + +
bEnableFullscreenFullscreen mode.
+
+
+
Returns
Builder.
+ +
+
+ +

◆ withIcon()

+ +
+
+ + + + + + + + +
WindowBuilder & ne::WindowBuilder::withIcon (const std::filesystem::path & pathToIcon)
+
+

Defines the icon of a window that we will create.

+
Parameters
+ + +
pathToIconPath to the image (.png).
+
+
+
Returns
Builder.
+ +
+
+ +

◆ withMaximizedState()

+ +
+
+ + + + + + + + +
WindowBuilder & ne::WindowBuilder::withMaximizedState (bool bMaximized)
+
+

Whether the window should be maximized after creation or not. Does nothing for fullscreen windows.

+
Parameters
+ + +
bMaximizedShould window be maximized or not.
+
+
+
Returns
Builder.
+ +
+
+ +

◆ withSize()

+ +
+
+ + + + + + + + + + + + + + + + + + +
WindowBuilder & ne::WindowBuilder::withSize (int iWidth,
int iHeight 
)
+
+

Defines the size of a window that we will create.

+
Parameters
+ + + +
iWidthWidth of the window.
iHeightHeight of the window.
+
+
+
Returns
Builder.
+ +
+
+ +

◆ withSplashScreenMode()

+ +
+
+ + + + + + + + +
WindowBuilder & ne::WindowBuilder::withSplashScreenMode (bool bIsSplashScreen)
+
+

Whether the window should look like a splash screen or not (no border, title, buttons, etc). Does nothing for fullscreen windows.

+
Parameters
+ + +
bIsSplashScreenShould window look like a splash screen or not.
+
+
+
Returns
Builder.
+ +
+
+ +

◆ withTitle()

+ +
+
+ + + + + + + + +
WindowBuilder & ne::WindowBuilder::withTitle (std::string_view sWindowTitle)
+
+

Defines the name of a window that we will create.

+
Parameters
+ + +
sWindowTitleTitle of the window.
+
+
+
Returns
Builder.
+ +
+
+ +

◆ withVisibility()

+ +
+
+ + + + + + + + +
WindowBuilder & ne::WindowBuilder::withVisibility (bool bShow)
+
+

Defines the visibility of a window that we will create. Does nothing for fullscreen windows.

+
Parameters
+ + +
bShowVisibility of the window.
+
+
+
Returns
Builder.
+ +
+
+

Member Data Documentation

+ +

◆ params

+ +
+
+ + + + + +
+ + + + +
WindowBuilderParameters ne::WindowBuilder::params
+
+private
+
+

Configured window parameters.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/game/Window.h
  • +
  • src/engine_lib/private/window/Window.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1WindowBuilder.js b/classne_1_1WindowBuilder.js new file mode 100644 index 000000000..5df193af8 --- /dev/null +++ b/classne_1_1WindowBuilder.js @@ -0,0 +1,12 @@ +var classne_1_1WindowBuilder = +[ + [ "build", "classne_1_1WindowBuilder.html#a74d2120e5f0871a5d6b347f5a31b2b2b", null ], + [ "withFullscreenMode", "classne_1_1WindowBuilder.html#a138b7e2c077466970bef56fc754918a6", null ], + [ "withIcon", "classne_1_1WindowBuilder.html#ae1206242e82f60740f33368672baa5bb", null ], + [ "withMaximizedState", "classne_1_1WindowBuilder.html#aaa2d79c2e394fcf395d6f2c7475e2af8", null ], + [ "withSize", "classne_1_1WindowBuilder.html#aeb34378e47c1355807a54b789859ecb5", null ], + [ "withSplashScreenMode", "classne_1_1WindowBuilder.html#af2d361e7868e3a69d77d1292cacfe320", null ], + [ "withTitle", "classne_1_1WindowBuilder.html#a0bb2d30b784c64424b5015a4745bd282", null ], + [ "withVisibility", "classne_1_1WindowBuilder.html#a32ace752ff0c9c1e6df896dea74e37c7", null ], + [ "params", "classne_1_1WindowBuilder.html#a13ab0c1e913a2352996bba87341c379c", null ] +]; \ No newline at end of file diff --git a/classne_1_1WindowCursor-members.html b/classne_1_1WindowCursor-members.html new file mode 100644 index 000000000..0e2371713 --- /dev/null +++ b/classne_1_1WindowCursor-members.html @@ -0,0 +1,120 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::WindowCursor Member List
+
+
+ +

This is the complete list of members for ne::WindowCursor, including all inherited members.

+ + + + + + + + + + + +
create(const std::filesystem::path &pathToIcon)ne::WindowCursorprotectedstatic
getCursor() constne::WindowCursorprotected
operator=(const WindowCursor &)=delete (defined in ne::WindowCursor)ne::WindowCursor
pCursorne::WindowCursorprivate
releaseCursor()ne::WindowCursorprotected
Window (defined in ne::WindowCursor)ne::WindowCursorfriend
WindowCursor()=delete (defined in ne::WindowCursor)ne::WindowCursor
WindowCursor(const WindowCursor &)=delete (defined in ne::WindowCursor)ne::WindowCursor
WindowCursor(GLFWcursor *pCursor)ne::WindowCursorprivate
~WindowCursor()ne::WindowCursor
+
+ + + + diff --git a/classne_1_1WindowCursor.html b/classne_1_1WindowCursor.html new file mode 100644 index 000000000..69fd7db0f --- /dev/null +++ b/classne_1_1WindowCursor.html @@ -0,0 +1,331 @@ + + + + + + + +Nameless Engine: ne::WindowCursor Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <Window.h>

+ + + + + + + + +

+Public Member Functions

WindowCursor (const WindowCursor &)=delete
 
+WindowCursoroperator= (const WindowCursor &)=delete
 
 ~WindowCursor ()
 
+ + + + + +

+Protected Member Functions

void releaseCursor ()
 
GLFWcursor * getCursor () const
 
+ + + +

+Static Protected Member Functions

static std::variant< std::unique_ptr< WindowCursor >, Errorcreate (const std::filesystem::path &pathToIcon)
 
+ + + +

+Private Member Functions

 WindowCursor (GLFWcursor *pCursor)
 
+ + + +

+Private Attributes

GLFWcursor * pCursor = nullptr
 
+ + + +

+Friends

+class Window
 
+

Detailed Description

+

Represents a custom window cursor.

+

Constructor & Destructor Documentation

+ +

◆ ~WindowCursor()

+ +
+
+ + + + + + + +
ne::WindowCursor::~WindowCursor ()
+
+

Checks if the created cursor was released and if not, logs an error.

+ +
+
+ +

◆ WindowCursor()

+ +
+
+ + + + + +
+ + + + + + + + +
ne::WindowCursor::WindowCursor (GLFWcursor * pCursor)
+
+private
+
+

Initializes window cursor.

+
Parameters
+ + +
pCursorCreated GLFW cursor.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + +
std::variant< std::unique_ptr< WindowCursor >, Error > ne::WindowCursor::create (const std::filesystem::path & pathToIcon)
+
+staticprotected
+
+

Loads image and creates a new cursor.

+
Warning
This function must only be called from the main thread.
+
Remarks
You should call releaseCursor when you no longer need this cursor.
+
Parameters
+ + +
pathToIconPath to the image (.png). The image data should be 32-bit, little-endian, non-premultiplied RGBA, i.e. eight bits per channel with the red channel first.
+
+
+
Returns
Error if something went wrong, otherwise created cursor.
+ +
+
+ +

◆ getCursor()

+ +
+
+ + + + + +
+ + + + + + + +
GLFWcursor * ne::WindowCursor::getCursor () const
+
+protected
+
+

Returns internal GLFW cursor.

+
Returns
Internal GLFW cursor.
+ +
+
+ +

◆ releaseCursor()

+ +
+
+ + + + + +
+ + + + + + + +
void ne::WindowCursor::releaseCursor ()
+
+protected
+
+

Releases existing cursor.

+
Warning
This function must only be called from the main thread.
+ +
+
+

Member Data Documentation

+ +

◆ pCursor

+ +
+
+ + + + + +
+ + + + +
GLFWcursor* ne::WindowCursor::pCursor = nullptr
+
+private
+
+

Created GLFW cursor.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/public/game/Window.h
  • +
  • src/engine_lib/private/window/Window.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1WindowCursor.js b/classne_1_1WindowCursor.js new file mode 100644 index 000000000..8f97fd2a7 --- /dev/null +++ b/classne_1_1WindowCursor.js @@ -0,0 +1,9 @@ +var classne_1_1WindowCursor = +[ + [ "~WindowCursor", "classne_1_1WindowCursor.html#a991811e70ac34b285cefe011e47107a9", null ], + [ "WindowCursor", "classne_1_1WindowCursor.html#ae20456ef418e3235cb07d9324336cc66", null ], + [ "create", "classne_1_1WindowCursor.html#a25a36c69b194328091aba187a6271d50", null ], + [ "getCursor", "classne_1_1WindowCursor.html#a61e8c35907db8dfd2932528af5e22570", null ], + [ "releaseCursor", "classne_1_1WindowCursor.html#a111fc33dffebee1cb78cdefc65295509", null ], + [ "pCursor", "classne_1_1WindowCursor.html#a4c7edc314b4971311675245eeb8a1403", null ] +]; \ No newline at end of file diff --git a/classne_1_1World-members.html b/classne_1_1World-members.html new file mode 100644 index 000000000..038cc1304 --- /dev/null +++ b/classne_1_1World-members.html @@ -0,0 +1,146 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ne::World Member List
+
+
+ +

This is the complete list of members for ne::World, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addNodeToCalledEveryFrameArrays(Node *pNode)ne::Worldprivate
addNodeToReceivingInputArray(Node *pNode)ne::Worldprivate
calledEveryFrameNodesne::Worldprivate
createWorld(GameManager *pGameManager, size_t iWorldSize=Globals::getDefaultWorldSize())ne::Worldstatic
destroyWorld()ne::World
getCalledEveryFrameNodeCount()ne::World
getCalledEveryFrameNodes()ne::World
getReceivingInputNodes()ne::World
getRootNode()ne::World
getTotalSpawnedNodeCount()ne::World
getWorldSize() constne::World
getWorldTimeInSeconds() constne::World
isNodeSpawned(size_t iNodeId)ne::World
iTotalSpawnedNodeCountne::Worldprivate
iWorldSizene::Worldprivate
loadNodeTreeAsWorld(GameManager *pGameManager, const std::filesystem::path &pathToNodeTree, size_t iWorldSize=Globals::getDefaultWorldSize())ne::Worldstatic
mtxIsDestroyedne::Worldprivate
mtxReceivingInputNodesne::Worldprivate
mtxRootNodene::Worldprivate
mtxSpawnedNodesne::Worldprivate
Node (defined in ne::World)ne::Worldfriend
onNodeDespawned(Node *pNode)ne::Worldprivate
onNodeSpawned(Node *pNode)ne::Worldprivate
onSpawnedNodeChangedIsCalledEveryFrame(Node *pNode)ne::Worldprivate
onSpawnedNodeChangedIsReceivingInput(Node *pNode)ne::Worldprivate
operator=(const World &)=delete (defined in ne::World)ne::World
operator=(World &&)=delete (defined in ne::World)ne::World
pGameManagerne::Worldprivate
removeNodeFromCalledEveryFrameArrays(Node *pNode)ne::Worldprivate
removeNodeFromReceivingInputArray(Node *pNode)ne::Worldprivate
timeWhenWorldCreatedne::Worldprivate
World()=delete (defined in ne::World)ne::World
World(const World &)=delete (defined in ne::World)ne::World
World(World &&)=delete (defined in ne::World)ne::World
World(GameManager *pGameManager, sgc::GcPtr< Node > pRootNode, size_t iWorldSize)ne::Worldprivate
~World()ne::World
+
+ + + + diff --git a/classne_1_1World.html b/classne_1_1World.html new file mode 100644 index 000000000..17ec81a50 --- /dev/null +++ b/classne_1_1World.html @@ -0,0 +1,1036 @@ + + + + + + + +Nameless Engine: ne::World Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <World.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

World (const World &)=delete
 
+Worldoperator= (const World &)=delete
 
World (World &&)=delete
 
+Worldoperator= (World &&)=delete
 
 ~World ()
 
size_t getTotalSpawnedNodeCount ()
 
void destroyWorld ()
 
CalledEveryFrameNodesgetCalledEveryFrameNodes ()
 
std::pair< std::recursive_mutex, std::unordered_set< Node * > > * getReceivingInputNodes ()
 
sgc::GcPtr< NodegetRootNode ()
 
size_t getCalledEveryFrameNodeCount ()
 
float getWorldTimeInSeconds () const
 
size_t getWorldSize () const
 
bool isNodeSpawned (size_t iNodeId)
 
+ + + + + +

+Static Public Member Functions

static std::unique_ptr< WorldcreateWorld (GameManager *pGameManager, size_t iWorldSize=Globals::getDefaultWorldSize())
 
static std::variant< std::unique_ptr< World >, ErrorloadNodeTreeAsWorld (GameManager *pGameManager, const std::filesystem::path &pathToNodeTree, size_t iWorldSize=Globals::getDefaultWorldSize())
 
+ + + + + + + + + + + + + + + + + + + +

+Private Member Functions

 World (GameManager *pGameManager, sgc::GcPtr< Node > pRootNode, size_t iWorldSize)
 
void onNodeSpawned (Node *pNode)
 
void onNodeDespawned (Node *pNode)
 
void onSpawnedNodeChangedIsCalledEveryFrame (Node *pNode)
 
void onSpawnedNodeChangedIsReceivingInput (Node *pNode)
 
void addNodeToReceivingInputArray (Node *pNode)
 
void addNodeToCalledEveryFrameArrays (Node *pNode)
 
void removeNodeFromCalledEveryFrameArrays (Node *pNode)
 
void removeNodeFromReceivingInputArray (Node *pNode)
 
+ + + + + + + + + + + + + + + + + + + +

+Private Attributes

GameManagerpGameManager = nullptr
 
std::pair< std::recursive_mutex, bool > mtxIsDestroyed
 
std::pair< std::mutex, sgc::GcPtr< Node > > mtxRootNode
 
CalledEveryFrameNodes calledEveryFrameNodes
 
std::pair< std::recursive_mutex, std::unordered_set< Node * > > mtxReceivingInputNodes
 
std::pair< std::recursive_mutex, std::unordered_map< size_t, Node * > > mtxSpawnedNodes
 
std::atomic< size_t > iTotalSpawnedNodeCount {0}
 
const size_t iWorldSize = 0
 
std::chrono::steady_clock::time_point timeWhenWorldCreated
 
+ + + +

+Friends

+class Node
 
+

Detailed Description

+

Owns world's root node.

+
Warning
destroyWorld must be explicitly called before destroying this object.
+

Constructor & Destructor Documentation

+ +

◆ ~World()

+ +
+
+ + + + + + + +
ne::World::~World ()
+
+

Checks that world is destructed correctly (see destroyWorld) and logs in case of error.

+ +
+
+ +

◆ World()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ne::World::World (GameManagerpGameManager,
sgc::GcPtr< NodepRootNode,
size_t iWorldSize 
)
+
+private
+
+

Creates a new world with the specified root node.

+
Parameters
+ + + + +
pGameManagerGameManager object that owns this world.
pRootNodeWorld's root node.
iWorldSizeWorld size in game units. Must be power of 2 (128, 256, 512, 1024, 2048, etc.).
+
+
+ +
+
+

Member Function Documentation

+ +

◆ addNodeToCalledEveryFrameArrays()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::World::addNodeToCalledEveryFrameArrays (NodepNode)
+
+private
+
+

Adds the specified node to the arrays of "called every frame" nodes (see calledEveryFrameNodes).

+
Parameters
+ + +
pNodeNode to add.
+
+
+ +
+
+ +

◆ addNodeToReceivingInputArray()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::World::addNodeToReceivingInputArray (NodepNode)
+
+private
+
+

Adds the specified node to the array of "receiving input" nodes (see getReceivingInputNodes).

+
Parameters
+ + +
pNodeNode to add.
+
+
+ +
+
+ +

◆ createWorld()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< World > ne::World::createWorld (GameManagerpGameManager,
size_t iWorldSize = Globals::getDefaultWorldSize() 
)
+
+static
+
+

Creates a new world that contains only one node - root node.

+
Parameters
+ + + +
pGameManagerGameManager object that owns this world.
iWorldSizeSize of the world in game units. Must be power of 2 (128, 256, 512, 1024, 2048, etc.). World size needs to be specified for internal purposes such as Directional Light shadow map size. You don't need to care why we need this information, you only need to know that if you leave world bounds lighting or physics may be incorrect (the editor or engine will warn you if something is leaving world bounds, pay attention to the logs).
+
+
+
Returns
Pointer to the new world instance.
+ +
+
+ +

◆ destroyWorld()

+ +
+
+ + + + + + + +
void ne::World::destroyWorld ()
+
+

Clears pointer to the root node which should cause the world to recursively be despawned and destroyed.

+
Warning
Node despawn process will queue a bunch of deferred tasks that will notify world about nodes being despawned. Make sure to execute all deferred tasks after calling this function and before destroying this object.
+ +
+
+ +

◆ getCalledEveryFrameNodeCount()

+ +
+
+ + + + + + + +
size_t ne::World::getCalledEveryFrameNodeCount ()
+
+

Returns the current amount of spawned nodes that are marked as "should be called every frame".

+
Returns
Amount of spawned nodes that should be called every frame.
+ +
+
+ +

◆ getCalledEveryFrameNodes()

+ +
+
+ + + + + + + +
CalledEveryFrameNodes * ne::World::getCalledEveryFrameNodes ()
+
+

Returns a pointer to array of nodes that should be called every frame (use with mutex).

+
Returns
Pointer to array of nodes (use with mutex).
+ +
+
+ +

◆ getReceivingInputNodes()

+ +
+
+ + + + + + + +
std::pair< std::recursive_mutex, std::unordered_set< Node * > > * ne::World::getReceivingInputNodes ()
+
+

Returns a pointer to array of nodes that receive input (use with mutex).

+
Returns
Pointer to array of nodes (use with mutex).
+ +
+
+ +

◆ getRootNode()

+ +
+
+ + + + + + + +
sgc::GcPtr< Node > ne::World::getRootNode ()
+
+

Returns a pointer to world's root node.

+
Returns
nullptr if world is being destroyed, otherwise pointer to world's root node.
+ +
+
+ +

◆ getTotalSpawnedNodeCount()

+ +
+
+ + + + + + + +
size_t ne::World::getTotalSpawnedNodeCount ()
+
+

Returns total amount of currently spawned nodes.

+
Returns
Total nodes spawned right now.
+ +
+
+ +

◆ getWorldSize()

+ +
+
+ + + + + + + +
size_t ne::World::getWorldSize () const
+
+

Returns world size in game units.

+
Returns
World size.
+ +
+
+ +

◆ getWorldTimeInSeconds()

+ +
+
+ + + + + + + +
float ne::World::getWorldTimeInSeconds () const
+
+

Returns time since world creation (in seconds).

+
Returns
Time since world creation (in seconds).
+ +
+
+ +

◆ isNodeSpawned()

+ +
+
+ + + + + + + + +
bool ne::World::isNodeSpawned (size_t iNodeId)
+
+

Tells if a node with the specified ID is currently spawned or not.

+
Parameters
+ + +
iNodeIdID of the node to check.
+
+
+
Returns
true if the node is spawned, false otherwise.
+ +
+
+ +

◆ loadNodeTreeAsWorld()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::variant< std::unique_ptr< World >, Error > ne::World::loadNodeTreeAsWorld (GameManagerpGameManager,
const std::filesystem::path & pathToNodeTree,
size_t iWorldSize = Globals::getDefaultWorldSize() 
)
+
+static
+
+

Loads and deserializes a node tree to be used as a new world.

+

Node tree's root node will be used as world's root node.

+
Parameters
+ + + + +
pGameManagerGameManager object that owns this world.
pathToNodeTreePath to the file that contains a node tree to load, the ".toml" extension will be automatically added if not specified.
iWorldSizeSize of the world in game units. Must be power of 2 (128, 256, 512, 1024, 2048, etc.). World size needs to be specified for internal purposes such as Directional Light shadow map size. You don't need to care why we need this information, you only need to know that if you leave world bounds lighting or physics may be incorrect (the editor or engine will warn you if something is leaving world bounds, pay attention to the logs).
+
+
+
Returns
Error if failed to deserialize the node tree, otherwise pointer to the new world instance.
+ +
+
+ +

◆ onNodeDespawned()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::World::onNodeDespawned (NodepNode)
+
+private
+
+

Called from Node to notify the World about a node being despawned.

+
Parameters
+ + +
pNodeNode that is being despawned.
+
+
+ +
+
+ +

◆ onNodeSpawned()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::World::onNodeSpawned (NodepNode)
+
+private
+
+

Called from Node to notify the World about a new node being spawned.

+
Parameters
+ + +
pNodeNode that is being spawned.
+
+
+ +
+
+ +

◆ onSpawnedNodeChangedIsCalledEveryFrame()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::World::onSpawnedNodeChangedIsCalledEveryFrame (NodepNode)
+
+private
+
+

Called from Node to notify the World about a spawned node changed its "is called every frame" setting.

+
Warning
Should be called AFTER the node has changed its setting and the new state should not be changed while this function is running.
+
Parameters
+ + +
pNodeNode that is changing its setting.
+
+
+ +
+
+ +

◆ onSpawnedNodeChangedIsReceivingInput()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::World::onSpawnedNodeChangedIsReceivingInput (NodepNode)
+
+private
+
+

Called from Node to notify the World about a spawned node changed its "is receiving input" setting.

+
Warning
Should be called AFTER the node has changed its setting and the new state should not be changed while this function is running.
+
Parameters
+ + +
pNodeNode that is changing its setting.
+
+
+ +
+
+ +

◆ removeNodeFromCalledEveryFrameArrays()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::World::removeNodeFromCalledEveryFrameArrays (NodepNode)
+
+private
+
+

Looks if the specified node exists in the arrays of "called every frame" nodes and removes the node from the arrays (see calledEveryFrameNodes).

+
Parameters
+ + +
pNodeNode to remove.
+
+
+ +
+
+ +

◆ removeNodeFromReceivingInputArray()

+ +
+
+ + + + + +
+ + + + + + + + +
void ne::World::removeNodeFromReceivingInputArray (NodepNode)
+
+private
+
+

Looks if the specified node exists in the array of "receiving input" nodes and removes the node from the array (see mtxReceivingInputNodes).

+
Parameters
+ + +
pNodeNode to remove.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ calledEveryFrameNodes

+ +
+
+ + + + + +
+ + + + +
CalledEveryFrameNodes ne::World::calledEveryFrameNodes
+
+private
+
+

Array of currently spawned nodes that are marked as "should be called every frame".

+ +
+
+ +

◆ iTotalSpawnedNodeCount

+ +
+
+ + + + + +
+ + + + +
std::atomic<size_t> ne::World::iTotalSpawnedNodeCount {0}
+
+private
+
+

Total amount of nodes spawned.

+ +
+
+ +

◆ iWorldSize

+ +
+
+ + + + + +
+ + + + +
const size_t ne::World::iWorldSize = 0
+
+private
+
+

World size in game units.

+ +
+
+ +

◆ mtxIsDestroyed

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, bool> ne::World::mtxIsDestroyed
+
+private
+
+

Whether the world is destroyed (or being destroyed) and should not be used or not.

+ +
+
+ +

◆ mtxReceivingInputNodes

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, std::unordered_set<Node*> > ne::World::mtxReceivingInputNodes
+
+private
+
+

Array of currently spawned nodes that receive input.

+ +
+
+ +

◆ mtxRootNode

+ +
+
+ + + + + +
+ + + + +
std::pair<std::mutex, sgc::GcPtr<Node> > ne::World::mtxRootNode
+
+private
+
+

World's root node.

+ +
+
+ +

◆ mtxSpawnedNodes

+ +
+
+ + + + + +
+ + + + +
std::pair<std::recursive_mutex, std::unordered_map<size_t, Node*> > ne::World::mtxSpawnedNodes
+
+private
+
+

Stores pairs of "Node ID" - "Spawned Node".

+ +
+
+ +

◆ pGameManager

+ +
+
+ + + + + +
+ + + + +
GameManager* ne::World::pGameManager = nullptr
+
+private
+
+

Do not delete. Owner GameManager object.

+ +
+
+ +

◆ timeWhenWorldCreated

+ +
+
+ + + + + +
+ + + + +
std::chrono::steady_clock::time_point ne::World::timeWhenWorldCreated
+
+private
+
+

Time when world was created.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • src/engine_lib/private/game/World.h
  • +
  • src/engine_lib/private/game/World.cpp
  • +
+
+
+ + + + diff --git a/classne_1_1World.js b/classne_1_1World.js new file mode 100644 index 000000000..ea6c01da6 --- /dev/null +++ b/classne_1_1World.js @@ -0,0 +1,33 @@ +var classne_1_1World = +[ + [ "~World", "classne_1_1World.html#a6941ce4e5566c000c2e7e32d03394ce6", null ], + [ "World", "classne_1_1World.html#a61f502f2e8b6345e88c1262cac1aa30a", null ], + [ "addNodeToCalledEveryFrameArrays", "classne_1_1World.html#a2c95947d75fb1c8abd0a0da4c719a214", null ], + [ "addNodeToReceivingInputArray", "classne_1_1World.html#ab216aa0941ff9bdee5a33fad3f090cd0", null ], + [ "createWorld", "classne_1_1World.html#af6da71bf1c2496e8591379d5703ed96c", null ], + [ "destroyWorld", "classne_1_1World.html#a09026fca206138bcf07975ef8bbbdd15", null ], + [ "getCalledEveryFrameNodeCount", "classne_1_1World.html#a78ec47ebedbb2fdfe2d2ffdcbb3710c9", null ], + [ "getCalledEveryFrameNodes", "classne_1_1World.html#a6349774922ab7039790289df90931318", null ], + [ "getReceivingInputNodes", "classne_1_1World.html#a757a20074f441235297efe54c0322f48", null ], + [ "getRootNode", "classne_1_1World.html#a28a6bf6adf0f0344bec77af2fab2a01f", null ], + [ "getTotalSpawnedNodeCount", "classne_1_1World.html#ab3b44ccb0d12fe307e4be59591b3d078", null ], + [ "getWorldSize", "classne_1_1World.html#af6219e17f62b2524332562c321307476", null ], + [ "getWorldTimeInSeconds", "classne_1_1World.html#a2bd9e608e87a30c949a98b0c9e9d6025", null ], + [ "isNodeSpawned", "classne_1_1World.html#ace425331c8ebaf36b044733d05787941", null ], + [ "loadNodeTreeAsWorld", "classne_1_1World.html#a21e2601b4b9099bb4ef7a60a5a829c15", null ], + [ "onNodeDespawned", "classne_1_1World.html#a70d4265d9cbfa1e28d57fda64f1e1160", null ], + [ "onNodeSpawned", "classne_1_1World.html#a6fcb9bd531158d9c614bb48c22578d13", null ], + [ "onSpawnedNodeChangedIsCalledEveryFrame", "classne_1_1World.html#adffa9f0f840b51ca3e05a5ebf5067ad2", null ], + [ "onSpawnedNodeChangedIsReceivingInput", "classne_1_1World.html#a96c17a4d0a568b2f3e0b3d94577642c5", null ], + [ "removeNodeFromCalledEveryFrameArrays", "classne_1_1World.html#acbb81246c0894866b8e61d43885d244f", null ], + [ "removeNodeFromReceivingInputArray", "classne_1_1World.html#ac82df1af642e11b236c39ed7f6936140", null ], + [ "calledEveryFrameNodes", "classne_1_1World.html#aabeed623a9a5c0c338704ef370f250f7", null ], + [ "iTotalSpawnedNodeCount", "classne_1_1World.html#a451d19d7fc0a0efed1a9d5fa6487b071", null ], + [ "iWorldSize", "classne_1_1World.html#a518158f015375dcb5f04855f6788e21a", null ], + [ "mtxIsDestroyed", "classne_1_1World.html#ab872caeb40404a9476f4e2e0f5a53099", null ], + [ "mtxReceivingInputNodes", "classne_1_1World.html#ae18707fd0edc0922715542b5bca62cdc", null ], + [ "mtxRootNode", "classne_1_1World.html#ae89d2d0ea54ef393dc1d8a179bd550e3", null ], + [ "mtxSpawnedNodes", "classne_1_1World.html#a1d739d49d68f5464ec85bc67f51f8292", null ], + [ "pGameManager", "classne_1_1World.html#accf0604ef0f01f101a2f551fb3428e73", null ], + [ "timeWhenWorldCreated", "classne_1_1World.html#a5e3e6cdc6ebc8cb70faf1759d6a7d489", null ] +]; \ No newline at end of file diff --git a/closed.png b/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/custom.css b/custom.css new file mode 100644 index 000000000..b55cc5ea4 --- /dev/null +++ b/custom.css @@ -0,0 +1,20 @@ +@media (prefers-color-scheme: dark) { + html:not(.light-mode) { + --primary-color: #d27219; + --primary-dark-color: #e29d5c; + --primary-light-color: rgb(172, 122, 71); + --page-background-color: #181818; + + --fragment-background: rgb(30, 30, 30); + --fragment-foreground: #e4d782; + --fragment-keyword: #e3c91d; + --fragment-keywordtype: #518edd; + --fragment-keywordflow: #518edd; + --fragment-token: #d2a28f; + --fragment-comment: #3ba239; + --fragment-link: #db7c38; + --fragment-preprocessor: #bb65b8; + --fragment-linenumber-color: #4e6ca8; + --fragment-linenumber-background: #323232; + } +} \ No newline at end of file diff --git a/dir_07e92ae10043998556fc49d19f6eb779.html b/dir_07e92ae10043998556fc49d19f6eb779.html new file mode 100644 index 000000000..889a12df3 --- /dev/null +++ b/dir_07e92ae10043998556fc49d19f6eb779.html @@ -0,0 +1,118 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
render Directory Reference
+
+
+ + + + + + + + +

+Directories

directory  directx
 
directory  general
 
directory  vulkan
 
+
+
+ + + + diff --git a/dir_07e92ae10043998556fc49d19f6eb779.js b/dir_07e92ae10043998556fc49d19f6eb779.js new file mode 100644 index 000000000..7952d8178 --- /dev/null +++ b/dir_07e92ae10043998556fc49d19f6eb779.js @@ -0,0 +1,6 @@ +var dir_07e92ae10043998556fc49d19f6eb779 = +[ + [ "directx", "dir_2fdaddfc182c018af5626a1f94c56ef3.html", "dir_2fdaddfc182c018af5626a1f94c56ef3" ], + [ "general", "dir_686065da544ae8f94faa03fd2fe61e8a.html", "dir_686065da544ae8f94faa03fd2fe61e8a" ], + [ "vulkan", "dir_88854e741e94c5d731b598d414654b2c.html", "dir_88854e741e94c5d731b598d414654b2c" ] +]; \ No newline at end of file diff --git a/dir_0fc3f353271683a562ec0901a6675197.html b/dir_0fc3f353271683a562ec0901a6675197.html new file mode 100644 index 000000000..7a9685196 --- /dev/null +++ b/dir_0fc3f353271683a562ec0901a6675197.html @@ -0,0 +1,122 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/misc/shapes Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
shapes Directory Reference
+
+
+ + + + + + + + + + + + +

+Files

file  AABB.h [code]
 
file  Cone.h [code]
 
file  Frustum.h [code]
 
file  Plane.h [code]
 
file  Sphere.h [code]
 
+
+
+ + + + diff --git a/dir_0fc3f353271683a562ec0901a6675197.js b/dir_0fc3f353271683a562ec0901a6675197.js new file mode 100644 index 000000000..cf50e918e --- /dev/null +++ b/dir_0fc3f353271683a562ec0901a6675197.js @@ -0,0 +1,8 @@ +var dir_0fc3f353271683a562ec0901a6675197 = +[ + [ "AABB.h", "AABB_8h_source.html", null ], + [ "Cone.h", "Cone_8h_source.html", null ], + [ "Frustum.h", "Frustum_8h_source.html", null ], + [ "Plane.h", "Plane_8h_source.html", null ], + [ "Sphere.h", "Sphere_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_10962f3d170d90e2caa01fd1efc295ff.html b/dir_10962f3d170d90e2caa01fd1efc295ff.html new file mode 100644 index 000000000..33399f449 --- /dev/null +++ b/dir_10962f3d170d90e2caa01fd1efc295ff.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/general/resource/frame Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
frame Directory Reference
+
+
+ + + + + + +

+Files

file  FrameResource.h [code]
 
file  FrameResourceManager.h [code]
 
+
+
+ + + + diff --git a/dir_10962f3d170d90e2caa01fd1efc295ff.js b/dir_10962f3d170d90e2caa01fd1efc295ff.js new file mode 100644 index 000000000..bcfae05f9 --- /dev/null +++ b/dir_10962f3d170d90e2caa01fd1efc295ff.js @@ -0,0 +1,5 @@ +var dir_10962f3d170d90e2caa01fd1efc295ff = +[ + [ "FrameResource.h", "FrameResource_8h_source.html", null ], + [ "FrameResourceManager.h", "FrameResourceManager_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_113b11c13d7c2895bdf358ae18b66592.html b/dir_113b11c13d7c2895bdf358ae18b66592.html new file mode 100644 index 000000000..63b7ddc88 --- /dev/null +++ b/dir_113b11c13d7c2895bdf358ae18b66592.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/io Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
io Directory Reference
+
+
+ + + + + + +

+Directories

directory  properties
 
directory  serializers
 
+
+
+ + + + diff --git a/dir_1577dd4cf38e07853f65fbc968373ce6.html b/dir_1577dd4cf38e07853f65fbc968373ce6.html new file mode 100644 index 000000000..8b382d4c7 --- /dev/null +++ b/dir_1577dd4cf38e07853f65fbc968373ce6.html @@ -0,0 +1,128 @@ + + + + + + + +Nameless Engine: src/engine_lib/public Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
public Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + +

+Directories

directory  game
 
directory  input
 
directory  io
 
directory  material
 
directory  math
 
directory  misc
 
directory  render
 
directory  shader
 
+
+
+ + + + diff --git a/dir_1577dd4cf38e07853f65fbc968373ce6.js b/dir_1577dd4cf38e07853f65fbc968373ce6.js new file mode 100644 index 000000000..78074f77d --- /dev/null +++ b/dir_1577dd4cf38e07853f65fbc968373ce6.js @@ -0,0 +1,11 @@ +var dir_1577dd4cf38e07853f65fbc968373ce6 = +[ + [ "game", "dir_fdaa52d7ef8aea442f65134e0f91915a.html", "dir_fdaa52d7ef8aea442f65134e0f91915a" ], + [ "input", "dir_27b5ac4886c1ddd324edea10c5af45aa.html", "dir_27b5ac4886c1ddd324edea10c5af45aa" ], + [ "io", "dir_1f0460a148d1831e983b3b7b327a0af3.html", "dir_1f0460a148d1831e983b3b7b327a0af3" ], + [ "material", "dir_f898229b977448ec8cdf46a8044476c7.html", "dir_f898229b977448ec8cdf46a8044476c7" ], + [ "math", "dir_c5c5dc0e5e7e3e2711eaa3da8c0c58fb.html", "dir_c5c5dc0e5e7e3e2711eaa3da8c0c58fb" ], + [ "misc", "dir_d055b31d289f737cf1fc8c64643d4a6d.html", "dir_d055b31d289f737cf1fc8c64643d4a6d" ], + [ "render", "dir_e8d81150375a7914f8572cbe301f32ad.html", "dir_e8d81150375a7914f8572cbe301f32ad" ], + [ "shader", "dir_f903bb129e9c7c874074031c600663f8.html", "dir_f903bb129e9c7c874074031c600663f8" ] +]; \ No newline at end of file diff --git a/dir_1685b704a22d6357ace52e466cd1ac5e.html b/dir_1685b704a22d6357ace52e466cd1ac5e.html new file mode 100644 index 000000000..ef147005b --- /dev/null +++ b/dir_1685b704a22d6357ace52e466cd1ac5e.html @@ -0,0 +1,125 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/vulkan/resource Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
resource Directory Reference
+
+
+ + + + +

+Directories

directory  shadow
 
+ + + + + + + + + +

+Files

file  KtxLoadingCallbackManager.h [code]
 
file  VulkanFrameResource.h [code]
 
file  VulkanResource.h [code]
 
file  VulkanResourceManager.h [code]
 
+
+
+ + + + diff --git a/dir_1685b704a22d6357ace52e466cd1ac5e.js b/dir_1685b704a22d6357ace52e466cd1ac5e.js new file mode 100644 index 000000000..2ce5794a4 --- /dev/null +++ b/dir_1685b704a22d6357ace52e466cd1ac5e.js @@ -0,0 +1,8 @@ +var dir_1685b704a22d6357ace52e466cd1ac5e = +[ + [ "shadow", "dir_27d45686a9f223c6629a96f41f581c7d.html", "dir_27d45686a9f223c6629a96f41f581c7d" ], + [ "KtxLoadingCallbackManager.h", "KtxLoadingCallbackManager_8h_source.html", null ], + [ "VulkanFrameResource.h", "VulkanFrameResource_8h_source.html", null ], + [ "VulkanResource.h", "VulkanResource_8h_source.html", null ], + [ "VulkanResourceManager.h", "VulkanResourceManager_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_1ca65e8ba1b22a57f2a4eac3d8fc7099.html b/dir_1ca65e8ba1b22a57f2a4eac3d8fc7099.html new file mode 100644 index 000000000..ac83c256a --- /dev/null +++ b/dir_1ca65e8ba1b22a57f2a4eac3d8fc7099.html @@ -0,0 +1,127 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/hlsl Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
hlsl Directory Reference
+
+
+ + + + + + +

+Directories

directory  cache
 
directory  format
 
+ + + + + + + + + +

+Files

file  HlslComputeShaderInterface.h [code]
 
file  HlslShader.h [code]
 
file  RootSignatureGenerator.h [code]
 
file  SpecialRootParameterSlot.hpp [code]
 
+
+
+ + + + diff --git a/dir_1ca65e8ba1b22a57f2a4eac3d8fc7099.js b/dir_1ca65e8ba1b22a57f2a4eac3d8fc7099.js new file mode 100644 index 000000000..3c60d0a5f --- /dev/null +++ b/dir_1ca65e8ba1b22a57f2a4eac3d8fc7099.js @@ -0,0 +1,10 @@ +var dir_1ca65e8ba1b22a57f2a4eac3d8fc7099 = +[ + [ "cache", "dir_794f9c279fc5de1609e6866cc905aba2.html", "dir_794f9c279fc5de1609e6866cc905aba2" ], + [ "format", "dir_5629d5967789ab2fdc7d763df656ba36.html", "dir_5629d5967789ab2fdc7d763df656ba36" ], + [ "resource", "dir_a42664758e28241c1ef480f153ce712b.html", "dir_a42664758e28241c1ef480f153ce712b" ], + [ "HlslComputeShaderInterface.h", "HlslComputeShaderInterface_8h_source.html", null ], + [ "HlslShader.h", "HlslShader_8h_source.html", null ], + [ "RootSignatureGenerator.h", "RootSignatureGenerator_8h_source.html", null ], + [ "SpecialRootParameterSlot.hpp", "SpecialRootParameterSlot_8hpp_source.html", null ] +]; \ No newline at end of file diff --git a/dir_1e31920b674df49ea57e2c48ffba7d7d.html b/dir_1e31920b674df49ea57e2c48ffba7d7d.html new file mode 100644 index 000000000..8b363e9f5 --- /dev/null +++ b/dir_1e31920b674df49ea57e2c48ffba7d7d.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/glsl/cache Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
cache Directory Reference
+
+
+ + + + +

+Files

file  GlslShaderCacheManager.h [code]
 
+
+
+ + + + diff --git a/dir_1e31920b674df49ea57e2c48ffba7d7d.js b/dir_1e31920b674df49ea57e2c48ffba7d7d.js new file mode 100644 index 000000000..3041d97c6 --- /dev/null +++ b/dir_1e31920b674df49ea57e2c48ffba7d7d.js @@ -0,0 +1,4 @@ +var dir_1e31920b674df49ea57e2c48ffba7d7d = +[ + [ "GlslShaderCacheManager.h", "GlslShaderCacheManager_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_1f0460a148d1831e983b3b7b327a0af3.html b/dir_1f0460a148d1831e983b3b7b327a0af3.html new file mode 100644 index 000000000..7cdf4fe93 --- /dev/null +++ b/dir_1f0460a148d1831e983b3b7b327a0af3.html @@ -0,0 +1,131 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/io Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
io Directory Reference
+
+
+ + + + + + +

+Directories

directory  properties
 
directory  serializers
 
+ + + + + + + + + + + + + +

+Files

file  ConfigManager.h [code]
 
file  FieldSerializerManager.h [code]
 
file  Logger.h [code]
 
file  MeshImporter.h [code]
 
file  Serializable.h [code]
 
file  TextureImporter.h [code]
 
+
+
+ + + + diff --git a/dir_1f0460a148d1831e983b3b7b327a0af3.js b/dir_1f0460a148d1831e983b3b7b327a0af3.js new file mode 100644 index 000000000..b93d45f3a --- /dev/null +++ b/dir_1f0460a148d1831e983b3b7b327a0af3.js @@ -0,0 +1,11 @@ +var dir_1f0460a148d1831e983b3b7b327a0af3 = +[ + [ "properties", "dir_8aa75ad3c315dba50bd46cd5118d21c0.html", "dir_8aa75ad3c315dba50bd46cd5118d21c0" ], + [ "serializers", "dir_e61267bc081b3537f87c78de395feba9.html", "dir_e61267bc081b3537f87c78de395feba9" ], + [ "ConfigManager.h", "ConfigManager_8h_source.html", null ], + [ "FieldSerializerManager.h", "FieldSerializerManager_8h_source.html", null ], + [ "Logger.h", "Logger_8h_source.html", null ], + [ "MeshImporter.h", "MeshImporter_8h_source.html", null ], + [ "Serializable.h", "Serializable_8h_source.html", null ], + [ "TextureImporter.h", "TextureImporter_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_254f03e947bc6dd91a4d72413cbda2cf.html b/dir_254f03e947bc6dd91a4d72413cbda2cf.html new file mode 100644 index 000000000..89619c871 --- /dev/null +++ b/dir_254f03e947bc6dd91a4d72413cbda2cf.html @@ -0,0 +1,118 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
shader Directory Reference
+
+
+ + + + + + + + +

+Directories

directory  general
 
directory  glsl
 
directory  hlsl
 
+
+
+ + + + diff --git a/dir_254f03e947bc6dd91a4d72413cbda2cf.js b/dir_254f03e947bc6dd91a4d72413cbda2cf.js new file mode 100644 index 000000000..c1bf4fc38 --- /dev/null +++ b/dir_254f03e947bc6dd91a4d72413cbda2cf.js @@ -0,0 +1,6 @@ +var dir_254f03e947bc6dd91a4d72413cbda2cf = +[ + [ "general", "dir_472db985af960b653afc2ffb34fa906a.html", "dir_472db985af960b653afc2ffb34fa906a" ], + [ "glsl", "dir_dcf71d98cc04d2129765dfad3817fc25.html", "dir_dcf71d98cc04d2129765dfad3817fc25" ], + [ "hlsl", "dir_1ca65e8ba1b22a57f2a4eac3d8fc7099.html", "dir_1ca65e8ba1b22a57f2a4eac3d8fc7099" ] +]; \ No newline at end of file diff --git a/dir_268c75e817f67fac7f36dfc234371da8.html b/dir_268c75e817f67fac7f36dfc234371da8.html new file mode 100644 index 000000000..89e757356 --- /dev/null +++ b/dir_268c75e817f67fac7f36dfc234371da8.html @@ -0,0 +1,123 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/resource/binding Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
binding Directory Reference
+
+
+ + + + + + + + +

+Directories

directory  cpuwrite
 
directory  global
 
directory  texture
 
+ + + +

+Files

file  ShaderResourceBinding.h [code]
 
+
+
+ + + + diff --git a/dir_268c75e817f67fac7f36dfc234371da8.js b/dir_268c75e817f67fac7f36dfc234371da8.js new file mode 100644 index 000000000..47caf2106 --- /dev/null +++ b/dir_268c75e817f67fac7f36dfc234371da8.js @@ -0,0 +1,7 @@ +var dir_268c75e817f67fac7f36dfc234371da8 = +[ + [ "cpuwrite", "dir_b84637558657fd1a99c6ba53f2f33845.html", "dir_b84637558657fd1a99c6ba53f2f33845" ], + [ "global", "dir_4ac42a0337879a0a51720acbf248d4f7.html", "dir_4ac42a0337879a0a51720acbf248d4f7" ], + [ "texture", "dir_eaabbd148ec41e8fc7203d13b7c328e9.html", "dir_eaabbd148ec41e8fc7203d13b7c328e9" ], + [ "ShaderResourceBinding.h", "ShaderResourceBinding_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_27b5ac4886c1ddd324edea10c5af45aa.html b/dir_27b5ac4886c1ddd324edea10c5af45aa.html new file mode 100644 index 000000000..0df095a89 --- /dev/null +++ b/dir_27b5ac4886c1ddd324edea10c5af45aa.html @@ -0,0 +1,118 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/input Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
input Directory Reference
+
+
+ + + + + + + + +

+Files

file  InputManager.h [code]
 
file  KeyboardKey.hpp [code]
 
file  MouseButton.hpp [code]
 
+
+
+ + + + diff --git a/dir_27b5ac4886c1ddd324edea10c5af45aa.js b/dir_27b5ac4886c1ddd324edea10c5af45aa.js new file mode 100644 index 000000000..30c4d7557 --- /dev/null +++ b/dir_27b5ac4886c1ddd324edea10c5af45aa.js @@ -0,0 +1,6 @@ +var dir_27b5ac4886c1ddd324edea10c5af45aa = +[ + [ "InputManager.h", "InputManager_8h_source.html", null ], + [ "KeyboardKey.hpp", "KeyboardKey_8hpp_source.html", null ], + [ "MouseButton.hpp", "MouseButton_8hpp_source.html", null ] +]; \ No newline at end of file diff --git a/dir_27d45686a9f223c6629a96f41f581c7d.html b/dir_27d45686a9f223c6629a96f41f581c7d.html new file mode 100644 index 000000000..047216225 --- /dev/null +++ b/dir_27d45686a9f223c6629a96f41f581c7d.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/vulkan/resource/shadow Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
shadow Directory Reference
+
+
+ + + + +

+Files

file  VulkanShadowMapArrayIndexManager.h [code]
 
+
+
+ + + + diff --git a/dir_27d45686a9f223c6629a96f41f581c7d.js b/dir_27d45686a9f223c6629a96f41f581c7d.js new file mode 100644 index 000000000..27dfe3767 --- /dev/null +++ b/dir_27d45686a9f223c6629a96f41f581c7d.js @@ -0,0 +1,4 @@ +var dir_27d45686a9f223c6629a96f41f581c7d = +[ + [ "VulkanShadowMapArrayIndexManager.h", "VulkanShadowMapArrayIndexManager_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_2fdaddfc182c018af5626a1f94c56ef3.html b/dir_2fdaddfc182c018af5626a1f94c56ef3.html new file mode 100644 index 000000000..4f3593084 --- /dev/null +++ b/dir_2fdaddfc182c018af5626a1f94c56ef3.html @@ -0,0 +1,123 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/directx Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
directx Directory Reference
+
+
+ + + + + + + + +

+Directories

directory  descriptors
 
directory  pipeline
 
directory  resource
 
+ + + +

+Files

file  DirectXRenderer.h [code]
 
+
+
+ + + + diff --git a/dir_2fdaddfc182c018af5626a1f94c56ef3.js b/dir_2fdaddfc182c018af5626a1f94c56ef3.js new file mode 100644 index 000000000..41c61e35b --- /dev/null +++ b/dir_2fdaddfc182c018af5626a1f94c56ef3.js @@ -0,0 +1,7 @@ +var dir_2fdaddfc182c018af5626a1f94c56ef3 = +[ + [ "descriptors", "dir_4122cc0a79b2f084b533d6511440ed47.html", "dir_4122cc0a79b2f084b533d6511440ed47" ], + [ "pipeline", "dir_ba00f76f55d57e13c6522c91ec0c9bfd.html", "dir_ba00f76f55d57e13c6522c91ec0c9bfd" ], + [ "resource", "dir_809dd9de87663f5e5f88b07868b7c61b.html", "dir_809dd9de87663f5e5f88b07868b7c61b" ], + [ "DirectXRenderer.h", "DirectXRenderer_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_3637dc7ee2eaf270386a69dd8cc5f74f.html b/dir_3637dc7ee2eaf270386a69dd8cc5f74f.html new file mode 100644 index 000000000..0c758c2ef --- /dev/null +++ b/dir_3637dc7ee2eaf270386a69dd8cc5f74f.html @@ -0,0 +1,124 @@ + + + + + + + +Nameless Engine: src/engine_lib/private Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
private Directory Reference
+
+
+ + + + + + + + + + + + + + +

+Directories

directory  game
 
directory  input
 
directory  io
 
directory  material
 
directory  misc
 
directory  window
 
+
+
+ + + + diff --git a/dir_3637dc7ee2eaf270386a69dd8cc5f74f.js b/dir_3637dc7ee2eaf270386a69dd8cc5f74f.js new file mode 100644 index 000000000..d41d2330f --- /dev/null +++ b/dir_3637dc7ee2eaf270386a69dd8cc5f74f.js @@ -0,0 +1,8 @@ +var dir_3637dc7ee2eaf270386a69dd8cc5f74f = +[ + [ "game", "dir_f9d3efab589c496b9fbceccb86028cc6.html", "dir_f9d3efab589c496b9fbceccb86028cc6" ], + [ "misc", "dir_79034dbb0e84398f48ec2875b099469c.html", "dir_79034dbb0e84398f48ec2875b099469c" ], + [ "render", "dir_07e92ae10043998556fc49d19f6eb779.html", "dir_07e92ae10043998556fc49d19f6eb779" ], + [ "shader", "dir_254f03e947bc6dd91a4d72413cbda2cf.html", "dir_254f03e947bc6dd91a4d72413cbda2cf" ], + [ "window", "dir_a111cc5adb4103d3d8e4addddf74297e.html", "dir_a111cc5adb4103d3d8e4addddf74297e" ] +]; \ No newline at end of file diff --git a/dir_3a41e4df855d3e9cc882e016b42358a0.html b/dir_3a41e4df855d3e9cc882e016b42358a0.html new file mode 100644 index 000000000..ff1f7ce79 --- /dev/null +++ b/dir_3a41e4df855d3e9cc882e016b42358a0.html @@ -0,0 +1,126 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/general/pipeline Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
pipeline Directory Reference
+
+
+ + + + + + + + + + + + + + + + +

+Files

file  Pipeline.h [code]
 
file  PipelineConfiguration.h [code]
 
file  PipelineManager.h [code]
 
file  PipelineRegistry.hpp [code]
 
file  PipelineShaderConstantsManager.hpp [code]
 
file  PipelineSharedPtr.h [code]
 
file  PipelineType.hpp [code]
 
+
+
+ + + + diff --git a/dir_3a41e4df855d3e9cc882e016b42358a0.js b/dir_3a41e4df855d3e9cc882e016b42358a0.js new file mode 100644 index 000000000..fd159d374 --- /dev/null +++ b/dir_3a41e4df855d3e9cc882e016b42358a0.js @@ -0,0 +1,10 @@ +var dir_3a41e4df855d3e9cc882e016b42358a0 = +[ + [ "Pipeline.h", "Pipeline_8h_source.html", null ], + [ "PipelineConfiguration.h", "PipelineConfiguration_8h_source.html", null ], + [ "PipelineManager.h", "PipelineManager_8h_source.html", null ], + [ "PipelineRegistry.hpp", "PipelineRegistry_8hpp_source.html", null ], + [ "PipelineShaderConstantsManager.hpp", "PipelineShaderConstantsManager_8hpp_source.html", null ], + [ "PipelineSharedPtr.h", "PipelineSharedPtr_8h_source.html", null ], + [ "PipelineType.hpp", "PipelineType_8hpp_source.html", null ] +]; \ No newline at end of file diff --git a/dir_4122cc0a79b2f084b533d6511440ed47.html b/dir_4122cc0a79b2f084b533d6511440ed47.html new file mode 100644 index 000000000..016f728d6 --- /dev/null +++ b/dir_4122cc0a79b2f084b533d6511440ed47.html @@ -0,0 +1,118 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/directx/descriptors Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
descriptors Directory Reference
+
+
+ + + + + + + + +

+Files

file  DirectXDescriptor.h [code]
 
file  DirectXDescriptorHeap.h [code]
 
file  DirectXDescriptorType.hpp [code]
 
+
+
+ + + + diff --git a/dir_4122cc0a79b2f084b533d6511440ed47.js b/dir_4122cc0a79b2f084b533d6511440ed47.js new file mode 100644 index 000000000..1ef925128 --- /dev/null +++ b/dir_4122cc0a79b2f084b533d6511440ed47.js @@ -0,0 +1,6 @@ +var dir_4122cc0a79b2f084b533d6511440ed47 = +[ + [ "DirectXDescriptor.h", "DirectXDescriptor_8h_source.html", null ], + [ "DirectXDescriptorHeap.h", "DirectXDescriptorHeap_8h_source.html", null ], + [ "DirectXDescriptorType.hpp", "DirectXDescriptorType_8hpp_source.html", null ] +]; \ No newline at end of file diff --git a/dir_4202ed4c8873735aa34386ac67eb4c07.html b/dir_4202ed4c8873735aa34386ac67eb4c07.html new file mode 100644 index 000000000..3ceb65350 --- /dev/null +++ b/dir_4202ed4c8873735aa34386ac67eb4c07.html @@ -0,0 +1,108 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/game/camera Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
camera Directory Reference
+
+
+
+
+ + + + diff --git a/dir_472db985af960b653afc2ffb34fa906a.html b/dir_472db985af960b653afc2ffb34fa906a.html new file mode 100644 index 000000000..91dcefd6c --- /dev/null +++ b/dir_472db985af960b653afc2ffb34fa906a.html @@ -0,0 +1,139 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
general Directory Reference
+
+
+ + + + + + + + +

+Directories

directory  cache
 
directory  format
 
directory  resource
 
+ + + + + + + + + + + + + + + + + + + +

+Files

file  DescriptorConstants.hpp [code]
 
file  EngineShaderConstantMacros.hpp [code]
 
file  EngineShaderNames.hpp [code]
 
file  EngineShaders.hpp [code]
 
file  Shader.h [code]
 
file  ShaderFilesystemPaths.hpp [code]
 
file  ShaderMacro.h [code]
 
file  ShaderPack.h [code]
 
file  ShaderUser.h [code]
 
+
+
+ + + + diff --git a/dir_472db985af960b653afc2ffb34fa906a.js b/dir_472db985af960b653afc2ffb34fa906a.js new file mode 100644 index 000000000..cf0f70b01 --- /dev/null +++ b/dir_472db985af960b653afc2ffb34fa906a.js @@ -0,0 +1,15 @@ +var dir_472db985af960b653afc2ffb34fa906a = +[ + [ "cache", "dir_c3f04a05024532293f5c1665789673df.html", "dir_c3f04a05024532293f5c1665789673df" ], + [ "format", "dir_6df993e62015e5d469b47adf27edd027.html", "dir_6df993e62015e5d469b47adf27edd027" ], + [ "resource", "dir_899bc9390cb8cbf630ecd7670efe3f13.html", "dir_899bc9390cb8cbf630ecd7670efe3f13" ], + [ "DescriptorConstants.hpp", "DescriptorConstants_8hpp_source.html", null ], + [ "EngineShaderConstantMacros.hpp", "EngineShaderConstantMacros_8hpp_source.html", null ], + [ "EngineShaderNames.hpp", "EngineShaderNames_8hpp_source.html", null ], + [ "EngineShaders.hpp", "EngineShaders_8hpp_source.html", null ], + [ "Shader.h", "Shader_8h_source.html", null ], + [ "ShaderFilesystemPaths.hpp", "ShaderFilesystemPaths_8hpp_source.html", null ], + [ "ShaderMacro.h", "ShaderMacro_8h_source.html", null ], + [ "ShaderPack.h", "ShaderPack_8h_source.html", null ], + [ "ShaderUser.h", "ShaderUser_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_474da58556258c39342071afd2e59e13.html b/dir_474da58556258c39342071afd2e59e13.html new file mode 100644 index 000000000..4f839d213 --- /dev/null +++ b/dir_474da58556258c39342071afd2e59e13.html @@ -0,0 +1,108 @@ + + + + + + + +Nameless Engine: src/engine_lib Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
engine_lib Directory Reference
+
+
+
+
+ + + + diff --git a/dir_474da58556258c39342071afd2e59e13.js b/dir_474da58556258c39342071afd2e59e13.js new file mode 100644 index 000000000..0c848bece --- /dev/null +++ b/dir_474da58556258c39342071afd2e59e13.js @@ -0,0 +1,5 @@ +var dir_474da58556258c39342071afd2e59e13 = +[ + [ "private", "dir_3637dc7ee2eaf270386a69dd8cc5f74f.html", "dir_3637dc7ee2eaf270386a69dd8cc5f74f" ], + [ "public", "dir_1577dd4cf38e07853f65fbc968373ce6.html", "dir_1577dd4cf38e07853f65fbc968373ce6" ] +]; \ No newline at end of file diff --git a/dir_48d37b1060bbd18046e66bc0f50da0ee.html b/dir_48d37b1060bbd18046e66bc0f50da0ee.html new file mode 100644 index 000000000..ff065d072 --- /dev/null +++ b/dir_48d37b1060bbd18046e66bc0f50da0ee.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: src/editor_lib/public/misc Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
misc Directory Reference
+
+
+ + + + +

+Files

file  EditorNodeCreationHelpers.hpp [code]
 
+
+
+ + + + diff --git a/dir_48d37b1060bbd18046e66bc0f50da0ee.js b/dir_48d37b1060bbd18046e66bc0f50da0ee.js new file mode 100644 index 000000000..37bd6c846 --- /dev/null +++ b/dir_48d37b1060bbd18046e66bc0f50da0ee.js @@ -0,0 +1,4 @@ +var dir_48d37b1060bbd18046e66bc0f50da0ee = +[ + [ "EditorNodeCreationHelpers.hpp", "EditorNodeCreationHelpers_8hpp_source.html", null ] +]; \ No newline at end of file diff --git a/dir_491e7905d57d55c9ff8056a9680da626.html b/dir_491e7905d57d55c9ff8056a9680da626.html new file mode 100644 index 000000000..40cd89eae --- /dev/null +++ b/dir_491e7905d57d55c9ff8056a9680da626.html @@ -0,0 +1,108 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/glsl/resource Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
resource Directory Reference
+
+
+
+
+ + + + diff --git a/dir_491e7905d57d55c9ff8056a9680da626.js b/dir_491e7905d57d55c9ff8056a9680da626.js new file mode 100644 index 000000000..8d4f328d6 --- /dev/null +++ b/dir_491e7905d57d55c9ff8056a9680da626.js @@ -0,0 +1,4 @@ +var dir_491e7905d57d55c9ff8056a9680da626 = +[ + [ "binding", "dir_5f3dbef217b2af2946a4f0e420be2c99.html", "dir_5f3dbef217b2af2946a4f0e420be2c99" ] +]; \ No newline at end of file diff --git a/dir_49e56c817e5e54854c35e136979f97ca.html b/dir_49e56c817e5e54854c35e136979f97ca.html new file mode 100644 index 000000000..9677559fb --- /dev/null +++ b/dir_49e56c817e5e54854c35e136979f97ca.html @@ -0,0 +1,108 @@ + + + + + + + +Nameless Engine: docs Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
docs Directory Reference
+
+
+
+
+ + + + diff --git a/dir_4ac42a0337879a0a51720acbf248d4f7.html b/dir_4ac42a0337879a0a51720acbf248d4f7.html new file mode 100644 index 000000000..a16f26883 --- /dev/null +++ b/dir_4ac42a0337879a0a51720acbf248d4f7.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/resource/binding/global Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
global Directory Reference
+
+
+ + + + + + +

+Files

file  GlobalShaderResourceBinding.h [code]
 
file  GlobalShaderResourceBindingManager.h [code]
 
+
+
+ + + + diff --git a/dir_4ac42a0337879a0a51720acbf248d4f7.js b/dir_4ac42a0337879a0a51720acbf248d4f7.js new file mode 100644 index 000000000..c70c91912 --- /dev/null +++ b/dir_4ac42a0337879a0a51720acbf248d4f7.js @@ -0,0 +1,5 @@ +var dir_4ac42a0337879a0a51720acbf248d4f7 = +[ + [ "GlobalShaderResourceBinding.h", "GlobalShaderResourceBinding_8h_source.html", null ], + [ "GlobalShaderResourceBindingManager.h", "GlobalShaderResourceBindingManager_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_5629d5967789ab2fdc7d763df656ba36.html b/dir_5629d5967789ab2fdc7d763df656ba36.html new file mode 100644 index 000000000..a4c231c4d --- /dev/null +++ b/dir_5629d5967789ab2fdc7d763df656ba36.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/hlsl/format Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
format Directory Reference
+
+
+ + + + + + +

+Files

file  HlslVertexFormatDescription.h [code]
 
file  MeshNodeHlslVertexFormatDescription.h [code]
 
+
+
+ + + + diff --git a/dir_5629d5967789ab2fdc7d763df656ba36.js b/dir_5629d5967789ab2fdc7d763df656ba36.js new file mode 100644 index 000000000..5f038d29f --- /dev/null +++ b/dir_5629d5967789ab2fdc7d763df656ba36.js @@ -0,0 +1,5 @@ +var dir_5629d5967789ab2fdc7d763df656ba36 = +[ + [ "HlslVertexFormatDescription.h", "HlslVertexFormatDescription_8h_source.html", null ], + [ "MeshNodeHlslVertexFormatDescription.h", "MeshNodeHlslVertexFormatDescription_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_58f2be8f45582f1aa2376bfaadba951b.html b/dir_58f2be8f45582f1aa2376bfaadba951b.html new file mode 100644 index 000000000..5bf4eaff5 --- /dev/null +++ b/dir_58f2be8f45582f1aa2376bfaadba951b.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/hlsl/resource/binding/global Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
global Directory Reference
+
+
+ + + + +

+Files

file  HlslGlobalShaderResourceBinding.h [code]
 
+
+
+ + + + diff --git a/dir_58f2be8f45582f1aa2376bfaadba951b.js b/dir_58f2be8f45582f1aa2376bfaadba951b.js new file mode 100644 index 000000000..f57425a83 --- /dev/null +++ b/dir_58f2be8f45582f1aa2376bfaadba951b.js @@ -0,0 +1,4 @@ +var dir_58f2be8f45582f1aa2376bfaadba951b = +[ + [ "HlslGlobalShaderResourceBinding.h", "HlslGlobalShaderResourceBinding_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_5f3dbef217b2af2946a4f0e420be2c99.html b/dir_5f3dbef217b2af2946a4f0e420be2c99.html new file mode 100644 index 000000000..5731027f8 --- /dev/null +++ b/dir_5f3dbef217b2af2946a4f0e420be2c99.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/glsl/resource/binding Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
binding Directory Reference
+
+
+ + + + + + +

+Directories

directory  global
 
directory  texture
 
+
+
+ + + + diff --git a/dir_5f3dbef217b2af2946a4f0e420be2c99.js b/dir_5f3dbef217b2af2946a4f0e420be2c99.js new file mode 100644 index 000000000..a83ad1fbb --- /dev/null +++ b/dir_5f3dbef217b2af2946a4f0e420be2c99.js @@ -0,0 +1,5 @@ +var dir_5f3dbef217b2af2946a4f0e420be2c99 = +[ + [ "global", "dir_872dd2b71ff204ef25963c741e258f22.html", "dir_872dd2b71ff204ef25963c741e258f22" ], + [ "texture", "dir_69f422428c9f384758bc93d042c887eb.html", "dir_69f422428c9f384758bc93d042c887eb" ] +]; \ No newline at end of file diff --git a/dir_6117afdc5a20ea9077509ff9fd27d059.html b/dir_6117afdc5a20ea9077509ff9fd27d059.html new file mode 100644 index 000000000..4b12fbc4b --- /dev/null +++ b/dir_6117afdc5a20ea9077509ff9fd27d059.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: src/editor_lib/public/input Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
input Directory Reference
+
+
+ + + + +

+Files

file  EditorInputEventIds.hpp [code]
 
+
+
+ + + + diff --git a/dir_6117afdc5a20ea9077509ff9fd27d059.js b/dir_6117afdc5a20ea9077509ff9fd27d059.js new file mode 100644 index 000000000..f09a62083 --- /dev/null +++ b/dir_6117afdc5a20ea9077509ff9fd27d059.js @@ -0,0 +1,4 @@ +var dir_6117afdc5a20ea9077509ff9fd27d059 = +[ + [ "EditorInputEventIds.hpp", "EditorInputEventIds_8hpp_source.html", null ] +]; \ No newline at end of file diff --git a/dir_65368207119fe98db5a81ed315acb55e.html b/dir_65368207119fe98db5a81ed315acb55e.html new file mode 100644 index 000000000..0ba949b61 --- /dev/null +++ b/dir_65368207119fe98db5a81ed315acb55e.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: src/editor_lib Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
editor_lib Directory Reference
+
+
+ + + + + + +

+Directories

directory  private
 
directory  public
 
+
+
+ + + + diff --git a/dir_65368207119fe98db5a81ed315acb55e.js b/dir_65368207119fe98db5a81ed315acb55e.js new file mode 100644 index 000000000..18249809c --- /dev/null +++ b/dir_65368207119fe98db5a81ed315acb55e.js @@ -0,0 +1,4 @@ +var dir_65368207119fe98db5a81ed315acb55e = +[ + [ "public", "dir_e0ef9ebe84488d81f54422963e9a9498.html", "dir_e0ef9ebe84488d81f54422963e9a9498" ] +]; \ No newline at end of file diff --git a/dir_664997ef76fe448862ddc76e051db805.html b/dir_664997ef76fe448862ddc76e051db805.html new file mode 100644 index 000000000..00c540e34 --- /dev/null +++ b/dir_664997ef76fe448862ddc76e051db805.html @@ -0,0 +1,108 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/material Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
material Directory Reference
+
+
+
+
+ + + + diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 000000000..d7bbda45a --- /dev/null +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,108 @@ + + + + + + + +Nameless Engine: src Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
src Directory Reference
+
+
+
+
+ + + + diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.js b/dir_68267d1309a1af8e8297ef4c3efbcdba.js new file mode 100644 index 000000000..7c9e8c67f --- /dev/null +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.js @@ -0,0 +1,5 @@ +var dir_68267d1309a1af8e8297ef4c3efbcdba = +[ + [ "editor_lib", "dir_65368207119fe98db5a81ed315acb55e.html", "dir_65368207119fe98db5a81ed315acb55e" ], + [ "engine_lib", "dir_474da58556258c39342071afd2e59e13.html", "dir_474da58556258c39342071afd2e59e13" ] +]; \ No newline at end of file diff --git a/dir_686065da544ae8f94faa03fd2fe61e8a.html b/dir_686065da544ae8f94faa03fd2fe61e8a.html new file mode 100644 index 000000000..3503d61eb --- /dev/null +++ b/dir_686065da544ae8f94faa03fd2fe61e8a.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/general Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
general Directory Reference
+
+
+ + + + + + +

+Directories

directory  pipeline
 
directory  resource
 
+
+
+ + + + diff --git a/dir_686065da544ae8f94faa03fd2fe61e8a.js b/dir_686065da544ae8f94faa03fd2fe61e8a.js new file mode 100644 index 000000000..2fef3bdc3 --- /dev/null +++ b/dir_686065da544ae8f94faa03fd2fe61e8a.js @@ -0,0 +1,5 @@ +var dir_686065da544ae8f94faa03fd2fe61e8a = +[ + [ "pipeline", "dir_3a41e4df855d3e9cc882e016b42358a0.html", "dir_3a41e4df855d3e9cc882e016b42358a0" ], + [ "resource", "dir_b8a391f29ba7282a16f1b58f19ec24d1.html", "dir_b8a391f29ba7282a16f1b58f19ec24d1" ] +]; \ No newline at end of file diff --git a/dir_69c7518f7154b66a1a05ca106a54e74e.html b/dir_69c7518f7154b66a1a05ca106a54e74e.html new file mode 100644 index 000000000..5bfacf1ab --- /dev/null +++ b/dir_69c7518f7154b66a1a05ca106a54e74e.html @@ -0,0 +1,108 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/game/nodes/light Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
light Directory Reference
+
+
+
+
+ + + + diff --git a/dir_69f422428c9f384758bc93d042c887eb.html b/dir_69f422428c9f384758bc93d042c887eb.html new file mode 100644 index 000000000..e50ce9dcc --- /dev/null +++ b/dir_69f422428c9f384758bc93d042c887eb.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/glsl/resource/binding/texture Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
texture Directory Reference
+
+
+ + + + +

+Files

file  GlslShaderTextureResourceBinding.h [code]
 
+
+
+ + + + diff --git a/dir_69f422428c9f384758bc93d042c887eb.js b/dir_69f422428c9f384758bc93d042c887eb.js new file mode 100644 index 000000000..accabf4de --- /dev/null +++ b/dir_69f422428c9f384758bc93d042c887eb.js @@ -0,0 +1,4 @@ +var dir_69f422428c9f384758bc93d042c887eb = +[ + [ "GlslShaderTextureResourceBinding.h", "GlslShaderTextureResourceBinding_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_6a551b77301a46f3dc885530853d0ddf.html b/dir_6a551b77301a46f3dc885530853d0ddf.html new file mode 100644 index 000000000..91c073a09 --- /dev/null +++ b/dir_6a551b77301a46f3dc885530853d0ddf.html @@ -0,0 +1,108 @@ + + + + + + + +Nameless Engine: src/editor_lib/private/nodes Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nodes Directory Reference
+
+
+
+
+ + + + diff --git a/dir_6df993e62015e5d469b47adf27edd027.html b/dir_6df993e62015e5d469b47adf27edd027.html new file mode 100644 index 000000000..1eb09427e --- /dev/null +++ b/dir_6df993e62015e5d469b47adf27edd027.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/format Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
format Directory Reference
+
+
+ + + + +

+Files

file  VertexFormat.h [code]
 
+
+
+ + + + diff --git a/dir_6df993e62015e5d469b47adf27edd027.js b/dir_6df993e62015e5d469b47adf27edd027.js new file mode 100644 index 000000000..edf4facbd --- /dev/null +++ b/dir_6df993e62015e5d469b47adf27edd027.js @@ -0,0 +1,4 @@ +var dir_6df993e62015e5d469b47adf27edd027 = +[ + [ "VertexFormat.h", "VertexFormat_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_73177b06cfc33904a08e21f2dd6c1106.html b/dir_73177b06cfc33904a08e21f2dd6c1106.html new file mode 100644 index 000000000..b1097d1aa --- /dev/null +++ b/dir_73177b06cfc33904a08e21f2dd6c1106.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: src/editor_lib/private Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
private Directory Reference
+
+
+ + + + +

+Directories

directory  nodes
 
+
+
+ + + + diff --git a/dir_75df76df1d9a742bd9021c942e21561b.html b/dir_75df76df1d9a742bd9021c942e21561b.html new file mode 100644 index 000000000..d7da71d9c --- /dev/null +++ b/dir_75df76df1d9a742bd9021c942e21561b.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/vulkan/pipeline Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
pipeline Directory Reference
+
+
+ + + + +

+Files

file  VulkanPipeline.h [code]
 
+
+
+ + + + diff --git a/dir_75df76df1d9a742bd9021c942e21561b.js b/dir_75df76df1d9a742bd9021c942e21561b.js new file mode 100644 index 000000000..f51f10267 --- /dev/null +++ b/dir_75df76df1d9a742bd9021c942e21561b.js @@ -0,0 +1,4 @@ +var dir_75df76df1d9a742bd9021c942e21561b = +[ + [ "VulkanPipeline.h", "VulkanPipeline_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_79034dbb0e84398f48ec2875b099469c.html b/dir_79034dbb0e84398f48ec2875b099469c.html new file mode 100644 index 000000000..5c4fa16d1 --- /dev/null +++ b/dir_79034dbb0e84398f48ec2875b099469c.html @@ -0,0 +1,123 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/misc Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
misc Directory Reference
+
+
+ + + + +

+Directories

directory  shapes
 
+ + + + + + + +

+Files

file  StdHashes.hpp [code]
 
file  ThreadPool.h [code]
 
file  UniqueValueGenerator.h [code]
 
+
+
+ + + + diff --git a/dir_79034dbb0e84398f48ec2875b099469c.js b/dir_79034dbb0e84398f48ec2875b099469c.js new file mode 100644 index 000000000..7a0854a01 --- /dev/null +++ b/dir_79034dbb0e84398f48ec2875b099469c.js @@ -0,0 +1,6 @@ +var dir_79034dbb0e84398f48ec2875b099469c = +[ + [ "StdHashes.hpp", "StdHashes_8hpp_source.html", null ], + [ "ThreadPool.h", "ThreadPool_8h_source.html", null ], + [ "UniqueValueGenerator.h", "UniqueValueGenerator_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_794f9c279fc5de1609e6866cc905aba2.html b/dir_794f9c279fc5de1609e6866cc905aba2.html new file mode 100644 index 000000000..080d4c77f --- /dev/null +++ b/dir_794f9c279fc5de1609e6866cc905aba2.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/hlsl/cache Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
cache Directory Reference
+
+
+ + + + +

+Files

file  HlslShaderCacheManager.h [code]
 
+
+
+ + + + diff --git a/dir_794f9c279fc5de1609e6866cc905aba2.js b/dir_794f9c279fc5de1609e6866cc905aba2.js new file mode 100644 index 000000000..1001ec0c4 --- /dev/null +++ b/dir_794f9c279fc5de1609e6866cc905aba2.js @@ -0,0 +1,4 @@ +var dir_794f9c279fc5de1609e6866cc905aba2 = +[ + [ "HlslShaderCacheManager.h", "HlslShaderCacheManager_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_809dd9de87663f5e5f88b07868b7c61b.html b/dir_809dd9de87663f5e5f88b07868b7c61b.html new file mode 100644 index 000000000..9ae169237 --- /dev/null +++ b/dir_809dd9de87663f5e5f88b07868b7c61b.html @@ -0,0 +1,123 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/directx/resource Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
resource Directory Reference
+
+
+ + + + +

+Directories

directory  shadow
 
+ + + + + + + +

+Files

file  DirectXFrameResource.h [code]
 
file  DirectXResource.h [code]
 
file  DirectXResourceManager.h [code]
 
+
+
+ + + + diff --git a/dir_809dd9de87663f5e5f88b07868b7c61b.js b/dir_809dd9de87663f5e5f88b07868b7c61b.js new file mode 100644 index 000000000..802ff98c0 --- /dev/null +++ b/dir_809dd9de87663f5e5f88b07868b7c61b.js @@ -0,0 +1,7 @@ +var dir_809dd9de87663f5e5f88b07868b7c61b = +[ + [ "shadow", "dir_a440d772fec9b9b9c755744f14b33a1c.html", "dir_a440d772fec9b9b9c755744f14b33a1c" ], + [ "DirectXFrameResource.h", "DirectXFrameResource_8h_source.html", null ], + [ "DirectXResource.h", "DirectXResource_8h_source.html", null ], + [ "DirectXResourceManager.h", "DirectXResourceManager_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_82184aefe48efcedc6cef53e43e0328a.html b/dir_82184aefe48efcedc6cef53e43e0328a.html new file mode 100644 index 000000000..d7aa91284 --- /dev/null +++ b/dir_82184aefe48efcedc6cef53e43e0328a.html @@ -0,0 +1,108 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/input Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
input Directory Reference
+
+
+
+
+ + + + diff --git a/dir_8265353e9896f9a7f783d85d71af854a.html b/dir_8265353e9896f9a7f783d85d71af854a.html new file mode 100644 index 000000000..1fc84e598 --- /dev/null +++ b/dir_8265353e9896f9a7f783d85d71af854a.html @@ -0,0 +1,118 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/game/nodes/light Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
light Directory Reference
+
+
+ + + + + + + + +

+Files

file  DirectionalLightNode.h [code]
 
file  PointLightNode.h [code]
 
file  SpotlightNode.h [code]
 
+
+
+ + + + diff --git a/dir_8265353e9896f9a7f783d85d71af854a.js b/dir_8265353e9896f9a7f783d85d71af854a.js new file mode 100644 index 000000000..d875855c8 --- /dev/null +++ b/dir_8265353e9896f9a7f783d85d71af854a.js @@ -0,0 +1,6 @@ +var dir_8265353e9896f9a7f783d85d71af854a = +[ + [ "DirectionalLightNode.h", "DirectionalLightNode_8h_source.html", null ], + [ "PointLightNode.h", "PointLightNode_8h_source.html", null ], + [ "SpotlightNode.h", "SpotlightNode_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_872dd2b71ff204ef25963c741e258f22.html b/dir_872dd2b71ff204ef25963c741e258f22.html new file mode 100644 index 000000000..60d633ebd --- /dev/null +++ b/dir_872dd2b71ff204ef25963c741e258f22.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/glsl/resource/binding/global Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
global Directory Reference
+
+
+ + + + +

+Files

file  GlslGlobalShaderResourceBinding.h [code]
 
+
+
+ + + + diff --git a/dir_872dd2b71ff204ef25963c741e258f22.js b/dir_872dd2b71ff204ef25963c741e258f22.js new file mode 100644 index 000000000..128033b99 --- /dev/null +++ b/dir_872dd2b71ff204ef25963c741e258f22.js @@ -0,0 +1,4 @@ +var dir_872dd2b71ff204ef25963c741e258f22 = +[ + [ "GlslGlobalShaderResourceBinding.h", "GlslGlobalShaderResourceBinding_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_88854e741e94c5d731b598d414654b2c.html b/dir_88854e741e94c5d731b598d414654b2c.html new file mode 100644 index 000000000..7be380e5e --- /dev/null +++ b/dir_88854e741e94c5d731b598d414654b2c.html @@ -0,0 +1,121 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/vulkan Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
vulkan Directory Reference
+
+
+ + + + + + +

+Directories

directory  pipeline
 
directory  resource
 
+ + + +

+Files

file  VulkanRenderer.h [code]
 
+
+
+ + + + diff --git a/dir_88854e741e94c5d731b598d414654b2c.js b/dir_88854e741e94c5d731b598d414654b2c.js new file mode 100644 index 000000000..53977597b --- /dev/null +++ b/dir_88854e741e94c5d731b598d414654b2c.js @@ -0,0 +1,6 @@ +var dir_88854e741e94c5d731b598d414654b2c = +[ + [ "pipeline", "dir_75df76df1d9a742bd9021c942e21561b.html", "dir_75df76df1d9a742bd9021c942e21561b" ], + [ "resource", "dir_1685b704a22d6357ace52e466cd1ac5e.html", "dir_1685b704a22d6357ace52e466cd1ac5e" ], + [ "VulkanRenderer.h", "VulkanRenderer_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_899bc9390cb8cbf630ecd7670efe3f13.html b/dir_899bc9390cb8cbf630ecd7670efe3f13.html new file mode 100644 index 000000000..d55327c98 --- /dev/null +++ b/dir_899bc9390cb8cbf630ecd7670efe3f13.html @@ -0,0 +1,127 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/resource Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
resource Directory Reference
+
+
+ + + + + + +

+Directories

directory  binding
 
directory  cpuwrite
 
+ + + + + + + + + +

+Files

file  LightingShaderResourceManager.h [code]
 
file  ShaderArrayIndexManager.h [code]
 
file  ShaderLightArray.h [code]
 
file  ShaderLightsInFrustumSingleType.hpp [code]
 
+
+
+ + + + diff --git a/dir_899bc9390cb8cbf630ecd7670efe3f13.js b/dir_899bc9390cb8cbf630ecd7670efe3f13.js new file mode 100644 index 000000000..a95540b17 --- /dev/null +++ b/dir_899bc9390cb8cbf630ecd7670efe3f13.js @@ -0,0 +1,9 @@ +var dir_899bc9390cb8cbf630ecd7670efe3f13 = +[ + [ "binding", "dir_268c75e817f67fac7f36dfc234371da8.html", "dir_268c75e817f67fac7f36dfc234371da8" ], + [ "cpuwrite", "dir_e593aed00f615f2bbf73ee8f88768802.html", "dir_e593aed00f615f2bbf73ee8f88768802" ], + [ "LightingShaderResourceManager.h", "LightingShaderResourceManager_8h_source.html", null ], + [ "ShaderArrayIndexManager.h", "ShaderArrayIndexManager_8h_source.html", null ], + [ "ShaderLightArray.h", "ShaderLightArray_8h_source.html", null ], + [ "ShaderLightsInFrustumSingleType.hpp", "ShaderLightsInFrustumSingleType_8hpp_source.html", null ] +]; \ No newline at end of file diff --git a/dir_8aa75ad3c315dba50bd46cd5118d21c0.html b/dir_8aa75ad3c315dba50bd46cd5118d21c0.html new file mode 100644 index 000000000..7054fec02 --- /dev/null +++ b/dir_8aa75ad3c315dba50bd46cd5118d21c0.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/io/properties Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
properties Directory Reference
+
+
+ + + + + + +

+Files

file  GuidProperty.h [code]
 
file  SerializeProperty.h [code]
 
+
+
+ + + + diff --git a/dir_8aa75ad3c315dba50bd46cd5118d21c0.js b/dir_8aa75ad3c315dba50bd46cd5118d21c0.js new file mode 100644 index 000000000..0a9d459f4 --- /dev/null +++ b/dir_8aa75ad3c315dba50bd46cd5118d21c0.js @@ -0,0 +1,5 @@ +var dir_8aa75ad3c315dba50bd46cd5118d21c0 = +[ + [ "GuidProperty.h", "GuidProperty_8h_source.html", null ], + [ "SerializeProperty.h", "SerializeProperty_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_a111cc5adb4103d3d8e4addddf74297e.html b/dir_a111cc5adb4103d3d8e4addddf74297e.html new file mode 100644 index 000000000..b9ce1ed63 --- /dev/null +++ b/dir_a111cc5adb4103d3d8e4addddf74297e.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/window Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
window Directory Reference
+
+
+ + + + +

+Files

file  GLFW.hpp [code]
 
+
+
+ + + + diff --git a/dir_a111cc5adb4103d3d8e4addddf74297e.js b/dir_a111cc5adb4103d3d8e4addddf74297e.js new file mode 100644 index 000000000..001a7fd78 --- /dev/null +++ b/dir_a111cc5adb4103d3d8e4addddf74297e.js @@ -0,0 +1,4 @@ +var dir_a111cc5adb4103d3d8e4addddf74297e = +[ + [ "GLFW.hpp", "GLFW_8hpp_source.html", null ] +]; \ No newline at end of file diff --git a/dir_a31afd56823c6335224242a3eb4525db.html b/dir_a31afd56823c6335224242a3eb4525db.html new file mode 100644 index 000000000..ec99a1e17 --- /dev/null +++ b/dir_a31afd56823c6335224242a3eb4525db.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: src/editor Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
editor Directory Reference
+
+
+ + + + +

+Directories

directory  src
 
+
+
+ + + + diff --git a/dir_a42664758e28241c1ef480f153ce712b.html b/dir_a42664758e28241c1ef480f153ce712b.html new file mode 100644 index 000000000..2e5c670b0 --- /dev/null +++ b/dir_a42664758e28241c1ef480f153ce712b.html @@ -0,0 +1,108 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/hlsl/resource Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
resource Directory Reference
+
+
+
+
+ + + + diff --git a/dir_a42664758e28241c1ef480f153ce712b.js b/dir_a42664758e28241c1ef480f153ce712b.js new file mode 100644 index 000000000..fde1fe93d --- /dev/null +++ b/dir_a42664758e28241c1ef480f153ce712b.js @@ -0,0 +1,4 @@ +var dir_a42664758e28241c1ef480f153ce712b = +[ + [ "binding", "dir_d8e757402d5e38851e01e59a45b84433.html", "dir_d8e757402d5e38851e01e59a45b84433" ] +]; \ No newline at end of file diff --git a/dir_a440d772fec9b9b9c755744f14b33a1c.html b/dir_a440d772fec9b9b9c755744f14b33a1c.html new file mode 100644 index 000000000..ca333f642 --- /dev/null +++ b/dir_a440d772fec9b9b9c755744f14b33a1c.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/directx/resource/shadow Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
shadow Directory Reference
+
+
+ + + + +

+Files

file  DirectXShadowMapArrayIndexManager.h [code]
 
+
+
+ + + + diff --git a/dir_a440d772fec9b9b9c755744f14b33a1c.js b/dir_a440d772fec9b9b9c755744f14b33a1c.js new file mode 100644 index 000000000..f6269f35e --- /dev/null +++ b/dir_a440d772fec9b9b9c755744f14b33a1c.js @@ -0,0 +1,4 @@ +var dir_a440d772fec9b9b9c755744f14b33a1c = +[ + [ "DirectXShadowMapArrayIndexManager.h", "DirectXShadowMapArrayIndexManager_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_abb9b715da83eecf3aed00df03772ecf.html b/dir_abb9b715da83eecf3aed00df03772ecf.html new file mode 100644 index 000000000..ebf4246eb --- /dev/null +++ b/dir_abb9b715da83eecf3aed00df03772ecf.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/game/nodes Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nodes Directory Reference
+
+
+ + + + +

+Directories

directory  light
 
+
+
+ + + + diff --git a/dir_b84637558657fd1a99c6ba53f2f33845.html b/dir_b84637558657fd1a99c6ba53f2f33845.html new file mode 100644 index 000000000..993fcfef7 --- /dev/null +++ b/dir_b84637558657fd1a99c6ba53f2f33845.html @@ -0,0 +1,118 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/resource/binding/cpuwrite Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
cpuwrite Directory Reference
+
+
+ + + + + + + + +

+Files

file  ShaderCpuWriteResourceBinding.h [code]
 
file  ShaderCpuWriteResourceBindingManager.h [code]
 
file  ShaderCpuWriteResourceBindingUniquePtr.h [code]
 
+
+
+ + + + diff --git a/dir_b84637558657fd1a99c6ba53f2f33845.js b/dir_b84637558657fd1a99c6ba53f2f33845.js new file mode 100644 index 000000000..97797b550 --- /dev/null +++ b/dir_b84637558657fd1a99c6ba53f2f33845.js @@ -0,0 +1,6 @@ +var dir_b84637558657fd1a99c6ba53f2f33845 = +[ + [ "ShaderCpuWriteResourceBinding.h", "ShaderCpuWriteResourceBinding_8h_source.html", null ], + [ "ShaderCpuWriteResourceBindingManager.h", "ShaderCpuWriteResourceBindingManager_8h_source.html", null ], + [ "ShaderCpuWriteResourceBindingUniquePtr.h", "ShaderCpuWriteResourceBindingUniquePtr_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_b8a391f29ba7282a16f1b58f19ec24d1.html b/dir_b8a391f29ba7282a16f1b58f19ec24d1.html new file mode 100644 index 000000000..3bf03701f --- /dev/null +++ b/dir_b8a391f29ba7282a16f1b58f19ec24d1.html @@ -0,0 +1,127 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/general/resource Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
resource Directory Reference
+
+
+ + + + + + +

+Directories

directory  frame
 
directory  shadow
 
+ + + + + + + + + +

+Files

file  GpuResource.h [code]
 
file  GpuResourceManager.h [code]
 
file  MeshData.h [code]
 
file  UploadBuffer.h [code]
 
+
+
+ + + + diff --git a/dir_b8a391f29ba7282a16f1b58f19ec24d1.js b/dir_b8a391f29ba7282a16f1b58f19ec24d1.js new file mode 100644 index 000000000..9db32cd22 --- /dev/null +++ b/dir_b8a391f29ba7282a16f1b58f19ec24d1.js @@ -0,0 +1,9 @@ +var dir_b8a391f29ba7282a16f1b58f19ec24d1 = +[ + [ "frame", "dir_10962f3d170d90e2caa01fd1efc295ff.html", "dir_10962f3d170d90e2caa01fd1efc295ff" ], + [ "shadow", "dir_cb25f7e6d432bdb42797faefca2c4977.html", "dir_cb25f7e6d432bdb42797faefca2c4977" ], + [ "GpuResource.h", "GpuResource_8h_source.html", null ], + [ "GpuResourceManager.h", "GpuResourceManager_8h_source.html", null ], + [ "MeshData.h", "MeshData_8h_source.html", null ], + [ "UploadBuffer.h", "UploadBuffer_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_ba00f76f55d57e13c6522c91ec0c9bfd.html b/dir_ba00f76f55d57e13c6522c91ec0c9bfd.html new file mode 100644 index 000000000..e36efb54f --- /dev/null +++ b/dir_ba00f76f55d57e13c6522c91ec0c9bfd.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/directx/pipeline Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
pipeline Directory Reference
+
+
+ + + + +

+Files

file  DirectXPso.h [code]
 
+
+
+ + + + diff --git a/dir_ba00f76f55d57e13c6522c91ec0c9bfd.js b/dir_ba00f76f55d57e13c6522c91ec0c9bfd.js new file mode 100644 index 000000000..62ab4a5bd --- /dev/null +++ b/dir_ba00f76f55d57e13c6522c91ec0c9bfd.js @@ -0,0 +1,4 @@ +var dir_ba00f76f55d57e13c6522c91ec0c9bfd = +[ + [ "DirectXPso.h", "DirectXPso_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_c3f04a05024532293f5c1665789673df.html b/dir_c3f04a05024532293f5c1665789673df.html new file mode 100644 index 000000000..1a287c3a7 --- /dev/null +++ b/dir_c3f04a05024532293f5c1665789673df.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/cache Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
cache Directory Reference
+
+
+ + + + +

+Files

file  ShaderCacheManager.h [code]
 
+
+
+ + + + diff --git a/dir_c3f04a05024532293f5c1665789673df.js b/dir_c3f04a05024532293f5c1665789673df.js new file mode 100644 index 000000000..e27e7ffbc --- /dev/null +++ b/dir_c3f04a05024532293f5c1665789673df.js @@ -0,0 +1,4 @@ +var dir_c3f04a05024532293f5c1665789673df = +[ + [ "ShaderCacheManager.h", "ShaderCacheManager_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_c40557993b8c8d997518bc2cf6aac1c9.html b/dir_c40557993b8c8d997518bc2cf6aac1c9.html new file mode 100644 index 000000000..379ecbc54 --- /dev/null +++ b/dir_c40557993b8c8d997518bc2cf6aac1c9.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/glsl/format Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
format Directory Reference
+
+
+ + + + + + +

+Files

file  GlslVertexFormatDescription.h [code]
 
file  MeshNodeGlslVertexFormatDescription.h [code]
 
+
+
+ + + + diff --git a/dir_c40557993b8c8d997518bc2cf6aac1c9.js b/dir_c40557993b8c8d997518bc2cf6aac1c9.js new file mode 100644 index 000000000..bdd8d6868 --- /dev/null +++ b/dir_c40557993b8c8d997518bc2cf6aac1c9.js @@ -0,0 +1,5 @@ +var dir_c40557993b8c8d997518bc2cf6aac1c9 = +[ + [ "GlslVertexFormatDescription.h", "GlslVertexFormatDescription_8h_source.html", null ], + [ "MeshNodeGlslVertexFormatDescription.h", "MeshNodeGlslVertexFormatDescription_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_c437eb56d4fc569e4849da05f836e8b8.html b/dir_c437eb56d4fc569e4849da05f836e8b8.html new file mode 100644 index 000000000..4fb2e09ad --- /dev/null +++ b/dir_c437eb56d4fc569e4849da05f836e8b8.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/game/camera Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
camera Directory Reference
+
+
+ + + + + + +

+Files

file  CameraManager.h [code]
 
file  CameraProperties.h [code]
 
+
+
+ + + + diff --git a/dir_c437eb56d4fc569e4849da05f836e8b8.js b/dir_c437eb56d4fc569e4849da05f836e8b8.js new file mode 100644 index 000000000..8b454d8cf --- /dev/null +++ b/dir_c437eb56d4fc569e4849da05f836e8b8.js @@ -0,0 +1,5 @@ +var dir_c437eb56d4fc569e4849da05f836e8b8 = +[ + [ "CameraManager.h", "CameraManager_8h_source.html", null ], + [ "CameraProperties.h", "CameraProperties_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_c5c2ba609f94206dc7ea1dd6e60097e3.html b/dir_c5c2ba609f94206dc7ea1dd6e60097e3.html new file mode 100644 index 000000000..72d838c13 --- /dev/null +++ b/dir_c5c2ba609f94206dc7ea1dd6e60097e3.html @@ -0,0 +1,108 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/io/properties Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
properties Directory Reference
+
+
+
+
+ + + + diff --git a/dir_c5c5dc0e5e7e3e2711eaa3da8c0c58fb.html b/dir_c5c5dc0e5e7e3e2711eaa3da8c0c58fb.html new file mode 100644 index 000000000..b2d022b7e --- /dev/null +++ b/dir_c5c5dc0e5e7e3e2711eaa3da8c0c58fb.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/math Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
math Directory Reference
+
+
+ + + + + + +

+Files

file  GLMath.hpp [code]
 
file  MathHelpers.hpp [code]
 
+
+
+ + + + diff --git a/dir_c5c5dc0e5e7e3e2711eaa3da8c0c58fb.js b/dir_c5c5dc0e5e7e3e2711eaa3da8c0c58fb.js new file mode 100644 index 000000000..bf6c0000f --- /dev/null +++ b/dir_c5c5dc0e5e7e3e2711eaa3da8c0c58fb.js @@ -0,0 +1,5 @@ +var dir_c5c5dc0e5e7e3e2711eaa3da8c0c58fb = +[ + [ "GLMath.hpp", "GLMath_8hpp_source.html", null ], + [ "MathHelpers.hpp", "MathHelpers_8hpp_source.html", null ] +]; \ No newline at end of file diff --git a/dir_c7b5f78f238c0a868ed56c456d2e83ea.html b/dir_c7b5f78f238c0a868ed56c456d2e83ea.html new file mode 100644 index 000000000..5926da8a0 --- /dev/null +++ b/dir_c7b5f78f238c0a868ed56c456d2e83ea.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/game/callbacks Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
callbacks Directory Reference
+
+
+ + + + + + +

+Files

file  NodeFunction.hpp [code]
 
file  NodeNotificationBroadcaster.hpp [code]
 
+
+
+ + + + diff --git a/dir_c7b5f78f238c0a868ed56c456d2e83ea.js b/dir_c7b5f78f238c0a868ed56c456d2e83ea.js new file mode 100644 index 000000000..7cd1cf033 --- /dev/null +++ b/dir_c7b5f78f238c0a868ed56c456d2e83ea.js @@ -0,0 +1,5 @@ +var dir_c7b5f78f238c0a868ed56c456d2e83ea = +[ + [ "NodeFunction.hpp", "NodeFunction_8hpp_source.html", null ], + [ "NodeNotificationBroadcaster.hpp", "NodeNotificationBroadcaster_8hpp_source.html", null ] +]; \ No newline at end of file diff --git a/dir_cb25f7e6d432bdb42797faefca2c4977.html b/dir_cb25f7e6d432bdb42797faefca2c4977.html new file mode 100644 index 000000000..064c59d6b --- /dev/null +++ b/dir_cb25f7e6d432bdb42797faefca2c4977.html @@ -0,0 +1,120 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/render/general/resource/shadow Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
shadow Directory Reference
+
+
+ + + + + + + + + + +

+Files

file  ShadowMapArrayIndexManager.h [code]
 
file  ShadowMapHandle.h [code]
 
file  ShadowMapManager.h [code]
 
file  ShadowMapType.hpp [code]
 
+
+
+ + + + diff --git a/dir_cb25f7e6d432bdb42797faefca2c4977.js b/dir_cb25f7e6d432bdb42797faefca2c4977.js new file mode 100644 index 000000000..0870ab02e --- /dev/null +++ b/dir_cb25f7e6d432bdb42797faefca2c4977.js @@ -0,0 +1,7 @@ +var dir_cb25f7e6d432bdb42797faefca2c4977 = +[ + [ "ShadowMapArrayIndexManager.h", "ShadowMapArrayIndexManager_8h_source.html", null ], + [ "ShadowMapHandle.h", "ShadowMapHandle_8h_source.html", null ], + [ "ShadowMapManager.h", "ShadowMapManager_8h_source.html", null ], + [ "ShadowMapType.hpp", "ShadowMapType_8hpp_source.html", null ] +]; \ No newline at end of file diff --git a/dir_cc5ba1c7dc8b43cad375ec8b58587329.html b/dir_cc5ba1c7dc8b43cad375ec8b58587329.html new file mode 100644 index 000000000..186e1116b --- /dev/null +++ b/dir_cc5ba1c7dc8b43cad375ec8b58587329.html @@ -0,0 +1,127 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/game/nodes Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nodes Directory Reference
+
+
+ + + + +

+Directories

directory  light
 
+ + + + + + + + + + + +

+Files

file  CameraNode.h [code]
 
file  EnvironmentNode.h [code]
 
file  MeshNode.h [code]
 
file  Node.h [code]
 
file  SpatialNode.h [code]
 
+
+
+ + + + diff --git a/dir_cc5ba1c7dc8b43cad375ec8b58587329.js b/dir_cc5ba1c7dc8b43cad375ec8b58587329.js new file mode 100644 index 000000000..b15969ae2 --- /dev/null +++ b/dir_cc5ba1c7dc8b43cad375ec8b58587329.js @@ -0,0 +1,9 @@ +var dir_cc5ba1c7dc8b43cad375ec8b58587329 = +[ + [ "light", "dir_8265353e9896f9a7f783d85d71af854a.html", "dir_8265353e9896f9a7f783d85d71af854a" ], + [ "CameraNode.h", "CameraNode_8h_source.html", null ], + [ "EnvironmentNode.h", "EnvironmentNode_8h_source.html", null ], + [ "MeshNode.h", "MeshNode_8h_source.html", null ], + [ "Node.h", "Node_8h_source.html", null ], + [ "SpatialNode.h", "SpatialNode_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_d055b31d289f737cf1fc8c64643d4a6d.html b/dir_d055b31d289f737cf1fc8c64643d4a6d.html new file mode 100644 index 000000000..8f2d22f96 --- /dev/null +++ b/dir_d055b31d289f737cf1fc8c64643d4a6d.html @@ -0,0 +1,137 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/misc Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
misc Directory Reference
+
+
+ + + + +

+Directories

directory  shapes
 
+ + + + + + + + + + + + + + + + + + + + + +

+Files

file  DesktopNotification.h [code]
 
file  Error.h [code]
 
file  FileDialog.h [code]
 
file  Globals.h [code]
 
file  MessageBox.h [code]
 
file  OpenLinkInBrowser.h [code]
 
file  PrimitiveMeshGenerator.h [code]
 
file  Profiler.hpp [code]
 
file  ProjectPaths.h [code]
 
file  Timer.h [code]
 
+
+
+ + + + diff --git a/dir_d055b31d289f737cf1fc8c64643d4a6d.js b/dir_d055b31d289f737cf1fc8c64643d4a6d.js new file mode 100644 index 000000000..1362005e5 --- /dev/null +++ b/dir_d055b31d289f737cf1fc8c64643d4a6d.js @@ -0,0 +1,14 @@ +var dir_d055b31d289f737cf1fc8c64643d4a6d = +[ + [ "shapes", "dir_0fc3f353271683a562ec0901a6675197.html", "dir_0fc3f353271683a562ec0901a6675197" ], + [ "DesktopNotification.h", "DesktopNotification_8h_source.html", null ], + [ "Error.h", "Error_8h_source.html", null ], + [ "FileDialog.h", "FileDialog_8h_source.html", null ], + [ "Globals.h", "Globals_8h_source.html", null ], + [ "MessageBox.h", "MessageBox_8h_source.html", null ], + [ "OpenLinkInBrowser.h", "OpenLinkInBrowser_8h_source.html", null ], + [ "PrimitiveMeshGenerator.h", "PrimitiveMeshGenerator_8h_source.html", null ], + [ "Profiler.hpp", "Profiler_8hpp_source.html", null ], + [ "ProjectPaths.h", "ProjectPaths_8h_source.html", null ], + [ "Timer.h", "Timer_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_d4a5a65e74d9bde42699a2d4df034ecd.html b/dir_d4a5a65e74d9bde42699a2d4df034ecd.html new file mode 100644 index 000000000..73a32c535 --- /dev/null +++ b/dir_d4a5a65e74d9bde42699a2d4df034ecd.html @@ -0,0 +1,108 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/io/serializers Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
serializers Directory Reference
+
+
+
+
+ + + + diff --git a/dir_d8e757402d5e38851e01e59a45b84433.html b/dir_d8e757402d5e38851e01e59a45b84433.html new file mode 100644 index 000000000..e40435a07 --- /dev/null +++ b/dir_d8e757402d5e38851e01e59a45b84433.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/hlsl/resource/binding Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
binding Directory Reference
+
+
+ + + + + + +

+Directories

directory  global
 
directory  texture
 
+
+
+ + + + diff --git a/dir_d8e757402d5e38851e01e59a45b84433.js b/dir_d8e757402d5e38851e01e59a45b84433.js new file mode 100644 index 000000000..8c290373b --- /dev/null +++ b/dir_d8e757402d5e38851e01e59a45b84433.js @@ -0,0 +1,5 @@ +var dir_d8e757402d5e38851e01e59a45b84433 = +[ + [ "global", "dir_58f2be8f45582f1aa2376bfaadba951b.html", "dir_58f2be8f45582f1aa2376bfaadba951b" ], + [ "texture", "dir_e0ace713be3475131e60a0ca9af54636.html", "dir_e0ace713be3475131e60a0ca9af54636" ] +]; \ No newline at end of file diff --git a/dir_dcf71d98cc04d2129765dfad3817fc25.html b/dir_dcf71d98cc04d2129765dfad3817fc25.html new file mode 100644 index 000000000..32359e70d --- /dev/null +++ b/dir_dcf71d98cc04d2129765dfad3817fc25.html @@ -0,0 +1,125 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/glsl Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
glsl Directory Reference
+
+
+ + + + + + +

+Directories

directory  cache
 
directory  format
 
+ + + + + + + +

+Files

file  DescriptorSetLayoutGenerator.h [code]
 
file  GlslComputeShaderInterface.h [code]
 
file  GlslShader.h [code]
 
+
+
+ + + + diff --git a/dir_dcf71d98cc04d2129765dfad3817fc25.js b/dir_dcf71d98cc04d2129765dfad3817fc25.js new file mode 100644 index 000000000..5d02c1f7d --- /dev/null +++ b/dir_dcf71d98cc04d2129765dfad3817fc25.js @@ -0,0 +1,9 @@ +var dir_dcf71d98cc04d2129765dfad3817fc25 = +[ + [ "cache", "dir_1e31920b674df49ea57e2c48ffba7d7d.html", "dir_1e31920b674df49ea57e2c48ffba7d7d" ], + [ "format", "dir_c40557993b8c8d997518bc2cf6aac1c9.html", "dir_c40557993b8c8d997518bc2cf6aac1c9" ], + [ "resource", "dir_491e7905d57d55c9ff8056a9680da626.html", "dir_491e7905d57d55c9ff8056a9680da626" ], + [ "DescriptorSetLayoutGenerator.h", "DescriptorSetLayoutGenerator_8h_source.html", null ], + [ "GlslComputeShaderInterface.h", "GlslComputeShaderInterface_8h_source.html", null ], + [ "GlslShader.h", "GlslShader_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_e0ace713be3475131e60a0ca9af54636.html b/dir_e0ace713be3475131e60a0ca9af54636.html new file mode 100644 index 000000000..f90274802 --- /dev/null +++ b/dir_e0ace713be3475131e60a0ca9af54636.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/hlsl/resource/binding/texture Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
texture Directory Reference
+
+
+ + + + +

+Files

file  HlslShaderTextureResourceBinding.h [code]
 
+
+
+ + + + diff --git a/dir_e0ace713be3475131e60a0ca9af54636.js b/dir_e0ace713be3475131e60a0ca9af54636.js new file mode 100644 index 000000000..05e29f4d3 --- /dev/null +++ b/dir_e0ace713be3475131e60a0ca9af54636.js @@ -0,0 +1,4 @@ +var dir_e0ace713be3475131e60a0ca9af54636 = +[ + [ "HlslShaderTextureResourceBinding.h", "HlslShaderTextureResourceBinding_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_e0ef9ebe84488d81f54422963e9a9498.html b/dir_e0ef9ebe84488d81f54422963e9a9498.html new file mode 100644 index 000000000..22de3fd1a --- /dev/null +++ b/dir_e0ef9ebe84488d81f54422963e9a9498.html @@ -0,0 +1,123 @@ + + + + + + + +Nameless Engine: src/editor_lib/public Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
public Directory Reference
+
+
+ + + + + + + + +

+Directories

directory  input
 
directory  misc
 
directory  nodes
 
+ + + +

+Files

file  EditorGameInstance.h [code]
 
+
+
+ + + + diff --git a/dir_e0ef9ebe84488d81f54422963e9a9498.js b/dir_e0ef9ebe84488d81f54422963e9a9498.js new file mode 100644 index 000000000..80a36fd9e --- /dev/null +++ b/dir_e0ef9ebe84488d81f54422963e9a9498.js @@ -0,0 +1,7 @@ +var dir_e0ef9ebe84488d81f54422963e9a9498 = +[ + [ "input", "dir_6117afdc5a20ea9077509ff9fd27d059.html", "dir_6117afdc5a20ea9077509ff9fd27d059" ], + [ "misc", "dir_48d37b1060bbd18046e66bc0f50da0ee.html", "dir_48d37b1060bbd18046e66bc0f50da0ee" ], + [ "nodes", "dir_f25fd6cd84e5c1c4cb0c849643e32043.html", "dir_f25fd6cd84e5c1c4cb0c849643e32043" ], + [ "EditorGameInstance.h", "EditorGameInstance_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_e593aed00f615f2bbf73ee8f88768802.html b/dir_e593aed00f615f2bbf73ee8f88768802.html new file mode 100644 index 000000000..55a63a17a --- /dev/null +++ b/dir_e593aed00f615f2bbf73ee8f88768802.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/resource/cpuwrite Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
cpuwrite Directory Reference
+
+
+ + + + + + +

+Files

file  DynamicCpuWriteShaderResourceArray.h [code]
 
file  DynamicCpuWriteShaderResourceArrayManager.h [code]
 
+
+
+ + + + diff --git a/dir_e593aed00f615f2bbf73ee8f88768802.js b/dir_e593aed00f615f2bbf73ee8f88768802.js new file mode 100644 index 000000000..06f1477f7 --- /dev/null +++ b/dir_e593aed00f615f2bbf73ee8f88768802.js @@ -0,0 +1,5 @@ +var dir_e593aed00f615f2bbf73ee8f88768802 = +[ + [ "DynamicCpuWriteShaderResourceArray.h", "DynamicCpuWriteShaderResourceArray_8h_source.html", null ], + [ "DynamicCpuWriteShaderResourceArrayManager.h", "DynamicCpuWriteShaderResourceArrayManager_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_e61267bc081b3537f87c78de395feba9.html b/dir_e61267bc081b3537f87c78de395feba9.html new file mode 100644 index 000000000..71bc27a54 --- /dev/null +++ b/dir_e61267bc081b3537f87c78de395feba9.html @@ -0,0 +1,130 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/io/serializers Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
serializers Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Files

file  GlmVecFieldSerializer.h [code]
 
file  IBinaryFieldSerializer.hpp [code]
 
file  IFieldSerializer.hpp [code]
 
file  MeshDataBinaryFieldSerializer.h [code]
 
file  PrimitiveFieldSerializer.h [code]
 
file  SerializableObjectFieldSerializer.h [code]
 
file  StringFieldSerializer.h [code]
 
file  UnorderedMapFieldSerializer.h [code]
 
file  VectorFieldSerializer.h [code]
 
+
+
+ + + + diff --git a/dir_e61267bc081b3537f87c78de395feba9.js b/dir_e61267bc081b3537f87c78de395feba9.js new file mode 100644 index 000000000..aa6822896 --- /dev/null +++ b/dir_e61267bc081b3537f87c78de395feba9.js @@ -0,0 +1,12 @@ +var dir_e61267bc081b3537f87c78de395feba9 = +[ + [ "GlmVecFieldSerializer.h", "GlmVecFieldSerializer_8h_source.html", null ], + [ "IBinaryFieldSerializer.hpp", "IBinaryFieldSerializer_8hpp_source.html", null ], + [ "IFieldSerializer.hpp", "IFieldSerializer_8hpp_source.html", null ], + [ "MeshDataBinaryFieldSerializer.h", "MeshDataBinaryFieldSerializer_8h_source.html", null ], + [ "PrimitiveFieldSerializer.h", "PrimitiveFieldSerializer_8h_source.html", null ], + [ "SerializableObjectFieldSerializer.h", "SerializableObjectFieldSerializer_8h_source.html", null ], + [ "StringFieldSerializer.h", "StringFieldSerializer_8h_source.html", null ], + [ "UnorderedMapFieldSerializer.h", "UnorderedMapFieldSerializer_8h_source.html", null ], + [ "VectorFieldSerializer.h", "VectorFieldSerializer_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_e645ce746b7fd7f7b30b25fe28e254d0.html b/dir_e645ce746b7fd7f7b30b25fe28e254d0.html new file mode 100644 index 000000000..fba58fd2b --- /dev/null +++ b/dir_e645ce746b7fd7f7b30b25fe28e254d0.html @@ -0,0 +1,108 @@ + + + + + + + +Nameless Engine: src/editor/src Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
src Directory Reference
+
+
+
+
+ + + + diff --git a/dir_e8d81150375a7914f8572cbe301f32ad.html b/dir_e8d81150375a7914f8572cbe301f32ad.html new file mode 100644 index 000000000..506024e32 --- /dev/null +++ b/dir_e8d81150375a7914f8572cbe301f32ad.html @@ -0,0 +1,118 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/render Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
render Directory Reference
+
+
+ + + + + + + + +

+Files

file  Renderer.h [code]
 
file  RenderSettings.h [code]
 
file  RenderStatistics.h [code]
 
+
+
+ + + + diff --git a/dir_e8d81150375a7914f8572cbe301f32ad.js b/dir_e8d81150375a7914f8572cbe301f32ad.js new file mode 100644 index 000000000..1cf3a2c0b --- /dev/null +++ b/dir_e8d81150375a7914f8572cbe301f32ad.js @@ -0,0 +1,6 @@ +var dir_e8d81150375a7914f8572cbe301f32ad = +[ + [ "Renderer.h", "Renderer_8h_source.html", null ], + [ "RenderSettings.h", "RenderSettings_8h_source.html", null ], + [ "RenderStatistics.h", "RenderStatistics_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_eaabbd148ec41e8fc7203d13b7c328e9.html b/dir_eaabbd148ec41e8fc7203d13b7c328e9.html new file mode 100644 index 000000000..a533d6ff3 --- /dev/null +++ b/dir_eaabbd148ec41e8fc7203d13b7c328e9.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/shader/general/resource/binding/texture Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
texture Directory Reference
+
+
+ + + + + + +

+Files

file  ShaderTextureResourceBindingManager.h [code]
 
file  ShaderTextureResourceBindingUniquePtr.h [code]
 
+
+
+ + + + diff --git a/dir_eaabbd148ec41e8fc7203d13b7c328e9.js b/dir_eaabbd148ec41e8fc7203d13b7c328e9.js new file mode 100644 index 000000000..8cb0f0e67 --- /dev/null +++ b/dir_eaabbd148ec41e8fc7203d13b7c328e9.js @@ -0,0 +1,5 @@ +var dir_eaabbd148ec41e8fc7203d13b7c328e9 = +[ + [ "ShaderTextureResourceBindingManager.h", "ShaderTextureResourceBindingManager_8h_source.html", null ], + [ "ShaderTextureResourceBindingUniquePtr.h", "ShaderTextureResourceBindingUniquePtr_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_f25fd6cd84e5c1c4cb0c849643e32043.html b/dir_f25fd6cd84e5c1c4cb0c849643e32043.html new file mode 100644 index 000000000..2d74895b2 --- /dev/null +++ b/dir_f25fd6cd84e5c1c4cb0c849643e32043.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: src/editor_lib/public/nodes Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nodes Directory Reference
+
+
+ + + + +

+Files

file  EditorCameraNode.h [code]
 
+
+
+ + + + diff --git a/dir_f25fd6cd84e5c1c4cb0c849643e32043.js b/dir_f25fd6cd84e5c1c4cb0c849643e32043.js new file mode 100644 index 000000000..2f4b58b4b --- /dev/null +++ b/dir_f25fd6cd84e5c1c4cb0c849643e32043.js @@ -0,0 +1,4 @@ +var dir_f25fd6cd84e5c1c4cb0c849643e32043 = +[ + [ "EditorCameraNode.h", "EditorCameraNode_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_f4ad63450b3df83649e5cc02f94caeb5.html b/dir_f4ad63450b3df83649e5cc02f94caeb5.html new file mode 100644 index 000000000..ed301b2d5 --- /dev/null +++ b/dir_f4ad63450b3df83649e5cc02f94caeb5.html @@ -0,0 +1,108 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/misc/shapes Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
shapes Directory Reference
+
+
+
+
+ + + + diff --git a/dir_f898229b977448ec8cdf46a8044476c7.html b/dir_f898229b977448ec8cdf46a8044476c7.html new file mode 100644 index 000000000..4b5660f45 --- /dev/null +++ b/dir_f898229b977448ec8cdf46a8044476c7.html @@ -0,0 +1,118 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/material Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
material Directory Reference
+
+
+ + + + + + + + +

+Files

file  Material.h [code]
 
file  TextureHandle.h [code]
 
file  TextureManager.h [code]
 
+
+
+ + + + diff --git a/dir_f898229b977448ec8cdf46a8044476c7.js b/dir_f898229b977448ec8cdf46a8044476c7.js new file mode 100644 index 000000000..5ce8175bc --- /dev/null +++ b/dir_f898229b977448ec8cdf46a8044476c7.js @@ -0,0 +1,6 @@ +var dir_f898229b977448ec8cdf46a8044476c7 = +[ + [ "Material.h", "Material_8h_source.html", null ], + [ "TextureHandle.h", "TextureHandle_8h_source.html", null ], + [ "TextureManager.h", "TextureManager_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_f903bb129e9c7c874074031c600663f8.html b/dir_f903bb129e9c7c874074031c600663f8.html new file mode 100644 index 000000000..a07b16420 --- /dev/null +++ b/dir_f903bb129e9c7c874074031c600663f8.html @@ -0,0 +1,120 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/shader Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
shader Directory Reference
+
+
+ + + + + + + + + + +

+Files

file  ComputeShaderInterface.h [code]
 
file  ShaderDescription.h [code]
 
file  ShaderManager.h [code]
 
file  VulkanAlignmentConstants.hpp [code]
 
+
+
+ + + + diff --git a/dir_f903bb129e9c7c874074031c600663f8.js b/dir_f903bb129e9c7c874074031c600663f8.js new file mode 100644 index 000000000..03b99c0e2 --- /dev/null +++ b/dir_f903bb129e9c7c874074031c600663f8.js @@ -0,0 +1,7 @@ +var dir_f903bb129e9c7c874074031c600663f8 = +[ + [ "ComputeShaderInterface.h", "ComputeShaderInterface_8h_source.html", null ], + [ "ShaderDescription.h", "ShaderDescription_8h_source.html", null ], + [ "ShaderManager.h", "ShaderManager_8h_source.html", null ], + [ "VulkanAlignmentConstants.hpp", "VulkanAlignmentConstants_8hpp_source.html", null ] +]; \ No newline at end of file diff --git a/dir_f9d3efab589c496b9fbceccb86028cc6.html b/dir_f9d3efab589c496b9fbceccb86028cc6.html new file mode 100644 index 000000000..a24044322 --- /dev/null +++ b/dir_f9d3efab589c496b9fbceccb86028cc6.html @@ -0,0 +1,123 @@ + + + + + + + +Nameless Engine: src/engine_lib/private/game Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
game Directory Reference
+
+
+ + + + + + +

+Directories

directory  camera
 
directory  nodes
 
+ + + + + +

+Files

file  GameManager.h [code]
 
file  World.h [code]
 
+
+
+ + + + diff --git a/dir_f9d3efab589c496b9fbceccb86028cc6.js b/dir_f9d3efab589c496b9fbceccb86028cc6.js new file mode 100644 index 000000000..ea824e13a --- /dev/null +++ b/dir_f9d3efab589c496b9fbceccb86028cc6.js @@ -0,0 +1,5 @@ +var dir_f9d3efab589c496b9fbceccb86028cc6 = +[ + [ "GameManager.h", "GameManager_8h_source.html", null ], + [ "World.h", "World_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_fdaa52d7ef8aea442f65134e0f91915a.html b/dir_fdaa52d7ef8aea442f65134e0f91915a.html new file mode 100644 index 000000000..051fb61d2 --- /dev/null +++ b/dir_fdaa52d7ef8aea442f65134e0f91915a.html @@ -0,0 +1,125 @@ + + + + + + + +Nameless Engine: src/engine_lib/public/game Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
game Directory Reference
+
+
+ + + + + + + + +

+Directories

directory  callbacks
 
directory  camera
 
directory  nodes
 
+ + + + + +

+Files

file  GameInstance.h [code]
 
file  Window.h [code]
 
+
+
+ + + + diff --git a/dir_fdaa52d7ef8aea442f65134e0f91915a.js b/dir_fdaa52d7ef8aea442f65134e0f91915a.js new file mode 100644 index 000000000..e03b04089 --- /dev/null +++ b/dir_fdaa52d7ef8aea442f65134e0f91915a.js @@ -0,0 +1,8 @@ +var dir_fdaa52d7ef8aea442f65134e0f91915a = +[ + [ "callbacks", "dir_c7b5f78f238c0a868ed56c456d2e83ea.html", "dir_c7b5f78f238c0a868ed56c456d2e83ea" ], + [ "camera", "dir_c437eb56d4fc569e4849da05f836e8b8.html", "dir_c437eb56d4fc569e4849da05f836e8b8" ], + [ "nodes", "dir_cc5ba1c7dc8b43cad375ec8b58587329.html", "dir_cc5ba1c7dc8b43cad375ec8b58587329" ], + [ "GameInstance.h", "GameInstance_8h_source.html", null ], + [ "Window.h", "Window_8h_source.html", null ] +]; \ No newline at end of file diff --git a/doc.png b/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/docd.png b/docd.png new file mode 100644 index 0000000000000000000000000000000000000000..d7c94fda9bf08ecc02c7190d968452b7a2dbf04b GIT binary patch literal 756 zcmV1wr-rhpn+wxm%q2)IkAYsr{iGq<}_z5JCD4J;FN?6Qh;@TCubdp(_XdD-^ zG_#)IP7_z6hKNdx5^+FGArwLWTWCG!j+oKji?U!hxA#d-ljgkN`+e^@-P+RWG{Bx= z2iQyYTtEf*o~ySWrIVW}HWHi0_hd4~$E6Jx1U`>Owo}EYJ1O>iZvS?!z8}B}QwLMA zC3Keqf1c}K@?C`X>68b(EUzYUYAS&OH^VPteZLPr{S&|nQvp@6W4GH-1U8!u&7l~A zx~RUSNH+>7@q38W6!BzirtjLFCzc|XGx)EF#G%^pWION*k@?vP<2O>|XkCD3ujl%1 z{55JSVkw{~HbX>iEZ2%yJ2eHj5Yh8OTpzs0A2;tZ^x!#5D+y-es{k1&0|Ns9-|+Xt ziGiTsZ8(^nUo#wdTpIDkb-Zp(3|A*FzW}GZ5SQD-r^R`&X@`26E3W|GyrwDIZjtQ& z$g5f8Sv=VgVtDien@J(!^BK+#l;s-LgP--p7C;7;E!ysXcXK6?+9D>_-B(?Wm(U zQbNm-5TyYxIU=rs0+)!ixqzhuxw(AqKc3?KKX32{D~Qibp*r0x&Wux5-9WCMMRi3U zTd6dOCQlj>a;gr;gLwRKulT&(m@^L{&HkSC(qH05HSSf$YEhynGvH zWNez``Z8FJXE+BSg=%ak{OR z+Nylcb{?evLYLuE1_HngYw0g%LC#=$a@?4~Tx>F9295Q>9UJ|_6v-KMw;!YZSgGj@ zR8fRov=hJ#QvsO@xw*{0%zH@OKVEUr= 768px. On smaller screen the menu is always visible. + * `GENERATE_TREEVIEW` MUST be enabled! + */ + --menu-display: block; + + --menu-focus-foreground: var(--page-background-color); + --menu-focus-background: var(--primary-color); + --menu-selected-background: rgba(0,0,0,.05); + + + --header-background: var(--page-background-color); + --header-foreground: var(--page-foreground-color); + + /* searchbar colors */ + --searchbar-background: var(--side-nav-background); + --searchbar-foreground: var(--page-foreground-color); + + /* searchbar size + * (`searchbar-width` is only applied on screens >= 768px. + * on smaller screens the searchbar will always fill the entire screen width) */ + --searchbar-height: 33px; + --searchbar-width: 210px; + --searchbar-border-radius: var(--searchbar-height); + + /* code block colors */ + --code-background: #f5f5f5; + --code-foreground: var(--page-foreground-color); + + /* fragment colors */ + --fragment-background: #F8F9FA; + --fragment-foreground: #37474F; + --fragment-keyword: #bb6bb2; + --fragment-keywordtype: #8258b3; + --fragment-keywordflow: #d67c3b; + --fragment-token: #438a59; + --fragment-comment: #969696; + --fragment-link: #5383d6; + --fragment-preprocessor: #46aaa5; + --fragment-linenumber-color: #797979; + --fragment-linenumber-background: #f4f4f5; + --fragment-linenumber-border: #e3e5e7; + --fragment-lineheight: 20px; + + /* sidebar navigation (treeview) colors */ + --side-nav-background: #fbfbfb; + --side-nav-foreground: var(--page-foreground-color); + --side-nav-arrow-opacity: 0; + --side-nav-arrow-hover-opacity: 0.9; + + --toc-background: var(--side-nav-background); + --toc-foreground: var(--side-nav-foreground); + + /* height of an item in any tree / collapsible table */ + --tree-item-height: 30px; + + --memname-font-size: var(--code-font-size); + --memtitle-font-size: 18px; + + --webkit-scrollbar-size: 7px; + --webkit-scrollbar-padding: 4px; + --webkit-scrollbar-color: var(--separator-color); + + --animation-duration: .12s +} + +@media screen and (max-width: 767px) { + html { + --page-font-size: 16px; + --navigation-font-size: 16px; + --toc-font-size: 15px; + --code-font-size: 15px; /* affects code, fragment */ + --title-font-size: 22px; + } +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) { + color-scheme: dark; + + --primary-color: #1982d2; + --primary-dark-color: #86a9c4; + --primary-light-color: #4779ac; + + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.35); + + --odd-color: rgba(100,100,100,.06); + + --menu-selected-background: rgba(0,0,0,.4); + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #38393b; + --side-nav-background: #252628; + + --code-background: #2a2c2f; + + --tablehead-background: #2a2c2f; + + --blockquote-background: #222325; + --blockquote-foreground: #7e8c92; + + --warning-color: #3b2e04; + --warning-color-dark: #f1b602; + --warning-color-darker: #ceb670; + --note-color: #163750; + --note-color-dark: #1982D2; + --note-color-darker: #dcf0fa; + --todo-color: #2a2536; + --todo-color-dark: #7661b3; + --todo-color-darker: #ae9ed6; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2e1917; + --bug-color-dark: #ad2617; + --bug-color-darker: #f5b1aa; + --invariant-color: #303a35; + --invariant-color-dark: #76ce96; + --invariant-color-darker: #cceed5; + + --fragment-background: #282c34; + --fragment-foreground: #dbe4eb; + --fragment-keyword: #cc99cd; + --fragment-keywordtype: #ab99cd; + --fragment-keywordflow: #e08000; + --fragment-token: #7ec699; + --fragment-comment: #999999; + --fragment-link: #98c0e3; + --fragment-preprocessor: #65cabe; + --fragment-linenumber-color: #cccccc; + --fragment-linenumber-background: #35393c; + --fragment-linenumber-border: #1f1f1f; + } +} + +/* dark mode variables are defined twice, to support both the dark-mode without and with doxygen-awesome-darkmode-toggle.js */ +html.dark-mode { + color-scheme: dark; + + --primary-color: #1982d2; + --primary-dark-color: #86a9c4; + --primary-light-color: #4779ac; + + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.30); + + --odd-color: rgba(100,100,100,.06); + + --menu-selected-background: rgba(0,0,0,.4); + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #38393b; + --side-nav-background: #252628; + + --code-background: #2a2c2f; + + --tablehead-background: #2a2c2f; + + --blockquote-background: #222325; + --blockquote-foreground: #7e8c92; + + --warning-color: #3b2e04; + --warning-color-dark: #f1b602; + --warning-color-darker: #ceb670; + --note-color: #163750; + --note-color-dark: #1982D2; + --note-color-darker: #dcf0fa; + --todo-color: #2a2536; + --todo-color-dark: #7661b3; + --todo-color-darker: #ae9ed6; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2e1917; + --bug-color-dark: #ad2617; + --bug-color-darker: #f5b1aa; + --invariant-color: #303a35; + --invariant-color-dark: #76ce96; + --invariant-color-darker: #cceed5; + + --fragment-background: #282c34; + --fragment-foreground: #dbe4eb; + --fragment-keyword: #cc99cd; + --fragment-keywordtype: #ab99cd; + --fragment-keywordflow: #e08000; + --fragment-token: #7ec699; + --fragment-comment: #999999; + --fragment-link: #98c0e3; + --fragment-preprocessor: #65cabe; + --fragment-linenumber-color: #cccccc; + --fragment-linenumber-background: #35393c; + --fragment-linenumber-border: #1f1f1f; +} + +body { + color: var(--page-foreground-color); + background-color: var(--page-background-color); + font-size: var(--page-font-size); +} + +body, table, div, p, dl, #nav-tree .label, .title, +.sm-dox a, .sm-dox a:hover, .sm-dox a:focus, #projectname, +.SelectItem, #MSearchField, .navpath li.navelem a, +.navpath li.navelem a:hover, p.reference, p.definition { + font-family: var(--font-family); +} + +h1, h2, h3, h4, h5 { + margin-top: 1em; + font-weight: 600; + line-height: initial; +} + +p, div, table, dl, p.reference, p.definition { + font-size: var(--page-font-size); +} + +p.reference, p.definition { + color: var(--page-secondary-foreground-color); +} + +a:link, a:visited, a:hover, a:focus, a:active { + color: var(--primary-color) !important; + font-weight: 500; +} + +a.anchor { + scroll-margin-top: var(--spacing-large); + display: block; +} + +/* + Title and top navigation + */ + +#top { + background: var(--header-background); + border-bottom: 1px solid var(--separator-color); +} + +@media screen and (min-width: 768px) { + #top { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; + } +} + +#main-nav { + flex-grow: 5; + padding: var(--spacing-small) var(--spacing-medium); +} + +#titlearea { + width: auto; + padding: var(--spacing-medium) var(--spacing-large); + background: none; + color: var(--header-foreground); + border-bottom: none; +} + +@media screen and (max-width: 767px) { + #titlearea { + padding-bottom: var(--spacing-small); + } +} + +#titlearea table tbody tr { + height: auto !important; +} + +#projectname { + font-size: var(--title-font-size); + font-weight: 600; +} + +#projectnumber { + font-family: inherit; + font-size: 60%; +} + +#projectbrief { + font-family: inherit; + font-size: 80%; +} + +#projectlogo { + vertical-align: middle; +} + +#projectlogo img { + max-height: calc(var(--title-font-size) * 2); + margin-right: var(--spacing-small); +} + +.sm-dox, .tabs, .tabs2, .tabs3 { + background: none; + padding: 0; +} + +.tabs, .tabs2, .tabs3 { + border-bottom: 1px solid var(--separator-color); + margin-bottom: -1px; +} + +.main-menu-btn-icon, .main-menu-btn-icon:before, .main-menu-btn-icon:after { + background: var(--page-secondary-foreground-color); +} + +@media screen and (max-width: 767px) { + .sm-dox a span.sub-arrow { + background: var(--code-background); + } + + #main-menu a.has-submenu span.sub-arrow { + color: var(--page-secondary-foreground-color); + border-radius: var(--border-radius-medium); + } + + #main-menu a.has-submenu:hover span.sub-arrow { + color: var(--page-foreground-color); + } +} + +@media screen and (min-width: 768px) { + .sm-dox li, .tablist li { + display: var(--menu-display); + } + + .sm-dox a span.sub-arrow { + border-color: var(--header-foreground) transparent transparent transparent; + } + + .sm-dox a:hover span.sub-arrow { + border-color: var(--menu-focus-foreground) transparent transparent transparent; + } + + .sm-dox ul a span.sub-arrow { + border-color: transparent transparent transparent var(--page-foreground-color); + } + + .sm-dox ul a:hover span.sub-arrow { + border-color: transparent transparent transparent var(--menu-focus-foreground); + } +} + +.sm-dox ul { + background: var(--page-background-color); + box-shadow: var(--box-shadow); + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium) !important; + padding: var(--spacing-small); + animation: ease-out 150ms slideInMenu; +} + +@keyframes slideInMenu { + from { + opacity: 0; + transform: translate(0px, -2px); + } + + to { + opacity: 1; + transform: translate(0px, 0px); + } +} + +.sm-dox ul a { + color: var(--page-foreground-color) !important; + background: var(--page-background-color); + font-size: var(--navigation-font-size); +} + +.sm-dox>li>ul:after { + border-bottom-color: var(--page-background-color) !important; +} + +.sm-dox>li>ul:before { + border-bottom-color: var(--separator-color) !important; +} + +.sm-dox ul a:hover, .sm-dox ul a:active, .sm-dox ul a:focus { + font-size: var(--navigation-font-size) !important; + color: var(--menu-focus-foreground) !important; + text-shadow: none; + background-color: var(--menu-focus-background); + border-radius: var(--border-radius-small) !important; +} + +.sm-dox a, .sm-dox a:focus, .tablist li, .tablist li a, .tablist li.current a { + text-shadow: none; + background: transparent; + background-image: none !important; + color: var(--header-foreground) !important; + font-weight: normal; + font-size: var(--navigation-font-size); + border-radius: var(--border-radius-small) !important; +} + +.sm-dox a:focus { + outline: auto; +} + +.sm-dox a:hover, .sm-dox a:active, .tablist li a:hover { + text-shadow: none; + font-weight: normal; + background: var(--menu-focus-background); + color: var(--menu-focus-foreground) !important; + border-radius: var(--border-radius-small) !important; + font-size: var(--navigation-font-size); +} + +.tablist li.current { + border-radius: var(--border-radius-small); + background: var(--menu-selected-background); +} + +.tablist li { + margin: var(--spacing-small) 0 var(--spacing-small) var(--spacing-small); +} + +.tablist a { + padding: 0 var(--spacing-large); +} + + +/* + Search box + */ + +#MSearchBox { + height: var(--searchbar-height); + background: var(--searchbar-background); + border-radius: var(--searchbar-border-radius); + border: 1px solid var(--separator-color); + overflow: hidden; + width: var(--searchbar-width); + position: relative; + box-shadow: none; + display: block; + margin-top: 0; +} + +/* until Doxygen 1.9.4 */ +.left img#MSearchSelect { + left: 0; + user-select: none; + padding-left: 8px; +} + +/* Doxygen 1.9.5 */ +.left span#MSearchSelect { + left: 0; + user-select: none; + margin-left: 8px; + padding: 0; +} + +.left #MSearchSelect[src$=".png"] { + padding-left: 0 +} + +.SelectionMark { + user-select: none; +} + +.tabs .left #MSearchSelect { + padding-left: 0; +} + +.tabs #MSearchBox { + position: absolute; + right: var(--spacing-medium); +} + +@media screen and (max-width: 767px) { + .tabs #MSearchBox { + position: relative; + right: 0; + margin-left: var(--spacing-medium); + margin-top: 0; + } +} + +#MSearchSelectWindow, #MSearchResultsWindow { + z-index: 9999; +} + +#MSearchBox.MSearchBoxActive { + border-color: var(--primary-color); + box-shadow: inset 0 0 0 1px var(--primary-color); +} + +#main-menu > li:last-child { + margin-right: 0; +} + +@media screen and (max-width: 767px) { + #main-menu > li:last-child { + height: 50px; + } +} + +#MSearchField { + font-size: var(--navigation-font-size); + height: calc(var(--searchbar-height) - 2px); + background: transparent; + width: calc(var(--searchbar-width) - 64px); +} + +.MSearchBoxActive #MSearchField { + color: var(--searchbar-foreground); +} + +#MSearchSelect { + top: calc(calc(var(--searchbar-height) / 2) - 11px); +} + +#MSearchBox span.left, #MSearchBox span.right { + background: none; + background-image: none; +} + +#MSearchBox span.right { + padding-top: calc(calc(var(--searchbar-height) / 2) - 12px); + position: absolute; + right: var(--spacing-small); +} + +.tabs #MSearchBox span.right { + top: calc(calc(var(--searchbar-height) / 2) - 12px); +} + +@keyframes slideInSearchResults { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } +} + +#MSearchResultsWindow { + left: auto !important; + right: var(--spacing-medium); + border-radius: var(--border-radius-large); + border: 1px solid var(--separator-color); + transform: translate(0, 20px); + box-shadow: var(--box-shadow); + animation: ease-out 280ms slideInSearchResults; + background: var(--page-background-color); +} + +iframe#MSearchResults { + margin: 4px; +} + +iframe { + color-scheme: normal; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) iframe#MSearchResults { + filter: invert() hue-rotate(180deg); + } +} + +html.dark-mode iframe#MSearchResults { + filter: invert() hue-rotate(180deg); +} + +#MSearchResults .SRPage { + background-color: transparent; +} + +#MSearchResults .SRPage .SREntry { + font-size: 10pt; + padding: var(--spacing-small) var(--spacing-medium); +} + +#MSearchSelectWindow { + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + box-shadow: var(--box-shadow); + background: var(--page-background-color); + padding-top: var(--spacing-small); + padding-bottom: var(--spacing-small); +} + +#MSearchSelectWindow a.SelectItem { + font-size: var(--navigation-font-size); + line-height: var(--content-line-height); + margin: 0 var(--spacing-small); + border-radius: var(--border-radius-small); + color: var(--page-foreground-color) !important; + font-weight: normal; +} + +#MSearchSelectWindow a.SelectItem:hover { + background: var(--menu-focus-background); + color: var(--menu-focus-foreground) !important; +} + +@media screen and (max-width: 767px) { + #MSearchBox { + margin-top: var(--spacing-medium); + margin-bottom: var(--spacing-medium); + width: calc(100vw - 30px); + } + + #main-menu > li:last-child { + float: none !important; + } + + #MSearchField { + width: calc(100vw - 110px); + } + + @keyframes slideInSearchResultsMobile { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } + } + + #MSearchResultsWindow { + left: var(--spacing-medium) !important; + right: var(--spacing-medium); + overflow: auto; + transform: translate(0, 20px); + animation: ease-out 280ms slideInSearchResultsMobile; + width: auto !important; + } + + /* + * Overwrites for fixing the searchbox on mobile in doxygen 1.9.2 + */ + label.main-menu-btn ~ #searchBoxPos1 { + top: 3px !important; + right: 6px !important; + left: 45px; + display: flex; + } + + label.main-menu-btn ~ #searchBoxPos1 > #MSearchBox { + margin-top: 0; + margin-bottom: 0; + flex-grow: 2; + float: left; + } +} + +/* + Tree view + */ + +#side-nav { + padding: 0 !important; + background: var(--side-nav-background); + min-width: 8px; + max-width: 50vw; +} + +@media screen and (max-width: 767px) { + #side-nav { + display: none; + } + + #doc-content { + margin-left: 0 !important; + } +} + +#nav-tree { + background: transparent; + margin-right: 1px; +} + +#nav-tree .label { + font-size: var(--navigation-font-size); +} + +#nav-tree .item { + height: var(--tree-item-height); + line-height: var(--tree-item-height); +} + +#nav-sync { + bottom: 12px; + right: 12px; + top: auto !important; + user-select: none; +} + +#nav-tree .selected { + text-shadow: none; + background-image: none; + background-color: transparent; + position: relative; +} + +#nav-tree .selected::after { + content: ""; + position: absolute; + top: 1px; + bottom: 1px; + left: 0; + width: 4px; + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; + background: var(--primary-color); +} + + +#nav-tree a { + color: var(--side-nav-foreground) !important; + font-weight: normal; +} + +#nav-tree a:focus { + outline-style: auto; +} + +#nav-tree .arrow { + opacity: var(--side-nav-arrow-opacity); +} + +.arrow { + color: inherit; + cursor: pointer; + font-size: 45%; + vertical-align: middle; + margin-right: 2px; + font-family: serif; + height: auto; + text-align: right; +} + +#nav-tree div.item:hover .arrow, #nav-tree a:focus .arrow { + opacity: var(--side-nav-arrow-hover-opacity); +} + +#nav-tree .selected a { + color: var(--primary-color) !important; + font-weight: bolder; + font-weight: 600; +} + +.ui-resizable-e { + width: 4px; + background: transparent; + box-shadow: inset -1px 0 0 0 var(--separator-color); +} + +/* + Contents + */ + +div.header { + border-bottom: 1px solid var(--separator-color); + background-color: var(--page-background-color); + background-image: none; +} + +@media screen and (min-width: 1000px) { + #doc-content > div > div.contents, + .PageDoc > div.contents { + display: flex; + flex-direction: row-reverse; + flex-wrap: nowrap; + align-items: flex-start; + } + + div.contents .textblock { + min-width: 200px; + flex-grow: 1; + } +} + +div.contents, div.header .title, div.header .summary { + max-width: var(--content-maxwidth); +} + +div.contents, div.header .title { + line-height: initial; + margin: calc(var(--spacing-medium) + .2em) auto var(--spacing-medium) auto; +} + +div.header .summary { + margin: var(--spacing-medium) auto 0 auto; +} + +div.headertitle { + padding: 0; +} + +div.header .title { + font-weight: 600; + font-size: 225%; + padding: var(--spacing-medium) var(--spacing-large); + word-break: break-word; +} + +div.header .summary { + width: auto; + display: block; + float: none; + padding: 0 var(--spacing-large); +} + +td.memSeparator { + border-color: var(--separator-color); +} + +span.mlabel { + background: var(--primary-color); + border: none; + padding: 4px 9px; + border-radius: 12px; + margin-right: var(--spacing-medium); +} + +span.mlabel:last-of-type { + margin-right: 2px; +} + +div.contents { + padding: 0 var(--spacing-large); +} + +div.contents p, div.contents li { + line-height: var(--content-line-height); +} + +div.contents div.dyncontent { + margin: var(--spacing-medium) 0; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) div.contents div.dyncontent img, + html:not(.light-mode) div.contents center img, + html:not(.light-mode) div.contents > table img, + html:not(.light-mode) div.contents div.dyncontent iframe, + html:not(.light-mode) div.contents center iframe, + html:not(.light-mode) div.contents table iframe, + html:not(.light-mode) div.contents .dotgraph iframe { + filter: brightness(89%) hue-rotate(180deg) invert(); + } +} + +html.dark-mode div.contents div.dyncontent img, +html.dark-mode div.contents center img, +html.dark-mode div.contents > table img, +html.dark-mode div.contents div.dyncontent iframe, +html.dark-mode div.contents center iframe, +html.dark-mode div.contents table iframe, +html.dark-mode div.contents .dotgraph iframe + { + filter: brightness(89%) hue-rotate(180deg) invert(); +} + +h2.groupheader { + border-bottom: 0px; + color: var(--page-foreground-color); + box-shadow: + 100px 0 var(--page-background-color), + -100px 0 var(--page-background-color), + 100px 0.75px var(--separator-color), + -100px 0.75px var(--separator-color), + 500px 0 var(--page-background-color), + -500px 0 var(--page-background-color), + 500px 0.75px var(--separator-color), + -500px 0.75px var(--separator-color), + 900px 0 var(--page-background-color), + -900px 0 var(--page-background-color), + 900px 0.75px var(--separator-color), + -900px 0.75px var(--separator-color), + 1400px 0 var(--page-background-color), + -1400px 0 var(--page-background-color), + 1400px 0.75px var(--separator-color), + -1400px 0.75px var(--separator-color), + 1900px 0 var(--page-background-color), + -1900px 0 var(--page-background-color), + 1900px 0.75px var(--separator-color), + -1900px 0.75px var(--separator-color); +} + +blockquote { + margin: 0 var(--spacing-medium) 0 var(--spacing-medium); + padding: var(--spacing-small) var(--spacing-large); + background: var(--blockquote-background); + color: var(--blockquote-foreground); + border-left: 0; + overflow: visible; + border-radius: var(--border-radius-medium); + overflow: visible; + position: relative; +} + +blockquote::before, blockquote::after { + font-weight: bold; + font-family: serif; + font-size: 360%; + opacity: .15; + position: absolute; +} + +blockquote::before { + content: "“"; + left: -10px; + top: 4px; +} + +blockquote::after { + content: "”"; + right: -8px; + bottom: -25px; +} + +blockquote p { + margin: var(--spacing-small) 0 var(--spacing-medium) 0; +} +.paramname { + font-weight: 600; + color: var(--primary-dark-color); +} + +.paramname > code { + border: 0; +} + +table.params .paramname { + font-weight: 600; + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + padding-right: var(--spacing-small); + line-height: var(--table-line-height); +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--primary-light-color); +} + +.alphachar a { + color: var(--page-foreground-color); +} + +.dotgraph { + max-width: 100%; + overflow-x: scroll; +} + +.dotgraph .caption { + position: sticky; + left: 0; +} + +/* Wrap Graphviz graphs with the `interactive_dotgraph` class if `INTERACTIVE_SVG = YES` */ +.interactive_dotgraph .dotgraph iframe { + max-width: 100%; +} + +/* + Table of Contents + */ + +div.contents .toc { + max-height: var(--toc-max-height); + min-width: var(--toc-width); + border: 0; + border-left: 1px solid var(--separator-color); + border-radius: 0; + background-color: transparent; + box-shadow: none; + position: sticky; + top: var(--toc-sticky-top); + padding: 0 var(--spacing-large); + margin: var(--spacing-small) 0 var(--spacing-large) var(--spacing-large); +} + +div.toc h3 { + color: var(--toc-foreground); + font-size: var(--navigation-font-size); + margin: var(--spacing-large) 0 var(--spacing-medium) 0; +} + +div.toc li { + padding: 0; + background: none; + line-height: var(--toc-font-size); + margin: var(--toc-font-size) 0 0 0; +} + +div.toc li::before { + display: none; +} + +div.toc ul { + margin-top: 0 +} + +div.toc li a { + font-size: var(--toc-font-size); + color: var(--page-foreground-color) !important; + text-decoration: none; +} + +div.toc li a:hover, div.toc li a.active { + color: var(--primary-color) !important; +} + +div.toc li a.aboveActive { + color: var(--page-secondary-foreground-color) !important; +} + + +@media screen and (max-width: 999px) { + div.contents .toc { + max-height: 45vh; + float: none; + width: auto; + margin: 0 0 var(--spacing-medium) 0; + position: relative; + top: 0; + position: relative; + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + background-color: var(--toc-background); + box-shadow: var(--box-shadow); + } + + div.contents .toc.interactive { + max-height: calc(var(--navigation-font-size) + 2 * var(--spacing-large)); + overflow: hidden; + } + + div.contents .toc > h3 { + -webkit-tap-highlight-color: transparent; + cursor: pointer; + position: sticky; + top: 0; + background-color: var(--toc-background); + margin: 0; + padding: var(--spacing-large) 0; + display: block; + } + + div.contents .toc.interactive > h3::before { + content: ""; + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 5px solid var(--primary-color); + display: inline-block; + margin-right: var(--spacing-small); + margin-bottom: calc(var(--navigation-font-size) / 4); + transform: rotate(-90deg); + transition: transform var(--animation-duration) ease-out; + } + + div.contents .toc.interactive.open > h3::before { + transform: rotate(0deg); + } + + div.contents .toc.interactive.open { + max-height: 45vh; + overflow: auto; + transition: max-height 0.2s ease-in-out; + } + + div.contents .toc a, div.contents .toc a.active { + color: var(--primary-color) !important; + } + + div.contents .toc a:hover { + text-decoration: underline; + } +} + +/* + Code & Fragments + */ + +code, div.fragment, pre.fragment { + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + overflow: hidden; +} + +code { + display: inline; + background: var(--code-background); + color: var(--code-foreground); + padding: 2px 6px; +} + +div.fragment, pre.fragment { + margin: var(--spacing-medium) 0; + padding: calc(var(--spacing-large) - (var(--spacing-large) / 6)) var(--spacing-large); + background: var(--fragment-background); + color: var(--fragment-foreground); + overflow-x: auto; +} + +@media screen and (max-width: 767px) { + div.fragment, pre.fragment { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-right: 0; + } + + .contents > div.fragment, + .textblock > div.fragment, + .textblock > pre.fragment, + .textblock > .tabbed > ul > li > div.fragment, + .textblock > .tabbed > ul > li > pre.fragment, + .contents > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > pre.fragment, + .textblock > .tabbed > ul > li > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .tabbed > ul > li > .doxygen-awesome-fragment-wrapper > pre.fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-large)); + border-radius: 0; + border-left: 0; + } + + .textblock li > .fragment, + .textblock li > .doxygen-awesome-fragment-wrapper > .fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-large)); + } + + .memdoc li > .fragment, + .memdoc li > .doxygen-awesome-fragment-wrapper > .fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); + } + + .textblock ul, .memdoc ul { + overflow: initial; + } + + .memdoc > div.fragment, + .memdoc > pre.fragment, + dl dd > div.fragment, + dl dd pre.fragment, + .memdoc > .doxygen-awesome-fragment-wrapper > div.fragment, + .memdoc > .doxygen-awesome-fragment-wrapper > pre.fragment, + dl dd > .doxygen-awesome-fragment-wrapper > div.fragment, + dl dd .doxygen-awesome-fragment-wrapper > pre.fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); + border-radius: 0; + border-left: 0; + } +} + +code, code a, pre.fragment, div.fragment, div.fragment .line, div.fragment span, div.fragment .line a, div.fragment .line span { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size) !important; +} + +div.line:after { + margin-right: var(--spacing-medium); +} + +div.fragment .line, pre.fragment { + white-space: pre; + word-wrap: initial; + line-height: var(--fragment-lineheight); +} + +div.fragment span.keyword { + color: var(--fragment-keyword); +} + +div.fragment span.keywordtype { + color: var(--fragment-keywordtype); +} + +div.fragment span.keywordflow { + color: var(--fragment-keywordflow); +} + +div.fragment span.stringliteral { + color: var(--fragment-token) +} + +div.fragment span.comment { + color: var(--fragment-comment); +} + +div.fragment a.code { + color: var(--fragment-link) !important; +} + +div.fragment span.preprocessor { + color: var(--fragment-preprocessor); +} + +div.fragment span.lineno { + display: inline-block; + width: 27px; + border-right: none; + background: var(--fragment-linenumber-background); + color: var(--fragment-linenumber-color); +} + +div.fragment span.lineno a { + background: none; + color: var(--fragment-link) !important; +} + +div.fragment > .line:first-child .lineno { + box-shadow: -999999px 0px 0 999999px var(--fragment-linenumber-background), -999998px 0px 0 999999px var(--fragment-linenumber-border); + background-color: var(--fragment-linenumber-background) !important; +} + +div.line { + border-radius: var(--border-radius-small); +} + +div.line.glow { + background-color: var(--primary-light-color); + box-shadow: none; +} + +/* + dl warning, attention, note, deprecated, bug, ... + */ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, dl.invariant, dl.pre, dl.post, dl.todo, dl.remark { + padding: var(--spacing-medium); + margin: var(--spacing-medium) 0; + color: var(--page-background-color); + overflow: hidden; + margin-left: 0; + border-radius: var(--border-radius-small); +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention { + background: var(--warning-color); + border-left: 8px solid var(--warning-color-dark); + color: var(--warning-color-darker); +} + +dl.warning dt, dl.attention dt { + color: var(--warning-color-dark); +} + +dl.note, dl.remark { + background: var(--note-color); + border-left: 8px solid var(--note-color-dark); + color: var(--note-color-darker); +} + +dl.note dt, dl.remark dt { + color: var(--note-color-dark); +} + +dl.todo { + background: var(--todo-color); + border-left: 8px solid var(--todo-color-dark); + color: var(--todo-color-darker); +} + +dl.todo dt a { + color: var(--todo-color-dark) !important; +} + +dl.bug dt a { + color: var(--todo-color-dark) !important; +} + +dl.bug { + background: var(--bug-color); + border-left: 8px solid var(--bug-color-dark); + color: var(--bug-color-darker); +} + +dl.bug dt a { + color: var(--bug-color-dark) !important; +} + +dl.deprecated { + background: var(--deprecated-color); + border-left: 8px solid var(--deprecated-color-dark); + color: var(--deprecated-color-darker); +} + +dl.deprecated dt a { + color: var(--deprecated-color-dark) !important; +} + +dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: var(--invariant-color); + border-left: 8px solid var(--invariant-color-dark); + color: var(--invariant-color-darker); +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: var(--invariant-color-dark); +} + +/* + memitem + */ + +div.memdoc, div.memproto, h2.memtitle { + box-shadow: none; + background-image: none; + border: none; +} + +div.memdoc { + padding: 0 var(--spacing-medium); + background: var(--page-background-color); +} + +h2.memtitle, div.memitem { + border: 1px solid var(--separator-color); + box-shadow: var(--box-shadow); +} + +h2.memtitle { + box-shadow: 0px var(--spacing-medium) 0 -1px var(--fragment-background), var(--box-shadow); +} + +div.memitem { + transition: none; +} + +div.memproto, h2.memtitle { + background: var(--fragment-background); +} + +h2.memtitle { + font-weight: 500; + font-size: var(--memtitle-font-size); + font-family: var(--font-family-monospace); + border-bottom: none; + border-top-left-radius: var(--border-radius-medium); + border-top-right-radius: var(--border-radius-medium); + word-break: break-all; + position: relative; +} + +h2.memtitle:after { + content: ""; + display: block; + background: var(--fragment-background); + height: var(--spacing-medium); + bottom: calc(0px - var(--spacing-medium)); + left: 0; + right: -14px; + position: absolute; + border-top-right-radius: var(--border-radius-medium); +} + +h2.memtitle > span.permalink { + font-size: inherit; +} + +h2.memtitle > span.permalink > a { + text-decoration: none; + padding-left: 3px; + margin-right: -4px; + user-select: none; + display: inline-block; + margin-top: -6px; +} + +h2.memtitle > span.permalink > a:hover { + color: var(--primary-dark-color) !important; +} + +a:target + h2.memtitle, a:target + h2.memtitle + div.memitem { + border-color: var(--primary-light-color); +} + +div.memitem { + border-top-right-radius: var(--border-radius-medium); + border-bottom-right-radius: var(--border-radius-medium); + border-bottom-left-radius: var(--border-radius-medium); + overflow: hidden; + display: block !important; +} + +div.memdoc { + border-radius: 0; +} + +div.memproto { + border-radius: 0 var(--border-radius-small) 0 0; + overflow: auto; + border-bottom: 1px solid var(--separator-color); + padding: var(--spacing-medium); + margin-bottom: -1px; +} + +div.memtitle { + border-top-right-radius: var(--border-radius-medium); + border-top-left-radius: var(--border-radius-medium); +} + +div.memproto table.memname { + font-family: var(--font-family-monospace); + color: var(--page-foreground-color); + font-size: var(--memname-font-size); + text-shadow: none; +} + +div.memproto div.memtemplate { + font-family: var(--font-family-monospace); + color: var(--primary-dark-color); + font-size: var(--memname-font-size); + margin-left: 2px; + text-shadow: none; +} + +table.mlabels, table.mlabels > tbody { + display: block; +} + +td.mlabels-left { + width: auto; +} + +td.mlabels-right { + margin-top: 3px; + position: sticky; + left: 0; +} + +table.mlabels > tbody > tr:first-child { + display: flex; + justify-content: space-between; + flex-wrap: wrap; +} + +.memname, .memitem span.mlabels { + margin: 0 +} + +/* + reflist + */ + +dl.reflist { + box-shadow: var(--box-shadow); + border-radius: var(--border-radius-medium); + border: 1px solid var(--separator-color); + overflow: hidden; + padding: 0; +} + + +dl.reflist dt, dl.reflist dd { + box-shadow: none; + text-shadow: none; + background-image: none; + border: none; + padding: 12px; +} + + +dl.reflist dt { + font-weight: 500; + border-radius: 0; + background: var(--code-background); + border-bottom: 1px solid var(--separator-color); + color: var(--page-foreground-color) +} + + +dl.reflist dd { + background: none; +} + +/* + Table + */ + +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname), +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody { + display: inline-block; + max-width: 100%; +} + +.contents > table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname):not(.classindex) { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + max-width: calc(100% + 2 * var(--spacing-large)); +} + +table.fieldtable, +table.markdownTable tbody, +table.doxtable tbody { + border: none; + margin: var(--spacing-medium) 0; + box-shadow: 0 0 0 1px var(--separator-color); + border-radius: var(--border-radius-small); +} + +table.markdownTable, table.doxtable, table.fieldtable { + padding: 1px; +} + +table.doxtable caption { + display: block; +} + +table.fieldtable { + border-collapse: collapse; + width: 100%; +} + +th.markdownTableHeadLeft, +th.markdownTableHeadRight, +th.markdownTableHeadCenter, +th.markdownTableHeadNone, +table.doxtable th { + background: var(--tablehead-background); + color: var(--tablehead-foreground); + font-weight: 600; + font-size: var(--page-font-size); +} + +th.markdownTableHeadLeft:first-child, +th.markdownTableHeadRight:first-child, +th.markdownTableHeadCenter:first-child, +th.markdownTableHeadNone:first-child, +table.doxtable tr th:first-child { + border-top-left-radius: var(--border-radius-small); +} + +th.markdownTableHeadLeft:last-child, +th.markdownTableHeadRight:last-child, +th.markdownTableHeadCenter:last-child, +th.markdownTableHeadNone:last-child, +table.doxtable tr th:last-child { + border-top-right-radius: var(--border-radius-small); +} + +table.markdownTable td, +table.markdownTable th, +table.fieldtable td, +table.fieldtable th, +table.doxtable td, +table.doxtable th { + border: 1px solid var(--separator-color); + padding: var(--spacing-small) var(--spacing-medium); +} + +table.markdownTable td:last-child, +table.markdownTable th:last-child, +table.fieldtable td:last-child, +table.fieldtable th:last-child, +table.doxtable td:last-child, +table.doxtable th:last-child { + border-right: none; +} + +table.markdownTable td:first-child, +table.markdownTable th:first-child, +table.fieldtable td:first-child, +table.fieldtable th:first-child, +table.doxtable td:first-child, +table.doxtable th:first-child { + border-left: none; +} + +table.markdownTable tr:first-child td, +table.markdownTable tr:first-child th, +table.fieldtable tr:first-child td, +table.fieldtable tr:first-child th, +table.doxtable tr:first-child td, +table.doxtable tr:first-child th { + border-top: none; +} + +table.markdownTable tr:last-child td, +table.markdownTable tr:last-child th, +table.fieldtable tr:last-child td, +table.fieldtable tr:last-child th, +table.doxtable tr:last-child td, +table.doxtable tr:last-child th { + border-bottom: none; +} + +table.markdownTable tr, table.doxtable tr { + border-bottom: 1px solid var(--separator-color); +} + +table.markdownTable tr:last-child, table.doxtable tr:last-child { + border-bottom: none; +} + +.full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) { + display: block; +} + +.full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody { + display: table; + width: 100%; +} + +table.fieldtable th { + font-size: var(--page-font-size); + font-weight: 600; + background-image: none; + background-color: var(--tablehead-background); + color: var(--tablehead-foreground); +} + +table.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fielddoc, .fieldtable th { + border-bottom: 1px solid var(--separator-color); + border-right: 1px solid var(--separator-color); +} + +table.fieldtable tr:last-child td:first-child { + border-bottom-left-radius: var(--border-radius-small); +} + +table.fieldtable tr:last-child td:last-child { + border-bottom-right-radius: var(--border-radius-small); +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--primary-light-color); + box-shadow: none; +} + +table.memberdecls { + display: block; + -webkit-tap-highlight-color: transparent; +} + +table.memberdecls tr[class^='memitem'] { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); +} + +table.memberdecls tr[class^='memitem'] .memTemplParams { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + color: var(--primary-dark-color); + white-space: normal; +} + +table.memberdecls .memItemLeft, +table.memberdecls .memItemRight, +table.memberdecls .memTemplItemLeft, +table.memberdecls .memTemplItemRight, +table.memberdecls .memTemplParams { + transition: none; + padding-top: var(--spacing-small); + padding-bottom: var(--spacing-small); + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + background-color: var(--fragment-background); +} + +table.memberdecls .memTemplItemLeft, +table.memberdecls .memTemplItemRight { + padding-top: 2px; +} + +table.memberdecls .memTemplParams { + border-bottom: 0; + border-left: 1px solid var(--separator-color); + border-right: 1px solid var(--separator-color); + border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; + padding-bottom: var(--spacing-small); +} + +table.memberdecls .memTemplItemLeft { + border-radius: 0 0 0 var(--border-radius-small); + border-left: 1px solid var(--separator-color); + border-top: 0; +} + +table.memberdecls .memTemplItemRight { + border-radius: 0 0 var(--border-radius-small) 0; + border-right: 1px solid var(--separator-color); + padding-left: 0; + border-top: 0; +} + +table.memberdecls .memItemLeft { + border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); + border-left: 1px solid var(--separator-color); + padding-left: var(--spacing-medium); + padding-right: 0; +} + +table.memberdecls .memItemRight { + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; + border-right: 1px solid var(--separator-color); + padding-right: var(--spacing-medium); + padding-left: 0; + +} + +table.memberdecls .mdescLeft, table.memberdecls .mdescRight { + background: none; + color: var(--page-foreground-color); + padding: var(--spacing-small) 0; +} + +table.memberdecls .memItemLeft, +table.memberdecls .memTemplItemLeft { + padding-right: var(--spacing-medium); +} + +table.memberdecls .memSeparator { + background: var(--page-background-color); + height: var(--spacing-large); + border: 0; + transition: none; +} + +table.memberdecls .groupheader { + margin-bottom: var(--spacing-large); +} + +table.memberdecls .inherit_header td { + padding: 0 0 var(--spacing-medium) 0; + text-indent: -12px; + color: var(--page-secondary-foreground-color); +} + +table.memberdecls img[src="closed.png"], +table.memberdecls img[src="open.png"], +div.dynheader img[src="open.png"], +div.dynheader img[src="closed.png"] { + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 5px solid var(--primary-color); + margin-top: 8px; + display: block; + float: left; + margin-left: -10px; + transition: transform var(--animation-duration) ease-out; +} + +table.memberdecls img { + margin-right: 10px; +} + +table.memberdecls img[src="closed.png"], +div.dynheader img[src="closed.png"] { + transform: rotate(-90deg); + +} + +.compoundTemplParams { + font-family: var(--font-family-monospace); + color: var(--primary-dark-color); + font-size: var(--code-font-size); +} + +@media screen and (max-width: 767px) { + + table.memberdecls .memItemLeft, + table.memberdecls .memItemRight, + table.memberdecls .mdescLeft, + table.memberdecls .mdescRight, + table.memberdecls .memTemplItemLeft, + table.memberdecls .memTemplItemRight, + table.memberdecls .memTemplParams { + display: block; + text-align: left; + padding-left: var(--spacing-large); + margin: 0 calc(0px - var(--spacing-large)) 0 calc(0px - var(--spacing-large)); + border-right: none; + border-left: none; + border-radius: 0; + white-space: normal; + } + + table.memberdecls .memItemLeft, + table.memberdecls .mdescLeft, + table.memberdecls .memTemplItemLeft { + border-bottom: 0; + padding-bottom: 0; + } + + table.memberdecls .memTemplItemLeft { + padding-top: 0; + } + + table.memberdecls .mdescLeft { + margin-bottom: calc(0px - var(--page-font-size)); + } + + table.memberdecls .memItemRight, + table.memberdecls .mdescRight, + table.memberdecls .memTemplItemRight { + border-top: 0; + padding-top: 0; + padding-right: var(--spacing-large); + overflow-x: auto; + } + + table.memberdecls tr[class^='memitem']:not(.inherit) { + display: block; + width: calc(100vw - 2 * var(--spacing-large)); + } + + table.memberdecls .mdescRight { + color: var(--page-foreground-color); + } + + table.memberdecls tr.inherit { + visibility: hidden; + } + + table.memberdecls tr[style="display: table-row;"] { + display: block !important; + visibility: visible; + width: calc(100vw - 2 * var(--spacing-large)); + animation: fade .5s; + } + + @keyframes fade { + 0% { + opacity: 0; + max-height: 0; + } + + 100% { + opacity: 1; + max-height: 200px; + } + } +} + + +/* + Horizontal Rule + */ + +hr { + margin-top: var(--spacing-large); + margin-bottom: var(--spacing-large); + height: 1px; + background-color: var(--separator-color); + border: 0; +} + +.contents hr { + box-shadow: 100px 0 0 var(--separator-color), + -100px 0 0 var(--separator-color), + 500px 0 0 var(--separator-color), + -500px 0 0 var(--separator-color), + 1500px 0 0 var(--separator-color), + -1500px 0 0 var(--separator-color), + 2000px 0 0 var(--separator-color), + -2000px 0 0 var(--separator-color); +} + +.contents img, .contents .center, .contents center, .contents div.image object { + max-width: 100%; + overflow: auto; +} + +@media screen and (max-width: 767px) { + .contents .dyncontent > .center, .contents > center { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + max-width: calc(100% + 2 * var(--spacing-large)); + } +} + +/* + Directories + */ +div.directory { + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + width: auto; +} + +table.directory { + font-family: var(--font-family); + font-size: var(--page-font-size); + font-weight: normal; + width: 100%; +} + +table.directory td.entry, table.directory td.desc { + padding: calc(var(--spacing-small) / 2) var(--spacing-small); + line-height: var(--table-line-height); +} + +table.directory tr.even td:last-child { + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; +} + +table.directory tr.even td:first-child { + border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); +} + +table.directory tr.even:last-child td:last-child { + border-radius: 0 var(--border-radius-small) 0 0; +} + +table.directory tr.even:last-child td:first-child { + border-radius: var(--border-radius-small) 0 0 0; +} + +table.directory td.desc { + min-width: 250px; +} + +table.directory tr.even { + background-color: var(--odd-color); +} + +table.directory tr.odd { + background-color: transparent; +} + +.icona { + width: auto; + height: auto; + margin: 0 var(--spacing-small); +} + +.icon { + background: var(--primary-color); + border-radius: var(--border-radius-small); + font-size: var(--page-font-size); + padding: calc(var(--page-font-size) / 5); + line-height: var(--page-font-size); + transform: scale(0.8); + height: auto; + width: var(--page-font-size); + user-select: none; +} + +.iconfopen, .icondoc, .iconfclosed { + background-position: center; + margin-bottom: 0; + height: var(--table-line-height); +} + +.icondoc { + filter: saturate(0.2); +} + +@media screen and (max-width: 767px) { + div.directory { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + } +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) .iconfopen, html:not(.light-mode) .iconfclosed { + filter: hue-rotate(180deg) invert(); + } +} + +html.dark-mode .iconfopen, html.dark-mode .iconfclosed { + filter: hue-rotate(180deg) invert(); +} + +/* + Class list + */ + +.classindex dl.odd { + background: var(--odd-color); + border-radius: var(--border-radius-small); +} + +.classindex dl.even { + background-color: transparent; +} + +/* + Class Index Doxygen 1.8 +*/ + +table.classindex { + margin-left: 0; + margin-right: 0; + width: 100%; +} + +table.classindex table div.ah { + background-image: none; + background-color: initial; + border-color: var(--separator-color); + color: var(--page-foreground-color); + box-shadow: var(--box-shadow); + border-radius: var(--border-radius-large); + padding: var(--spacing-small); +} + +div.qindex { + background-color: var(--odd-color); + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + padding: var(--spacing-small) 0; +} + +/* + Footer and nav-path + */ + +#nav-path { + width: 100%; +} + +#nav-path ul { + background-image: none; + background: var(--page-background-color); + border: none; + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + border-bottom: 0; + box-shadow: 0 0.75px 0 var(--separator-color); + font-size: var(--navigation-font-size); +} + +img.footer { + width: 60px; +} + +.navpath li.footer { + color: var(--page-secondary-foreground-color); +} + +address.footer { + color: var(--page-secondary-foreground-color); + margin-bottom: var(--spacing-large); +} + +#nav-path li.navelem { + background-image: none; + display: flex; + align-items: center; +} + +.navpath li.navelem a { + text-shadow: none; + display: inline-block; + color: var(--primary-color) !important; +} + +.navpath li.navelem b { + color: var(--primary-dark-color); + font-weight: 500; +} + +li.navelem { + padding: 0; + margin-left: -8px; +} + +li.navelem:first-child { + margin-left: var(--spacing-large); +} + +li.navelem:first-child:before { + display: none; +} + +#nav-path li.navelem:after { + content: ''; + border: 5px solid var(--page-background-color); + border-bottom-color: transparent; + border-right-color: transparent; + border-top-color: transparent; + transform: translateY(-1px) scaleY(4.2); + z-index: 10; + margin-left: 6px; +} + +#nav-path li.navelem:before { + content: ''; + border: 5px solid var(--separator-color); + border-bottom-color: transparent; + border-right-color: transparent; + border-top-color: transparent; + transform: translateY(-1px) scaleY(3.2); + margin-right: var(--spacing-small); +} + +.navpath li.navelem a:hover { + color: var(--primary-color); +} + +/* + Scrollbars for Webkit +*/ + +#nav-tree::-webkit-scrollbar, +div.fragment::-webkit-scrollbar, +pre.fragment::-webkit-scrollbar, +div.memproto::-webkit-scrollbar, +.contents center::-webkit-scrollbar, +.contents .center::-webkit-scrollbar, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar, +div.contents .toc::-webkit-scrollbar, +.contents .dotgraph::-webkit-scrollbar, +.contents .tabs-overview-container::-webkit-scrollbar { + background: transparent; + width: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); + height: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); +} + +#nav-tree::-webkit-scrollbar-thumb, +div.fragment::-webkit-scrollbar-thumb, +pre.fragment::-webkit-scrollbar-thumb, +div.memproto::-webkit-scrollbar-thumb, +.contents center::-webkit-scrollbar-thumb, +.contents .center::-webkit-scrollbar-thumb, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-thumb, +div.contents .toc::-webkit-scrollbar-thumb, +.contents .dotgraph::-webkit-scrollbar-thumb, +.contents .tabs-overview-container::-webkit-scrollbar-thumb { + background-color: transparent; + border: var(--webkit-scrollbar-padding) solid transparent; + border-radius: calc(var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); + background-clip: padding-box; +} + +#nav-tree:hover::-webkit-scrollbar-thumb, +div.fragment:hover::-webkit-scrollbar-thumb, +pre.fragment:hover::-webkit-scrollbar-thumb, +div.memproto:hover::-webkit-scrollbar-thumb, +.contents center:hover::-webkit-scrollbar-thumb, +.contents .center:hover::-webkit-scrollbar-thumb, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody:hover::-webkit-scrollbar-thumb, +div.contents .toc:hover::-webkit-scrollbar-thumb, +.contents .dotgraph:hover::-webkit-scrollbar-thumb, +.contents .tabs-overview-container:hover::-webkit-scrollbar-thumb { + background-color: var(--webkit-scrollbar-color); +} + +#nav-tree::-webkit-scrollbar-track, +div.fragment::-webkit-scrollbar-track, +pre.fragment::-webkit-scrollbar-track, +div.memproto::-webkit-scrollbar-track, +.contents center::-webkit-scrollbar-track, +.contents .center::-webkit-scrollbar-track, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-track, +div.contents .toc::-webkit-scrollbar-track, +.contents .dotgraph::-webkit-scrollbar-track, +.contents .tabs-overview-container::-webkit-scrollbar-track { + background: transparent; +} + +#nav-tree::-webkit-scrollbar-corner { + background-color: var(--side-nav-background); +} + +#nav-tree, +div.fragment, +pre.fragment, +div.memproto, +.contents center, +.contents .center, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, +div.contents .toc { + overflow-x: auto; + overflow-x: overlay; +} + +#nav-tree { + overflow-x: auto; + overflow-y: auto; + overflow-y: overlay; +} + +/* + Scrollbars for Firefox +*/ + +#nav-tree, +div.fragment, +pre.fragment, +div.memproto, +.contents center, +.contents .center, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, +div.contents .toc, +.contents .dotgraph, +.contents .tabs-overview-container { + scrollbar-width: thin; +} + +/* + Optional Dark mode toggle button +*/ + +doxygen-awesome-dark-mode-toggle { + display: inline-block; + margin: 0 0 0 var(--spacing-small); + padding: 0; + width: var(--searchbar-height); + height: var(--searchbar-height); + background: none; + border: none; + border-radius: var(--searchbar-height); + vertical-align: middle; + text-align: center; + line-height: var(--searchbar-height); + font-size: 22px; + display: flex; + align-items: center; + justify-content: center; + user-select: none; + cursor: pointer; +} + +doxygen-awesome-dark-mode-toggle > svg { + transition: transform var(--animation-duration) ease-in-out; +} + +doxygen-awesome-dark-mode-toggle:active > svg { + transform: scale(.5); +} + +doxygen-awesome-dark-mode-toggle:hover { + background-color: rgba(0,0,0,.03); +} + +html.dark-mode doxygen-awesome-dark-mode-toggle:hover { + background-color: rgba(0,0,0,.18); +} + +/* + Optional fragment copy button +*/ +.doxygen-awesome-fragment-wrapper { + position: relative; +} + +doxygen-awesome-fragment-copy-button { + opacity: 0; + background: var(--fragment-background); + width: 28px; + height: 28px; + position: absolute; + right: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); + top: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); + border: 1px solid var(--fragment-foreground); + cursor: pointer; + border-radius: var(--border-radius-small); + display: flex; + justify-content: center; + align-items: center; +} + +.doxygen-awesome-fragment-wrapper:hover doxygen-awesome-fragment-copy-button, doxygen-awesome-fragment-copy-button.success { + opacity: .28; +} + +doxygen-awesome-fragment-copy-button:hover, doxygen-awesome-fragment-copy-button.success { + opacity: 1 !important; +} + +doxygen-awesome-fragment-copy-button:active:not([class~=success]) svg { + transform: scale(.91); +} + +doxygen-awesome-fragment-copy-button svg { + fill: var(--fragment-foreground); + width: 18px; + height: 18px; +} + +doxygen-awesome-fragment-copy-button.success svg { + fill: rgb(14, 168, 14); +} + +doxygen-awesome-fragment-copy-button.success { + border-color: rgb(14, 168, 14); +} + +@media screen and (max-width: 767px) { + .textblock > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .textblock li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .memdoc li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .memdoc > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + dl dd > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button { + right: 0; + } +} + +/* + Optional paragraph link button +*/ + +a.anchorlink { + font-size: 90%; + margin-left: var(--spacing-small); + color: var(--page-foreground-color) !important; + text-decoration: none; + opacity: .15; + display: none; + transition: opacity var(--animation-duration) ease-in-out, color var(--animation-duration) ease-in-out; +} + +a.anchorlink svg { + fill: var(--page-foreground-color); +} + +h3 a.anchorlink svg, h4 a.anchorlink svg { + margin-bottom: -3px; + margin-top: -4px; +} + +a.anchorlink:hover { + opacity: .45; +} + +h2:hover a.anchorlink, h1:hover a.anchorlink, h3:hover a.anchorlink, h4:hover a.anchorlink { + display: inline-block; +} + +/* + Optional tab feature +*/ + +.tabbed ul { + padding-inline-start: 0px; + margin: 0; + padding: var(--spacing-small) 0; +} + +.tabbed li { + display: none; +} + +.tabbed li.selected { + display: block; +} + +.tabs-overview-container { + overflow-x: auto; + display: block; + overflow-y: visible; +} + +.tabs-overview { + border-bottom: 1px solid var(--separator-color); + display: flex; + flex-direction: row; +} + +@media screen and (max-width: 767px) { + .tabs-overview-container { + margin: 0 calc(0px - var(--spacing-large)); + } + .tabs-overview { + padding: 0 var(--spacing-large) + } +} + +.tabs-overview button.tab-button { + color: var(--page-foreground-color); + margin: 0; + border: none; + background: transparent; + padding: calc(var(--spacing-large) / 2) 0; + display: inline-block; + font-size: var(--page-font-size); + cursor: pointer; + box-shadow: 0 1px 0 0 var(--separator-color); + position: relative; + + -webkit-tap-highlight-color: transparent; +} + +.tabs-overview button.tab-button .tab-title::before { + display: block; + content: attr(title); + font-weight: 600; + height: 0; + overflow: hidden; + visibility: hidden; +} + +.tabs-overview button.tab-button .tab-title { + float: left; + white-space: nowrap; + font-weight: normal; + padding: calc(var(--spacing-large) / 2) var(--spacing-large); + border-radius: var(--border-radius-medium); + transition: background-color var(--animation-duration) ease-in-out, font-weight var(--animation-duration) ease-in-out; +} + +.tabs-overview button.tab-button:not(:last-child) .tab-title { + box-shadow: 8px 0 0 -7px var(--separator-color); +} + +.tabs-overview button.tab-button:hover .tab-title { + background: var(--separator-color); + box-shadow: none; +} + +.tabs-overview button.tab-button.active .tab-title { + font-weight: 600; +} + +.tabs-overview button.tab-button::after { + content: ''; + display: block; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 0; + width: 0%; + margin: 0 auto; + border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; + background-color: var(--primary-color); + transition: width var(--animation-duration) ease-in-out, height var(--animation-duration) ease-in-out; +} + +.tabs-overview button.tab-button.active::after { + width: 100%; + box-sizing: border-box; + height: 3px; +} + + +/* + Navigation Buttons +*/ + +.section_buttons:not(:empty) { + margin-top: calc(var(--spacing-large) * 3); +} + +.section_buttons table.markdownTable { + display: block; + width: 100%; +} + +.section_buttons table.markdownTable tbody { + display: table !important; + width: 100%; + box-shadow: none; + border-spacing: 10px; +} + +.section_buttons table.markdownTable td { + padding: 0; +} + +.section_buttons table.markdownTable th { + display: none; +} + +.section_buttons table.markdownTable tr.markdownTableHead { + border: none; +} + +.section_buttons tr th, .section_buttons tr td { + background: none; + border: none; + padding: var(--spacing-large) 0 var(--spacing-small); +} + +.section_buttons a { + display: inline-block; + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + color: var(--page-secondary-foreground-color) !important; + text-decoration: none; + transition: color var(--animation-duration) ease-in-out, background-color var(--animation-duration) ease-in-out; +} + +.section_buttons a:hover { + color: var(--page-foreground-color) !important; + background-color: var(--odd-color); +} + +.section_buttons tr td.markdownTableBodyLeft a { + padding: var(--spacing-medium) var(--spacing-large) var(--spacing-medium) calc(var(--spacing-large) / 2); +} + +.section_buttons tr td.markdownTableBodyRight a { + padding: var(--spacing-medium) calc(var(--spacing-large) / 2) var(--spacing-medium) var(--spacing-large); +} + +.section_buttons tr td.markdownTableBodyLeft a::before, +.section_buttons tr td.markdownTableBodyRight a::after { + color: var(--page-secondary-foreground-color) !important; + display: inline-block; + transition: color .08s ease-in-out, transform .09s ease-in-out; +} + +.section_buttons tr td.markdownTableBodyLeft a::before { + content: '〈'; + padding-right: var(--spacing-large); +} + + +.section_buttons tr td.markdownTableBodyRight a::after { + content: '〉'; + padding-left: var(--spacing-large); +} + + +.section_buttons tr td.markdownTableBodyLeft a:hover::before { + color: var(--page-foreground-color) !important; + transform: translateX(-3px); +} + +.section_buttons tr td.markdownTableBodyRight a:hover::after { + color: var(--page-foreground-color) !important; + transform: translateX(3px); +} + +@media screen and (max-width: 450px) { + .section_buttons a { + width: 100%; + box-sizing: border-box; + } + + .section_buttons tr td:nth-of-type(1).markdownTableBodyLeft a { + border-radius: var(--border-radius-medium) 0 0 var(--border-radius-medium); + border-right: none; + } + + .section_buttons tr td:nth-of-type(2).markdownTableBodyRight a { + border-radius: 0 var(--border-radius-medium) var(--border-radius-medium) 0; + } +} diff --git a/doxygen.css b/doxygen.css new file mode 100644 index 000000000..89dee6c43 --- /dev/null +++ b/doxygen.css @@ -0,0 +1,1973 @@ +/* The standard CSS for doxygen 1.9.5*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.png'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.png'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 10px; + width: 10px; +} +::-webkit-scrollbar-thumb { + background-color: var(--scrollbar-thumb-color); + border-radius: 8px; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/doxygen.svg b/doxygen.svg new file mode 100644 index 000000000..d42dad52d --- /dev/null +++ b/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 000000000..f579fbf3e --- /dev/null +++ b/dynsections.js @@ -0,0 +1,123 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +Nameless Engine: File List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 123456789]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  src
  editor_lib
  public
  input
 EditorInputEventIds.hpp
  misc
 EditorNodeCreationHelpers.hpp
  nodes
 EditorCameraNode.h
 EditorGameInstance.h
  engine_lib
  private
  game
 GameManager.h
 World.h
  misc
 StdHashes.hpp
 ThreadPool.h
 UniqueValueGenerator.h
  render
  directx
  general
  vulkan
  shader
  general
  glsl
  hlsl
  window
 GLFW.hpp
  public
  game
  callbacks
  camera
  nodes
 GameInstance.h
 Window.h
  input
 InputManager.h
 KeyboardKey.hpp
 MouseButton.hpp
  io
  properties
  serializers
 ConfigManager.h
 FieldSerializerManager.h
 Logger.h
 MeshImporter.h
 Serializable.h
 TextureImporter.h
  material
 Material.h
 TextureHandle.h
 TextureManager.h
  math
 GLMath.hpp
 MathHelpers.hpp
  misc
  shapes
 DesktopNotification.h
 Error.h
 FileDialog.h
 Globals.h
 MessageBox.h
 OpenLinkInBrowser.h
 PrimitiveMeshGenerator.h
 Profiler.hpp
 ProjectPaths.h
 Timer.h
  render
 Renderer.h
 RenderSettings.h
 RenderStatistics.h
  shader
 ComputeShaderInterface.h
 ShaderDescription.h
 ShaderManager.h
 VulkanAlignmentConstants.hpp
+
+
+
+ + + + diff --git a/files_dup.js b/files_dup.js new file mode 100644 index 000000000..c3b39c499 --- /dev/null +++ b/files_dup.js @@ -0,0 +1,4 @@ +var files_dup = +[ + [ "src", "dir_68267d1309a1af8e8297ef4c3efbcdba.html", "dir_68267d1309a1af8e8297ef4c3efbcdba" ] +]; \ No newline at end of file diff --git a/folderclosed.png b/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/functions.html b/functions.html new file mode 100644 index 000000000..b028292de --- /dev/null +++ b/functions.html @@ -0,0 +1,149 @@ + + + + + + + +Nameless Engine: Class Members + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- a -

+
+
+ + + + diff --git a/functions_b.html b/functions_b.html new file mode 100644 index 000000000..dc3399b97 --- /dev/null +++ b/functions_b.html @@ -0,0 +1,173 @@ + + + + + + + +Nameless Engine: Class Members + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- b -

+
+
+ + + + diff --git a/functions_c.html b/functions_c.html new file mode 100644 index 000000000..5ca13d9b8 --- /dev/null +++ b/functions_c.html @@ -0,0 +1,253 @@ + + + + + + + +Nameless Engine: Class Members + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- c -

+
+
+ + + + diff --git a/functions_d.html b/functions_d.html new file mode 100644 index 000000000..e78ca065d --- /dev/null +++ b/functions_d.html @@ -0,0 +1,163 @@ + + + + + + + +Nameless Engine: Class Members + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- d -

+
+
+ + + + diff --git a/functions_dup.js b/functions_dup.js new file mode 100644 index 000000000..de74421f5 --- /dev/null +++ b/functions_dup.js @@ -0,0 +1,26 @@ +var functions_dup = +[ + [ "a", "functions.html", null ], + [ "b", "functions_b.html", null ], + [ "c", "functions_c.html", null ], + [ "d", "functions_d.html", null ], + [ "e", "functions_e.html", null ], + [ "f", "functions_f.html", null ], + [ "g", "functions_g.html", null ], + [ "h", "functions_h.html", null ], + [ "i", "functions_i.html", null ], + [ "k", "functions_k.html", null ], + [ "l", "functions_l.html", null ], + [ "m", "functions_m.html", null ], + [ "n", "functions_n.html", null ], + [ "o", "functions_o.html", null ], + [ "p", "functions_p.html", null ], + [ "q", "functions_q.html", null ], + [ "r", "functions_r.html", null ], + [ "s", "functions_s.html", null ], + [ "t", "functions_t.html", null ], + [ "u", "functions_u.html", null ], + [ "v", "functions_v.html", null ], + [ "w", "functions_w.html", null ], + [ "~", "functions_~.html", null ] +]; \ No newline at end of file diff --git a/functions_e.html b/functions_e.html new file mode 100644 index 000000000..ecb229a32 --- /dev/null +++ b/functions_e.html @@ -0,0 +1,126 @@ + + + + + + + +Nameless Engine: Class Members + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- e -

+
+
+ + + + diff --git a/functions_enum.html b/functions_enum.html new file mode 100644 index 000000000..e6c3a3322 --- /dev/null +++ b/functions_enum.html @@ -0,0 +1,110 @@ + + + + + + + +Nameless Engine: Class Members - Enumerations + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
+
+ + + + diff --git a/functions_f.html b/functions_f.html new file mode 100644 index 000000000..f8a3d47b3 --- /dev/null +++ b/functions_f.html @@ -0,0 +1,134 @@ + + + + + + + +Nameless Engine: Class Members + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- f -

+
+
+ + + + diff --git a/functions_func.html b/functions_func.html new file mode 100644 index 000000000..5800ca06d --- /dev/null +++ b/functions_func.html @@ -0,0 +1,134 @@ + + + + + + + +Nameless Engine: Class Members - Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- a -

+
+
+ + + + diff --git a/functions_func.js b/functions_func.js new file mode 100644 index 000000000..049e1e633 --- /dev/null +++ b/functions_func.js @@ -0,0 +1,26 @@ +var functions_func = +[ + [ "a", "functions_func.html", null ], + [ "b", "functions_func_b.html", null ], + [ "c", "functions_func_c.html", null ], + [ "d", "functions_func_d.html", null ], + [ "e", "functions_func_e.html", null ], + [ "f", "functions_func_f.html", null ], + [ "g", "functions_func_g.html", null ], + [ "h", "functions_func_h.html", null ], + [ "i", "functions_func_i.html", null ], + [ "k", "functions_func_k.html", null ], + [ "l", "functions_func_l.html", null ], + [ "m", "functions_func_m.html", null ], + [ "n", "functions_func_n.html", null ], + [ "o", "functions_func_o.html", null ], + [ "p", "functions_func_p.html", null ], + [ "q", "functions_func_q.html", null ], + [ "r", "functions_func_r.html", null ], + [ "s", "functions_func_s.html", null ], + [ "t", "functions_func_t.html", null ], + [ "u", "functions_func_u.html", null ], + [ "v", "functions_func_v.html", null ], + [ "w", "functions_func_w.html", null ], + [ "~", "functions_func_~.html", null ] +]; \ No newline at end of file diff --git a/functions_func_b.html b/functions_func_b.html new file mode 100644 index 000000000..5abd923b4 --- /dev/null +++ b/functions_func_b.html @@ -0,0 +1,128 @@ + + + + + + + +Nameless Engine: Class Members - Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- b -

+
+
+ + + + diff --git a/functions_func_c.html b/functions_func_c.html new file mode 100644 index 000000000..fbfe4bbfb --- /dev/null +++ b/functions_func_c.html @@ -0,0 +1,227 @@ + + + + + + + +Nameless Engine: Class Members - Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- c -

+
+
+ + + + diff --git a/functions_func_d.html b/functions_func_d.html new file mode 100644 index 000000000..d993b3a4f --- /dev/null +++ b/functions_func_d.html @@ -0,0 +1,148 @@ + + + + + + + +Nameless Engine: Class Members - Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- d -

+
+
+ + + + diff --git a/functions_func_e.html b/functions_func_e.html new file mode 100644 index 000000000..c8c88dd63 --- /dev/null +++ b/functions_func_e.html @@ -0,0 +1,122 @@ + + + + + + + +Nameless Engine: Class Members - Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- e -

+
+
+ + + + diff --git a/functions_func_f.html b/functions_func_f.html new file mode 100644 index 000000000..9931dea64 --- /dev/null +++ b/functions_func_f.html @@ -0,0 +1,120 @@ + + + + + + + +Nameless Engine: Class Members - Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- f -

+
+
+ + + + diff --git a/functions_func_g.html b/functions_func_g.html new file mode 100644 index 000000000..fb70830a6 --- /dev/null +++ b/functions_func_g.html @@ -0,0 +1,525 @@ + + + + + + + +Nameless Engine: Class Members - Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- g -

+
+
+ + + + diff --git a/functions_func_h.html b/functions_func_h.html new file mode 100644 index 000000000..c61b5b91c --- /dev/null +++ b/functions_func_h.html @@ -0,0 +1,115 @@ + + + + + + + +Nameless Engine: Class Members - Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- h -

+
+
+ + + + diff --git a/functions_func_i.html b/functions_func_i.html new file mode 100644 index 000000000..e904f8ee5 --- /dev/null +++ b/functions_func_i.html @@ -0,0 +1,172 @@ + + + + + + + +Nameless Engine: Class Members - Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- i -

+
+
+ + + + diff --git a/functions_func_k.html b/functions_func_k.html new file mode 100644 index 000000000..0000f0983 --- /dev/null +++ b/functions_func_k.html @@ -0,0 +1,109 @@ + + + + + + + +Nameless Engine: Class Members - Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- k -

+
+
+ + + + diff --git a/functions_func_l.html b/functions_func_l.html new file mode 100644 index 000000000..81a27b5b7 --- /dev/null +++ b/functions_func_l.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: Class Members - Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- l -

+
+
+ + + + diff --git a/functions_func_m.html b/functions_func_m.html new file mode 100644 index 000000000..365622532 --- /dev/null +++ b/functions_func_m.html @@ -0,0 +1,134 @@ + + + + + + + +Nameless Engine: Class Members - Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- m -

+
+
+ + + + diff --git a/functions_func_n.html b/functions_func_n.html new file mode 100644 index 000000000..12fef31ef --- /dev/null +++ b/functions_func_n.html @@ -0,0 +1,117 @@ + + + + + + + +Nameless Engine: Class Members - Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- n -

+
+
+ + + + diff --git a/functions_func_o.html b/functions_func_o.html new file mode 100644 index 000000000..c14e0acf6 --- /dev/null +++ b/functions_func_o.html @@ -0,0 +1,182 @@ + + + + + + + +Nameless Engine: Class Members - Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- o -

+
+
+ + + + diff --git a/functions_func_p.html b/functions_func_p.html new file mode 100644 index 000000000..f7665515e --- /dev/null +++ b/functions_func_p.html @@ -0,0 +1,126 @@ + + + + + + + +Nameless Engine: Class Members - Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- p -

+
+
+ + + + diff --git a/functions_func_q.html b/functions_func_q.html new file mode 100644 index 000000000..bb880c81a --- /dev/null +++ b/functions_func_q.html @@ -0,0 +1,115 @@ + + + + + + + +Nameless Engine: Class Members - Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- q -

+
+
+ + + + diff --git a/functions_func_r.html b/functions_func_r.html new file mode 100644 index 000000000..55459fa6d --- /dev/null +++ b/functions_func_r.html @@ -0,0 +1,164 @@ + + + + + + + +Nameless Engine: Class Members - Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- r -

+
+
+ + + + diff --git a/functions_func_s.html b/functions_func_s.html new file mode 100644 index 000000000..cf2ddfe79 --- /dev/null +++ b/functions_func_s.html @@ -0,0 +1,236 @@ + + + + + + + +Nameless Engine: Class Members - Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- s -

+
+
+ + + + diff --git a/functions_func_t.html b/functions_func_t.html new file mode 100644 index 000000000..cda2b8737 --- /dev/null +++ b/functions_func_t.html @@ -0,0 +1,117 @@ + + + + + + + +Nameless Engine: Class Members - Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- t -

+
+
+ + + + diff --git a/functions_func_u.html b/functions_func_u.html new file mode 100644 index 000000000..a9c6a0c95 --- /dev/null +++ b/functions_func_u.html @@ -0,0 +1,134 @@ + + + + + + + +Nameless Engine: Class Members - Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- u -

+
+
+ + + + diff --git a/functions_func_v.html b/functions_func_v.html new file mode 100644 index 000000000..a5fd18720 --- /dev/null +++ b/functions_func_v.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Class Members - Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- v -

+
+
+ + + + diff --git a/functions_func_w.html b/functions_func_w.html new file mode 100644 index 000000000..8199938ef --- /dev/null +++ b/functions_func_w.html @@ -0,0 +1,125 @@ + + + + + + + +Nameless Engine: Class Members - Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- w -

+
+
+ + + + diff --git a/functions_func_~.html b/functions_func_~.html new file mode 100644 index 000000000..9e6423f64 --- /dev/null +++ b/functions_func_~.html @@ -0,0 +1,127 @@ + + + + + + + +Nameless Engine: Class Members - Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- ~ -

+
+
+ + + + diff --git a/functions_g.html b/functions_g.html new file mode 100644 index 000000000..80b3fde3d --- /dev/null +++ b/functions_g.html @@ -0,0 +1,529 @@ + + + + + + + +Nameless Engine: Class Members + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- g -

+
+
+ + + + diff --git a/functions_h.html b/functions_h.html new file mode 100644 index 000000000..e675b86e2 --- /dev/null +++ b/functions_h.html @@ -0,0 +1,117 @@ + + + + + + + +Nameless Engine: Class Members + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- h -

+
+
+ + + + diff --git a/functions_i.html b/functions_i.html new file mode 100644 index 000000000..19b6f1929 --- /dev/null +++ b/functions_i.html @@ -0,0 +1,292 @@ + + + + + + + +Nameless Engine: Class Members + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- i -

+
+
+ + + + diff --git a/functions_k.html b/functions_k.html new file mode 100644 index 000000000..3d9d4506f --- /dev/null +++ b/functions_k.html @@ -0,0 +1,110 @@ + + + + + + + +Nameless Engine: Class Members + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- k -

+
+
+ + + + diff --git a/functions_l.html b/functions_l.html new file mode 100644 index 000000000..336c3cb85 --- /dev/null +++ b/functions_l.html @@ -0,0 +1,126 @@ + + + + + + + +Nameless Engine: Class Members + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- l -

+
+
+ + + + diff --git a/functions_m.html b/functions_m.html new file mode 100644 index 000000000..97fd9b37f --- /dev/null +++ b/functions_m.html @@ -0,0 +1,223 @@ + + + + + + + +Nameless Engine: Class Members + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- m -

+
+
+ + + + diff --git a/functions_n.html b/functions_n.html new file mode 100644 index 000000000..f8bd2a9f2 --- /dev/null +++ b/functions_n.html @@ -0,0 +1,126 @@ + + + + + + + +Nameless Engine: Class Members + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- n -

+
+
+ + + + diff --git a/functions_o.html b/functions_o.html new file mode 100644 index 000000000..678651f56 --- /dev/null +++ b/functions_o.html @@ -0,0 +1,195 @@ + + + + + + + +Nameless Engine: Class Members + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- o -

+
+
+ + + + diff --git a/functions_p.html b/functions_p.html new file mode 100644 index 000000000..d08d617af --- /dev/null +++ b/functions_p.html @@ -0,0 +1,281 @@ + + + + + + + +Nameless Engine: Class Members + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- p -

+
+
+ + + + diff --git a/functions_q.html b/functions_q.html new file mode 100644 index 000000000..45fb4218f --- /dev/null +++ b/functions_q.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: Class Members + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- q -

+
+
+ + + + diff --git a/functions_r.html b/functions_r.html new file mode 100644 index 000000000..8e8b8c7e7 --- /dev/null +++ b/functions_r.html @@ -0,0 +1,186 @@ + + + + + + + +Nameless Engine: Class Members + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- r -

+
+
+ + + + diff --git a/functions_rela.html b/functions_rela.html new file mode 100644 index 000000000..cdd898e14 --- /dev/null +++ b/functions_rela.html @@ -0,0 +1,107 @@ + + + + + + + +Nameless Engine: Class Members - Related Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
+
+ + + + diff --git a/functions_s.html b/functions_s.html new file mode 100644 index 000000000..4b59d119a --- /dev/null +++ b/functions_s.html @@ -0,0 +1,364 @@ + + + + + + + +Nameless Engine: Class Members + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- s -

+
+
+ + + + diff --git a/functions_t.html b/functions_t.html new file mode 100644 index 000000000..a9710d7f3 --- /dev/null +++ b/functions_t.html @@ -0,0 +1,136 @@ + + + + + + + +Nameless Engine: Class Members + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- t -

+
+
+ + + + diff --git a/functions_type.html b/functions_type.html new file mode 100644 index 000000000..131df260b --- /dev/null +++ b/functions_type.html @@ -0,0 +1,109 @@ + + + + + + + +Nameless Engine: Class Members - Typedefs + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
+
+ + + + diff --git a/functions_u.html b/functions_u.html new file mode 100644 index 000000000..6bdd414b0 --- /dev/null +++ b/functions_u.html @@ -0,0 +1,141 @@ + + + + + + + +Nameless Engine: Class Members + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- u -

+
+
+ + + + diff --git a/functions_v.html b/functions_v.html new file mode 100644 index 000000000..1eb6b0f8d --- /dev/null +++ b/functions_v.html @@ -0,0 +1,167 @@ + + + + + + + +Nameless Engine: Class Members + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- v -

+
+
+ + + + diff --git a/functions_vars.html b/functions_vars.html new file mode 100644 index 000000000..e03a8ff4c --- /dev/null +++ b/functions_vars.html @@ -0,0 +1,120 @@ + + + + + + + +Nameless Engine: Class Members - Variables + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + diff --git a/functions_vars.js b/functions_vars.js new file mode 100644 index 000000000..1c16e7fe3 --- /dev/null +++ b/functions_vars.js @@ -0,0 +1,25 @@ +var functions_vars = +[ + [ "a", "functions_vars.html", null ], + [ "b", "functions_vars_b.html", null ], + [ "c", "functions_vars_c.html", null ], + [ "d", "functions_vars_d.html", null ], + [ "e", "functions_vars_e.html", null ], + [ "f", "functions_vars_f.html", null ], + [ "g", "functions_vars_g.html", null ], + [ "h", "functions_vars_h.html", null ], + [ "i", "functions_vars_i.html", null ], + [ "k", "functions_vars_k.html", null ], + [ "l", "functions_vars_l.html", null ], + [ "m", "functions_vars_m.html", null ], + [ "n", "functions_vars_n.html", null ], + [ "o", "functions_vars_o.html", null ], + [ "p", "functions_vars_p.html", null ], + [ "q", "functions_vars_q.html", null ], + [ "r", "functions_vars_r.html", null ], + [ "s", "functions_vars_s.html", null ], + [ "t", "functions_vars_t.html", null ], + [ "u", "functions_vars_u.html", null ], + [ "v", "functions_vars_v.html", null ], + [ "w", "functions_vars_w.html", null ] +]; \ No newline at end of file diff --git a/functions_vars_b.html b/functions_vars_b.html new file mode 100644 index 000000000..d167f3231 --- /dev/null +++ b/functions_vars_b.html @@ -0,0 +1,153 @@ + + + + + + + +Nameless Engine: Class Members - Variables + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- b -

+
+
+ + + + diff --git a/functions_vars_c.html b/functions_vars_c.html new file mode 100644 index 000000000..29b47f144 --- /dev/null +++ b/functions_vars_c.html @@ -0,0 +1,134 @@ + + + + + + + +Nameless Engine: Class Members - Variables + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- c -

+
+
+ + + + diff --git a/functions_vars_d.html b/functions_vars_d.html new file mode 100644 index 000000000..3dbbf46a3 --- /dev/null +++ b/functions_vars_d.html @@ -0,0 +1,123 @@ + + + + + + + +Nameless Engine: Class Members - Variables + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + diff --git a/functions_vars_e.html b/functions_vars_e.html new file mode 100644 index 000000000..ab0daab9f --- /dev/null +++ b/functions_vars_e.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Class Members - Variables + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- e -

+
+
+ + + + diff --git a/functions_vars_f.html b/functions_vars_f.html new file mode 100644 index 000000000..36ceafbc4 --- /dev/null +++ b/functions_vars_f.html @@ -0,0 +1,122 @@ + + + + + + + +Nameless Engine: Class Members - Variables + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- f -

+
+
+ + + + diff --git a/functions_vars_g.html b/functions_vars_g.html new file mode 100644 index 000000000..ad604ac98 --- /dev/null +++ b/functions_vars_g.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Class Members - Variables + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- g -

+
+
+ + + + diff --git a/functions_vars_h.html b/functions_vars_h.html new file mode 100644 index 000000000..29536c4d7 --- /dev/null +++ b/functions_vars_h.html @@ -0,0 +1,110 @@ + + + + + + + +Nameless Engine: Class Members - Variables + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- h -

+
+
+ + + + diff --git a/functions_vars_i.html b/functions_vars_i.html new file mode 100644 index 000000000..c56d2a5cb --- /dev/null +++ b/functions_vars_i.html @@ -0,0 +1,227 @@ + + + + + + + +Nameless Engine: Class Members - Variables + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- i -

+
+
+ + + + diff --git a/functions_vars_k.html b/functions_vars_k.html new file mode 100644 index 000000000..dae6dc9eb --- /dev/null +++ b/functions_vars_k.html @@ -0,0 +1,109 @@ + + + + + + + +Nameless Engine: Class Members - Variables + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- k -

+
+
+ + + + diff --git a/functions_vars_l.html b/functions_vars_l.html new file mode 100644 index 000000000..130f4355b --- /dev/null +++ b/functions_vars_l.html @@ -0,0 +1,118 @@ + + + + + + + +Nameless Engine: Class Members - Variables + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- l -

+
+
+ + + + diff --git a/functions_vars_m.html b/functions_vars_m.html new file mode 100644 index 000000000..2e6e933ee --- /dev/null +++ b/functions_vars_m.html @@ -0,0 +1,196 @@ + + + + + + + +Nameless Engine: Class Members - Variables + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- m -

+
+
+ + + + diff --git a/functions_vars_n.html b/functions_vars_n.html new file mode 100644 index 000000000..70194a6c9 --- /dev/null +++ b/functions_vars_n.html @@ -0,0 +1,117 @@ + + + + + + + +Nameless Engine: Class Members - Variables + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + diff --git a/functions_vars_o.html b/functions_vars_o.html new file mode 100644 index 000000000..c8512979a --- /dev/null +++ b/functions_vars_o.html @@ -0,0 +1,121 @@ + + + + + + + +Nameless Engine: Class Members - Variables + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- o -

+
+
+ + + + diff --git a/functions_vars_p.html b/functions_vars_p.html new file mode 100644 index 000000000..2a1288790 --- /dev/null +++ b/functions_vars_p.html @@ -0,0 +1,263 @@ + + + + + + + +Nameless Engine: Class Members - Variables + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- p -

+
+
+ + + + diff --git a/functions_vars_q.html b/functions_vars_q.html new file mode 100644 index 000000000..93e05ea4c --- /dev/null +++ b/functions_vars_q.html @@ -0,0 +1,109 @@ + + + + + + + +Nameless Engine: Class Members - Variables + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- q -

+
+
+ + + + diff --git a/functions_vars_r.html b/functions_vars_r.html new file mode 100644 index 000000000..d9f178cc8 --- /dev/null +++ b/functions_vars_r.html @@ -0,0 +1,130 @@ + + + + + + + +Nameless Engine: Class Members - Variables + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + diff --git a/functions_vars_s.html b/functions_vars_s.html new file mode 100644 index 000000000..8eec94b9c --- /dev/null +++ b/functions_vars_s.html @@ -0,0 +1,236 @@ + + + + + + + +Nameless Engine: Class Members - Variables + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- s -

+
+
+ + + + diff --git a/functions_vars_t.html b/functions_vars_t.html new file mode 100644 index 000000000..cc80d8257 --- /dev/null +++ b/functions_vars_t.html @@ -0,0 +1,126 @@ + + + + + + + +Nameless Engine: Class Members - Variables + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- t -

+
+
+ + + + diff --git a/functions_vars_u.html b/functions_vars_u.html new file mode 100644 index 000000000..ad84ff17a --- /dev/null +++ b/functions_vars_u.html @@ -0,0 +1,115 @@ + + + + + + + +Nameless Engine: Class Members - Variables + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- u -

+
+
+ + + + diff --git a/functions_vars_v.html b/functions_vars_v.html new file mode 100644 index 000000000..7d69e940e --- /dev/null +++ b/functions_vars_v.html @@ -0,0 +1,161 @@ + + + + + + + +Nameless Engine: Class Members - Variables + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- v -

+
+
+ + + + diff --git a/functions_vars_w.html b/functions_vars_w.html new file mode 100644 index 000000000..0dbc62644 --- /dev/null +++ b/functions_vars_w.html @@ -0,0 +1,117 @@ + + + + + + + +Nameless Engine: Class Members - Variables + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/functions_w.html b/functions_w.html new file mode 100644 index 000000000..00ad1658a --- /dev/null +++ b/functions_w.html @@ -0,0 +1,134 @@ + + + + + + + +Nameless Engine: Class Members + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- w -

+
+
+ + + + diff --git a/functions_~.html b/functions_~.html new file mode 100644 index 000000000..00b10b914 --- /dev/null +++ b/functions_~.html @@ -0,0 +1,127 @@ + + + + + + + +Nameless Engine: Class Members + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- ~ -

+
+
+ + + + diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 000000000..47452fbd6 --- /dev/null +++ b/hierarchy.html @@ -0,0 +1,376 @@ + + + + + + + +Nameless Engine: Class Hierarchy + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 123456]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Cne::AABB
 Cne::ActionState
 Cne::AxisState
 Cne::CalledEveryFrameNodes
 Cne::CameraManager
 Cne::CameraProperties
 Cne::DescriptorSetLayoutGenerator::Collected
 Cne::RootSignatureGenerator::CollectedInfo
 Cne::CompressonatorSingleton
 Cne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeInfo
 Cne::PipelineManager::ComputePipelines
 Cne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader
 Cne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader
 Cne::LightingShaderResourceManager::ComputeShaderData
 Cne::ComputeShaderInterface
 Cne::Cone
 Cne::ConfigManager
 Cne::ContinuousDirectXDescriptorRange
 Cne::RenderStatistics::Counters
 Cne::FrameResourceManager::CurrentFrameResource
 Cne::CameraProperties::Data
 Cne::KtxLoadingCallbackManager::Data
 Cne::DelayedPipelineResourcesCreation
 Cne::DescriptorConstants
 Cne::DescriptorSetLayoutGenerator::Collected::DescriptorSetLayoutBindingInfo
 Cne::DescriptorSetLayoutGenerator
 Cne::DirectXResource::DescriptorsSameType
 Cne::DeserializedObjectInformation< SmartPointer, InnerType >
 Cne::DesktopNotification
 Cne::DirectionalLightNode::DirecionalLightShaderData
 Cne::DirectXDescriptor
 Cne::DirectXDescriptorHeap
 Cne::DynamicCpuWriteShaderResourceArray
 Cne::DynamicCpuWriteShaderResourceArrayManager
 Cne::DynamicCpuWriteShaderResourceArraySlot
 Cne::EditorGameInstance::EditorGcPointers
 Cne::EditorInputEventIds
 Cne::EditorNodeCreationHelpers
 Cne::EngineShaderConstantMacros
 Cne::EngineShaderNames
 Cne::EngineShaders
 Cne::Error
 Cne::FieldSerializerManager
 Cne::FileDialog
 Cne::EngineShaderConstantMacros::ForwardPlus
 Cne::EngineShaderNames::ForwardPlus
 Cne::EngineShaders::ForwardPlus
 Cne::RenderStatistics::FpsLimitInfo
 Cne::FrameConstants
 Cne::FrameResource
 Cne::FrameResourceManager
 Cne::RenderStatistics::FramesPerSecondInfo
 Cne::RenderStatistics::FrameTemporaryStatistics
 Cne::Frustum
 Cne::LightingShaderResourceManager::ComputeShaderData::Frustum
 Cne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader
 Cne::GameInstance
 Cne::GameManager
 Cne::LightingShaderResourceManager::GeneralLightingShaderData
 Cne::DescriptorSetLayoutGenerator::Generated
 Cne::RootSignatureGenerator::Generated
 Cne::GLFW
 Cne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::GlobalCountersIntoLightIndexList
 Cne::Globals
 Cne::HlslShaderCacheManager::GlobalShaderCacheParameterNames
 Cne::ShaderCacheManager::GlobalShaderCacheParameterNames
 Cne::GlobalShaderResourceBinding
 Cne::GlobalShaderResourceBindingManager
 Cne::LightingShaderResourceManager::GpuData
 Cne::GpuResource
 Cne::GpuResourceManager
 Cne::Material::GpuResources
 Cne::MeshNode::GpuResources
 Cne::GraphicsPipelineRegistry
 Cne::IBinaryFieldSerializer
 Cne::IFieldSerializer
 Cne::InputManager
 Cne::ContinuousDirectXDescriptorRange::InternalData
 Cne::DirectXDescriptorHeap::InternalData
 Cne::ShaderArrayIndexManager::InternalData
 Cne::VulkanShadowMapArrayIndexManager::InternalData
 Cne::DirectXPso::InternalResources
 Cne::DynamicCpuWriteShaderResourceArray::InternalResources
 Cne::Material::InternalResources
 Cne::ShaderPack::InternalResources
 Cne::ShadowMapHandle::InternalResources
 Cne::ShadowMapManager::InternalResources
 Cne::VulkanPipeline::InternalResources
 Cne::KeyboardModifiers
 Cne::KtxLoadingCallbackManager
 Cne::LightingShaderResourceManager::LightArrays
 Cne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader
 Cne::LightingShaderResourceManager
 Cne::Renderer::LightsInFrustum
 Cne::SpatialNode::LocalSpaceInformation
 Cne::Logger
 Cne::Renderer::MeshesInFrustum::MaterialInFrustumInfo
 Cne::Material::MaterialShaderConstants
 Cne::MathHelpers
 Cne::MeshNode::GpuResources::Mesh
 Cne::Renderer::MeshesInFrustum
 Cne::MeshImporter
 Cne::MeshIndexBufferInfo
 Cne::Renderer::MeshesInFrustum::MeshInFrustumInfo
 Cne::EngineShaderNames::MeshNode
 Cne::EngineShaders::MeshNode
 Cne::MeshNodesThatUseThisMaterial
 Cne::MeshNode::MeshShaderConstants
 Cne::MeshVertex
 Cne::MessageBox
 Cne::NodeFunction< FunctionReturnType, FunctionArgs >
 Cne::NodeFunction< FunctionReturnType(FunctionArgs...)>
 Cne::NodeNotificationBroadcaster< FunctionReturnType, FunctionArgs >
 Cne::NodeNotificationBroadcasterBase
 Crfk::Object
 Cne::OpenLinkInBrowser
 Cne::CameraProperties::Data::OrbitalModeData
 Cne::PipelineConfiguration
 Cne::Renderer::MeshesInFrustum::PipelineInFrustumInfo
 Cne::PipelineManager
 Cne::PipelineShaderConstantsManager
 Cne::PipelineSharedPtr
 Cne::LightingShaderResourceManager::ComputeShaderData::Plane
 Cne::Plane
 Cne::EngineShaderNames::PointLight
 Cne::EngineShaders::PointLight
 Cne::PointLightNode::PointLightShaderData
 Cne::PrimitiveMeshGenerator
 Cne::CameraProperties::Data::ProjectionData
 Cne::ProjectPaths
 Crfk::Property
 Cne::GlslShaderTextureResourceBinding::PushConstantIndices
 Cne::QueuedForExecutionComputeShaders
 Cne::VulkanRenderer::QueueFamilyIndices
 Cne::Renderer
 Cne::RenderStatistics
 Cne::PipelineManager::ComputePipelines::Resources
 Cne::ShaderCpuWriteResourceBindingManager::Resources
 Cne::ShaderLightArray::Resources
 Cne::RootSignatureGenerator::RootParameter
 Cne::RootSignatureGenerator
 Cne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ScreenToViewData
 Cne::SerializableObjectInformation
 Cne::Shader
 Cne::ShaderArrayIndex
 Cne::ShaderArrayIndexManager
 Cne::ShaderCacheInvalidationReasonDescription
 Cne::ShaderCacheManager
 Cne::ShaderConfiguration
 Cne::Pipeline::ShaderConstantsData
 Cne::ShaderCpuWriteResourceBindingManager
 Cne::ShaderCpuWriteResourceBindingUniquePtr
 Cne::DirectionalLightNode::ShaderData
 Cne::PointLightNode::ShaderData
 Cne::ShaderManager::ShaderData
 Cne::SpotlightNode::ShaderData
 Cne::ShaderDescription
 Cne::ShaderFilesystemPaths
 Cne::ShaderLightArray
 Cne::ShaderLightArraySlot
 Cne::ShaderLightsInFrustumSingleType
 Cne::ShaderMacroConfigurations
 Cne::ShaderMacroSetHash
 Cne::ShaderManager
 Cne::ShaderPack
 Cne::ShaderPipelines
 Cne::ShaderResourceBindingBase
 Cne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ShaderResources
 Cne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources
 Cne::Material::GpuResources::ShaderResources
 Cne::MeshNode::GpuResources::ShaderResources
 Cne::ShaderTextureResourceBindingManager
 Cne::ShaderTextureResourceBindingUniquePtr
 Cne::ShaderUser
 Cne::ShadowMapArrayIndexManager
 Cne::ShadowMapHandle
 Cne::ShadowMapManager::ShadowMapHandleResources
 Cne::ShadowMapManager
 Cne::DirectionalLightNode::ShaderData::ShadowPassDataGroup
 Cne::PointLightNode::ShaderData::ShadowPassDataGroup
 Cne::SpotlightNode::ShaderData::ShadowPassDataGroup
 Cne::ShadowPassLightShaderInfo
 Cne::SourceLocationInfo
 Cne::PipelineShaderConstantsManager::SpecialConstantsNames
 Cne::Sphere
 Cne::SpotlightNode::SpotlightShaderData
 Cne::StdStringHash
 Cne::VulkanRenderer::SwapChainImageSemaphores
 Cne::VulkanRenderer::SwapChainSupportDetails
 Cne::RenderStatistics::TaskTimeInfo
 Cne::TextureHandle
 Cne::TextureImporter
 Cne::TextureManager
 Cne::TextureManager::TextureResource
 Cne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ThreadGroupCount
 Cne::ThreadPool
 Cne::Timer
 Cne::UniqueValueGenerator
 Cne::UploadBuffer
 Cne::VertexFormatDescription
 Cne::CameraProperties::Data::ViewData
 Cne::Window
 Cne::WindowBuilder
 Cne::WindowBuilderParameters
 Cne::WindowCursor
 Cne::World
 Cne::Globals::WorldDirection
 Cne::SpatialNode::WorldMatrixInformation
+
+
+
+ + + + diff --git a/hierarchy.js b/hierarchy.js new file mode 100644 index 000000000..97cf06748 --- /dev/null +++ b/hierarchy.js @@ -0,0 +1,296 @@ +var hierarchy = +[ + [ "ne::AABB", "structne_1_1AABB.html", null ], + [ "ne::ActionState", "classne_1_1ActionState.html", null ], + [ "ne::AxisState", "classne_1_1AxisState.html", null ], + [ "ne::CalledEveryFrameNodes", "structne_1_1CalledEveryFrameNodes.html", null ], + [ "ne::CameraManager", "classne_1_1CameraManager.html", null ], + [ "ne::CameraProperties", "classne_1_1CameraProperties.html", null ], + [ "ne::DescriptorSetLayoutGenerator::Collected", "structne_1_1DescriptorSetLayoutGenerator_1_1Collected.html", null ], + [ "ne::RootSignatureGenerator::CollectedInfo", "structne_1_1RootSignatureGenerator_1_1CollectedInfo.html", null ], + [ "ne::CompressonatorSingleton", "classne_1_1CompressonatorSingleton.html", null ], + [ "ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeInfo", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo.html", null ], + [ "ne::PipelineManager::ComputePipelines", "structne_1_1PipelineManager_1_1ComputePipelines.html", null ], + [ "ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html", null ], + [ "ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html", null ], + [ "ne::LightingShaderResourceManager::ComputeShaderData", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData.html", null ], + [ "ne::ComputeShaderInterface", "classne_1_1ComputeShaderInterface.html", [ + [ "ne::GlslComputeShaderInterface", "classne_1_1GlslComputeShaderInterface.html", null ], + [ "ne::HlslComputeShaderInterface", "classne_1_1HlslComputeShaderInterface.html", null ] + ] ], + [ "ne::Cone", "structne_1_1Cone.html", null ], + [ "ne::ConfigManager", "classne_1_1ConfigManager.html", null ], + [ "ne::ContinuousDirectXDescriptorRange", "classne_1_1ContinuousDirectXDescriptorRange.html", null ], + [ "ne::RenderStatistics::Counters", "structne_1_1RenderStatistics_1_1Counters.html", null ], + [ "ne::FrameResourceManager::CurrentFrameResource", "structne_1_1FrameResourceManager_1_1CurrentFrameResource.html", null ], + [ "ne::CameraProperties::Data", "structne_1_1CameraProperties_1_1Data.html", null ], + [ "ne::KtxLoadingCallbackManager::Data", "structne_1_1KtxLoadingCallbackManager_1_1Data.html", null ], + [ "ne::DelayedPipelineResourcesCreation", "classne_1_1DelayedPipelineResourcesCreation.html", null ], + [ "ne::DescriptorConstants", "structne_1_1DescriptorConstants.html", null ], + [ "ne::DescriptorSetLayoutGenerator::Collected::DescriptorSetLayoutBindingInfo", "structne_1_1DescriptorSetLayoutGenerator_1_1Collected_1_1DescriptorSetLayoutBindingInfo.html", null ], + [ "ne::DescriptorSetLayoutGenerator", "classne_1_1DescriptorSetLayoutGenerator.html", null ], + [ "ne::DirectXResource::DescriptorsSameType", "structne_1_1DirectXResource_1_1DescriptorsSameType.html", null ], + [ "ne::DeserializedObjectInformation< SmartPointer, InnerType >", "structne_1_1DeserializedObjectInformation.html", null ], + [ "ne::DesktopNotification", "classne_1_1DesktopNotification.html", null ], + [ "ne::DirectionalLightNode::DirecionalLightShaderData", "structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData.html", null ], + [ "ne::DirectXDescriptor", "classne_1_1DirectXDescriptor.html", null ], + [ "ne::DirectXDescriptorHeap", "classne_1_1DirectXDescriptorHeap.html", null ], + [ "ne::DynamicCpuWriteShaderResourceArray", "classne_1_1DynamicCpuWriteShaderResourceArray.html", null ], + [ "ne::DynamicCpuWriteShaderResourceArrayManager", "classne_1_1DynamicCpuWriteShaderResourceArrayManager.html", null ], + [ "ne::DynamicCpuWriteShaderResourceArraySlot", "classne_1_1DynamicCpuWriteShaderResourceArraySlot.html", null ], + [ "ne::EditorGameInstance::EditorGcPointers", "structne_1_1EditorGameInstance_1_1EditorGcPointers.html", null ], + [ "ne::EditorInputEventIds", "structne_1_1EditorInputEventIds.html", null ], + [ "ne::EditorNodeCreationHelpers", "classne_1_1EditorNodeCreationHelpers.html", null ], + [ "ne::EngineShaderConstantMacros", "classne_1_1EngineShaderConstantMacros.html", null ], + [ "ne::EngineShaderNames", "classne_1_1EngineShaderNames.html", null ], + [ "ne::EngineShaders", "classne_1_1EngineShaders.html", null ], + [ "ne::Error", "classne_1_1Error.html", null ], + [ "ne::FieldSerializerManager", "classne_1_1FieldSerializerManager.html", null ], + [ "ne::FileDialog", "classne_1_1FileDialog.html", null ], + [ "ne::EngineShaderConstantMacros::ForwardPlus", "structne_1_1EngineShaderConstantMacros_1_1ForwardPlus.html", null ], + [ "ne::EngineShaderNames::ForwardPlus", "structne_1_1EngineShaderNames_1_1ForwardPlus.html", null ], + [ "ne::EngineShaders::ForwardPlus", "structne_1_1EngineShaders_1_1ForwardPlus.html", null ], + [ "ne::RenderStatistics::FpsLimitInfo", "structne_1_1RenderStatistics_1_1FpsLimitInfo.html", null ], + [ "ne::FrameConstants", "structne_1_1FrameConstants.html", null ], + [ "ne::FrameResource", "structne_1_1FrameResource.html", [ + [ "ne::DirectXFrameResource", "structne_1_1DirectXFrameResource.html", null ], + [ "ne::VulkanFrameResource", "structne_1_1VulkanFrameResource.html", null ] + ] ], + [ "ne::FrameResourceManager", "classne_1_1FrameResourceManager.html", null ], + [ "ne::RenderStatistics::FramesPerSecondInfo", "structne_1_1RenderStatistics_1_1FramesPerSecondInfo.html", null ], + [ "ne::RenderStatistics::FrameTemporaryStatistics", "structne_1_1RenderStatistics_1_1FrameTemporaryStatistics.html", null ], + [ "ne::Frustum", "structne_1_1Frustum.html", null ], + [ "ne::LightingShaderResourceManager::ComputeShaderData::Frustum", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Frustum.html", null ], + [ "ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader.html", null ], + [ "ne::GameInstance", "classne_1_1GameInstance.html", [ + [ "ne::EditorGameInstance", "classne_1_1EditorGameInstance.html", null ] + ] ], + [ "ne::GameManager", "classne_1_1GameManager.html", null ], + [ "ne::LightingShaderResourceManager::GeneralLightingShaderData", "structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData.html", null ], + [ "ne::DescriptorSetLayoutGenerator::Generated", "structne_1_1DescriptorSetLayoutGenerator_1_1Generated.html", null ], + [ "ne::RootSignatureGenerator::Generated", "structne_1_1RootSignatureGenerator_1_1Generated.html", null ], + [ "ne::GLFW", "classne_1_1GLFW.html", null ], + [ "ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::GlobalCountersIntoLightIndexList", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1GlobalCountersIntoLightIndexList.html", null ], + [ "ne::Globals", "classne_1_1Globals.html", null ], + [ "ne::HlslShaderCacheManager::GlobalShaderCacheParameterNames", "structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames.html", null ], + [ "ne::ShaderCacheManager::GlobalShaderCacheParameterNames", "structne_1_1ShaderCacheManager_1_1GlobalShaderCacheParameterNames.html", null ], + [ "ne::GlobalShaderResourceBinding", "classne_1_1GlobalShaderResourceBinding.html", [ + [ "ne::GlslGlobalShaderResourceBinding", "classne_1_1GlslGlobalShaderResourceBinding.html", null ], + [ "ne::HlslGlobalShaderResourceBinding", "classne_1_1HlslGlobalShaderResourceBinding.html", null ] + ] ], + [ "ne::GlobalShaderResourceBindingManager", "classne_1_1GlobalShaderResourceBindingManager.html", null ], + [ "ne::LightingShaderResourceManager::GpuData", "structne_1_1LightingShaderResourceManager_1_1GpuData.html", null ], + [ "ne::GpuResource", "classne_1_1GpuResource.html", [ + [ "ne::DirectXResource", "classne_1_1DirectXResource.html", null ], + [ "ne::VulkanResource", "classne_1_1VulkanResource.html", null ] + ] ], + [ "ne::GpuResourceManager", "classne_1_1GpuResourceManager.html", [ + [ "ne::DirectXResourceManager", "classne_1_1DirectXResourceManager.html", null ], + [ "ne::VulkanResourceManager", "classne_1_1VulkanResourceManager.html", null ] + ] ], + [ "ne::Material::GpuResources", "structne_1_1Material_1_1GpuResources.html", null ], + [ "ne::MeshNode::GpuResources", "structne_1_1MeshNode_1_1GpuResources.html", null ], + [ "ne::GraphicsPipelineRegistry", "structne_1_1GraphicsPipelineRegistry.html", null ], + [ "ne::IBinaryFieldSerializer", "classne_1_1IBinaryFieldSerializer.html", [ + [ "ne::MeshDataBinaryFieldSerializer", "classne_1_1MeshDataBinaryFieldSerializer.html", null ] + ] ], + [ "ne::IFieldSerializer", "classne_1_1IFieldSerializer.html", [ + [ "ne::GlmVecFieldSerializer", "classne_1_1GlmVecFieldSerializer.html", null ], + [ "ne::PrimitiveFieldSerializer", "classne_1_1PrimitiveFieldSerializer.html", null ], + [ "ne::SerializableObjectFieldSerializer", "classne_1_1SerializableObjectFieldSerializer.html", null ], + [ "ne::StringFieldSerializer", "classne_1_1StringFieldSerializer.html", null ], + [ "ne::UnorderedMapFieldSerializer", "classne_1_1UnorderedMapFieldSerializer.html", null ], + [ "ne::VectorFieldSerializer", "classne_1_1VectorFieldSerializer.html", null ] + ] ], + [ "ne::InputManager", "classne_1_1InputManager.html", null ], + [ "ne::ContinuousDirectXDescriptorRange::InternalData", "structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData.html", null ], + [ "ne::DirectXDescriptorHeap::InternalData", "structne_1_1DirectXDescriptorHeap_1_1InternalData.html", null ], + [ "ne::ShaderArrayIndexManager::InternalData", "structne_1_1ShaderArrayIndexManager_1_1InternalData.html", null ], + [ "ne::VulkanShadowMapArrayIndexManager::InternalData", "structne_1_1VulkanShadowMapArrayIndexManager_1_1InternalData.html", null ], + [ "ne::DirectXPso::InternalResources", "structne_1_1DirectXPso_1_1InternalResources.html", null ], + [ "ne::DynamicCpuWriteShaderResourceArray::InternalResources", "structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources.html", null ], + [ "ne::Material::InternalResources", "structne_1_1Material_1_1InternalResources.html", null ], + [ "ne::ShaderPack::InternalResources", "structne_1_1ShaderPack_1_1InternalResources.html", null ], + [ "ne::ShadowMapHandle::InternalResources", "structne_1_1ShadowMapHandle_1_1InternalResources.html", null ], + [ "ne::ShadowMapManager::InternalResources", "structne_1_1ShadowMapManager_1_1InternalResources.html", null ], + [ "ne::VulkanPipeline::InternalResources", "structne_1_1VulkanPipeline_1_1InternalResources.html", null ], + [ "ne::KeyboardModifiers", "classne_1_1KeyboardModifiers.html", null ], + [ "ne::KtxLoadingCallbackManager", "classne_1_1KtxLoadingCallbackManager.html", null ], + [ "ne::LightingShaderResourceManager::LightArrays", "structne_1_1LightingShaderResourceManager_1_1LightArrays.html", null ], + [ "ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader.html", null ], + [ "ne::LightingShaderResourceManager", "classne_1_1LightingShaderResourceManager.html", null ], + [ "ne::Renderer::LightsInFrustum", "structne_1_1Renderer_1_1LightsInFrustum.html", null ], + [ "ne::SpatialNode::LocalSpaceInformation", "structne_1_1SpatialNode_1_1LocalSpaceInformation.html", null ], + [ "ne::Logger", "classne_1_1Logger.html", null ], + [ "ne::Renderer::MeshesInFrustum::MaterialInFrustumInfo", "structne_1_1Renderer_1_1MeshesInFrustum_1_1MaterialInFrustumInfo.html", null ], + [ "ne::Material::MaterialShaderConstants", "structne_1_1Material_1_1MaterialShaderConstants.html", null ], + [ "ne::MathHelpers", "classne_1_1MathHelpers.html", null ], + [ "ne::MeshNode::GpuResources::Mesh", "structne_1_1MeshNode_1_1GpuResources_1_1Mesh.html", null ], + [ "ne::Renderer::MeshesInFrustum", "structne_1_1Renderer_1_1MeshesInFrustum.html", null ], + [ "ne::MeshImporter", "classne_1_1MeshImporter.html", null ], + [ "ne::MeshIndexBufferInfo", "structne_1_1MeshIndexBufferInfo.html", null ], + [ "ne::Renderer::MeshesInFrustum::MeshInFrustumInfo", "structne_1_1Renderer_1_1MeshesInFrustum_1_1MeshInFrustumInfo.html", null ], + [ "ne::EngineShaderNames::MeshNode", "structne_1_1EngineShaderNames_1_1MeshNode.html", null ], + [ "ne::EngineShaders::MeshNode", "structne_1_1EngineShaders_1_1MeshNode.html", null ], + [ "ne::MeshNodesThatUseThisMaterial", "structne_1_1MeshNodesThatUseThisMaterial.html", null ], + [ "ne::MeshNode::MeshShaderConstants", "structne_1_1MeshNode_1_1MeshShaderConstants.html", null ], + [ "ne::MeshVertex", "structne_1_1MeshVertex.html", null ], + [ "ne::MessageBox", "classne_1_1MessageBox.html", null ], + [ "ne::NodeFunction< FunctionReturnType, FunctionArgs >", "classne_1_1NodeFunction.html", null ], + [ "ne::NodeFunction< FunctionReturnType(FunctionArgs...)>", "classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html", null ], + [ "ne::NodeNotificationBroadcaster< FunctionReturnType, FunctionArgs >", "classne_1_1NodeNotificationBroadcaster.html", null ], + [ "ne::NodeNotificationBroadcasterBase", "classne_1_1NodeNotificationBroadcasterBase.html", [ + [ "ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>", "classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html", null ] + ] ], + [ "rfk::Object", null, [ + [ "ne::Serializable", "classne_1_1Serializable.html", [ + [ "ne::Material", "classne_1_1Material.html", null ], + [ "ne::MeshData", "classne_1_1MeshData.html", null ], + [ "ne::Node", "classne_1_1Node.html", [ + [ "ne::EnvironmentNode", "classne_1_1EnvironmentNode.html", null ], + [ "ne::SpatialNode", "classne_1_1SpatialNode.html", [ + [ "ne::CameraNode", "classne_1_1CameraNode.html", [ + [ "ne::EditorCameraNode", "classne_1_1EditorCameraNode.html", null ] + ] ], + [ "ne::DirectionalLightNode", "classne_1_1DirectionalLightNode.html", null ], + [ "ne::MeshNode", "classne_1_1MeshNode.html", null ], + [ "ne::PointLightNode", "classne_1_1PointLightNode.html", null ], + [ "ne::SpotlightNode", "classne_1_1SpotlightNode.html", null ] + ] ] + ] ], + [ "ne::RenderSettings", "classne_1_1RenderSettings.html", null ] + ] ] + ] ], + [ "ne::OpenLinkInBrowser", "classne_1_1OpenLinkInBrowser.html", null ], + [ "ne::CameraProperties::Data::OrbitalModeData", "structne_1_1CameraProperties_1_1Data_1_1OrbitalModeData.html", null ], + [ "ne::PipelineConfiguration", "classne_1_1PipelineConfiguration.html", [ + [ "ne::ColorPipelineConfiguration", "classne_1_1ColorPipelineConfiguration.html", null ], + [ "ne::ComputePipelineConfiguration", "classne_1_1ComputePipelineConfiguration.html", null ], + [ "ne::DepthPipelineConfiguration", "classne_1_1DepthPipelineConfiguration.html", null ] + ] ], + [ "ne::Renderer::MeshesInFrustum::PipelineInFrustumInfo", "structne_1_1Renderer_1_1MeshesInFrustum_1_1PipelineInFrustumInfo.html", null ], + [ "ne::PipelineManager", "classne_1_1PipelineManager.html", null ], + [ "ne::PipelineShaderConstantsManager", "classne_1_1PipelineShaderConstantsManager.html", null ], + [ "ne::PipelineSharedPtr", "classne_1_1PipelineSharedPtr.html", null ], + [ "ne::LightingShaderResourceManager::ComputeShaderData::Plane", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Plane.html", null ], + [ "ne::Plane", "structne_1_1Plane.html", null ], + [ "ne::EngineShaderNames::PointLight", "structne_1_1EngineShaderNames_1_1PointLight.html", null ], + [ "ne::EngineShaders::PointLight", "structne_1_1EngineShaders_1_1PointLight.html", null ], + [ "ne::PointLightNode::PointLightShaderData", "structne_1_1PointLightNode_1_1PointLightShaderData.html", null ], + [ "ne::PrimitiveMeshGenerator", "classne_1_1PrimitiveMeshGenerator.html", null ], + [ "ne::CameraProperties::Data::ProjectionData", "structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html", null ], + [ "ne::ProjectPaths", "classne_1_1ProjectPaths.html", null ], + [ "rfk::Property", null, [ + [ "ne::Guid", "classne_1_1Guid.html", null ], + [ "ne::Serialize", "classne_1_1Serialize.html", null ] + ] ], + [ "ne::GlslShaderTextureResourceBinding::PushConstantIndices", "structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.html", null ], + [ "ne::QueuedForExecutionComputeShaders", "structne_1_1QueuedForExecutionComputeShaders.html", null ], + [ "ne::VulkanRenderer::QueueFamilyIndices", "structne_1_1VulkanRenderer_1_1QueueFamilyIndices.html", null ], + [ "ne::Renderer", "classne_1_1Renderer.html", [ + [ "ne::DirectXRenderer", "classne_1_1DirectXRenderer.html", null ], + [ "ne::VulkanRenderer", "classne_1_1VulkanRenderer.html", null ] + ] ], + [ "ne::RenderStatistics", "classne_1_1RenderStatistics.html", null ], + [ "ne::PipelineManager::ComputePipelines::Resources", "structne_1_1PipelineManager_1_1ComputePipelines_1_1Resources.html", null ], + [ "ne::ShaderCpuWriteResourceBindingManager::Resources", "structne_1_1ShaderCpuWriteResourceBindingManager_1_1Resources.html", null ], + [ "ne::ShaderLightArray::Resources", "structne_1_1ShaderLightArray_1_1Resources.html", null ], + [ "ne::RootSignatureGenerator::RootParameter", "classne_1_1RootSignatureGenerator_1_1RootParameter.html", null ], + [ "ne::RootSignatureGenerator", "classne_1_1RootSignatureGenerator.html", null ], + [ "ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ScreenToViewData", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ScreenToViewData.html", null ], + [ "ne::SerializableObjectInformation", "structne_1_1SerializableObjectInformation.html", [ + [ "ne::Node::SerializableObjectInformationWithGcPointer", "structne_1_1Node_1_1SerializableObjectInformationWithGcPointer.html", null ] + ] ], + [ "ne::Shader", "classne_1_1Shader.html", [ + [ "ne::GlslShader", "classne_1_1GlslShader.html", null ], + [ "ne::HlslShader", "classne_1_1HlslShader.html", null ] + ] ], + [ "ne::ShaderArrayIndex", "classne_1_1ShaderArrayIndex.html", null ], + [ "ne::ShaderArrayIndexManager", "classne_1_1ShaderArrayIndexManager.html", null ], + [ "ne::ShaderCacheInvalidationReasonDescription", "structne_1_1ShaderCacheInvalidationReasonDescription.html", null ], + [ "ne::ShaderCacheManager", "classne_1_1ShaderCacheManager.html", [ + [ "ne::GlslShaderCacheManager", "classne_1_1GlslShaderCacheManager.html", null ], + [ "ne::HlslShaderCacheManager", "classne_1_1HlslShaderCacheManager.html", null ] + ] ], + [ "ne::ShaderConfiguration", "classne_1_1ShaderConfiguration.html", null ], + [ "ne::Pipeline::ShaderConstantsData", "structne_1_1Pipeline_1_1ShaderConstantsData.html", null ], + [ "ne::ShaderCpuWriteResourceBindingManager", "classne_1_1ShaderCpuWriteResourceBindingManager.html", null ], + [ "ne::ShaderCpuWriteResourceBindingUniquePtr", "classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html", null ], + [ "ne::DirectionalLightNode::ShaderData", "structne_1_1DirectionalLightNode_1_1ShaderData.html", null ], + [ "ne::PointLightNode::ShaderData", "structne_1_1PointLightNode_1_1ShaderData.html", null ], + [ "ne::ShaderManager::ShaderData", "structne_1_1ShaderManager_1_1ShaderData.html", null ], + [ "ne::SpotlightNode::ShaderData", "structne_1_1SpotlightNode_1_1ShaderData.html", null ], + [ "ne::ShaderDescription", "structne_1_1ShaderDescription.html", null ], + [ "ne::ShaderFilesystemPaths", "classne_1_1ShaderFilesystemPaths.html", null ], + [ "ne::ShaderLightArray", "classne_1_1ShaderLightArray.html", null ], + [ "ne::ShaderLightArraySlot", "classne_1_1ShaderLightArraySlot.html", null ], + [ "ne::ShaderLightsInFrustumSingleType", "structne_1_1ShaderLightsInFrustumSingleType.html", null ], + [ "ne::ShaderMacroConfigurations", "structne_1_1ShaderMacroConfigurations.html", null ], + [ "ne::ShaderMacroSetHash", "structne_1_1ShaderMacroSetHash.html", null ], + [ "ne::ShaderManager", "classne_1_1ShaderManager.html", null ], + [ "ne::ShaderPack", "classne_1_1ShaderPack.html", null ], + [ "ne::ShaderPipelines", "structne_1_1ShaderPipelines.html", null ], + [ "ne::ShaderResourceBindingBase", "classne_1_1ShaderResourceBindingBase.html", [ + [ "ne::ShaderCpuWriteResourceBinding", "classne_1_1ShaderCpuWriteResourceBinding.html", null ], + [ "ne::ShaderTextureResourceBinding", "classne_1_1ShaderTextureResourceBinding.html", [ + [ "ne::GlslShaderTextureResourceBinding", "classne_1_1GlslShaderTextureResourceBinding.html", null ], + [ "ne::HlslShaderTextureResourceBinding", "classne_1_1HlslShaderTextureResourceBinding.html", null ] + ] ] + ] ], + [ "ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ShaderResources", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ShaderResources.html", null ], + [ "ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html", null ], + [ "ne::Material::GpuResources::ShaderResources", "structne_1_1Material_1_1GpuResources_1_1ShaderResources.html", null ], + [ "ne::MeshNode::GpuResources::ShaderResources", "structne_1_1MeshNode_1_1GpuResources_1_1ShaderResources.html", null ], + [ "ne::ShaderTextureResourceBindingManager", "classne_1_1ShaderTextureResourceBindingManager.html", null ], + [ "ne::ShaderTextureResourceBindingUniquePtr", "classne_1_1ShaderTextureResourceBindingUniquePtr.html", null ], + [ "ne::ShaderUser", "classne_1_1ShaderUser.html", [ + [ "ne::Pipeline", "classne_1_1Pipeline.html", [ + [ "ne::DirectXPso", "classne_1_1DirectXPso.html", null ], + [ "ne::VulkanPipeline", "classne_1_1VulkanPipeline.html", null ] + ] ] + ] ], + [ "ne::ShadowMapArrayIndexManager", "classne_1_1ShadowMapArrayIndexManager.html", [ + [ "ne::DirectXShadowMapArrayIndexManager", "classne_1_1DirectXShadowMapArrayIndexManager.html", null ], + [ "ne::VulkanShadowMapArrayIndexManager", "classne_1_1VulkanShadowMapArrayIndexManager.html", null ] + ] ], + [ "ne::ShadowMapHandle", "classne_1_1ShadowMapHandle.html", null ], + [ "ne::ShadowMapManager::ShadowMapHandleResources", "structne_1_1ShadowMapManager_1_1ShadowMapHandleResources.html", null ], + [ "ne::ShadowMapManager", "classne_1_1ShadowMapManager.html", null ], + [ "ne::DirectionalLightNode::ShaderData::ShadowPassDataGroup", "structne_1_1DirectionalLightNode_1_1ShaderData_1_1ShadowPassDataGroup.html", null ], + [ "ne::PointLightNode::ShaderData::ShadowPassDataGroup", "structne_1_1PointLightNode_1_1ShaderData_1_1ShadowPassDataGroup.html", null ], + [ "ne::SpotlightNode::ShaderData::ShadowPassDataGroup", "structne_1_1SpotlightNode_1_1ShaderData_1_1ShadowPassDataGroup.html", null ], + [ "ne::ShadowPassLightShaderInfo", "structne_1_1ShadowPassLightShaderInfo.html", null ], + [ "ne::SourceLocationInfo", "structne_1_1SourceLocationInfo.html", null ], + [ "ne::PipelineShaderConstantsManager::SpecialConstantsNames", "structne_1_1PipelineShaderConstantsManager_1_1SpecialConstantsNames.html", null ], + [ "ne::Sphere", "structne_1_1Sphere.html", null ], + [ "ne::SpotlightNode::SpotlightShaderData", "structne_1_1SpotlightNode_1_1SpotlightShaderData.html", null ], + [ "ne::StdStringHash", "structne_1_1StdStringHash.html", null ], + [ "ne::VulkanRenderer::SwapChainImageSemaphores", "structne_1_1VulkanRenderer_1_1SwapChainImageSemaphores.html", null ], + [ "ne::VulkanRenderer::SwapChainSupportDetails", "structne_1_1VulkanRenderer_1_1SwapChainSupportDetails.html", null ], + [ "ne::RenderStatistics::TaskTimeInfo", "structne_1_1RenderStatistics_1_1TaskTimeInfo.html", null ], + [ "ne::TextureHandle", "classne_1_1TextureHandle.html", null ], + [ "ne::TextureImporter", "classne_1_1TextureImporter.html", null ], + [ "ne::TextureManager", "classne_1_1TextureManager.html", null ], + [ "ne::TextureManager::TextureResource", "structne_1_1TextureManager_1_1TextureResource.html", null ], + [ "ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ThreadGroupCount", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ThreadGroupCount.html", null ], + [ "ne::ThreadPool", "classne_1_1ThreadPool.html", null ], + [ "ne::Timer", "classne_1_1Timer.html", null ], + [ "ne::UniqueValueGenerator", "classne_1_1UniqueValueGenerator.html", null ], + [ "ne::UploadBuffer", "classne_1_1UploadBuffer.html", null ], + [ "ne::VertexFormatDescription", "classne_1_1VertexFormatDescription.html", [ + [ "ne::GlslVertexFormatDescription", "classne_1_1GlslVertexFormatDescription.html", [ + [ "ne::MeshNodeGlslVertexFormatDescription", "classne_1_1MeshNodeGlslVertexFormatDescription.html", null ] + ] ], + [ "ne::HlslVertexFormatDescription", "classne_1_1HlslVertexFormatDescription.html", [ + [ "ne::MeshNodeHlslVertexFormatDescription", "classne_1_1MeshNodeHlslVertexFormatDescription.html", null ] + ] ] + ] ], + [ "ne::CameraProperties::Data::ViewData", "structne_1_1CameraProperties_1_1Data_1_1ViewData.html", null ], + [ "ne::Window", "classne_1_1Window.html", null ], + [ "ne::WindowBuilder", "classne_1_1WindowBuilder.html", null ], + [ "ne::WindowBuilderParameters", "structne_1_1WindowBuilderParameters.html", null ], + [ "ne::WindowCursor", "classne_1_1WindowCursor.html", null ], + [ "ne::World", "classne_1_1World.html", null ], + [ "ne::Globals::WorldDirection", "structne_1_1Globals_1_1WorldDirection.html", null ], + [ "ne::SpatialNode::WorldMatrixInformation", "structne_1_1SpatialNode_1_1WorldMatrixInformation.html", null ] +]; \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 000000000..24f38d44c --- /dev/null +++ b/index.html @@ -0,0 +1,2537 @@ + + + + + + + +Nameless Engine: Manual + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Nameless Engine +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Manual
+
+
+

This is a manual - a step-by-step guide to introduce you to various aspects of the engine. More specific documentation can be always found in the class/function/variable documentation in the source code or on this page (see left panel for navigation), every code entity is documented so you should not get lost.

+

Note that this manual contains many sections and instead of scrolling this page you can click on a little arrow button in the left (navigation) panel, the little arrow button becomes visible once you hover your mouse cursor over a section name, by clicking on that litte arrow you can expand the section and see its subsections and quickly jump to needed sections.

+

This manual expects that you have a solid knowledge in writing programs using C++ language.

+

+Introduction to the engine

+

+Prerequisites

+

First of all, read the repository's README.md file, specifically the Prerequisites section, make sure you have all required things installed.

+

The engine relies on CMake as its build system. CMake is a very common build system for C++ projects so generally most of the developers should be familiar with it. If you don't know what CMake is or haven't used it before it's about the time to learn the basics of CMake right now. Your project will be represented as several CMake targets: one target for standalone game, one target for tests, one target for editor and etc. So you will work on CMakeLists.txt files as with usual C++! There are of course some litte differences compared to the usual CMake usage, for example if you want to define external dependencing in your CMake file you need to do one additional step (compared to the usual CMake usage) that will be covered later in a separate section.

+

+Creating a new project

+

+Preparing project path (only for Windows users)

+

Because Windows limits paths to ~255 characters it's impossible to operate on files that have long paths, thus, you need to make sure that path to your project directory will not be very long, this does not mean that you need to create your project in disk root (for ex. C:\myproject) - there's no need for that but the shorter the path to the project the most likely you won't have weird issues with your project. If you need exact numbers a path with 30-40 characters will be good but you can try using longer paths. Just don't forget about this path limitation thing.

+

+Project generator

+

Currently we don't have a proper project generator but it's planned. Once the project generator will be implemented this section will be updated.

+

Right now you can clone the repository and don't forget to update submodules. Once you have a project with CMakeLists.txt file in the root directory you can open it in your IDE. For example Qt Creator or Visual Studio allow opening CMakeLists.txt files as C++ projects, other IDEs also might have this functionality.

+

Note for Visual Studio users:

+

‍If you use Visual Studio the proper way to work on CMakeLists.txt files as C++ projects is to open up Visual Studio without any code then press File -> Open -> Cmake and select the CMakeLists.txt file in the root directory (may be changed in the new VS versions). Then a tab called CMake Overview Pages should be opened in which you might want to click Open CMake Settings Editor and inside of that change Build root to just ${projectDir}\build\ to store built data inside of the build directory (because by default Visual Studio stores build in an unusual path out/<build mode>/). When you open CMakeLists.txt in Visual Studio near the green button to run your project you might see a text Select Startup Item..., you should press a litte arrow near this text to expand a list of available targets to use. Then select a target that you want to build/use and that's it, you are ready to work on the project.

+
+

Note for Windows users:

+

‍Windows users need to run their IDE with admin privileges when building the project for the first time (only for the first build) when executing a post-build script the engine creates a symlink next to the built executable that points to the directory with engine/editor/game resources (called res). Creating symlinks on Windows requires admin privileges. When releasing your project we expect you to put an actual copy of your res directory next to the built executable but we will discuss this topic later in a separate section.

+
+

Before you go ahead and dive into the engine yourself make sure to read a few more sections, there is one really important section further in the manual that you have to read, it contains general tips about things you need to keep an eye out!

+

+Project structure

+

Let's looks at the directories/files that a typical project will have:

    +
  • build this directory generally used in CMake projects to store built binaries.
  • +
  • docs this directory stores documentation, generally it contains a Doxyfile config that doxygen (generates documentation pages from source code comments) uses and maybe a hand-written documentation page (a manual, like the one your are reading right now).
  • +
  • ext this directory is used to store external dependencies, generally it stores git submodules but sometimes it also stores non-submodule directories.
  • +
  • res this directory stores all resources (shaders, images, 3D objects, sound, etc.), if you look in this directory you might see subdirectories like editor, engine, game and test, each one stores resources for one specific thing, editor stores editor resources, game stores resources that your game needs, test stores resources used in automated testing and etc.
  • +
  • src this directory stores all source code: source code for the editor, engine, your game, etc.
  • +
  • .clang-format this file is used by clang-format a code formatter that automatically formats our source code according to the config file, we will talk about code formatting in one of the next sections.
  • +
  • .clang-tidy this file is used by clang-tidy a static analyzer that checks our code for common mistakes/bugs and also controls some code style, we will talk about static analyzers in one of the next sections.
  • +
  • CMakeLists.txt is a top-level CMake file that we open in our IDEs, it adds other CMake files from the src directory.
  • +
+

The src directory contains a directory per CMake target, for example: editor (executable CMake target), editor_lib (library CMake target) and some additional helper directories such as .cmake (contains helper CMake functions) and .scripts (contains Go scripts that we use in our CMake files).

+

Inside of each CMake target directory will be a target-specific CMakeLists.txt file (for example: src/editor_lib/CMakeLists.txt), directories for source code and maybe a .generated directory that contains reflection code (we will talk about source code directories and reflection in one of the next sections).

+

Note that generally you should add all functionality of your game into a library target (so that it can be used in other executable targets such as tests) while executable targets will generally will only have main.cpp.

+

Your game target CMakeLists.txt is fully yours, it will have some configuration code inside of it but you are free to change it as you want (you can disable/change doxygen, clang-tidy, reflection generation and anything else you don't like).

+

+Which header files to include and which not to include

+

+General

+

src/engine_lib is divided into 2 directories: public and private. You are free to include anything from the public directory, you can also include header files from the private directory in some special/advanced cases but generally there should be no need for that. Note that this division (public/private) is only conceptual, your project already includes both directories because some engine public headers use private headers and thus both included in cmake targets that use the engine (in some cases it may cause your IDE to suggest lots of headers when attempting to include some header from some directory so it may be helpful to just look at the specific public directory to look for the header name if you feel overwhelmed).

+

Inside of the public directory you will see other directories that group header files by their purpose, for example io directory stands for in/out which means that this directory contains files for working with disk (loading/saving configuration files, logging information to log files that are stored on disk, etc.).

+

You might also notice that some header files have .h extension and some have .hpp extension. The difference here is only conceptual: files with .hpp extension don't have according .cpp file, this is just a small hint for developers.

+

You are not required to use the private/public directory convention, moreover directories that store executable cmake targets just use src directory (you can look into engine_tests or editor directories to see an example) so you can group your source files as you want.

+

+Math headers

+

The engine uses GLM (a well known math library, hosted at https://github.com/g-truc/glm). Although you can include original GLM headers it's highly recommended to include the header math/GLMath.hpp instead of the original GLM headers when math is needed. This header includes main GLM headers and defines engine specific macros so that GLM will behave as the engine expects.

+

You should always prefer to include math/GLMath.hpp instead of the original GLM headers and only if this header does not have needed functionality you can include original GLM headers afterwards.

+

+Automatic code formatters and static analyzers

+

The engine uses clang-format and clang-tidy a classic pair of tools that you will commonly find in C++ projects. If you don't know what they do it's a good time to read about them on the Internet.

+

The engine does not require you to use them but their usage is highly recommended.

+

clang-format can be used in your IDE to automatically format your code (for example) each time you press Ctrl+S. If you want to make sure that your IDE is using our .clang-format config you can do the following check: in your source code create 2 or more consecutive empty lines, since our .clang-format config contains a rule MaxEmptyLinesToKeep: 1 after you format the file only 1 empty line should remain. The action with which you format your source code depends on your IDE settings that you might want to configure, generally IDEs have a shortcut to "format" your source code but some have option to automatically use "format" action when you are saving your file.

+

clang-tidy has a lot of checks enabled and is generally not that fast as you might expect, because of this we have clang-tidy enabled only in release builds to speed up build times for debug builds. This means that if your game builds in debug mode it may very well fail to build in release mode due to some clang-tidy warnings that are treated as errors. Because of this it's highly recommended to regularly (say once or twice a week) build your project in release mode to check for clang-tidy warnings/errors.

+

+Node system

+

Have you used Godot game engine? If the answer is "yes" you're in luck, this engine uses a similar node system for game entities. We have a base class Node and derived nodes like SpatialNode, MeshNode and etc.

+

If you don't know what node system is or haven't used Godot, here is a small introduction to the node system:

+

‍Generally game engines have some sort of ECS (Entity component system) in use. There are various forms of ECS like data-driven, object-oriented and etc. Entities can be represented in different ways in different engines: an entity might be a complex class like Unreal Engine's Actor that contains both data and logic or an entity might be just a number (a unique identifier). Components can also be represented in different ways: a component might be a special class that implements some specific logic like Unreal Engine's CharacterMovementComponent that implements functionality for your entity to be able to move, swim, fly and etc. so it contains both data and logic or a component may just group some data and have no logic at all. Node system is an ECS-like system that is slightly similar to how Unreal Engine's entity-component framework works. If you worked with Unreal Engine imagine that there are no actors but only components and world consists of only components - that's roughly how node system works. In node system each entity in the game is a node. A node contains both logic and data. The base class Node implements some general node functionality such as: being able to attach child nodes or attach to some parent node, determining if the node should receive user input or if it should be called every frame to do some per-frame logic and etc. We have various types of nodes like SpatialNode that has a location/rotation/scale in 3D space or MeshNode that derives from SpatialNode but adds functionality to display a 3D geometry. Nodes attach other nodes as child nodes thus creating a node hierarchy or a node tree. A node tree is a game level or a game map. Your game's character is also a node tree because it will most likely be built of a mesh node, a camera node, a collision node, maybe your custom derived node that handles some character specific logic and maybe something else. Your game's UI is also a node tree because it will most likely have a container node, various button nodes and text nodes. When you combine everything together you attach your character's node tree and your UI node tree to your game map's node tree thus creating a game level. That's how node system works.

+
+

Nodes are generally used to take place in the node hierarchy, to be part of some parent node for example. Nodes are special and they use special garbage collected smart pointers (we will talk about them in one of the next sections) but not everything should be a node. If you want to implement some class that does not need to take a place in the node hierarchy, does not belong to some node or does not interact with nodes, for example a class to send bug reports, there's really no point in deriving you bug reporter class from Node, although nobody is stopping you from using nodes for everything and it's perfectly fine to do so, right now we want to smoothly transition to other important thing in your game. Your class/object might exist apart from node system and you can use it outside of the node system. For example, you can store your class/object in a GameInstance.

+

+Game instance

+
+

‍If you used Unreal Engine the GameInstance class works similarly (but not exactly) to how Unreal Engine's UGameInstance class works.

+
+

In order to start your game you create a Window, a window creates GameManager - the heart of your game, the most important manager of your game, but generally you don't interact with GameManager directly since it's located in the src/engine_lib/private directory, the GameManager creates essential game objects such as renderer, physics engine, audio manager and your GameInstance. While the window that your have created is not closed the GameInstance lives and your game runs. Once the user closes your window or your game code submits a "close window" command the GameManager starts to destroy all created systems: World (which despawns and destroys all nodes), GameInstance, renderer and other things.

+

When GameInstance is created and everything is setup for the game to start GameInstance::onGameStarted is called. In this function you generally create/load a game world and spawn some nodes. Generally there is no need to store pointers to nodes in your GameInstance since nodes are self-contained and each node knows what to do except that nodes sometimes ask GameInstance for various global information by using the static function Node::getGameInstance.

+

So "global" (world independent) classes/objects are generally stored in GameInstance but sometimes they can be represented by a node.

+

+Reflection basics

+

+General

+

Have you used other game engines? Generally game engines have an editor application that allows placing your custom objects on the map and construct levels. The general process goes like this: you create a new class in the code, compile the code, open up the editor and the editor is able to see you newly created class and allows you to place objects of the class on the level/map. The ability to see/analyze your code is what reflection is about.

+

Generally reflection comes down to writing additional code to your class, this additional code allows other systems to see/analyze your class/objects (see functions/fields, even private).

+

Reflection helps us save time and ease up some processes. Let's consider an example: you want to have a save file for your game where you store player's progress. For this you can use a ConfigManager and save your variables like this:

+
ConfigManager manager;
+
+
// Save.
+
manager.setValue<std::string>("player progress", "player name", playerConfig.getName());
+
manager.setValue<int>("player progress", "player level", playerConfig.getLevel());
+
+
// Load.
+
auto sPlayerName = manager.getValue<std::string>("player progress", "player name", "default name");
+
auto iPlayerLevel = manager.setValue<int>("player progress", "player level", 1);
+

but each time you need to save a new variable in the save file you need to append new code to save/load functions. With reflection you don't need to care about this. Here is the same example as above but it uses reflection:

+
// PlayerConfig.cpp
+
+
#include "PlayerConfig.generated_impl.h"
+
+
// PlayerConfig.h ------------------------
+
+
#include "io/Serializable.h" // base class for types that use reflection to be able to
+
// save/load on disk
+
// ... your other includes here ...
+
+
#include "PlayerConfig.generated.h" // must be included last, contains generated reflection code
+
+
using namespace ne; // engine namespace, all engine types are located in this namespace
+
+
namespace mygame RNAMESPACE(){
+
+
class RCLASS(Guid("9ae433d9-2cba-497a-8061-26f2683b4f35")) PlayerConfig : public Serializable {
+
public:
+
PlayerConfig() = default;
+
virtual ~PlayerConfig() override = default;
+
+
RPROPERTY(Serialize)
+
std::string sPlayerName;
+
+
RPROPERTY(Serialize)
+
int iPlayerLevel = 1;
+
+
mygame_PlayerConfig_GENERATED
+
};
+
+
}
+
+
File_PlayerConfig_GENERATED
+
Definition: GuidProperty.h:30
+
Definition: Serializable.h:113
+
Definition: SerializeProperty.h:42
+

now when you add a new variable you just need to mark it as RPROPERTY(Serialize) and that's it, it will be saved and loaded from save file on the disk. Thanks to reflection the engine is able to see fields marked as RPROPERTY(Serialize) and when you ask the engine to serialize an object of PlayerConfig type it will save all RPROPERTY(Serialize) fields to the save file.

+

We will talk about serialization (using various ways) in more details with more detailed examples in one of the next sections.

+

Note that reflection that we use relies on code generation, this means that when you create a class and add reflection specific code (include generated header, add RPROPERTY and etc.) your IDE will mark them as errors since the generated header is not created yet and thus macros like RPROPERTY are unknown. You need to ignore those errors, finish writing reflection specific code and compile your program. During the compilation, as one of the first build steps the reflection generator will analyze all source files in your project and see if some "generated" headers needs to be generated, then it generates them in src/*yourtarget*/.generated directory and after the reflection generator your compiler comes in and compiles your program, it will find no issues since the generated headers now exist and all included macros are known. After the compilation your IDE should also start to see new generated headers and will hide previously shown errors.

+

Let's analyze the example from above:

+
    +
  • #include "PlayerConfig.generated.h"
      +
    • an include with name *yourheadername*.generated.h needs to be included as the last #include in your header, it contains reflection macros/code
    • +
    • as you may have noticed you also need to include #include "*yourheadername*.generated_impl.h" in your .cpp file
    • +
    +
  • +
  • namespace mygame RNAMESPACE()
      +
    • here RNAMESPACE is a reflection macro (R stands for Reflected) that is used to mark a namespace to be added to reflection database
    • +
    +
  • +
  • class RCLASS(Guid("9ae433d9-2cba-497a-8061-26f2683b4f35")) PlayerConfig
      +
    • here RCLASS is a reflection macro that is used to mark class to be added to reflection database, if you have a struct you need to use RSTRUCT macro
    • +
    • Guid is a property of RCLASS macro that is used to specify a unique GUID that the class should be associated with, for example when you serialize an object of this class into a file on the disk this GUID will be saved in the file to mark that PlayerConfig class is saved here, you can generate a GUID by simply searching something like "generate GUID" on the Internet, any GUID will be fine but if some type already uses this GUID the engine will let you know at startup, in debug builds the engine checks for GUID uniqueness
    • +
    +
  • +
  • RPROPERTY(Serialize)
      +
    • RPROPERTY is a macro that marks a field to be added to reflection database as part of the class, you can have this macro defined without other properties but in this case we use a property named Serialize - this property tells the engine that when an object of this class is being serialized the value of this field should also be serialized, additionally when you deserialize a file that value will be deserialized into this field
    • +
    +
  • +
  • mygame_PlayerConfig_GENERATED
      +
    • a macro *namespace*_*typename*_GENERATED should be specified in the end of your type for reflection to work correctly, if you use nested types/namespaces this macro name will contain them all: *outerouter*_*outerinner*_*typename*_GENERATED
    • +
    +
  • +
  • File_PlayerConfig_GENERATED
      +
    • a macro File_*headername*_GENERATED should be specfiied in the end of your header file for reflection to work correctly
    • +
    +
  • +
+

Note that in order to use reflection you don't need to derive from Serializable in this example we derive from Serializable for serialization/deserialization functionality. Also note that Node class derives from Serializable, this means that all Node and derived classes have serialization/deserialization functionality.

+

For more information about reflection generator see our reflection generator fork: https://github.com/Flone-dnb/Refureku

+

Documentation for the original reflection generator: https://github.com/jsoysouvanh/Refureku/wiki

+

+Using reflection for your new type

+

Let's sum up what you need to do in order to use reflection:

+
    +
  1. Include *filename*.generated.h as the last include in your .h file (where filename is file name without extension).
  2. +
  3. Include *filename*.generated_impl.h as the last include in your .cpp file (where filename is file name without extension).
  4. +
  5. If you have a namespace add a RNAMESPACE() macro, for example: namespace mygame RNAMESPACE().
  6. +
  7. Mark your class/struct with RCLASS/RSTRUCT, for example: class RCLASS() PlayerConfig.
  8. +
  9. In the end of your type (as the last line of your type) add a macro *namespace*_*typename*_GENERATED or just *typename*_GENERATED if you don't have a namespace, if you use nested types/namespaces this macro name will contain them all: *outerouter*_*outerinner*_*typename*_GENERATED, for example: mygame_PlayerConfig_GENERATED.
  10. +
  11. In the end of your header file add a macro File_*filename* _GENERATED (where filename is file name without extension), for example: File_PlayerConfig_GENERATED.
  12. +
+

After this you can use reflection macros like RPROPERTY/RFUNCTION. We will talk about reflection macros/properties in more details in one of the next sections.

+

Note

+

‍Steps from above describe basic reflection usage and generally this will not be enough for engine-related things such as serialization and some editor features. Other sections of this manual will describe additional steps that you need to apply to your type in order to use various engine-related features that use reflection.

+
+

For more examples see src/engine_tests/io/ReflectionTest.h.

+

+Common mistakes when using reflection

+

If you changed something in your header file and your IDE now shows errors in GENERATED macros just compile your project, it will run reflection generator and update reflection code, then the errors should disappear.

+

If you created/changes something in your header file related to reflection (renamed reflection macro, changed class name, etc.) and your compiler gives you and error about reflection files/macros, look at the build log and make sure that the reflection generator was actually run. Some IDEs like JetBrains Rider (maybe fixed) have an issue where they don't run pre-build steps of CMake targets (Qt Creator and Visual Studio 2022 were tested and they run reflection generator correctly). It's essential that reflection generator is run before the compiler, see the build log, when reflection generator is running you will see something like this in the build log:

+
[2/109 1.0/sec] engine_lib: running reflection generator...
+
[Info] Working Directory: ...\nameless-engine\ext\Refureku\build\Bin
+
[Info] [TOML] Load cppVersion: c++20
+
[Info] [TOML] Load shouldParseAllNamespaces: false
+
[Info] [TOML] Load shouldParseAllClasses: false
+
[Info] [TOML] Load compiler: clang++
+
[Info] [TOML] Load new project include directory: C:\Prog\ne\nameless-engine\ext\Refureku\build\Include
+
[Info] [TOML] Load new project include directory: C:\Prog\ne\nameless-engine\src\engine_lib\.generated
+
...
+
... // some output here
+
...
+
[Info] (Re)generated metadata for 0 file(s) in 0.005000 seconds.
+
[Info] Metadata of 1 file(s) up-to-date.
+

If you get a compilation error like ‘Cannot open include file: ’....generated.h': No such file or directorythis might either mean that the reflection generator was not run (see solution from the above) or that your CMake target does not have reflection generator enabled. Open yourCMakeLists.txtfile and make sure it hasadd_refurekucommand if there is no such command then reflection generator is not enabled and you might want to look atCMakeLists.txt` of other targets to see how they use this command (not all CMake targets use reflection generator, generally only library targets use it).

+

If you added the reflection code but your project fails to compile at the linking stage make sure your .cpp file includes *filename*.generated_impl.h as its last include file.

+

In some rare cases you need to manually delete generated reflection files. For example if you made a typo and wrote RPROPERTY(Serializable) (while the correct macro/property is RPROPERTY(Serialize)), started compiling your project, the reflection generator run but there is a compilation error related to the reflection code. In this case even if you rename your macro/property to be correct you still might not be able to compile your project, if this is the case, go to the directory with generated code at src/*yourtarget*/.generated find a generated file named after your header file and delete 2 files *yourfile*.generated.h and *yourfile*.generated_impl.h (where yourfile is the file in which you had a mistake) then try to compile your project, it should succeed.

+

You can delete .generated directory but before building your project you need to re-run CMake configuration so that CMake will create a new .generated directory with a fresh new config files inside of it.

+

+Error handling

+

The engine uses the Error class (misc/Error.h) to handle and propagate errors. Some engine functions return it and you should know how to use them.

+

The Error class stores 2 things:

    +
  • initial error message (description of what went wrong)
  • +
  • "error call stack" (not an actual call stack, see below)
  • +
+

This class has some handy constructors, for example:

    +
  • (most commonly used) you can construct an Error object from a message string, it will be used as "initial error message",
  • +
  • you can construct an Error object from a Windows HRESULT object, in such constructor the Error class will convert it to an error description, append the error code of the HRESULT object and use it as "initial error message",
  • +
  • you can construct an Error object from an error code returned by Windows GetLastError function, just like with HRESULT, it will be converted to an error description.
  • +
+

When you construct an Error object it will use std::source_location to capture the name of the source file it was constructed from, plus a line where this Error object was constructed.

+

After constructing an Error object you can use Error::addEntry to capture the name of the source file this function is called from, plus a line where this function was called from.

+

To get the string that contains the initial error message and all captured source "entries" you can use Error::getFullErrorMessage.

+

To show a message box with the full error message and additionally print it to the log you can use Error::showError.

+

Let's see how this works together in an example of window creation:

+
// inside of your main.cpp
+
+
using namespace ne;
+
+
auto result = Window::getBuilder()
+
.withTitle("My window")
+
.withMaximizedState(true)
+
.withIcon("res/game/mylogo.png")
+
.build(); // returns `std::variant<std::unique_ptr<Window>, Error>`
+
if (std::holds_alternative<Error>(result)) {
+
// An error occurred while creating the window.
+
Error error = std::get<Error>(std::move(result));
+
error.addEntry(); // add this line to the error stack
+
+
// Since here we won't propagate the error up (because we are in the `main.cpp` file) we show an error message.
+
// If we want to propagate the error up we can return the error object after using the `Error::addEntry`.
+
error.showError();
+
+
// ... and throw an exception to show an unrecoverable error.
+
throw std::runtime_error(error.getFullErrorMessage());
+
}
+
+
// Window was created successfully.
+
const std::unique_ptr<Window> pMainWindow = std::get<std::unique_ptr<Window>>(std::move(result));
+
Definition: Error.h:27
+
std::string getFullErrorMessage() const
Definition: Error.cpp:84
+
void showError() const
Definition: Error.cpp:102
+

+Logging

+

The engine has a simple Logger class (io/Logger.h) that you can use to write to log files and to console (note that logging to console is disabled in release builds).

+

On Windows log files are located at %localappdata%/nameless-engine/*yourtargetname*/logs. On Linux log files are located at ~/.config/nameless-engine/*yourtargetname*/logs.

+

Here is an example of Logger usage:

+
#include "misc/Logger.h"
+
+
void foo(){
+
Logger::get().info("some information");
+
Logger::get().warn("some warning");
+
Logger::get().error("some error");
+
}
+

You can also combine std::format with logger:

+
#include "misc/Logger.h"
+
#include <format>
+
+
void bar(){
+
int iAnswer = 42;
+
Logger::get().info(std::format("the value of the variable is {}", iAnswer));
+
}
+

Then your log file might look like this:

+
[16:14:49] [info] [MyFile.cpp, 31] some information
+
[16:14:49] [warning] [MyFile.cpp, 32] some warning
+
[16:14:49] [error] [MyFile.cpp, 33] some error
+
[16:14:49] [info] [MyFile.cpp, 46] the value of the variable is 42
+

As you can see each log entry has a file name and a line number included.

+

Looking at your logs and finding if there were any warnings/errors might be tiresome if you have a big game with lots of systems (even if you just use Ctrl+F), to instantly identify if your game had warnings/errors in the log when you close your game the last log entry will be summary of total warnings/errors logged (if there was any, if there was no warnings/errors nothing will be logged in the end), it might look like this:

+
[16:14:50] [info]
+
---------------------------------------------------
+
Total WARNINGS produced: 1.
+
Total ERRORS produced: 1.
+
---------------------------------------------------
+

You will see this message in the console and in the log files as the last message if there were any warnings and/or errors logged. So pay attention to the logs/console after closing your game.

+

+Project paths

+

In order for your game to be able to access files in the res directory when you build your project the engine creates symlinks to the res directory next to the build binaries of you game. This means that if you need to access some file from the res directory, in your app you can just type "res/game/somepath". For release builds the engine will not create symlinks and will require you to copy your res directory manually but we will talk about this in more details in one of the next sections.

+

Instead of hardcoding you paths like "res/game/somepath" you should use ProjectPaths (misc/ProjectPaths.h). This class provides static functions to access various paths, here are a few examples:

+
// same as "res/game/myfile.png"
+
const auto absolutePathToMyFile = ProjectPaths::getPathToResDirectory(ResourceDirectory::GAME) / "myfile.png";
+
+
// same as "%localappdata%/nameless-engine/*targetname*/logs" on Windows
+
const auto pathToLogsDir = ProjectPaths::getPathToLogsDirectory();
+
+
// same as "%localappdata%/nameless-engine/*targetname*/progress" on Windows
+
const auto pathToLogsDir = ProjectPaths::getPathToPlayerProgressDirectory();
+

See misc/ProjectPaths.h for more.

+

+Memory leaks and garbage collection

+

+Memory leak checks

+

By default in Debug builds memory leak checks are enabled, look for the output/debugger output tab of your IDE after running your project. If any leaks occurred it should print about them. You can test whether the memory leak checks are enabled or not by doing something like this:

new int(42);
+
// don't `delete`
+

run your program that runs this code and after your program is finished you should see a message about the memory leak in the output/debugger output tab of your IDE.

+

+About raw pointers

+

Some engine functions return raw pointers. Generally, when the engine returns a raw pointer to you this means that you should not free/delete it and it is guaranteed to be valid for the (most) time of its usage. For more information read the documentation for the functions you are using.

+

+Garbage collector overview

+

The engine uses the following garbage collector: https://github.com/Flone-dnb/sgc. The main reason why we need a garbage collector is to resolve cyclic references. The game has a node hierarchy that can change dynamically, nodes can reference other nodes that exist in the world and cyclic references could occur easily.

+

The garbage collector library provides a smart pointer sgc::GcPtr<T> that acts as a std::shared_ptr<T>, the library also has sgc::GarbageCollector::get().collectGarbage() function that is used to resolve cyclic references and free objects that are stuck in cyclic references. By default the engine runs garbage collection regularly so you don't have to care about it (and you don't need to call sgc::GarbageCollector::get().collectGarbage() from your game code). Here is an example on how to use these sgc::GcPtr objects:

+
sgc::GcPtr<MyNode> pNode = sgc::makeGc<MyNode>(); // it's like `std::make_shared<MyNode>()`
+

And here is a cyclic reference example that will be resolved by the garbage collector:

+
#include "GcPtr.h" // include for `GC` pointers
+
+
class Foo{
+
public:
+
sgc::GcPtr<Foo> pFoo;
+
};
+
+
{
+
auto pFoo = sgc::makeGc<Foo>();
+
pFoo->pFoo = pFoo; // cyclic reference
+
}
+
+
// `Foo` still exists and was not freed, waiting for GC...
+
sgc::GarbageCollector::get().collectGarbage(); // this will be run regularly somewhere in the engine code
+
// so you don't have to care about it
+
// `Foo` was freed
+

Because the engine runs garbage collection regularly we want to minimize the amount of gc pointers to minimize the amount of work that the garbage collector will do. If we would have used only gc pointers and used them a lot, the garbage collection would probably cause stutters or freezes that players would not appreciate.

+

"When should I use `gc` pointers" you might ask? The answer is simple: start by thinking with std::unique_ptrs, if you need more than just one owner think of std::shared_ptrs for the part of the code you are planning/developing, if you know that cyclic reference can occur - use gc pointers, otherwise - don't, because there would be no need for that. For example, we use gc pointers in the node system because we know that nodes can reference other nodes and can dynamically change references so cyclic references could occur easily.

+

Of course, not everything will work magically. There is one or two cases where garbage collector can fail (leak memory), but don't worry, if this will happen the engine will let you know by logging an error message with possible reasons on why that happend so pay attention to the logs and always read the documentation for the functions you are using.

+

+Storing GC pointers in containers

+

Probably the most common mistake that could cause the garbage collection to fail is related to containers, because it's the most common mistake that developers could make, let's see how to avoid it. Imagine you want to store an array of gc pointers or store them in another container like std::unordered_map, you could write something like this:

+
std::vector<sgc::GcPtr<MyNode>> vMyNodes; // DON'T DO THIS, this may leak
+

but due to garbage collector limitations this might cause memory leaks. Don't worry, when these leaks will happen the engine will log an error message with possible reasons on why that happend and possible solutions, so you will instantly know what to do. The right way to store gc pointers in a container will be the following:

+
#include "gccontainers/GcVector.hpp"
+
+
sgc::GcVector<sgc::GcPtr<MyNode>> vMyNodes; // works just like `std::vector<T>`
+

Not all STL containers have gc alternative, see the garbage collector's repository for more information.

+

+GC limitations and thread safety with examples

+

It's really important that you know how to properly use the GC objects.

+

Use the link to the garbage collector's repository (see above) and make sure to read the README file (especially the limitations and thread safety sections).

+

Here's what you don't need to care about in your game's code:

+
    +
  • No need to set GC info callbacks because the engine does that for you.
  • +
  • No need to directly interact with sgc::GarbageCollector because the engine runs garbage collector regularly and in some special situations.
  • +
  • No need to add GC to your game's cmake file because it's already included in the engine's cmake target.
  • +
+

+Interacting with garbage collector

+

GameInstance class has function to interact with the garbage collector, such as:

+
    +
  • getGarbageCollectorRunIntervalInSec to get the time interval after which the GC runs again.
  • +
  • setGarbageCollectorRunInterval to set the time interval after which the GC runs again.
  • +
  • and probably more, see the GameInstance class for more details...
  • +
+

Just note that you don't need to directly use sgc::GarbageCollector (if you maybe saw this somewhere in examples), the engine will use it, you on the other hand should use GameInstance functions for garbage collection.

+

+Deferred tasks and thread pool

+

The engine has 2 kind tasks you might be interested in:

+
    +
  • a deferred task is a function/lambda that is executed on the main thread,
      +
    • you can submit deferred tasks from non-main thread to run some logic on the main thread,
    • +
    • you can also submit deferred tasks while being on the main thread, this will just queue your task and execute in slightly later on the main thread
    • +
    • deferred tasks are processed every time before a new frame is drawn
    • +
    +
  • +
  • a thread pool task is a function/lambda that is executed inside of a thread pool (non-main thread), you can submit a function/lambda to a thread pool to run asynchronous logic
  • +
+

The engine guarantees that:

    +
  • all deferred tasks and all thread pool tasks will be finished before your GameInstance is destroyed so you don't need to check whether the game is closing or not in your deferred/thread pool tasks
  • +
  • all deferred tasks submitted from the main thread will be finished before garbage collector runs, this means that if you submit deferred tasks from the main thread you can pass raw node pointers (such as Node*) and use them in deferred tasks without risking to hit deleted memory
  • +
+

Submitting a deferred task from a non-main thread where in deferred task you operate on a gc controlled object such as Node can be dangerous as you may operate on a deleted (freed) memory. The engine roughly speaking does the following:

+
executeDeferredTasks();
+
runGarbageCollector();
+

and if you are submitting a deferred task from a non-main thread you might get into the following situation:

+
executeDeferredTasks();
+
// your non-main thread added a new deferred task here
+
runGarbageCollector();
+
// or your non-main thread added a new deferred task here
+

In this case use additional checks in the beginning of your deferred task to check if the node you want to use is still valid:

+
// We are on a non-main thread inside of a node:
+
addDeferredTask([this, iNodeId](){ // capturing `this` to use `Node` (self) functions, also capturing self ID
+
// We are inside of a deferred task (on the main thread) and we don't know if the node (`this`)
+
// was garbage collected or not because we submitted our task from a non-main thread.
+
// REMEMBER: we can't capture `gc` pointers in `std::function`, this is not supported
+
// and will cause memory leaks/crashes!
+
+
const auto pGameManager = GameManager::get(); // using engine's private class `GameManager`
+
+
// `pGameManager` is guaranteed to be valid inside of a deferred task.
+
// Otherwise, if running this code outside of a deferred task you need to do 2 checks:
+
// if (pGameManager == nullptr) return;
+
// if (pGameManager->isBeingDestroyed()) return;
+
+
if (!pGameManager->isNodeSpawned(iNodeId)){
+
// Node was despawned and it may be dangerous to run the callback.
+
return;
+
}
+
+
// Can safely interact with `this` (self) - we are on the main thread.
+
});
+

+World creation

+

+World axes and world units

+

The engine uses a left handed coordinate system. +X is world "forward" direction, +Y is world "right" direction and +Z is world "up" direction. These directions are stored in Globals::WorldDirection (misc/Globals.h).

+

Rotations are applied in the following order: ZYX, so "yaw" is applied first, then "pitch" and then "roll". If you need to do manual math with rotations you can use MathHelpers::buildRotationMatrix that builds a rotation matrix with correct rotation order.

+

1 world unit is expected to be equal to 1 meter in your game.

+

+Creating a world using C++

+

Let's first make sure you know how to create a window, your main.cpp should generally look like this:

+
// Standard.
+
#include <stdexcept>
+
+
// Custom.
+
#include "MyGameInstance.h"
+
#include "game/Window.h"
+
#include "misc/ProjectPaths.h"
+
+
int main() {
+
using namespace ne;
+
+
// Create a game window.
+
auto result =
+
Window::getBuilder()
+
.withTitle("My Game")
+
.withMaximizedState(true)
+
.withIcon(
+
ProjectPaths::getPathToResDirectory(ResourceDirectory::GAME) / "my_game_icon.png")
+
.build();
+
if (std::holds_alternative<Error>(result)) {
+
Error error = std::get<Error>(std::move(result));
+ +
error.showError();
+
throw std::runtime_error(error.getFullErrorMessage());
+
}
+
auto pMainWindow = std::get<std::unique_ptr<Window>>(std::move(result));
+
+
// Run game loop.
+
pMainWindow->processEvents<MyGameInstance>();
+
+
return 0;
+
}
+
void addCurrentLocationToErrorStack(const std::source_location location=std::source_location::current())
Definition: Error.cpp:80
+

And your game instance would generally look like this:

+
#pragma once
+
+
// Custom.
+
#include "game/GameInstance.h"
+
+
class Window;
+ + +
+
class MyGameInstance : public GameInstance {
+
public:
+
MyGameInstance(Window* pWindow, GameManager* pGameManager, InputManager* pInputManager);
+
virtual ~MyGameInstance() override = default;
+
+
protected:
+
virtual void onGameStarted() override;
+
};
+
Definition: GameInstance.h:32
+
Definition: GameManager.h:34
+
Definition: InputManager.h:77
+
Definition: Window.h:198
+

Now let's see how we can create a world in onGameStarted:

+
#include "MyGameInstance.h"
+
+
// Custom.
+
#include "game/nodes/MeshNode.h"
+
#include "misc/PrimitiveMeshGenerator.h"
+
+
MyGameInstance::MyGameInstance(
+
Window* pWindow, GameManager* pGameManager, InputManager* pInputManager)
+
: GameInstance(pWindow, pGameManager, pInputManager) {}
+
+
void MyGameInstance::onGameStarted(){
+
// Create world.
+
createWorld([this](const std::optional<Error>& optionalWorldError) {
+
// Show error if failed.
+
if (optionalWorldError.has_value()) [[unlikely]] {
+
auto error = optionalWorldError.value();
+
error.addCurrentLocationToErrorStack();
+
error.showError();
+
throw std::runtime_error(error.getFullErrorMessage());
+
}
+
+
// Spawn sample mesh.
+
const auto pMeshNode = sgc::makeGc<MeshNode>();
+
pMeshNode->setMeshData(PrimitiveMeshGenerator::createCube(1.0F));
+
getWorldRootNode()->addChildNode(pMeshNode);
+
+
// Set mesh node location.
+
pMeshNode->setWorldLocation(glm::vec3(1.0F, 0.0F, 0.0F));
+
});
+
}
+

The code from above creates a new world with just 2 nodes: a root node and a mesh node. As you can see you specify a callback function that will be called once the world is created.

+

Unfortunatelly you would also need a camera to see your world but we will discuss this in the next section, for now let's talk about world creation.

+

If you instead want to load some level/map as your new world you need to use loadNodeTreeAsWorld instead of createWorld, see an example:

+
#include "MyGameInstance.h"
+
+
// Custom.
+
#include "game/nodes/MeshNode.h"
+
#include "misc/PrimitiveMeshGenerator.h"
+
+
MyGameInstance::MyGameInstance(
+
Window* pWindow, GameManager* pGameManager, InputManager* pInputManager)
+
: GameInstance(pWindow, pGameManager, pInputManager) {}
+
+
void MyGameInstance::onGameStarted(){
+
// Prepare path to your node tree to load.
+
const auto pathToMyLevel = ProjectPaths::getPathToResDirectory(ResourceDirectory::GAME) / "mylevel.toml";
+
+
// Deserialize world.
+
loadNodeTreeAsWorld(
+
[this](const std::optional<Error>& optionalWorldError) {
+
// Show error if failed.
+
if (optionalWorldError.has_value()) [[unlikely]] {
+
auto error = optionalWorldError.value();
+
error.addCurrentLocationToErrorStack();
+
error.showError();
+
throw std::runtime_error(error.getFullErrorMessage());
+
}
+
+
// World is loaded.
+
},
+
pathToMyLevel);
+
}
+

+Lighting

+

Light source nodes (such as point/spot/directional) are stored in game/nodes/light. Just spawn one of these nodes and configure their setting using setLight... functions and setWorldLocation/setWorldRotation. Here is an example:

+
#include "game/nodes/light/PointLightNode.h"
+
+
void MyGameInstance::onGameStarted(){
+
// Create world.
+
createWorld([this](const std::optional<Error>& optionalWorldError) {
+
// Show error if failed.
+
if (optionalWorldError.has_value()) [[unlikely]] {
+
auto error = optionalWorldError.value();
+
error.addCurrentLocationToErrorStack();
+
error.showError();
+
throw std::runtime_error(error.getFullErrorMessage());
+
}
+
+
// Spawn sample mesh.
+
const auto pMeshNode = sgc::makeGc<MeshNode>();
+
pMeshNode->setMeshData(PrimitiveMeshGenerator::createCube(1.0F));
+
getWorldRootNode()->addChildNode(pMeshNode);
+
+
// Set mesh node location.
+
pMeshNode->setWorldLocation(glm::vec3(1.0F, 0.0F, 0.0F));
+
+
// Spawn point light.
+
const auto pPointLightNode = sgc::makeGc<PointLightNode>();
+
getWorldRootNode()->addChildNode(pPointLightNode);
+
+
// Configure point light.
+
pPointLightNode->setLightColor(glm::vec3(0.0F, 1.0F, 0.0F)); // emit green light
+
pPointLightNode->setLightHalfDistance(20.0F); // change light radius
+
pPointLightNode->setWorldLocation(glm::vec3(-1.0F, 5.0F, 5.0F)); // move the light
+
});
+
}
+

+Environment

+

Using EnvironmentNode you can configure environment settings such as ambient light, skybox, etc. Here is an example:

+
#include "game/nodes/EnvironmentNode.h"
+
+
void MyGameInstance::onGameStarted(){
+
// Create world.
+
createWorld([this](const std::optional<Error>& optionalWorldError) {
+
// Show error if failed.
+
if (optionalWorldError.has_value()) [[unlikely]] {
+
auto error = optionalWorldError.value();
+
error.addCurrentLocationToErrorStack();
+
error.showError();
+
throw std::runtime_error(error.getFullErrorMessage());
+
}
+
+
// Spawn sample mesh.
+
const auto pMeshNode = sgc::makeGc<MeshNode>();
+
pMeshNode->setMeshData(PrimitiveMeshGenerator::createCube(1.0F));
+
getWorldRootNode()->addChildNode(pMeshNode);
+
+
// Set mesh node location.
+
pMeshNode->setWorldLocation(glm::vec3(1.0F, 0.0F, 0.0F));
+
+
// Spawn environment node.
+
const auto pEnvironmentNode = sgc::makeGc<EnvironmentNode>();
+
getWorldRootNode()->addChildNode(pEnvironmentNode);
+
+
// Configure environment settings.
+
pEnvironmentNode->setAmbientLight(glm::vec3(0.1F, 0.1F, 0.1F)); // add small ambient lighting
+
});
+
}
+

Note that your world can only have 1 active environment node. If you will spawn another environment node you will get a warning in the logs that will tell you that settings of your newly spawned environment node will be ignored.

+

+Creating a character and working with input

+

+Creating a simple flying character node

+

In this section we will start with the most simplest character node: a node that has a camera and can fly around using WASD and mouse movement.

+

Let's create new files FlyingCharacter.h and FlyingCharacter.cpp inside of our new directory named private/nodes to our library target (we pick our library target since generally library targets will contain all functionality (so that it can be used in multiple executable targets such as tests) while executable targets generally will only contain main.cpp). Open CMakeLists.txt of your library target and add new files to PROJECT_SOURCES:

+
## `CMakeLists.txt`
+
## ... some code here ...
+
+
## Specify project sources.
+
set(PROJECT_SOURCES
+
## ... some files here ...
+
private/nodes/FlyingCharacter.h
+
private/nodes/FlyingCharacter.cpp
+
## add your .h/.cpp files here
+
)
+
+
## Define target.
+
add_library(${PROJECT_NAME} STATIC ${PROJECT_SOURCES})
+
+
## ... some code here ...
+

Now make sure CMake configuration was run, for example, Qt Creator runs CMake configuration after your make modifications to a CMakeLists.txt file and save it.

+

Now let's create our character node. We have two choises: we can derive our flying character node from CameraNode (it derives from SpatialNode so it has a location/rotation/scale in 3D world) or derive from SpatialNode and attach a CameraNode to it. Since more complicated characters will require multiple nodes such as: collision node, mesh node, camera node that will be somehow attached we will derive from SpatialNode and demonstrate how you can attach a CameraNode.

+

We will start with the most basic node header file:

+
// FlyingCharacter.h
+
+
#pragma once
+
+
// Custom.
+
#include "game/nodes/SpatialNode.h"
+
+
// Using engine namespace.
+
using namespace ne;
+
+
class FlyingCharacterNode : public SpatialNode {
+
public:
+
FlyingCharacterNode();
+
FlyingCharacterNode(const std::string& sNodeName);
+
+
virtual ~FlyingCharacterNode() override = default;
+
};
+
Definition: SpatialNode.h:12
+

As you can see we created 2 constructors, engine's node classes have 2 constructors (1 without a name and 1 with a name) so we will also define 2 constructors just to be consistent with the engine (although you are not required to do this).

+

Now the .cpp file:

+
// FlyingCharacter.cpp
+
+
#include "FlyingCharacter.h"
+
+
FlyingCharacterNode::FlyingCharacterNode() : FlyingCharacterNode("Flying Character Node") {}
+
+
FlyingCharacterNode::FlyingCharacterNode(const std::string& sNodeName) : SpatialNode(sNodeName) {
+
// constructor logic
+
}
+

Engine's nodes do the same thing as we did here: their constructor without parameters is delegating constructor that calls constructor with a name and provides a default node name (and does nothing). The actual construction logic happens in the constructor that accepts a node name.

+

Now let's add reflection to our node so that the editor will be able to recognize our node and the engine will be able to save/load our node when we are using it as part of some node tree.

+
// FlyingCharacter.h
+
+
#pragma once
+
+
// Custom.
+
#include "game/nodes/SpatialNode.h"
+
+
#include "FlyingCharacter.generated.h"
+
+
using namespace ne;
+
+
class RCLASS(Guid("0f84de3a-b5bb-42c7-aeea-aef89d31ed63")) FlyingCharacterNode : public SpatialNode {
+
public:
+
FlyingCharacterNode();
+
FlyingCharacterNode(const std::string& sNodeName);
+
+
virtual ~FlyingCharacterNode() override = default;
+
+
FlyingCharacterNode_GENERATED
+
};
+
+
File_FlyingCharacter_GENERATED
+

Note

+

FlyingCharacterNode_GENERATED and File_FlyingCharacter_GENERATED are different, one defines a Node class and the other defines a file name.

+
+

We followed instructions from one of the previous sections in the manual where we discussed reflection. Also don't forget to update our .cpp file:

+
// FlyingCharacter.cpp
+
+
#include "FlyingCharacter.h"
+
+
#include "FlyingCharacter.generated_impl.h" // <- new include, should be last
+
+
FlyingCharacterNode::FlyingCharacterNode() : FlyingCharacterNode("Flying Character Node") {}
+
+
FlyingCharacterNode::FlyingCharacterNode(const std::string& sNodeName) : SpatialNode(sNodeName) {
+
// constructor logic
+
}
+

As we said earlier your IDE might highlight new code as errors since the reflection headers were not generated yet. It's compile our project so that reflection headers will be generated.

+

Node

+

‍If your compilation fails at ‘Cannot open include file: 'FlyingCharacter.generated.h’: No such file or directory` this might indicate that either the reflection generator was not run or your CMake target does not have reflection generator enabled - see one of the previous sections about reflection for possible solutions.

+
+

Now before moving to handling user input let's add a camera node. There are several ways on how we can do this and we will discuss various ways in one of the following sections, for now let's just create a camera node in our character's constructor. Let's create a new field in our class to store a gc pointer to the camera node:

+
// FlyingCharacter.h
+
+
#pragma once
+
+
// Custom.
+
#include "game/nodes/SpatialNode.h"
+
+
#include "FlyingCharacter.generated.h"
+
+
using namespace ne;
+
+
namespace ne {
+
class CameraNode;
+
}
+
+
class RCLASS(Guid("0f84de3a-b5bb-42c7-aeea-aef89d31ed63")) FlyingCharacterNode : public SpatialNode {
+
public:
+
FlyingCharacterNode();
+
+
FlyingCharacterNode(const std::string& sNodeName);
+
+
virtual ~FlyingCharacterNode() override = default;
+
+
private:
+
sgc::GcPtr<CameraNode> pCameraNode;
+
+
FlyingCharacterNode_GENERATED
+
};
+
+
File_FlyingCharacter_GENERATED
+
Definition: CameraNode.h:11
+

Note

+

‍We also added forward declaration of the camera node type class CameraNode;.

+
+

Since nodes only use gc pointers we use it instead of some other smart pointer types.

+

Now let's create a camera node in our constructor:

+
#include "FlyingCharacter.h"
+
+
// Custom.
+
#include "game/nodes/CameraNode.h"
+
+
#include "FlyingCharacter.generated_impl.h"
+
+
FlyingCharacterNode::FlyingCharacterNode() : FlyingCharacterNode("Flying Character Node") {}
+
+
FlyingCharacterNode::FlyingCharacterNode(const std::string& sNodeName) : SpatialNode(sNodeName) {
+
// Create our camera node.
+
pCameraNode = sgc::makeGc<CameraNode>("Player Camera");
+
+
// Attach the camera to the character.
+
addChildNode(pCameraNode, AttachmentRule::KEEP_RELATIVE, AttachmentRule::KEEP_RELATIVE);
+
}
+

Now let's compile our program and make sure we have a world, in our GameInstance::onGameStarted create an empty world:

+
// MyGameInstance.cpp
+
#include "MyGameInstance.h"
+
+
#include "game/nodes/MeshNode.h"
+
#include "misc/PrimitiveMeshGenerator.h"
+
#include "nodes/FlyingCharacter.h"
+
+
void MyGameInstance::onGameStarted() {
+
// Create world.
+
createWorld([this](const std::optional<Error>& optionalWorldError) {
+
// Check if there was an error.
+
if (optionalWorldError.has_value()) [[unlikely]] {
+
auto error = optionalWorldError.value();
+
error.addCurrentLocationToErrorStack();
+
error.showError();
+
throw std::runtime_error(error.getFullErrorMessage());
+
}
+
+
// Prepare a sample mesh.
+
const auto pMeshNode = sgc::makeGc<MeshNode>();
+
pMeshNode->setMeshData(PrimitiveMeshGenerator::createCube(1.0F));
+
+
// Spawn mesh node.
+
getWorldRootNode()->addChildNode(pMeshNode);
+
pMeshNode->setWorldLocation(glm::vec3(1.0F, 0.0F, 0.0F));
+
+
// Spawn character node.
+
const auto pCharacter = sgc::makeGc<FlyingCharacterNode>();
+
getWorldRootNode()->addChildNode(pCharacter);
+
pCharacter->setWorldLocation(glm::vec3(-1.0F, 0.0F, 0.0F));
+
});
+
}
+

If you would compile and run your project now you still wouldn't be able to see anything. This is because we need to explicitly make character's camera active.

+

The documentation for CameraNode::makeActive says that "Only spawned camera nodes can be primary (active), otherwise an error will be shown." let's then override Node::onSpawning in our character. Add the following code to our character's header file:

+
protected:
+
virtual void onSpawning() override;
+

The documentation for Node::onSpawning says "This node will be marked as spawned before this function is called." this means that when Node::onSpawning is called our node is already considered as spawned. Also the documentation says "If overriding you must call the parent's version of this function first (before executing your login) to execute parent's logic." so let's implement this function. In the .cpp file of our character add the following code:

+
void FlyingCharacterNode::onSpawning() {
+
SpatialNode::onSpawning(); // call super class
+
+
pCameraNode->makeActive(); // make camera active
+
}
+

If you would compile and run your project now you will get an error saying "camera node "Player Camera" needs to be spawned in order to make it the active camera". If we would look at the documentation for Node::onSpawning again, we will see that it also says "This function is called before any of the child nodes are spawned. If you need to do some logic after child nodes are spawned use @ref onChildNodesSpawned." and since the camera node is a child node of our character when character node is spawning its child nodes are still waiting to be spawned. Thus let's use onChildNodesSpawned instead.

+

Replace onSpawning function with onChildNodesSpawned:

+
void FlyingCharacterNode::onChildNodesSpawned() {
+
SpatialNode::onChildNodesSpawned(); // also change super call
+
+
pCameraNode->makeActive();
+
}
+

Now compile and run your project. There should be no errors but still black screen. This is because we forgot about the lighting. Let's create the Sun for our world. In our game instance add code to spawn a directional light:

+
// MyGameInstance.cpp
+
#include "MyGameInstance.h"
+
+
#include "game/nodes/MeshNode.h"
+
#include "misc/PrimitiveMeshGenerator.h"
+
#include "nodes/FlyingCharacter.h"
+
#include "game/nodes/light/DirectionalLightNode.h" // <- new include
+
#include "math/MathHelpers.hpp" // <- new include
+
+
void MyGameInstance::onGameStarted() {
+
// Create world.
+
createWorld([this](const std::optional<Error>& optionalWorldError) {
+
// ... some code here ...
+
+
// Spawn character node.
+
const auto pCharacter = sgc::makeGc<FlyingCharacterNode>();
+
getWorldRootNode()->addChildNode(pCharacter);
+
pCharacter->setWorldLocation(glm::vec3(-1.0F, 0.0F, 0.0F));
+
+
// Spawn directional light.
+
const auto pDirectionalLightNode = sgc::makeGc<DirectionalLightNode>();
+
pDirectionalLightNode->setWorldRotation(
+
MathHelpers::convertDirectionToRollPitchYaw(glm::normalize(glm::vec3(1.0F, -1.0F, -1.0F))));
+
getWorldRootNode()->addChildNode(pDirectionalLightNode);
+
});
+
}
+

You can also add other types of light sources or configure ambient lighting using EnvironmentNode but we will stick with the minimum for now.

+

If you run your project now you should see a cube. Now close your project, look at your console/logs and make sure there are no warnings/errors reported in the end.

+

We can now continue and work on handling user input to allow our character to fly.

+

+Working with user input

+

+Input events

+

The usual way to handle user input is by binding to action/axis events and doing your processing once these events are triggered.

+

Each input event (action/axis event) is a pair:

    +
  • action event contains:
      +
    • action ID (unsigned int, for example 0, 1, 2, ...)
    • +
    • array of keys (for example key W and ArrowUp) that trigger the event
    • +
    +
  • +
  • axis event contains:
      +
    • axis ID (unsigned int, for example 0, 1, 2, ...)
    • +
    • array of key pairs (for example W and S, ArrowUp and ArrowDown) that trigger that event and define +1.0 and -1.0 states of the axis event
    • +
    +
  • +
+

Action events are used for input that can only have 2 states: pressed and not pressed (for example a jump action), and axis events are used for input that can have a "smooth"/floating state (from -1.0 to +1.0, think about gamepad thumbsticks or W/S button combination for moving forward/backward).

+

Action events are a perfect case for, say, Jump or Fire/Shoot event since those can only have 2 states: on and off. So when you use an action event your input callback will receive input as a bool value (pressed/not pressed).

+

Axis events can be used for gamepad input and to replace 2 keyboard action events. You can have 2 action events: "moveForward" on W and "moveBackward" on S or just 1 axis event "moveForward" with W as +1.0 input and S as -1.0 input. So when you use an axis event your input callback will receive input as a float value (from +1.0 to -1.0).

+

Let's consider 2 examples for axis events:

    +
  • If we have gamepad thumbstick we can use 2 axis events: one for X movement and one for Y movement. As you might expect the X movement axis event will trigger +1.0 value when you move your thumbstick fully to the right and your axis event will trigger -1.0 when your thumbstick is moved fully to the left. You will receive 0.0 input when the thumbstick remains in its default (centered) state.
  • +
  • If you use a keyboard for moving your character you can use 2 axis events: one for right/left movement and one for forward/backward movement. When the user presses the button for moving forward you will receive +1.0 value and when the user presses the button for moving backward you will receive -1.0 value, same goes for right/left movement. When no button is pressed you will receive 0.0 value. For movement, since it has 2 directions on each axis it's better to use one axis event for each direction instead of 2 action events for each direction to simplify your code. In addition if in the future you will decide to add gamepad support if you have axis events for movement it will be very easy to bind gamepad input to movement while if you use action events you would have to rewrite them to use axis events.
  • +
+

Note

+

‍A so-called "repeat" input is disabled in the engine. "Repeat" input happens when use hold some button, while you hold it the window keeps receiving "repeat" input events with this button but the engine will ignore them and so if you will hold a button only pressed/released events will be received by your code.

+
+

Note

+

‍We don't have gamepad support yet.

+
+

Mouse movement is handled using GameInstance::onMouseMove function or Node::onMouseMove function. There are other mouse related functions like onMouseScrollMove that you might find useful.

+

+Handling input event IDs

+

In the next sections you will learn that you can bind to input events in game instance and in nodes. As it was said earlier input events use IDs to be distinguished. This means that you need to have an application-global collection of unique IDs for input events.

+

Prefer to describe input event IDs of your application in a separate file using enums, for example:

+
// GameInputEventIds.hpp
+
+
#pragma once
+
+
struct GameInputEventIds {
+
enum class Action : unsigned int {
+
CAPTURE_MOUSE_CURSOR = 0, //< Capture mouse cursor.
+
INCREASE_CAMERA_SPEED, //< Increase camera's speed.
+
DECREASE_CAMERA_SPEED, //< Decrease camera's speed.
+
};
+
+
enum class Axis : unsigned int {
+
MOVE_CAMERA_FORWARD = 0, //< Move camera forward/back.
+
MOVE_CAMERA_RIGHT, //< Move camera right/left.
+
MOVE_CAMERA_UP, //< Move camera up/down.
+
};
+
};
+

This file will store all input IDs that your game needs, even if you have switchable controls like "walking" or "in vehice" all input event IDs should be generally stored like that to make sure they all have unique IDs because all your input events will be registered in the same input manager.

+

Note

+

‍We will talk about switchable controls like "walking" or "in vehice" and how to handle them in one of the next sections.

+
+

+Binding to input events in game instance

+

Since input events are identified using unique IDs we should create a special struct for our input IDs:

+
// GameInputEventIds.hpp
+
+
#pragma once
+
+
struct GameInputEventIds {
+
enum class Action : unsigned int {
+
ACTION_EVENT1 = 0,
+
};
+
+
enum class Axis : unsigned int {
+
AXIS_EVENT1 = 0,
+
};
+
};
+

Let's see how we can bind to input events in our GameInstance class.

+
// MyGameInstance.cpp
+
+
#include "GameInputEventIds.hpp"
+
+
void MyGameInstance::MyGameInstance(
+
Window* pWindow, GameManager* pGameManager, InputManager* pInputManager)
+
: GameInstance(pWindow, pGameManager, pInputManager) {
+
// Register action event.
+
auto optionalError = pInputManager->addActionEvent(
+
static_cast<unsigned int>(GameInputEventIds::Action::ACTION_EVENT1),
+
{KeyboardKey::KEY_F});
+
if (optionalError.has_value()) [[unlikely]] {
+
// ... handle error ...
+
}
+
+
// Register axis event.
+
optionalError = pInputManager->addAxisEvent(
+
static_cast<unsigned int>(GameInputEventIds::Action::AXIS_EVENT1),
+
{{KeyboardKey::KEY_A, KeyboardKey::KEY_D}});
+
if (optionalError.has_value()) [[unlikely]] {
+
// ... handle error ...
+
}
+
+
// Now let's bind callback functions to our events.
+
+
// Bind action events.
+
{
+
const auto pActionEvents = getActionEventBindings();
+
std::scoped_lock guard(pActionEvents->first);
+
+
pActionEvents->second[static_cast<unsigned int>(GameInputEventIds::Action::ACTION_EVENT1)]
+
= [](KeyboardModifiers modifiers, bool bIsPressedDown) {
+
Logger::get().info(std::format("action event triggered, state: {}", bIsPressedDown));
+
};
+
}
+
+
// Bind axis events.
+
{
+
const auto pAxisEvents = getAxisEventBindings();
+
std::scoped_lock guard(pAxisEvents->first);
+
+
pAxisEvents->second[static_cast<unsigned int>(GameInputEventIds::Action::AXIS_EVENT1)]
+
= [](KeyboardModifiers modifiers, float input) {
+
Logger::get().info(std::format("axis event triggered, value: {}", input));
+
};
+
}
+
}
+
std::optional< Error > addActionEvent(unsigned int iActionId, const std::vector< std::variant< KeyboardKey, MouseButton > > &vKeys)
Definition: InputManager.cpp:14
+
std::optional< Error > addAxisEvent(unsigned int iAxisEventId, const std::vector< std::pair< KeyboardKey, KeyboardKey > > &vAxis)
Definition: InputManager.cpp:40
+
Definition: KeyboardKey.hpp:10
+

As you can see we are using game instance constructor and we don't create a separate function to "add" our input events. This is done intentionally because once input events were added you should not add the same input events again, thus no function - we don't want anybody to accidentally add input events again.

+

At this point you will be able to trigger registered action/axis events by pressing the specified keyboard buttons.

+

Note

+

‍Although you can process input events in GameInstance it's not really recommended because input events should generally be processed in nodes such as in your character node so that your nodes will be self-contained and modular.

+
+

Note

+

‍You can register/bind input events even when world does not exist or not created yet.

+
+

Note

+

‍You can bind to input events before registering input events - this is perfectly fine.

+
+

+Binding to input events in nodes

+

This is the most common use case for input events. The usual workflow goes like this:

    +
  1. Register action/axis events with some default keys in your GameInstance constructor.
  2. +
  3. Bind to input processing callbacks in your nodes.
  4. +
+

Let's define 2 axis events in our game instance: one for moving right/left and one for moving forward/backward:

+
// GameInputEventIds.hpp
+
+
#pragma once
+
+
struct GameInputEventIds {
+
enum class Action : unsigned int {
+
CLOSE_APP = 0,
+
};
+
+
enum class Axis : unsigned int {
+
MOVE_RIGHT = 0,
+
MOVE_FORWARD,
+
};
+
};
+

Now let's register and bind to those events:

+
#include "GameInputEventIds.hpp"
+
+
void MyGameInstance::MyGameInstance(
+
Window* pWindow, GameManager* pGameManager, InputManager* pInputManager)
+
: GameInstance(pWindow, pGameManager, pInputManager) {
+
// Register "moveRight" axis event.
+
auto optionalError = pInputManager->addAxisEvent(
+
static_cast<unsigned int>(GameInputEventIds::Axis::MOVE_RIGHT),
+
{{KeyboardKey::KEY_D, KeyboardKey::KEY_A}});
+
if (optionalError.has_value()) [[unlikely]] {
+
// ... handle error ...
+
}
+
+
// Register "moveForward" axis event.
+
optionalError = pInputManager->addAxisEvent(
+
static_cast<unsigned int>(GameInputEventIds::Axis::MOVE_FORWARD),
+
{{KeyboardKey::KEY_W, KeyboardKey::KEY_S}});
+
if (optionalError.has_value()) [[unlikely]] {
+
// ... handle error ...
+
}
+
+
// Register "closeApp" action event.
+
optionalError = pInputManager->addActionEvent(
+
static_cast<unsigned int>(GameInputEventIds::Action::CLOSE_APP),
+
{KeyboardKey::KEY_ESCAPE});
+
if (optionalError.has_value()) [[unlikely]] {
+
// ... handle error ...
+
}
+
}
+

In our node create 2 new private fields and one new function that we will use:

+
protected:
+
virtual void onBeforeNewFrame(float timeSincePrevFrameInSec) override;
+
+
private:
+
glm::vec2 lastInputDirection = glm::vec2(0.0F, 0.0F);
+
+
static constexpr float movementSpeed = 5.0F;
+

Now in our node's constructor let's bind to input events. We don't need to care about register/bind order because you can bind to input events before registering input events - this is perfectly fine.

+
// FlyingCharacter.cpp
+
+
#include "FlyingCharacter.h"
+
+
// Custom.
+
#include "game/nodes/CameraNode.h"
+
#include "GameInputEventIds.hpp"
+
+
#include "FlyingCharacter.generated_impl.h"
+
+
FlyingCharacterNode::FlyingCharacterNode() : FlyingCharacterNode("Flying Character Node") {}
+
+
FlyingCharacterNode::FlyingCharacterNode(const std::string& sNodeName) : SpatialNode(sNodeName) {
+
// Create our camera node.
+
pCameraNode = sgc::makeGc<CameraNode>("Player Camera");
+
+
// Attach the camera to the character.
+
addChildNode(pCameraNode, AttachmentRule::KEEP_RELATIVE, AttachmentRule::KEEP_RELATIVE);
+
+
// Make our node to receive user input. Input will be received only when the node is spawned.
+
setIsReceivingInput(true);
+
+
// Make our node to be called every frame so that we can apply input to movement.
+
// Node will be called every frame only while it's spawned.
+
setIsCalledEveryFrame(true);
+
+
// Bind to axis events.
+
{
+
const auto pAxisEvents = getAxisEventBindings();
+
std::scoped_lock guard(pAxisEvents->first);
+
+
pAxisEvents->second[static_cast<unsigned int>(GameInputEventIds::Axis::MOVE_FORWARD)]
+
= [this](KeyboardModifiers modifiers, float input) {
+
lastInputDirection.x = input;
+
};
+
+
pAxisEvents->second[static_cast<unsigned int>(GameInputEventIds::Axis::MOVE_RIGHT)]
+
= [this](KeyboardModifiers modifiers, float input) {
+
lastInputDirection.y = input;
+
};
+
}
+
}
+
+
void FlyingCharacterNode::onChildNodesSpawned() {
+
SpatialNode::onChildNodesSpawned();
+
+
pCameraNode->makeActive();
+
}
+
+
void FlyingCharacterNode::onBeforeNewFrame(float timeSincePrevFrameInSec) {
+
// Check for early exit.
+
// Also make sure input direction is not zero to avoid NaNs during `normalize` (see below).
+
if (glm::all(glm::epsilonEqual(lastInputDirection, glm::vec2(0.0F, 0.0F), 0.0001F))) {
+
return;
+
}
+
+
// Normalize direction to avoid speed up on diagonal movement and apply speed.
+
const auto movementDirection =
+
glm::normalize(lastInputDirection) * timeSincePrevFrameInSec * movementSpeed;
+
+
// Get node's world location.
+
auto newWorldLocation = getWorldLocation();
+
+
// Calculate new world location.
+
newWorldLocation += getWorldForwardDirection() * movementDirection.x;
+
newWorldLocation += getWorldRightDirection() * movementDirection.y;
+
+
// Apply movement.
+
setWorldLocation(newWorldLocation);
+
}
+

As you can see we have decided to apply input movement not instantly but once a frame. The motivation for this is that we now have timeSincePrevFrameInSec (also known as deltatime - time in seconds that has passed since the last frame was rendered) to eliminate a speed up that occurs on diagonal movement (length of the vector becomes ~1.41 on diagonal movement while we expect the length of the vector to be in the range [0.0; 1.0]).

+

In addition to this it may happen that a button is pressed/released multiple times during one frame (this is even more likely when use have a gamepad and use thumbsticks for movement) which will cause our input callbacks to be triggered multiple times during one frame, so if we process the movement instantly this might affect the performance. Note that movement input is special because we can process it like that but it does not mean that all other input should be handled like this, for example an action to Fire/Shoot should be processed instantly or an action Open/Interact should also be processed instantly, in addition "look" or "rotation" mouse events should also be processed instantly.

+

Compile and run your project now, you can try modifying movementSpeed variable to fit your needs or even make it non-constant if you want.

+

Let's now make our character to look/rotate using mouse movement. Add a new protected function and a private field in your node:

+
protected:
+
virtual void onMouseMove(double xOffset, double yOffset) override;
+
+
private:
+
static constexpr double rotationSpeed = 0.1;
+

And implementation:

+
void FlyingCharacterNode::onMouseMove(double xOffset, double yOffset) {
+
auto currentRotation = getRelativeRotation();
+
+
currentRotation.z += static_cast<float>(xOffset * rotationSpeed); // modify "yaw"
+
currentRotation.y -= static_cast<float>(yOffset * rotationSpeed); // modify "pitch"
+
+
setRelativeRotation(currentRotation);
+
}
+

Note

+

‍Make sure to use relative rotation and not world rotation.

+
+

And let's hide the cursor.

+
void FlyingCharacterNode::onChildNodesSpawned() {
+
SpatialNode::onChildNodesSpawned();
+
+
// Hide (capture) mouse cursor.
+
getGameInstance()->getWindow()->setCursorVisibility(false);
+
+
// Enable camera.
+
pCameraNode->makeActive();
+
}
+

Compile and run. You should be able to rotate our character using mouse input.

+

As the final step let's finish by implementing "closeApp" action event, this one is very simple:

+
FlyingCharacterNode::FlyingCharacterNode(const std::string& sNodeName) : SpatialNode(sNodeName) {
+
// ... some code here ...
+
+
// Bind to axis events.
+
// ... some code here ...
+
+
// Bind to action events.
+
{
+
const auto pActionEvents = getActionEventBindings();
+
std::scoped_lock guard(pActionEvents->first);
+
+
pActionEvents->second[static_cast<unsigned int>(GameInputEventIds::Action::CLOSE_APP)]
+
= [](KeyboardModifiers modifiers, bool bIsPressed) {
+
getGameInstance()->getWindow()->close();
+
};
+
}
+
}
+

If you read the documentation for Node::setIsReceivingInput you would know that we can change whether we receive input or not while spawned. This can be handy if your game has (for example) a car that your character can drive, once your character enters a car you can use PlayerNode::setIsReceivingInput(false) and CarNode::setIsReceivingInput(true) and when the character leaves a car do the opposite CarNode::setIsReceivingInput(false) and PlayerNode::setIsReceivingInput(true). Although if your character can still use some of his controls while driving a car you might want to implement some states like bool bIsDrivingCar and in some input callbacks in PlayerNode check this variable to decide whether an action should be executed or not.

+

This will be enough for now. Later we will talk about using InputManager in a slightly better way and also talk about saving/loading inputs.

+

+Working with timers

+

+Timers and GameInstance

+

Let's consider an example where you need to trigger some logic after some time in your GameInstance:

+
void MyGameInstance::onGameStarted() override {
+
// Create a timer.
+
pTimer = createTimer("custom");
+
+
// (optional) Let's set timer to wait 1 second (1000 ms) before calling our callback.
+
pTimer->setCallbackForTimeout(1000, []() {
+
Logger::get().info("Hello from timer callback!");
+
+
// Timer was not set as `looping` so there is no need to explicitly stop it.
+
});
+
+
// Start the timer.
+
pTimer->start();
+
+
// ... some code here ...
+
+
// Let's see how much time has passed.
+
const auto iTimePassedInMs = pTimer->getElapsedTimeInMs();
+
}
+

As the documentation for Timer::setCallbackForTimeout says your callback will be called on the main thread so can safely use all engine functions from it. Moreover, the engine does some additional work for you and guarantees that this callback will never be called on deleted GameInstance (see function documentation for more details).

+

We store a Timer* pTimer = nullptr in the header file of our game instance to reuse that timer. There's currently no removeTimer function (and may even never be) so it might be a good idea to reuse your timers instead of creating new timers again and again. Returned raw pointer Timer* is guaranteed to be valid while the game instance is valid.

+

Using timer callbacks in game instance is pretty safe and you generally shouldn't worry about anything. And as always if you have any questions you might look at the documentation of the timer class and at the timer tests at src/engine_tests/game/GameInstance.cpp.

+

+Timers and Node

+

Same timer functions are used in nodes:

+
MyDerivedNode() {
+
// Create a timer in constructor to reuse it later.
+
pTimer = createTimer("custom");
+
};
+
+
void MyDerivedNode::onSpawning() override{
+
Node::onSpawning(); // don't forget to call parent's version
+
+
// (optional) Let's set timer to wait 1 second (1000 ms) before calling our callback.
+
pTimer->setCallbackForTimeout(1000, []() {
+
Logger::get().info("Hello from timer callback!");
+
+
// Timer was not set as `looping` so there is no need to explicitly stop it.
+
});
+
+
// Start the timer.
+
pTimer->start();
+
+
// ... some code here ...
+
+
// Let's see how much time has passed.
+
const auto iTimePassedInMs = pTimer->getElapsedTimeInMs();
+
}
+

Some things about timers in nodes:

    +
  • Timers in nodes can only be Timer::started while the node is spawned any attempt to start a timer while the node is despawned (or not spawned yet) will result in an error being logged.
  • +
  • Created timers will be automatically stopped before Node::onDespawning.
  • +
  • Timer's callback will only be called while the timer is running and your node is spawned. This means that when your timer's callback is started you know that the node is still spawned.
  • +
  • Timer's callback will be called on the main thread.
  • +
+

Again, we store a Timer* pTimer = nullptr in the header file of our node to reuse that timer. There's currently no removeTimer function (and may even never be) so it might be a good idea to reuse your timers instead of creating new timers again and again. Returned raw pointer Timer* is guaranteed to be valid while the node is valid.

+

As with game instance using timer callbacks in nodes is pretty safe and you generally shouldn't worry about anything. And as always if you have any questions you might look at the documentation of the timer class and at the timer tests at src/engine_tests/misc/Timer.cpp.

+

+Node callbacks (including asynchronous tasks)

+

In your game you would most likelly want to use callbacks to trigger custom logic in nodes when some event happens, for example when your character's collision hits/overlaps with something you might want the collision node to notify the character node to do some custom logic.

+

When you think of callbacks you might think of std::function but the problem is that std::function has no guarantees if the node is spawned or not, or if it was deleted (freed). In order to avoid issues like that the engine provides NodeFunction - it's an std::function wrapper used for Node functions/lambdas with an additional check (compared to the usual std::function): once the callback is called NodeFunction will first safely check if the node, the callback function points to, is still spawned or not, and if not spawned then the callback function will not be called to avoid running functions on despawned nodes or hitting deleted memory.

+

That "safely check" means that the engine does not use your node for the check because the node might be deleted and calling any functions on it might lead to undefined behaviour.

+

So when you need callbacks for triggering custom logic in Nodes it's highly recommended to use the NodeFunction instead of the std::function.

+

Additionally, when you use asynchronous requests (for example when you make asynchronous requests to remote backend server) for triggering some Node callbacks to process asynchronous results you should also use NodeFunction. This would protect you from running into despawned/deleted nodes if the asynchronous result was received unexpectedly late (for example) so you don't need to check if the node is still valid or not. Your code then will look like this:

+
// Inside of some `Node`:
+
+
// note that `Node::getNodeId()` below will return empty if the node is not spawned and
+
// we use `.value()` directly just to simplify our example
+
auto onFinished = NodeFunction<void(bool, int)>(getNodeId().value(), [this](bool bSomeParameter, int iSomeParameter){
+
// Asynchronous call was finished successfully and `this` node is still spawned.
+
// Do some logic here.
+
});
+
+
SomeSystem->DoAsynchronousQuery(
+
someData,
+
[onFinished](bool bSomeParameter, int iSomeParameter){
+
onFinished(bSomeParameter, iSomeParameter); // won't call the callback if the node is despawned or deleted
+
});
+
Definition: NodeFunction.hpp:11
+

+Safely using the publisher-subscriber pattern with nodes

+

Every game has custom game events, in this engine some nodes can subscribe to a specific publisher object, this way subscriber nodes can be notified when a specific event happens. For example, if your character node wants to know when its collision hits something we can use the publisher-subscriber pattern. When the publisher object decides that the event has happend it notifies all subscriber nodes and calls NodeFunction callbacks of all subscribed nodes.

+

In the engine the publisher-subscriber pattern is implemented by the NodeNotificationBroadcaster class. Node class already has a built-in functionality to use these broadcasters. You can use Node::createNotificationBroadcaster to create such broadcasters, allow other nodes to subscribe by specifying their NodeFunction callbacks and notify subscribers by calling the broadcast method. Here is a simplified example:

+
class MyNode : public Node{
+
public:
+
MyNode(){
+
// Create broadcaster.
+
pEventBroadcaster = createNotificationBroadcaster<void(bool, int)>();
+
}
+
virtual ~MyNode() override = default;
+
+
// Allow other nodes to subscribe to the event.
+
// Return a unique binding ID if other node wants to unsubscribe later.
+
size_t subscribeToEvent(const NodeFunction<void(bool, int)>& callback){
+
return pEventBroadcaster->subscribe(callback);
+
}
+
+
// Allow other nodes to unsubscribe from the event.
+
void unsubscribeFromEvent(size_t iBindingId){
+
pEventBroadcaster->unsubscribe(iBindingId);
+
}
+
+
private:
+
void onAfterSomeGameEvent(bool bSomeParameter, int iSomeParameter){
+
// Notify subscribers (queues a deferred task in which calls all subscribed callbacks).
+
pEventBroadcaster->broadcast(bSomeParameter, iSomeParameter);
+
}
+
+
NodeNotificationBroadcaster<void(bool, int)>* pEventBroadcaster = nullptr;
+
}
+
+
// inside of some other spawned (!) node (otherwise `getNodeId()` returns empty):
+
const auto iBindingId = pPublisherNode->subscribeToEvent(
+
NodeFunction<void(bool, int)>(getNodeId().value(), [this](bool bSomeParameter, int iSomeParameter){
+
// event occurred
+
}));
+
+
// ... later (if we need to) ...
+
+
pPublisherNode->unsubscribeFromEvent(iBindingId);
+
Definition: NodeNotificationBroadcaster.hpp:45
+
Definition: Node.h:39
+

Note that you don't need to unsubscribe when your subscribed node is being despawned/destroyed as this is done automatically. Each broadcast call removes callbacks of despawned nodes.

+

Note

+

‍Because broadcast call simply loops over all registered callbacks extra care should be taken when you subscribe to pair events such as "on started overlapping" / "on finished overlapping" because the order of these events may be incorrect in some special situations. When subscribing to such "pair" events it's recommended to add checks in the beginning of your callbacks that make sure the order is correct (as expected), otherwise show an error message so that you will instantly notice that and fix it.

+
+

+Saving and loading user's input settings

+

InputManager allows creating input events and axis events, i.e. allows binding names with multiple input keys. When working with input the workflow for creating, modifying, saving and loading inputs goes like this:

+
using namespace ne;
+
+
void MyGameInstance::onGameStarted(){
+
// On each game start, create action/axis events with default keys.
+
const std::vector<std::pair<KeyboardKey, KeyboardKey>> vMoveForwardKeys = {
+
std::make_pair<KeyboardKey, KeyboardKey>(KeyboardKey::KEY_W, KeyboardKey::KEY_S),
+
std::make_pair<KeyboardKey, KeyboardKey>(KeyboardKey::KEY_UP, KeyboardKey::KEY_DOWN)
+
};
+
+
auto optionalError = getInputManager()->addAxisEvent(
+
static_cast<unsigned int>(GameInputEventIds::Axis::MOVE_FORWARD),
+
vMoveForwardKeys);
+
if (optionalError.has_value()){
+
// ... handle error ...
+
}
+
+
// ... add more default events here ...
+
+
// After we defined all input events with default keys:
+
// Load modifications that the user previously saved (if exists).
+
constexpr auto pInputFilename = "input"; // filename "input" is just an example, you can use other filename
+
const auto pathToFile
+
= ConfigManager::getCategoryDirectory(ConfigCategory::SETTINGS) / pInputFilename
+
+ ConfigManager::getConfigFormatExtension();
+
if (std::filesystem::exists(pathToFile)){
+
optionalError = getInputManager()->loadFromFile(pInputFilename);
+
if (optionalError.has_value()){
+
// ... handle error ...
+
}
+
}
+
+
// Finished.
+
}
+
+
// Later, the user modifies some keys:
+
optionalError = getInputManager()->modifyAxisEventKey(
+
static_cast<unsigned int>(GameInputEventIds::Axis::MOVE_FORWARD),
+
oldKey,
+
newKey);
+
if (optionalError.has_value()){
+
// ... handle error ...
+
}
+
+
// The key is now modified in the memory (in the input manager) but if we restart our game the modified key will
+
// be the same (non-modified), in order to fix this:
+
+
// After a key is modified we save the modified inputs to the disk to load modified inputs on the next game start.
+
optionalError = getInputManager()->saveToFile(pInputFilename);
+
if (optionalError.has_value()){
+
// ... handle error ...
+
}
+

As it was shown InputManager can be acquired using GameInstance::getInputManager(), so both game instance and nodes (using getGameInstance()->getInputManager()) can work with the input manager.

+

+Configuring graphics settings

+

Graphics settings are configured using the RenderSettings class. In order to get render settings from a game instance you need to use the following approach:

+
void MyGameInstance::foo(){
+
// Get renderer.
+
const auto pRenderer = getWindow()->getRenderer();
+
+
// Get render settings.
+
const auto mtxRenderSettings = pRenderer->getRenderSettings();
+
std::scoped_lock guard(*mtxRenderSettings.first);
+
+
// Get supported render resolutions.
+
auto result = pRenderer->getSupportedRenderResolutions();
+
if (std::holds_alternative<Error>(result)){
+
// ... handle error ...
+
}
+
const auto supportedRenderResolutions = std::get<...>(std::move(result));
+
+
// ... display `supportedRenderResolutions` on screen ...
+
+
// Later, when user wants to change render resolution:
+
mtxRenderSettings.second->setRenderResolution(someRenderResolution);
+
}
+

When use change something in RenderSettings (for example render resolution) that change is instantly saved on the disk in the renderer config so you don't need to save them manually, on the next startup last applied settings will be restored.

+

You can find renderer's config file at:

    +
  • (on Windows) %localappdata%/nameless-engine/*yourtarget*/engine/render.toml
  • +
  • (on Linux) ~/.config/nameless-engine/*yourtarget*/engine/render.toml
  • +
+

Note

+

‍You can change values in the specified config files to quicky change settings for testing purposes. Note that changes made in the config files will only be applied locally (only for your computer).

+
+

Note that some render settings might not be supported depending on the OS/renderer/hardware, as we shown above some set functions would have a special remark in their documentation saying about what function to use to query supported values. Let's consider another example, this one uses anti-aliasing:

+
void MyGameInstance::foo(){
+
// Get renderer.
+
const auto pRenderer = getWindow()->getRenderer();
+
+
// Get render settings.
+
const auto mtxRenderSettings = pRenderer->getRenderSettings();
+
std::scoped_lock guard(*mtxRenderSettings.first);
+
+
// Get maximum supported AA quality.
+
auto result = mtxRenderSettings.second->getMaxSupportedAntialiasingQuality();
+
if (std::holds_alternative<Error>(result)){
+
// ... handle error ...
+
}
+
const auto maxQuality = std::get<AntialiasingQuality>(result);
+
+
// ... display all `AntialiasingQuality` values on the screen but don't exceed `maxQuality` ...
+
+
// Later, when user wants to change AA:
+
mtxRenderSettings.second->setAntialiasingQuality(selectedQuality);
+
}
+

As always if you forget something or pass unsupported value the engine will let you know by logging an error so pay attention to the logs/console.

+

+Saving and loading user's progress data

+

+Overview

+

There are 2 ways to save/load custom data:

    +
  • using ConfigManager (io/ConfigManager.h) - this approach is generally used when you have just 1-2 simple variables that you want to save or when you don't want to / can't create a type and use reflection
  • +
  • using reflection - this approach is generally used more often than ConfigManager and it provides great flexibility
  • +
+

Let's start with the most commonly used approach.

+

+Saving and loading data using reflection

+

+Overview

+

One of the previous sections of the manual taught you how to use reflection for your types so at this point you should know how to add reflection to your type. Now we will talk about additional steps that you need to do in order to use serialization/deserialization. As you might guess we will use some C++ types (that store some user data) and serialize them to file.

+

Reflection serialization uses TOML file format so if you don't know how this format looks like you can search it right now on the Internet. TOML format generally looks like INI format but with more features.

+

Let's consider an example that shows various serialization features and then explain some details:

+
// PlayerSaveData.cpp
+
+
#include "PlayerSaveData.generated_impl.h"
+
+
// PlayerSaveData.h
+
+
#pragma once
+
+
#include <string>
+
#include <vector>
+
#include <unordered_map>
+
#include "io/Serializable.h"
+
+
#include "PlayerSaveData.generated.h"
+
+
using namespace ne;
+
+
class RCLASS(Guid("a34a8047-d7b4-4c70-bb9a-429875a8cd26")) InventorySaveData : public Serializable {
+
public:
+
InventorySaveData() = default;
+
virtual ~InventorySaveData() override = default;
+
+
void addOneItem(unsigned long long iItemId) {
+
const auto it = items.find(iItemId);
+
+
if (it == items.end()) {
+
items[iItemId] = 1;
+
return;
+
}
+
+
it->second += 1;
+
}
+
+
void removeOneItem(unsigned long long iItemId) {
+
const auto it = items.find(iItemId);
+
if (it == items.end())
+
return;
+
+
if (it->second <= 1) {
+
items.erase(it);
+
return;
+
}
+
+
it->second -= 1;
+
}
+
+
unsigned long long getItemAmount(unsigned long long iItemId) {
+
const auto it = items.find(iItemId);
+
if (it == items.end())
+
return 0;
+
+
return it->second;
+
}
+
+
private:
+
RPROPERTY(Serialize)
+
std::unordered_map<unsigned long long, unsigned long long> items;
+
+
InventorySaveData_GENERATED
+
};
+
+
class RCLASS(Guid("36063853-79b1-41e6-afa6-6923c8b24811")) Ability : public Serializable {
+
public:
+
Ability() = default;
+
virtual ~Ability() override = default;
+
+
Ability(const std::string& sAbilityName) { this->sAbilityName = sAbilityName; }
+
+
RPROPERTY(Serialize)
+
std::string sAbilityName;
+
+
// ... maybe some other code/fields here ...
+
+
Ability_GENERATED
+
};
+
+
class RCLASS(Guid("36063853-79b1-41e6-afa6-6923c8b24815")) PlayerSaveData : public Serializable {
+
public:
+
PlayerSaveData() = default;
+
virtual ~PlayerSaveData() override = default;
+
+
RPROPERTY(Serialize)
+
std::string sCharacterName;
+
+
RPROPERTY(Serialize)
+
unsigned long long iCharacterLevel = 0;
+
+
RPROPERTY(Serialize)
+
unsigned long long iExperiencePoints = 0;
+
+
RPROPERTY(Serialize)
+
InventorySaveData inventory;
+
+
RPROPERTY(Serialize)
+
std::vector<std::unique_ptr<Ability>> vAbilities;
+
+
PlayerSaveData_GENERATED
+
};
+
+
File_PlayerSaveData_GENERATED
+
+
// ---------------------------------------
+
+
{
+
// Somewhere in the game code.
+
std::unique_ptr<PlayerSaveData> pPlayerSaveData = nullptr;
+
+
// ... if the user creates a new player profile ...
+
pPlayerSaveData = std::make_unique<PlayerSaveData>();
+
+
// Fill save data with some information.
+
pPlayerSaveData->sCharacterName = "Player 1";
+
pPlayerSaveData->iCharacterLevel = 42;
+
pPlayerSaveData->iExperiencePoints = 200;
+
pPlayerSaveData->vAbilities = {std::make_unique<Ability>("Fire"), std::make_unique<Ability>("Wind")};
+
pPlayerSaveData->inventory.addOneItem(42);
+
pPlayerSaveData->inventory.addOneItem(42); // now have two items with ID "42"
+
pPlayerSaveData->inventory.addOneItem(102);
+
+
// Prepare a new unique file name for the new save file.
+
const std::string sNewProfileName = ConfigManager::getFreeProgressProfileName();
+
+
// Serialize.
+
const auto pathToFile = ConfigManager::getCategoryDirectory(ConfigCategory::PROGRESS) / sNewProfileName;
+
const auto optionalError = pPlayerSaveData->serialize(pathToFile, true); // `true` to enable backup file
+
if (optionalError.has_value()) [[unlikely]] {
+
// ... handle error ...
+
}
+
}
+
+
// ... when the game is started next time ...
+
+
{
+
// Get all save files.
+
const auto vProfiles = ConfigManager::getAllFileNames(ConfigCategory::PROGRESS);
+
+
// ... say the user picks the first profile ...
+
const auto sProfileName = vProfiles[0];
+
+
// Deserialize.
+
const auto pathToFile = ConfigManager::getCategoryDirectory(ConfigCategory::PROGRESS) / sProfileName;
+
auto result = Serializable::deserialize<std::unique_ptr<PlayerSaveData>>(pathToFile);
+
if (std::holds_alternative<Error>(result)) [[unlikely]] {
+
// ... handle error ...
+
}
+
+
const auto pPlayerSaveData = std::get<std::unique_ptr<PlayerSaveData>>(std::move(result));
+
+
// Everything is deserialized:
+
assert(pPlayerSaveData->sCharacterName == "Player 1");
+
assert(pPlayerSaveData->iCharacterLevel == 42);
+
assert(pPlayerSaveData->iExperiencePoints == 200);
+
assert(pPlayerSaveData->vAbilities.size() == 2);
+
assert(pPlayerSaveData->vAbilities[0]->sAbilityName == "Fire");
+
assert(pPlayerSaveData->vAbilities[1]->sAbilityName == "Wind");
+
assert(pPlayerSaveData->inventory.getItemAmount(42) == 2);
+
assert(pPlayerSaveData->inventory.getItemAmount(102) == 1);
+
}
+

Let's now describe what needs to be do in order to use serialization and deserialization in your reflected type:

    +
  1. Derive from Serializable (io/Serializable.h) in order to have serialize/deserialize and similar functions. Note that base Node class already derives from Serializable so you might already derive from this class.
  2. +
  3. Make sure your type has a constructor without parameters (make sure that it's not deleted) as it's required for deserialization. Use can override Serializable::onAfterDeserialized to do post-deserialization logic (just make sure to read this function's docs first).
  4. +
  5. Don't forget to override destructor, for example: virtual ~T() override = default;.
  6. +
+
    +
  1. Add Guid property to your type's RCLASS/RSTRUCT macro with a random GUID (just search something like "generate GUID" on the Internet), this GUID will be saved in the file so that when the engine reads the file it will know what type to use. In debug builds when the engine starts it checks uniqueness of all GUIDs so you shouldn't care about GUID uniqueness.
  2. +
+
    +
  1. Mark fields that you want to be serialized/deserialized with Serialize property on RPROPERTY macro.
  2. +
  3. Make sure that all fields marked with RPROPERTY(Serialize) that have primitive types have initialization values, for example: long long iCharacterLevel = 0; otherwise you might serialize a "garbage value" (since primitive types don't have initialization unlike std::string for example) and then after deserialization be suprised to see a character of level -123215315115 or something like that.
  4. +
+

And here are some notes about serialization/deserialization:

    +
  • If you released your game and in some update you added a new Serialize field then everything (saving/loading) will work fine, the new field just needs to have initialization value for old save files that don't have this value (again, if it's a primitive type just initialize it otherwise you are fine).
  • +
  • If you released your game and in some update you removed/renamed some Serialize field then everything (saving/loading) will work fine and if some old save file will have that old removed/renamed field it will be ignored.
  • +
  • If you released your game it's highly recommended to not change your type's GUID otherwise the engine will not be able to deserialize the data since it will no longer know what type to use.
  • +
+

If you look in the file src/engine_lib/public/io/properties/SerializeProperty.h you might find that Serialize has a constructor that accepts FieldSerializationType which is FST_WITH_OWNER by default and as the documentation says it means that "Field is serialized in the same file as the owner object". There is also an option to use FST_AS_EXTERNAL_FILE or FST_AS_EXTERNAL_BINARY_FILE like so:

+
RPROPERTY(Serialize(FST_AS_EXTERNAL_BINARY_FILE)) // allow VCSs to treat this file in a special way
+
MeshData meshData;
+
Definition: MeshData.h:93
+

And again, as the documentation says it means that "Field is serialized in a separate file located next to the file of owner object. The only difference between these two is that `FST_AS_EXTERNAL_FILE` serializes into a `TOML` file and `FST_AS_EXTERNAL_BINARY_FILE` serializes into a binary file using special binary field serilaizers. Some fields from engine types are stored as external binary files in order to provide smaller file size and faster deserialization (although sacrificing readability of the file). Only fields of types that derive from `Serializable` can be marked with this type". Generally we use the default FST_WITH_OWNER but there might be situations where you might want to use additional options.

+

There are various types that you can mark as Serialize as you can see you can mark some primitive types, std::string, std::vector, std::unordered_map and more, but note that when we talk about containers (such as std::vector) their serialization depends on the contained type. Here is a small description of some types that you can use for serialization:

    +
  • bool
  • +
  • int
  • +
  • unsigned int
  • +
  • long long
  • +
  • unsigned long long
  • +
  • float
  • +
  • double
  • +
  • std::string
  • +
  • T (where T is any type that derives from Serializable)
  • +
  • and more!
  • +
+

See the directory src/engine_lib/public/io/serializers for available field serializers (you don't need to use them directly, they will be automatically picked when you use serialize function).

+

If you can't find some desired type in available field serializers don't worry, you can write your own field serializer (it's not that hard) to support new field types to be serialized/deserialized but we will talk about this later in one of the next sections.

+

As it was previously said our reflection serialization system uses TOML file format so if you need even more flexibility you can serialize toml::value structures directly. Under the hood we use https://github.com/ToruNiina/toml11 for working with TOML files so if you want to serialize something very complicated in a very special way you can read the documentation for this library and serialize toml::values yourself or use a combination of raw toml::values and our serialization system by using various overloads of Serializable::serialize that use toml::value.

+

In the end let's consider one more (this time very simplified) example where we serialize multiple objects into one file:

+
// Serialize 2 objects in 1 file.
+
Node node1("My Cool Node 1");
+
Node node2("My Cool Node 2");
+
SerializableObjectInformation node1Info(&node1, "0", {{sNode1CustomAttributeName, "1"}}); // will have ID 0
+
SerializableObjectInformation node2Info(&node2, "1", {{sNode2CustomAttributeName, "2"}}); // will have ID 1
+
const auto optionalError = Serializable::serializeMultiple(pathToFile, {node1Info, node2Info}, false);
+
if (optionalError.has_value()) {
+
// ... handle error ...
+
}
+
+
// Deserialize.
+
const auto result = Serializable::deserializeMultiple<sgc::GcPtr<Serializable>>(pathToFile);
+
if (std::holds_alternative<Error>(result)) {
+
// ... handle error ...
+
}
+
auto vDeserializedObjects
+
= std::get<std::vector<DeserializedObjectInformation<sgc::GcPtr<Serializable>>>>(std::move(result));
+
Definition: Serializable.h:31
+

+Reflection limitations

+

Currently used version of the reflection library has some issues with multiple inheritance. If you are deriving from two classes one of which is Serializable (or a class/struct that derives from it) and the other is not an interface class (contains fields) then you might want to derive from Serializable first and then from that non-interface class. Example:

+
class IMyInterface{
+
public:
+
virtual void foo() = 0;
+
virtual void bar() = 0;
+
protected:
+
virtual void foo2() = 0;
+
}
+
+
class MyParentClass{
+
public:
+
void myFoo();
+
+
private:
+
int iAnswer = 42;
+
}
+
+
// might fail when attempting to get reflected fields' values (will just read garbage)
+
class RCLASS(Guid("...")) MyClass : public MyParentClass, public Serializable{
+
...
+
}
+
+
// should work fine
+
class RCLASS(Guid("...")) MyClass : public Serializable, public IMyInterface{
+
...
+
}
+
+
// should work fine
+
class RCLASS(Guid("...")) MyClass : public Serializable, public MyParentClass{
+
...
+
}
+

Just keep this in mind when using reflection for serialization/deserialization.

+

+Saving and loading data using ConfigManager

+

ConfigManager (just like reflection serialization) uses TOML file format so if you don't know how this format looks like you can search it right now on the Internet. TOML format generally looks like INI format but with more features.

+

Here is an example of how you can save and load data using ConfigManager:

+
#include "io/ConfigManager.h"
+
+
using namespace ne;
+
+
// Write some data.
+
ConfigManager manager;
+
manager.setValue<std::string>("section name", "key", "value", "optional comment");
+
manager.setValue<bool>("section name", "my bool", true, "this should be true");
+
manager.setValue<double>("section name", "my double", 3.14159, "this is a pi value");
+
manager.setValue<int>("section name", "my long", 42); // notice no comment here
+
+
// Save to file.
+
auto optionalError = manager.saveFile(ConfigCategory::SETTINGS, "my file");
+
if (optionalError.has_value()) {
+
// ... handle error ...
+
}
+
+
// -----------------------------------------
+
// Let's say that somewhere in other place of your game you want to read these values:
+
+
ConfigManager manager;
+
auto optionalError = manager.loadFile(ConfigCategory::SETTINGS, "my file");
+
if (optionalError.has_value()) {
+
// ... handle error ...
+
}
+
+
// Read string.
+
const auto realString = manager.getValue<std::string>("section name", "key", "default value");
+
assert(realString == "value");
+
+
// Read bool.
+
const auto realBool = manager.getValue<bool>("section name", "my bool", false);
+
assert(realBool == true);
+
+
const auto realDouble = manager.getValue<double>("section name", "my double", 0.0);
+
assert(realDouble >= 3.13);
+
+
const auto realLong = manager.getValue<int>("section name", "my long", 0);
+
assert(realLong == 42);
+
Definition: ConfigManager.h:27
+
std::optional< Error > loadFile(ConfigCategory category, std::string_view sFileName)
Definition: ConfigManager.cpp:116
+
void setValue(std::string_view sSection, std::string_view sKey, T value, std::string_view sComment="")
Definition: ConfigManager.h:366
+
std::optional< Error > saveFile(ConfigCategory category, std::string_view sFileName)
Definition: ConfigManager.cpp:199
+
T getValue(std::string_view sSection, std::string_view sKey, T defaultValue) const
Definition: ConfigManager.h:357
+

As you can see ConfigManager is a very simple system for very simple tasks. Generally only primitive types and some STL types are supported, you can of course write a serializer for some STL type by using documentation from https://github.com/ToruNiina/toml11 as ConfigManager uses this library under the hood.

+

ConfigManager also has support for backup files and some other interesting features (see documentation for ConfigManager).

+

+Adding external dependencies

+

In CMake we modify our CMakeLists.txt to add external dependencies. This generally comes down to something like this:

+
message(STATUS "${PROJECT_NAME}: adding external dependency \"FMT\"...")
+
add_subdirectory(${RELATIVE_EXT_PATH}/fmt ${DEPENDENCY_BUILD_DIR_NAME}/fmt SYSTEM)
+
target_link_libraries(${PROJECT_NAME} PUBLIC fmt)
+
set_target_properties(fmt PROPERTIES FOLDER ${EXTERNAL_FOLDER})
+

Note

+

‍This manual expects that you know what the code from above does as it's a usual CMake usage.

+
+

Note

+

‍As you can see we mark external dependencies with SYSTEM so that clang-tidy (enabled in release builds) will not analyze source code of external dependencies.

+
+

As it was said earlier you might need to do one additional step: if your target uses reflection (has add_refureku command) then you also need to tell the reflection generator about included headers of your external dependency:

+
## Write project include directories for Refureku.
+
set(REFUREKU_INCLUDE_DIRECTORIES
+
${ABSOLUTE_EXT_PATH}
+
${ABSOLUTE_EXT_PATH}/fmt/include ## <- new dependency
+
${CMAKE_CURRENT_SOURCE_DIR}/public
+
${CMAKE_CURRENT_SOURCE_DIR}/private
+
)
+
add_refureku(
+
## some code here
+

If you compile your project after adding a new external dependency and the compilation fails with something like this:

+
[Error] While processing the following file: .../MyHeaderThatUsesExternalDependency.h: 'fmt/core.h' file not found (.../MyHeaderThatUsesExternalDependency.h, line 10, column 10), : 0:0
+

this is because you forgot to tell the reflection generator about some directory of your external dependency.

+

+Importing custom meshes

+

Generally you would import meshes using the editor but we will show how to do it in C++.

+

Note

+

‍We only support import from GLTF/GLB format.

+
+

In order to import your file you need to use MeshImporter like so:

+
#include "io/MeshImporter.h"
+
+
using namespace ne;
+
+
auto optionalError = MeshImporter::importMesh(
+
"C:\\models\\DamagedHelmet.glb", // importing GLB as an example, you can import GLTF in the same way
+
"game/models", // path to the output directory relative `res` (should exist)
+
"helmet", // name of the new directory that will be created (should not exist yet)
+
[](std::string_view sState) {
+
Logger::get().info(sState);
+
});
+
if (optionalError.has_value()) [[unlikely]] {
+
// ... process error ...
+
}
+

If the import process went without errors you can then find your imported model in form of a node tree inside of the resulting directory. You can then deserialize that node tree and use it in your game using the following code:

+
// Deserialize node tree.
+
auto result = Node::deserializeNodeTree(
+
ProjectPaths::getPathToResDirectory(ResourceDirectory::ROOT) / "game/models/helmet/helmet.toml");
+
if (std::holds_alternative<Error>(result)) {
+
// ... process errorr ...
+
}
+
auto pImportedRootNode = std::get<sgc::GcPtr<Node>>(std::move(result));
+
+
// Spawn node tree.
+
getWorldRootNode()->addChildNode(pImportedRootNode);
+

+Configuring export settings for your mesh in Blender

+

Usually the only thing that you need to do is to untick the "+Y up" checkbox in "Transform" section (since we use +Z as our UP axis).

+

+Procedurally generating meshes

+

The most simple example of procedurally generated geometry is the following:

+
#include "misc/PrimitiveMeshGenerator.h"
+
+
using namespace ne;
+
+
// Spawn procedural cube mesh.
+
const auto pMeshNode = sgc::makeGc<MeshNode>();
+
pMeshNode->setMeshData(PrimitiveMeshGenerator::createCube(1.0F));
+
getWorldRootNode()->addChildNode(pMeshNode);
+

If you would look into how PrimitiveMeshGenerator::createCube is implemented you would see that it just constructs a MeshData by filling all positions, normals, UVs, etc. In the same way you can create a procedural mesh by constructing a MeshData object. After we assigned a new mesh data to our mesh node we can set materials and shaders to it.

+

+Working with materials

+

+Working with materials in C++

+

Each MeshNode uses a default engine material (if other material is not specified) which means that if we have a MeshNode it already has a material.

+
#include "material/Material.h"
+
#include "shader/general/EngineShaderNames.h"
+
+
// Set mesh's diffuse color to red.
+
pMeshNode->getMaterial()->setDiffuseColor(glm::vec(1.0F, 0.0F, 0.0F));
+

You can also assign a new material to your MeshNode:

+
#include "material/Material.h"
+
#include "shader/general/EngineShaderNames.h"
+
+
auto result = Material::create(
+
EngineShaderNames::MeshNode::sVertexShaderName, // since we change `MeshNode`'s material we use `MeshNode` shaders
+
EngineShaderNames::MeshNode::sPixelShaderName,
+
false); // create with transparency disabled
+
if (std::holds_alternative<Error>(result)) {
+
// ... handle error ...
+
}
+
auto pMaterial = std::get<std::unique_ptr<Material>>(std::move(result));
+
+
// Assign this material to your mesh node.
+
pMeshNode->setMaterial(std::move(pMaterial));
+
+
// Set mesh's diffuse color to red.
+
pMeshNode->getMaterial()->setDiffuseColor(glm::vec(1.0F, 0.0F, 0.0F));
+

As you can see you can specify custom shaders when creating a new material (use will talk about custom shaders in another section).

+

Please note that each "Material" here should not be considered as some "big thing" that you need to reuse on multiple meshes - no, each material here is just a collection of small parameters such as diffuse color. You can think of the material here as "material properties" or a "material instance" if you want. If you have multiple materials that use the same shaders it's perfectly fine because under the hood the engine will not duplicate any loaded shaders or similar resources so these materials will just reference 1 set of shaders.

+

Note

+

‍This also means that you cannot just simply clone/duplicate/share a material between multiple meshes. Unfortunatelly, at the time of writing this, we can't just use std::shared_ptr for materials because it might create a false assumption when you have 2 meshes that reference a single material, serialize and deserialize them - would result in both meshes having a separate (unique) material and they will no longer reference a single material. Thus we use std::unique_ptr to avoid false assumptions. But generally there wouldn't be such a need for this. When you import some mesh in the engine (this information is covered in another section) it's imported as a node tree (an asset file) where you generally only have a mesh node, then when this asset (node tree) is used in some level it's added to your level as external node tree and if you have multiple assets that were taken from the same node tree it's enough to modify the material in the asset's node tree to then see changes in all assets on the level.

+
+

In order to enable transparency and use Material::setOpacity function you need to either create a material with transparency enabled (see example from above) or enable transparency using Material::setEnableTransparency:

+
#include "material/Material.h"
+
#include "shader/general/EngineShaderNames.h"
+
+
// Enable transparency.
+
pMeshNode->getMaterial()->setEnableTransparency(true);
+
+
// Set opacity.
+
pMeshNode->getMaterial()->setOpacity(0.5F);
+
+
// Set mesh's diffuse color to red.
+
pMeshNode->getMaterial()->setDiffuseColor(glm::vec(1.0F, 0.0F, 0.0F));
+

Note

+

‍Transparent materials have very serious impact on the performance so you might want to avoid using them.

+
+

In order to use textures in your material you need to first import the textures you want to use. Most of the time you will import new textures through the editor using its GUI but we will show how to do it in C++:

+
#include "io/TextureImporter.h"
+
+
using namespace ne;
+
+
// Import some texture to be used as a diffuse texture in our materials.
+
auto optionalError = TextureImporter::importTexture(
+
"C:\\somedirectory\\textures\\mytexture.png", // file to import
+
TextureImportFormat::RGBA, // import format
+
"game/player/textures", // will be imported to "res/game/player/textures/"
+
"diffuse"); // "res/game/player/textures/diffuse/" will be created during import
+
if (optionalError.has_value()) {
+
// ... process error ...
+
}
+
// texture is imported
+

In the example above after the image is imported the directory res/game/player/textures/diffuse will have multiple files with DDS and KTX extensions. Both formats are special GPU image formats with compression and mipmaps (if you heard about them). The DDS files are used by the DirectX renderer and the KTX files are used by the Vulkan renderer.

+

Let's now see how we can use this texture in our material:

+
pMeshNode->getMaterial()->setDiffuseTexture("game/player/textures/diffuse");
+

As you can see we specify a path to the directory with DDS and KTX files relative to our res directory and we don't need to point to a specific file because the engine will automatically use the appropriate file according to the currently used renderer.

+

Note if a texture is requested it will be loaded from disk, then if some other part of the game needs this texture it won't be loaded from disk again, it will just be used from the memory and finally when all parts of your game finish using a specific texture so that it's no longer used the texture will be automatically released from the memory.

+

Mesh nodes can have multiple materials assigned to different parts of the mesh. Both MeshNode::getMaterial and MeshNode::setMaterial have a default argument iMaterialSlot = 0. Each parts of the mesh that needs to have a separate material defines its own material slot, default cube only uses 1 material so it only has 1 material slot.

+

In order to query available material slots use MeshNode::getAvailableMaterialSlotCount. In order to create more material slots you need to define mesh that has multiple "parts". Information about these "parts" is stored in MeshData, here is an example:

+
// Create mesh node.
+
const auto pMeshNode = sgc::makeGc<MeshNode>();
+
+
// Generate cube mesh data.
+
auto meshData = PrimitiveMeshGenerator::createCube(1.0F);
+
+
// Most importantly `MeshData` stores:
+
// - `std::vector<MeshVertex>` vVertices - vertices of the mesh
+
// - `std::vector<std::vector<meshindex_t>>` vIndices - array that stores indices of the mesh per material slot
+
+
// Generated cube only has 1 material slot...
+
assert(meshData.getIndices()->size() == 1);
+
+
// ... and it has some indices in this slot (which is what we expect).
+
assert(meshData.getIndices()->at(0)->size() > 0);
+
+
// Set mesh data to our mesh node.
+
pMeshNode->setMeshData(std::move(meshData));
+
+
// Mesh data that we set has only 1 material slot so our mesh node now has only 1 material slot available
+
// (all new slots use engine default material).
+
assert(pMeshNode->getAvailableMaterialSlotCount() == 1);
+
+
// Spawn mesh node.
+
getWorldRootNode()->addChildNode(pMeshNode);
+
std::vector< std::vector< meshindex_t > > * getIndices()
Definition: MeshNode.cpp:771
+

Now let's split the cube in 2 material slots so that 1 special face of the cube will use one material and other faces will use other material:

+
auto meshData = PrimitiveMeshGenerator::createCube(1.0F);
+
meshData.getIndices()->at(0) = {
+
0, 1, 2, 3, 2, 1, // +X face.
+
8, 9, 10, 11, 10, 9, // +Y face.
+
12, 13, 14, 15, 14, 13, // -Y face.
+
16, 17, 18, 19, 18, 17, // +Z face.
+
20, 21, 22, 23, 22, 21 // -Z face.
+
};
+
meshData.getIndices()->push_back({4, 5, 6, 7, 6, 5}); // -X face.
+
+
// Set mesh data to our mesh node.
+
pMeshNode->setMeshData(std::move(meshData));
+
+
// We now have 2 material slots.
+
assert(pMeshNode->getAvailableMaterialSlotCount() == 2);
+
+
// Modify first material slot.
+
pMeshNode->getMaterial(0)->setDiffuseColor(glm::vec3(1.0F, 0.0F, 0.0F));
+
+
// Modify second material slot.
+
pMeshNode->getMaterial(1)->setDiffuseColor(glm::vec3(0.0F, 1.0F, 0.0F));
+
pMeshNode->getMaterial(1)->setEnableTransparency(true);
+
+
// Spawn mesh node.
+
getWorldRootNode()->addChildNode(pMeshNode);
+

Generally you won't need to directly modify mesh data or material slots as this will happen automatically when you import some mesh from a (for example) GLTF/GLB file but it's good if you know what they are and where there are created/stored.

+

+Render statistics

+

If you want to know your game's FPS or other similar statistics you can use Renderer::getRenderStatistics. For example, you can display the FPS on your game's UI for debugging purposes:

+
void MyUiNode::onLoopingTimerTimeout() {
+
#if defined(DEBUG)
+
const auto iFps = getWindow()->getRenderer()->getRenderStatistics()->getFramesPerSecond();
+
// ... display on UI ...
+
#endif
+
}
+

+Using profiler

+

The engine has https://github.com/Celtoys/Remotery integrated and you can use this profiler in order to detect slow parts of your game.

+

By default profiler is disabled in order to enable it you need to create a file at *project_root*/src/engine_settings.cmake and add the following variable to it:

+
set(ENABLE_PROFILER ON)
+

Then you need to re-run cmake configuration and if everything is correct during the configuration you might see a message like adding external dependency "Remotery". Note that when ENABLE_PROFILER is set profiler will be enabled only in debug builds.

+

Compile and run your project, during initialization you should see a message profiler enabled in the log.

+

Here are a few examples on how to use profiler:

+
#include "misc/Profiler.hpp"
+
+
using namespace ne;
+
+
void MyNode::onBeforeNewFrame(float timeSincePrevFrameInSec){
+
Node::onBeforeNewFrame(timeSincePrevFrameInSec);
+
+
PROFILE_FUNC;
+
+
// ... some code here ...
+
}
+
+
void MyGameInstance::onMouseMove(double xOffset, double yOffset) {
+
PROFILE_FUNC;
+
+
// ... some code here ...
+
+
{
+
PROFILE_SCOPE(MyScope);
+
+
// ... some code here ...
+
}
+
+
PROFILE_SCOPE_START(MyScope); // same as `PROFILE_SCOPE(MyScope)` but needs to be finished with `PROFILE_SCOPE_END`
+
+
// ... some code here ...
+
+
PROFILE_SCOPE_END;
+
}
+

You can use these macros interchangeably.

+

After you add profiling macros you need to run your app and open *project_root*/ext/Remotery/vis/index.html in your browser. When your app is running with profiler enabled you will see time measurements for profiled functions.

+

Note

+

‍If you don't see any time measurements you might need to refresh the page, then wait 5-10 seconds and try again if nothing shows up.

+
+

In the browser page near the text "Main Thread" (in "Sample Timeline" panel) you can click on buttons "+" and "-" to show/hide hierarchy (inner time measurements). You can also click on "Pause" button in the top-right corner to pause receiving of the new data. You can also expand a panel named "Main Thread" (usually in the bottom-right corner) to view hierarchy of calls you selected in "Sample Timeline" and their time measurements.

+

Note

+

‍It's recommended to use profiler for a short amount of time to identify slow parts of your code because the profiler has proved to cause freezes at startup and sometimes memory leaks.

+
+

+Simulating input for automated tests

+

Your game has a ..._tests target for automated testing (which relies on https://github.com/catchorg/Catch2) and generally it will be very useful to simulate user input. Here is an example on how to do that:

+
// Simulate input.
+
getWindow()->onKeyboardInput(KeyboardKey::KEY_A, KeyboardModifiers(0), true); // simulate keyboard "A" pressed
+
getWindow()->onKeyboardInput(KeyboardKey::KEY_A, KeyboardModifiers(0), false); // simulate keyboard "A" released
+

Once such function is called it will trigger register input bindings in your game instance and nodes.

+

There are also other on... function in Window that you might find handy in simulating user input.

+

For more examples see src/engine_tests/game/nodes/Node.cpp, there are some tests that simulate user input.

+

+Exporting your game

+

If you want to distribute a version of your game you need to switch to the release build mode in your IDE to switch CMake to release build configuration (make sure CMake is now using a release configuration). Then build your project as usual, it will take much longer since we have clang-tidy enabled for release builds. clang-tidy can fail the build if it finds some issues in your code. It's expected that you build your game in release mode regularly to fix clang-tidy warnings/errors (if there are any).

+

Once your project is built in release mode go to the directory where the root CMakeLists.txt file is located and directories like ext and res. Depending on your setup you need to open the directory where built binaries are located, this is typically build directory (or it may be called differently, for example out). Inside of this directory you will see a directory named OUTPUT - this is where all built CMake targets are located. Inside of the OUTPUT directory you should find a directory named after your game's target. Inside of that directory will be located the final executable (or it will be located in the directory named Release). If you would try to run that executable you will get an error saying that the res directory is not found. This is expected as there are some additional steps that you need to do.

+

After you have your built executable you might notice a file named something like COPY_UPDATED_RES_DIRECTORY_HERE next to your game's executable. This is a "reminder" file that you need to manually copy the res directory from the root of your project directory next to the executable. Note that you need to make an actual copy, don't make symlinks and don't cut-paste it, you need to make a copy. This copy is a snapshot of the game's resources for this specific game version. After you've copied the res directory you can remove the "reminder" file named COPY_UPDATED_RES_DIRECTORY_HERE. At this point if you run the executable your game should start. The only thing left to do is to remove non-game related files from this directory.

+

In order to remove non-game related files next to the built executable there will be a directory named delete_nongame_files, open it and you will find a Go script in it. Read the README.md file next to the script file and run the script. It will interactively ask you if you want to delete non-game related files and etc. Once the script is finished it will tell you that you can delete the directory with this script as it's no longer needed. You should now try starting your game using the built executable to see if everything works after all non-game related files were deleted.

+

As you might have noticed next to the built executable of your game there is an ext directory. This directory contains license files of all external dependencies that you have in your project's root ext directory, plus there is a copy of engine's license file. You are required to distribute this directory as part of your build - do not delete this directory. You don't need to list these licenses in your EULA or somewhere else, you just need to distribute them as part of your build - nothing more.

+

That's it! Your game is ready to be distributed. You can archive the directory with the built executable and send it to a friend or upload it on the Internet.

+

At the time of writing this there is no compression/encryption of the game's resources. All game's resources are distributed as-is.

+

+Regular reading

+

This part of the manual groups sections that you might want to re-read regularly in the future.

+

+Tips to note when working with nodes

+

Prefer to start your custom nodes like this:

+
MyDerivedNode() : MyDerivedNode("My Derived Node") {};
+
MyDerivedNode(const std::string& sNodeName) : ParentNodeClass(sNodeName) {
+
// constructor logic
+
}
+
virtual ~MyDerivedNode() override = default;
+

If you override some virtual function in node it's very likely (read the documentation for the functions you are overriding) that you need to call the parent's version:

+
void FlyingCharacterNode::onChildNodesSpawned() {
+
SpatialNode::onChildNodesSpawned(); // <- calling parent's version
+
+
// ... your code ...
+
}
+

Don't forget about Node::getChildNodeOfType and Node::getParentNodeOfType as they might be useful.

+

Remember that World is inaccessable when the node is not spawned and thus Node::getWorldRootNode is nullptr.

+

If you have a character node with some child nodes and you want the player to explore the world by walking on his feet or by riding a car you can use pCarNode->addChildNode(pCharacterNode) to attach your already spawned player (which is attached to the world's root node) to the car node when the player gets in the car or detach it from the car by using something like getWorldRootNode()->addChildNode(pCharacterNode) to make it attached to the world's root node again. By using addChildNode you can not only add child nodes but also attach and detach existing ones even if they already have a parent.

+

The order in which Node::onBeforeNewFrame are called on nodes is kind of random. If you need a specific node's onBeforeNewFrame to be called before onBeforeNewFrame of some other node consider using Node::setTickGroup. For example if your game have a functionality to focus the camera on some world entity you might want to put the "focusing" logic in the later tick group to make sure that all world entities processed their movement before you rotate (focus) the camera.

+

+Important things to keep in mind

+

This section contains a list of important things that you need to regularly check while developing a game to minimize the amount of bugs/crashes in your game. All information listed below is documented in the manual and in the engine code (just duplicating the most important things here, see more details in other sections of the manual or in the engine code documentation).

+

+General

+
    +
  • always read the documentation for the functions you are using (documentation comments in the code), this generally saves you from all issues listed here
  • +
  • always check the logs, if something goes wrong the engine will let you know in the logs, after your game is closed if there were any warnings/errors the last message in the log (before the application is closed) will be the total number of warnings/errors produced (if there were any) so you don't have to scroll through the logs or use search every time
  • +
  • from time to time check your console output's beginning when you start your game for special warnings like [Refureku] WARNING: Double registration detected which are not captured by our logging system, these might occur in very special cases, report these if found
  • +
+

+Garbage collection and GC pointers

+
    +
  • never capture gc pointers in std::function
  • +
  • never store gc pointers in STL containers, store gc pointers only in "gc containers"
  • +
+

+Multiple inheritance

+
    +
  • using gc pointers on types that use multiple inheritance is not supported and will cause exceptions, leaks and crashes
  • +
  • if you use multiple inheritance with serialization (not using gc pointers), make sure to derive from the Serializable class (or derived, for ex. Node) first and only then from other non Serializable classes (order matters, otherwise garbage data will be serialized instead of the actual data)
  • +
+

+Serialization/deserialization

+
    +
  • initialize almost all RPROPERTY(Serialize) fields, for example:
    // MyHeader.h
    +
    UPROPERTY(Serialize)
    +
    long long iCharacterLevel = 0; // initialize because it can get garbage value
    +
    +
    UPROPERTY(Serialize)
    +
    std::string sMyText; // `std::string` can't get garbage value since it's initialized in std::string's constructor
    +
    otherwise you might serialize a garbage value and then deserialize it as a garbage value which might cause unexpected reaction
  • +
+

+Node

+
    +
  • always check getWorldRootNode for nullptr before using it, nullptr here typically means that the node is not spawned or the world is being destroyed
  • +
  • always remember to call parent's virtual function in the beginning of your override (note that this is not always needed but is required for some Node functions)
  • +
  • use NodeFunction instead of std::function when you need callbacks in nodes
  • +
  • use NodeNotificationBroadcaster when you need publisher-subscriber pattern
  • +
  • it's highly recommended to not do any logic if the node is not spawned to avoid running into nullptrs (or deleted memory when on a non-main thread, use getSpawnDespawnMutex() mutex for non-main thread functions)
  • +
+

+Multithreading

+
    +
  • when using thread pool tasks remember that all thread pool tasks will be stopped during the game destruction before GameInstance is destroyed, there are no other checks for thread pool tasks to be stopped so in other cases you need to make sure your async task will not hit deleted memory:
      +
    • if you're using Node member functions in async task make sure the task is finished in your Node::onDespawning,
    • +
    • if you're using GameInstance member functions in async task you only might care about world being changed, for this use promise/future or something else to guarantee that the callback won't be called on a deleted object
    • +
    +
  • +
  • use NodeFunction instead of std::function when you need to process asynchronous results in nodes
  • +
  • submitting a deferred task from a non-main thread where in deferred task you operate on a gc controlled object such as Node can be dangerous as you may operate on a deleted (freed) memory, in this case use additional checks in the beginning of your deferred task to check if the node you want to use is still valid:
    // We are on a non-main thread inside of a node:
    +
    addDeferredTask([this, iNodeId](){ // capturing `this` to use `Node` (self) functions, also capturing self ID
    +
    // We are inside of a deferred task (on the main thread) and we don't know if the node (`this`)
    +
    // was garbage collected or not because we submitted our task from a non-main thread.
    +
    // REMEMBER: we can't capture `gc` pointers in `std::function`, this is not supported
    +
    // and will cause memory leaks/crashes!
    +
    +
    const auto pGameManager = GameManager::get(); // using engine's private class `GameManager`
    +
    +
    // `pGameManager` is guaranteed to be valid inside of a deferred task.
    +
    // Otherwise, if running this code outside of a deferred task you need to do 2 checks:
    +
    // if (pGameManager == nullptr) return;
    +
    // if (pGameManager->isBeingDestroyed()) return;
    +
    +
    if (!pGameManager->isNodeSpawned(iNodeId)){
    +
    // Node was despawned and it may be dangerous to run the callback.
    +
    return;
    +
    }
    +
    +
    // Can safely interact with `this` (self) - we are on the main thread.
    +
    });
    +
    bool isNodeSpawned(size_t iNodeId)
    Definition: GameManager.cpp:598
    +
  • +
+

+Advanced topics

+

+Writing custom shaders

+

+Introduction

+

This section expects that you have knowledge in writing programs in HLSL and/or GLSL.

+

Note: currently we are looking for a solution that will make writing custom shaders easier but right now writing custom shaders is not that simple:

+

‍Right now if you want to go beyond what Material provides to you and achieve some special look of your meshes you would have to write shaders in both HLSL and GLSL if you want your game to support both DirectX and Vulkan renderers that we have because each graphics API (like DirectX or Vulkan) has its own shading language. If you know that you don't want Vulkan support and don't care about Linux and other non-Windows platforms then you might just write a shader in HLSL and ignore GLSL, this would mean that any attempt to run your game using Vulkan renderer will fail with an error.

+
+

+Shader formatter

+

Similar to clang-format we use a special formatter for shaders: https://github.com/Flone-dnb/vscode-shader-formatter

+

Make sure you use it when writing shaders.

+

+Writing custom vertex/pixel/fragment shaders

+

We will talk about creating a custom pixel/fragment shader but the same idea applies to creating custom vertex shaders. Here are the steps to create a new custom shader:

+
    +
  1. Create a new shader file somewhere in the res directory, for example: res/game/shaders/hlsl/CustomMeshNode.frag.hlsl or in glsl directory with .frag.glsl extension if you want to create a GLSL shader.
  2. +
  3. #include an engine shader file that your shader "derives" from. For example if you want to create a custom shader for MeshNode you need to include MeshNode.frag.hlsl. For example: #include "../../../engine/shaders/hlsl/include/MeshNode.frag.hlsl".
      +
    1. 1. For GLSL you need to include #include "../../../engine/shaders/glsl/include/MeshNode.frag.glsl".
    2. +
    +
  4. +
  5. Define pixel shader function, you can copy-paste their signature from the included engine shader file, it may be named as psMeshNode or fsMeshNode.
  6. +
  7. As the first line of your shader function, call a function from the included engine shader, again it may be named as psMeshNode or fsMeshNode, and pass any input parameters if your function has them.
  8. +
  9. Modify resulting data as you want.
  10. +
+

In order to compile your shader you need to use the ShaderManager object, here is an example on how to do it using HLSL shaders:

+
#include "shader/ShaderManager.h"
+
#include "shader/general/EngineShaders.hpp"
+
+
using namespace ne;
+
+
void MyGameInstance::onGameStarted(){
+
const auto pixelShader = ShaderDescription(
+
"game.meshnode.fs", // global unique shader name
+
"res/game/shaders/hlsl/CustomMeshNode.frag.hlsl", // path to shader file, using custom pixel shader
+
ShaderType::FRAGMENT_SHADER, // shader type
+
VertexFormat::MESH_NODE, // vertex structure layout
+
"fsCustomMeshNode", // shader entry function name
+
EngineShaders::MeshNode::getFragmentShader(false) // macros: since we are "deriving" from MeshNode shader we use
+
.definedShaderMacros); // engine shader's macros (but we can also add our macros)
+
// (you don't need to define all macros that engine shader files use (like PS_USE_DIFFUSE_TEXTURE) because they
+
// will be automatically defined by the engine when needed)
+
+
std::vector vShaders = {pixelShader};
+
+
const auto onProgress = [](size_t iCompiledShaderCount, size_t iTotalShadersToCompile) {
+
// show progress here
+
};
+
const auto onError = [](ShaderDescription shaderDescription, std::variant<std::string, Error> errorInfo) {
+
if (std::holds_alternative<std::string>(errorInfo)){
+
// shader compilation error
+
}else{
+
// internal error
+
}
+
};
+
const auto onCompleted = []() {
+
// do final logic here
+
};
+
+
// shader compilation is done asynchronously by using engine's thread pool
+
getWindow()->getRenderer()->getShaderManager()->compileShaders(
+
vShaders,
+
onProgress,
+
onError,
+
onCompleted
+
);
+
}
+
Definition: ShaderDescription.h:74
+

For HLSL you would do the same thing (ShaderType::FRAGMENT_SHADER is considered as "pixel shader" when compiling HLSL shaders).

+

You should not remove the code to compile your shaders (ShaderManager::compileShaders) from your game. This code not only compiles the shaders but also adds them to the global "shader registry". If some shader was previously compiled then this means that the results of that compilation were cached and the next time you will call compileShaders instead of compiling it again the results will be retrived from the cache. If you change your shader code or something else the cache might be automatically invalidated (inside ShaderManager::compileShaders) and your shader will be automatically recompiled so if you do any changes in the shader file (or in any files that your shader includes) you just need to restart the game to see your changes.

+

Please note:

+

‍If you got an idea of displaying a splash screen using a separate GameInstance (before starting your game's GameInstance) in order to compile your shaders inside of that splash screen game instance it would be a bad idea because compileShaders will be called twice (inside of your splash screen game instance and inside of your game's game instance) which means that even if no shader was changed the shader cache will be checked twice which might take some time if you have lots of shaders.

+
+

As you might have noticed in the res/engine/shaders/include directory there are .glsl shaders outside of the glsl/hlsl directory. These shaders contain code that can be used in both HLSL and GLSL. Before passing shader code to a shader compiler we parse the code from disk using a special but simple parser (see https://github.com/Flone-dnb/combined-shader-language-parser). It allows mixing HLSL and GLSL code. You can also use such functionality and have just one shader file instead of separate HLSL and GLSL files if you want.

+

+Writing custom compute shaders

+

Shader compilation for compute shaders is the same as from the previous section that described custom vertex/pixel/fragment shaders. What's different is how we interact with compute shaders.

+

After you have compiled your compute shader you need to create a special "interface" object to interact with your compute shader (specify input/output resources, dispatch it and etc.). Let's consider an example where you want to calculate some data (stored in a resource) that will be used during the rendering:

+
#include "shader/ComputeShaderInterface.h"
+
+
void MyGameInstance::onGameStarted(){
+
// ... compile compute shader ...
+
// on compilation finished:
+
+
// Create shader interface.
+
auto computeInterfaceResult = ComputeShaderInterface::createUsingGraphicsQueue(
+
getWindow()->getRenderer(),
+
"my.compute.shader.name",
+
ComputeExecutionStage::AFTER_DEPTH_PREPASS);
+
if (std::holds_alternative<Error>(computeInterfaceResult)) {
+
// ... handle error ...
+
}
+
pComputeShaderInterface = std::get<std::unique_ptr<ComputeShaderInterface>>(std::move(computeInterfaceResult));
+
+
// Create a resource that we will use in compute shader.
+
auto resourceCreationResult = getWindow()->getRenderer()->getResourceManager()->createResourceWithData(...);
+
if (std::holds_alternative<Error>(resourceCreationResult)) {
+
// ... handle error ...
+
}
+
auto pComputeResource = std::get<std::unique_ptr<GpuResource>>(std::move(resourceCreationResult));
+
+
// Bind resource to be available in compute shader.
+
optionalError = pComputeShaderInterface->bindResource(
+
pComputeResource.get(), "result", ComputeResourceUsage::READ_WRITE_ARRAY_BUFFER);
+
if (optionalError.has_value()) {
+
// ... handle error ...
+
}
+
+
// Submit our shader.
+
pComputeShaderInterface->submitForExecution(1, 2, 3);
+
}
+

Here our shader will be run only once before the first frame is rendered, if you want to regularly run your shader you just need to resubmitForExecution it in your onBeforeNewFrame (for example). For more information, see function documentation.

+

+Shader packs and shader variants

+

If you looked in the engine shader files you might have noticed that some parts of the shader code are used only when a specific macro is defined (for example #ifdef PS_USE_DIFFUSE_TEXTURE). This is how engine shaders do branching (mostly), so instead of doing an actual runtime if the engine shader rely on predefined macros because runtime branching on GPUs can cause performance issues.

+

When you or the engine submits a shader to be compiled the engine creates a special object ShaderPack. Then depending on the shader type (vertex/pixel/fragment/compute/etc) the engine retrieves a special collection of compatible macro combinations, for pixel/fragment shader these combinations may be:

+
    +
  • [] (no macros),
  • +
  • [PS_USE_DIFFUSE_TEXTURE] (opaque material with diffuse texture set),
  • +
  • [PS_USE_DIFFUSE_TEXTURE, PS_USE_MATERIAL_TRANSPARENCY] (transparent material with diffuse texture set),
  • +
  • [PS_USE_MATERIAL_TRANSPARENCY] (transparent material without diffuse texture),
  • +
  • etc.
  • +
+

For every combination of macros the engine compiles one shader variant with only specific macros defined and then stores all shader variants in the shader pack object. Shader pack is then saved on the disk (cached) to be used on the next startup (so that the engine will just read shader bytecode from disk instead of compiling the shaders again). You can see information about all compiled shaders and their variants if you look in the following directory:

+
    +
  • [Windows] localappdata%/nameless-engine/*targetname*/shader_cache
  • +
  • [Linux] ~/.config/nameless-engine/*targetname*/shader_cache
  • +
+

In the shader cache directory you will find one directory per shader. Inside of the shader specific directory you will find multiple files but you should focus on the files with the .toml extension. Each TOML file describes one shader variant and if you open that TOML file in your text editor you might learn some information about a shader (like which macros were defined and etc).

+

At runtime when, for example, some material is created it requests a pair of vertex and pixel/fragment shaders (it actually requests a graphics pipeline but we will omit this for simplicity). The engine then asks the renderer on which macros should be defined right now (depending on the current render settings) and plus the material also tells which macros it defines (for example PS_USE_MATERIAL_TRANSPARENCY when transparency is enabled), then ShaderManager looks for a shader pack for the specified shaders and returns a specific shader from the pack that corresponds with the requested macros. This is how a material receives its shader. If material changes its settings (like transparency) or something global (like render settings) is changed, if there is a shader macro that should be added/removed due to these changes, materials' shaders are being changed by getting another shader variant from the shader pack.

+

This is why you should not define some shader macros that are used in the engine shader files as they will be "defined" automatically when needed.

+

+Debugging custom shaders

+

You can use your usual shader debugging software (PIX, RenderDoc, NVIDIA Nsight, etc.) to debug your custom shaders. Just make sure your game is built in the Debug mode.

+

+Using custom shader resources

+

+Introduction to using custom resources

+

Let's consider a simple example of passing a buffer from C++ into your custom shader which looks like this:

+
#include "../../../engine/shaders/hlsl/include/MeshNode.frag.hlsl"
+
+
cbuffer customData : register(b1) // register index/space can be different (as long as no other resource is using it)
+
{
+
float4x4 someMatrix;
+
};
+
+
// your HLSL code
+
#include "../../../engine/shaders/glsl/include/MeshNode.frag.glsl"
+
+
struct CustomData {
+
mat4 someMatrix;
+
};
+
layout(std140, binding = 9) readonly buffer CustomDataBuffer{ // binding index can be different (same as in HLSL)
+
CustomData array[]; // stores data for all objects (meshes) that use this shader
+
} customData;
+
+
#additional_shader_constants
+
{
+
uint customData; // named as your `readonly buffer`, case sensitive,
+
// used to access element specific to the current object (mesh)
+
}
+
+
void main() {
+
fsMeshNode(); // call "parent" function
+
+
// Define a short macro for simplicity.
+
#define MY_DATA customData.array[arrayIndices.customData]
+
+
// Access our matrix.
+
glm::mat4x4 myMatrix = MY_DATA.someMatrix;
+
}
+

Note

+

‍If you want to use the same shader resource in both vertex and pixel/fragment shaders make sure that resource is using the same binding register/index in both shaders, when the engine finds a shader resource that was specified in both vertex and pixel/fragment shaders with the same name and the same binding register/index it will understand that it's the same resource and will avoid double-registration of the resource. It's recommended to move that resource's definition into a separate file and then include that file in your vertex and pixel/fragment shaders to guarantee that resource's binding register/index is the same. Engine shaders are using the same approach.

+
+

Then in C++:

+
#include "shader/VulkanAlignmentConstants.hpp"
+
#include "math/GLMath.hpp"
+
+
using namespace ne;
+
+
struct CustomMeshShaderConstants {
+
alignas(iVkMat4Alignment) glm::mat4x4 someMatrix = glm::identity<glm::mat4x4>();
+
};
+
+
// using mutex for example purposes, you are not required to use a mutex here
+
std::pair<std::recursive_mutex, CustomMeshShaderConstants> mtxShaderData;
+

As you can see we use alignas to satisfy Vulkan aligning requirements and at the same time keep track of HLSL packing rules. If you only want to stick with some specific shading language (only GLSL or only HLSL) then you just need to keep track of your language specific packing rules.

+

Note that if you don't find a iVk...Alignment variable matching your type's name this means that you should avoid using this type, this includes types such as vec3 and mat3, instead use vec4 and mat4 so you will avoid a bunch of alignment/packing issues.

+

Generally if you specify alignas to all fields (of a type that will be directly copied to the GPU) you should be pretty safe in terms of both Vulkan alignment requirements and HLSL packing rules.

+

In most cases there are only 2 things that you need to keep track of:

+
    +
  1. Order matters, that is the padding that alignas might introduce, for example:
  2. +
+
struct CustomMeshShaderConstants {
+
alignas(iVkScalarAlignment) float test = 0.0F; // has 12 bytes of padding to satisfy next `iVkMat4Alignment`
+
+
alignas(iVkMat4Alignment) glm::mat4x4 somematrix = glm::identity<glm::mat4x4>();
+
};
+

Note

+

‍If you are using Qt Creator IDE you can see field alignment (plus padding if there is one) by hovering your mouse cursor over a field's name, which is very useful for such cases.

+
+

In order to avoid this you might want to prefer to put "big types" (types with bigger alignment such as mats and vecs) first and only then "small types" (such as floats and etc). Otherwise you might have lots of unused padding bytes that might bloat your data.

+
    +
  1. Extra padding on the last field might cause alignment problems in HLSL StructuredBuffers:
  2. +
+
struct ShaderConstants {
+
alignas(iVkVec4Alignment) glm::vec4 color = glm::vec4(1.0F, 1.0F, 1.0F, 1.0F);
+
+
alignas(iVkScalarAlignment) float somevar = 0.0F;
+
+
// 12 bytes of padding here
+
};
+

HLSL structured buffer will look like this:

+
struct MyData {
+
vec4 color;
+
+
float somevar;
+
};
+
+
StructuredBuffer<MyData> myData : register(t0);
+

If you store more than 1 element in this structured buffer your second element will be aligned incorrectly because in C++ you have that 12 bytes of padding at the end but HLSL StructuredBuffers are tightly-packed and there's no 12 bytes of padding in the end so your second element in the structured buffer will reference padding bytes in its color field.

+

In order to avoid such issues just add explicit padding like float pad[3] and vec3 pad in C++ and HLSL.

+

Now let's tell the engine how to pass your buffer to shaders:

+
void CustomMeshNode::onSpawning(){
+
SpatialNode::onSpawning();
+
+
setShaderCpuWriteResourceBinding( // call this function only in `onSpawning`, see function docs
+
"customData", // name of the resource written in your shader file (HLSL/GLSL)
+
sizeof(CustomMeshShaderConstants), // size of your buffer
+
[this]() -> void* { return onStartedUpdatingShaderConstants(); },
+
[this]() { onFinishedUpdatingShaderConstants(); }
+
);
+
}
+

Then implement "updating" functions that will be automatically called by the engine when it needs to copy our data from RAM to VRAM:

+
void* CustomMeshNode::onStartedUpdatingShaderConstants() {
+
mtxShaderData.first.lock(); // don't unlock yet
+
return &mtxShaderData.second;
+
}
+
+
void CustomMeshNode::onFinishedUpdatingShaderConstants() {
+
mtxShaderData.first.unlock(); // copying is finished
+
}
+

Then in any place of your custom mesh node (even when it's not spawned yet) when you need to copy your data to shaders:

+
void CustomMeshNode::onSomeEvent() {
+
// Update our data.
+
std::scoped_lock guard(mtxShaderData.first);
+
mtxShaderData.second.somematrix = getSomeMatrix();
+
+
// Mark data to be copied to the GPU.
+
markShaderCpuWriteResourceToBeCopiedToGpu("customData");
+
}
+

markShaderCpuWriteResourceToBeCopiedToGpu will notify the engine if your node is spawned, otherwise it won't do anything so that your "update" functions will only be called while your node is spawned. After the engine was notified it will mark that resource as "needs update" and call your "update" functions before the next frame is submitted to be rendered (when the engine will be ready to update GPU resources).

+

If you assigned your custom shaders to the material of your CustomMeshNode then we don't need to do anything else.

+

+Using custom textures

+

Similar approach is used for custom textures. First, define a shader:

+
// ... some code here ...
+
+
#hlsl Texture2D customTexture : register(t5, space5);
+
#glsl layout(binding = 8) uniform sampler2D customTexture[];
+
+
#additional_shader_constants{
+
uint customTexture; // access it using `constants.customTexture`
+
}
+
+
void main(){
+
... some code here ...
+
+
#hlsl float4 color = customTexture.Sample(textureSampler, pin.uv);
+
#glsl vec4 color = texture(customTexture[constants.customTexture], fragmentUv);
+
+
... some code here ...
+
}
+

Then assign a material that uses this pixel/fragment shader to your custom mesh node (use default vertex shader). Now, import a texture, use can use the editor or pure C++ for this step:

+
#include "material/TextureManager.h"
+
+
auto optionalError = TextureManager::importTexture(
+
"C:\\images\\stone.png", TextureType::DIFFUSE, "game", "stone", importTextureProgress);
+
if (optionalError.has_value()) [[unlikely]] {
+
// ... handle error ...
+
}
+
+
// `importTextureProgress` signature and definition is skipped to simplify the example
+

Once you have a texture in your res directory you need to bind the file to the shader:

+
void MyMeshNode::onSpawning(){
+
MeshNode::onSpawning();
+
+
setShaderTextureResourceBinding( // call this function only in `onSpawning`, see function docs
+
"customTexture", // name of the resource
+
"game/stone" // path relative `res`
+
);
+
}
+

Now your mesh's pixel/fragment shader will have a custom texture binded.

+

+Adding support for new types for serialization/deserialization

+

When you use Serializable::serialize function all fields marked with RPROPERTY(Serialize) will be checked for serialization. Serialization for fields is achieved by implementing the IFieldSerializer interface. Thanks to field serializers you can, for example, serialize fields that have primitive types (bool, int, long long, etc.) because there is a PrimitiveFieldSerializer that implements IFieldSerializer. Field serializers are located in the io/serializers directory, you can look how they are implemented. Back to the beginning, when you use serialize function the engine goes through each reflected field marked with Serialize property and basically does this:

+
for (const auto& pSerializer : vFieldSerializers) {
+
if (pSerializer->isFieldTypeSupported(&field)) {
+
pSerializer->serializeField(&field);
+
break;
+
}
+
}
+

So if you want to add support for a new field type for serialization, you just need to implement IFieldSerializer interface and register your serializer like so:

+
#include "io/FieldSerializerManager.h"
+
+
FieldSerializerManager::addFieldSerializer(std::make_unique<MyFieldSerializer>());
+

After this, when you use serialize functions your serializer will be used.

+

In addition to the usual IFieldSerializer serializers we also have IBinaryFieldSerializer interface that works the same way but used for fields marked as FST_AS_EXTERNAL_BINARY_FILE and serializes into a binary file for smaller file size and faster deserialization.

+

+Creating new reflection properties

+

You can create custom reflection properties like Guid or Serialize that we currently have. All engine reflection properties are located at io/properties so you can look at them to see an example.

+

You can find instructions for creating custom properties here: https://github.com/jsoysouvanh/Refureku/wiki/Create-custom-properties

+

+Serialization internals

+

Note:

+

‍Information described in this section might not be up to date, please notify the developers if something is not right / outdated.

+
+

+General overview

+

Most of the game assets are stored in the human-readable TOML format. This format is similar to INI format but has more features. This means that you can use any text editor to view or edit your asset files if you need to.

+

When you serialize a serializable object (an object that derives from Serializable) the general TOML structure will look like this (comments start with #):

+
## <unique_id> is an integer, used to globally differentiate objects in the file
+
## (in case they have the same type (same GUID)), if you are serializing only 1 object the ID is 0 by default
+
["<unique_id>.<type_guid>"] ## section that describes an object with GUID
+
<field_name> = <field_value> ## not all fields will have their values stored like that
+
<field_name> = <field_value>
+
+
+
["<unique_id>.<type_guid>"] ## some other object
+
<field_name> = <field_value> ## some other field
+
"..parent_node_id" = <unique_id> ## keys that start with two dots are "custom attributes" (user-specified)
+
## that you pass into `serialize`, they are used to store additional info
+
<field_name> = "reflected type, see other sub-section" ## this field derives from `Serializable` and so we store
+
## its data in a separate section
+
+
+
["<unique_parent_object_id>.<unique_subobject_id>.<type_guid>"] ## section of an object
+
## <unique_subobject_id> is unique only within
+
## the parent object
+
".field_name" = <field_name> ## keys that start with one dot are "internal attributes" they are used for storing
+
## internal info, in this case this key describes the name of the field this section
+
## represents in `<unique_parent_object_id>` object
+

Here is a more specific example:

+
["0.2a721c37-3c22-450c-8dad-7b6985cbbd61"]
+
sName = "Node"
+
+
["1.550ea9f9-dd8a-4089-a717-0fe4e351a687"]
+
bBoolValue2 = true
+
"..parent_node_id" = "0" ## means that this section describes a node that has
+
## a parent node
+
entity = "reflected type, see other sub-section"
+
".path_relative_to_res" = "test/custom_node.toml" ## means that this section contains only changed fields compared
+
## to the specified file (original entity)
+
+
["1.0.550ea9f9-dd8a-4089-a717-0fe4e351a686"]
+
iIntValue2 = 42
+
".field_name" = "entity"
+
vVectorValue2 = [
+
"Hello",
+
"World",
+
]
+

+Storing only changed fields

+

Some Serializable::serialize overloads allow you to specify Serializable* pOriginalObject, when such object is specified each field of the object that is being serialized will be compared to this original object and only fields that were changed compared to the original object will be serialized. To keep the information about all other fields in this case we add an internal attribute like so:

+
["1.550ea9f9-dd8a-4089-a717-0fe4e351a687"]
+
bBoolValue2 = true
+
".path_relative_to_res" = "test/custom_node.toml"
+

This attribute points to a file located in the res directory, specifically at res/test/custom_node.toml. This all will work only if the original object was previously deserialized from a file located in the res directory (see Serializable::getPathDeserializedFromRelativeToRes).

+

+Referencing external node tree

+

If your node tree uses another (external) node tree that is located in the res directory, this external node tree is saved in a special way, that is, only the root node of the external node tree is saved and information about all child nodes is stored as a path to the file that contains this node tree.

+

This means that when we reference an external node tree, only changes to external node tree's root node will be saved.

+
+
+
+ + + + diff --git a/jquery.js b/jquery.js new file mode 100644 index 000000000..1dffb65b5 --- /dev/null +++ b/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/menu.js b/menu.js new file mode 100644 index 000000000..b0b26936a --- /dev/null +++ b/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
    '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
  • '; + } + result+='
'; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
'+ + '
'+ + '
 '+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBoxHtml='
'+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/menudata.js b/menudata.js new file mode 100644 index 000000000..15dd4f9d6 --- /dev/null +++ b/menudata.js @@ -0,0 +1,107 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"hierarchy.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions_b.html#index_b"}, +{text:"c",url:"functions_c.html#index_c"}, +{text:"d",url:"functions_d.html#index_d"}, +{text:"e",url:"functions_e.html#index_e"}, +{text:"f",url:"functions_f.html#index_f"}, +{text:"g",url:"functions_g.html#index_g"}, +{text:"h",url:"functions_h.html#index_h"}, +{text:"i",url:"functions_i.html#index_i"}, +{text:"k",url:"functions_k.html#index_k"}, +{text:"l",url:"functions_l.html#index_l"}, +{text:"m",url:"functions_m.html#index_m"}, +{text:"n",url:"functions_n.html#index_n"}, +{text:"o",url:"functions_o.html#index_o"}, +{text:"p",url:"functions_p.html#index_p"}, +{text:"q",url:"functions_q.html#index_q"}, +{text:"r",url:"functions_r.html#index_r"}, +{text:"s",url:"functions_s.html#index_s"}, +{text:"t",url:"functions_t.html#index_t"}, +{text:"u",url:"functions_u.html#index_u"}, +{text:"v",url:"functions_v.html#index_v"}, +{text:"w",url:"functions_w.html#index_w"}, +{text:"~",url:"functions_~.html#index__7E"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"b",url:"functions_func_b.html#index_b"}, +{text:"c",url:"functions_func_c.html#index_c"}, +{text:"d",url:"functions_func_d.html#index_d"}, +{text:"e",url:"functions_func_e.html#index_e"}, +{text:"f",url:"functions_func_f.html#index_f"}, +{text:"g",url:"functions_func_g.html#index_g"}, +{text:"h",url:"functions_func_h.html#index_h"}, +{text:"i",url:"functions_func_i.html#index_i"}, +{text:"k",url:"functions_func_k.html#index_k"}, +{text:"l",url:"functions_func_l.html#index_l"}, +{text:"m",url:"functions_func_m.html#index_m"}, +{text:"n",url:"functions_func_n.html#index_n"}, +{text:"o",url:"functions_func_o.html#index_o"}, +{text:"p",url:"functions_func_p.html#index_p"}, +{text:"q",url:"functions_func_q.html#index_q"}, +{text:"r",url:"functions_func_r.html#index_r"}, +{text:"s",url:"functions_func_s.html#index_s"}, +{text:"t",url:"functions_func_t.html#index_t"}, +{text:"u",url:"functions_func_u.html#index_u"}, +{text:"v",url:"functions_func_v.html#index_v"}, +{text:"w",url:"functions_func_w.html#index_w"}, +{text:"~",url:"functions_func_~.html#index__7E"}]}, +{text:"Variables",url:"functions_vars.html",children:[ +{text:"a",url:"functions_vars.html#index_a"}, +{text:"b",url:"functions_vars_b.html#index_b"}, +{text:"c",url:"functions_vars_c.html#index_c"}, +{text:"d",url:"functions_vars_d.html#index_d"}, +{text:"e",url:"functions_vars_e.html#index_e"}, +{text:"f",url:"functions_vars_f.html#index_f"}, +{text:"g",url:"functions_vars_g.html#index_g"}, +{text:"h",url:"functions_vars_h.html#index_h"}, +{text:"i",url:"functions_vars_i.html#index_i"}, +{text:"k",url:"functions_vars_k.html#index_k"}, +{text:"l",url:"functions_vars_l.html#index_l"}, +{text:"m",url:"functions_vars_m.html#index_m"}, +{text:"n",url:"functions_vars_n.html#index_n"}, +{text:"o",url:"functions_vars_o.html#index_o"}, +{text:"p",url:"functions_vars_p.html#index_p"}, +{text:"q",url:"functions_vars_q.html#index_q"}, +{text:"r",url:"functions_vars_r.html#index_r"}, +{text:"s",url:"functions_vars_s.html#index_s"}, +{text:"t",url:"functions_vars_t.html#index_t"}, +{text:"u",url:"functions_vars_u.html#index_u"}, +{text:"v",url:"functions_vars_v.html#index_v"}, +{text:"w",url:"functions_vars_w.html#index_w"}]}, +{text:"Typedefs",url:"functions_type.html"}, +{text:"Enumerations",url:"functions_enum.html"}, +{text:"Related Functions",url:"functions_rela.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/nav_f.png b/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/nav_fd.png b/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/nav_g.png b/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/navtree.css b/navtree.css new file mode 100644 index 000000000..c8a7766a7 --- /dev/null +++ b/navtree.css @@ -0,0 +1,150 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: var(--nav-text-active-color); + text-shadow: var(--nav-text-active-shadow); +} + +#nav-tree .selected .arrow { + color: var(--nav-arrow-selected-color); + text-shadow: none; +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; + outline:none; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px var(--font-family-nav); +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:var(--nav-text-active-color); +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: $width; + overflow : hidden; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:var(--nav-splitbar-image); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-repeat:repeat-x; + background-color: var(--nav-background-color); + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/navtree.js b/navtree.js new file mode 100644 index 000000000..27983687a --- /dev/null +++ b/navtree.js @@ -0,0 +1,549 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +var navTreeSubIndices = new Array(); +var arrowDown = '▼'; +var arrowRight = '►'; + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + var topOffset=5; + if (typeof page_layout!=='undefined' && page_layout==1) { + topOffset+=$('#top').outerHeight(); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + topOffset+=25; + } + $('#nav-sync').css('top',topOffset+'px'); + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +var loadTriggered = false; +var readyTriggered = false; +var loadObject,loadToRoot,loadUrl,loadRelPath; + +$(window).on('load',function(){ + if (readyTriggered) { // ready first + navTo(loadObject,loadToRoot,loadUrl,loadRelPath); + showRoot(); + } + loadTriggered=true; +}); + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + if (loadTriggered) { // load before ready + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + } else { // ready before load + loadObject = o; + loadToRoot = toroot; + loadUrl = hashUrl(); + loadRelPath = relpath; + readyTriggered=true; + } + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM0) { + newWidth=0; + } + else { + var width = readSetting('width'); + newWidth = (width>250 && width<$(window).width()) ? width : 250; + } + restoreWidth(newWidth); + var sidenavWidth = $(sidenav).outerWidth(); + writeSetting('width',sidenavWidth-barWidth); + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readSetting('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + if (once) { + $(".ui-resizable-handle").dblclick(collapseExpand); + once=0 + } + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/search/all_0.js b/search/all_0.js new file mode 100644 index 000000000..8bf0134f7 --- /dev/null +++ b/search/all_0.js @@ -0,0 +1,45 @@ +var searchData= +[ + ['aabb_0',['aabb',['../classne_1_1MeshNode.html#a07925fe6a2f63fd25e918018a31faeea',1,'ne::MeshNode']]], + ['aabb_1',['AABB',['../structne_1_1AABB.html',1,'ne']]], + ['action_2',['Action',['../structne_1_1EditorInputEventIds.html#a543624b702b3ac523a37ef02f84337f3',1,'ne::EditorInputEventIds']]], + ['actionevents_3',['actionEvents',['../classne_1_1InputManager.html#a0814b80826609ba562a3e9a18621f709',1,'ne::InputManager']]], + ['actionstate_4',['actionState',['../classne_1_1InputManager.html#aaab57608c499e84686bd884839ff3d12',1,'ne::InputManager']]], + ['actionstate_5',['ActionState',['../classne_1_1ActionState.html#aad7da26eea3f54bc3a62b93001280e39',1,'ne::ActionState::ActionState()'],['../classne_1_1ActionState.html',1,'ne::ActionState']]], + ['activeslots_6',['activeSlots',['../structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources.html#af4c78cf673a2f6d523816c5e6485c83a',1,'ne::DynamicCpuWriteShaderResourceArray::InternalResources::activeSlots()'],['../structne_1_1ShaderLightArray_1_1Resources.html#a7d0fa06997c399beb912e5ca693dedc0',1,'ne::ShaderLightArray::Resources::activeSlots()']]], + ['addactionevent_7',['addActionEvent',['../classne_1_1InputManager.html#a8c6376e3d7b39c34d71b685584d8c1d4',1,'ne::InputManager']]], + ['addaxisevent_8',['addAxisEvent',['../classne_1_1InputManager.html#a937f8a855ed96b1c17f34393e4314994',1,'ne::InputManager']]], + ['addbinaryfieldserializer_9',['addBinaryFieldSerializer',['../classne_1_1FieldSerializerManager.html#a17d522d8a1b3c916fcb2116f2b8f725e',1,'ne::FieldSerializerManager']]], + ['addcbufferrootparameter_10',['addCbufferRootParameter',['../classne_1_1RootSignatureGenerator.html#a045e6dc8a1f5825d0f6dcef0b2846d35',1,'ne::RootSignatureGenerator']]], + ['addchildnode_11',['addChildNode',['../classne_1_1Node.html#a3a921f5e7fe4deb183e7910be557b1da',1,'ne::Node']]], + ['addcurrentlocationtoerrorstack_12',['addCurrentLocationToErrorStack',['../classne_1_1Error.html#ab597ff09fa96e109686cc66081a0ca80',1,'ne::Error']]], + ['adddeferredtask_13',['addDeferredTask',['../classne_1_1GameManager.html#ad6ccd23069578f4131297a56d64d9fe4',1,'ne::GameManager::addDeferredTask()'],['../classne_1_1GameInstance.html#a9f3763b4fa0eedb9735d02a3face9f5a',1,'ne::GameInstance::addDeferredTask()']]], + ['addenginemacrostoshaderdescription_14',['addEngineMacrosToShaderDescription',['../classne_1_1ShaderPack.html#ae213785f3aee3b1c7942d509557b9d10',1,'ne::ShaderPack']]], + ['addfieldserializer_15',['addFieldSerializer',['../classne_1_1FieldSerializerManager.html#aaf579632f4c5798826e599f25ecf6ca6',1,'ne::FieldSerializerManager']]], + ['additionalpixelshadermacros_16',['additionalPixelShaderMacros',['../classne_1_1ColorPipelineConfiguration.html#a7382a79f0c389a8db3c075df76ac41da',1,'ne::ColorPipelineConfiguration']]], + ['additionalvertexshadermacros_17',['additionalVertexShaderMacros',['../classne_1_1PipelineConfiguration.html#a7b9fe41245b35d95e5602badac01b8a7',1,'ne::PipelineConfiguration']]], + ['addnodetocalledeveryframearrays_18',['addNodeToCalledEveryFrameArrays',['../classne_1_1World.html#a2c95947d75fb1c8abd0a0da4c719a214',1,'ne::World']]], + ['addnodetoreceivinginputarray_19',['addNodeToReceivingInputArray',['../classne_1_1World.html#ab216aa0941ff9bdee5a33fad3f090cd0',1,'ne::World']]], + ['addshader_20',['addShader',['../classne_1_1ShaderUser.html#a0057b3ae30961b3500575722f9db2f18',1,'ne::ShaderUser']]], + ['addspecialresourcerootparametersifused_21',['addSpecialResourceRootParametersIfUsed',['../classne_1_1RootSignatureGenerator.html#a5ee6a55e1308f9ad9aad09220b0926cf',1,'ne::RootSignatureGenerator']]], + ['addstructuredbufferrootparameter_22',['addStructuredBufferRootParameter',['../classne_1_1RootSignatureGenerator.html#ac2ec702d20cc94e10a9064fe314778e4',1,'ne::RootSignatureGenerator']]], + ['addtask_23',['addTask',['../classne_1_1ThreadPool.html#af15d7bc0f05008ffc8c63e4cda46a557',1,'ne::ThreadPool']]], + ['addtasktothreadpool_24',['addTaskToThreadPool',['../classne_1_1GameManager.html#a0fd6b822a9e3cd5387c29c967cb1d369',1,'ne::GameManager::addTaskToThreadPool()'],['../classne_1_1GameInstance.html#afeabdd90b1b0bd2d15b04b01d009a2b4',1,'ne::GameInstance::addTaskToThreadPool()']]], + ['addtexture2drootparameter_25',['addTexture2DRootParameter',['../classne_1_1RootSignatureGenerator.html#aad50e6eb8ae97779a5fdc2158e4456f9',1,'ne::RootSignatureGenerator']]], + ['adduniquepairresourcenamerootparameterindex_26',['addUniquePairResourceNameRootParameterIndex',['../classne_1_1RootSignatureGenerator.html#af8f76ee52018743d024a24c7134fe2fd',1,'ne::RootSignatureGenerator']]], + ['all_27',['all',['../structne_1_1ShaderCpuWriteResourceBindingManager_1_1Resources.html#a8d13c23b8d7843b4a23faa34404f5e8c',1,'ne::ShaderCpuWriteResourceBindingManager::Resources']]], + ['allocatecontinuousdescriptorrange_28',['allocateContinuousDescriptorRange',['../classne_1_1DirectXDescriptorHeap.html#ab42d4fafa16c177531598a10ed00c8af',1,'ne::DirectXDescriptorHeap']]], + ['allocateddescriptors_29',['allocatedDescriptors',['../structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData.html#a08a78334fe97ddb7d062fc883355c1ef',1,'ne::ContinuousDirectXDescriptorRange::InternalData']]], + ['allocategeometrybuffers_30',['allocateGeometryBuffers',['../classne_1_1MeshNode.html#a39074f6279baeea3d03794f4480d4c29',1,'ne::MeshNode']]], + ['allocateshaderresources_31',['allocateShaderResources',['../classne_1_1MeshNode.html#a995527f60cf6160e427183e604ae9c89',1,'ne::MeshNode::allocateShaderResources()'],['../classne_1_1Material.html#ad098fa1bc60126bee59d73a9ba5a55a4',1,'ne::Material::allocateShaderResources()']]], + ['allocations_32',['allocations',['../structne_1_1KtxLoadingCallbackManager_1_1Data.html#af0af3387d57b40132fa371fcabddd406',1,'ne::KtxLoadingCallbackManager::Data']]], + ['allocmem_33',['allocMem',['../classne_1_1KtxLoadingCallbackManager.html#affa2d1da7b14a2c8d526c266c55f19a1',1,'ne::KtxLoadingCallbackManager']]], + ['ambientlight_34',['ambientLight',['../structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData.html#a685738116885536ebd61fa597659dcca',1,'ne::LightingShaderResourceManager::GeneralLightingShaderData::ambientLight()'],['../classne_1_1EnvironmentNode.html#afed8db93d9245654b59023cf12a37153',1,'ne::EnvironmentNode::ambientLight()']]], + ['applyattachmentrule_35',['applyAttachmentRule',['../classne_1_1SpatialNode.html#a26f0039cbde3055ea33a7090b3d03964',1,'ne::SpatialNode']]], + ['assigndescriptor_36',['assignDescriptor',['../classne_1_1DirectXDescriptorHeap.html#aa22837b542496371413ae59dc1078cf2',1,'ne::DirectXDescriptorHeap']]], + ['attachmentrule_37',['AttachmentRule',['../classne_1_1Node.html#a14bad364fb30a60063a147b95ab17acc',1,'ne::Node']]], + ['axis_38',['Axis',['../structne_1_1EditorInputEventIds.html#a55fc78df9952c8365e8db8143ebc0391',1,'ne::EditorInputEventIds']]], + ['axisevents_39',['axisEvents',['../classne_1_1InputManager.html#a6b57fe556fefa8625a0da84732e65a9e',1,'ne::InputManager']]], + ['axisstate_40',['axisState',['../classne_1_1InputManager.html#af4aed655702546e619d4f2edf9bcde5b',1,'ne::InputManager']]], + ['axisstate_41',['AxisState',['../classne_1_1AxisState.html#ad00936b0ee3e548a80755ea39c5537fa',1,'ne::AxisState::AxisState()'],['../classne_1_1AxisState.html',1,'ne::AxisState']]] +]; diff --git a/search/all_1.js b/search/all_1.js new file mode 100644 index 000000000..52d17fec3 --- /dev/null +++ b/search/all_1.js @@ -0,0 +1,68 @@ +var searchData= +[ + ['backbufferfillcolor_0',['backBufferFillColor',['../classne_1_1DirectXRenderer.html#ad29a55fef55b2b9cd7d04c707c435f85',1,'ne::DirectXRenderer']]], + ['backbufferformat_1',['backBufferFormat',['../classne_1_1DirectXRenderer.html#a43ded335f4450711acef5377c5e27132',1,'ne::DirectXRenderer']]], + ['ballowcreatingtimers_2',['bAllowCreatingTimers',['../classne_1_1GameInstance.html#a315aeac9a8ea882a15033ead66ffc8ec',1,'ne::GameInstance']]], + ['ballowsavingconfigurationtodisk_3',['bAllowSavingConfigurationToDisk',['../classne_1_1RenderSettings.html#aa186b154dc9aa4d441ded46676140abe',1,'ne::RenderSettings']]], + ['bbindsrvtocubemapfaces_4',['bBindSrvToCubemapFaces',['../classne_1_1HlslShaderTextureResourceBinding.html#abfd8465268d8b4245db76e446ea5a2f2',1,'ne::HlslShaderTextureResourceBinding']]], + ['bengineshaderscompiled_5',['bEngineShadersCompiled',['../classne_1_1LightingShaderResourceManager.html#ad0c73fff5b1754dbf404d9299f26c274',1,'ne::LightingShaderResourceManager']]], + ['bfullscreen_6',['bFullscreen',['../structne_1_1WindowBuilderParameters.html#aef372fd512ca2d0c1add2b56c6d344a9',1,'ne::WindowBuilderParameters']]], + ['bignoreinput_7',['bIgnoreInput',['../classne_1_1EditorCameraNode.html#ab742cafbda4c6c8c8aa21d4d09ce7153',1,'ne::EditorCameraNode']]], + ['bindbuffer_8',['bindBuffer',['../classne_1_1KtxLoadingCallbackManager.html#a14abc0228d2da125a3bdfc8b4698d721',1,'ne::KtxLoadingCallbackManager']]], + ['bindbuffersifused_9',['bindBuffersIfUsed',['../classne_1_1VulkanPipeline.html#a76f1504c355cc84ea78c071a8e9d0e2a',1,'ne::VulkanPipeline']]], + ['bindbufferstoallvulkanpipelinesifused_10',['bindBuffersToAllVulkanPipelinesIfUsed',['../classne_1_1PipelineManager.html#ab19fcac5d073e236595bbaba0ef05289',1,'ne::PipelineManager']]], + ['binddescriptor_11',['bindDescriptor',['../classne_1_1DirectXResource.html#a584fc36f4a22a38f68b9a2f0ed9e623c',1,'ne::DirectXResource']]], + ['binddescriptorstorecreatedpipelineresources_12',['bindDescriptorsToRecreatedPipelineResources',['../classne_1_1LightingShaderResourceManager.html#a262f09bbf6a6d9d7409488b6d2ea63ea',1,'ne::LightingShaderResourceManager']]], + ['bindedsingledescriptors_13',['bindedSingleDescriptors',['../structne_1_1DirectXDescriptorHeap_1_1InternalData.html#a754c7bdf9281457f5502e814fd71f3df',1,'ne::DirectXDescriptorHeap::InternalData']]], + ['bindframedatadescriptors_14',['bindFrameDataDescriptors',['../classne_1_1VulkanPipeline.html#a521a3000b4791af8f8273c8a01126bc9',1,'ne::VulkanPipeline']]], + ['bindglobalshaderresourceviews_15',['bindGlobalShaderResourceViews',['../classne_1_1DirectXPso.html#adaa2fc853ef7eff6885030bfbc3dce8a',1,'ne::DirectXPso']]], + ['bindimage_16',['bindImage',['../classne_1_1KtxLoadingCallbackManager.html#a95f3ecf2b46433e51a59553d971c646f',1,'ne::KtxLoadingCallbackManager']]], + ['bindimageifused_17',['bindImageIfUsed',['../classne_1_1VulkanPipeline.html#a3d56db292e08242cea53ecb59443f627',1,'ne::VulkanPipeline']]], + ['bindimagetoallvulkanpipelinesifused_18',['bindImageToAllVulkanPipelinesIfUsed',['../classne_1_1PipelineManager.html#a51f3fae6d2b1ad8dd957061c4b902093',1,'ne::PipelineManager']]], + ['bindinginfo_19',['bindingInfo',['../structne_1_1DescriptorSetLayoutGenerator_1_1Collected.html#a21381939697b9ab1257e0ca2ea3838e7',1,'ne::DescriptorSetLayoutGenerator::Collected']]], + ['bindresource_20',['bindResource',['../classne_1_1ComputeShaderInterface.html#a91277887a773e2aba5158ad0a53d16f9',1,'ne::ComputeShaderInterface::bindResource()'],['../classne_1_1HlslComputeShaderInterface.html#a3766c12ba388a79f758f475b87e2f902',1,'ne::HlslComputeShaderInterface::bindResource()'],['../classne_1_1GlslComputeShaderInterface.html#afc2c48e069ae78bf4487dd37a1ddc955',1,'ne::GlslComputeShaderInterface::bindResource()']]], + ['bindshadowmapstoallpipelines_21',['bindShadowMapsToAllPipelines',['../classne_1_1DirectXShadowMapArrayIndexManager.html#a46e6d305747093b638fde6040f04de9e',1,'ne::DirectXShadowMapArrayIndexManager::bindShadowMapsToAllPipelines()'],['../classne_1_1ShadowMapArrayIndexManager.html#a283ebedde27fe846847f6e6adcb44ad1',1,'ne::ShadowMapArrayIndexManager::bindShadowMapsToAllPipelines()'],['../classne_1_1ShadowMapManager.html#a9b6ce0b9dfdce9646454013a505eb901',1,'ne::ShadowMapManager::bindShadowMapsToAllPipelines()'],['../classne_1_1VulkanShadowMapArrayIndexManager.html#a2b8342ead9df48d19292f92975fcf9c9',1,'ne::VulkanShadowMapArrayIndexManager::bindShadowMapsToAllPipelines() override'],['../classne_1_1VulkanShadowMapArrayIndexManager.html#a41a7fa9b722b6108ff567975febb1a24',1,'ne::VulkanShadowMapArrayIndexManager::bindShadowMapsToAllPipelines(ShadowMapHandle *pOnlyBindThisShadowMap)']]], + ['bindshadowmapstopipeline_22',['bindShadowMapsToPipeline',['../classne_1_1VulkanShadowMapArrayIndexManager.html#a0326fb92107d8e0c75cadc6f68f4aef4',1,'ne::VulkanShadowMapArrayIndexManager::bindShadowMapsToPipeline(Pipeline *pPipeline) override'],['../classne_1_1VulkanShadowMapArrayIndexManager.html#a510f973bd1cc116473917569e9449507',1,'ne::VulkanShadowMapArrayIndexManager::bindShadowMapsToPipeline(Pipeline *pPipeline, ShadowMapHandle *pOnlyBindThisShadowMap)'],['../classne_1_1ShadowMapManager.html#ad4c128e8327e2fbed373f94a1e327cf8',1,'ne::ShadowMapManager::bindShadowMapsToPipeline()'],['../classne_1_1ShadowMapArrayIndexManager.html#a491d3eaf6fc69f239ae4bccc4abc6eff',1,'ne::ShadowMapArrayIndexManager::bindShadowMapsToPipeline()'],['../classne_1_1DirectXShadowMapArrayIndexManager.html#afbbb79f5322dade315bb41c8d31f4dcc',1,'ne::DirectXShadowMapArrayIndexManager::bindShadowMapsToPipeline()']]], + ['bindshadowmaptopipelineifused_23',['bindShadowMapToPipelineIfUsed',['../classne_1_1VulkanShadowMapArrayIndexManager.html#abf06bfb2a6414981d9f04b04b3a0f321',1,'ne::VulkanShadowMapArrayIndexManager']]], + ['bindtexturetoshaderdescriptorarray_24',['bindTextureToShaderDescriptorArray',['../classne_1_1GlslShaderTextureResourceBinding.html#aefc86111ccf47cf222f5254cef395e92',1,'ne::GlslShaderTextureResourceBinding']]], + ['bindtopipelines_25',['bindToPipelines',['../classne_1_1GlobalShaderResourceBinding.html#ad8695f7ca8d6f45c13822772602cd4b9',1,'ne::GlobalShaderResourceBinding::bindToPipelines()'],['../classne_1_1GlslGlobalShaderResourceBinding.html#a74baa2557d77b9f62b341c22d59dce2e',1,'ne::GlslGlobalShaderResourceBinding::bindToPipelines()'],['../classne_1_1HlslGlobalShaderResourceBinding.html#aa6152c06d24057ffa6cac20118dc9bb5',1,'ne::HlslGlobalShaderResourceBinding::bindToPipelines()']]], + ['bindtowindowevents_26',['bindToWindowEvents',['../classne_1_1Window.html#a0a21ba6120db929aff3a4e9d31cd9b38',1,'ne::Window']]], + ['binonworldlocationrotationscalechanged_27',['bInOnWorldLocationRotationScaleChanged',['../structne_1_1SpatialNode_1_1WorldMatrixInformation.html#a5173c8666883dd487bb0a041cde1d175',1,'ne::SpatialNode::WorldMatrixInformation']]], + ['bisbeingdestroyed_28',['bIsBeingDestroyed',['../classne_1_1VulkanRenderer.html#a4c02c3788b4cbf31e171783c416ce3b0',1,'ne::VulkanRenderer::bIsBeingDestroyed()'],['../classne_1_1GameManager.html#a167a9401fe4ccd3ea03df90160b77873',1,'ne::GameManager::bIsBeingDestroyed()']]], + ['bisbroadcasting_29',['bIsBroadcasting',['../classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a7a25b2da3659aab3c2877fbe625a4e82',1,'ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>']]], + ['bisdirectxinitialized_30',['bIsDirectXInitialized',['../classne_1_1DirectXRenderer.html#a9c88d579b35447e3818dbe2f1a0f9b0b',1,'ne::DirectXRenderer']]], + ['bisenabled_31',['bIsEnabled',['../classne_1_1Timer.html#a76a103e31719b66aa77762243471cda4',1,'ne::Timer']]], + ['bisinitialized_32',['bIsInitialized',['../classne_1_1GameManager.html#ac9711ea32d947461c80b2cb54becbbfe',1,'ne::GameManager::bIsInitialized()'],['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html#af878e133b9cbb50968ef9d7aff3bd9e3',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader::bIsInitialized()'],['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html#a1020c9b22f7daed5145cec622b5a4a5f',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader::bIsInitialized()']]], + ['bislooping_33',['bIsLooping',['../classne_1_1Timer.html#a74ad7719fa6f31b9d6a75a7ed8837ebf',1,'ne::Timer']]], + ['bisminuskeypressed_34',['bIsMinusKeyPressed',['../classne_1_1AxisState.html#acf4131e37774d3851819c503f89a99bd',1,'ne::AxisState']]], + ['bispluskeypressed_35',['bIsPlusKeyPressed',['../classne_1_1AxisState.html#a7721daebc4ca92d0799ca407c30b543e',1,'ne::AxisState']]], + ['bispressed_36',['bIsPressed',['../classne_1_1ActionState.html#a74806e9ae9fd398330ed7e5624d0a228',1,'ne::ActionState']]], + ['bisreadyforusage_37',['bIsReadyForUsage',['../structne_1_1VulkanPipeline_1_1InternalResources.html#a162d861ac24ab5dedf0b3edb117343ce',1,'ne::VulkanPipeline::InternalResources::bIsReadyForUsage()'],['../structne_1_1DirectXPso_1_1InternalResources.html#a2dcec7913790fd0388415801a77206af',1,'ne::DirectXPso::InternalResources::bIsReadyForUsage()']]], + ['bisrenderconfigurationset_38',['bIsRenderConfigurationSet',['../structne_1_1ShaderPack_1_1InternalResources.html#abefd4612d8fd317596cd22f22f180888',1,'ne::ShaderPack::InternalResources']]], + ['bisrunning_39',['bIsRunning',['../classne_1_1Timer.html#a0c8a12568362277dcf86adf5dccbd7aa',1,'ne::Timer']]], + ['bisshaderresourcesallocated_40',['bIsShaderResourcesAllocated',['../classne_1_1Material.html#a4d185e1b454c6b6b5f6f0e363d311fc3',1,'ne::Material']]], + ['bisshuttingdown_41',['bIsShuttingDown',['../classne_1_1ThreadPool.html#a8718ef111637ad96d53ace9c5bde21d7',1,'ne::ThreadPool::bIsShuttingDown()'],['../classne_1_1Timer.html#ac7a32d2adb24d1ccf9a366b24ae1883b',1,'ne::Timer::bIsShuttingDown()']]], + ['bissplashscreen_42',['bIsSplashScreen',['../structne_1_1WindowBuilderParameters.html#a8a10d3198327008b9fdceec2d438c834',1,'ne::WindowBuilderParameters']]], + ['bisstoprequested_43',['bIsStopRequested',['../classne_1_1Timer.html#afc8380fd0f41b14ec9e862e0d618dcac',1,'ne::Timer']]], + ['bistable_44',['bIsTable',['../classne_1_1RootSignatureGenerator_1_1RootParameter.html#a03111223ee06a9aa4528afe147802b80',1,'ne::RootSignatureGenerator::RootParameter']]], + ['bisusingmsaarendertarget_45',['bIsUsingMsaaRenderTarget',['../classne_1_1DirectXRenderer.html#ad6ed49ffb6a20286392c137c0d7903cb',1,'ne::DirectXRenderer::bIsUsingMsaaRenderTarget()'],['../classne_1_1VulkanRenderer.html#a75bf971931daf9f0ca0adb71e763c4a8',1,'ne::VulkanRenderer::bIsUsingMsaaRenderTarget()']]], + ['bisvisible_46',['bIsVisible',['../classne_1_1MeshNode.html#a3cb4105e07d36b244e6cd374f86958b7',1,'ne::MeshNode']]], + ['bisvsyncenabled_47',['bIsVsyncEnabled',['../classne_1_1RenderSettings.html#a0553d46a36ffbaf0441145258fd96162',1,'ne::RenderSettings']]], + ['bisvulkaninitialized_48',['bIsVulkanInitialized',['../classne_1_1VulkanRenderer.html#a24ef179470bc3740973f5f94567310b9',1,'ne::VulkanRenderer']]], + ['biswindowminimized_49',['bIsWindowMinimized',['../classne_1_1Renderer.html#af2015e9a6275191e9d3d069de64e4224',1,'ne::Renderer']]], + ['blightgridfrustumsneedupdate_50',['bLightGridFrustumsNeedUpdate',['../structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html#a54c256471f5db84e9af5ce6598db0d5e',1,'ne::CameraProperties::Data::ProjectionData']]], + ['bmaximized_51',['bMaximized',['../structne_1_1WindowBuilderParameters.html#ad5f3cb2d73804c1b420d1e165e11f914',1,'ne::WindowBuilderParameters']]], + ['bneedtorecreateswapchain_52',['bNeedToRecreateSwapchain',['../classne_1_1VulkanRenderer.html#a260f960d9ffa0f044738eff73bdd4784',1,'ne::VulkanRenderer']]], + ['bottomface_53',['bottomFace',['../structne_1_1Frustum.html#abb8a96aaac20e9274e5f4aadd9e8b360',1,'ne::Frustum']]], + ['bottomradius_54',['bottomRadius',['../structne_1_1Cone.html#a53f093e1ec5475871b4572a955ea59bd',1,'ne::Cone']]], + ['bprojectionmatrixneedsupdate_55',['bProjectionMatrixNeedsUpdate',['../structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html#a1a48d82819585d5c594c3f7b4e5036ed',1,'ne::CameraProperties::Data::ProjectionData']]], + ['broadcast_56',['broadcast',['../classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#aa5768a935e524fcd12d04dd121b912e6',1,'ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>']]], + ['bserialize_57',['bSerialize',['../classne_1_1Node.html#a7fe9ac405df914997905a4de2045c12b',1,'ne::Node']]], + ['bshouldacceptnewdeferredtasks_58',['bShouldAcceptNewDeferredTasks',['../classne_1_1GameManager.html#a6050d78ba567b16ea5df7efac07373d2',1,'ne::GameManager']]], + ['bshowwindow_59',['bShowWindow',['../structne_1_1WindowBuilderParameters.html#a146feb91568f5df0d2e1b5f1396a0ec9',1,'ne::WindowBuilderParameters']]], + ['build_60',['build',['../classne_1_1WindowBuilder.html#a74d2120e5f0871a5d6b347f5a31b2b2b',1,'ne::WindowBuilder']]], + ['buildrotationmatrix_61',['buildRotationMatrix',['../classne_1_1MathHelpers.html#a7bff468878c5b201d276cc385db8a5ea',1,'ne::MathHelpers']]], + ['busepixelblending_62',['bUsePixelBlending',['../classne_1_1ColorPipelineConfiguration.html#a82a2ba6f3c36f1be236e84fdc26f5bba',1,'ne::ColorPipelineConfiguration']]], + ['busetransparency_63',['bUseTransparency',['../classne_1_1Material.html#ace5bae8c52442a43d2c2f03501989d08',1,'ne::Material']]], + ['bviewmatrixneedsupdate_64',['bViewMatrixNeedsUpdate',['../structne_1_1CameraProperties_1_1Data_1_1ViewData.html#afa8793cfdd282b933a4da26888f98881',1,'ne::CameraProperties::Data::ViewData']]] +]; diff --git a/search/all_10.js b/search/all_10.js new file mode 100644 index 000000000..693f0d14f --- /dev/null +++ b/search/all_10.js @@ -0,0 +1,85 @@ +var searchData= +[ + ['radius_0',['radius',['../structne_1_1Sphere.html#a383eecbfb0414c5f3fc014134b6e254b',1,'ne::Sphere']]], + ['rategpusuitability_1',['rateGpuSuitability',['../classne_1_1DirectXRenderer.html#aa7ce37db86a74d8ec1dec1bb9db4e0c3',1,'ne::DirectXRenderer::rateGpuSuitability()'],['../classne_1_1VulkanRenderer.html#a4690a07dc723725e760768b1a454ec01',1,'ne::VulkanRenderer::rateGpuSuitability()']]], + ['readblobfromdisk_2',['readBlobFromDisk',['../classne_1_1HlslShader.html#ac23cb997145345f3b130f4d809e494ba',1,'ne::HlslShader']]], + ['rebindgpudatatoallpipelines_3',['rebindGpuDataToAllPipelines',['../classne_1_1LightingShaderResourceManager.html#a88316d676ec4e8badf007e1779861062',1,'ne::LightingShaderResourceManager']]], + ['rebindgpudatatopipelineifused_4',['rebindGpuDataToPipelineIfUsed',['../classne_1_1LightingShaderResourceManager.html#a57dac1214d1939093dc8dbea6be03046',1,'ne::LightingShaderResourceManager']]], + ['rebindviewsupdateindices_5',['rebindViewsUpdateIndices',['../classne_1_1DirectXDescriptorHeap.html#ade3f95e4e392a02ffb9c44c493063e50',1,'ne::DirectXDescriptorHeap']]], + ['recalculateandmarkshaderdatatobecopiedtogpu_6',['recalculateAndMarkShaderDataToBeCopiedToGpu',['../classne_1_1SpotlightNode.html#afd8dd380c787cf909b01afcbadd52783',1,'ne::SpotlightNode']]], + ['recalculatefrustum_7',['recalculateFrustum',['../classne_1_1CameraProperties.html#aed83a8c2ef397ea0aae6fd15ad626cdc',1,'ne::CameraProperties']]], + ['recalculatelighttilefrustums_8',['recalculateLightTileFrustums',['../classne_1_1Renderer.html#a7e71fc6ecff7925b5cda79dbc8dbcc5a',1,'ne::Renderer::recalculateLightTileFrustums()'],['../classne_1_1LightingShaderResourceManager.html#a6eb69be2c6ba12b23d29aa978bff7d07',1,'ne::LightingShaderResourceManager::recalculateLightTileFrustums()']]], + ['recalculatelocalmatrix_9',['recalculateLocalMatrix',['../classne_1_1SpatialNode.html#aae9f01357ae4a798be84c588dfe11ecc',1,'ne::SpatialNode']]], + ['recalculateshadowmappingshaderdata_10',['recalculateShadowMappingShaderData',['../classne_1_1SpotlightNode.html#ac6aa271da830cd1c3bbf9176c65c67f8',1,'ne::SpotlightNode::recalculateShadowMappingShaderData()'],['../classne_1_1DirectionalLightNode.html#a4fae44a2efa51bf7329b13ed343ee567',1,'ne::DirectionalLightNode::recalculateShadowMappingShaderData()']]], + ['recalculateshadowpassshaderdata_11',['recalculateShadowPassShaderData',['../classne_1_1PointLightNode.html#a98d7bd9c3bc1e607dde0c5ee6076075a',1,'ne::PointLightNode']]], + ['recalculateshape_12',['recalculateShape',['../classne_1_1PointLightNode.html#aa2a13da948ce78237400827b473a92a7',1,'ne::PointLightNode::recalculateShape()'],['../classne_1_1SpotlightNode.html#aacee3dce9ea926d06c4c1626543092f5',1,'ne::SpotlightNode::recalculateShape()']]], + ['recalculateworldmatrix_13',['recalculateWorldMatrix',['../classne_1_1SpatialNode.html#af6a9d48594b1c45a95dde0d1cf542805',1,'ne::SpatialNode']]], + ['recalculateworldmatrixfornodeandnotifychildren_14',['recalculateWorldMatrixForNodeAndNotifyChildren',['../classne_1_1SpatialNode.html#a62b2b6516e8a31a398fa1207db20bc23',1,'ne::SpatialNode']]], + ['recreatearray_15',['recreateArray',['../classne_1_1ShaderLightArray.html#a545c6de44ae5674b637ddc849599c8ba',1,'ne::ShaderLightArray']]], + ['recreateframebuffers_16',['recreateFramebuffers',['../classne_1_1ShadowMapHandle.html#a4ddc9e9db7d9976a42c8a65a48623234',1,'ne::ShadowMapHandle']]], + ['recreateshadowmaps_17',['recreateShadowMaps',['../classne_1_1ShadowMapManager.html#aa1ffc8307e6ade709bb3910fbe5289a6',1,'ne::ShadowMapManager']]], + ['recreateswapchainanddependentresources_18',['recreateSwapChainAndDependentResources',['../classne_1_1VulkanRenderer.html#ab7a93662bc19a87d3df0afe21466941a',1,'ne::VulkanRenderer']]], + ['referencedcubemapfaceindex_19',['referencedCubemapFaceIndex',['../classne_1_1DirectXDescriptor.html#a9edbcff3698ad59c48d8522a4baee0f9',1,'ne::DirectXDescriptor']]], + ['refreshshadercache_20',['refreshShaderCache',['../classne_1_1ShaderCacheManager.html#a6d89f494055e8d601df024a240068af1',1,'ne::ShaderCacheManager::refreshShaderCache()'],['../classne_1_1ShaderManager.html#ae5a1e41b8eccc56ef48163f4d5bbd09c',1,'ne::ShaderManager::refreshShaderCache()']]], + ['registeredshadowmaps_21',['registeredShadowMaps',['../structne_1_1VulkanShadowMapArrayIndexManager_1_1InternalData.html#acbc74b327ae4de3da30f0942404292bf',1,'ne::VulkanShadowMapArrayIndexManager::InternalData']]], + ['registerenginefieldserializers_22',['registerEngineFieldSerializers',['../classne_1_1FieldSerializerManager.html#a6e9c2d63ba77b96244e3205d82b56359',1,'ne::FieldSerializerManager']]], + ['registernewbinding_23',['registerNewBinding',['../classne_1_1GlobalShaderResourceBindingManager.html#ab10d2fa079ca6fad271b9e78aad878be',1,'ne::GlobalShaderResourceBindingManager']]], + ['registershadowmapresource_24',['registerShadowMapResource',['../classne_1_1DirectXShadowMapArrayIndexManager.html#aca5bcd3d1658998fb438a82c6d032417',1,'ne::DirectXShadowMapArrayIndexManager::registerShadowMapResource()'],['../classne_1_1ShadowMapArrayIndexManager.html#a255378744537bc9c65de2e4979df0c58',1,'ne::ShadowMapArrayIndexManager::registerShadowMapResource()'],['../classne_1_1VulkanShadowMapArrayIndexManager.html#a0f0bdb3740849a2b1928be5bf30822a4',1,'ne::VulkanShadowMapArrayIndexManager::registerShadowMapResource()']]], + ['relativelocation_25',['relativeLocation',['../classne_1_1SpatialNode.html#a072475ef37d5d228a57d0f690a415d1d',1,'ne::SpatialNode']]], + ['relativerotation_26',['relativeRotation',['../classne_1_1SpatialNode.html#a51a1af4e84b0808687ba2cc75671a226',1,'ne::SpatialNode']]], + ['relativerotationmatrix_27',['relativeRotationMatrix',['../structne_1_1SpatialNode_1_1LocalSpaceInformation.html#affb3771db01d1879f9f11dfb9a22e5f2',1,'ne::SpatialNode::LocalSpaceInformation']]], + ['relativerotationquaternion_28',['relativeRotationQuaternion',['../structne_1_1SpatialNode_1_1LocalSpaceInformation.html#ac0fe11bde13bc3d18272c475530e445f',1,'ne::SpatialNode::LocalSpaceInformation']]], + ['relativescale_29',['relativeScale',['../classne_1_1SpatialNode.html#a60c8e2b839f27ff29d797fa69a2fd8df',1,'ne::SpatialNode']]], + ['releasecursor_30',['releaseCursor',['../classne_1_1WindowCursor.html#a111fc33dffebee1cb78cdefc65295509',1,'ne::WindowCursor']]], + ['releaseinternalgraphicspipelinesresources_31',['releaseInternalGraphicsPipelinesResources',['../classne_1_1PipelineManager.html#ac354177b83c5c3c491143088c96a2b8b',1,'ne::PipelineManager']]], + ['releaseinternalresources_32',['releaseInternalResources',['../classne_1_1DirectXPso.html#aafe18306adda795d5e81710f28586888',1,'ne::DirectXPso::releaseInternalResources()'],['../classne_1_1Pipeline.html#a413262f60974f9c5ac973969d0aad319',1,'ne::Pipeline::releaseInternalResources()'],['../classne_1_1VulkanPipeline.html#a1e5ef7c56fa62ee2c66245e9d29ef6d9',1,'ne::VulkanPipeline::releaseInternalResources()']]], + ['releaseshader_33',['releaseShader',['../classne_1_1ShaderUser.html#a295d7fab3b2217af0e91169d766c81d4',1,'ne::ShaderUser']]], + ['releaseshaderbytecodeifnotused_34',['releaseShaderBytecodeIfNotUsed',['../classne_1_1ShaderManager.html#ac605a789b555ca9fa5a267e258ec4143',1,'ne::ShaderManager']]], + ['releaseshaderdatafrommemoryifloaded_35',['releaseShaderDataFromMemoryIfLoaded',['../classne_1_1Shader.html#a129137959e2dd2f04911aa4985b56a13',1,'ne::Shader::releaseShaderDataFromMemoryIfLoaded()'],['../classne_1_1GlslShader.html#aa755cdf70f58655629ff99038ffbd8bc',1,'ne::GlslShader::releaseShaderDataFromMemoryIfLoaded()'],['../classne_1_1HlslShader.html#a634592389dcf017cf0929200549421e5',1,'ne::HlslShader::releaseShaderDataFromMemoryIfLoaded()']]], + ['releaseshaderpackdatafrommemoryifloaded_36',['releaseShaderPackDataFromMemoryIfLoaded',['../classne_1_1ShaderPack.html#a794382bfd7d48874044a2f2e8ed28835',1,'ne::ShaderPack']]], + ['releasetextureresourceifnotused_37',['releaseTextureResourceIfNotUsed',['../classne_1_1TextureManager.html#ac77052739df05199bc528a0856c06dc5',1,'ne::TextureManager']]], + ['removeactionevent_38',['removeActionEvent',['../classne_1_1InputManager.html#aacc89ae7c39633599a9725ab2194b437',1,'ne::InputManager']]], + ['removeallcallbacks_39',['removeAllCallbacks',['../classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a8fdcd63923d32c5bf567d871872cc7f7',1,'ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>']]], + ['removeaxisevent_40',['removeAxisEvent',['../classne_1_1InputManager.html#ab2af95f125632039f477c358f79e9e3a',1,'ne::InputManager']]], + ['removeemptyarrays_41',['removeEmptyArrays',['../classne_1_1DynamicCpuWriteShaderResourceArrayManager.html#aef0cf7c6e1f1b987f64cd189aa33c95f',1,'ne::DynamicCpuWriteShaderResourceArrayManager']]], + ['removefile_42',['removeFile',['../classne_1_1ConfigManager.html#ad827081f18e99d095c89e35febf3b126',1,'ne::ConfigManager::removeFile(ConfigCategory category, std::string_view sFileName)'],['../classne_1_1ConfigManager.html#a927f98253f753d475b09aad736a0d173',1,'ne::ConfigManager::removeFile(std::filesystem::path pathToConfigFile)']]], + ['removenodefromcalledeveryframearrays_43',['removeNodeFromCalledEveryFrameArrays',['../classne_1_1World.html#acbb81246c0894866b8e61d43885d244f',1,'ne::World']]], + ['removenodefromreceivinginputarray_44',['removeNodeFromReceivingInputArray',['../classne_1_1World.html#ac82df1af642e11b236c39ed7f6936140',1,'ne::World']]], + ['removeoldestlogfiles_45',['removeOldestLogFiles',['../classne_1_1Logger.html#ad687d5425c746e747fb3dcd5c13bf2fc',1,'ne::Logger']]], + ['removeshaderifmarkedtoberemoved_46',['removeShaderIfMarkedToBeRemoved',['../classne_1_1ShaderManager.html#aac23eeac24f3692764f9bb9592441c50',1,'ne::ShaderManager']]], + ['renderconfiguration_47',['renderConfiguration',['../structne_1_1ShaderPack_1_1InternalResources.html#a1d80db0ef92b349bcfc228d5bf295bd7',1,'ne::ShaderPack::InternalResources']]], + ['renderer_48',['Renderer',['../classne_1_1Renderer.html',1,'ne::Renderer'],['../classne_1_1Renderer.html#a5b5369cf5d1a7dffbde1ff17d54ce7ff',1,'ne::Renderer::Renderer()']]], + ['rendererd3dfeaturelevel_49',['rendererD3dFeatureLevel',['../classne_1_1DirectXRenderer.html#a1f611fa3a3e45d473ce623089f8e0af1',1,'ne::DirectXRenderer']]], + ['rendersettings_50',['RenderSettings',['../classne_1_1RenderSettings.html',1,'ne']]], + ['renderstatistics_51',['RenderStatistics',['../classne_1_1RenderStatistics.html',1,'ne']]], + ['renderstats_52',['renderStats',['../classne_1_1Renderer.html#ace76887f5a4165f92d3984b12c624e97',1,'ne::Renderer']]], + ['rendertargetsize_53',['renderTargetSize',['../classne_1_1DirectXRenderer.html#ad585fdd90e93aadb0c10568bc266f2bd',1,'ne::DirectXRenderer']]], + ['reserveindex_54',['reserveIndex',['../classne_1_1ShaderArrayIndexManager.html#ad6cb66b311cee6e85d8ffc7089a38c1b',1,'ne::ShaderArrayIndexManager']]], + ['reservenewslot_55',['reserveNewSlot',['../classne_1_1ShaderLightArray.html#aae70b6d70f55db9c6a6c7e6a4e79813c',1,'ne::ShaderLightArray']]], + ['reserveslotsinarray_56',['reserveSlotsInArray',['../classne_1_1DynamicCpuWriteShaderResourceArrayManager.html#a99cd6f7a677bf97ab36c9ee8b0cca10a',1,'ne::DynamicCpuWriteShaderResourceArrayManager']]], + ['resetcommandlistforgraphics_57',['resetCommandListForGraphics',['../classne_1_1DirectXRenderer.html#a849c0fe971f23e51a074c5ee0a5c9fae',1,'ne::DirectXRenderer']]], + ['resetframeresourcemanager_58',['resetFrameResourceManager',['../classne_1_1Renderer.html#a38b97ea2de9b0293f89fb4280618a333',1,'ne::Renderer']]], + ['resetgpuresourcemanager_59',['resetGpuResourceManager',['../classne_1_1Renderer.html#aa539114f74384e2bbdd14d5b9049e8a3',1,'ne::Renderer']]], + ['resetlightingshaderresourcemanager_60',['resetLightingShaderResourceManager',['../classne_1_1Renderer.html#a08726652b7affeb260c8719aaf469ced',1,'ne::Renderer']]], + ['resetmanagers_61',['resetManagers',['../classne_1_1GpuResourceManager.html#ae93152cc3ff47a82411870370fb6c369',1,'ne::GpuResourceManager']]], + ['resetpipelinemanager_62',['resetPipelineManager',['../classne_1_1Renderer.html#ae59727774d2199a7ea0354224ecc819d',1,'ne::Renderer']]], + ['resetpipelines_63',['resetPipelines',['../classne_1_1Material.html#ad94a42c86625c72a14036cae1e2db707',1,'ne::Material']]], + ['resolvepathtotoml_64',['resolvePathToToml',['../classne_1_1Serializable.html#aab36f16bc593429b096f1112ad5cd52d',1,'ne::Serializable']]], + ['resourcebindings_65',['resourceBindings',['../structne_1_1VulkanPipeline_1_1InternalResources.html#a91fcec65ace4ec83602d091f43905424',1,'ne::VulkanPipeline::InternalResources::resourceBindings()'],['../structne_1_1DescriptorSetLayoutGenerator_1_1Generated.html#a4756d619e0360fcbc85fa658afceebcc',1,'ne::DescriptorSetLayoutGenerator::Generated::resourceBindings()']]], + ['resources_66',['Resources',['../structne_1_1PipelineManager_1_1ComputePipelines_1_1Resources.html',1,'ne::PipelineManager::ComputePipelines::Resources'],['../structne_1_1ShaderCpuWriteResourceBindingManager_1_1Resources.html',1,'ne::ShaderCpuWriteResourceBindingManager::Resources'],['../structne_1_1ShaderLightArray_1_1Resources.html',1,'ne::ShaderLightArray::Resources']]], + ['resources_67',['resources',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html#a0775064f7bc1cb33b16f5f86d6d9bc91',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader::resources()'],['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html#a55027b74248e48ff70446a5b06bf55b6',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader::resources()']]], + ['resourcetype_68',['resourceType',['../structne_1_1DescriptorSetLayoutGenerator_1_1Collected_1_1DescriptorSetLayoutBindingInfo.html#acf9ced25bc87177335a34f48f5fadb54',1,'ne::DescriptorSetLayoutGenerator::Collected::DescriptorSetLayoutBindingInfo']]], + ['restore_69',['restore',['../classne_1_1Window.html#a3ceabc6dc41dc22ab50ac090f16510b8',1,'ne::Window']]], + ['restoreinternalgraphicspipelinesresources_70',['restoreInternalGraphicsPipelinesResources',['../classne_1_1PipelineManager.html#a8c0e034e9ab8d38dacf0c732ce9e7bab',1,'ne::PipelineManager']]], + ['restoreinternalresources_71',['restoreInternalResources',['../classne_1_1DirectXPso.html#a50174336a707116161760fa2737c6b4e',1,'ne::DirectXPso::restoreInternalResources()'],['../classne_1_1Pipeline.html#a5ae100670225ade4287f4ba6db73ca14',1,'ne::Pipeline::restoreInternalResources()'],['../classne_1_1VulkanPipeline.html#a9e94d5f9478270ae6ba80bafba14db5b',1,'ne::VulkanPipeline::restoreInternalResources()']]], + ['right_72',['right',['../structne_1_1Globals_1_1WorldDirection.html#af102b448787f543d6098fbe91fa6d8ab',1,'ne::Globals::WorldDirection']]], + ['rightface_73',['rightFace',['../structne_1_1Frustum.html#abc89349b3bd54920b61302a5779a93b9',1,'ne::Frustum']]], + ['rootconstantoffsets_74',['rootConstantOffsets',['../structne_1_1RootSignatureGenerator_1_1CollectedInfo.html#af942b9cb74a1ff4e735ee589602e3b93',1,'ne::RootSignatureGenerator::CollectedInfo::rootConstantOffsets()'],['../structne_1_1RootSignatureGenerator_1_1Generated.html#acf5733979669337d47c7f6f162b10c86',1,'ne::RootSignatureGenerator::Generated::rootConstantOffsets()']]], + ['rootparameter_75',['RootParameter',['../classne_1_1RootSignatureGenerator_1_1RootParameter.html',1,'ne::RootSignatureGenerator::RootParameter'],['../classne_1_1RootSignatureGenerator_1_1RootParameter.html#a13523f698ce9e04f408b94fdbca56c2b',1,'ne::RootSignatureGenerator::RootParameter::RootParameter()=default'],['../classne_1_1RootSignatureGenerator_1_1RootParameter.html#a77422bf3eecd38e6d1dfe21e39a184e2',1,'ne::RootSignatureGenerator::RootParameter::RootParameter(UINT iBindPoint, UINT iSpace, Type type, bool bIsTable=false, UINT iCount=1)']]], + ['rootparameterindices_76',['rootParameterIndices',['../structne_1_1DirectXPso_1_1InternalResources.html#ac4bca338beefcd67377d8fa20b7f044e',1,'ne::DirectXPso::InternalResources::rootParameterIndices()'],['../structne_1_1RootSignatureGenerator_1_1CollectedInfo.html#a53b201af963f5063b33004aa13f09cc6',1,'ne::RootSignatureGenerator::CollectedInfo::rootParameterIndices()'],['../structne_1_1RootSignatureGenerator_1_1Generated.html#af63b8a223b8da37cc52c3a6827f744c9',1,'ne::RootSignatureGenerator::Generated::rootParameterIndices()']]], + ['rootsignaturegenerator_77',['RootSignatureGenerator',['../classne_1_1RootSignatureGenerator.html',1,'ne']]], + ['rotationdelta_78',['rotationDelta',['../classne_1_1CameraNode.html#af2ec1e3b89fbc504f63183fc65356bac',1,'ne::CameraNode']]], + ['rotationsensitivity_79',['rotationSensitivity',['../classne_1_1EditorCameraNode.html#a735eb53b5ffb0f729b2d30bafa93c2f5',1,'ne::EditorCameraNode']]], + ['roughness_80',['roughness',['../structne_1_1Material_1_1MaterialShaderConstants.html#ae9b72621475b491112619bc1f825397c',1,'ne::Material::MaterialShaderConstants::roughness()'],['../classne_1_1Material.html#a75f8887c5bab282d23e95d6c5077f66b',1,'ne::Material::roughness()']]], + ['rungarbagecollection_81',['runGarbageCollection',['../classne_1_1GameManager.html#a0230c880a42001e9444bd4d99b4143ab',1,'ne::GameManager']]] +]; diff --git a/search/all_11.js b/search/all_11.js new file mode 100644 index 000000000..d7d7e9f7b --- /dev/null +++ b/search/all_11.js @@ -0,0 +1,282 @@ +var searchData= +[ + ['sactioneventsectionname_0',['sActionEventSectionName',['../classne_1_1InputManager.html#ab73e92504d106c2909ab8b04e48f1a4d',1,'ne::InputManager']]], + ['saveadditionalcompilationresultsinfo_1',['saveAdditionalCompilationResultsInfo',['../classne_1_1Shader.html#a6fb50e7c63a8fb2f2b599441dcb414e8',1,'ne::Shader::saveAdditionalCompilationResultsInfo()'],['../classne_1_1GlslShader.html#a725410d50f91868d6f853d1287eac9a6',1,'ne::GlslShader::saveAdditionalCompilationResultsInfo()'],['../classne_1_1HlslShader.html#a07c69fd957ba46965313bc22d8e51974',1,'ne::HlslShader::saveAdditionalCompilationResultsInfo()']]], + ['saveandresettemporaryframestatistics_2',['saveAndResetTemporaryFrameStatistics',['../classne_1_1RenderStatistics.html#afef3fee96c5750f3a71809d3c274be73',1,'ne::RenderStatistics']]], + ['saveconfigurationtodisk_3',['saveConfigurationToDisk',['../classne_1_1RenderSettings.html#a25adb8a7b5fca2c480fdc177d881774d',1,'ne::RenderSettings']]], + ['savefile_4',['saveFile',['../classne_1_1FileDialog.html#a56e46fa4383b6710f56cd5f0e6527d41',1,'ne::FileDialog::saveFile()'],['../classne_1_1ConfigManager.html#ad5fa7616322bc39eb8ed673b17d7df19',1,'ne::ConfigManager::saveFile(std::filesystem::path pathToConfigFile, bool bEnableBackup)'],['../classne_1_1ConfigManager.html#aafc4701dd102d93a0f23d277821600c0',1,'ne::ConfigManager::saveFile(ConfigCategory category, std::string_view sFileName)']]], + ['savetofile_5',['saveToFile',['../classne_1_1InputManager.html#a2d75477eb8b82c5836426adaa579b5bf',1,'ne::InputManager']]], + ['saveusedshaderconfiguration_6',['saveUsedShaderConfiguration',['../classne_1_1Pipeline.html#aa2163521b46e65c7dff05f3ccd2fb036',1,'ne::Pipeline']]], + ['saxiseventsectionname_7',['sAxisEventSectionName',['../classne_1_1InputManager.html#a973aa856f8359571b04541c78d51e3ca',1,'ne::InputManager']]], + ['sbackupfileextension_8',['sBackupFileExtension',['../classne_1_1ConfigManager.html#a77b1775ac06e32f5eacabe225f11c1d7',1,'ne::ConfigManager']]], + ['sbaseenginedirectoryname_9',['sBaseEngineDirectoryName',['../classne_1_1Globals.html#ada9bee55c940dd403e0d8921bc4233bf',1,'ne::Globals']]], + ['scalculatedfrustumsshaderresourcename_10',['sCalculatedFrustumsShaderResourceName',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html#a3c5c6c7552949b49bbed96ec10c36c8f',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader']]], + ['scissorrect_11',['scissorRect',['../classne_1_1DirectXRenderer.html#afd1a20f48d9b551d9bd792feaeddb9f6',1,'ne::DirectXRenderer']]], + ['scompiledbytecodehashkeyname_12',['sCompiledBytecodeHashKeyName',['../classne_1_1Shader.html#a840aa620bd658b9716fd1f500e7d787c',1,'ne::Shader']]], + ['scompilerversion_13',['sCompilerVersion',['../structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames.html#a5e6754c97faadd8179489519cb3cb3c2',1,'ne::HlslShaderCacheManager::GlobalShaderCacheParameterNames']]], + ['scomputeinfoshaderresourcename_14',['sComputeInfoShaderResourceName',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html#ae2e4f4851aefeb9bad8bba4304b2ab36',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader']]], + ['scomputeshadermodel_15',['sComputeShaderModel',['../classne_1_1HlslShader.html#a3a1517efc4f9ba7dac5a6457a0cb368e',1,'ne::HlslShader']]], + ['scomputeshadername_16',['sComputeShaderName',['../classne_1_1ComputePipelineConfiguration.html#ae603d0ac5fe2e2617e8ba4f7048079b8',1,'ne::ComputePipelineConfiguration::sComputeShaderName()'],['../classne_1_1ComputeShaderInterface.html#af5993988c3a9bda596bd0f6e98260fd1',1,'ne::ComputeShaderInterface::sComputeShaderName()']]], + ['sconfigurationfilesectionname_17',['sConfigurationFileSectionName',['../structne_1_1ShaderDescription.html#ac55c02d9a99456781052c57dcc4629c7',1,'ne::ShaderDescription']]], + ['screentoviewdata_18',['ScreenToViewData',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ScreenToViewData.html',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader']]], + ['screenviewport_19',['screenViewport',['../classne_1_1DirectXRenderer.html#a98d18e23fa56be362ebaf4ea6814fc8d',1,'ne::DirectXRenderer']]], + ['scsmodel_20',['sCsModel',['../structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames.html#a15f0780b517e8abc7dfdb4c63ec4f17a',1,'ne::HlslShaderCacheManager::GlobalShaderCacheParameterNames']]], + ['scustomattributeprefix_21',['sCustomAttributePrefix',['../classne_1_1Serializable.html#a8e6d9e5fd4a908f96fa6bea88924ec42',1,'ne::Serializable']]], + ['sdebugonlyloggingprefix_22',['sDebugOnlyLoggingPrefix',['../classne_1_1Globals.html#ac2e17c7f9f01b048d43630073e575d09',1,'ne::Globals']]], + ['sdepthtextureshaderresourcename_23',['sDepthTextureShaderResourceName',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html#ab0dff1c83136f810b8dec7c16d94c649',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader']]], + ['sdescriptorsetlayoutsectionname_24',['sDescriptorSetLayoutSectionName',['../classne_1_1GlslShader.html#af980f61c94377378a09575c3cc40eafa',1,'ne::GlslShader']]], + ['sdiffusetexturepathrelativeres_25',['sDiffuseTexturePathRelativeRes',['../classne_1_1Material.html#a528b72a37e76f4ba18789a0292d06304',1,'ne::Material']]], + ['sdirectionallightsshaderresourcename_26',['sDirectionalLightsShaderResourceName',['../classne_1_1LightingShaderResourceManager.html#a5e198f169498bd4837f1389ed30fd739',1,'ne::LightingShaderResourceManager']]], + ['seditorresourcesdirectoryname_27',['sEditorResourcesDirectoryName',['../classne_1_1ProjectPaths.html#a151bf169edc469379c097b61ce66d046',1,'ne::ProjectPaths']]], + ['selectdirectory_28',['selectDirectory',['../classne_1_1FileDialog.html#acc6217d584191571dd382886ecfd6c7c',1,'ne::FileDialog']]], + ['senginedirectoryname_29',['sEngineDirectoryName',['../classne_1_1ProjectPaths.html#a2f8bef4292bd89aaf7b7416eb8d7dee0',1,'ne::ProjectPaths']]], + ['sengineresourcesdirectoryname_30',['sEngineResourcesDirectoryName',['../classne_1_1ProjectPaths.html#a1d19a95c6f979a7e6408727c64d6ff9a',1,'ne::ProjectPaths']]], + ['serializable_31',['Serializable',['../classne_1_1Serializable.html',1,'ne']]], + ['serializableobjectfieldserializer_32',['SerializableObjectFieldSerializer',['../classne_1_1SerializableObjectFieldSerializer.html',1,'ne']]], + ['serializableobjectinformation_33',['SerializableObjectInformation',['../structne_1_1SerializableObjectInformation.html',1,'ne::SerializableObjectInformation'],['../structne_1_1SerializableObjectInformation.html#aedc442ac8943e01ebe484ef561323c7a',1,'ne::SerializableObjectInformation::SerializableObjectInformation()']]], + ['serializableobjectinformationwithgcpointer_34',['SerializableObjectInformationWithGcPointer',['../structne_1_1Node_1_1SerializableObjectInformationWithGcPointer.html',1,'ne::Node::SerializableObjectInformationWithGcPointer'],['../structne_1_1Node_1_1SerializableObjectInformationWithGcPointer.html#a8f02d725d788ebfb96b0aa6b2374ec87',1,'ne::Node::SerializableObjectInformationWithGcPointer::SerializableObjectInformationWithGcPointer()']]], + ['serializationtype_35',['serializationType',['../classne_1_1Serialize.html#a89e5a52f55c77340fa650ef4b844fbab',1,'ne::Serialize']]], + ['serialize_36',['Serialize',['../classne_1_1Serialize.html',1,'ne']]], + ['serialize_37',['serialize',['../classne_1_1Serializable.html#aa99dd41bee3fdcea40c80bf317cc590d',1,'ne::Serializable::serialize(toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)'],['../classne_1_1Serializable.html#af0a79714019d1b40ce8d063b920bbdcf',1,'ne::Serializable::serialize(toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)'],['../classne_1_1Serializable.html#a2b1c9ee24ea69f0b6231eff5a262e348',1,'ne::Serializable::serialize(std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})']]], + ['serialize_38',['Serialize',['../classne_1_1Serialize.html#a52398891b39f15c4969c39ab7a6f1836',1,'ne::Serialize']]], + ['serializefield_39',['serializeField',['../classne_1_1PrimitiveFieldSerializer.html#aadaced28235434f98d1cb3375b4ad101',1,'ne::PrimitiveFieldSerializer::serializeField()'],['../classne_1_1VectorFieldSerializer.html#a0cfc065e6e5c7538500f303a9679746e',1,'ne::VectorFieldSerializer::serializeField()'],['../classne_1_1UnorderedMapFieldSerializer.html#a5a5fd430dd41791039c18d43f72df037',1,'ne::UnorderedMapFieldSerializer::serializeField()'],['../classne_1_1StringFieldSerializer.html#a48acbfca114bda02ae99cd170b4527d5',1,'ne::StringFieldSerializer::serializeField()'],['../classne_1_1GlmVecFieldSerializer.html#add662acde6c42fa2b8dde1039a52cc2b',1,'ne::GlmVecFieldSerializer::serializeField()'],['../classne_1_1IBinaryFieldSerializer.html#aecaa18ab97b27fdafe074803b223a1fb',1,'ne::IBinaryFieldSerializer::serializeField()'],['../classne_1_1IFieldSerializer.html#aa931301f632674becd2ba222486bbb9e',1,'ne::IFieldSerializer::serializeField()'],['../classne_1_1MeshDataBinaryFieldSerializer.html#a6be0a74036c9cfdec49f935ec65a8aa2',1,'ne::MeshDataBinaryFieldSerializer::serializeField()'],['../classne_1_1SerializableObjectFieldSerializer.html#a3d028fa3ecb3f45b53146487e32ee779',1,'ne::SerializableObjectFieldSerializer::serializeField(toml::value *pTomlData, Serializable *pFieldOwner, const rfk::Field *pField, const std::string &sSectionName, const std::string &sEntityId, size_t &iSubEntityId, Serializable *pOriginalObject=nullptr) override']]], + ['serializefieldobject_40',['serializeFieldObject',['../classne_1_1SerializableObjectFieldSerializer.html#a9d90acc0ff74cb2ac1e2bceffb6ea01d',1,'ne::SerializableObjectFieldSerializer']]], + ['serializemultiple_41',['serializeMultiple',['../classne_1_1Serializable.html#a1f76ea78f80fb43e5e481277a930b364',1,'ne::Serializable']]], + ['serializenodetree_42',['serializeNodeTree',['../classne_1_1Node.html#a40e9b140812be7a938906e36f6e6188b',1,'ne::Node']]], + ['serializeshaderincludetree_43',['serializeShaderIncludeTree',['../structne_1_1ShaderDescription.html#a9e41b60f477834ce5e4d88223f8ee75b',1,'ne::ShaderDescription']]], + ['set_44',['set',['../classne_1_1PipelineSharedPtr.html#a37f875482488fca84e6a82e5f0524705',1,'ne::PipelineSharedPtr']]], + ['setactivecamera_45',['setActiveCamera',['../classne_1_1CameraManager.html#a5e5b95f80a0d2bb1ede34a07f1c48668',1,'ne::CameraManager']]], + ['setambientlight_46',['setAmbientLight',['../classne_1_1LightingShaderResourceManager.html#a2b7f5ff1ff34b822c2e54afb7427fccd',1,'ne::LightingShaderResourceManager::setAmbientLight()'],['../classne_1_1EnvironmentNode.html#a25cab70a6a87acfb2db3b8a01461e0f6',1,'ne::EnvironmentNode::setAmbientLight()']]], + ['setantialiasingquality_47',['setAntialiasingQuality',['../classne_1_1RenderSettings.html#a5e7b93c67a1460ef9fc82a14ff7721ca',1,'ne::RenderSettings']]], + ['setcallbackfortimeout_48',['setCallbackForTimeout',['../classne_1_1Timer.html#adda0aa36c796bf3d9087f50d1a3388b8',1,'ne::Timer']]], + ['setcallbackvalidator_49',['setCallbackValidator',['../classne_1_1Timer.html#a42298aa372846901f5139e57a96b9d55',1,'ne::Timer']]], + ['setcameramode_50',['setCameraMode',['../classne_1_1CameraNode.html#a95c8976cf155363baf45bc5775a273b7',1,'ne::CameraNode']]], + ['setcursor_51',['setCursor',['../classne_1_1Window.html#a6a66b1291fda77f5fc9f3e0796c24b73',1,'ne::Window']]], + ['setcursorvisibility_52',['setCursorVisibility',['../classne_1_1Window.html#a85a2d3ea44db5ff3e1d35a4e8e2a7416',1,'ne::Window']]], + ['setdefaultcursor_53',['setDefaultCursor',['../classne_1_1Window.html#a49e5e779bf99e890ce3543be742596e6',1,'ne::Window']]], + ['setdiffusecolor_54',['setDiffuseColor',['../classne_1_1Material.html#a3f3ef9edcab7dc00f3449fcefee66bea',1,'ne::Material']]], + ['setdiffusetexture_55',['setDiffuseTexture',['../classne_1_1Material.html#a44c6e1c40cc75ce6e8f93b30c60ad8f3',1,'ne::Material']]], + ['setenable_56',['setEnable',['../classne_1_1Timer.html#a1e4b01f28b5d3436354dd5b382f273c3',1,'ne::Timer']]], + ['setenabletransparency_57',['setEnableTransparency',['../classne_1_1Material.html#a5e1abba43e7ecc07d1740bc75872c050',1,'ne::Material']]], + ['setfarclipplanedistance_58',['setFarClipPlaneDistance',['../classne_1_1CameraProperties.html#ac53a9666cf237128fc51aa723114770e',1,'ne::CameraProperties']]], + ['setfov_59',['setFov',['../classne_1_1CameraProperties.html#a0f4b92ad961e55ec6b561f95aac21fd1',1,'ne::CameraProperties']]], + ['setfpslimit_60',['setFpsLimit',['../classne_1_1RenderSettings.html#a573b58c8b74b72d7fcd8f78f8e09f230',1,'ne::RenderSettings']]], + ['setgameinstance_61',['setGameInstance',['../classne_1_1GameManager.html#aead966795a4312f88b60b003ea0a42d7',1,'ne::GameManager']]], + ['setgarbagecollectorruninterval_62',['setGarbageCollectorRunInterval',['../classne_1_1GameManager.html#a3c41dc82e4e6715a3ba543281b6eb63f',1,'ne::GameManager::setGarbageCollectorRunInterval()'],['../classne_1_1GameInstance.html#adcc2960f6fd8aa93c95b6d7f7eb8ee69',1,'ne::GameInstance::setGarbageCollectorRunInterval()']]], + ['setgputouse_63',['setGpuToUse',['../classne_1_1RenderSettings.html#a14aa87d43e3d4575b42f4bc2c10891ff',1,'ne::RenderSettings']]], + ['seticon_64',['setIcon',['../classne_1_1Window.html#af50d6a10dbf861b7450ff633e5f15aa9',1,'ne::Window']]], + ['setignoreinput_65',['setIgnoreInput',['../classne_1_1EditorCameraNode.html#a7e74373b5cabafbec454c8bc45595932',1,'ne::EditorCameraNode']]], + ['setiscalledeveryframe_66',['setIsCalledEveryFrame',['../classne_1_1Node.html#a9294c7c58a8b4f85b7674c55751f4b13',1,'ne::Node']]], + ['setisreceivinginput_67',['setIsReceivingInput',['../classne_1_1Node.html#a8ecdaaf48f89ae036a48ecb38d3ac382',1,'ne::Node']]], + ['setisvisible_68',['setIsVisible',['../classne_1_1MeshNode.html#aaf28d800c9aaaaa16f20ff190a913667',1,'ne::MeshNode']]], + ['setlightcolor_69',['setLightColor',['../classne_1_1DirectionalLightNode.html#abdf4d81d4378056e13447c6ab21e1e91',1,'ne::DirectionalLightNode::setLightColor()'],['../classne_1_1PointLightNode.html#a7ebcc78564997d232927c47c452e2ca3',1,'ne::PointLightNode::setLightColor()'],['../classne_1_1SpotlightNode.html#a7ca35e137d40e80b55e6e5a5a0975f4d',1,'ne::SpotlightNode::setLightColor()']]], + ['setlightdistance_70',['setLightDistance',['../classne_1_1PointLightNode.html#aede9df986937bba7876b54fc2dd9a37c',1,'ne::PointLightNode::setLightDistance()'],['../classne_1_1SpotlightNode.html#a80dedcd160957e4a0d06c20de8c904d3',1,'ne::SpotlightNode::setLightDistance(float distance)']]], + ['setlightinnerconeangle_71',['setLightInnerConeAngle',['../classne_1_1SpotlightNode.html#a72b25ed6e8dd9dc8c3fb6d18dc79cced',1,'ne::SpotlightNode']]], + ['setlightintensity_72',['setLightIntensity',['../classne_1_1DirectionalLightNode.html#a6d6675f5537e58c71b0282e221e65bcb',1,'ne::DirectionalLightNode::setLightIntensity()'],['../classne_1_1SpotlightNode.html#a773f1e3cbe5277c253b8cdcac5a48946',1,'ne::SpotlightNode::setLightIntensity()'],['../classne_1_1PointLightNode.html#ac333b558aa1b9531b5b66f1f0c97113b',1,'ne::PointLightNode::setLightIntensity()']]], + ['setlightouterconeangle_73',['setLightOuterConeAngle',['../classne_1_1SpotlightNode.html#aa370282a587a18d263394791da885dbc',1,'ne::SpotlightNode']]], + ['setmaterial_74',['setMaterial',['../classne_1_1MeshNode.html#a600afde2008f201682f59751d175efb7',1,'ne::MeshNode']]], + ['setmeshdata_75',['setMeshData',['../classne_1_1MeshNode.html#a4e9fc27cf88ec1ec90d732b8fe71737c',1,'ne::MeshNode::setMeshData(const MeshData &meshData)'],['../classne_1_1MeshNode.html#a0d4e8cd51eaf440c9a77a715d8543e24',1,'ne::MeshNode::setMeshData(MeshData &&meshData)']]], + ['setnearclipplanedistance_76',['setNearClipPlaneDistance',['../classne_1_1CameraProperties.html#afe001448fa25b4a8ed57966220e2cba5',1,'ne::CameraProperties']]], + ['setnodename_77',['setNodeName',['../classne_1_1Node.html#aa75cedd320fd643ad154bdceb4b0aad1',1,'ne::Node']]], + ['setobjectdebugonlyname_78',['setObjectDebugOnlyName',['../classne_1_1VulkanRenderer.html#a73e8afa9d6e86aeb33be8fa1c453c8e3',1,'ne::VulkanRenderer']]], + ['setopacity_79',['setOpacity',['../classne_1_1Window.html#a75621710e80bc9b618929d535619e2e8',1,'ne::Window::setOpacity()'],['../classne_1_1Material.html#a2c1e2ef9f66f9f8e69658de3bb3fb491',1,'ne::Material::setOpacity()']]], + ['setorbitaldistancetotarget_80',['setOrbitalDistanceToTarget',['../classne_1_1CameraNode.html#adc8a5c0555ee5de59db5568193884768',1,'ne::CameraNode']]], + ['setorbitalrotation_81',['setOrbitalRotation',['../classne_1_1CameraNode.html#a0d076da378e660ce49629bdebde38340',1,'ne::CameraNode']]], + ['setorbitaltargetlocation_82',['setOrbitalTargetLocation',['../classne_1_1CameraNode.html#a55ef742db7eefc40844697b5c6062276',1,'ne::CameraNode']]], + ['setoutputadapter_83',['setOutputAdapter',['../classne_1_1DirectXRenderer.html#a942ec924b07f40819458bd780037d26c',1,'ne::DirectXRenderer']]], + ['setpreferredrenderer_84',['setPreferredRenderer',['../classne_1_1Window.html#a153750b05d15b500bcc4e62a4b5f1a27',1,'ne::Window::setPreferredRenderer()'],['../classne_1_1RenderSettings.html#a11363c652eb1ee875f816c8d4bfd8266',1,'ne::RenderSettings::setPreferredRenderer(RendererType preferredRenderer)']]], + ['setrefreshrate_85',['setRefreshRate',['../classne_1_1RenderSettings.html#acb5f17b373b5e04b619f4242a0384c22',1,'ne::RenderSettings']]], + ['setrelativelocation_86',['setRelativeLocation',['../classne_1_1SpatialNode.html#a15d5413bbb88c9b259e8e9e48a271ab6',1,'ne::SpatialNode']]], + ['setrelativerotation_87',['setRelativeRotation',['../classne_1_1SpatialNode.html#a32914b6236f0d2675736be0f1ea1cac2',1,'ne::SpatialNode']]], + ['setrelativescale_88',['setRelativeScale',['../classne_1_1SpatialNode.html#aecf859b09995cfac54203d12d5527627',1,'ne::SpatialNode']]], + ['setrenderer_89',['setRenderer',['../classne_1_1RenderSettings.html#ae45e242d04d3dd5c67da39daa8199e75',1,'ne::RenderSettings']]], + ['setrendererconfiguration_90',['setRendererConfiguration',['../classne_1_1ShaderPack.html#ab663e6d76007cf72fa73d27a080b11de',1,'ne::ShaderPack']]], + ['setrendererconfigurationforshaders_91',['setRendererConfigurationForShaders',['../classne_1_1ShaderManager.html#a6bd5b94c95221216d98e690d502c5336',1,'ne::ShaderManager']]], + ['setrenderresolution_92',['setRenderResolution',['../classne_1_1RenderSettings.html#a7801c6f424fc71df5df9663120b2cfd6',1,'ne::RenderSettings']]], + ['setrendertargetsize_93',['setRenderTargetSize',['../classne_1_1CameraProperties.html#a8949fc9efca6bc167ba6bd32e3f9e646',1,'ne::CameraProperties']]], + ['setroughness_94',['setRoughness',['../classne_1_1Material.html#a120643a43142cb24e81bbec6dd8f6dc2',1,'ne::Material']]], + ['setserialize_95',['setSerialize',['../classne_1_1Node.html#ad8cb324f9de9b495f7bc223356540a44',1,'ne::Node']]], + ['setshaderconstants_96',['setShaderConstants',['../classne_1_1Pipeline.html#aa78fa21db079ad0a9f2dbf5b397f2bfe',1,'ne::Pipeline']]], + ['setshadercpuwriteresourcebinding_97',['setShaderCpuWriteResourceBinding',['../classne_1_1MeshNode.html#adf53c8e5bcfdc8cbb3d1bc359ff01273',1,'ne::MeshNode::setShaderCpuWriteResourceBinding()'],['../classne_1_1Material.html#a1bd758e7acff200a7b93ca29304cbbcd',1,'ne::Material::setShaderCpuWriteResourceBinding()']]], + ['setshadertextureresourcebinding_98',['setShaderTextureResourceBinding',['../classne_1_1MeshNode.html#ac6098a2228cffcf6caadeaf98546bbda',1,'ne::MeshNode::setShaderTextureResourceBinding()'],['../classne_1_1Material.html#a799ecf3e2da01410a1823f6132a12fa9',1,'ne::Material::setShaderTextureResourceBinding()']]], + ['setshadowquality_99',['setShadowQuality',['../classne_1_1RenderSettings.html#a80cfef7ef20061158702642785c2be26',1,'ne::RenderSettings']]], + ['setspecularcolor_100',['setSpecularColor',['../classne_1_1Material.html#ac7fa00d994567a8e00e010bca321253d',1,'ne::Material']]], + ['settexturefilteringquality_101',['setTextureFilteringQuality',['../classne_1_1RenderSettings.html#ab0eb617b2ad2b3d3dfd12cfdc4dd35ba',1,'ne::RenderSettings']]], + ['settexturequality_102',['setTextureQuality',['../classne_1_1RenderSettings.html#aef1193285e4a7a670969854d9e5874a2',1,'ne::RenderSettings']]], + ['settickgroup_103',['setTickGroup',['../classne_1_1Node.html#a138f69f892f8b80a89262b8a5f7625b8',1,'ne::Node']]], + ['settitle_104',['setTitle',['../classne_1_1Window.html#addd9d36370af92c039fe462f510470af',1,'ne::Window']]], + ['setupdatedresources_105',['setUpdatedResources',['../classne_1_1ShadowMapHandle.html#ad8a418c66c28f7c0c573461909ee7d64',1,'ne::ShadowMapHandle']]], + ['setuprenderstats_106',['setupRenderStats',['../classne_1_1Renderer.html#a404ad787d39833a8f7d4f66815c55793',1,'ne::Renderer']]], + ['setvalue_107',['setValue',['../classne_1_1ConfigManager.html#a96cb16396d2789a15ef1e0bec6c8c144',1,'ne::ConfigManager']]], + ['setvsyncenabled_108',['setVsyncEnabled',['../classne_1_1RenderSettings.html#a0c1620f0b1a5dc7b569dfdf549f08287',1,'ne::RenderSettings']]], + ['setworldlocation_109',['setWorldLocation',['../classne_1_1SpatialNode.html#a5505c98b284aaf4037e8bf2e31305f2b',1,'ne::SpatialNode']]], + ['setworldrotation_110',['setWorldRotation',['../classne_1_1SpatialNode.html#afb2f513f7406d324c9927af5fec07c26',1,'ne::SpatialNode']]], + ['setworldscale_111',['setWorldScale',['../classne_1_1SpatialNode.html#a95c51087d2b8e3bd43ca218de57a7cca',1,'ne::SpatialNode']]], + ['sexternalnodetreepathattributename_112',['sExternalNodeTreePathAttributeName',['../classne_1_1Node.html#aa2acbbe4c033a34bdc9dd4c76edebc32',1,'ne::Node']]], + ['sfilename_113',['sFilename',['../structne_1_1SourceLocationInfo.html#ab660f1593c1ec62aeb5e3bda363c21c0',1,'ne::SourceLocationInfo']]], + ['sgameresourcesdirectoryname_114',['sGameResourcesDirectoryName',['../classne_1_1ProjectPaths.html#a6ad46a58efc639d3534ed201c8acbe97',1,'ne::ProjectPaths']]], + ['sgcleakreasons_115',['sGcLeakReasons',['../classne_1_1GameManager.html#a04a36c5b960cfcbdd888729815cbef08',1,'ne::GameManager']]], + ['sgenerallightingdatashaderresourcename_116',['sGeneralLightingDataShaderResourceName',['../classne_1_1LightingShaderResourceManager.html#a54cda9f8dbd4c1c4e822e89382ddee39',1,'ne::LightingShaderResourceManager']]], + ['sglobalcountersintolightindexlistshaderresourcename_117',['sGlobalCountersIntoLightIndexListShaderResourceName',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html#a4dc6c808edca63db35d96fec2277e928',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader']]], + ['sglobalshadercacheinfofilename_118',['sGlobalShaderCacheInfoFileName',['../classne_1_1ShaderCacheManager.html#a7a923af976c2986159f70546b24faa79',1,'ne::ShaderCacheManager']]], + ['sgputouse_119',['sGpuToUse',['../classne_1_1RenderSettings.html#ab37f807df2b1249795add7f151aa963e',1,'ne::RenderSettings']]], + ['sguid_120',['sGuid',['../classne_1_1Guid.html#a6222039ce02afb9dea90d8e6067e1f7b',1,'ne::Guid']]], + ['shader_121',['Shader',['../classne_1_1Shader.html',1,'ne::Shader'],['../classne_1_1Shader.html#a636024292405941806fc15521ce9b287',1,'ne::Shader::Shader()']]], + ['shaderarrayindex_122',['ShaderArrayIndex',['../classne_1_1ShaderArrayIndex.html',1,'ne::ShaderArrayIndex'],['../classne_1_1ShaderArrayIndex.html#a121d1c966c6d5f1f0df78386b996b7e6',1,'ne::ShaderArrayIndex::ShaderArrayIndex()']]], + ['shaderarrayindexmanager_123',['ShaderArrayIndexManager',['../classne_1_1ShaderArrayIndexManager.html',1,'ne::ShaderArrayIndexManager'],['../classne_1_1ShaderArrayIndex.html#a62a2c2b3a9c83678fa0df2b314424763',1,'ne::ShaderArrayIndex::ShaderArrayIndexManager()'],['../classne_1_1ShaderArrayIndexManager.html#a5a424260884f301156e09359e65902ec',1,'ne::ShaderArrayIndexManager::ShaderArrayIndexManager()']]], + ['shaderarrayindexmanagers_124',['shaderArrayIndexManagers',['../structne_1_1VulkanPipeline_1_1InternalResources.html#aa192c6e145a905cc4cb3e0d955cda7ca',1,'ne::VulkanPipeline::InternalResources']]], + ['shadercacheinvalidationreasondescription_125',['ShaderCacheInvalidationReasonDescription',['../structne_1_1ShaderCacheInvalidationReasonDescription.html',1,'ne']]], + ['shadercachemanager_126',['ShaderCacheManager',['../classne_1_1ShaderCacheManager.html',1,'ne::ShaderCacheManager'],['../classne_1_1ShaderCacheManager.html#a0b053d2a069dcbdf7dd7c16358eaa517',1,'ne::ShaderCacheManager::ShaderCacheManager()']]], + ['shaderconfiguration_127',['ShaderConfiguration',['../classne_1_1ShaderConfiguration.html',1,'ne::ShaderConfiguration'],['../classne_1_1ShaderConfiguration.html#aaaeb988d1f0747062c84af9bf88ce69a',1,'ne::ShaderConfiguration::ShaderConfiguration()']]], + ['shaderconstantsdata_128',['ShaderConstantsData',['../structne_1_1Pipeline_1_1ShaderConstantsData.html',1,'ne::Pipeline']]], + ['shadercpuwriteresourcebinding_129',['ShaderCpuWriteResourceBinding',['../classne_1_1ShaderCpuWriteResourceBinding.html',1,'ne::ShaderCpuWriteResourceBinding'],['../classne_1_1ShaderCpuWriteResourceBinding.html#af6c9a2063ccf95219b02b677246af7ff',1,'ne::ShaderCpuWriteResourceBinding::ShaderCpuWriteResourceBinding()']]], + ['shadercpuwriteresourcebindingmanager_130',['ShaderCpuWriteResourceBindingManager',['../classne_1_1ShaderCpuWriteResourceBindingManager.html',1,'ne::ShaderCpuWriteResourceBindingManager'],['../classne_1_1ShaderCpuWriteResourceBindingManager.html#a1f14598de45ac6b859feed077efe526f',1,'ne::ShaderCpuWriteResourceBindingManager::ShaderCpuWriteResourceBindingManager()']]], + ['shadercpuwriteresourcebindings_131',['shaderCpuWriteResourceBindings',['../structne_1_1MeshNode_1_1GpuResources_1_1ShaderResources.html#ab50423922bd9432b8acea0b41ac4cef9',1,'ne::MeshNode::GpuResources::ShaderResources']]], + ['shadercpuwriteresourcebindinguniqueptr_132',['ShaderCpuWriteResourceBindingUniquePtr',['../classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html',1,'ne::ShaderCpuWriteResourceBindingUniquePtr'],['../classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html#ac6eb58a83bfc18d5f2e1847c9dcfd1b0',1,'ne::ShaderCpuWriteResourceBindingUniquePtr::ShaderCpuWriteResourceBindingUniquePtr(ShaderCpuWriteResourceBindingManager *pManager, ShaderCpuWriteResourceBinding *pResource)'],['../classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html#abd1d66d75b317333b829c1f9a864e29b',1,'ne::ShaderCpuWriteResourceBindingUniquePtr::ShaderCpuWriteResourceBindingUniquePtr(ShaderCpuWriteResourceBindingUniquePtr &&other) noexcept']]], + ['shadercpuwriteresources_133',['shaderCpuWriteResources',['../structne_1_1Material_1_1GpuResources_1_1ShaderResources.html#a2316dad7d5e37fe53732722e83043275',1,'ne::Material::GpuResources::ShaderResources']]], + ['shaderdata_134',['ShaderData',['../structne_1_1DirectionalLightNode_1_1ShaderData.html',1,'ne::DirectionalLightNode::ShaderData'],['../structne_1_1PointLightNode_1_1ShaderData.html',1,'ne::PointLightNode::ShaderData'],['../structne_1_1ShaderManager_1_1ShaderData.html',1,'ne::ShaderManager::ShaderData'],['../structne_1_1SpotlightNode_1_1ShaderData.html',1,'ne::SpotlightNode::ShaderData']]], + ['shaderdata_135',['shaderData',['../structne_1_1SpotlightNode_1_1ShaderData_1_1ShadowPassDataGroup.html#a8f73611a9b651f99a3a91d92c309e344',1,'ne::SpotlightNode::ShaderData::ShadowPassDataGroup::shaderData()'],['../structne_1_1PointLightNode_1_1ShaderData_1_1ShadowPassDataGroup.html#a00edf2c22d0ebcfba28f34edafb2949b',1,'ne::PointLightNode::ShaderData::ShadowPassDataGroup::shaderData()'],['../structne_1_1PointLightNode_1_1ShaderData.html#a5b2e09e40420fd7e483b0b071d2e841a',1,'ne::PointLightNode::ShaderData::shaderData()'],['../structne_1_1DirectionalLightNode_1_1ShaderData_1_1ShadowPassDataGroup.html#a681eee0b2b196163e5ff75024ef8a72d',1,'ne::DirectionalLightNode::ShaderData::ShadowPassDataGroup::shaderData()'],['../structne_1_1SpotlightNode_1_1ShaderData.html#aa51b094af8c0f8bc1e87f3c691816d0f',1,'ne::SpotlightNode::ShaderData::shaderData()'],['../structne_1_1DirectionalLightNode_1_1ShaderData.html#abcf30e42761f882c2a22a60a867ef501',1,'ne::DirectionalLightNode::ShaderData::shaderData()']]], + ['shaderdescription_136',['ShaderDescription',['../structne_1_1ShaderDescription.html',1,'ne::ShaderDescription'],['../structne_1_1ShaderDescription.html#a97a6839e98880d6e3f3644534de1d3f6',1,'ne::ShaderDescription::ShaderDescription(std::string_view sShaderName, const std::filesystem::path &pathToShaderFile, ShaderType shaderType, std::optional< VertexFormat > vertexFormat, const std::string &sShaderEntryFunctionName, const std::unordered_map< std::string, std::string > &definedShaderMacros)'],['../structne_1_1ShaderDescription.html#ab5bfedd7ce317fd80e304006ad5e4a67',1,'ne::ShaderDescription::ShaderDescription(const ShaderDescription &other) noexcept=default'],['../structne_1_1ShaderDescription.html#a2c70945fe59e6a3284dd2aa7dd1defab',1,'ne::ShaderDescription::ShaderDescription(ShaderDescription &&other) noexcept=default']]], + ['shaderfilesystempaths_137',['ShaderFilesystemPaths',['../classne_1_1ShaderFilesystemPaths.html',1,'ne']]], + ['shaderincludetreehashes_138',['shaderIncludeTreeHashes',['../structne_1_1ShaderDescription.html#abe7847a8b8a84e8f9b064a97f34569e7',1,'ne::ShaderDescription']]], + ['shaderlightarray_139',['ShaderLightArray',['../classne_1_1ShaderLightArray.html',1,'ne::ShaderLightArray'],['../classne_1_1ShaderLightArray.html#a82364a0934412cb48f7ac3f8d2a71696',1,'ne::ShaderLightArray::ShaderLightArray()']]], + ['shaderlightarrayslot_140',['ShaderLightArraySlot',['../classne_1_1ShaderLightArraySlot.html',1,'ne::ShaderLightArraySlot'],['../classne_1_1ShaderLightArraySlot.html#aae03ed0253b5a738e8a4d40598c2f931',1,'ne::ShaderLightArraySlot::ShaderLightArraySlot()']]], + ['shaderlightsinfrustumsingletype_141',['ShaderLightsInFrustumSingleType',['../structne_1_1ShaderLightsInFrustumSingleType.html',1,'ne']]], + ['shadermacroconfigurations_142',['ShaderMacroConfigurations',['../structne_1_1ShaderMacroConfigurations.html',1,'ne']]], + ['shadermacrosethash_143',['ShaderMacroSetHash',['../structne_1_1ShaderMacroSetHash.html',1,'ne']]], + ['shadermanager_144',['ShaderManager',['../classne_1_1ShaderManager.html',1,'ne::ShaderManager'],['../classne_1_1ShaderManager.html#a7b7db57803fdfd091373e3efc2a23808',1,'ne::ShaderManager::ShaderManager()']]], + ['shaderpack_145',['ShaderPack',['../classne_1_1ShaderPack.html',1,'ne::ShaderPack'],['../classne_1_1ShaderPack.html#a42ceba304a51e8c5585dbe9c1771f869',1,'ne::ShaderPack::ShaderPack()']]], + ['shaderpipelines_146',['ShaderPipelines',['../structne_1_1ShaderPipelines.html',1,'ne']]], + ['shaderpipelines_147',['shaderPipelines',['../structne_1_1ShaderPipelines.html#ac0c157dd3f1722b618dbb90c8bd0948f',1,'ne::ShaderPipelines']]], + ['shaderresourcebindingbase_148',['ShaderResourceBindingBase',['../classne_1_1ShaderResourceBindingBase.html',1,'ne::ShaderResourceBindingBase'],['../classne_1_1ShaderResourceBindingBase.html#a605b56970e874418a368dda9eca826ef',1,'ne::ShaderResourceBindingBase::ShaderResourceBindingBase()']]], + ['shaderresources_149',['ShaderResources',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ShaderResources.html',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ShaderResources'],['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources'],['../structne_1_1Material_1_1GpuResources_1_1ShaderResources.html',1,'ne::Material::GpuResources::ShaderResources'],['../structne_1_1MeshNode_1_1GpuResources_1_1ShaderResources.html',1,'ne::MeshNode::GpuResources::ShaderResources']]], + ['shaderresources_150',['shaderResources',['../structne_1_1MeshNode_1_1GpuResources.html#ad66faf255758b1f237a039a2f8f63836',1,'ne::MeshNode::GpuResources::shaderResources()'],['../structne_1_1Material_1_1GpuResources.html#add66a9d862031e8607fe72a25e0b5081',1,'ne::Material::GpuResources::shaderResources()']]], + ['shadersinpack_151',['shadersInPack',['../structne_1_1ShaderPack_1_1InternalResources.html#a2b1a92569e696388fc39951354869d14',1,'ne::ShaderPack::InternalResources']]], + ['shadertextureresourcebinding_152',['ShaderTextureResourceBinding',['../classne_1_1ShaderTextureResourceBinding.html',1,'ne::ShaderTextureResourceBinding'],['../classne_1_1ShaderTextureResourceBinding.html#aa9ee18e305ac2dd28e568b26547ed002',1,'ne::ShaderTextureResourceBinding::ShaderTextureResourceBinding()']]], + ['shadertextureresourcebindingmanager_153',['ShaderTextureResourceBindingManager',['../classne_1_1ShaderTextureResourceBindingManager.html',1,'ne::ShaderTextureResourceBindingManager'],['../classne_1_1ShaderTextureResourceBindingManager.html#a3c5f6cd000c9ca1b878c86f10d505d1e',1,'ne::ShaderTextureResourceBindingManager::ShaderTextureResourceBindingManager()']]], + ['shadertextureresourcebindinguniqueptr_154',['ShaderTextureResourceBindingUniquePtr',['../classne_1_1ShaderTextureResourceBindingUniquePtr.html',1,'ne::ShaderTextureResourceBindingUniquePtr'],['../classne_1_1ShaderTextureResourceBindingUniquePtr.html#a11790c77dc523ed2e7f1226cab6e62dc',1,'ne::ShaderTextureResourceBindingUniquePtr::ShaderTextureResourceBindingUniquePtr(ShaderTextureResourceBindingManager *pManager, ShaderTextureResourceBinding *pResource)'],['../classne_1_1ShaderTextureResourceBindingUniquePtr.html#a9c914f9cf46978f0f5ecc5b012a32e65',1,'ne::ShaderTextureResourceBindingUniquePtr::ShaderTextureResourceBindingUniquePtr(ShaderTextureResourceBindingUniquePtr &&other) noexcept']]], + ['shadertextureresources_155',['shaderTextureResources',['../structne_1_1MeshNode_1_1GpuResources_1_1ShaderResources.html#a4811058857d732063d3e9fc42a54a82f',1,'ne::MeshNode::GpuResources::ShaderResources::shaderTextureResources()'],['../structne_1_1Material_1_1GpuResources_1_1ShaderResources.html#a684000eb8f977f3ea4e0d196c90699bd',1,'ne::Material::GpuResources::ShaderResources::shaderTextureResources()']]], + ['shadertype_156',['shaderType',['../classne_1_1ShaderPack.html#a881769542fcc6c539e914044e76bcaae',1,'ne::ShaderPack::shaderType()'],['../structne_1_1ShaderDescription.html#ab160a0865d201195b9532da859af493c',1,'ne::ShaderDescription::shaderType()'],['../classne_1_1Shader.html#a330a0ab1cb0f458dc2dec50bbb978dd7',1,'ne::Shader::shaderType()']]], + ['shaderuser_157',['ShaderUser',['../classne_1_1ShaderUser.html',1,'ne::ShaderUser'],['../classne_1_1ShaderUser.html#ac15d8ee87b0b270395bd82996295731d',1,'ne::ShaderUser::ShaderUser()']]], + ['shadowmaparrayindexmanager_158',['ShadowMapArrayIndexManager',['../classne_1_1ShadowMapArrayIndexManager.html',1,'ne::ShadowMapArrayIndexManager'],['../classne_1_1ShadowMapArrayIndexManager.html#a1f0f881fdde61426686c58790e19f391',1,'ne::ShadowMapArrayIndexManager::ShadowMapArrayIndexManager()']]], + ['shadowmapformat_159',['shadowMapFormat',['../classne_1_1DirectXRenderer.html#a5919744c5b533cdb65adcc005a14d59e',1,'ne::DirectXRenderer::shadowMapFormat()'],['../classne_1_1VulkanRenderer.html#ae373f4efe6fdfd5e0b6bb7c11744b2ab',1,'ne::VulkanRenderer::shadowMapFormat()']]], + ['shadowmaphandle_160',['ShadowMapHandle',['../classne_1_1ShadowMapHandle.html',1,'ne::ShadowMapHandle'],['../classne_1_1ShadowMapHandle.html#a8f8e2251279ff44699033533ca53b77b',1,'ne::ShadowMapHandle::ShadowMapHandle()']]], + ['shadowmaphandleresources_161',['ShadowMapHandleResources',['../structne_1_1ShadowMapManager_1_1ShadowMapHandleResources.html',1,'ne::ShadowMapManager']]], + ['shadowmapmanager_162',['ShadowMapManager',['../classne_1_1ShadowMapManager.html',1,'ne::ShadowMapManager'],['../classne_1_1ShadowMapManager.html#ab2160d05ed38e5ab2ae6ac7f5011f6a5',1,'ne::ShadowMapManager::ShadowMapManager()']]], + ['shadowmappingpointlightcolortargetformat_163',['shadowMappingPointLightColorTargetFormat',['../classne_1_1DirectXRenderer.html#a2b01c134f0356954739bdcf1ffa0ac91',1,'ne::DirectXRenderer::shadowMappingPointLightColorTargetFormat()'],['../classne_1_1VulkanRenderer.html#a8c6e8c90a17cdd220d2e283f6d477b07',1,'ne::VulkanRenderer::shadowMappingPointLightColorTargetFormat()']]], + ['shadowmappingusage_164',['shadowMappingUsage',['../classne_1_1DepthPipelineConfiguration.html#ad554869e4860489731b6bae33890a8aa',1,'ne::DepthPipelineConfiguration']]], + ['shadowmaps_165',['shadowMaps',['../structne_1_1ShadowMapManager_1_1InternalResources.html#afa746a1d5243ac4f55e4251d1fd4a5d3',1,'ne::ShadowMapManager::InternalResources']]], + ['shadowmaptype_166',['shadowMapType',['../classne_1_1ShadowMapHandle.html#a6dd406a66318c3643acbd2dc7e097838',1,'ne::ShadowMapHandle']]], + ['shadowpassdata_167',['shadowPassData',['../structne_1_1DirectionalLightNode_1_1ShaderData.html#a4882f0fc4adf2a96edcac155ce718fb4',1,'ne::DirectionalLightNode::ShaderData::shadowPassData()'],['../structne_1_1SpotlightNode_1_1ShaderData.html#a866d4d1a7e6dffe3a1f2e9b0ce6049b0',1,'ne::SpotlightNode::ShaderData::shadowPassData()']]], + ['shadowpassdatagroup_168',['ShadowPassDataGroup',['../structne_1_1DirectionalLightNode_1_1ShaderData_1_1ShadowPassDataGroup.html',1,'ne::DirectionalLightNode::ShaderData::ShadowPassDataGroup'],['../structne_1_1PointLightNode_1_1ShaderData_1_1ShadowPassDataGroup.html',1,'ne::PointLightNode::ShaderData::ShadowPassDataGroup'],['../structne_1_1SpotlightNode_1_1ShaderData_1_1ShadowPassDataGroup.html',1,'ne::SpotlightNode::ShaderData::ShadowPassDataGroup']]], + ['shadowpasslightshaderinfo_169',['ShadowPassLightShaderInfo',['../structne_1_1ShadowPassLightShaderInfo.html',1,'ne']]], + ['shandledshaderresourcename_170',['sHandledShaderResourceName',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a3cc604b5b0fd60c0a88c9a132d1bf4d0',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['sheaptype_171',['sHeapType',['../classne_1_1DirectXDescriptorHeap.html#a4b93027e11cc694ad917892352412563',1,'ne::DirectXDescriptorHeap']]], + ['shlslsectionname_172',['sHlslSectionName',['../classne_1_1HlslShaderCacheManager.html#abba14bfece867f7e7a1ff9b94cf56ee6',1,'ne::HlslShaderCacheManager::sHlslSectionName()'],['../classne_1_1HlslShader.html#a99f9b9469f4040bc49fb10fd065b70be',1,'ne::HlslShader::sHlslSectionName()']]], + ['show_173',['show',['../classne_1_1Window.html#a495b1c4bccac831b35bd2499188dd197',1,'ne::Window']]], + ['showerror_174',['showError',['../classne_1_1Error.html#ade90dc178bddb9810268ecdcf987b5ec',1,'ne::Error']]], + ['showerrorifnotonmainthread_175',['showErrorIfNotOnMainThread',['../classne_1_1Window.html#a8f32169e1d18621b2a138b5b8024040e',1,'ne::Window']]], + ['shrinkarray_176',['shrinkArray',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#ac52e605871bb0ec51f51800741dcbe25',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['shrinkheapifpossible_177',['shrinkHeapIfPossible',['../classne_1_1DirectXDescriptorHeap.html#a65b75fd5fba26eb90482730d7636079d',1,'ne::DirectXDescriptorHeap']]], + ['sinitialincludechaintext_178',['sInitialIncludeChainText',['../structne_1_1ShaderDescription.html#aad82581cf18695066d1c57b65a3376f2',1,'ne::ShaderDescription']]], + ['sisreleasebuild_179',['sIsReleaseBuild',['../structne_1_1ShaderCacheManager_1_1GlobalShaderCacheParameterNames.html#ab220de1e22f76adaf312b4db2476dbca',1,'ne::ShaderCacheManager::GlobalShaderCacheParameterNames']]], + ['sline_180',['sLine',['../structne_1_1SourceLocationInfo.html#a77e068228b4281f7176d4168ae9bd187',1,'ne::SourceLocationInfo']]], + ['slogfileextension_181',['sLogFileExtension',['../classne_1_1Logger.html#ab64533344013fa20bcc6c7c10de8d11a',1,'ne::Logger']]], + ['sloggerworkingdirectory_182',['sLoggerWorkingDirectory',['../classne_1_1Logger.html#a0d5dbdb45e98008f6fdcdbb244633e4a',1,'ne::Logger']]], + ['slogsdirectoryname_183',['sLogsDirectoryName',['../classne_1_1ProjectPaths.html#a3549467613dbe46ee6c26a55d804df49',1,'ne::ProjectPaths']]], + ['smallfloatepsilon_184',['smallFloatEpsilon',['../classne_1_1MathHelpers.html#a288c427593c173fadda2f8792fc9813f',1,'ne::MathHelpers']]], + ['smaterialname_185',['sMaterialName',['../classne_1_1Material.html#a89b5b82ea6d591ab0c434a7d2d1a8015',1,'ne::Material']]], + ['smaterialshaderbuffername_186',['sMaterialShaderBufferName',['../classne_1_1Material.html#a93d6ef4a29ecadfcbf5bcd74f6758be7',1,'ne::Material']]], + ['smaterialshaderdiffusetexturename_187',['sMaterialShaderDiffuseTextureName',['../classne_1_1Material.html#a038cf865bb15bfb6860cbad3e4d556c7',1,'ne::Material']]], + ['smeshshaderconstantbuffername_188',['sMeshShaderConstantBufferName',['../classne_1_1MeshNode.html#a8c41558c27b79d1cb8cf9861769d2f68',1,'ne::MeshNode']]], + ['smessage_189',['sMessage',['../classne_1_1Error.html#a900512cdaac67553650f709ed7242bfa',1,'ne::Error']]], + ['sname_190',['sName',['../classne_1_1ShaderArrayIndexManager.html#a70df4c78228287b39a5a43fc1c913c05',1,'ne::ShaderArrayIndexManager']]], + ['snodename_191',['sNodeName',['../classne_1_1Node.html#abf5d0aa8bddaf3927e80dddb787fbe26',1,'ne::Node']]], + ['snothingtoserializekey_192',['sNothingToSerializeKey',['../classne_1_1Serializable.html#a909285db66b8dad8e83bfad4dcafa59c',1,'ne::Serializable']]], + ['sobjectuniqueid_193',['sObjectUniqueId',['../structne_1_1DeserializedObjectInformation.html#afa7aac4cb83c851a40ea466f1755dddb',1,'ne::DeserializedObjectInformation::sObjectUniqueId()'],['../structne_1_1SerializableObjectInformation.html#a843a31c2abe2fb41b9e711fdee6df157',1,'ne::SerializableObjectInformation::sObjectUniqueId()']]], + ['sourcelocationinfo_194',['SourceLocationInfo',['../structne_1_1SourceLocationInfo.html',1,'ne']]], + ['sourcelocationtoinfo_195',['sourceLocationToInfo',['../classne_1_1Error.html#a95e64d00cb9ccbab81ee925d5f2deb3f',1,'ne::Error']]], + ['sparentnodeidattributename_196',['sParentNodeIdAttributeName',['../classne_1_1Node.html#aaab872e5e0cda5bd3e50b37096d46b3d',1,'ne::Node']]], + ['spathrelativetoreskey_197',['sPathRelativeToResKey',['../classne_1_1Serializable.html#ab488404eca6e23051944f1618e9fbbcb',1,'ne::Serializable']]], + ['spathtoresourcerelativeres_198',['sPathToResourceRelativeRes',['../classne_1_1TextureHandle.html#a1b0358befaed9fabad049e9484aa99c8',1,'ne::TextureHandle']]], + ['spatialnode_199',['SpatialNode',['../classne_1_1SpatialNode.html',1,'ne::SpatialNode'],['../classne_1_1SpatialNode.html#ac02b39a7177a89acf9613d4b1bb9f203',1,'ne::SpatialNode::SpatialNode()']]], + ['spawn_200',['spawn',['../classne_1_1Node.html#a2d0cdd65e3886dd5e069a099701f0124',1,'ne::Node']]], + ['spawneditornodesfornewworld_201',['spawnEditorNodesForNewWorld',['../classne_1_1EditorGameInstance.html#a396c05b1176a5d1d5b915416106754af',1,'ne::EditorGameInstance']]], + ['specialconstantsnames_202',['SpecialConstantsNames',['../structne_1_1PipelineShaderConstantsManager_1_1SpecialConstantsNames.html',1,'ne::PipelineShaderConstantsManager']]], + ['specularcolor_203',['specularColor',['../structne_1_1Material_1_1MaterialShaderConstants.html#aa5e1d39957d5d915ced0cdc6045cb83c',1,'ne::Material::MaterialShaderConstants::specularColor()'],['../classne_1_1Material.html#a5d4c5f42d34b2bd22969db838551373b',1,'ne::Material::specularColor()']]], + ['speeddecreasemultiplier_204',['speedDecreaseMultiplier',['../classne_1_1EditorCameraNode.html#abf57cb35c798352b8b87c0a8f3098f88',1,'ne::EditorCameraNode']]], + ['speedincreasemultiplier_205',['speedIncreaseMultiplier',['../classne_1_1EditorCameraNode.html#a75367bd52da285d673fa6934c1180946',1,'ne::EditorCameraNode']]], + ['sphere_206',['Sphere',['../structne_1_1Sphere.html',1,'ne::Sphere'],['../structne_1_1Sphere.html#add0f174b3583a3acb6cb4eedbf02b747',1,'ne::Sphere::Sphere()=default'],['../structne_1_1Sphere.html#a7d17f66b91d761f31a51de2052521771',1,'ne::Sphere::Sphere(const glm::vec3 &center, float radius)']]], + ['spixelshadermodel_207',['sPixelShaderModel',['../classne_1_1HlslShader.html#a39925e2307d5c222077ddccd94b5818d',1,'ne::HlslShader']]], + ['spixelshadername_208',['sPixelShaderName',['../classne_1_1ColorPipelineConfiguration.html#a1bdcc647e6d7ba77af2db317d3e0645d',1,'ne::ColorPipelineConfiguration::sPixelShaderName()'],['../classne_1_1Material.html#a30a5becd28841cfc24365e2d55a77de6',1,'ne::Material::sPixelShaderName()']]], + ['splitstring_209',['splitString',['../classne_1_1InputManager.html#a14249a877d01c2e11358beceb650333e',1,'ne::InputManager']]], + ['spointlightsincamerafrustumindicesshaderresourcename_210',['sPointLightsInCameraFrustumIndicesShaderResourceName',['../classne_1_1LightingShaderResourceManager.html#a62ab5e3e0875d9240561ebaae8cb59c8',1,'ne::LightingShaderResourceManager']]], + ['spointlightsshaderresourcename_211',['sPointLightsShaderResourceName',['../classne_1_1LightingShaderResourceManager.html#ad3c83434efe1ffcf3282610e4f77a648',1,'ne::LightingShaderResourceManager']]], + ['spotlightnode_212',['SpotlightNode',['../classne_1_1SpotlightNode.html',1,'ne::SpotlightNode'],['../classne_1_1SpotlightNode.html#a199b559a25939ea3c00dab93e7123107',1,'ne::SpotlightNode::SpotlightNode(const std::string &sNodeName)']]], + ['spotlightshaderdata_213',['SpotlightShaderData',['../structne_1_1SpotlightNode_1_1SpotlightShaderData.html',1,'ne::SpotlightNode']]], + ['sprogressdirectoryname_214',['sProgressDirectoryName',['../classne_1_1ProjectPaths.html#a0a7938c84a1bc9ac757d7f62a1ae9381',1,'ne::ProjectPaths']]], + ['spsmodel_215',['sPsModel',['../structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames.html#a778801411f848a492609081f70c7c3ed',1,'ne::HlslShaderCacheManager::GlobalShaderCacheParameterNames']]], + ['srangename_216',['sRangeName',['../classne_1_1ContinuousDirectXDescriptorRange.html#a05ec3596392cdd1ec02ab4409f908608',1,'ne::ContinuousDirectXDescriptorRange']]], + ['sreflectionfilehashkeyname_217',['sReflectionFileHashKeyName',['../classne_1_1HlslShader.html#a9d599c25ac642d528bcf617b307cbe75',1,'ne::HlslShader']]], + ['srenderer_218',['sRenderer',['../structne_1_1ShaderCacheManager_1_1GlobalShaderCacheParameterNames.html#a3036229e5d825b07a19204d549cceea9',1,'ne::ShaderCacheManager::GlobalShaderCacheParameterNames']]], + ['srendersettingsconfigurationfilename_219',['sRenderSettingsConfigurationFileName',['../classne_1_1RenderSettings.html#ae3f04a9f9b90310bc7884b1e66c8dfc1',1,'ne::RenderSettings']]], + ['sresdirectoryname_220',['sResDirectoryName',['../classne_1_1Globals.html#a8cd412a05bd2a03d59f5d26f53e4508b',1,'ne::Globals']]], + ['sresourcename_221',['sResourceName',['../classne_1_1GpuResource.html#a358a7024087350c0cd8bd60ac6ac230a',1,'ne::GpuResource::sResourceName()'],['../structne_1_1DescriptorSetLayoutGenerator_1_1Collected_1_1DescriptorSetLayoutBindingInfo.html#a59041cfd0262ba947ead347a73137889',1,'ne::DescriptorSetLayoutGenerator::Collected::DescriptorSetLayoutBindingInfo::sResourceName()']]], + ['srootconstantstypename_222',['sRootConstantsTypeName',['../classne_1_1RootSignatureGenerator.html#a0a9f9f8c3de6c045b74b9e4d2054220f',1,'ne::RootSignatureGenerator']]], + ['srootconstantsvariablename_223',['sRootConstantsVariableName',['../classne_1_1RootSignatureGenerator.html#ac619c86cc59c437c1ec93546ced9da51',1,'ne::RootSignatureGenerator']]], + ['srvresources_224',['srvResources',['../classne_1_1HlslComputeShaderInterface.html#af7550fa29176214bb0c209b76819246f',1,'ne::HlslComputeShaderInterface']]], + ['sscreentoviewdatashaderresourcename_225',['sScreenToViewDataShaderResourceName',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html#a65ea00788dfd5a1d4dc14ae8b2683e3f',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader']]], + ['ssettingsdirectoryname_226',['sSettingsDirectoryName',['../classne_1_1ProjectPaths.html#af6fd932df98589e4a0727f771b088be7',1,'ne::ProjectPaths']]], + ['sshaderarrayresourcename_227',['sShaderArrayResourceName',['../classne_1_1ShadowMapArrayIndexManager.html#a9712673eeccb5e80dd4bba1a2f0002b8',1,'ne::ShadowMapArrayIndexManager']]], + ['sshadercachebasefilename_228',['sShaderCacheBaseFileName',['../classne_1_1ShaderFilesystemPaths.html#a8c613593e444e2b433550c67d7e2e384',1,'ne::ShaderFilesystemPaths']]], + ['sshadercachedirectoryname_229',['sShaderCacheDirectoryName',['../classne_1_1ProjectPaths.html#a4f39d6884b212b0a084d76661fa36d22',1,'ne::ProjectPaths']]], + ['sshaderentryfunctionname_230',['sShaderEntryFunctionName',['../structne_1_1ShaderDescription.html#a6ea46c4fe661cfe52fb0c638e7894acd',1,'ne::ShaderDescription']]], + ['sshaderlightresourcename_231',['sShaderLightResourceName',['../classne_1_1ShaderLightArray.html#ae2f84853d5b089acaa0c88910c6bb470',1,'ne::ShaderLightArray']]], + ['sshadername_232',['sShaderName',['../classne_1_1Shader.html#a9ea3663fd2e444e970fa115805aff102',1,'ne::Shader::sShaderName()'],['../classne_1_1ShaderPack.html#ac9e80f76d3fe09e95c34aab120404159',1,'ne::ShaderPack::sShaderName()'],['../structne_1_1ShaderDescription.html#aff6b5495bae40362c1fceed70296c5b5',1,'ne::ShaderDescription::sShaderName()']]], + ['sshaderparserversion_233',['sShaderParserVersion',['../structne_1_1ShaderCacheManager_1_1GlobalShaderCacheParameterNames.html#aa061f2965fbedabe62c27c95f015bbbf',1,'ne::ShaderCacheManager::GlobalShaderCacheParameterNames']]], + ['sshaderreflectionfileextension_234',['sShaderReflectionFileExtension',['../classne_1_1HlslShader.html#a4b03d7874db7cb265d4321ec3fce941a',1,'ne::HlslShader']]], + ['sshaderresourcename_235',['sShaderResourceName',['../classne_1_1GlobalShaderResourceBinding.html#a5571b363ff790b22bf21658916e4d1f9',1,'ne::GlobalShaderResourceBinding::sShaderResourceName()'],['../classne_1_1ShaderResourceBindingBase.html#a9f8fc5fdd024fa41de9e601b633ab649',1,'ne::ShaderResourceBindingBase::sShaderResourceName()'],['../structne_1_1ShaderLightsInFrustumSingleType.html#ade10618bf07c10fd845605b50565667c',1,'ne::ShaderLightsInFrustumSingleType::sShaderResourceName()']]], + ['sshadowpasslightinfoshaderresourcename_236',['sShadowPassLightInfoShaderResourceName',['../classne_1_1LightingShaderResourceManager.html#a57426b38bcc52d0f2a060ae63157d6f7',1,'ne::LightingShaderResourceManager']]], + ['ssourcefilehash_237',['sSourceFileHash',['../classne_1_1HlslShader.html#a4e3883efa2d40c42aebbb95e0734fe6b',1,'ne::HlslShader::sSourceFileHash()'],['../structne_1_1ShaderDescription.html#a3eef28fee52b03a265ddf45bdd1e4bb0',1,'ne::ShaderDescription::sSourceFileHash()']]], + ['sspotlightsincamerafrustumindicesshaderresourcename_238',['sSpotlightsInCameraFrustumIndicesShaderResourceName',['../classne_1_1LightingShaderResourceManager.html#a36a7b6f9ede646d14e783fb05ee4a983',1,'ne::LightingShaderResourceManager']]], + ['sspotlightsshaderresourcename_239',['sSpotlightsShaderResourceName',['../classne_1_1LightingShaderResourceManager.html#a7d68298ec87b9ee66fec4551a1fdcb45',1,'ne::LightingShaderResourceManager']]], + ['sstringcanonicaltypename_240',['sStringCanonicalTypeName',['../classne_1_1VectorFieldSerializer.html#a3fa05b4859812c3aa4c20a88d1a56999',1,'ne::VectorFieldSerializer::sStringCanonicalTypeName()'],['../classne_1_1StringFieldSerializer.html#aa8da35dc89ea30012f32209fe4e28700',1,'ne::StringFieldSerializer::sStringCanonicalTypeName()']]], + ['ssubentityfieldnamekey_241',['sSubEntityFieldNameKey',['../classne_1_1SerializableObjectFieldSerializer.html#a68b44cd006a6b1fc7ed4a8092b3cb59b',1,'ne::SerializableObjectFieldSerializer::sSubEntityFieldNameKey()'],['../classne_1_1Serializable.html#a23b63a86bea9420f2d053c90c234c232',1,'ne::Serializable::sSubEntityFieldNameKey()']]], + ['stack_242',['stack',['../classne_1_1Error.html#aa431a33d6e2c5f535034eaabba4eb5c1',1,'ne::Error']]], + ['start_243',['start',['../classne_1_1Timer.html#ac46cfad93a59a7cfe0671783d0b3d9ad',1,'ne::Timer']]], + ['startdepthonlyrenderpass_244',['startDepthOnlyRenderPass',['../classne_1_1VulkanRenderer.html#a4f4d6c9fdc4a49289136ba7d47946b38',1,'ne::VulkanRenderer']]], + ['startmainrenderpass_245',['startMainRenderPass',['../classne_1_1VulkanRenderer.html#ac02641d6d9eb0a4da9d07eca2f6df847',1,'ne::VulkanRenderer']]], + ['startshadowmappingrenderpass_246',['startShadowMappingRenderPass',['../classne_1_1VulkanRenderer.html#adc006ddec7ab5d6a4e495efaff01058a',1,'ne::VulkanRenderer']]], + ['startupdatecallback_247',['startUpdateCallback',['../classne_1_1ShaderLightArraySlot.html#a082a89cfbc8ce192acb19a2a6c880e80',1,'ne::ShaderLightArraySlot']]], + ['staticsamplers_248',['staticSamplers',['../structne_1_1RootSignatureGenerator_1_1CollectedInfo.html#a1c432c061a0223f842085c16ebda8249',1,'ne::RootSignatureGenerator::CollectedInfo']]], + ['stdstringhash_249',['StdStringHash',['../structne_1_1StdStringHash.html',1,'ne']]], + ['stencilresolvemode_250',['stencilResolveMode',['../classne_1_1VulkanRenderer.html#abe61b6d29c18f3fe82834ab9cadab702',1,'ne::VulkanRenderer']]], + ['stextureformatextension_251',['sTextureFormatExtension',['../classne_1_1TextureManager.html#aaef42d1ed7ad4cce4c506518887e0420',1,'ne::TextureManager']]], + ['sthreadgroupcountshaderresourcename_252',['sThreadGroupCountShaderResourceName',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html#aa2e8cc871ecf76056c9346df2bc7b1d6',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader']]], + ['stimername_253',['sTimerName',['../classne_1_1Timer.html#a0316d6c147c94eb3a07232c126552d3d',1,'ne::Timer']]], + ['stop_254',['stop',['../classne_1_1ThreadPool.html#a9e37ae656bbc187039137e24e92dd90c',1,'ne::ThreadPool::stop()'],['../classne_1_1Timer.html#a04379b8607c06511158f5c2f3ee7f173',1,'ne::Timer::stop()']]], + ['stopanddisablecreatedtimers_255',['stopAndDisableCreatedTimers',['../classne_1_1GameInstance.html#a2e23df6476d30d752135ac6229e9b20f',1,'ne::GameInstance']]], + ['stringfieldserializer_256',['StringFieldSerializer',['../classne_1_1StringFieldSerializer.html',1,'ne']]], + ['stringtowstring_257',['stringToWstring',['../classne_1_1Globals.html#ac533ec3312fca7269fb0a17e5e3d439f',1,'ne::Globals']]], + ['submitforexecution_258',['submitForExecution',['../classne_1_1ComputeShaderInterface.html#a0181a3c1bebad87d5824ba71ab73cf3d',1,'ne::ComputeShaderInterface']]], + ['submitwaitdestroyonetimesubmitcommandbuffer_259',['submitWaitDestroyOneTimeSubmitCommandBuffer',['../classne_1_1VulkanRenderer.html#a5be101433f7df8f6fedfd7d4d3f4985e',1,'ne::VulkanRenderer']]], + ['subscribe_260',['subscribe',['../classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a863d2fe913a2ebc3a505c15fe4e343fd',1,'ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>']]], + ['susedgpuname_261',['sUsedGpuName',['../classne_1_1VulkanRenderer.html#ac4db7fe74b51ff3cc4f9f6aadff8dc6c',1,'ne::VulkanRenderer']]], + ['susedvideoadapter_262',['sUsedVideoAdapter',['../classne_1_1DirectXRenderer.html#a943eacc1a620265461ca279437b2b197',1,'ne::DirectXRenderer']]], + ['svec2canonicaltypename1_263',['sVec2CanonicalTypeName1',['../classne_1_1GlmVecFieldSerializer.html#a5207580bc64e83321174d80d8a0fed38',1,'ne::GlmVecFieldSerializer']]], + ['svec2canonicaltypename2_264',['sVec2CanonicalTypeName2',['../classne_1_1GlmVecFieldSerializer.html#afb1ad46c3332c6b52b8c20dd58e94046',1,'ne::GlmVecFieldSerializer']]], + ['svec3canonicaltypename1_265',['sVec3CanonicalTypeName1',['../classne_1_1GlmVecFieldSerializer.html#ab8ed28dc158e51b4b2907447be2dc66b',1,'ne::GlmVecFieldSerializer']]], + ['svec3canonicaltypename2_266',['sVec3CanonicalTypeName2',['../classne_1_1GlmVecFieldSerializer.html#a4e95957d19103536a85ed1238722f9cb',1,'ne::GlmVecFieldSerializer']]], + ['svec4canonicaltypename1_267',['sVec4CanonicalTypeName1',['../classne_1_1GlmVecFieldSerializer.html#a46128e7f81b9c081ee8bb1de87d94f03',1,'ne::GlmVecFieldSerializer']]], + ['svec4canonicaltypename2_268',['sVec4CanonicalTypeName2',['../classne_1_1GlmVecFieldSerializer.html#a623fbf26115be5a9a82d7f5002c1bf05',1,'ne::GlmVecFieldSerializer']]], + ['svertexshadermodel_269',['sVertexShaderModel',['../classne_1_1HlslShader.html#afe96d0b49ab1947a4aecf2304fcdb223',1,'ne::HlslShader']]], + ['svertexshadername_270',['sVertexShaderName',['../classne_1_1PipelineConfiguration.html#a5bc2f65cd1ab7ef4017a94b1471649e1',1,'ne::PipelineConfiguration::sVertexShaderName()'],['../classne_1_1Material.html#a58ded283439b569c213839ef49e820a9',1,'ne::Material::sVertexShaderName()']]], + ['svsmodel_271',['sVsModel',['../structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames.html#aa8d66fe4bd201281b60e98163d71a202',1,'ne::HlslShaderCacheManager::GlobalShaderCacheParameterNames']]], + ['swapchainextent_272',['swapChainExtent',['../classne_1_1VulkanRenderer.html#a2c46a9d3b0553c0a990bda93c7cbe6c9',1,'ne::VulkanRenderer']]], + ['swapchainimagecolorspace_273',['swapChainImageColorSpace',['../classne_1_1VulkanRenderer.html#a48bc1b785d9580a11a7607f5bc27654c',1,'ne::VulkanRenderer']]], + ['swapchainimageformat_274',['swapChainImageFormat',['../classne_1_1VulkanRenderer.html#ae8b79b60342a809010a052fa71970066',1,'ne::VulkanRenderer']]], + ['swapchainimagesemaphores_275',['SwapChainImageSemaphores',['../structne_1_1VulkanRenderer_1_1SwapChainImageSemaphores.html',1,'ne::VulkanRenderer']]], + ['swapchainsupportdetails_276',['SwapChainSupportDetails',['../structne_1_1VulkanRenderer_1_1SwapChainSupportDetails.html',1,'ne::VulkanRenderer']]], + ['swindowtitle_277',['sWindowTitle',['../structne_1_1WindowBuilderParameters.html#a9487249ac3e59dc7f02c5456d17495d4',1,'ne::WindowBuilderParameters::sWindowTitle()'],['../classne_1_1Window.html#a95ed89ef81ff345a87cd13ab3ec23fff',1,'ne::Window::sWindowTitle()']]], + ['switchtonextframeresource_278',['switchToNextFrameResource',['../classne_1_1FrameResourceManager.html#a36f7c0aac591a488fe24dd0048320f7f',1,'ne::FrameResourceManager']]] +]; diff --git a/search/all_12.js b/search/all_12.js new file mode 100644 index 000000000..f0a18d6c2 --- /dev/null +++ b/search/all_12.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['tableresources_0',['tableResources',['../classne_1_1HlslComputeShaderInterface.html#a941a437f0e3ea50cad1ea3c49075d784',1,'ne::HlslComputeShaderInterface']]], + ['targetpointworldlocation_1',['targetPointWorldLocation',['../structne_1_1CameraProperties_1_1Data_1_1ViewData.html#a832e2d267faf9fc0654f85e27d488e91',1,'ne::CameraProperties::Data::ViewData']]], + ['tasktimeinfo_2',['TaskTimeInfo',['../structne_1_1RenderStatistics_1_1TaskTimeInfo.html',1,'ne::RenderStatistics']]], + ['tasktimeinfo_3',['taskTimeInfo',['../classne_1_1RenderStatistics.html#ab96c53df7f6735771b3e6656767d9854',1,'ne::RenderStatistics']]], + ['texturehandle_4',['TextureHandle',['../classne_1_1TextureHandle.html',1,'ne::TextureHandle'],['../classne_1_1TextureHandle.html#a3ed805f9d0b3a86834879d8bf50974e2',1,'ne::TextureHandle::TextureHandle()']]], + ['textureimporter_5',['TextureImporter',['../classne_1_1TextureImporter.html',1,'ne']]], + ['texturemanager_6',['TextureManager',['../classne_1_1TextureManager.html',1,'ne::TextureManager'],['../classne_1_1TextureManager.html#a9ad02e8d158593504b08ce1eae1a7ca0',1,'ne::TextureManager::TextureManager(GpuResourceManager *pResourceManager)']]], + ['textureresource_7',['TextureResource',['../structne_1_1TextureManager_1_1TextureResource.html',1,'ne::TextureManager']]], + ['theta_8',['theta',['../structne_1_1CameraProperties_1_1Data_1_1OrbitalModeData.html#a271ec0280b73932fa669cb5aff2ab517',1,'ne::CameraProperties::Data::OrbitalModeData']]], + ['threadgroupcount_9',['ThreadGroupCount',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ThreadGroupCount.html',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader']]], + ['threadgroupcount_10',['threadGroupCount',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html#a5dc9a2a9d044138a5eecc357f04b3698',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader']]], + ['threadpool_11',['ThreadPool',['../classne_1_1ThreadPool.html',1,'ne']]], + ['threadpool_12',['threadPool',['../classne_1_1GameManager.html#a23a8cccc2169059cc0013aaf8c4aa01d',1,'ne::GameManager']]], + ['threadpool_13',['ThreadPool',['../classne_1_1ThreadPool.html#a56117439a6897fab5e8ae84c3c754e69',1,'ne::ThreadPool']]], + ['tickgroup_14',['tickGroup',['../classne_1_1Node.html#aee673da17a5126031bbb957fa2833505',1,'ne::Node']]], + ['timeatlastfpsupdate_15',['timeAtLastFpsUpdate',['../structne_1_1RenderStatistics_1_1FramesPerSecondInfo.html#ae93ac08ef4bdd9c1a29e852f89f2741b',1,'ne::RenderStatistics::FramesPerSecondInfo']]], + ['timer_16',['Timer',['../classne_1_1Timer.html',1,'ne::Timer'],['../classne_1_1Timer.html#ac7b56b08458195237f492738e18bd7f5',1,'ne::Timer::Timer(const std::string &sTimerName)']]], + ['timerthread_17',['timerThread',['../classne_1_1Timer.html#a0f17e0b04cf2f82037a6ce01746a4d33',1,'ne::Timer']]], + ['timerthreadfuture_18',['timerThreadFuture',['../classne_1_1Timer.html#adb99a5d02b725d2ed8e85f61a7af0031',1,'ne::Timer']]], + ['timesinceprevframeinsec_19',['timeSincePrevFrameInSec',['../classne_1_1GameManager.html#aa9e38923a7fee0c13e5816620103c90c',1,'ne::GameManager::timeSincePrevFrameInSec()'],['../structne_1_1FrameConstants.html#a6d84ca58a8d99f92deb3e5088f8e04c4',1,'ne::FrameConstants::timeSincePrevFrameInSec()']]], + ['timespentlastframeonfrustumcullinglightsinms_20',['timeSpentLastFrameOnFrustumCullingLightsInMs',['../structne_1_1RenderStatistics_1_1TaskTimeInfo.html#adb91644b4ac6d37658252afeeb7058ed',1,'ne::RenderStatistics::TaskTimeInfo']]], + ['timespentlastframeonfrustumcullingmeshesinms_21',['timeSpentLastFrameOnFrustumCullingMeshesInMs',['../structne_1_1RenderStatistics_1_1TaskTimeInfo.html#a54be5c53ebcfffb43d21934d80f366a2',1,'ne::RenderStatistics::TaskTimeInfo']]], + ['timespentlastframewaitingforgpuinms_22',['timeSpentLastFrameWaitingForGpuInMs',['../structne_1_1RenderStatistics_1_1TaskTimeInfo.html#a9ff526cbb2453c22f468b9a4e4acef35',1,'ne::RenderStatistics::TaskTimeInfo']]], + ['timewhenworldcreated_23',['timeWhenWorldCreated',['../classne_1_1World.html#a5e3e6cdc6ebc8cb70faf1759d6a7d489',1,'ne::World']]], + ['tomldata_24',['tomlData',['../classne_1_1ConfigManager.html#a61a6adc32acade03f7b1bdac86eb016f',1,'ne::ConfigManager']]], + ['topface_25',['topFace',['../structne_1_1Frustum.html#a31ef100fbcbc0fca8beacf6c62fa8963',1,'ne::Frustum']]], + ['totaltimeinsec_26',['totalTimeInSec',['../structne_1_1FrameConstants.html#aee60c136a4007b8132dbd22164fd7d69',1,'ne::FrameConstants']]], + ['transitionimagelayout_27',['transitionImageLayout',['../classne_1_1VulkanRenderer.html#a363deaf734f4f58cd5106a0c8a0802ae',1,'ne::VulkanRenderer']]], + ['triggeractionevents_28',['triggerActionEvents',['../classne_1_1GameManager.html#a153301dbfab661f9095d3686dfd9fe24',1,'ne::GameManager']]], + ['triggeraxisevents_29',['triggerAxisEvents',['../classne_1_1GameManager.html#aa4399a39cea06629d980609044de20c3',1,'ne::GameManager']]], + ['tryreservefreeheapindextocreatedescriptor_30',['tryReserveFreeHeapIndexToCreateDescriptor',['../classne_1_1ContinuousDirectXDescriptorRange.html#a1d8cf28f91e2313cdc90fb1351d98717',1,'ne::ContinuousDirectXDescriptorRange']]], + ['type_31',['Type',['../classne_1_1RootSignatureGenerator_1_1RootParameter.html#a5ceefae221c3d54741bee6ef88b9b59f',1,'ne::RootSignatureGenerator::RootParameter']]], + ['type_32',['type',['../classne_1_1RootSignatureGenerator_1_1RootParameter.html#a93b153aac08f239e9503ef03e5a0b364',1,'ne::RootSignatureGenerator::RootParameter']]] +]; diff --git a/search/all_13.js b/search/all_13.js new file mode 100644 index 000000000..7672c2f6f --- /dev/null +++ b/search/all_13.js @@ -0,0 +1,38 @@ +var searchData= +[ + ['uavresources_0',['uavResources',['../classne_1_1HlslComputeShaderInterface.html#a58e40610111d0bb70f8c4219e2af89ef',1,'ne::HlslComputeShaderInterface']]], + ['uintconstantsoffsets_1',['uintConstantsOffsets',['../structne_1_1Pipeline_1_1ShaderConstantsData.html#a7fca4fe10ccc61b9220f73bf42e45b6c',1,'ne::Pipeline::ShaderConstantsData']]], + ['unbindfromwindowevents_2',['unbindFromWindowEvents',['../classne_1_1Window.html#a21b7df05cab9cac3a9fe63c74d326670',1,'ne::Window']]], + ['uniquevaluegenerator_3',['UniqueValueGenerator',['../classne_1_1UniqueValueGenerator.html',1,'ne']]], + ['unlockchildren_4',['unlockChildren',['../classne_1_1Node.html#a00e575b462b1ef5aff5d2b63e03a1d43',1,'ne::Node']]], + ['unorderedmapfieldserializer_5',['UnorderedMapFieldSerializer',['../classne_1_1UnorderedMapFieldSerializer.html',1,'ne']]], + ['unregisterbinding_6',['unregisterBinding',['../classne_1_1GlobalShaderResourceBinding.html#a9ce6edba5ef9b3d16d58f04a37cb38c8',1,'ne::GlobalShaderResourceBinding::unregisterBinding()'],['../classne_1_1GlobalShaderResourceBindingManager.html#a418b19ebb88d8e7886ca40c313285021',1,'ne::GlobalShaderResourceBindingManager::unregisterBinding()']]], + ['unregistershadowmapresource_7',['unregisterShadowMapResource',['../classne_1_1ShadowMapArrayIndexManager.html#a430cb961ba89ed63febcdc08e71b65dc',1,'ne::ShadowMapArrayIndexManager::unregisterShadowMapResource()'],['../classne_1_1VulkanShadowMapArrayIndexManager.html#a5b3545d2478a89527736c376570c99a6',1,'ne::VulkanShadowMapArrayIndexManager::unregisterShadowMapResource()'],['../classne_1_1DirectXShadowMapArrayIndexManager.html#ad3640175d6093d4a9ac48964706ffdf9',1,'ne::DirectXShadowMapArrayIndexManager::unregisterShadowMapResource()']]], + ['unsubscribe_8',['unsubscribe',['../classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a78174056c24c62fe7f2d2b6bfab2a850',1,'ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>']]], + ['up_9',['up',['../structne_1_1Globals_1_1WorldDirection.html#a1ed1afad0c2de365aa2767a4a5b50366',1,'ne::Globals::WorldDirection']]], + ['updatebindingsinallpipelines_10',['updateBindingsInAllPipelines',['../classne_1_1ShaderLightArray.html#a0ab06a0a73281fe8a8c3a55f3dac39fe',1,'ne::ShaderLightArray']]], + ['updatecameraproperties_11',['updateCameraProperties',['../classne_1_1CameraNode.html#ad018c29c128fa28032e2ad3c8e96ec5c',1,'ne::CameraNode']]], + ['updatedata_12',['updateData',['../classne_1_1DynamicCpuWriteShaderResourceArraySlot.html#a8087b79c633ad3deb6d0d396280eb3d5',1,'ne::DynamicCpuWriteShaderResourceArraySlot']]], + ['updatedataandsubmitshader_13',['updateDataAndSubmitShader',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html#aeae65e9c819111f67d18377731b92ad3',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader']]], + ['updatedescriptorsforpipelineresource_14',['updateDescriptorsForPipelineResource',['../classne_1_1LightingShaderResourceManager.html#aab34aa3877cdbeef9b0edeef19fbec7d',1,'ne::LightingShaderResourceManager']]], + ['updateframeconstantsbuffer_15',['updateFrameConstantsBuffer',['../classne_1_1Renderer.html#a46fe2980b8802431726d3da64ea6aeeb',1,'ne::Renderer']]], + ['updateindex_16',['updateIndex',['../classne_1_1DynamicCpuWriteShaderResourceArraySlot.html#ab5817f7d2faf274dfc0f368abbe8ffd6',1,'ne::DynamicCpuWriteShaderResourceArraySlot']]], + ['updatemsaaqualitylevelcount_17',['updateMsaaQualityLevelCount',['../classne_1_1DirectXRenderer.html#a1e14b11fc60b1c51260bd1bb788b8b51',1,'ne::DirectXRenderer']]], + ['updatemsaasamplecount_18',['updateMsaaSampleCount',['../classne_1_1VulkanRenderer.html#a8a8c74ba10f06441ddcdc4cb989e7aec',1,'ne::VulkanRenderer']]], + ['updatepipelinebinding_19',['updatePipelineBinding',['../classne_1_1ShaderLightArray.html#a9c45a8a69b61832fb3563a00baa685c9',1,'ne::ShaderLightArray']]], + ['updateresource_20',['updateResource',['../classne_1_1ShaderCpuWriteResourceBinding.html#a33648104f7e366bbda652e92a4742b26',1,'ne::ShaderCpuWriteResourceBinding']]], + ['updateresources_21',['updateResources',['../classne_1_1ShaderCpuWriteResourceBindingManager.html#a16c272216f9b3d5953290e14551c794e',1,'ne::ShaderCpuWriteResourceBindingManager::updateResources()'],['../classne_1_1LightingShaderResourceManager.html#a2e40c621b5b2f81c8bf2213ce4bb3ee6',1,'ne::LightingShaderResourceManager::updateResources()']]], + ['updateresourcesfornextframe_22',['updateResourcesForNextFrame',['../classne_1_1Renderer.html#a4fb5b5b7cdc654945fd7b7f90352fe65',1,'ne::Renderer']]], + ['updateshaderconfiguration_23',['updateShaderConfiguration',['../classne_1_1ShaderConfiguration.html#a7a25c478bba8426de264bb787416b970',1,'ne::ShaderConfiguration::updateShaderConfiguration()'],['../classne_1_1Renderer.html#af25df43af497e19e2c5cdb5a64c2c77e',1,'ne::Renderer::updateShaderConfiguration()']]], + ['updateshaderresourcestousechangedmaterialpipelines_24',['updateShaderResourcesToUseChangedMaterialPipelines',['../classne_1_1MeshNode.html#a37d0fdab3342915497cdc86b00ba30ba',1,'ne::MeshNode']]], + ['updateslotdata_25',['updateSlotData',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a007cd2ff002832ac03c2584e9b2a51a5',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['updateslotsmarkedasneedsupdate_26',['updateSlotsMarkedAsNeedsUpdate',['../classne_1_1ShaderLightArray.html#a57ff63eebae0040b8a82ced015c22662',1,'ne::ShaderLightArray']]], + ['updatetargettimetorenderframe_27',['updateTargetTimeToRenderFrame',['../classne_1_1Renderer.html#a74b201ad1fae3dafa959c9002a4aec86',1,'ne::Renderer']]], + ['updatetonewpipeline_28',['updateToNewPipeline',['../classne_1_1Material.html#a55308869a89ec874f334de5843030c85',1,'ne::Material']]], + ['uploadbuffer_29',['UploadBuffer',['../classne_1_1UploadBuffer.html',1,'ne::UploadBuffer'],['../classne_1_1UploadBuffer.html#ab31ad949c3d972cbfa6bda83d3fd8485',1,'ne::UploadBuffer::UploadBuffer()']]], + ['usedscaling_30',['usedScaling',['../classne_1_1DirectXRenderer.html#a72e7838631c1babf3a3fb0ae99342dbf',1,'ne::DirectXRenderer']]], + ['usedscanlineordering_31',['usedScanlineOrdering',['../classne_1_1DirectXRenderer.html#a71cb29043322d521d62f3def959ce8cc',1,'ne::DirectXRenderer']]], + ['usedshaderconfiguration_32',['usedShaderConfiguration',['../classne_1_1Pipeline.html#a7a17a0d8d81d5c6cf6c5b2c34643c950',1,'ne::Pipeline']]], + ['usenewtexture_33',['useNewTexture',['../classne_1_1ShaderTextureResourceBinding.html#add4e143f594bbe46d08065f0b8bd03ca',1,'ne::ShaderTextureResourceBinding::useNewTexture()'],['../classne_1_1GlslShaderTextureResourceBinding.html#af63076ba6c94ff19e3b1268b77be8041',1,'ne::GlslShaderTextureResourceBinding::useNewTexture()'],['../classne_1_1HlslShaderTextureResourceBinding.html#a9a3ab85bf79d675a5d26c5c3390a276c',1,'ne::HlslShaderTextureResourceBinding::useNewTexture()']]], + ['uv_34',['uv',['../structne_1_1MeshVertex.html#aa800c7557f4e88006613c2df43ef9fa4',1,'ne::MeshVertex']]] +]; diff --git a/search/all_14.js b/search/all_14.js new file mode 100644 index 000000000..984322eea --- /dev/null +++ b/search/all_14.js @@ -0,0 +1,66 @@ +var searchData= +[ + ['validcomputeshadermacroconfigurations_0',['validComputeShaderMacroConfigurations',['../structne_1_1ShaderMacroConfigurations.html#a2366a43dc3ce6f5430f1116a4826e4ce',1,'ne::ShaderMacroConfigurations']]], + ['validpixelshadermacroconfigurations_1',['validPixelShaderMacroConfigurations',['../structne_1_1ShaderMacroConfigurations.html#ad111d8b96e6831bddea5d891ac731411',1,'ne::ShaderMacroConfigurations']]], + ['validvertexshadermacroconfigurations_2',['validVertexShaderMacroConfigurations',['../structne_1_1ShaderMacroConfigurations.html#ab60decaef95af9508060ee82e73b6e25',1,'ne::ShaderMacroConfigurations']]], + ['variable_5ftype_3',['variable_type',['../classne_1_1PipelineShaderConstantsManager.html#a0cd19f768249b2feffc41a5fc2c75957',1,'ne::PipelineShaderConstantsManager']]], + ['vbindedresources_4',['vBindedResources',['../classne_1_1GlobalShaderResourceBinding.html#a1b5714b440da876bcf60b12797fd2f61',1,'ne::GlobalShaderResourceBinding']]], + ['vconstantsdata_5',['vConstantsData',['../classne_1_1PipelineShaderConstantsManager.html#a9bcca2df4a975583ab2b274767ec29b8',1,'ne::PipelineShaderConstantsManager']]], + ['vcreatedcursors_6',['vCreatedCursors',['../classne_1_1Window.html#a14bc0f6f1a4465c633ec386f1874a7dd',1,'ne::Window']]], + ['vcubemapfaces_7',['vCubemapFaces',['../structne_1_1DirectXResource_1_1DescriptorsSameType.html#abac667d3fd7d57b82fbd3e9b1bf4afb2',1,'ne::DirectXResource::DescriptorsSameType']]], + ['vcubemapviews_8',['vCubeMapViews',['../classne_1_1VulkanResource.html#a697691b6e834be227f9364c784c1b6dd',1,'ne::VulkanResource']]], + ['vdescriptorsets_9',['vDescriptorSets',['../structne_1_1DescriptorSetLayoutGenerator_1_1Generated.html#a723bdee1cc8661e6dad2183ee9a8860c',1,'ne::DescriptorSetLayoutGenerator::Generated::vDescriptorSets()'],['../structne_1_1VulkanPipeline_1_1InternalResources.html#a04e4d7892998da5f810318be412ea080',1,'ne::VulkanPipeline::InternalResources::vDescriptorSets()']]], + ['vectorfieldserializer_10',['VectorFieldSerializer',['../classne_1_1VectorFieldSerializer.html',1,'ne']]], + ['vertexformat_11',['vertexFormat',['../structne_1_1ShaderDescription.html#ae99b83380da6f1d179191928e4f2fb32',1,'ne::ShaderDescription']]], + ['vertexformatdescription_12',['VertexFormatDescription',['../classne_1_1VertexFormatDescription.html',1,'ne']]], + ['vframeresources_13',['vFrameResources',['../classne_1_1FrameResourceManager.html#a6728b57c6dada16a75be1d1ab2024b46',1,'ne::FrameResourceManager']]], + ['vgeneraldatagpuresources_14',['vGeneralDataGpuResources',['../structne_1_1LightingShaderResourceManager_1_1GpuData.html#ade12da1fc812ecdbcf2b610bf21365c3',1,'ne::LightingShaderResourceManager::GpuData']]], + ['vgpuarraylightdataresources_15',['vGpuArrayLightDataResources',['../structne_1_1ShaderLightArray_1_1Resources.html#af847f9596fb0742cb31b2e468ba4e428',1,'ne::ShaderLightArray::Resources']]], + ['vgpuresources_16',['vGpuResources',['../structne_1_1ShaderLightsInFrustumSingleType.html#a025c719b17b2d14dac110ead2fe1ac08',1,'ne::ShaderLightsInFrustumSingleType']]], + ['vgraphicsqueuestagesgroups_17',['vGraphicsQueueStagesGroups',['../structne_1_1QueuedForExecutionComputeShaders.html#ab3e107f722245372e1a5257c65cda9ba',1,'ne::QueuedForExecutionComputeShaders']]], + ['viewdata_18',['ViewData',['../structne_1_1CameraProperties_1_1Data_1_1ViewData.html',1,'ne::CameraProperties::Data']]], + ['viewdata_19',['viewData',['../structne_1_1CameraProperties_1_1Data.html#a5ad01c89a78c667a7b561b392f1d926d',1,'ne::CameraProperties::Data']]], + ['viewmatrix_20',['viewMatrix',['../structne_1_1CameraProperties_1_1Data_1_1ViewData.html#a22ad55c21da62139593d6716ff5a49ec',1,'ne::CameraProperties::Data::ViewData::viewMatrix()'],['../structne_1_1FrameConstants.html#acd8490fa6e54a52c9e1fd17ee35a541b',1,'ne::FrameConstants::viewMatrix()']]], + ['viewprojectionmatrix_21',['viewProjectionMatrix',['../structne_1_1SpotlightNode_1_1SpotlightShaderData.html#a0eece30392cf51a8dc9eea275f4ba284',1,'ne::SpotlightNode::SpotlightShaderData::viewProjectionMatrix()'],['../structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData.html#aad16e66fb292cc9fbadcb590c42d1efb',1,'ne::DirectionalLightNode::DirecionalLightShaderData::viewProjectionMatrix()'],['../structne_1_1ShadowPassLightShaderInfo.html#ae4930474830a3a3b4312b9a9e056b9b3',1,'ne::ShadowPassLightShaderInfo::viewProjectionMatrix()'],['../structne_1_1FrameConstants.html#aac2f63f5d21e3bc9555b74cd6ddc78a2',1,'ne::FrameConstants::viewProjectionMatrix()']]], + ['vimagesemaphores_22',['vImageSemaphores',['../classne_1_1VulkanRenderer.html#a929cdba2f3e2706c1c3b505f7f349377',1,'ne::VulkanRenderer']]], + ['vindexbuffers_23',['vIndexBuffers',['../structne_1_1Renderer_1_1MeshesInFrustum_1_1MeshInFrustumInfo.html#a06c6161b5c284adfc6f7f1cb29d98f58',1,'ne::Renderer::MeshesInFrustum::MeshInFrustumInfo::vIndexBuffers()'],['../structne_1_1MeshNode_1_1GpuResources_1_1Mesh.html#af18854ea11eef5748addf73bd45a882d',1,'ne::MeshNode::GpuResources::Mesh::vIndexBuffers()']]], + ['vindices_24',['vIndices',['../classne_1_1MeshData.html#a79569a42ac8e910ab79b64dec77b58a4',1,'ne::MeshData']]], + ['visibility_25',['visibility',['../classne_1_1RootSignatureGenerator_1_1RootParameter.html#abb61b1bfa4e876fe35cf8607985740e0',1,'ne::RootSignatureGenerator::RootParameter']]], + ['visibledistancetonearclipplaneratio_26',['visibleDistanceToNearClipPlaneRatio',['../classne_1_1ShadowMapManager.html#a4d36fca7a59c30ba9fc474f13a7bce7b',1,'ne::ShadowMapManager']]], + ['visiblemeshnodes_27',['visibleMeshNodes',['../structne_1_1MeshNodesThatUseThisMaterial.html#a6053dd4f494b604703ed75084a721cc2',1,'ne::MeshNodesThatUseThisMaterial']]], + ['vlightindicesinfrustum_28',['vLightIndicesInFrustum',['../structne_1_1ShaderLightsInFrustumSingleType.html#a3c123179c5a16c87969f7aa580175dca',1,'ne::ShaderLightsInFrustumSingleType']]], + ['vmaterials_29',['vMaterials',['../classne_1_1MeshNode.html#adc328650dced2f8351ec6f702d7bb44d',1,'ne::MeshNode::vMaterials()'],['../structne_1_1Renderer_1_1MeshesInFrustum_1_1PipelineInFrustumInfo.html#a3e2d6a6407f884cb408349617d8305bc',1,'ne::Renderer::MeshesInFrustum::PipelineInFrustumInfo::vMaterials()']]], + ['vmeshes_30',['vMeshes',['../structne_1_1Renderer_1_1MeshesInFrustum_1_1MaterialInFrustumInfo.html#a7784f6ab58458368a8c1c22f3f8d3698',1,'ne::Renderer::MeshesInFrustum::MaterialInFrustumInfo']]], + ['vopaquepipelines_31',['vOpaquePipelines',['../structne_1_1Renderer_1_1MeshesInFrustum.html#a82123c1d9f724900ebc3a998624fc5bb',1,'ne::Renderer::MeshesInFrustum']]], + ['vpipelinetypes_32',['vPipelineTypes',['../structne_1_1GraphicsPipelineRegistry.html#a2a6a2505f2a504fdab9300a932cf02c3',1,'ne::GraphicsPipelineRegistry']]], + ['vresourcedata_33',['vResourceData',['../classne_1_1ShaderCpuWriteResourceBinding.html#ab297577a375d25254e9e4b7d9ab796f7',1,'ne::ShaderCpuWriteResourceBinding']]], + ['vrootparameters_34',['vRootParameters',['../structne_1_1RootSignatureGenerator_1_1CollectedInfo.html#a19515830c26d731507862fca233c461e',1,'ne::RootSignatureGenerator::CollectedInfo']]], + ['vrunningthreads_35',['vRunningThreads',['../classne_1_1ThreadPool.html#a295493e8f889ec5bd6c39b5d65dfe200',1,'ne::ThreadPool']]], + ['vshaderlightnodearray_36',['vShaderLightNodeArray',['../structne_1_1ShaderLightsInFrustumSingleType.html#a749756d7bb2be846c749be862ae49c15',1,'ne::ShaderLightsInFrustumSingleType']]], + ['vshaderstoberemoved_37',['vShadersToBeRemoved',['../structne_1_1ShaderManager_1_1ShaderData.html#af163bcab4533aa8f02b76c2db0d3d9f0',1,'ne::ShaderManager::ShaderData']]], + ['vshadowmaparrayindexmanagers_38',['vShadowMapArrayIndexManagers',['../structne_1_1ShadowMapManager_1_1InternalResources.html#a97c82194fea4e089f9f3e01999c25450',1,'ne::ShadowMapManager::InternalResources']]], + ['vshadowmappingframebuffers_39',['vShadowMappingFramebuffers',['../structne_1_1ShadowMapHandle_1_1InternalResources.html#a70494031d36d20e2b67f6f29b60c34f3',1,'ne::ShadowMapHandle::InternalResources']]], + ['vshadowpassdatagroup_40',['vShadowPassDataGroup',['../structne_1_1PointLightNode_1_1ShaderData.html#a5d9ccdc57dff37dc131ac8a28f75385d',1,'ne::PointLightNode::ShaderData']]], + ['vslotstobeupdated_41',['vSlotsToBeUpdated',['../structne_1_1ShaderLightArray_1_1Resources.html#afc3c1a738bb35eb1de38d21ca5b727f6',1,'ne::ShaderLightArray::Resources']]], + ['vspecialrootparameterindices_42',['vSpecialRootParameterIndices',['../structne_1_1DirectXPso_1_1InternalResources.html#aa31f750b4e95af1bea415b4cc02bf47d',1,'ne::DirectXPso::InternalResources::vSpecialRootParameterIndices()'],['../structne_1_1RootSignatureGenerator_1_1Generated.html#a56185d71ba24dce3019c9b636d696c1c',1,'ne::RootSignatureGenerator::Generated::vSpecialRootParameterIndices()']]], + ['vsupportedformats_43',['vSupportedFormats',['../structne_1_1VulkanRenderer_1_1SwapChainSupportDetails.html#a298c26912cb0a9f8c6450157db2df820',1,'ne::VulkanRenderer::SwapChainSupportDetails']]], + ['vsupportedgpunames_44',['vSupportedGpuNames',['../classne_1_1DirectXRenderer.html#aae2f8fa8f7ab90274a1a388daefa0a09',1,'ne::DirectXRenderer::vSupportedGpuNames()'],['../classne_1_1VulkanRenderer.html#a5f265697a9a8b83fbfe4753510b24763',1,'ne::VulkanRenderer::vSupportedGpuNames()']]], + ['vsupportedpresentmodes_45',['vSupportedPresentModes',['../structne_1_1VulkanRenderer_1_1SwapChainSupportDetails.html#a01534ea489313997fdb3aa7150469bd0',1,'ne::VulkanRenderer::SwapChainSupportDetails']]], + ['vswapchainbuffers_46',['vSwapChainBuffers',['../classne_1_1DirectXRenderer.html#ae8e412e7fd30168c609f3c41f7069b79',1,'ne::DirectXRenderer']]], + ['vswapchainframebuffersdepthonlyrenderpass_47',['vSwapChainFramebuffersDepthOnlyRenderPass',['../classne_1_1VulkanRenderer.html#ab4083804472a4c73560767f159f8486c',1,'ne::VulkanRenderer']]], + ['vswapchainframebuffersmainrenderpass_48',['vSwapChainFramebuffersMainRenderPass',['../classne_1_1VulkanRenderer.html#af71551705046c22f849d76ad47cdd732',1,'ne::VulkanRenderer']]], + ['vswapchainimagefencerefs_49',['vSwapChainImageFenceRefs',['../classne_1_1VulkanRenderer.html#af43ae0ffb38e78bf0ba8f08b3f45cd44',1,'ne::VulkanRenderer']]], + ['vswapchainimages_50',['vSwapChainImages',['../classne_1_1VulkanRenderer.html#ad4c109ccbb605587115f78f679b9cd99',1,'ne::VulkanRenderer']]], + ['vswapchainimageviews_51',['vSwapChainImageViews',['../classne_1_1VulkanRenderer.html#a00ab177c322afec734df3855099a18ce',1,'ne::VulkanRenderer']]], + ['vtobeupdated_52',['vToBeUpdated',['../structne_1_1ShaderCpuWriteResourceBindingManager_1_1Resources.html#a0618141a6a0853f1f6f4c1e4bdd45944',1,'ne::ShaderCpuWriteResourceBindingManager::Resources']]], + ['vtransparentpipelines_53',['vTransparentPipelines',['../structne_1_1Renderer_1_1MeshesInFrustum.html#acbc8465af7cd6f39a2dc2e9f767a050a',1,'ne::Renderer::MeshesInFrustum']]], + ['vulkanframeresource_54',['VulkanFrameResource',['../structne_1_1VulkanFrameResource.html',1,'ne']]], + ['vulkanpipeline_55',['VulkanPipeline',['../classne_1_1VulkanPipeline.html',1,'ne::VulkanPipeline'],['../classne_1_1VulkanPipeline.html#ae0287419c4562b26ff727a12ab84a79c',1,'ne::VulkanPipeline::VulkanPipeline()']]], + ['vulkanrenderer_56',['VulkanRenderer',['../classne_1_1VulkanRenderer.html',1,'ne::VulkanRenderer'],['../classne_1_1VulkanRenderer.html#a2cd8cc2433f8da659e5e72f315f7ec4c',1,'ne::VulkanRenderer::VulkanRenderer()']]], + ['vulkanresource_57',['VulkanResource',['../classne_1_1VulkanResource.html',1,'ne::VulkanResource'],['../classne_1_1VulkanResource.html#a86c3e8d31717ebe606c73583c427b296',1,'ne::VulkanResource::VulkanResource(VulkanResourceManager *pResourceManager, const std::string &sResourceName, std::variant< VkBuffer, VkImage > pInternalResource, bool isStorageResource, VmaAllocation pResourceMemory, unsigned int iElementSizeInBytes, unsigned int iElementCount)'],['../classne_1_1VulkanResource.html#a1726eea36c762dad94d8126dcf9d93cd',1,'ne::VulkanResource::VulkanResource(VulkanResourceManager *pResourceManager, const std::string &sResourceName, ktxVulkanTexture ktxTexture)']]], + ['vulkanresourcemanager_58',['VulkanResourceManager',['../classne_1_1VulkanResourceManager.html',1,'ne::VulkanResourceManager'],['../classne_1_1VulkanResourceManager.html#a7ecf7ec3593abdf65a194b94dde39058',1,'ne::VulkanResourceManager::VulkanResourceManager()']]], + ['vulkanshadowmaparrayindexmanager_59',['VulkanShadowMapArrayIndexManager',['../classne_1_1VulkanShadowMapArrayIndexManager.html',1,'ne::VulkanShadowMapArrayIndexManager'],['../classne_1_1VulkanShadowMapArrayIndexManager.html#a2394d01ec3129e0e79ea712972f558c8',1,'ne::VulkanShadowMapArrayIndexManager::VulkanShadowMapArrayIndexManager()']]], + ['vuseddeviceextensionnames_60',['vUsedDeviceExtensionNames',['../classne_1_1VulkanRenderer.html#a7f63236458627346b36fd4f34ec22850',1,'ne::VulkanRenderer']]], + ['vvalidcharactersforshadername_61',['vValidCharactersForShaderName',['../classne_1_1ShaderManager.html#a539c5b65b2158cab00f5161e9c3b9663',1,'ne::ShaderManager']]], + ['vvertices_62',['vVertices',['../classne_1_1MeshData.html#a32b1945e1116f27cd4480e34e1299ae6',1,'ne::MeshData']]] +]; diff --git a/search/all_15.js b/search/all_15.js new file mode 100644 index 000000000..d0d27b97c --- /dev/null +++ b/search/all_15.js @@ -0,0 +1,33 @@ +var searchData= +[ + ['waitforfencevalue_0',['waitForFenceValue',['../classne_1_1DirectXRenderer.html#acad252aed765ced403e6e21ac74230a1',1,'ne::DirectXRenderer']]], + ['waitforgputofinishusingframeresource_1',['waitForGpuToFinishUsingFrameResource',['../classne_1_1DirectXRenderer.html#a64dccc90232ee6345bf67382d8df2d6d',1,'ne::DirectXRenderer::waitForGpuToFinishUsingFrameResource()'],['../classne_1_1VulkanRenderer.html#afa790a607caa70247e134dfc452a0a49',1,'ne::VulkanRenderer::waitForGpuToFinishUsingFrameResource()'],['../classne_1_1Renderer.html#a64332a4c9b10010ec74584dddc91c68d',1,'ne::Renderer::waitForGpuToFinishUsingFrameResource(FrameResource *pFrameResource)=0']]], + ['waitforgputofinishworkuptothispoint_2',['waitForGpuToFinishWorkUpToThisPoint',['../classne_1_1Renderer.html#a82398bb159588b48ad20f09b02db47a9',1,'ne::Renderer::waitForGpuToFinishWorkUpToThisPoint()'],['../classne_1_1DirectXRenderer.html#aae18afc489996ebedd1504305ba34d85',1,'ne::DirectXRenderer::waitForGpuToFinishWorkUpToThisPoint()'],['../classne_1_1VulkanRenderer.html#a3ba1205f16b9038da69db0c001550943',1,'ne::VulkanRenderer::waitForGpuToFinishWorkUpToThisPoint()']]], + ['warn_3',['warn',['../classne_1_1Logger.html#ae8507446e039b60153cb8b43b20bf714',1,'ne::Logger']]], + ['warning_4',['warning',['../classne_1_1MessageBox.html#ab0847393177d7c8c7413d4de291d2a7f',1,'ne::MessageBox::warning()'],['../classne_1_1DesktopNotification.html#a7848d7fb797b501873d1afe434391cde',1,'ne::DesktopNotification::warning()']]], + ['window_5',['Window',['../classne_1_1Window.html',1,'ne::Window'],['../classne_1_1Window.html#a398013436bb9666a1b73a241ca03b7b5',1,'ne::Window::Window()']]], + ['windowbuilder_6',['WindowBuilder',['../classne_1_1WindowBuilder.html',1,'ne']]], + ['windowbuilderparameters_7',['WindowBuilderParameters',['../structne_1_1WindowBuilderParameters.html',1,'ne']]], + ['windowcursor_8',['WindowCursor',['../classne_1_1WindowCursor.html',1,'ne::WindowCursor'],['../classne_1_1WindowCursor.html#ae20456ef418e3235cb07d9324336cc66',1,'ne::WindowCursor::WindowCursor()']]], + ['withfullscreenmode_9',['withFullscreenMode',['../classne_1_1WindowBuilder.html#a138b7e2c077466970bef56fc754918a6',1,'ne::WindowBuilder']]], + ['withicon_10',['withIcon',['../classne_1_1WindowBuilder.html#ae1206242e82f60740f33368672baa5bb',1,'ne::WindowBuilder']]], + ['withmaximizedstate_11',['withMaximizedState',['../classne_1_1WindowBuilder.html#aaa2d79c2e394fcf395d6f2c7475e2af8',1,'ne::WindowBuilder']]], + ['withsize_12',['withSize',['../classne_1_1WindowBuilder.html#aeb34378e47c1355807a54b789859ecb5',1,'ne::WindowBuilder']]], + ['withsplashscreenmode_13',['withSplashScreenMode',['../classne_1_1WindowBuilder.html#af2d361e7868e3a69d77d1292cacfe320',1,'ne::WindowBuilder']]], + ['withtitle_14',['withTitle',['../classne_1_1WindowBuilder.html#a0bb2d30b784c64424b5015a4745bd282',1,'ne::WindowBuilder']]], + ['withvisibility_15',['withVisibility',['../classne_1_1WindowBuilder.html#a32ace752ff0c9c1e6df896dea74e37c7',1,'ne::WindowBuilder']]], + ['world_16',['World',['../classne_1_1World.html',1,'ne::World'],['../classne_1_1World.html#a61f502f2e8b6345e88c1262cac1aa30a',1,'ne::World::World()']]], + ['worlddirection_17',['WorldDirection',['../structne_1_1Globals_1_1WorldDirection.html',1,'ne::Globals']]], + ['worldforward_18',['worldForward',['../structne_1_1SpatialNode_1_1WorldMatrixInformation.html#aa35e4d187db28373360fb4963d446418',1,'ne::SpatialNode::WorldMatrixInformation']]], + ['worldlocation_19',['worldLocation',['../structne_1_1CameraProperties_1_1Data_1_1ViewData.html#a745d7059cc4aff387259b3f3167e8163',1,'ne::CameraProperties::Data::ViewData::worldLocation()'],['../structne_1_1SpatialNode_1_1WorldMatrixInformation.html#a29044d5803d2015569c96602deddfdcb',1,'ne::SpatialNode::WorldMatrixInformation::worldLocation()']]], + ['worldmatrix_20',['worldMatrix',['../structne_1_1MeshNode_1_1MeshShaderConstants.html#a102c41da3163c4d34f8d370345cd4424',1,'ne::MeshNode::MeshShaderConstants::worldMatrix()'],['../structne_1_1SpatialNode_1_1WorldMatrixInformation.html#a3b8d6cb2254d74c18fa6f2f0778a4064',1,'ne::SpatialNode::WorldMatrixInformation::worldMatrix()']]], + ['worldmatrixinformation_21',['WorldMatrixInformation',['../structne_1_1SpatialNode_1_1WorldMatrixInformation.html',1,'ne::SpatialNode']]], + ['worldright_22',['worldRight',['../structne_1_1SpatialNode_1_1WorldMatrixInformation.html#ac02eb7912b309ecc01437c03da89d56e',1,'ne::SpatialNode::WorldMatrixInformation']]], + ['worldrotation_23',['worldRotation',['../structne_1_1SpatialNode_1_1WorldMatrixInformation.html#a9a94da8f4d199b8ea1f8d0b91f342166',1,'ne::SpatialNode::WorldMatrixInformation']]], + ['worldrotationquaternion_24',['worldRotationQuaternion',['../structne_1_1SpatialNode_1_1WorldMatrixInformation.html#ae4891bfd2a720716d932e4ceb6eb6558',1,'ne::SpatialNode::WorldMatrixInformation']]], + ['worldscale_25',['worldScale',['../structne_1_1SpatialNode_1_1WorldMatrixInformation.html#ae35ae97fae3f1d83a234119e33fad29a',1,'ne::SpatialNode::WorldMatrixInformation']]], + ['worldup_26',['worldUp',['../structne_1_1SpatialNode_1_1WorldMatrixInformation.html#aa94277fce124b9acff3e4db3b1e50ebc',1,'ne::SpatialNode::WorldMatrixInformation']]], + ['worldupdirection_27',['worldUpDirection',['../structne_1_1CameraProperties_1_1Data_1_1ViewData.html#a64d375d6f760e9755e2624ae234dcf01',1,'ne::CameraProperties::Data::ViewData']]], + ['writelanguagespecificparameters_28',['writeLanguageSpecificParameters',['../classne_1_1ShaderCacheManager.html#a0157bf45305829fa4b3aacb9fae473c7',1,'ne::ShaderCacheManager::writeLanguageSpecificParameters()'],['../classne_1_1GlslShaderCacheManager.html#a6385a8cd94368608ae658f702cd42cfc',1,'ne::GlslShaderCacheManager::writeLanguageSpecificParameters()'],['../classne_1_1HlslShaderCacheManager.html#aec21c88348aaf39b0e402c1596bade44',1,'ne::HlslShaderCacheManager::writeLanguageSpecificParameters()']]], + ['wstringtostring_29',['wstringToString',['../classne_1_1Globals.html#a7d1befdd956b01e86a7064f91626d133',1,'ne::Globals']]] +]; diff --git a/search/all_16.js b/search/all_16.js new file mode 100644 index 000000000..5964201d6 --- /dev/null +++ b/search/all_16.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['_7edirectxdescriptor_0',['~DirectXDescriptor',['../classne_1_1DirectXDescriptor.html#aac99e0444589184bf2db2af6d6156d99',1,'ne::DirectXDescriptor']]], + ['_7edirectxdescriptorheap_1',['~DirectXDescriptorHeap',['../classne_1_1DirectXDescriptorHeap.html#a7cdcaa8bf2f6be6e4c1d063079042d9f',1,'ne::DirectXDescriptorHeap']]], + ['_7edirectxshadowmaparrayindexmanager_2',['~DirectXShadowMapArrayIndexManager',['../classne_1_1DirectXShadowMapArrayIndexManager.html#a97be552860a91c2516a4832231e4fad9',1,'ne::DirectXShadowMapArrayIndexManager']]], + ['_7eglfw_3',['~GLFW',['../classne_1_1GLFW.html#a714f4dd30268e0c06e36001bec8bec75',1,'ne::GLFW']]], + ['_7eglobalshaderresourcebindingmanager_4',['~GlobalShaderResourceBindingManager',['../classne_1_1GlobalShaderResourceBindingManager.html#a1b2f6454d669328c3a4894184090d5ab',1,'ne::GlobalShaderResourceBindingManager']]], + ['_7enode_5',['~Node',['../classne_1_1Node.html#a79642d37ba8f7a42e6bbb43285f8b0fb',1,'ne::Node']]], + ['_7epipelinemanager_6',['~PipelineManager',['../classne_1_1PipelineManager.html#abc3041bd4f89a01584c07810d97c5cb9',1,'ne::PipelineManager']]], + ['_7eshaderarrayindex_7',['~ShaderArrayIndex',['../classne_1_1ShaderArrayIndex.html#a037772a8c435ea927c131956af466e43',1,'ne::ShaderArrayIndex']]], + ['_7eshaderarrayindexmanager_8',['~ShaderArrayIndexManager',['../classne_1_1ShaderArrayIndexManager.html#ac471051864cae59ce7f16fc7c56c7313',1,'ne::ShaderArrayIndexManager']]], + ['_7eshadercpuwriteresourcebindingmanager_9',['~ShaderCpuWriteResourceBindingManager',['../classne_1_1ShaderCpuWriteResourceBindingManager.html#ab47c204ddf9ca67b3a54caa7e77fe0a6',1,'ne::ShaderCpuWriteResourceBindingManager']]], + ['_7eshaderlightarray_10',['~ShaderLightArray',['../classne_1_1ShaderLightArray.html#ab31abec30f8efd631644f951a9943e1e',1,'ne::ShaderLightArray']]], + ['_7eshadertextureresourcebindingmanager_11',['~ShaderTextureResourceBindingManager',['../classne_1_1ShaderTextureResourceBindingManager.html#a572be35070c082bb695f00e0956835e6',1,'ne::ShaderTextureResourceBindingManager']]], + ['_7eshaderuser_12',['~ShaderUser',['../classne_1_1ShaderUser.html#ac20528d5e1938e7c4ff6cc7f80b75b12',1,'ne::ShaderUser']]], + ['_7eshadowmapmanager_13',['~ShadowMapManager',['../classne_1_1ShadowMapManager.html#af9e145ab19d0c5745fefca168ebca19e',1,'ne::ShadowMapManager']]], + ['_7etexturehandle_14',['~TextureHandle',['../classne_1_1TextureHandle.html#a864df0ae321949f96c49db7877c19895',1,'ne::TextureHandle']]], + ['_7etexturemanager_15',['~TextureManager',['../classne_1_1TextureManager.html#aa39de6ae0a73574699777743fb7dbe5b',1,'ne::TextureManager']]], + ['_7ethreadpool_16',['~ThreadPool',['../classne_1_1ThreadPool.html#aa8d941103615e754d86c63e0f6414998',1,'ne::ThreadPool']]], + ['_7ewindowcursor_17',['~WindowCursor',['../classne_1_1WindowCursor.html#a991811e70ac34b285cefe011e47107a9',1,'ne::WindowCursor']]], + ['_7eworld_18',['~World',['../classne_1_1World.html#a6941ce4e5566c000c2e7e32d03394ce6',1,'ne::World']]] +]; diff --git a/search/all_2.js b/search/all_2.js new file mode 100644 index 000000000..ccbf7f40d --- /dev/null +++ b/search/all_2.js @@ -0,0 +1,158 @@ +var searchData= +[ + ['cacheinvalidationreasons_0',['cacheInvalidationReasons',['../structne_1_1ShaderCacheInvalidationReasonDescription.html#a300c8dbf4348ff61b07d83da04191055',1,'ne::ShaderCacheInvalidationReasonDescription']]], + ['calculatecapacitystepsize_1',['calculateCapacityStepSize',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a7e53a422c30c87a8dbba0e4bacfc25cd',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['calculateframestatistics_2',['calculateFrameStatistics',['../classne_1_1Renderer.html#a70c498eade90efc06c4ef64100347cd0',1,'ne::Renderer']]], + ['calculatereciprocalvector_3',['calculateReciprocalVector',['../classne_1_1MathHelpers.html#a91b29eece21547964d43cf45a63eda49',1,'ne::MathHelpers']]], + ['calculatereflectionfilehash_4',['calculateReflectionFileHash',['../classne_1_1HlslShader.html#ae95b76a7d079b79a8bf3e33adc47394e',1,'ne::HlslShader']]], + ['calculateshaderincludetreehashes_5',['calculateShaderIncludeTreeHashes',['../structne_1_1ShaderDescription.html#a4a8d2d724407d111e95b481e7e325192',1,'ne::ShaderDescription']]], + ['callback_6',['callback',['../classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a474ac22049f1108a42b60f015be0e8e8',1,'ne::NodeFunction< FunctionReturnType(FunctionArgs...)>']]], + ['callbackfortimeout_7',['callbackForTimeout',['../classne_1_1Timer.html#a581203dd5bb3caced184dc46efab616c',1,'ne::Timer']]], + ['callbackvalidator_8',['callbackValidator',['../classne_1_1Timer.html#a41bd2bb3dd1984b7a97e18c7205aa233',1,'ne::Timer']]], + ['calledeveryframenodes_9',['calledEveryFrameNodes',['../classne_1_1World.html#aabeed623a9a5c0c338704ef370f250f7',1,'ne::World']]], + ['calledeveryframenodes_10',['CalledEveryFrameNodes',['../structne_1_1CalledEveryFrameNodes.html',1,'ne']]], + ['cameramanager_11',['CameraManager',['../classne_1_1CameraManager.html#a72ffaa75c6f90e592e015c81cdf1451b',1,'ne::CameraManager::CameraManager()'],['../classne_1_1CameraManager.html',1,'ne::CameraManager']]], + ['cameranode_12',['CameraNode',['../classne_1_1CameraNode.html#a66cf208b54020efbc30846cf6c2eb194',1,'ne::CameraNode::CameraNode()'],['../classne_1_1CameraNode.html',1,'ne::CameraNode']]], + ['cameraposition_13',['cameraPosition',['../structne_1_1FrameConstants.html#a84d5a1e4e3e96e30e2eb69a2549a97ec',1,'ne::FrameConstants']]], + ['cameraproperties_14',['cameraProperties',['../classne_1_1CameraNode.html#afadfdfd64b38e96bf3c13e2150c064fe',1,'ne::CameraNode']]], + ['cameraproperties_15',['CameraProperties',['../classne_1_1CameraProperties.html',1,'ne']]], + ['capabilities_16',['capabilities',['../structne_1_1VulkanRenderer_1_1SwapChainSupportDetails.html#a8c31857275b81bfed4e7a43d8fdec7d5',1,'ne::VulkanRenderer::SwapChainSupportDetails']]], + ['cbvresources_17',['cbvResources',['../classne_1_1HlslComputeShaderInterface.html#ab28c12df52b15c2196de76ec0db7c21b',1,'ne::HlslComputeShaderInterface']]], + ['center_18',['center',['../structne_1_1Sphere.html#a0db673295b7bb07feb72db6fc08830ca',1,'ne::Sphere::center()'],['../structne_1_1AABB.html#a08f000f8058ba4783db946ceeda3478d',1,'ne::AABB::center()']]], + ['changearrayindex_19',['changeArrayIndex',['../classne_1_1ShadowMapHandle.html#a8c0bcc02eb4a5eb6eb5f88d6425c37da',1,'ne::ShadowMapHandle']]], + ['changeshadowmaparrayindex_20',['changeShadowMapArrayIndex',['../classne_1_1ShadowMapArrayIndexManager.html#a9d790c4e38cde1dafcb51d35f46b4dd7',1,'ne::ShadowMapArrayIndexManager']]], + ['changeusedpipelines_21',['changeUsedPipelines',['../classne_1_1GlslShaderTextureResourceBinding.html#a4b72c64b7d785dce01fde577c3988c9f',1,'ne::GlslShaderTextureResourceBinding::changeUsedPipelines()'],['../classne_1_1ShaderCpuWriteResourceBinding.html#a7bc2c8bc3aea60dc7d57710549932a12',1,'ne::ShaderCpuWriteResourceBinding::changeUsedPipelines()'],['../classne_1_1ShaderResourceBindingBase.html#a994a141941a81fd2058c36f144c1685f',1,'ne::ShaderResourceBindingBase::changeUsedPipelines()'],['../classne_1_1HlslShaderTextureResourceBinding.html#a60b75ced6ba8617241c0e9ee60fa01ca',1,'ne::HlslShaderTextureResourceBinding::changeUsedPipelines()']]], + ['checkcachedadditionalcompilationresultsinfo_22',['checkCachedAdditionalCompilationResultsInfo',['../classne_1_1Shader.html#a11818ca25d7c8c0fd54106974986ea5e',1,'ne::Shader::checkCachedAdditionalCompilationResultsInfo()'],['../classne_1_1GlslShader.html#a9988459010db9a0541eb67e33c619486',1,'ne::GlslShader::checkCachedAdditionalCompilationResultsInfo()'],['../classne_1_1HlslShader.html#abda558c5f5894029e8a8f142e4bb80a0',1,'ne::HlslShader::checkCachedAdditionalCompilationResultsInfo()']]], + ['clampsettingstomaxsupported_23',['clampSettingsToMaxSupported',['../classne_1_1Renderer.html#ad05657ef406f0ed434e044730120bc50',1,'ne::Renderer::clampSettingsToMaxSupported()'],['../classne_1_1RenderSettings.html#a9272a6f47961e38ce05a5dc30711f49f',1,'ne::RenderSettings::clampSettingsToMaxSupported()']]], + ['clear_24',['clear',['../classne_1_1PipelineSharedPtr.html#a56e0c400e9f98b36f68621c405972e8f',1,'ne::PipelineSharedPtr']]], + ['clearactivecamera_25',['clearActiveCamera',['../classne_1_1CameraManager.html#ac8d1c44db8825d68771422dcf1acf0d8',1,'ne::CameraManager']]], + ['cleargraphicspipelinesinternalresourcesanddelayrestoring_26',['clearGraphicsPipelinesInternalResourcesAndDelayRestoring',['../classne_1_1PipelineManager.html#a96c2a86cad7a37faad2508fb372201c5',1,'ne::PipelineManager']]], + ['clearorbitaltargetlocation_27',['clearOrbitalTargetLocation',['../classne_1_1CameraNode.html#afd09e5fb6b075bcd8eeb89d738264e2e',1,'ne::CameraNode']]], + ['clearpointerandnotifypipeline_28',['clearPointerAndNotifyPipeline',['../classne_1_1PipelineSharedPtr.html#a969425d9d6613b26e631908adf2bb9a8',1,'ne::PipelineSharedPtr']]], + ['clonefield_29',['cloneField',['../classne_1_1PrimitiveFieldSerializer.html#a81782da414a164378e6cdc51b62b157a',1,'ne::PrimitiveFieldSerializer::cloneField()'],['../classne_1_1GlmVecFieldSerializer.html#ab59602603b35391b468187de31f81d01',1,'ne::GlmVecFieldSerializer::cloneField()'],['../classne_1_1IFieldSerializer.html#a1ae8afecd50c3e398ff33414e70a8f61',1,'ne::IFieldSerializer::cloneField()'],['../classne_1_1SerializableObjectFieldSerializer.html#aade78685d1a01e220300e0f3221b4e85',1,'ne::SerializableObjectFieldSerializer::cloneField()'],['../classne_1_1StringFieldSerializer.html#a173e92693293da7619d95975d9ab4a5a',1,'ne::StringFieldSerializer::cloneField()'],['../classne_1_1UnorderedMapFieldSerializer.html#a4276dac8bfad846d5ca32269e5d52c85',1,'ne::UnorderedMapFieldSerializer::cloneField()'],['../classne_1_1VectorFieldSerializer.html#a5ada0bab82838106d75fff4aa224d8c7',1,'ne::VectorFieldSerializer::cloneField()']]], + ['cloneserializableobject_30',['cloneSerializableObject',['../classne_1_1SerializableObjectFieldSerializer.html#a4de4b69ef3d5c2c526d20284af92fa2c',1,'ne::SerializableObjectFieldSerializer']]], + ['close_31',['close',['../classne_1_1Window.html#aa64f0812a116f4ddd2c32615b5881879',1,'ne::Window']]], + ['collected_32',['Collected',['../structne_1_1DescriptorSetLayoutGenerator_1_1Collected.html',1,'ne::DescriptorSetLayoutGenerator']]], + ['collectedinfo_33',['CollectedInfo',['../structne_1_1RootSignatureGenerator_1_1CollectedInfo.html',1,'ne::RootSignatureGenerator']]], + ['collectinfofrombytecode_34',['collectInfoFromBytecode',['../classne_1_1DescriptorSetLayoutGenerator.html#a5808697193eca980c68c4e1020c46771',1,'ne::DescriptorSetLayoutGenerator']]], + ['collectinfofromreflection_35',['collectInfoFromReflection',['../classne_1_1RootSignatureGenerator.html#a3f8b9fb865d2e56872c4ee525298d3fb',1,'ne::RootSignatureGenerator']]], + ['color_36',['color',['../structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData.html#aeb77c6c69bfde6ebd32043eccc54948e',1,'ne::DirectionalLightNode::DirecionalLightShaderData::color()'],['../classne_1_1SpotlightNode.html#a3a5059d31824996972470a4a99cc6055',1,'ne::SpotlightNode::color()'],['../structne_1_1SpotlightNode_1_1SpotlightShaderData.html#ad2ae69cd6b1b9f0913bab3bee7a798d4',1,'ne::SpotlightNode::SpotlightShaderData::color()'],['../classne_1_1PointLightNode.html#a7c20979ecc2639b1dd38556f1ae04032',1,'ne::PointLightNode::color()'],['../structne_1_1PointLightNode_1_1PointLightShaderData.html#a2c50b649d9acadf6898ef9bce33c1887',1,'ne::PointLightNode::PointLightShaderData::color()'],['../classne_1_1DirectionalLightNode.html#a98b61a649843ca9767bfc2cf0369a6b1',1,'ne::DirectionalLightNode::color()']]], + ['colorpipelineconfiguration_37',['ColorPipelineConfiguration',['../classne_1_1ColorPipelineConfiguration.html#ad5312e34d5a37663d9e04e8c3a0fc7b9',1,'ne::ColorPipelineConfiguration::ColorPipelineConfiguration()'],['../classne_1_1ColorPipelineConfiguration.html',1,'ne::ColorPipelineConfiguration']]], + ['combineconfigurations_38',['combineConfigurations',['../structne_1_1ShaderMacroConfigurations.html#a0256da50fbf77ce275e6d000ffbfe8e7',1,'ne::ShaderMacroConfigurations']]], + ['combineshadernames_39',['combineShaderNames',['../classne_1_1Pipeline.html#af7a9e8dc05049f4a0c760352a0a35135',1,'ne::Pipeline']]], + ['compiledshaders_40',['compiledShaders',['../structne_1_1ShaderManager_1_1ShaderData.html#aa1bad153fff0e711424986625e390ee0',1,'ne::ShaderManager::ShaderData']]], + ['compileengineshaders_41',['compileEngineShaders',['../classne_1_1Renderer.html#a02ba4b9ee40da30d3c5724fcdade5117',1,'ne::Renderer']]], + ['compilerenderdependentshader_42',['compileRenderDependentShader',['../classne_1_1Shader.html#aa27ff6aa3242003827ec215977a14125',1,'ne::Shader']]], + ['compileshader_43',['compileShader',['../classne_1_1Shader.html#a1ed2a99d9fbcba50b665c59e39e67e38',1,'ne::Shader::compileShader()'],['../classne_1_1GlslShader.html#a2439b253b962cb8892e2d1f5785bc427',1,'ne::GlslShader::compileShader()'],['../classne_1_1HlslShader.html#a09710beab6f8be11dd315b92279df72e',1,'ne::HlslShader::compileShader()']]], + ['compileshaderpack_44',['compileShaderPack',['../classne_1_1ShaderPack.html#a3c7a7c5e1701d992df2a23ffb1a9dff0',1,'ne::ShaderPack']]], + ['compileshaders_45',['compileShaders',['../classne_1_1ShaderManager.html#a8d2166c0698051cb43ba0b44dd1e6536',1,'ne::ShaderManager']]], + ['compileshadertask_46',['compileShaderTask',['../classne_1_1ShaderManager.html#a435cd6d65d44e573a745f15f3172102a',1,'ne::ShaderManager']]], + ['compileshadertobytecode_47',['compileShaderToBytecode',['../classne_1_1GlslShader.html#ab52ebda25eaf279d3f62fca544879db5',1,'ne::GlslShader::compileShaderToBytecode()'],['../classne_1_1HlslShader.html#ae2eb43e5f828d21adde32b6fe6788e5f',1,'ne::HlslShader::compileShaderToBytecode()']]], + ['compressonatorsingleton_48',['CompressonatorSingleton',['../classne_1_1CompressonatorSingleton.html#ae69a53d901f8a4403f9e39791015023c',1,'ne::CompressonatorSingleton::CompressonatorSingleton()'],['../classne_1_1CompressonatorSingleton.html',1,'ne::CompressonatorSingleton']]], + ['computeinfo_49',['ComputeInfo',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo.html',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader']]], + ['computepipelineconfiguration_50',['ComputePipelineConfiguration',['../classne_1_1ComputePipelineConfiguration.html#a100e198b2f025cbe568233c752f699b5',1,'ne::ComputePipelineConfiguration::ComputePipelineConfiguration()'],['../classne_1_1ComputePipelineConfiguration.html',1,'ne::ComputePipelineConfiguration']]], + ['computepipelines_51',['computePipelines',['../classne_1_1PipelineManager.html#aa52a60668dd2d8ab801c45c0a16c70a4',1,'ne::PipelineManager']]], + ['computepipelines_52',['ComputePipelines',['../structne_1_1PipelineManager_1_1ComputePipelines.html',1,'ne::PipelineManager']]], + ['computeshader_53',['ComputeShader',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader'],['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader']]], + ['computeshaderdata_54',['ComputeShaderData',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData.html',1,'ne::LightingShaderResourceManager']]], + ['computeshaderinterface_55',['ComputeShaderInterface',['../classne_1_1ComputeShaderInterface.html#a8f8f7fe121d6032e64d7094658f10f7f',1,'ne::ComputeShaderInterface::ComputeShaderInterface()'],['../classne_1_1ComputeShaderInterface.html',1,'ne::ComputeShaderInterface']]], + ['cone_56',['Cone',['../structne_1_1Cone.html#a3a452850d53f4861eb40238dd2ed99b8',1,'ne::Cone::Cone()=default'],['../structne_1_1Cone.html#ac4d1e9628959bcbe607add22c2cc464e',1,'ne::Cone::Cone(const glm::vec3 &location, float height, const glm::vec3 &direction, float bottomRadius)'],['../structne_1_1Cone.html',1,'ne::Cone']]], + ['conebottomradius_57',['coneBottomRadius',['../structne_1_1SpotlightNode_1_1SpotlightShaderData.html#a34e77790dfd97adf3a21d2f7ab79c0ba',1,'ne::SpotlightNode::SpotlightShaderData']]], + ['configmanager_58',['ConfigManager',['../classne_1_1ConfigManager.html#ac159e82089e6991b9b22f9e06c16dd65',1,'ne::ConfigManager::ConfigManager()'],['../classne_1_1ConfigManager.html',1,'ne::ConfigManager']]], + ['constructfilepath_59',['constructFilePath',['../classne_1_1ConfigManager.html#a0f00e5296531689ef4190a123ef23287',1,'ne::ConfigManager']]], + ['constructpathtoshadersourcefile_60',['constructPathToShaderSourceFile',['../classne_1_1EngineShaders.html#ac91ecca64b940b61ed038c984e7e0bb4',1,'ne::EngineShaders']]], + ['continuousdescriptorranges_61',['continuousDescriptorRanges',['../structne_1_1DirectXDescriptorHeap_1_1InternalData.html#a63ad9b3fd128cf07ac325997d8ae97f5',1,'ne::DirectXDescriptorHeap::InternalData']]], + ['continuousdirectxdescriptorrange_62',['ContinuousDirectXDescriptorRange',['../classne_1_1ContinuousDirectXDescriptorRange.html#a03aa5fc76b329c2aa1d52f6ba3b90d39',1,'ne::ContinuousDirectXDescriptorRange::ContinuousDirectXDescriptorRange()'],['../classne_1_1ContinuousDirectXDescriptorRange.html',1,'ne::ContinuousDirectXDescriptorRange']]], + ['convertcartesiancoordinatestospherical_63',['convertCartesianCoordinatesToSpherical',['../classne_1_1MathHelpers.html#ab8c51244450bb42df5619027e578c530',1,'ne::MathHelpers']]], + ['convertconfigurationtohash_64',['convertConfigurationToHash',['../structne_1_1ShaderMacroConfigurations.html#aab969c8a507ad54a058aaaf105367880',1,'ne::ShaderMacroConfigurations']]], + ['convertconfigurationtotext_65',['convertConfigurationToText',['../structne_1_1ShaderMacroConfigurations.html#ac437b9daf4d8174af6beaeea845d2265',1,'ne::ShaderMacroConfigurations']]], + ['convertdirectiontorollpitchyaw_66',['convertDirectionToRollPitchYaw',['../classne_1_1MathHelpers.html#aba71393ad209bc41e713a20fc0fae438',1,'ne::MathHelpers']]], + ['convertheaptypetostring_67',['convertHeapTypeToString',['../classne_1_1DirectXDescriptorHeap.html#a03fea39d2e3f0d752f285b623f2ebdcc',1,'ne::DirectXDescriptorHeap']]], + ['convertresourceusagetypetovkbufferusagetype_68',['convertResourceUsageTypeToVkBufferUsageType',['../classne_1_1VulkanResourceManager.html#a059df514f7d83c82a76a2513ddb13a02',1,'ne::VulkanResourceManager']]], + ['convertrollpitchyawtodirection_69',['convertRollPitchYawToDirection',['../classne_1_1MathHelpers.html#ac133c40d43a8cfaf56de23e9e6649b1b',1,'ne::MathHelpers']]], + ['convertshadertypetoshadercshaderkind_70',['convertShaderTypeToShadercShaderKind',['../classne_1_1GlslShader.html#a36dfc0390f6b430dfdc693f88d9a86d9',1,'ne::GlslShader']]], + ['convertsphericaltocartesiancoordinates_71',['convertSphericalToCartesianCoordinates',['../classne_1_1MathHelpers.html#ac5c45f87480b68caaa070bb371795408',1,'ne::MathHelpers']]], + ['converttextureresourceformattodxformat_72',['convertTextureResourceFormatToDxFormat',['../classne_1_1DirectXResourceManager.html#a7527c3da0a394fa0a226b9cad10ec5cc',1,'ne::DirectXResourceManager']]], + ['converttextureresourceformattovkformat_73',['convertTextureResourceFormatToVkFormat',['../classne_1_1VulkanResourceManager.html#a6a24d595205d77312fa0af5d3bd9c5e3',1,'ne::VulkanResourceManager']]], + ['copydatatoelement_74',['copyDataToElement',['../classne_1_1UploadBuffer.html#a0576ed6e3eaee33ff4c3a2c2d88518cc',1,'ne::UploadBuffer']]], + ['copydatatogpu_75',['copyDataToGpu',['../classne_1_1LightingShaderResourceManager.html#aeebc11d68f89e7a0cc7d174b09bc6f12',1,'ne::LightingShaderResourceManager']]], + ['copyresourceindextopushconstants_76',['copyResourceIndexToPushConstants',['../classne_1_1GlslShaderTextureResourceBinding.html#a145dda4a9f6868404db29cd0b1588621',1,'ne::GlslShaderTextureResourceBinding']]], + ['copyresourceindextorootconstants_77',['copyResourceIndexToRootConstants',['../classne_1_1HlslShaderTextureResourceBinding.html#a1fb8e8bdcbf5668c7ab21eda2126d78a',1,'ne::HlslShaderTextureResourceBinding']]], + ['copyresourceindextoshaderconstants_78',['copyResourceIndexToShaderConstants',['../classne_1_1ShaderCpuWriteResourceBinding.html#ae1fdd09dc4a1ed860ef49d2ea2a844c0',1,'ne::ShaderCpuWriteResourceBinding']]], + ['copyvaluetoshaderconstant_79',['copyValueToShaderConstant',['../classne_1_1PipelineShaderConstantsManager.html#ad292517c37ad69a098d56e61efd287d4',1,'ne::PipelineShaderConstantsManager']]], + ['correctshadowmapresolutionfortype_80',['correctShadowMapResolutionForType',['../classne_1_1ShadowMapManager.html#a42e4558005a41dd1e56529f95ca0c8d6',1,'ne::ShadowMapManager']]], + ['cosinnerconeangle_81',['cosInnerConeAngle',['../structne_1_1SpotlightNode_1_1SpotlightShaderData.html#aebdbe96e5f78ebdda143bc1b27eee1e0',1,'ne::SpotlightNode::SpotlightShaderData']]], + ['cosouterconeangle_82',['cosOuterConeAngle',['../structne_1_1SpotlightNode_1_1SpotlightShaderData.html#a640f432897c6ca109d103d27b0a9ccff',1,'ne::SpotlightNode::SpotlightShaderData']]], + ['counters_83',['counters',['../classne_1_1RenderStatistics.html#a5750cd49de0ac32153bf8e0c8bdcd14b',1,'ne::RenderStatistics']]], + ['counters_84',['Counters',['../structne_1_1RenderStatistics_1_1Counters.html',1,'ne::RenderStatistics']]], + ['create_85',['create',['../classne_1_1DirectXRenderer.html#a563340fbc530d8ffc266b275349e578a',1,'ne::DirectXRenderer::create()'],['../classne_1_1Material.html#ac3b008d630640dbfc2281ed97e979ecd',1,'ne::Material::create()'],['../classne_1_1Renderer.html#a329ab805808f20b4bf0b2b60f3f715c6',1,'ne::Renderer::create()'],['../classne_1_1Window.html#a9b5b50ece0bd8627e02c4e489749552d',1,'ne::Window::create()'],['../classne_1_1WindowCursor.html#a25a36c69b194328091aba187a6271d50',1,'ne::WindowCursor::create()'],['../classne_1_1HlslShaderTextureResourceBinding.html#a8167b40dbcfc97fe14f6304029a6b9fe',1,'ne::HlslShaderTextureResourceBinding::create()'],['../classne_1_1GlslShaderTextureResourceBinding.html#a3c821a0fa63e7de55ec3c83cd917f2ba',1,'ne::GlslShaderTextureResourceBinding::create()'],['../classne_1_1ShaderLightArray.html#abf03e290231b8ccbf397735d8b5da41d',1,'ne::ShaderLightArray::create()'],['../classne_1_1LightingShaderResourceManager.html#a0ba31dd66bb4ab870b307f58affd1c3e',1,'ne::LightingShaderResourceManager::create()'],['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a8b7de3f21b7402de2cb7dd7630bf99ea',1,'ne::DynamicCpuWriteShaderResourceArray::create()'],['../classne_1_1GlobalShaderResourceBinding.html#a753e2e8ad792411db85db6ea1d95414f',1,'ne::GlobalShaderResourceBinding::create()'],['../classne_1_1ShaderCpuWriteResourceBinding.html#a8a22646effb6575c74bd41857583da75',1,'ne::ShaderCpuWriteResourceBinding::create()'],['../classne_1_1ShaderCacheManager.html#a88eaa115dda2f124d317150bbbe3ef62',1,'ne::ShaderCacheManager::create()'],['../classne_1_1VulkanRenderer.html#a72f6619897fdb3232624e240783970ad',1,'ne::VulkanRenderer::create()'],['../classne_1_1VulkanResource.html#ac7ef62c793386a8c4516c0ed8b9f0830',1,'ne::VulkanResource::create(VulkanResourceManager *pResourceManager, const std::string &sResourceName, ktxVulkanTexture ktxTexture)'],['../classne_1_1VulkanResource.html#acf5a6afb5245c1b11692f8bd578e2442',1,'ne::VulkanResource::create(VulkanResourceManager *pResourceManager, const std::string &sResourceName, VmaAllocator pMemoryAllocator, const VkImageCreateInfo &imageInfo, const VmaAllocationCreateInfo &allocationInfo, std::optional< VkImageAspectFlags > viewDescription, bool bIsCubeMapView=false)'],['../classne_1_1VulkanResource.html#a676b4c1ad0f17d0aeec309b2b0887457',1,'ne::VulkanResource::create(VulkanResourceManager *pResourceManager, const std::string &sResourceName, VmaAllocator pMemoryAllocator, const VkBufferCreateInfo &bufferInfo, const VmaAllocationCreateInfo &allocationInfo, unsigned int iElementSizeInBytes, unsigned int iElementCount)'],['../classne_1_1ShadowMapManager.html#afdeaed693969ef6c0086bd4cbe1e7566',1,'ne::ShadowMapManager::create()'],['../classne_1_1ShadowMapArrayIndexManager.html#ae6d05e46a6008971f9941a2b423c9bdf',1,'ne::ShadowMapArrayIndexManager::create()'],['../classne_1_1GpuResourceManager.html#a71c9e5a58c7becf033edd6e94167f55d',1,'ne::GpuResourceManager::create()'],['../classne_1_1FrameResourceManager.html#ad42756d12fceadc03738867da9cfcdfe',1,'ne::FrameResourceManager::create()'],['../classne_1_1DirectXShadowMapArrayIndexManager.html#aec6ba090fa1681274b6b3c2d2ff86d27',1,'ne::DirectXShadowMapArrayIndexManager::create()'],['../classne_1_1DirectXResourceManager.html#a03dac55b0407fbad02a7163f1408d897',1,'ne::DirectXResourceManager::create()'],['../classne_1_1DirectXResource.html#a7bea5e130871494072e59a7a86cd2cf3',1,'ne::DirectXResource::create()'],['../classne_1_1DirectXDescriptorHeap.html#a0d29feace5aaf5fb2951bec7b4c0d3a3',1,'ne::DirectXDescriptorHeap::create()'],['../classne_1_1VulkanResourceManager.html#aedcb8a5137bad9f3ce0a61457f20f80a',1,'ne::VulkanResourceManager::create()']]], + ['createarray_86',['createArray',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a8b8464857538cd06ccc5a875804d5c6d',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['createbuffer_87',['createBuffer',['../classne_1_1VulkanResourceManager.html#a260c54ebbb06263a3db83fc4d3e5fb1f',1,'ne::VulkanResourceManager::createBuffer(const std::string &sResourceName, const VkBufferCreateInfo &bufferInfo, const VmaAllocationCreateInfo &allocationInfo, unsigned int iElementSizeInBytes, unsigned int iElementCount)'],['../classne_1_1VulkanResourceManager.html#a4c14e543b942b6e585fa2993caa2e737',1,'ne::VulkanResourceManager::createBuffer(const std::string &sResourceName, VkDeviceSize iBufferSize, VkBufferUsageFlags bufferUsage, bool bAllowCpuWrite, unsigned int iElementSizeInBytes, unsigned int iElementCount)']]], + ['createcommandlist_88',['createCommandList',['../classne_1_1DirectXRenderer.html#a5f66a037cf7681ad65cb871756b137bb',1,'ne::DirectXRenderer']]], + ['createcommandpool_89',['createCommandPool',['../classne_1_1VulkanRenderer.html#ade11ccb2b6db9600acda37859587df57',1,'ne::VulkanRenderer']]], + ['createcommandqueue_90',['createCommandQueue',['../classne_1_1DirectXRenderer.html#a98d4301fc8204a56f223097eb3cb5bc2',1,'ne::DirectXRenderer']]], + ['createcomputepipeline_91',['createComputePipeline',['../classne_1_1Pipeline.html#a65c5d8932e6792fc8b584ad03fdf28f6',1,'ne::Pipeline::createComputePipeline()'],['../classne_1_1VulkanPipeline.html#a8c03e8298ec83e5a95148abc77937bae',1,'ne::VulkanPipeline::createComputePipeline(Renderer *pRenderer, PipelineManager *pPipelineManager, const std::string &sComputeShaderName)'],['../classne_1_1VulkanPipeline.html#a7ec3cb31b77a830a626f9956fcfad663',1,'ne::VulkanPipeline::createComputePipeline(VulkanRenderer *pVulkanRenderer, GlslShader *pComputeShader)']]], + ['createcomputepso_92',['createComputePso',['../classne_1_1DirectXPso.html#a75b11d16db493ab2643361ad3fd22eef',1,'ne::DirectXPso']]], + ['createcomputetexturesampler_93',['createComputeTextureSampler',['../classne_1_1VulkanRenderer.html#a1710a797dad8501705c06d307cf48c81',1,'ne::VulkanRenderer']]], + ['createcube_94',['createCube',['../classne_1_1PrimitiveMeshGenerator.html#a561b0e915550760d5a9f7cfd58c9df8a',1,'ne::PrimitiveMeshGenerator']]], + ['createcursor_95',['createCursor',['../classne_1_1Window.html#a218650ea81247783eb3b768311c8662b',1,'ne::Window']]], + ['createdepthimage_96',['createDepthImage',['../classne_1_1VulkanRenderer.html#a3c1974da9773bc5908a0c8c482d9583a',1,'ne::VulkanRenderer']]], + ['createdepthonlyrenderpass_97',['createDepthOnlyRenderPass',['../classne_1_1VulkanRenderer.html#aecb0609c18ccac6662fa096258a93718',1,'ne::VulkanRenderer']]], + ['createdepthstencilbuffer_98',['createDepthStencilBuffer',['../classne_1_1DirectXRenderer.html#af772fa96f6b1e7d98993850c49938c06',1,'ne::DirectXRenderer']]], + ['createdescription_99',['createDescription',['../classne_1_1VertexFormatDescription.html#a12bbedae0fb811f3c2edf5305ef8e3c2',1,'ne::VertexFormatDescription::createDescription()'],['../classne_1_1GlslVertexFormatDescription.html#a223d2e61d5bf728e421b950aa5ed1b36',1,'ne::GlslVertexFormatDescription::createDescription()'],['../classne_1_1HlslVertexFormatDescription.html#a7a40cf759e48c9f51406169c771badad',1,'ne::HlslVertexFormatDescription::createDescription()']]], + ['createeditornode_100',['createEditorNode',['../classne_1_1EditorNodeCreationHelpers.html#ac27cd814e1fa939ca533cf7f5e0836a9',1,'ne::EditorNodeCreationHelpers']]], + ['createfromcache_101',['createFromCache',['../classne_1_1Shader.html#ac8556a2d59aac40ce122be453611608c',1,'ne::Shader::createFromCache()'],['../classne_1_1ShaderPack.html#afdc9476711344b190a2a07855106acce',1,'ne::ShaderPack::createFromCache()']]], + ['createfromvertices_102',['createFromVertices',['../structne_1_1AABB.html#af95248f9c0353559e76cc616e75313c0',1,'ne::AABB']]], + ['createglobalshaderresourcebindingresourceperframe_103',['createGlobalShaderResourceBindingResourcePerFrame',['../classne_1_1GlobalShaderResourceBindingManager.html#a50b52be19c6c1758c5db6c4e8bba9968',1,'ne::GlobalShaderResourceBindingManager']]], + ['createglobalshaderresourcebindingsingleresource_104',['createGlobalShaderResourceBindingSingleResource',['../classne_1_1GlobalShaderResourceBindingManager.html#a349ec6b21d175bcccb8a3ae4b088128c',1,'ne::GlobalShaderResourceBindingManager']]], + ['creategraphicspipeline_105',['createGraphicsPipeline',['../classne_1_1VulkanPipeline.html#a124250d5c8831bc3edee3d4f64af4954',1,'ne::VulkanPipeline::createGraphicsPipeline(Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration)'],['../classne_1_1VulkanPipeline.html#a8cebaf1166f0e6b1c4cdf97878898f0a',1,'ne::VulkanPipeline::createGraphicsPipeline(VulkanRenderer *pVulkanRenderer, GlslShader *pVertexShader, GlslShader *pFragmentShader, bool bUsePixelBlending)'],['../classne_1_1Pipeline.html#a7201a6cf1a84a049527ed8b3a4226d8d',1,'ne::Pipeline::createGraphicsPipeline()']]], + ['creategraphicspipelineformaterial_106',['createGraphicsPipelineForMaterial',['../classne_1_1PipelineManager.html#ab5a5dd302834a0098188defe1051edb6',1,'ne::PipelineManager']]], + ['creategraphicspso_107',['createGraphicsPso',['../classne_1_1DirectXPso.html#a4960728fd4cbefb43b371fdf589095f3',1,'ne::DirectXPso']]], + ['createheap_108',['createHeap',['../classne_1_1DirectXDescriptorHeap.html#af2e838b499904e1cda555aca59be14e3',1,'ne::DirectXDescriptorHeap']]], + ['createimage_109',['createImage',['../classne_1_1VulkanResourceManager.html#a93d53203a1ce3a6c60a0b27799960c35',1,'ne::VulkanResourceManager']]], + ['createlightindexlistsandlightgrid_110',['createLightIndexListsAndLightGrid',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html#a3c8b14d8953896b32447dead850a5cfe',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader']]], + ['createlogicaldevice_111',['createLogicalDevice',['../classne_1_1VulkanRenderer.html#ac03701aac30a708bd63b42c77ce55618',1,'ne::VulkanRenderer']]], + ['createmainrenderpass_112',['createMainRenderPass',['../classne_1_1VulkanRenderer.html#ac3a2829ecb547e4bb6ccce2b92d8e943',1,'ne::VulkanRenderer']]], + ['createmsaaimage_113',['createMsaaImage',['../classne_1_1VulkanRenderer.html#aa531822b46e63a1df0396bd9877b3eca',1,'ne::VulkanRenderer']]], + ['createnewshadercache_114',['createNewShaderCache',['../classne_1_1ShaderCacheManager.html#a751381c8f07c63b5adbdfaa1c21ddbe2',1,'ne::ShaderCacheManager']]], + ['createnewtexturehandle_115',['createNewTextureHandle',['../classne_1_1TextureManager.html#ab4cf5f60eb0e62615b50b183aade6061',1,'ne::TextureManager']]], + ['createnotificationbroadcaster_116',['createNotificationBroadcaster',['../classne_1_1Node.html#a5f2dca870a640ac24053a76b804ce111',1,'ne::Node']]], + ['createonetimesubmitcommandbuffer_117',['createOneTimeSubmitCommandBuffer',['../classne_1_1VulkanRenderer.html#a6ba6849ba3e37cc117afec21b339f97e',1,'ne::VulkanRenderer']]], + ['createpartiallyinitializedrenderspecificinterface_118',['createPartiallyInitializedRenderSpecificInterface',['../classne_1_1ComputeShaderInterface.html#afdf3e809c7c7a335aba188bdd38865cb',1,'ne::ComputeShaderInterface']]], + ['createrenderdependentframeresources_119',['createRenderDependentFrameResources',['../classne_1_1FrameResourceManager.html#ad87185a708fba8c76b32202a019b6582',1,'ne::FrameResourceManager']]], + ['createrenderdependentshaderfromcache_120',['createRenderDependentShaderFromCache',['../classne_1_1Shader.html#aee13925a6c8f208f9adab11fc710ff35',1,'ne::Shader']]], + ['createrenderer_121',['createRenderer',['../classne_1_1Renderer.html#a687d528df003c3e5b85a35b8d7a2d581',1,'ne::Renderer::createRenderer(GameManager *pGameManager, std::optional< RendererType > preferredRenderer)'],['../classne_1_1Renderer.html#a80bb51d2db6be521c11d1066516f6f06',1,'ne::Renderer::createRenderer(RendererType type, GameManager *pGameManager, const std::vector< std::string > &vBlacklistedGpuNames)']]], + ['createrendererspecificmanager_122',['createRendererSpecificManager',['../classne_1_1GpuResourceManager.html#a0ae59995a7856ffe4ee188705bb6809b',1,'ne::GpuResourceManager']]], + ['createrenderpasses_123',['createRenderPasses',['../classne_1_1VulkanRenderer.html#ab8d78098e6ef1c645f722fefcd8f494d',1,'ne::VulkanRenderer']]], + ['createrenderspecificinterface_124',['createRenderSpecificInterface',['../classne_1_1ComputeShaderInterface.html#a11355f0efb3b89792fb562512a63da5b',1,'ne::ComputeShaderInterface']]], + ['createresource_125',['createResource',['../classne_1_1DirectXResourceManager.html#acd9f6c63e16d7c4300dba39f0a44fbb2',1,'ne::DirectXResourceManager::createResource(const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource) override'],['../classne_1_1DirectXResourceManager.html#a6c2d9741e1b106aaad80641e6ec86a75',1,'ne::DirectXResourceManager::createResource(const std::string &sResourceName, const D3D12MA::ALLOCATION_DESC &allocationDesc, const D3D12_RESOURCE_DESC &resourceDesc, const D3D12_RESOURCE_STATES &initialResourceState, const std::optional< D3D12_CLEAR_VALUE > &resourceClearValue)'],['../classne_1_1GpuResourceManager.html#ae10f17bd3fe1402deff6501dadf97085',1,'ne::GpuResourceManager::createResource()'],['../classne_1_1VulkanResourceManager.html#adc81fd834a7c7a0b9ca9ccc1c8d39174',1,'ne::VulkanResourceManager::createResource()']]], + ['createresourcefromswapchainbuffer_126',['createResourceFromSwapChainBuffer',['../classne_1_1DirectXResource.html#a8fc3c9641487eac5be9f0e90ae086c27',1,'ne::DirectXResource']]], + ['createresourcewithcpuwriteaccess_127',['createResourceWithCpuWriteAccess',['../classne_1_1GpuResourceManager.html#a3b6b609815ffa83367d236a9bc161184',1,'ne::GpuResourceManager::createResourceWithCpuWriteAccess()'],['../classne_1_1VulkanResourceManager.html#a188efc9ccb999c3b3e2799391be27e88',1,'ne::VulkanResourceManager::createResourceWithCpuWriteAccess()'],['../classne_1_1DirectXResourceManager.html#a054542cccba822248ab956d4e7a20a77',1,'ne::DirectXResourceManager::createResourceWithCpuWriteAccess(const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, std::optional< bool > isUsedInShadersAsArrayResource) override']]], + ['createresourcewithdata_128',['createResourceWithData',['../classne_1_1DirectXResourceManager.html#ad8a2540c34c3a75ef33332a799116b4a',1,'ne::DirectXResourceManager::createResourceWithData(const std::string &sResourceName, const void *pBufferData, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource) override'],['../classne_1_1DirectXResourceManager.html#a4b1608b20346b9e8a8e4c17cd54dcbd0',1,'ne::DirectXResourceManager::createResourceWithData(const std::string &sResourceName, const D3D12_RESOURCE_DESC &finalResourceDescription, const std::vector< D3D12_SUBRESOURCE_DATA > &vSubresourcesToCopy, const D3D12_RESOURCE_DESC &uploadResourceDescription, bool bIsTextureResource, size_t iElementSizeInBytes=0, size_t iElementCount=0)'],['../classne_1_1GpuResourceManager.html#a06e28ad52a7a5e112965bb69bf1e7453',1,'ne::GpuResourceManager::createResourceWithData()'],['../classne_1_1VulkanResourceManager.html#a3ecb83b9bc9c1933c66a08515b4e5f34',1,'ne::VulkanResourceManager::createResourceWithData()']]], + ['createshadercpuwriteresource_129',['createShaderCpuWriteResource',['../classne_1_1ShaderCpuWriteResourceBindingManager.html#ac72f18bb5467c304b92ad311c538eccf',1,'ne::ShaderCpuWriteResourceBindingManager']]], + ['createshaderreadwritetextureresource_130',['createShaderReadWriteTextureResource',['../classne_1_1DirectXResourceManager.html#a0be34ba9f11f44ca032c048bb1c7f760',1,'ne::DirectXResourceManager::createShaderReadWriteTextureResource()'],['../classne_1_1GpuResourceManager.html#ad1657d2dcef066ddbc3d51e7b15b7eeb',1,'ne::GpuResourceManager::createShaderReadWriteTextureResource()'],['../classne_1_1VulkanResourceManager.html#a42fef744a9adf9b4214a8571740ec6f2',1,'ne::VulkanResourceManager::createShaderReadWriteTextureResource()']]], + ['createshadertextureresource_131',['createShaderTextureResource',['../classne_1_1ShaderTextureResourceBindingManager.html#ab169d6343a60876e0748b358f901407f',1,'ne::ShaderTextureResourceBindingManager']]], + ['createshadowmap_132',['createShadowMap',['../classne_1_1ShadowMapManager.html#aaa3738a11cb6e6d13f2b32a72cb2d884',1,'ne::ShadowMapManager']]], + ['createshadowmappingrenderpasses_133',['createShadowMappingRenderPasses',['../classne_1_1VulkanRenderer.html#a34e46570dd6eff948ed4c9954002b433',1,'ne::VulkanRenderer']]], + ['createshadowmaptexture_134',['createShadowMapTexture',['../classne_1_1DirectXResourceManager.html#ada5ed605700ba61b32343256e1f167e5',1,'ne::DirectXResourceManager::createShadowMapTexture()'],['../classne_1_1VulkanResourceManager.html#a1f5eb768a33dff3a9eb310c283954a0a',1,'ne::VulkanResourceManager::createShadowMapTexture()'],['../classne_1_1GpuResourceManager.html#aabeed80bdfa62a81dd80ecb8f0499de8',1,'ne::GpuResourceManager::createShadowMapTexture()']]], + ['createshadowtexturesampler_135',['createShadowTextureSampler',['../classne_1_1VulkanRenderer.html#afcc002e2b0f9a23dfb3901201fb576cd',1,'ne::VulkanRenderer']]], + ['createswapchain_136',['createSwapChain',['../classne_1_1DirectXRenderer.html#aae666e59658c23839e96be3853bf01c3',1,'ne::DirectXRenderer::createSwapChain()'],['../classne_1_1VulkanRenderer.html#a12e7cdf043898ecb3941625e48e43d51',1,'ne::VulkanRenderer::createSwapChain()']]], + ['createswapchainframebuffers_137',['createSwapChainFramebuffers',['../classne_1_1VulkanRenderer.html#a1baf0a69e479a0c765cbd89a7434695a',1,'ne::VulkanRenderer']]], + ['createtexturesampler_138',['createTextureSampler',['../classne_1_1VulkanRenderer.html#a737d9784afa5358a973580273ef5a23f',1,'ne::VulkanRenderer']]], + ['createtimer_139',['createTimer',['../classne_1_1GameInstance.html#abc2070d12e33c6658ff109040a20b324',1,'ne::GameInstance::createTimer()'],['../classne_1_1Node.html#a0e80560b3b2f02be42285e60195f1b64',1,'ne::Node::createTimer()']]], + ['createusinggraphicsqueue_140',['createUsingGraphicsQueue',['../classne_1_1ComputeShaderInterface.html#ad1cfd5a57d56a66433d3da5744f5092d',1,'ne::ComputeShaderInterface']]], + ['createview_141',['createView',['../classne_1_1DirectXDescriptorHeap.html#ae620d73736459a50de75807f8ea4d5a6',1,'ne::DirectXDescriptorHeap']]], + ['createvulkaninstance_142',['createVulkanInstance',['../classne_1_1VulkanRenderer.html#a9a5f2dc988ff0dbbda8aabdfe393ae5f',1,'ne::VulkanRenderer']]], + ['createwindowsurface_143',['createWindowSurface',['../classne_1_1VulkanRenderer.html#a586500bcb331bb423a61ac9bddb30436',1,'ne::VulkanRenderer']]], + ['createworld_144',['createWorld',['../classne_1_1GameManager.html#a56d0b6a09db7a67f1cd036e9414e1be6',1,'ne::GameManager::createWorld()'],['../classne_1_1World.html#af6da71bf1c2496e8591379d5703ed96c',1,'ne::World::createWorld()'],['../classne_1_1GameInstance.html#aff0fca06776071d01c9e97909806df6a',1,'ne::GameInstance::createWorld()']]], + ['culllightsoutsidecamerafrustum_145',['cullLightsOutsideCameraFrustum',['../classne_1_1Renderer.html#a4c65b8eeb863809e7287596f9cfc926c',1,'ne::Renderer']]], + ['currentcameramode_146',['currentCameraMode',['../structne_1_1CameraProperties_1_1Data.html#ac88c2f4388238051d479ccd8af187248',1,'ne::CameraProperties::Data']]], + ['currentframeresource_147',['CurrentFrameResource',['../structne_1_1FrameResourceManager_1_1CurrentFrameResource.html',1,'ne::FrameResourceManager']]], + ['currentmovementspeed_148',['currentMovementSpeed',['../classne_1_1EditorCameraNode.html#a5b51d4e57cc3d6c659001f19fb230ad9',1,'ne::EditorCameraNode']]], + ['currentmovementspeedmultiplier_149',['currentMovementSpeedMultiplier',['../classne_1_1EditorCameraNode.html#a946b516deda1be96c2f78eedffd6e009',1,'ne::EditorCameraNode']]], + ['currentpixelshaderconfiguration_150',['currentPixelShaderConfiguration',['../classne_1_1ShaderConfiguration.html#aa60140441c2deb2c065ff3f2bc4ddd6a',1,'ne::ShaderConfiguration']]], + ['currentvertexshaderconfiguration_151',['currentVertexShaderConfiguration',['../classne_1_1ShaderConfiguration.html#a3097b928b6df3741b50599bf984ff297',1,'ne::ShaderConfiguration']]], + ['customattributes_152',['customAttributes',['../structne_1_1SerializableObjectInformation.html#a98df142c3804175ea2388b143cd44fcb',1,'ne::SerializableObjectInformation::customAttributes()'],['../structne_1_1DeserializedObjectInformation.html#ac6e6cb3fd6bbdd733fcfb0099f795a37',1,'ne::DeserializedObjectInformation::customAttributes()']]], + ['cvnewtasks_153',['cvNewTasks',['../classne_1_1ThreadPool.html#aa488f3ca175539fed87cb144cbabb779',1,'ne::ThreadPool']]], + ['cvterminatetimerthread_154',['cvTerminateTimerThread',['../classne_1_1Timer.html#a3c05c141e0c1fc85391171212488fd6c',1,'ne::Timer']]] +]; diff --git a/search/all_3.js b/search/all_3.js new file mode 100644 index 000000000..9ec935215 --- /dev/null +++ b/search/all_3.js @@ -0,0 +1,66 @@ +var searchData= +[ + ['d3dheaptype_0',['d3dHeapType',['../classne_1_1DirectXDescriptorHeap.html#a421fc2ff7dde83239ddaa608e80759ad',1,'ne::DirectXDescriptorHeap']]], + ['data_1',['Data',['../structne_1_1CameraProperties_1_1Data.html',1,'ne::CameraProperties::Data'],['../structne_1_1KtxLoadingCallbackManager_1_1Data.html',1,'ne::KtxLoadingCallbackManager::Data']]], + ['deallocategeometrybuffers_2',['deallocateGeometryBuffers',['../classne_1_1MeshNode.html#abee6b4fa44a505403f4255a2a3cdbc99',1,'ne::MeshNode']]], + ['deallocateshaderresources_3',['deallocateShaderResources',['../classne_1_1MeshNode.html#a6fd309b596dd9b63483f174af4f64b95',1,'ne::MeshNode::deallocateShaderResources()'],['../classne_1_1Material.html#ac3395d21390030fd5e0b7da98b96b751',1,'ne::Material::deallocateShaderResources()']]], + ['definedshadermacros_4',['definedShaderMacros',['../structne_1_1ShaderDescription.html#a8fc83f42bb8cb32fa56c9e08bb2d008e',1,'ne::ShaderDescription']]], + ['definepushconstants_5',['definePushConstants',['../classne_1_1VulkanPipeline.html#a4f870a6a2501b7eb449fe47928e29039',1,'ne::VulkanPipeline']]], + ['delayedpipelineresourcescreation_6',['DelayedPipelineResourcesCreation',['../classne_1_1DelayedPipelineResourcesCreation.html#ac24112ba84b83dbedcda80e32c31cabd',1,'ne::DelayedPipelineResourcesCreation::DelayedPipelineResourcesCreation()'],['../classne_1_1DelayedPipelineResourcesCreation.html',1,'ne::DelayedPipelineResourcesCreation']]], + ['dependentmacros_7',['dependentMacros',['../structne_1_1ShaderMacroConfigurations.html#a39eaa20a6e766e5cb75d9242daeaef2b',1,'ne::ShaderMacroConfigurations']]], + ['depthbuffernomultisamplingformat_8',['depthBufferNoMultisamplingFormat',['../classne_1_1DirectXRenderer.html#aaa55f165ca5a2b877a69ff845a0f7aad',1,'ne::DirectXRenderer']]], + ['depthimageformat_9',['depthImageFormat',['../classne_1_1VulkanRenderer.html#a277331e6e8951e7db11500a9adde3639',1,'ne::VulkanRenderer']]], + ['depthimagetiling_10',['depthImageTiling',['../classne_1_1VulkanRenderer.html#a59b309f5f59fed39563d3fe2893b82d1',1,'ne::VulkanRenderer']]], + ['depthpipelineconfiguration_11',['DepthPipelineConfiguration',['../classne_1_1DepthPipelineConfiguration.html#a4f0ebe4f37534c94b736ff65d5608471',1,'ne::DepthPipelineConfiguration::DepthPipelineConfiguration()'],['../classne_1_1DepthPipelineConfiguration.html',1,'ne::DepthPipelineConfiguration']]], + ['depthresolvemode_12',['depthResolveMode',['../classne_1_1VulkanRenderer.html#a5f2687dad58c52e725cda098c14582e0',1,'ne::VulkanRenderer']]], + ['depthstencilbufferformat_13',['depthStencilBufferFormat',['../classne_1_1DirectXRenderer.html#a93419e64ab13c80b70295b017dae8280',1,'ne::DirectXRenderer']]], + ['descriptorconstants_14',['DescriptorConstants',['../structne_1_1DescriptorConstants.html',1,'ne']]], + ['descriptorsetlayoutbindinginfo_15',['DescriptorSetLayoutBindingInfo',['../structne_1_1DescriptorSetLayoutGenerator_1_1Collected_1_1DescriptorSetLayoutBindingInfo.html',1,'ne::DescriptorSetLayoutGenerator::Collected']]], + ['descriptorsetlayoutgenerator_16',['DescriptorSetLayoutGenerator',['../classne_1_1DescriptorSetLayoutGenerator.html',1,'ne']]], + ['descriptorssametype_17',['DescriptorsSameType',['../structne_1_1DirectXResource_1_1DescriptorsSameType.html',1,'ne::DirectXResource']]], + ['descriptortablestobind_18',['descriptorTablesToBind',['../structne_1_1DirectXPso_1_1InternalResources.html#abc78273021854a8153a689aafae979a4',1,'ne::DirectXPso::InternalResources']]], + ['descriptortype_19',['descriptorType',['../classne_1_1DirectXDescriptor.html#ad280c5ca971c8006ec6152f2db2cbe44',1,'ne::DirectXDescriptor']]], + ['deserialize_20',['deserialize',['../classne_1_1Serializable.html#a464dd6597a8eb7793dfde75c36a44a24',1,'ne::Serializable::deserialize(const std::filesystem::path &pathToFile)'],['../classne_1_1Serializable.html#a3162d0dbc003bfcef8c0ae0846b32f77',1,'ne::Serializable::deserialize(const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)'],['../classne_1_1Serializable.html#a32a58a89522b5cca64db7b6750a73a19',1,'ne::Serializable::deserialize(std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)'],['../classne_1_1Serializable.html#afb8e66a57cc108fca4d35ae40de8e22a',1,'ne::Serializable::deserialize(const std::filesystem::path &pathToFile, const std::string &sEntityId)'],['../classne_1_1Serializable.html#af67ef936c5d20e2f861430b48c69c95a',1,'ne::Serializable::deserialize(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})']]], + ['deserializedobjectinformation_21',['DeserializedObjectInformation',['../structne_1_1DeserializedObjectInformation.html#a406090b0706536fc4f4691e4dd83cd50',1,'ne::DeserializedObjectInformation::DeserializedObjectInformation()'],['../structne_1_1DeserializedObjectInformation.html',1,'ne::DeserializedObjectInformation< SmartPointer, InnerType >']]], + ['deserializefield_22',['deserializeField',['../classne_1_1GlmVecFieldSerializer.html#a8edebb5ee053cdee85781eb7665c41e5',1,'ne::GlmVecFieldSerializer::deserializeField()'],['../classne_1_1IBinaryFieldSerializer.html#a3754b7399959c000a85b530bde197cae',1,'ne::IBinaryFieldSerializer::deserializeField()'],['../classne_1_1IFieldSerializer.html#a1d29ae36f95085f2ac1d38a23786033e',1,'ne::IFieldSerializer::deserializeField()'],['../classne_1_1MeshDataBinaryFieldSerializer.html#aa57307de527e72c0aaedbf83a8be8884',1,'ne::MeshDataBinaryFieldSerializer::deserializeField()'],['../classne_1_1PrimitiveFieldSerializer.html#af4c3afefc6645db9145e21403dfe7ef0',1,'ne::PrimitiveFieldSerializer::deserializeField()'],['../classne_1_1SerializableObjectFieldSerializer.html#acd380b1c75bc23c9147292ff6d7992f8',1,'ne::SerializableObjectFieldSerializer::deserializeField()'],['../classne_1_1StringFieldSerializer.html#a65ab73d3993240b01dfe68d079742e30',1,'ne::StringFieldSerializer::deserializeField()'],['../classne_1_1UnorderedMapFieldSerializer.html#a89f311522840bfb21d4ac363e7b789ec',1,'ne::UnorderedMapFieldSerializer::deserializeField()'],['../classne_1_1VectorFieldSerializer.html#afb26619237c0acd15d41b6fe47197c73',1,'ne::VectorFieldSerializer::deserializeField()']]], + ['deserializefromsection_23',['deserializeFromSection',['../classne_1_1Serializable.html#adf799d17a8e7649d66c956fee4bb921b',1,'ne::Serializable']]], + ['deserializemultiple_24',['deserializeMultiple',['../classne_1_1Serializable.html#a5d16d519e3d326cbdc101e78ca1a2478',1,'ne::Serializable']]], + ['deserializenodetree_25',['deserializeNodeTree',['../classne_1_1Node.html#a7b45ecbcfa73932f521f10154cd65e35',1,'ne::Node']]], + ['deserializeserializableobject_26',['deserializeSerializableObject',['../classne_1_1SerializableObjectFieldSerializer.html#aabceb0f46d2e228aa52452da411985c7',1,'ne::SerializableObjectFieldSerializer']]], + ['deserializeshaderincludetreehashes_27',['deserializeShaderIncludeTreeHashes',['../structne_1_1ShaderDescription.html#a0a93d7f6ab9d7c5351b3412c805438f0',1,'ne::ShaderDescription']]], + ['desktopnotification_28',['DesktopNotification',['../classne_1_1DesktopNotification.html',1,'ne']]], + ['despawn_29',['despawn',['../classne_1_1Node.html#ad9bd6ddcf9906c8526b02aa7d1067776',1,'ne::Node']]], + ['destroy_30',['destroy',['../classne_1_1GameManager.html#abaeb5caa61c983880af3717cb064dd3d',1,'ne::GameManager::destroy()'],['../classne_1_1DelayedPipelineResourcesCreation.html#afaffb5e2c2373aaebb46ff9434db8352',1,'ne::DelayedPipelineResourcesCreation::destroy()']]], + ['destroyandcleanexistingworld_31',['destroyAndCleanExistingWorld',['../classne_1_1GameManager.html#a9d22383e19aa33ebc740aab88ffdc709',1,'ne::GameManager']]], + ['destroyresource_32',['destroyResource',['../classne_1_1ShaderCpuWriteResourceBindingManager.html#a39a238fca36d55a121ceb843dbac289a',1,'ne::ShaderCpuWriteResourceBindingManager::destroyResource()'],['../classne_1_1ShaderTextureResourceBindingManager.html#a6b8a74810c30429ad595367438029d28',1,'ne::ShaderTextureResourceBindingManager::destroyResource()']]], + ['destroyswapchainanddependentresources_33',['destroySwapChainAndDependentResources',['../classne_1_1VulkanRenderer.html#a245053a3aed78b4cc1b8e1c1c416d21c',1,'ne::VulkanRenderer']]], + ['destroyworld_34',['destroyWorld',['../classne_1_1World.html#a09026fca206138bcf07975ef8bbbdd15',1,'ne::World']]], + ['detachfromparentanddespawn_35',['detachFromParentAndDespawn',['../classne_1_1Node.html#aa4e2afe27909c7d87d39c048999ab190',1,'ne::Node']]], + ['determinetextureformatextension_36',['determineTextureFormatExtension',['../classne_1_1TextureManager.html#abd42d25226801617a66a276d8679acd9',1,'ne::TextureManager']]], + ['diffusecolor_37',['diffuseColor',['../structne_1_1Material_1_1MaterialShaderConstants.html#a920737578056900bed0cef285579d920',1,'ne::Material::MaterialShaderConstants::diffuseColor()'],['../classne_1_1Material.html#a24db045bd570219481d2a2e2c7fa99f4',1,'ne::Material::diffuseColor()']]], + ['direcionallightshaderdata_38',['DirecionalLightShaderData',['../structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData.html',1,'ne::DirectionalLightNode']]], + ['direction_39',['direction',['../structne_1_1Cone.html#a20f57ac20ce70ce5f4674120d860cdad',1,'ne::Cone::direction()'],['../structne_1_1SpotlightNode_1_1SpotlightShaderData.html#a41724cfd271178bc9391d6b128d27e9f',1,'ne::SpotlightNode::SpotlightShaderData::direction()'],['../structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData.html#a7d83b206320f0a85f11ea7240463d1ca',1,'ne::DirectionalLightNode::DirecionalLightShaderData::direction()']]], + ['directionallightnode_40',['DirectionalLightNode',['../classne_1_1DirectionalLightNode.html#a3aaaab3578d22d40515c645997414c82',1,'ne::DirectionalLightNode::DirectionalLightNode()'],['../classne_1_1DirectionalLightNode.html',1,'ne::DirectionalLightNode']]], + ['directxdescriptor_41',['DirectXDescriptor',['../classne_1_1DirectXDescriptor.html#a1653dd29d1ee727a98111b7192b438cc',1,'ne::DirectXDescriptor::DirectXDescriptor()'],['../classne_1_1DirectXDescriptor.html',1,'ne::DirectXDescriptor']]], + ['directxdescriptorheap_42',['DirectXDescriptorHeap',['../classne_1_1DirectXDescriptorHeap.html#a4180de8457a89d357473ebd7d1c218ab',1,'ne::DirectXDescriptorHeap::DirectXDescriptorHeap()'],['../classne_1_1DirectXDescriptorHeap.html',1,'ne::DirectXDescriptorHeap']]], + ['directxframeresource_43',['DirectXFrameResource',['../structne_1_1DirectXFrameResource.html',1,'ne']]], + ['directxpso_44',['DirectXPso',['../classne_1_1DirectXPso.html#ab94bbd234d8696b0ac7e8890c79fe008',1,'ne::DirectXPso::DirectXPso()'],['../classne_1_1DirectXPso.html',1,'ne::DirectXPso']]], + ['directxrenderer_45',['DirectXRenderer',['../classne_1_1DirectXRenderer.html#aa5b10bcccb9602f1aadf2422db1fda03',1,'ne::DirectXRenderer::DirectXRenderer()'],['../classne_1_1DirectXRenderer.html',1,'ne::DirectXRenderer']]], + ['directxresource_46',['DirectXResource',['../classne_1_1DirectXResource.html#a64e30c33040fa4213f57ba3d736403b5',1,'ne::DirectXResource::DirectXResource()'],['../classne_1_1DirectXResource.html',1,'ne::DirectXResource']]], + ['directxresourcemanager_47',['DirectXResourceManager',['../classne_1_1DirectXResourceManager.html#a01f42f11f72e1766795c391ea2978c05',1,'ne::DirectXResourceManager::DirectXResourceManager()'],['../classne_1_1DirectXResourceManager.html',1,'ne::DirectXResourceManager']]], + ['directxshadowmaparrayindexmanager_48',['DirectXShadowMapArrayIndexManager',['../classne_1_1DirectXShadowMapArrayIndexManager.html#a49a1df0ef8c6ceeb226defc52eeabd36',1,'ne::DirectXShadowMapArrayIndexManager::DirectXShadowMapArrayIndexManager()'],['../classne_1_1DirectXShadowMapArrayIndexManager.html',1,'ne::DirectXShadowMapArrayIndexManager']]], + ['dispatchcomputeshadersongraphicsqueue_49',['dispatchComputeShadersOnGraphicsQueue',['../classne_1_1DirectXRenderer.html#a912463203e9ede50d9abed4f6c3b9854',1,'ne::DirectXRenderer::dispatchComputeShadersOnGraphicsQueue()'],['../classne_1_1VulkanRenderer.html#a71dec7fcf5ddc1f4bcabb94a091fa68e',1,'ne::VulkanRenderer::dispatchComputeShadersOnGraphicsQueue()']]], + ['dispatchongraphicsqueue_50',['dispatchOnGraphicsQueue',['../classne_1_1GlslComputeShaderInterface.html#a80f1d2210e76d4cd0f984b7aac02d405',1,'ne::GlslComputeShaderInterface::dispatchOnGraphicsQueue()'],['../classne_1_1HlslComputeShaderInterface.html#a31f678f3e2314e82836b16bd2e8ca646',1,'ne::HlslComputeShaderInterface::dispatchOnGraphicsQueue()']]], + ['distance_51',['distance',['../structne_1_1PointLightNode_1_1PointLightShaderData.html#a7ddce367b5e79959a46d1d9f31a1b434',1,'ne::PointLightNode::PointLightShaderData::distance()'],['../classne_1_1PointLightNode.html#a2fdb234bf03a583563b4d933d596239a',1,'ne::PointLightNode::distance()'],['../structne_1_1SpotlightNode_1_1SpotlightShaderData.html#a6d4487eb56554207b3a343f56f253c88',1,'ne::SpotlightNode::SpotlightShaderData::distance()'],['../classne_1_1SpotlightNode.html#af90a6f7718ca09f46447ecc3534624bb',1,'ne::SpotlightNode::distance()']]], + ['distancefromorigin_52',['distanceFromOrigin',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Plane.html#ae28b02eb2cc2c08d610b6734e4062e9b',1,'ne::LightingShaderResourceManager::ComputeShaderData::Plane::distanceFromOrigin()'],['../structne_1_1Plane.html#a0cfa91e4d0f79facf377a1d6e688e42d',1,'ne::Plane::distanceFromOrigin()']]], + ['distancetotarget_53',['distanceToTarget',['../structne_1_1CameraProperties_1_1Data_1_1OrbitalModeData.html#aa68f686aafdf8e1d09f9b034346215a5',1,'ne::CameraProperties::Data::OrbitalModeData']]], + ['drawmeshesdepthprepass_54',['drawMeshesDepthPrepass',['../classne_1_1DirectXRenderer.html#ab6c0ca6bb384356ecfa2daf5096babab',1,'ne::DirectXRenderer::drawMeshesDepthPrepass()'],['../classne_1_1VulkanRenderer.html#a9adfef1f5c1a3d766b60594b1671e310',1,'ne::VulkanRenderer::drawMeshesDepthPrepass()'],['../classne_1_1Renderer.html#ade28a2acfbf0d842310ed09e43347a6a',1,'ne::Renderer::drawMeshesDepthPrepass()']]], + ['drawmeshesmainpass_55',['drawMeshesMainPass',['../classne_1_1DirectXRenderer.html#aeb61c86daba65a036adaf0733e335188',1,'ne::DirectXRenderer::drawMeshesMainPass()'],['../classne_1_1VulkanRenderer.html#ab379f5bf43b961a79dfe11bd1cd2b0a9',1,'ne::VulkanRenderer::drawMeshesMainPass()'],['../classne_1_1Renderer.html#ae7c93c8411ed36b3a1a1d548b3119ed4',1,'ne::Renderer::drawMeshesMainPass()']]], + ['drawmeshesmainpassspecificpipelines_56',['drawMeshesMainPassSpecificPipelines',['../classne_1_1DirectXRenderer.html#a449781a0b56051b054faf5d4b6fff786',1,'ne::DirectXRenderer::drawMeshesMainPassSpecificPipelines()'],['../classne_1_1VulkanRenderer.html#afa1ccacfb1ed1749dfb2c75aecdb7a77',1,'ne::VulkanRenderer::drawMeshesMainPassSpecificPipelines()']]], + ['drawnextframe_57',['drawNextFrame',['../classne_1_1Renderer.html#a0c5cd211faa4ab6680cc7e8c20e99d04',1,'ne::Renderer']]], + ['drawshadowmappingpass_58',['drawShadowMappingPass',['../classne_1_1DirectXRenderer.html#a6213bc74d1b269f37e8baff654803c60',1,'ne::DirectXRenderer::drawShadowMappingPass()'],['../classne_1_1VulkanRenderer.html#a1f11c831e45a8489c2e15ba2fbc26dc9',1,'ne::VulkanRenderer::drawShadowMappingPass()'],['../classne_1_1Renderer.html#a406150bfe82ba580d6ed7b2ea780c4e6',1,'ne::Renderer::drawShadowMappingPass()']]], + ['duplicateandappendconfiguration_59',['duplicateAndAppendConfiguration',['../structne_1_1ShaderMacroConfigurations.html#a0fea3a25214cf5d9f6f3a200fe6fb7e1',1,'ne::ShaderMacroConfigurations']]], + ['dynamiccpuwriteshaderresourcearray_60',['DynamicCpuWriteShaderResourceArray',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#ac7069aaeb5cd0f6fa0a343b6a7f4d7d0',1,'ne::DynamicCpuWriteShaderResourceArray::DynamicCpuWriteShaderResourceArray()'],['../classne_1_1DynamicCpuWriteShaderResourceArray.html',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['dynamiccpuwriteshaderresourcearraymanager_61',['DynamicCpuWriteShaderResourceArrayManager',['../classne_1_1DynamicCpuWriteShaderResourceArrayManager.html#a23ccad251759dad28a838bba4707595f',1,'ne::DynamicCpuWriteShaderResourceArrayManager::DynamicCpuWriteShaderResourceArrayManager()'],['../classne_1_1DynamicCpuWriteShaderResourceArrayManager.html',1,'ne::DynamicCpuWriteShaderResourceArrayManager']]], + ['dynamiccpuwriteshaderresourcearrayslot_62',['DynamicCpuWriteShaderResourceArraySlot',['../classne_1_1DynamicCpuWriteShaderResourceArraySlot.html#a280ae578906d453b83c8c93e64d6dfc0',1,'ne::DynamicCpuWriteShaderResourceArraySlot::DynamicCpuWriteShaderResourceArraySlot()'],['../classne_1_1DynamicCpuWriteShaderResourceArraySlot.html',1,'ne::DynamicCpuWriteShaderResourceArraySlot']]] +]; diff --git a/search/all_4.js b/search/all_4.js new file mode 100644 index 000000000..2661954f2 --- /dev/null +++ b/search/all_4.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['editorcameranode_0',['EditorCameraNode',['../classne_1_1EditorCameraNode.html#ae76688628b584c4fbd37eee488745a41',1,'ne::EditorCameraNode::EditorCameraNode()'],['../classne_1_1EditorCameraNode.html',1,'ne::EditorCameraNode']]], + ['editorgameinstance_1',['EditorGameInstance',['../classne_1_1EditorGameInstance.html#a7a5fafe560c718e9762c7dab30074b0c',1,'ne::EditorGameInstance::EditorGameInstance()'],['../classne_1_1EditorGameInstance.html',1,'ne::EditorGameInstance']]], + ['editorgcpointers_2',['EditorGcPointers',['../structne_1_1EditorGameInstance_1_1EditorGcPointers.html',1,'ne::EditorGameInstance']]], + ['editorinputeventids_3',['EditorInputEventIds',['../structne_1_1EditorInputEventIds.html',1,'ne']]], + ['editornodecreationhelpers_4',['EditorNodeCreationHelpers',['../classne_1_1EditorNodeCreationHelpers.html',1,'ne']]], + ['elapsedtimewhenstopped_5',['elapsedTimeWhenStopped',['../classne_1_1Timer.html#aadb19734549133e6b8b6749a068540d3',1,'ne::Timer']]], + ['enabletimer_6',['enableTimer',['../classne_1_1Node.html#a64f1ae678b1d2c5a02158346dc8a1219',1,'ne::Node']]], + ['engineshaderconstantmacros_7',['EngineShaderConstantMacros',['../classne_1_1EngineShaderConstantMacros.html',1,'ne']]], + ['engineshadernames_8',['EngineShaderNames',['../classne_1_1EngineShaderNames.html',1,'ne']]], + ['engineshaders_9',['EngineShaders',['../classne_1_1EngineShaders.html',1,'ne']]], + ['environmentnode_10',['EnvironmentNode',['../classne_1_1EnvironmentNode.html#a9e3b14ea64d15d790f31393ee795316e',1,'ne::EnvironmentNode::EnvironmentNode()'],['../classne_1_1EnvironmentNode.html',1,'ne::EnvironmentNode']]], + ['error_11',['Error',['../classne_1_1Error.html#a3a8c7572c889c7f1562f7f7206b7e1f2',1,'ne::Error']]], + ['error_12',['error',['../classne_1_1DesktopNotification.html#a4b6800bfbe6d91bb6fa6ac9b2e10a419',1,'ne::DesktopNotification']]], + ['error_13',['Error',['../classne_1_1Error.html#abc1af9c0ac9343d134ed153c436ae7f2',1,'ne::Error::Error(const Error &other)=default'],['../classne_1_1Error.html#aeab59d878b9909b6ec2c984d85e0cf6e',1,'ne::Error::Error(Error &&other)=default']]], + ['error_14',['error',['../classne_1_1MessageBox.html#ab902fd4c15bebf7d81d8898b0a0495dc',1,'ne::MessageBox::error()'],['../classne_1_1Logger.html#a8924f8a6a69fa1a7b64d1c2a1a4f59e8',1,'ne::Logger::error()']]], + ['error_15',['Error',['../classne_1_1Error.html',1,'ne']]], + ['executecomputeshadersongraphicsqueue_16',['executeComputeShadersOnGraphicsQueue',['../classne_1_1DirectXRenderer.html#ac60f6b10d7b48fab48253a3ff0e031d9',1,'ne::DirectXRenderer::executeComputeShadersOnGraphicsQueue()'],['../classne_1_1VulkanRenderer.html#a0491f1ed9a420d8758f7091398d2bc88',1,'ne::VulkanRenderer::executeComputeShadersOnGraphicsQueue()'],['../classne_1_1Renderer.html#a159404d107fc2b9c62609f7a4b29158e',1,'ne::Renderer::executeComputeShadersOnGraphicsQueue()']]], + ['executedeferredtasks_17',['executeDeferredTasks',['../classne_1_1GameManager.html#a3d550fb580a02a05eaa937d5fa6fe1f7',1,'ne::GameManager']]], + ['executegraphicscommandlist_18',['executeGraphicsCommandList',['../classne_1_1DirectXRenderer.html#ab9493948abc31d91c435160568f579c5',1,'ne::DirectXRenderer']]], + ['executeshadermanagerselfvalidation_19',['executeShaderManagerSelfValidation',['../classne_1_1GameInstance.html#a632031102f1943178d5b19d98407babe',1,'ne::GameInstance']]], + ['executiongroup_20',['executionGroup',['../classne_1_1ComputeShaderInterface.html#a5a9b540d76e10789c209144e46dfbdbd',1,'ne::ComputeShaderInterface']]], + ['executionstage_21',['executionStage',['../classne_1_1ComputeShaderInterface.html#a7963d75f4fa00078dc11da0a9bc8b9f6',1,'ne::ComputeShaderInterface']]], + ['expandarray_22',['expandArray',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#adac22230c0160ba49541df70eac168a9',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['expandheap_23',['expandHeap',['../classne_1_1DirectXDescriptorHeap.html#ab67c669279ff6c6779b5943a6678d245',1,'ne::DirectXDescriptorHeap']]], + ['expandrange_24',['expandRange',['../classne_1_1DirectXDescriptorHeap.html#a4fc8e9f42963ca0db93b71232e50cd75',1,'ne::DirectXDescriptorHeap']]], + ['extents_25',['extents',['../structne_1_1AABB.html#a25e01d5088b3452762466a8e4c805c31',1,'ne::AABB']]] +]; diff --git a/search/all_5.js b/search/all_5.js new file mode 100644 index 000000000..ca0bb7e6a --- /dev/null +++ b/search/all_5.js @@ -0,0 +1,39 @@ +var searchData= +[ + ['farclipplanedistance_0',['farClipPlaneDistance',['../structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html#ae7513621efc71f6002af80fef02954b2',1,'ne::CameraProperties::Data::ProjectionData']]], + ['farclipplaneheight_1',['farClipPlaneHeight',['../structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html#afacb311e7482c4dc320382acd580f9cc',1,'ne::CameraProperties::Data::ProjectionData']]], + ['farface_2',['farFace',['../structne_1_1Frustum.html#aaacdb51c819422ec5a7d0260ee2c6724',1,'ne::Frustum']]], + ['fieldserializermanager_3',['FieldSerializerManager',['../classne_1_1FieldSerializerManager.html',1,'ne']]], + ['filedialog_4',['FileDialog',['../classne_1_1FileDialog.html',1,'ne']]], + ['filepath_5',['filePath',['../classne_1_1ConfigManager.html#a6c625f5bb692ef993f85b519bc809f95',1,'ne::ConfigManager']]], + ['findoffsetandcopyspecialvaluetoconstant_6',['findOffsetAndCopySpecialValueToConstant',['../structne_1_1Pipeline_1_1ShaderConstantsData.html#a6406029473f3f6445b8ce750a829b900',1,'ne::Pipeline::ShaderConstantsData']]], + ['findorcreatepipeline_7',['findOrCreatePipeline',['../classne_1_1PipelineManager.html#ab535e2ce924545544f65fff07d192c7e',1,'ne::PipelineManager']]], + ['findshader_8',['findShader',['../classne_1_1ShaderUser.html#a114354cd7387a460273a1134bf47fb77',1,'ne::ShaderUser::findShader()'],['../classne_1_1ShaderManager.html#a65e06a6661d97629ce2b0bfed110e6ea',1,'ne::ShaderManager::findShader()']]], + ['findstaticsamplerforsamplerresource_9',['findStaticSamplerForSamplerResource',['../classne_1_1RootSignatureGenerator.html#ad1a3ea4eb8e2e6b537e67fdcaba657c5',1,'ne::RootSignatureGenerator']]], + ['findvalidworld_10',['findValidWorld',['../classne_1_1Node.html#a1ff981780eeb406408afd037bb31f684',1,'ne::Node']]], + ['finishupdatecallback_11',['finishUpdateCallback',['../classne_1_1ShaderLightArraySlot.html#ad8c76a96029b061b36f225f8d1c119aa',1,'ne::ShaderLightArraySlot']]], + ['floatdelta_12',['floatDelta',['../classne_1_1CameraProperties.html#aa1ccfc9d71287bd1ef4b5dd1a41f44cb',1,'ne::CameraProperties']]], + ['floatepsilon_13',['floatEpsilon',['../classne_1_1GlmVecFieldSerializer.html#ada136f5772d070ccdbc3d8c337775504',1,'ne::GlmVecFieldSerializer']]], + ['flushtodisk_14',['flushToDisk',['../classne_1_1Logger.html#ae512e20fe66d1959c9efb026704e5e8a',1,'ne::Logger']]], + ['formatbytestokilobytes_15',['formatBytesToKilobytes',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a8ac9a04da60f0f69e9c35776e4949cf0',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['formatbytestomegabytes_16',['formatBytesToMegabytes',['../classne_1_1DynamicCpuWriteShaderResourceArrayManager.html#a997069c09e8bc1e087ef3ba74165fae0',1,'ne::DynamicCpuWriteShaderResourceArrayManager']]], + ['forward_17',['forward',['../structne_1_1Globals_1_1WorldDirection.html#a3de4f601b366a8abc0751044efef8b12',1,'ne::Globals::WorldDirection']]], + ['forwardplus_18',['ForwardPlus',['../structne_1_1EngineShaderConstantMacros_1_1ForwardPlus.html',1,'ne::EngineShaderConstantMacros::ForwardPlus'],['../structne_1_1EngineShaderNames_1_1ForwardPlus.html',1,'ne::EngineShaderNames::ForwardPlus'],['../structne_1_1EngineShaders_1_1ForwardPlus.html',1,'ne::EngineShaders::ForwardPlus']]], + ['fpsinfo_19',['fpsInfo',['../classne_1_1RenderStatistics.html#abf190063d09295449e266a6bc6b3086c',1,'ne::RenderStatistics']]], + ['fpslimitinfo_20',['fpsLimitInfo',['../classne_1_1RenderStatistics.html#a4eda1eba75f6b009640272f81ad4ee35',1,'ne::RenderStatistics']]], + ['fpslimitinfo_21',['FpsLimitInfo',['../structne_1_1RenderStatistics_1_1FpsLimitInfo.html',1,'ne::RenderStatistics']]], + ['frameconstants_22',['FrameConstants',['../structne_1_1FrameConstants.html',1,'ne']]], + ['frameresource_23',['FrameResource',['../structne_1_1FrameResource.html',1,'ne']]], + ['frameresourcemanager_24',['FrameResourceManager',['../classne_1_1FrameResourceManager.html#a7fc075709f514e458505092139a5e507',1,'ne::FrameResourceManager::FrameResourceManager()'],['../classne_1_1FrameResourceManager.html',1,'ne::FrameResourceManager']]], + ['framespersecondinfo_25',['FramesPerSecondInfo',['../structne_1_1RenderStatistics_1_1FramesPerSecondInfo.html',1,'ne::RenderStatistics']]], + ['framestarttime_26',['frameStartTime',['../structne_1_1RenderStatistics_1_1FpsLimitInfo.html#a70e408db5e9789704b3fd1dd5d79891e',1,'ne::RenderStatistics::FpsLimitInfo']]], + ['frametemporarystatistics_27',['frameTemporaryStatistics',['../classne_1_1RenderStatistics.html#a0d93ac165ed4c2c8a3969b6b90605b09',1,'ne::RenderStatistics']]], + ['frametemporarystatistics_28',['FrameTemporaryStatistics',['../structne_1_1RenderStatistics_1_1FrameTemporaryStatistics.html',1,'ne::RenderStatistics']]], + ['freemem_29',['freeMem',['../classne_1_1KtxLoadingCallbackManager.html#a150e6501d9d32d0a8a603d7286fb6c64',1,'ne::KtxLoadingCallbackManager']]], + ['freeslot_30',['freeSlot',['../classne_1_1ShaderLightArray.html#a3328662ff475820aae6c436b08ef8bc7',1,'ne::ShaderLightArray']]], + ['from_5ftoml_31',['from_toml',['../structne_1_1ShaderDescription.html#abde82750728f62e7ac5b51d406631139',1,'ne::ShaderDescription']]], + ['frustum_32',['frustum',['../structne_1_1CameraProperties_1_1Data.html#a09bb16d93d0a425ef3a3cce8b29d6e1f',1,'ne::CameraProperties::Data']]], + ['frustum_33',['Frustum',['../structne_1_1Frustum.html',1,'ne::Frustum'],['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Frustum.html',1,'ne::LightingShaderResourceManager::ComputeShaderData::Frustum']]], + ['frustumgridcomputeshader_34',['FrustumGridComputeShader',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader.html',1,'ne::LightingShaderResourceManager::ComputeShaderData']]], + ['frustumgridcomputeshaderdata_35',['frustumGridComputeShaderData',['../classne_1_1LightingShaderResourceManager.html#a57791c8b09c6a76143cea30ae3abd500',1,'ne::LightingShaderResourceManager']]] +]; diff --git a/search/all_6.js b/search/all_6.js new file mode 100644 index 000000000..3d08a2bf2 --- /dev/null +++ b/search/all_6.js @@ -0,0 +1,434 @@ +var searchData= +[ + ['gameinstance_0',['GameInstance',['../classne_1_1GameInstance.html#a7f00c7df05113dc71320acdf378c24d8',1,'ne::GameInstance::GameInstance()'],['../classne_1_1GameInstance.html',1,'ne::GameInstance']]], + ['gamemanager_1',['GameManager',['../classne_1_1GameManager.html#a18e4273cc512aa41cec39e2bdbba4296',1,'ne::GameManager::GameManager()'],['../classne_1_1GameManager.html',1,'ne::GameManager']]], + ['gcpointers_2',['gcPointers',['../classne_1_1EditorGameInstance.html#a36bba30d835f5b4d4c24fdb2b83d4de5',1,'ne::EditorGameInstance']]], + ['generaldata_3',['generalData',['../structne_1_1LightingShaderResourceManager_1_1GpuData.html#ae9f5a30887c42546b704bff9c130d688',1,'ne::LightingShaderResourceManager::GpuData']]], + ['generallightingdatadescriptortype_4',['generalLightingDataDescriptorType',['../classne_1_1LightingShaderResourceManager.html#ae65e9263c3ceded81a79f29543e79128',1,'ne::LightingShaderResourceManager']]], + ['generallightingshaderdata_5',['GeneralLightingShaderData',['../structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData.html',1,'ne::LightingShaderResourceManager']]], + ['generatecompute_6',['generateCompute',['../classne_1_1RootSignatureGenerator.html#a3e29b37cbfed89d7bca3b699e8436024',1,'ne::RootSignatureGenerator::generateCompute()'],['../classne_1_1DescriptorSetLayoutGenerator.html#aa4a494cb89af4dc2bfdfd96bddbc1712',1,'ne::DescriptorSetLayoutGenerator::generateCompute()']]], + ['generatecomputepipelineforshader_7',['generateComputePipelineForShader',['../classne_1_1VulkanPipeline.html#a71297686d899c8de2f12c4874b955806',1,'ne::VulkanPipeline']]], + ['generatecomputepso_8',['generateComputePso',['../classne_1_1DirectXPso.html#aeddc74b51dd0863dd3e7278aae05aafd',1,'ne::DirectXPso']]], + ['generated_9',['Generated',['../structne_1_1DescriptorSetLayoutGenerator_1_1Generated.html',1,'ne::DescriptorSetLayoutGenerator::Generated'],['../structne_1_1RootSignatureGenerator_1_1Generated.html',1,'ne::RootSignatureGenerator::Generated']]], + ['generatefreefilename_10',['generateFreeFileName',['../classne_1_1ConfigManager.html#ac563ff748a1fe991aabe5629f08d1ce6',1,'ne::ConfigManager']]], + ['generategraphics_11',['generateGraphics',['../classne_1_1RootSignatureGenerator.html#a40f6aca1c59ce13664201a7ec34ca2ee',1,'ne::RootSignatureGenerator::generateGraphics()'],['../classne_1_1DescriptorSetLayoutGenerator.html#ab7ad336e157e9fc9aaee7dc5fae40f70',1,'ne::DescriptorSetLayoutGenerator::generateGraphics()']]], + ['generategraphicspipeline_12',['generateGraphicsPipeline',['../classne_1_1VulkanPipeline.html#a271ed56d31af0e20e6f1a4b396931e31',1,'ne::VulkanPipeline']]], + ['generategraphicspso_13',['generateGraphicsPso',['../classne_1_1DirectXPso.html#a610740c80cb68074f2097cdbf967a8ce',1,'ne::DirectXPso']]], + ['generatelayoutbinding_14',['generateLayoutBinding',['../classne_1_1DescriptorSetLayoutGenerator.html#a42e6d69dbd45da013ab4da65a5e3d662',1,'ne::DescriptorSetLayoutGenerator']]], + ['generatesingledescriptordescription_15',['generateSingleDescriptorDescription',['../classne_1_1RootSignatureGenerator_1_1RootParameter.html#a1f1ba2eb092e2c938202694630266feb',1,'ne::RootSignatureGenerator::RootParameter']]], + ['generatetablerange_16',['generateTableRange',['../classne_1_1RootSignatureGenerator_1_1RootParameter.html#aa0265621533a19869ecba78866b4b91e',1,'ne::RootSignatureGenerator::RootParameter']]], + ['get_17',['get',['../classne_1_1Logger.html#ac04b761e4d1a5e7a9cd5c48e4d926f92',1,'ne::Logger::get()'],['../classne_1_1GLFW.html#af53e48a61258744799475d8ce33c13b5',1,'ne::GLFW::get()'],['../classne_1_1UniqueValueGenerator.html#ab4a93d2f5dd3cf695ec0efef311ca0df',1,'ne::UniqueValueGenerator::get()'],['../classne_1_1GameManager.html#a3d76df401f4711a33a9bb896d793923b',1,'ne::GameManager::get()']]], + ['getaabb_18',['getAABB',['../classne_1_1MeshNode.html#a6295e3796e64c6fb4d4552e46cf9f14a',1,'ne::MeshNode']]], + ['getactionevent_19',['getActionEvent',['../classne_1_1InputManager.html#a3ba5941eb643fa0bfa2157bfe7612f16',1,'ne::InputManager']]], + ['getactioneventbindings_20',['getActionEventBindings',['../classne_1_1Node.html#a77035ce347e8bf68b564b5358ef4b5cc',1,'ne::Node::getActionEventBindings()'],['../classne_1_1GameInstance.html#aaf9d328115f9ccfb0a2bcf59696b4706',1,'ne::GameInstance::getActionEventBindings()']]], + ['getactivecamera_21',['getActiveCamera',['../classne_1_1CameraManager.html#a01a07e47ef74699df66d3d84a127d903',1,'ne::CameraManager']]], + ['getactualindex_22',['getActualIndex',['../classne_1_1ShaderArrayIndex.html#a02149f17e195a983700f0904a439caf3',1,'ne::ShaderArrayIndex']]], + ['getadditionalpixelshadermacros_23',['getAdditionalPixelShaderMacros',['../classne_1_1PipelineConfiguration.html#a346f88493f1047ffa54fa6d8fff6fb80',1,'ne::PipelineConfiguration::getAdditionalPixelShaderMacros()'],['../classne_1_1ColorPipelineConfiguration.html#a209c072abbe6ef7fab06039d74ffc572',1,'ne::ColorPipelineConfiguration::getAdditionalPixelShaderMacros()']]], + ['getadditionalvertexshadermacros_24',['getAdditionalVertexShaderMacros',['../classne_1_1PipelineConfiguration.html#ad328d153d41a2c8bff9907f83859a7fa',1,'ne::PipelineConfiguration']]], + ['getalivenodecount_25',['getAliveNodeCount',['../classne_1_1Node.html#a881561ee518c6b936d7b973c89b26b62',1,'ne::Node']]], + ['getallactionevents_26',['getAllActionEvents',['../classne_1_1InputManager.html#aa5f3a9b1d2ea56b97a5a8cf62f1ffdc7',1,'ne::InputManager']]], + ['getallaxisevents_27',['getAllAxisEvents',['../classne_1_1InputManager.html#a950d6565c8af99f98a512e99be88b741',1,'ne::InputManager']]], + ['getallfilenames_28',['getAllFileNames',['../classne_1_1ConfigManager.html#a070d6ddb597e827ce1ead622537d16a5',1,'ne::ConfigManager']]], + ['getallframeresources_29',['getAllFrameResources',['../classne_1_1FrameResourceManager.html#aa953eaa3de8f8f69d646e26dde1a124c',1,'ne::FrameResourceManager']]], + ['getallkeysofsection_30',['getAllKeysOfSection',['../classne_1_1ConfigManager.html#ae0612346f4826dd639e6033af0ae3809',1,'ne::ConfigManager']]], + ['getallsections_31',['getAllSections',['../classne_1_1ConfigManager.html#aa9efb319cadaf29d209c86aefe4d65a6',1,'ne::ConfigManager']]], + ['getambientlight_32',['getAmbientLight',['../classne_1_1EnvironmentNode.html#a3d3ec8182d874479ea206e7b5461c34d',1,'ne::EnvironmentNode']]], + ['getantialiasingquality_33',['getAntialiasingQuality',['../classne_1_1RenderSettings.html#afa1e88e397a0fd9be160abd14738dc84',1,'ne::RenderSettings']]], + ['getapplicationname_34',['getApplicationName',['../classne_1_1Globals.html#a9978606fda780ac44f7725d33be33fba',1,'ne::Globals']]], + ['getarrayforshaderresource_35',['getArrayForShaderResource',['../classne_1_1DynamicCpuWriteShaderResourceArrayManager.html#a656266f96634a2bac890181a028d17eb',1,'ne::DynamicCpuWriteShaderResourceArrayManager']]], + ['getarrayindexmanagerbasedonshadowmaptype_36',['getArrayIndexManagerBasedOnShadowMapType',['../classne_1_1ShadowMapManager.html#a95e60fc5e0f6c1b4123673d919bc39fa',1,'ne::ShadowMapManager']]], + ['getavailablematerialslotcount_37',['getAvailableMaterialSlotCount',['../classne_1_1MeshNode.html#a8911af4b77829e58ed0d59466d2ba18a',1,'ne::MeshNode']]], + ['getaveragepointlightnumpertilemacro_38',['getAveragePointLightNumPerTileMacro',['../structne_1_1EngineShaderConstantMacros_1_1ForwardPlus.html#a8689ec16825647e999783708615abd46',1,'ne::EngineShaderConstantMacros::ForwardPlus']]], + ['getaveragespotlightnumpertilemacro_39',['getAverageSpotLightNumPerTileMacro',['../structne_1_1EngineShaderConstantMacros_1_1ForwardPlus.html#abaf1ef6566e1890ba86271c8dc353dcc',1,'ne::EngineShaderConstantMacros::ForwardPlus']]], + ['getaxisevent_40',['getAxisEvent',['../classne_1_1InputManager.html#ae1fff3cb781f1b72c96a5bf1eb0c4b00',1,'ne::InputManager']]], + ['getaxiseventbindings_41',['getAxisEventBindings',['../classne_1_1GameInstance.html#ae937d75eae2f65ede3f1e1409929d7a4',1,'ne::GameInstance::getAxisEventBindings()'],['../classne_1_1Node.html#a062c7be217334d4bce02ce34c32e00cb',1,'ne::Node::getAxisEventBindings()']]], + ['getbackbufferformat_42',['getBackBufferFormat',['../classne_1_1DirectXRenderer.html#a243147e850a9d3751472d126b3c03f40',1,'ne::DirectXRenderer']]], + ['getbackupfileextension_43',['getBackupFileExtension',['../classne_1_1ConfigManager.html#a0d1770b8889f99ee59c9ca3fb7baa977',1,'ne::ConfigManager']]], + ['getbinaryfieldserializers_44',['getBinaryFieldSerializers',['../classne_1_1FieldSerializerManager.html#ad379c0a5fffa68d953ff83e45f4e8e72',1,'ne::FieldSerializerManager']]], + ['getbindedcubemapfacedescriptorcpuhandle_45',['getBindedCubemapFaceDescriptorCpuHandle',['../classne_1_1DirectXResource.html#a44ab736799802e22a37fa6430dbd4802',1,'ne::DirectXResource']]], + ['getbindeddescriptorcpuhandle_46',['getBindedDescriptorCpuHandle',['../classne_1_1DirectXResource.html#a3e742527bbb00f2f6b36c29f4bb1a16a',1,'ne::DirectXResource']]], + ['getbindeddescriptorgpuhandle_47',['getBindedDescriptorGpuHandle',['../classne_1_1DirectXResource.html#a1afca035bead505995bc62336c4bf14d',1,'ne::DirectXResource']]], + ['getbindedresources_48',['getBindedResources',['../classne_1_1GlobalShaderResourceBinding.html#aaa54e850f3768df7fa2411c619809882',1,'ne::GlobalShaderResourceBinding']]], + ['getbuilder_49',['getBuilder',['../classne_1_1Window.html#a7c2a38739854b5445626d7698877c683',1,'ne::Window']]], + ['getcalculatefrustumgridcomputeshadername_50',['getCalculateFrustumGridComputeShaderName',['../structne_1_1EngineShaderNames_1_1ForwardPlus.html#a5038351f0972dc5d648ebd58f04631f0',1,'ne::EngineShaderNames::ForwardPlus']]], + ['getcalculategridfrustumcomputeshader_51',['getCalculateGridFrustumComputeShader',['../structne_1_1EngineShaders_1_1ForwardPlus.html#a4268318f0948424a7f5e62fb2486d3fc',1,'ne::EngineShaders::ForwardPlus']]], + ['getcalledeveryframenodecount_52',['getCalledEveryFrameNodeCount',['../classne_1_1GameManager.html#a3851e2ff66e0ec908c30701d08e8d7bb',1,'ne::GameManager::getCalledEveryFrameNodeCount()'],['../classne_1_1World.html#a78ec47ebedbb2fdfe2d2ffdcbb3710c9',1,'ne::World::getCalledEveryFrameNodeCount()'],['../classne_1_1GameInstance.html#a88c6a395c405626e8b9bd9f88bca48a0',1,'ne::GameInstance::getCalledEveryFrameNodeCount()']]], + ['getcalledeveryframenodes_53',['getCalledEveryFrameNodes',['../classne_1_1World.html#a6349774922ab7039790289df90931318',1,'ne::World']]], + ['getcamerafrustum_54',['getCameraFrustum',['../classne_1_1CameraProperties.html#a99286d96919503b9ce07c32fd7e9f2cf',1,'ne::CameraProperties']]], + ['getcameramanager_55',['getCameraManager',['../classne_1_1GameManager.html#a5b1aad14129460108addc870a7cdc2a7',1,'ne::GameManager::getCameraManager()'],['../classne_1_1GameInstance.html#a20c9104a81b6b32567972bdd09a175ec',1,'ne::GameInstance::getCameraManager()']]], + ['getcameraproperties_56',['getCameraProperties',['../classne_1_1CameraNode.html#a67679c00bce3038f336dc4bef7a96315',1,'ne::CameraNode']]], + ['getcapacity_57',['getCapacity',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#afbbc127aa1fafba7f89a2d85b6e5b17c',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['getcapacitystepsize_58',['getCapacityStepSize',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a07d4d8a7281982cdef1ae64a9a6d2249',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['getcategorydirectory_59',['getCategoryDirectory',['../classne_1_1ConfigManager.html#a3c1a80a7f4ed3cecf490d4883407fdbb',1,'ne::ConfigManager']]], + ['getcbvsrvuavheap_60',['getCbvSrvUavHeap',['../classne_1_1DirectXResourceManager.html#aa6d30f7a66a65dcd84fd6187affdf0ae',1,'ne::DirectXResourceManager']]], + ['getchildnodeoftype_61',['getChildNodeOfType',['../classne_1_1Node.html#a7b03a7b88779e86fd7df6f158892c86b',1,'ne::Node']]], + ['getchildnodes_62',['getChildNodes',['../classne_1_1Node.html#a874ddce54dfd82fcda801cb799bb1b85',1,'ne::Node']]], + ['getclassforguid_63',['getClassForGuid',['../classne_1_1Serializable.html#ae524a157024d00ae1ab1ee6a3a44b01a',1,'ne::Serializable::getClassForGuid(const std::string &sGuid)'],['../classne_1_1Serializable.html#a8c9ca7767a0cac5a0612ff2243e15fd0',1,'ne::Serializable::getClassForGuid(const rfk::Struct *pArchetypeToAnalyze, const std::string &sGuid)']]], + ['getclosestspatialparent_64',['getClosestSpatialParent',['../classne_1_1SpatialNode.html#aa361d4f17cb0cac78ad7f4b1f33d2c05',1,'ne::SpatialNode']]], + ['getcolorpipeline_65',['getColorPipeline',['../classne_1_1Material.html#ae72f306a7b3eb645832d4b850108110a',1,'ne::Material']]], + ['getcommandpool_66',['getCommandPool',['../classne_1_1VulkanRenderer.html#a4bfac946f7d02bde23fc62106eed5561',1,'ne::VulkanRenderer']]], + ['getcompiledblob_67',['getCompiledBlob',['../classne_1_1HlslShader.html#a8a15f4befc886abb6c34237c904629ed',1,'ne::HlslShader']]], + ['getcompiledbytecode_68',['getCompiledBytecode',['../classne_1_1GlslShader.html#a01e870cc4e2b610e9984e68dcae59049',1,'ne::GlslShader']]], + ['getcomputepipelinecount_69',['getComputePipelineCount',['../structne_1_1PipelineManager_1_1ComputePipelines.html#a13470d46781385cb1fb755f56c8d3362',1,'ne::PipelineManager::ComputePipelines']]], + ['getcomputepipelineforshader_70',['getComputePipelineForShader',['../structne_1_1PipelineManager_1_1ComputePipelines.html#a2597aab9c580a5596d131e6988d8b2b9',1,'ne::PipelineManager::ComputePipelines']]], + ['getcomputeshadermodel_71',['getComputeShaderModel',['../classne_1_1HlslShader.html#ae22f3feedd16a9ffc8a141bc90627266',1,'ne::HlslShader']]], + ['getcomputeshadername_72',['getComputeShaderName',['../classne_1_1PipelineConfiguration.html#a84366bcf00697f665cb36b8340d9d1f3',1,'ne::PipelineConfiguration::getComputeShaderName()'],['../classne_1_1ComputeShaderInterface.html#a127554f5a4ba6616f68bcf61787a9498',1,'ne::ComputeShaderInterface::getComputeShaderName()'],['../classne_1_1ComputePipelineConfiguration.html#abca07a14787e1efeb10cef56bbc3b3cd',1,'ne::ComputePipelineConfiguration::getComputeShaderName()']]], + ['getcomputeshadersforgraphicsqueueexecution_73',['getComputeShadersForGraphicsQueueExecution',['../classne_1_1PipelineManager.html#aff2b14224c8e71e0f15daf965f54b398',1,'ne::PipelineManager::getComputeShadersForGraphicsQueueExecution()'],['../structne_1_1PipelineManager_1_1ComputePipelines.html#ae8f30fe009055207bca46d93bf124ae4',1,'ne::PipelineManager::ComputePipelines::getComputeShadersForGraphicsQueueExecution()']]], + ['getcomputetexturesampler_74',['getComputeTextureSampler',['../classne_1_1VulkanRenderer.html#a841bbb1e1f79595e68c8f771dc17da6f',1,'ne::VulkanRenderer']]], + ['getconfigformatextension_75',['getConfigFormatExtension',['../classne_1_1ConfigManager.html#a768b2f50bba6590ec86d94fa86995a38',1,'ne::ConfigManager']]], + ['getconfiguration_76',['getConfiguration',['../classne_1_1Pipeline.html#ac2e7491482673ebcbbbeb707929b0c1c',1,'ne::Pipeline']]], + ['getconfigurationfilename_77',['getConfigurationFileName',['../classne_1_1RenderSettings.html#a11f9aa51b447226818d14884d04e399f',1,'ne::RenderSettings']]], + ['getconfigurationfilesectionname_78',['getConfigurationFileSectionName',['../structne_1_1ShaderDescription.html#ab4507d18c32a93428852bd5ca24b3e3b',1,'ne::ShaderDescription']]], + ['getcurrentalivematerialcount_79',['getCurrentAliveMaterialCount',['../classne_1_1Material.html#ad3f8b2e84ad7f53c3a100894bfd6c3e2',1,'ne::Material']]], + ['getcurrentallocationcount_80',['getCurrentAllocationCount',['../classne_1_1KtxLoadingCallbackManager.html#a2b89149c0e95795d5ae3a8fe98572591',1,'ne::KtxLoadingCallbackManager']]], + ['getcurrentamountofshadersinmemory_81',['getCurrentAmountOfShadersInMemory',['../classne_1_1Shader.html#a98489a6ee5b3cdede368328501da1eda',1,'ne::Shader']]], + ['getcurrentaxiseventstate_82',['getCurrentAxisEventState',['../classne_1_1InputManager.html#ab353bd1605a9f18cc4c480f0fdd9c493',1,'ne::InputManager']]], + ['getcurrentbackbufferresource_83',['getCurrentBackBufferResource',['../classne_1_1DirectXRenderer.html#a501564c57f5930bb4c37e6430f92711d',1,'ne::DirectXRenderer']]], + ['getcurrentcameramode_84',['getCurrentCameraMode',['../classne_1_1CameraProperties.html#ae671a0422c76e0e69a2dae283c2508a6',1,'ne::CameraProperties']]], + ['getcurrentcomputepipelinecount_85',['getCurrentComputePipelineCount',['../classne_1_1PipelineManager.html#ae43fd33ba41cc0103d9decb11c5bb64d',1,'ne::PipelineManager']]], + ['getcurrentframeresource_86',['getCurrentFrameResource',['../classne_1_1FrameResourceManager.html#a911bf789ded20a8a704c504eb337357d',1,'ne::FrameResourceManager']]], + ['getcurrentgraphicspipelinecount_87',['getCurrentGraphicsPipelineCount',['../classne_1_1PipelineManager.html#a9c6df8937369f1b14c0277f4645cf847',1,'ne::PipelineManager']]], + ['getcurrentindexintoarray_88',['getCurrentIndexIntoArray',['../classne_1_1ShaderLightArraySlot.html#ad6e9749490d9b666091ebd826b55ee5b',1,'ne::ShaderLightArraySlot']]], + ['getcurrentlyusedgpuname_89',['getCurrentlyUsedGpuName',['../classne_1_1Renderer.html#ab89d3ddad084a96bb1f348c96e0b7263',1,'ne::Renderer::getCurrentlyUsedGpuName()'],['../classne_1_1DirectXRenderer.html#a88cfe7d4e46ccb9f1d9229228f1e5db0',1,'ne::DirectXRenderer::getCurrentlyUsedGpuName()'],['../classne_1_1VulkanRenderer.html#a603e6ac31825bf57a772c0e89a89ec8b',1,'ne::VulkanRenderer::getCurrentlyUsedGpuName()']]], + ['getcurrentshaderconfiguration_90',['getCurrentShaderConfiguration',['../classne_1_1Pipeline.html#ae0485a87a3355641f8afaa7d4a28d9d7',1,'ne::Pipeline']]], + ['getcurrentstateinfo_91',['getCurrentStateInfo',['../classne_1_1GpuResourceManager.html#adbd4f6f1f7b983f54d63b2b2c08c82d7',1,'ne::GpuResourceManager::getCurrentStateInfo()'],['../classne_1_1DirectXResourceManager.html#ac85dd77c5153331d54ad99c25b76c1a8',1,'ne::DirectXResourceManager::getCurrentStateInfo()'],['../classne_1_1VulkanResourceManager.html#a8ddb89478c58e0c11ae2d9178b738e3f',1,'ne::VulkanResourceManager::getCurrentStateInfo()']]], + ['getcursor_92',['getCursor',['../classne_1_1WindowCursor.html#a61e8c35907db8dfd2932528af5e22570',1,'ne::WindowCursor']]], + ['getcursorposition_93',['getCursorPosition',['../classne_1_1Window.html#a74e467463a4c29a266028816722c9ccd',1,'ne::Window']]], + ['getd3dcommandlist_94',['getD3dCommandList',['../classne_1_1DirectXRenderer.html#afb9c21dc0d41cc85e24b097cff26f732',1,'ne::DirectXRenderer']]], + ['getd3dcommandqueue_95',['getD3dCommandQueue',['../classne_1_1DirectXRenderer.html#a4ab37cf018996f17dbe1bcb15b603420',1,'ne::DirectXRenderer']]], + ['getd3ddevice_96',['getD3dDevice',['../classne_1_1DirectXRenderer.html#a47db7ffc60c01f0370cbe98e6c2e40bd',1,'ne::DirectXRenderer']]], + ['getdata_97',['getData',['../classne_1_1PipelineShaderConstantsManager.html#a651e27c76603031970b452233c9ba0da',1,'ne::PipelineShaderConstantsManager']]], + ['getdatetime_98',['getDateTime',['../classne_1_1Logger.html#a0d54d158ef98dd59b27f553ec6d51ff8',1,'ne::Logger']]], + ['getdebugonlyloggingprefix_99',['getDebugOnlyLoggingPrefix',['../classne_1_1Globals.html#a5b78765ce2be8d944763e039e71e29b1',1,'ne::Globals']]], + ['getdefaultmaterial_100',['getDefaultMaterial',['../classne_1_1MeshNode.html#ad5c28bad20f7a24d30f248602ca9aff0',1,'ne::MeshNode']]], + ['getdefaultworldsize_101',['getDefaultWorldSize',['../classne_1_1Globals.html#a7179df5dd887fdc07ac727435cc2e9bc',1,'ne::Globals']]], + ['getdepthbufferformatnomultisampling_102',['getDepthBufferFormatNoMultisampling',['../classne_1_1DirectXRenderer.html#a9541f211398419d7dcbfc3430f5b0b1a',1,'ne::DirectXRenderer']]], + ['getdepthimageformat_103',['getDepthImageFormat',['../classne_1_1VulkanRenderer.html#a843071a0c9dde64b9eae832fde1b8e97',1,'ne::VulkanRenderer']]], + ['getdepthonlypipeline_104',['getDepthOnlyPipeline',['../classne_1_1Material.html#a0b40a74637b5be997eb63c999773f52e',1,'ne::Material']]], + ['getdepthonlyrenderpass_105',['getDepthOnlyRenderPass',['../classne_1_1VulkanRenderer.html#a20260337b2a82568f06e8f2d1bd2c4e4',1,'ne::VulkanRenderer']]], + ['getdepthstencilbufferformat_106',['getDepthStencilBufferFormat',['../classne_1_1DirectXRenderer.html#ac667bc2de2a52d1f29845eaead3f6d06',1,'ne::DirectXRenderer']]], + ['getdepthtexturenomultisampling_107',['getDepthTextureNoMultisampling',['../classne_1_1DirectXRenderer.html#a6cc0a84715bba5c6ab4ca4197c98c7d5',1,'ne::DirectXRenderer::getDepthTextureNoMultisampling()'],['../classne_1_1VulkanRenderer.html#a26352c2baa0cdc7764911d55b15bc037',1,'ne::VulkanRenderer::getDepthTextureNoMultisampling()'],['../classne_1_1Renderer.html#ad507d970274a84b8fbb2a0a97b30305e',1,'ne::Renderer::getDepthTextureNoMultisampling()']]], + ['getdescription_108',['getDescription',['../structne_1_1ShaderCacheInvalidationReasonDescription.html#a7157d8971a6e12a9bf09264ac20a9ffb',1,'ne::ShaderCacheInvalidationReasonDescription']]], + ['getdescriptor_109',['getDescriptor',['../classne_1_1DirectXResource.html#a6a2a8b20d5e4b2749e56b70225544e8b',1,'ne::DirectXResource']]], + ['getdescriptorheap_110',['getDescriptorHeap',['../classne_1_1DirectXDescriptor.html#a899e303aa3c9dbe190b97a1ff7a1e472',1,'ne::DirectXDescriptor']]], + ['getdescriptoroffsetindescriptors_111',['getDescriptorOffsetInDescriptors',['../classne_1_1DirectXDescriptor.html#a23428da422839a2b3266644047d3fc5d',1,'ne::DirectXDescriptor']]], + ['getdescriptorsetlayoutinfo_112',['getDescriptorSetLayoutInfo',['../classne_1_1GlslShader.html#a09f1eb22fc3973a9d1dfdb19233b613e',1,'ne::GlslShader']]], + ['getdescriptorsize_113',['getDescriptorSize',['../classne_1_1DirectXDescriptorHeap.html#a962349564c7a269466e7eb7d9be5dece',1,'ne::DirectXDescriptorHeap']]], + ['getdescriptortypeshandledbythisheap_114',['getDescriptorTypesHandledByThisHeap',['../classne_1_1DirectXDescriptorHeap.html#a7ea4e5d3212c4304e674cb7777e483cd',1,'ne::DirectXDescriptorHeap']]], + ['getdiffusecolor_115',['getDiffuseColor',['../classne_1_1Material.html#aafe13b5a88171864d83f787303b87ebe',1,'ne::Material']]], + ['getdirectionallightdataarray_116',['getDirectionalLightDataArray',['../classne_1_1LightingShaderResourceManager.html#ab1059a45ce18ac2d920320812e7d6782',1,'ne::LightingShaderResourceManager']]], + ['getdirectionallightnodeshadowmappinginfo_117',['getDirectionalLightNodeShadowMappingInfo',['../classne_1_1Renderer.html#a20c1e754bb8669365ff64f726e22f253',1,'ne::Renderer']]], + ['getdirectionallightsshaderresourcename_118',['getDirectionalLightsShaderResourceName',['../classne_1_1LightingShaderResourceManager.html#ac404f96829ab7021c2486d0c1626b36e',1,'ne::LightingShaderResourceManager']]], + ['getdirectionalshadowmapsshaderresourcename_119',['getDirectionalShadowMapsShaderResourceName',['../classne_1_1ShadowMapManager.html#ae122edf82ee3612ccd217f223216229b',1,'ne::ShadowMapManager']]], + ['getdirectorywithlogs_120',['getDirectoryWithLogs',['../classne_1_1Logger.html#a15839ec7b47081c58f2cd8d489d65f80',1,'ne::Logger']]], + ['getdrawcallcounter_121',['getDrawCallCounter',['../classne_1_1Renderer.html#a4cb0d87cb12c66c71c5922f942d5da71',1,'ne::Renderer']]], + ['getdsvheap_122',['getDsvHeap',['../classne_1_1DirectXResourceManager.html#a7541f40bfcc1a066d58160c7887ec4eb',1,'ne::DirectXResourceManager']]], + ['getdynamiccpuwriteshaderresourcearraymanager_123',['getDynamicCpuWriteShaderResourceArrayManager',['../classne_1_1GpuResourceManager.html#a82a3775c7752174f489f049f01327f1e',1,'ne::GpuResourceManager']]], + ['geteditorcamera_124',['getEditorCamera',['../classne_1_1EditorGameInstance.html#ad13da9aea3a7dc4275907c873fde63c1',1,'ne::EditorGameInstance']]], + ['geteditorwindowtitle_125',['getEditorWindowTitle',['../classne_1_1EditorGameInstance.html#af8bf4f0a4f57cca6516327988a4c6838',1,'ne::EditorGameInstance']]], + ['getelapsedtimeinms_126',['getElapsedTimeInMs',['../classne_1_1Timer.html#aea4d4cb8702cd5017a0e786bdf2cca92',1,'ne::Timer']]], + ['getelementcount_127',['getElementCount',['../classne_1_1GpuResource.html#a7169c9c330ba86dc9e164eec4bc4ce60',1,'ne::GpuResource::getElementCount()'],['../classne_1_1UploadBuffer.html#a9ff8ca5b5291cffd5fe8acbd8b3256ef',1,'ne::UploadBuffer::getElementCount()']]], + ['getelementsize_128',['getElementSize',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a40f8d0c16e8c0902483fb39a13c91cf1',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['getelementsizeinbytes_129',['getElementSizeInBytes',['../classne_1_1GpuResource.html#a70c29a51ac2bcfec8318cbdce1cb8d8e',1,'ne::GpuResource::getElementSizeInBytes()'],['../classne_1_1UploadBuffer.html#a66ac386509b4137b422a9f0855edf4ff',1,'ne::UploadBuffer::getElementSizeInBytes()']]], + ['getenginedirectoryname_130',['getEngineDirectoryName',['../classne_1_1Globals.html#aeafc24c3a3035bf20a65f7515cc54633',1,'ne::Globals']]], + ['getexecutiongroup_131',['getExecutionGroup',['../classne_1_1ComputeShaderInterface.html#a24a573e7f0ac4191e37300041b96be65',1,'ne::ComputeShaderInterface']]], + ['getexecutionstage_132',['getExecutionStage',['../classne_1_1ComputeShaderInterface.html#a7117d4df5768fb441629262b698d2cd1',1,'ne::ComputeShaderInterface']]], + ['getfarclipplanedistance_133',['getFarClipPlaneDistance',['../classne_1_1CameraProperties.html#a45d9ee38bba5b4779b0818ffb40ae18d',1,'ne::CameraProperties']]], + ['getfieldserializers_134',['getFieldSerializers',['../classne_1_1FieldSerializerManager.html#a5a6d061fef5e818e53e74f1f1afaec65',1,'ne::FieldSerializerManager']]], + ['getfilehash_135',['getFileHash',['../structne_1_1ShaderDescription.html#a433fa17772019933ab544502b309d19d',1,'ne::ShaderDescription']]], + ['getfilepath_136',['getFilePath',['../classne_1_1ConfigManager.html#a23d1dee3702c1138f50e19ec07dea40a',1,'ne::ConfigManager']]], + ['getfpslimit_137',['getFpsLimit',['../classne_1_1RenderSettings.html#a1c51d150d32d36c9900d7aa6b8ca0de6',1,'ne::RenderSettings']]], + ['getfragmentshader_138',['getFragmentShader',['../structne_1_1EngineShaders_1_1PointLight.html#af008ea34fb0af60e5393c950d1ceb3b2',1,'ne::EngineShaders::PointLight::getFragmentShader()'],['../structne_1_1EngineShaders_1_1MeshNode.html#a8c2153a65383aa49cf1671604d4e07ff',1,'ne::EngineShaders::MeshNode::getFragmentShader()']]], + ['getfragmentshadername_139',['getFragmentShaderName',['../structne_1_1EngineShaderNames_1_1MeshNode.html#a7e4678f9d327fad03899a73f55e21528',1,'ne::EngineShaderNames::MeshNode::getFragmentShaderName()'],['../structne_1_1EngineShaderNames_1_1PointLight.html#ac1ce2eeeeeba6c155f2b89f9bb5d5837',1,'ne::EngineShaderNames::PointLight::getFragmentShaderName()']]], + ['getframeconstants_140',['getFrameConstants',['../classne_1_1Renderer.html#a6576b5f7eac84e7846e5b5fb6c0d1a12',1,'ne::Renderer']]], + ['getframeconstantsshaderresourcename_141',['getFrameConstantsShaderResourceName',['../classne_1_1Shader.html#a90155a175ff12db3d1a4a56b3fee662e',1,'ne::Shader']]], + ['getframeresourcecount_142',['getFrameResourceCount',['../classne_1_1FrameResourceManager.html#a90b23924d591a9a2fc33241c25d7892c',1,'ne::FrameResourceManager']]], + ['getframeresourcemanager_143',['getFrameResourceManager',['../classne_1_1Renderer.html#a50ba13de625c3e7137ffccafe418e54d',1,'ne::Renderer']]], + ['getframespersecond_144',['getFramesPerSecond',['../classne_1_1RenderStatistics.html#a464f0a2447943de7e26f7ca6237c2027',1,'ne::RenderStatistics']]], + ['getfreeprogressprofilename_145',['getFreeProgressProfileName',['../classne_1_1ConfigManager.html#a56c3967d8ed010743046f053311446fe',1,'ne::ConfigManager']]], + ['getfullerrormessage_146',['getFullErrorMessage',['../classne_1_1Error.html#a5b6c8b66765051c98f6d4d5bd81e941f',1,'ne::Error']]], + ['getgameinstance_147',['getGameInstance',['../classne_1_1GameManager.html#aae9bad5367d771ea77d603082af45391',1,'ne::GameManager::getGameInstance()'],['../classne_1_1Node.html#a2aeb90fc6bd28ec3b54e9f8f641c3574',1,'ne::Node::getGameInstance()']]], + ['getgamemanager_148',['getGameManager',['../classne_1_1Renderer.html#aa3a8871ad19fc9e5e91a618e0c47aaae',1,'ne::Renderer']]], + ['getgarbagecollectorrunintervalinsec_149',['getGarbageCollectorRunIntervalInSec',['../classne_1_1GameManager.html#aae8e383cad293ab7b0b9e8f2106fe5ae',1,'ne::GameManager::getGarbageCollectorRunIntervalInSec()'],['../classne_1_1GameInstance.html#a16e2423872298e507160249708f6bb1e',1,'ne::GameInstance::getGarbageCollectorRunIntervalInSec()']]], + ['getgenerallightingdatashaderresourcename_150',['getGeneralLightingDataShaderResourceName',['../classne_1_1LightingShaderResourceManager.html#a559ee5b30d2a872715b1633f1d0a4f8d',1,'ne::LightingShaderResourceManager']]], + ['getglfwwindow_151',['getGlfwWindow',['../classne_1_1Window.html#a72b674801f591afc4f0b3c2373f98829',1,'ne::Window']]], + ['getglobalshaderresourcebindingmanager_152',['getGlobalShaderResourceBindingManager',['../classne_1_1Renderer.html#a94ca55b01e064a85b554058e395e427a',1,'ne::Renderer']]], + ['getgpudescriptorhandletorangestart_153',['getGpuDescriptorHandleToRangeStart',['../classne_1_1ContinuousDirectXDescriptorRange.html#a2838e7ed840c64a196737537fcce9961',1,'ne::ContinuousDirectXDescriptorRange']]], + ['getgputouse_154',['getGpuToUse',['../classne_1_1RenderSettings.html#a1a3c4d49f5fbba99e558d9d35d951221',1,'ne::RenderSettings']]], + ['getgraphicspipelineformaterial_155',['getGraphicsPipelineForMaterial',['../classne_1_1PipelineManager.html#a9ec99295c715da94f3969044a54b0b63',1,'ne::PipelineManager']]], + ['getgraphicspipelines_156',['getGraphicsPipelines',['../classne_1_1PipelineManager.html#ad700c995b0d52d2386731fe2a25277f6',1,'ne::PipelineManager']]], + ['getgraphicsqueue_157',['getGraphicsQueue',['../classne_1_1VulkanRenderer.html#abca6b972881780350eec71ce0869dc2d',1,'ne::VulkanRenderer']]], + ['getgraphicstype_158',['getGraphicsType',['../classne_1_1PipelineConfiguration.html#a4084ed64ee6c27161b3ed51e5a070ab6',1,'ne::PipelineConfiguration::getGraphicsType()'],['../classne_1_1ColorPipelineConfiguration.html#ae90627a023da52b08a5b5d3cbafc18b0',1,'ne::ColorPipelineConfiguration::getGraphicsType()'],['../classne_1_1DepthPipelineConfiguration.html#a9eb2970563f38cdee2e721b65af36626',1,'ne::DepthPipelineConfiguration::getGraphicsType()'],['../classne_1_1ComputePipelineConfiguration.html#a792e7db372e8fc28a6cef460f74a443c',1,'ne::ComputePipelineConfiguration::getGraphicsType()']]], + ['getguid_159',['getGuid',['../classne_1_1Guid.html#a63b89445951d0c0c2ff2ca7070394730',1,'ne::Guid']]], + ['gethandledshaderresourcename_160',['getHandledShaderResourceName',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a422f2b1e5a1585614212a8b1862ba525',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['getheapcapacity_161',['getHeapCapacity',['../classne_1_1DirectXDescriptorHeap.html#aeb1c71536a10ff8b86c8240f5fab61ae',1,'ne::DirectXDescriptorHeap']]], + ['getheapgrowsize_162',['getHeapGrowSize',['../classne_1_1DirectXDescriptorHeap.html#a23c0364843a97bb4862760b6f521a579',1,'ne::DirectXDescriptorHeap']]], + ['getheapsize_163',['getHeapSize',['../classne_1_1DirectXDescriptorHeap.html#a0001e8830f2783b006c1659a7d6805f4',1,'ne::DirectXDescriptorHeap']]], + ['getidsfromfile_164',['getIdsFromFile',['../classne_1_1Serializable.html#a6cd50b9cef87748dede76ba3ef125e43',1,'ne::Serializable']]], + ['getimportedfilename_165',['getImportedFileName',['../classne_1_1TextureImporter.html#a4bbfc788869a4a751aa0396765f25c50',1,'ne::TextureImporter']]], + ['getindexbufferinfoformaterialslot_166',['getIndexBufferInfoForMaterialSlot',['../classne_1_1MeshNode.html#a90ac0f144af7a1a9786a1be3684fc754',1,'ne::MeshNode']]], + ['getindexintoarray_167',['getIndexIntoArray',['../classne_1_1DynamicCpuWriteShaderResourceArraySlot.html#a3ab49e829204f8c419a713c28f308305',1,'ne::DynamicCpuWriteShaderResourceArraySlot']]], + ['getindexintoshadowpassinfoshaderarray_168',['getIndexIntoShadowPassInfoShaderArray',['../classne_1_1DirectionalLightNode.html#ac2cec88c06759cb8bc625563f9903b1c',1,'ne::DirectionalLightNode::getIndexIntoShadowPassInfoShaderArray()'],['../classne_1_1PointLightNode.html#a4606abcc9f1ff0cc787df6917a6fc469',1,'ne::PointLightNode::getIndexIntoShadowPassInfoShaderArray()'],['../classne_1_1SpotlightNode.html#ac6af2a343602cbf1dfb7fd0388783a89',1,'ne::SpotlightNode::getIndexIntoShadowPassInfoShaderArray()']]], + ['getindices_169',['getIndices',['../classne_1_1MeshData.html#a35c1b75b662b7f56364ae01d7f15130c',1,'ne::MeshData']]], + ['getinformationforserialization_170',['getInformationForSerialization',['../classne_1_1Node.html#aca87f422b087084a4561e46165022a96',1,'ne::Node']]], + ['getinitialmessage_171',['getInitialMessage',['../classne_1_1Error.html#a7f2dd01c28953efe65c5926cab05211e',1,'ne::Error']]], + ['getinputmanager_172',['getInputManager',['../classne_1_1GameInstance.html#a1914730da5993e3f18f15ce5ee6dbc4e',1,'ne::GameInstance']]], + ['getinstance_173',['getInstance',['../classne_1_1VulkanRenderer.html#a070da1c1fd3bf14ab93a1ccba8908b52',1,'ne::VulkanRenderer']]], + ['getinternalbufferresource_174',['getInternalBufferResource',['../classne_1_1VulkanResource.html#a4d203427f5eea6ddcff4096259adc4be',1,'ne::VulkanResource']]], + ['getinternalcubemapimageview_175',['getInternalCubemapImageView',['../classne_1_1VulkanResource.html#af06df7d7876bcb54051a070af1b4b7dc',1,'ne::VulkanResource']]], + ['getinternaldata_176',['getInternalData',['../classne_1_1DirectXDescriptorHeap.html#ab3a024bf67085d61777247dd20a52e2b',1,'ne::DirectXDescriptorHeap']]], + ['getinternalheap_177',['getInternalHeap',['../classne_1_1DirectXDescriptorHeap.html#ae55ad33f9d3df0e5305c788d23fe3ef8',1,'ne::DirectXDescriptorHeap']]], + ['getinternalimage_178',['getInternalImage',['../classne_1_1VulkanResource.html#a32d12a5637f2a970ab6f0d45a66c70e8',1,'ne::VulkanResource']]], + ['getinternalimageview_179',['getInternalImageView',['../classne_1_1VulkanResource.html#ad1dd065e7c59ef45f351eb6f4bdb1de7',1,'ne::VulkanResource']]], + ['getinternalimageviewdepthaspect_180',['getInternalImageViewDepthAspect',['../classne_1_1VulkanResource.html#af77930223a146475d8877c30114da79e',1,'ne::VulkanResource']]], + ['getinternalresource_181',['getInternalResource',['../classne_1_1DirectXResource.html#ade04211fc7ac802cc9805c24320bdb53',1,'ne::DirectXResource::getInternalResource()'],['../classne_1_1UploadBuffer.html#afe8afef68f06fdd2dcab71318b70ab85',1,'ne::UploadBuffer::getInternalResource()']]], + ['getinternalresourcememory_182',['getInternalResourceMemory',['../classne_1_1VulkanResource.html#a070df83c8b0b49122e0b8b4dc617d613',1,'ne::VulkanResource']]], + ['getinternalresources_183',['getInternalResources',['../classne_1_1DirectXPso.html#a7a2a02d39350c678b23ff2d5939d743a',1,'ne::DirectXPso::getInternalResources()'],['../classne_1_1ShadowMapManager.html#a39f611895ac4f76c50ac43b8954811e5',1,'ne::ShadowMapManager::getInternalResources()'],['../classne_1_1VulkanPipeline.html#a3433d274f84a57bca9149c23aaebfe40',1,'ne::VulkanPipeline::getInternalResources()'],['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a4a65f3e3f217b25e6b62cb4ee2422e19',1,'ne::DynamicCpuWriteShaderResourceArray::getInternalResources()'],['../classne_1_1LightingShaderResourceManager.html#a7c4eac3d12365c446e56058a78a7766b',1,'ne::LightingShaderResourceManager::getInternalResources()'],['../classne_1_1ShaderLightArray.html#a1ebc69a64306d5c8018702d33c56f67a',1,'ne::ShaderLightArray::getInternalResources()'],['../classne_1_1ShaderPack.html#adca074fdbd97f63b79d9f85093539b1c',1,'ne::ShaderPack::getInternalResources()']]], + ['getktxsuballocatorcallbacks_184',['getKtxSubAllocatorCallbacks',['../classne_1_1KtxLoadingCallbackManager.html#aaf3390befbc9984c8a972d4d39b4d3d8',1,'ne::KtxLoadingCallbackManager']]], + ['getlastframeculledlightcount_185',['getLastFrameCulledLightCount',['../classne_1_1RenderStatistics.html#ad84bd1c12f19bc17c49d7b3252bfe61e',1,'ne::RenderStatistics']]], + ['getlastframeculledmeshcount_186',['getLastFrameCulledMeshCount',['../classne_1_1RenderStatistics.html#a5c6a95c0e3eda956d3f115e7a0596b81',1,'ne::RenderStatistics']]], + ['getlastframedrawcallcount_187',['getLastFrameDrawCallCount',['../classne_1_1RenderStatistics.html#a5fc0bc97a6544fee69ab1c9acbf66a60',1,'ne::RenderStatistics']]], + ['getlightcolor_188',['getLightColor',['../classne_1_1DirectionalLightNode.html#a299423d36a013e8ae159aa0f5e3006e6',1,'ne::DirectionalLightNode::getLightColor()'],['../classne_1_1PointLightNode.html#ae4e8e15a56295141fe407b2b28e8a01a',1,'ne::PointLightNode::getLightColor()'],['../classne_1_1SpotlightNode.html#a0f69cdb3b0e435a0b039096a3f55c040',1,'ne::SpotlightNode::getLightColor()']]], + ['getlightcullingcomputeshader_189',['getLightCullingComputeShader',['../structne_1_1EngineShaders_1_1ForwardPlus.html#a9c42c346ee49b5e20d6fc0deedb0c85a',1,'ne::EngineShaders::ForwardPlus']]], + ['getlightcullingcomputeshadername_190',['getLightCullingComputeShaderName',['../structne_1_1EngineShaderNames_1_1ForwardPlus.html#a22bcf48d0dc15e6c5a6c51fe6a4199cc',1,'ne::EngineShaderNames::ForwardPlus']]], + ['getlightdistance_191',['getLightDistance',['../classne_1_1PointLightNode.html#a23e3f3e28cf39dc6c0bcca825f4333d8',1,'ne::PointLightNode::getLightDistance()'],['../classne_1_1SpotlightNode.html#a60fb43aeb84bc3ef4402e2cd861fc37b',1,'ne::SpotlightNode::getLightDistance()']]], + ['getlightgridtilesizemacro_192',['getLightGridTileSizeMacro',['../structne_1_1EngineShaderConstantMacros_1_1ForwardPlus.html#a1a0db93874cbe33ce06b8fe28f165eed',1,'ne::EngineShaderConstantMacros::ForwardPlus']]], + ['getlightingshaderresourcemanager_193',['getLightingShaderResourceManager',['../classne_1_1Renderer.html#a065b2ac320b63d2651c706f1e98fab12',1,'ne::Renderer']]], + ['getlightinnerconeangle_194',['getLightInnerConeAngle',['../classne_1_1SpotlightNode.html#a473c13f9f02fd3d6ce2950e5af7640c2',1,'ne::SpotlightNode']]], + ['getlightintensity_195',['getLightIntensity',['../classne_1_1DirectionalLightNode.html#aa07507fda65b3f4c8ee8ab430ecff03a',1,'ne::DirectionalLightNode::getLightIntensity()'],['../classne_1_1PointLightNode.html#a381841c910fc7342a793bf4dd14c58cf',1,'ne::PointLightNode::getLightIntensity()'],['../classne_1_1SpotlightNode.html#a773c16b46fe96fc7627d9db634cb31cf',1,'ne::SpotlightNode::getLightIntensity() const']]], + ['getlightouterconeangle_196',['getLightOuterConeAngle',['../classne_1_1SpotlightNode.html#a38329dd8164b4750b874a4231175d74f',1,'ne::SpotlightNode']]], + ['getlogicaldevice_197',['getLogicalDevice',['../classne_1_1VulkanRenderer.html#a664c90ee63237b1a5177bf5cbb9e54a3',1,'ne::VulkanRenderer']]], + ['getmainrenderpass_198',['getMainRenderPass',['../classne_1_1VulkanRenderer.html#a35a06a845e9c0ae7d5b9f9ccf3e03b6d',1,'ne::VulkanRenderer']]], + ['getmaterial_199',['getMaterial',['../classne_1_1MeshNode.html#a83cb60dfc8713be834295480cbeb4414',1,'ne::MeshNode']]], + ['getmaterialgpuresources_200',['getMaterialGpuResources',['../classne_1_1Material.html#a37ad940792aec3452dc12e8af8ef1f21',1,'ne::Material']]], + ['getmaterialname_201',['getMaterialName',['../classne_1_1Material.html#a7a5109eeb024a2f06e7bdd6a739118ca',1,'ne::Material']]], + ['getmaterialsthatusethispipeline_202',['getMaterialsThatUseThisPipeline',['../classne_1_1Pipeline.html#a9e2644e49b3f3d70893a3672aaef44f5',1,'ne::Pipeline']]], + ['getmaxconstantssizeinbytes_203',['getMaxConstantsSizeInBytes',['../classne_1_1PipelineShaderConstantsManager.html#a6bb03322b3c4bf0032d7bae7d59c2544',1,'ne::PipelineShaderConstantsManager']]], + ['getmaxdepth_204',['getMaxDepth',['../classne_1_1Renderer.html#aa26cb2e1d65dc77d041466bd3155032a',1,'ne::Renderer']]], + ['getmaxlightconeangle_205',['getMaxLightConeAngle',['../classne_1_1SpotlightNode.html#a9e950327863ee31e22bec1368056921a',1,'ne::SpotlightNode']]], + ['getmaxsupportedantialiasingquality_206',['getMaxSupportedAntialiasingQuality',['../classne_1_1DirectXRenderer.html#a5ca63e8979f15ea9ecde3a12a02b0d1b',1,'ne::DirectXRenderer::getMaxSupportedAntialiasingQuality()'],['../classne_1_1VulkanRenderer.html#a507467fc554d7206093d7284ecc0b049',1,'ne::VulkanRenderer::getMaxSupportedAntialiasingQuality()'],['../classne_1_1Renderer.html#a2015e4bdaef2b2786909132757b4401c',1,'ne::Renderer::getMaxSupportedAntialiasingQuality()'],['../classne_1_1RenderSettings.html#ae8eecaaee3873609f6dfe61f12c86ee2',1,'ne::RenderSettings::getMaxSupportedAntialiasingQuality()']]], + ['getmemoryallocator_207',['getMemoryAllocator',['../classne_1_1KtxLoadingCallbackManager.html#a78d03f87a1034e9e553b8acbefad151d',1,'ne::KtxLoadingCallbackManager']]], + ['getmeshdata_208',['getMeshData',['../classne_1_1MeshNode.html#a27eb0a143ae98c2419c2e5eef36df9cf',1,'ne::MeshNode']]], + ['getmeshesincamerafrustum_209',['getMeshesInCameraFrustum',['../classne_1_1Renderer.html#aeb527a8099001d8c3f60f0f546ea8fc9',1,'ne::Renderer']]], + ['getmeshgpuresources_210',['getMeshGpuResources',['../classne_1_1MeshNode.html#a3f15c8ce01a9270e58ab56518bfe7098',1,'ne::MeshNode']]], + ['getmeshshaderconstantbuffername_211',['getMeshShaderConstantBufferName',['../classne_1_1MeshNode.html#ae2c7e2a2dcad5b88a2636e212ca87503',1,'ne::MeshNode']]], + ['getmeshshaderconstants_212',['getMeshShaderConstants',['../classne_1_1MeshNode.html#aaea00de98b55c7e4a6f0ad6abe9db77f',1,'ne::MeshNode']]], + ['getmindepth_213',['getMinDepth',['../classne_1_1Renderer.html#afb7a609075deb5b121a3218a92d4a1c6',1,'ne::Renderer']]], + ['getmsaaqualitylevel_214',['getMsaaQualityLevel',['../classne_1_1DirectXRenderer.html#ae8105874906ab58893e4c393f97fab6a',1,'ne::DirectXRenderer']]], + ['getmsaasamplecount_215',['getMsaaSampleCount',['../classne_1_1VulkanRenderer.html#a41b0c33fd86d697831304e0a0dd098c2',1,'ne::VulkanRenderer']]], + ['getname_216',['getName',['../classne_1_1Timer.html#a615873fbc3308b957519eb59cf73c9c3',1,'ne::Timer']]], + ['getnearclipplanedistance_217',['getNearClipPlaneDistance',['../classne_1_1CameraProperties.html#af8edd62c67ffd4750c8d687c7e537751',1,'ne::CameraProperties']]], + ['getnodeid_218',['getNodeId',['../classne_1_1Node.html#a5cbae38dafd4765e9026028bd004b31c',1,'ne::Node']]], + ['getnodename_219',['getNodeName',['../classne_1_1Node.html#aaf3b419efa656af7bf82b3e85532ceed',1,'ne::Node']]], + ['getnolongeruseddescriptorcount_220',['getNoLongerUsedDescriptorCount',['../classne_1_1DirectXDescriptorHeap.html#acd26be333f36c68a8e50c527ba21d6cb',1,'ne::DirectXDescriptorHeap']]], + ['getopacity_221',['getOpacity',['../classne_1_1Window.html#a8a59b6905fec3f12199fc8b16d86ba3a',1,'ne::Window::getOpacity()'],['../classne_1_1Material.html#ad0467877a11e184dc5f0627dd1cbd02d',1,'ne::Material::getOpacity()']]], + ['getorbitalmodeproperties_222',['getOrbitalModeProperties',['../classne_1_1CameraProperties.html#a056330e6889e12a897abf0cc5d907b7f',1,'ne::CameraProperties']]], + ['getorbitaltargetlocation_223',['getOrbitalTargetLocation',['../classne_1_1CameraNode.html#a75181ed55e2f12b7c910816c3be830e1',1,'ne::CameraNode']]], + ['getownerresource_224',['getOwnerResource',['../classne_1_1DirectXDescriptor.html#a58f7bcabf3e97bb889ed8b26fe212449',1,'ne::DirectXDescriptor']]], + ['getparentnode_225',['getParentNode',['../classne_1_1Node.html#a561de14810416e06b506a6c970c296e7',1,'ne::Node']]], + ['getparentnodeoftype_226',['getParentNodeOfType',['../classne_1_1Node.html#acc4ff3174738477037de125dff1a0707',1,'ne::Node']]], + ['getpathdeserializedfromrelativetores_227',['getPathDeserializedFromRelativeToRes',['../classne_1_1Serializable.html#a0404cdf34dc3fb25b7932a87ed9ade38',1,'ne::Serializable']]], + ['getpathtobaseconfigdirectory_228',['getPathToBaseConfigDirectory',['../classne_1_1ProjectPaths.html#a8bb3ba8c53c55c5d57e65e4937f92527',1,'ne::ProjectPaths']]], + ['getpathtocompiledshader_229',['getPathToCompiledShader',['../classne_1_1Shader.html#ac75f07c83fa4d33247354653b9e05640',1,'ne::Shader']]], + ['getpathtocompiledshadersdirectory_230',['getPathToCompiledShadersDirectory',['../classne_1_1ProjectPaths.html#a7d56a37593aa1ad58e44625a82ebc597',1,'ne::ProjectPaths']]], + ['getpathtoconfigurationfile_231',['getPathToConfigurationFile',['../classne_1_1RenderSettings.html#a93af910913eb360eb0dc7a235fe79949',1,'ne::RenderSettings']]], + ['getpathtodiffusetextureresource_232',['getPathToDiffuseTextureResource',['../classne_1_1Material.html#aae6d5d76aa52f5e312a871edba8d001f',1,'ne::Material']]], + ['getpathtoengineconfigsdirectory_233',['getPathToEngineConfigsDirectory',['../classne_1_1ProjectPaths.html#ab48ea963df9e3061a5d86c11a621fee6',1,'ne::ProjectPaths']]], + ['getpathtologsdirectory_234',['getPathToLogsDirectory',['../classne_1_1ProjectPaths.html#ab2f965673f6c2ee2b7b1cee23c5d7d48',1,'ne::ProjectPaths']]], + ['getpathtoplayerprogressdirectory_235',['getPathToPlayerProgressDirectory',['../classne_1_1ProjectPaths.html#a94f4c68886f0f5c27f52d139902672e1',1,'ne::ProjectPaths']]], + ['getpathtoplayersettingsdirectory_236',['getPathToPlayerSettingsDirectory',['../classne_1_1ProjectPaths.html#a938cbdde81d85f34704685e9533b6e39',1,'ne::ProjectPaths']]], + ['getpathtoresdirectory_237',['getPathToResDirectory',['../classne_1_1ProjectPaths.html#a7453ad9bd614a272717d9cca4a78adbb',1,'ne::ProjectPaths::getPathToResDirectory(ResourceDirectory directory)'],['../classne_1_1ProjectPaths.html#a7e3b23f03d31b30fbcdd468ad8b5ebb2',1,'ne::ProjectPaths::getPathToResDirectory()']]], + ['getpathtoresourcerelativeres_238',['getPathToResourceRelativeRes',['../classne_1_1TextureHandle.html#ae45b667613cae49c44d6ea0e2b4f6fa6',1,'ne::TextureHandle']]], + ['getpathtoshadercachedirectory_239',['getPathToShaderCacheDirectory',['../classne_1_1ShaderFilesystemPaths.html#a81e8852b1bbe64318913e8f0535c0349',1,'ne::ShaderFilesystemPaths']]], + ['getpathtotextureresource_240',['getPathToTextureResource',['../classne_1_1GlslShaderTextureResourceBinding.html#a01eb6c04b78151d3402cbdedea9867dc',1,'ne::GlslShaderTextureResourceBinding']]], + ['getphysicaldevice_241',['getPhysicalDevice',['../classne_1_1KtxLoadingCallbackManager.html#a5d2d32f177b8d942cd2ade0ba971aaaf',1,'ne::KtxLoadingCallbackManager::getPhysicalDevice()'],['../classne_1_1VulkanRenderer.html#aa6b515b9b5dfb8c1c7a95e98339f1c51',1,'ne::VulkanRenderer::getPhysicalDevice()']]], + ['getpipeline_242',['getPipeline',['../classne_1_1PipelineSharedPtr.html#acb3dfd9dae017d88756a24835f27dc8c',1,'ne::PipelineSharedPtr::getPipeline()'],['../classne_1_1ComputeShaderInterface.html#a33f98db82d4e0b1a9ab2127cea23c1cf',1,'ne::ComputeShaderInterface::getPipeline()']]], + ['getpipelineidentifier_243',['getPipelineIdentifier',['../classne_1_1Pipeline.html#a218ccad73ae55717fa7a460685058e97',1,'ne::Pipeline']]], + ['getpipelinemanager_244',['getPipelineManager',['../classne_1_1Renderer.html#a2c1988bfc14749904750ba6dde70ffb2',1,'ne::Renderer']]], + ['getpipelinemanagerfornewmaterial_245',['getPipelineManagerForNewMaterial',['../classne_1_1Material.html#a4d8b157a95a2ee1968b2fe9994be623c',1,'ne::Material']]], + ['getpixelshadermacrosforcurrentstate_246',['getPixelShaderMacrosForCurrentState',['../classne_1_1Material.html#ab749c0e8cae5d47f5a78b3617d538f52',1,'ne::Material']]], + ['getpixelshadermodel_247',['getPixelShaderModel',['../classne_1_1HlslShader.html#a1afb11ee133fd07c0c68c9b3c52fbc79',1,'ne::HlslShader']]], + ['getpixelshadername_248',['getPixelShaderName',['../classne_1_1PipelineConfiguration.html#af456593254ac0de2177f2659648d5e41',1,'ne::PipelineConfiguration::getPixelShaderName()'],['../classne_1_1ColorPipelineConfiguration.html#a0d6eb5eb6800ca3738d902630f6ee7fd',1,'ne::ColorPipelineConfiguration::getPixelShaderName()'],['../classne_1_1DepthPipelineConfiguration.html#aa6cfdf5f6defa8702cddd2130ab9e3a3',1,'ne::DepthPipelineConfiguration::getPixelShaderName()'],['../classne_1_1Material.html#a819dd3b1497a89dc06e811b12329181d',1,'ne::Material::getPixelShaderName()']]], + ['getpointlightdataarray_249',['getPointLightDataArray',['../classne_1_1LightingShaderResourceManager.html#a08ad02504ad104da763078265e6b2394',1,'ne::LightingShaderResourceManager']]], + ['getpointlightnodeshadowmaphandle_250',['getPointLightNodeShadowMapHandle',['../classne_1_1Renderer.html#a89aacf3db90f19ab0153ba61d5d375d9',1,'ne::Renderer']]], + ['getpointlightshadowpasslightinfoarrayindex_251',['getPointLightShadowPassLightInfoArrayIndex',['../classne_1_1Renderer.html#ae3fe9634ba28331a5c7808e41aee8280',1,'ne::Renderer']]], + ['getpointlightsincamerafrustumindicesshaderresourcename_252',['getPointLightsInCameraFrustumIndicesShaderResourceName',['../classne_1_1LightingShaderResourceManager.html#ab982d7908db0212f3020ce2221871021',1,'ne::LightingShaderResourceManager']]], + ['getpointlightsshaderresourcename_253',['getPointLightsShaderResourceName',['../classne_1_1LightingShaderResourceManager.html#a9fb9e5fd18cc1b94d55f8a91b3839875',1,'ne::LightingShaderResourceManager']]], + ['getpointlightworldlocationsshaderresourcename_254',['getPointLightWorldLocationsShaderResourceName',['../classne_1_1LightingShaderResourceManager.html#a6e197d9e72831ef61946d89653d14cf8',1,'ne::LightingShaderResourceManager']]], + ['getpointshadowmapsshaderresourcename_255',['getPointShadowMapsShaderResourceName',['../classne_1_1ShadowMapManager.html#a5ebcd4be52c938935837c85764229845',1,'ne::ShadowMapManager']]], + ['getpreparelightcullingcomputeshader_256',['getPrepareLightCullingComputeShader',['../structne_1_1EngineShaders_1_1ForwardPlus.html#ab0990ca28d1ce804f698350af9bd0b2e',1,'ne::EngineShaders::ForwardPlus']]], + ['getpreparelightcullingcomputeshadername_257',['getPrepareLightCullingComputeShaderName',['../structne_1_1EngineShaderNames_1_1ForwardPlus.html#aab591a1e904000ca05cbe199a8aeabdd',1,'ne::EngineShaderNames::ForwardPlus']]], + ['getprojectionmatrix_258',['getProjectionMatrix',['../classne_1_1CameraProperties.html#aef602d4e9cc65aa0782eb4d5b90a6056',1,'ne::CameraProperties']]], + ['getrangecapacity_259',['getRangeCapacity',['../classne_1_1ContinuousDirectXDescriptorRange.html#a25663080f142ddaae9b34d2a8d2c55d0',1,'ne::ContinuousDirectXDescriptorRange']]], + ['getrangegrowsize_260',['getRangeGrowSize',['../classne_1_1ContinuousDirectXDescriptorRange.html#a79e3306d5dcd53a0631f77cf20fcd09c',1,'ne::ContinuousDirectXDescriptorRange']]], + ['getrangesize_261',['getRangeSize',['../classne_1_1ContinuousDirectXDescriptorRange.html#a02f9c0acfce7f52044002b3225e409e0',1,'ne::ContinuousDirectXDescriptorRange']]], + ['getrangestartinheap_262',['getRangeStartInHeap',['../classne_1_1ContinuousDirectXDescriptorRange.html#a252e39d8b79e1c6bbb893268c2b23281',1,'ne::ContinuousDirectXDescriptorRange']]], + ['getreceivinginputnodes_263',['getReceivingInputNodes',['../classne_1_1World.html#a757a20074f441235297efe54c0322f48',1,'ne::World']]], + ['getrecommendedswapchainbuffercount_264',['getRecommendedSwapChainBufferCount',['../classne_1_1Renderer.html#a71c2681a6e9f19c6bc27c40edd6957d8',1,'ne::Renderer']]], + ['getrefreshrate_265',['getRefreshRate',['../classne_1_1RenderSettings.html#afd2eefc25534997a421364f1f75dc123',1,'ne::RenderSettings']]], + ['getrelativelocation_266',['getRelativeLocation',['../classne_1_1SpatialNode.html#aeb558a9f20e9501a3d8a4b0f4a769f2c',1,'ne::SpatialNode']]], + ['getrelativerotation_267',['getRelativeRotation',['../classne_1_1SpatialNode.html#a277ebb64994069549f09f5148d890fb9',1,'ne::SpatialNode']]], + ['getrelativerotationmatrix_268',['getRelativeRotationMatrix',['../classne_1_1SpatialNode.html#a50e2381f0d40f43e050cfa9ac2c2d9fa',1,'ne::SpatialNode']]], + ['getrelativescale_269',['getRelativeScale',['../classne_1_1SpatialNode.html#a2b030ce699a74fd273d64affd7c34963',1,'ne::SpatialNode']]], + ['getrenderer_270',['getRenderer',['../classne_1_1Pipeline.html#aec27eb8ac8215829a22da7153375b7c7',1,'ne::Pipeline::getRenderer()'],['../classne_1_1PipelineManager.html#a291716865f8990d91d417292c7b253be',1,'ne::PipelineManager::getRenderer()'],['../classne_1_1ShadowMapArrayIndexManager.html#a07fe51c35001aa9b5720f1abba58d45c',1,'ne::ShadowMapArrayIndexManager::getRenderer()'],['../classne_1_1ShadowMapManager.html#a279927b58f6d9b133a52fa64f30c83a3',1,'ne::ShadowMapManager::getRenderer()'],['../classne_1_1Shader.html#a210613fe5a5262b52dec7fad1b6335e9',1,'ne::Shader::getRenderer()'],['../classne_1_1Window.html#a05339b9ab53c064050d8c1cab7cf97ca',1,'ne::Window::getRenderer()'],['../classne_1_1ComputeShaderInterface.html#a7e94e5fd200126e11e57baac6adda2f8',1,'ne::ComputeShaderInterface::getRenderer()'],['../classne_1_1GpuResourceManager.html#a4a0e769ab46d6bb8dc2cb69b745f83b0',1,'ne::GpuResourceManager::getRenderer()']]], + ['getrenderresolution_271',['getRenderResolution',['../classne_1_1RenderSettings.html#a35eb481744e77843303a1576c286e8cc',1,'ne::RenderSettings']]], + ['getrenderresourcesmutex_272',['getRenderResourcesMutex',['../classne_1_1Renderer.html#a695dc78d2a55c2aa0d1c6d77265e286f',1,'ne::Renderer']]], + ['getrendersettings_273',['getRenderSettings',['../classne_1_1Renderer.html#a12fd460314e60a79b027fba12d55a68d',1,'ne::Renderer']]], + ['getrenderstatistics_274',['getRenderStatistics',['../classne_1_1Renderer.html#ab65404722ecba28c300763c04ab06712',1,'ne::Renderer']]], + ['getrendertargetsize_275',['getRenderTargetSize',['../classne_1_1DirectXRenderer.html#a16174eb607292f2da7dd92ef41291e0c',1,'ne::DirectXRenderer::getRenderTargetSize()'],['../classne_1_1Renderer.html#a29a086ceb56a27475014417e862175fe',1,'ne::Renderer::getRenderTargetSize()'],['../classne_1_1VulkanRenderer.html#aff7cba297c4619c36856488e11a63247',1,'ne::VulkanRenderer::getRenderTargetSize() const override']]], + ['getrequiredvulkaninstanceextensions_276',['getRequiredVulkanInstanceExtensions',['../classne_1_1VulkanRenderer.html#ad54eb71349aae9c81c5068f43ea488e0',1,'ne::VulkanRenderer']]], + ['getresource_277',['getResource',['../classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html#a48fda1bec582b81e5649c9af885e7f8a',1,'ne::ShaderCpuWriteResourceBindingUniquePtr::getResource()'],['../classne_1_1ShaderTextureResourceBindingUniquePtr.html#a57222be5717c13b28576cae4d9b84511',1,'ne::ShaderTextureResourceBindingUniquePtr::getResource()'],['../classne_1_1TextureHandle.html#aad972f4110514144ae690eaeb3b3fd3f',1,'ne::TextureHandle::getResource()']]], + ['getresourcedatasizeinbytes_278',['getResourceDataSizeInBytes',['../classne_1_1ShaderCpuWriteResourceBinding.html#ad61d5d64df67b98b7b941a14b73ba56f',1,'ne::ShaderCpuWriteResourceBinding']]], + ['getresourcedescriptoroffsetfromrangestart_279',['getResourceDescriptorOffsetFromRangeStart',['../classne_1_1ContinuousDirectXDescriptorRange.html#a782221c535345b665a6bc77b9f596df1',1,'ne::ContinuousDirectXDescriptorRange']]], + ['getresourcemanager_280',['getResourceManager',['../classne_1_1GpuResource.html#abed4c39f44bce7ecf2f3859ab688dd02',1,'ne::GpuResource::getResourceManager()'],['../classne_1_1Renderer.html#a691ec87d1ca95da47e88b27cd0cfc4d0',1,'ne::Renderer::getResourceManager()']]], + ['getresourcename_281',['getResourceName',['../classne_1_1GpuResource.html#a90b9a139422b1d568e5be6ec9186130c',1,'ne::GpuResource']]], + ['getresources_282',['getResources',['../classne_1_1ShadowMapHandle.html#a356969647bcc25ef9d2422fd6628019c',1,'ne::ShadowMapHandle::getResources()'],['../classne_1_1ShaderCpuWriteResourceBindingManager.html#aefbb3032d20e81cad856648fe41c4b31',1,'ne::ShaderCpuWriteResourceBindingManager::getResources()'],['../classne_1_1ShaderTextureResourceBindingManager.html#ac9716e4c88de526e16d5eef010d83dca',1,'ne::ShaderTextureResourceBindingManager::getResources()']]], + ['getresourcesdirectoryname_283',['getResourcesDirectoryName',['../classne_1_1Globals.html#a3701ce77cd54340119247a2a7bb34f81',1,'ne::Globals']]], + ['getrootnode_284',['getRootNode',['../classne_1_1World.html#a28a6bf6adf0f0344bec77af2fab2a01f',1,'ne::World']]], + ['getrootparameterindex_285',['getRootParameterIndex',['../classne_1_1DirectXPso.html#a9d3a1c982c009a497d913ed335aef373',1,'ne::DirectXPso']]], + ['getrootsignatureinfo_286',['getRootSignatureInfo',['../classne_1_1HlslShader.html#a80bcace02f77fc952d1491ac39726190',1,'ne::HlslShader']]], + ['getroughness_287',['getRoughness',['../classne_1_1Material.html#a0f38075d473d23e8255a0cab5e3126e2',1,'ne::Material']]], + ['getrtvheap_288',['getRtvHeap',['../classne_1_1DirectXResourceManager.html#a5a5c3ebf98c7239375e8aefd7f49e1aa',1,'ne::DirectXResourceManager']]], + ['getserializationtype_289',['getSerializationType',['../classne_1_1Serialize.html#ac4ea052ff89820d1ad8f102f26f57b42',1,'ne::Serialize']]], + ['getshader_290',['getShader',['../classne_1_1ShaderPack.html#ad75d45005776472f0afac481ac569abd',1,'ne::ShaderPack']]], + ['getshaderarrayresourcename_291',['getShaderArrayResourceName',['../classne_1_1ShadowMapArrayIndexManager.html#ab77f0f16fe42c573772c6d04a788772d',1,'ne::ShadowMapArrayIndexManager']]], + ['getshadercachebasefilename_292',['getShaderCacheBaseFileName',['../classne_1_1ShaderFilesystemPaths.html#ab46855d84c9a86ce8170de61d5e9daa1',1,'ne::ShaderFilesystemPaths']]], + ['getshadercompilerversion_293',['getShaderCompilerVersion',['../classne_1_1HlslShader.html#a17d394f3fc24a7079f0e61d674d1b6cb',1,'ne::HlslShader']]], + ['getshaderconfiguration_294',['getShaderConfiguration',['../classne_1_1Renderer.html#a4652ff17d96dd1cf1cc5e8c41dd8904b',1,'ne::Renderer']]], + ['getshaderconstants_295',['getShaderConstants',['../classne_1_1Pipeline.html#a1f70f9ad1f96d425f6f6328397f8c36b',1,'ne::Pipeline']]], + ['getshadercpuwriteresourcemanager_296',['getShaderCpuWriteResourceManager',['../classne_1_1Renderer.html#af291d346e7a157b4a519ebda87245dbd',1,'ne::Renderer']]], + ['getshaderinputelementdescription_297',['getShaderInputElementDescription',['../classne_1_1HlslVertexFormatDescription.html#ad43948e45c4b369c0fe99f8972547eff',1,'ne::HlslVertexFormatDescription::getShaderInputElementDescription()'],['../classne_1_1MeshNodeHlslVertexFormatDescription.html#ab73c3b0426fdb1b228f4b514ca40aa29',1,'ne::MeshNodeHlslVertexFormatDescription::getShaderInputElementDescription()']]], + ['getshadermanager_298',['getShaderManager',['../classne_1_1Renderer.html#a9cde18dbde3564c907d839703c8f4193',1,'ne::Renderer']]], + ['getshadername_299',['getShaderName',['../classne_1_1ShaderPack.html#a86ea31924003ccee3a3d8550986df6a8',1,'ne::ShaderPack::getShaderName()'],['../classne_1_1Shader.html#a61ec6ae20ef30b58a0fb2b975dbc73ba',1,'ne::Shader::getShaderName()']]], + ['getshaderresourcename_300',['getShaderResourceName',['../classne_1_1GlobalShaderResourceBinding.html#a0a9e0f42492b807f4441ddd28c1d5435',1,'ne::GlobalShaderResourceBinding::getShaderResourceName()'],['../classne_1_1ShaderResourceBindingBase.html#a741dd05156bdd35eed54ab3e549b448c',1,'ne::ShaderResourceBindingBase::getShaderResourceName()'],['../classne_1_1ShaderLightArray.html#a1ba83acfc58436dcb6c7bb1d0e9dcc41',1,'ne::ShaderLightArray::getShaderResourceName()']]], + ['getshadersourcefilehash_301',['getShaderSourceFileHash',['../classne_1_1HlslShader.html#a531f22aaacd342827821d80c48600f76',1,'ne::HlslShader']]], + ['getshadertextureresourcemanager_302',['getShaderTextureResourceManager',['../classne_1_1Renderer.html#a06a9c1d031f1b6ba3f2f86b81eadf561',1,'ne::Renderer']]], + ['getshadertype_303',['getShaderType',['../classne_1_1Shader.html#a3ffa1bc747721fd8c0f7ff04fd85a6ea',1,'ne::Shader::getShaderType()'],['../classne_1_1ShaderPack.html#ad7359b8a3b2719f520503653aa7ae6b3',1,'ne::ShaderPack::getShaderType()']]], + ['getshadowmapformat_304',['getShadowMapFormat',['../classne_1_1VulkanRenderer.html#a347daefa40e801343ff6e3ee02b1cc39',1,'ne::VulkanRenderer::getShadowMapFormat()'],['../classne_1_1DirectXRenderer.html#a568b5472e5ab5a0884e92eef18738902',1,'ne::DirectXRenderer::getShadowMapFormat()']]], + ['getshadowmaphandle_305',['getShadowMapHandle',['../classne_1_1DirectionalLightNode.html#aa8accc71d63ece80c100b5fd155f56d7',1,'ne::DirectionalLightNode::getShadowMapHandle()'],['../classne_1_1PointLightNode.html#a377a771a725777aab67298791c67200c',1,'ne::PointLightNode::getShadowMapHandle()'],['../classne_1_1SpotlightNode.html#a4d9ee93af57b605afc3bc87889519cb0',1,'ne::SpotlightNode::getShadowMapHandle()']]], + ['getshadowmapmanager_306',['getShadowMapManager',['../classne_1_1GpuResourceManager.html#a4cbc670da1ddb223070a5ad1745b99bb',1,'ne::GpuResourceManager']]], + ['getshadowmappingdirectionalspotpipeline_307',['getShadowMappingDirectionalSpotPipeline',['../classne_1_1Material.html#a1879f119b0b281dd2f421a135bb74329',1,'ne::Material']]], + ['getshadowmappingpointlightcolortargetformat_308',['getShadowMappingPointLightColorTargetFormat',['../classne_1_1DirectXRenderer.html#a63c6cac3c9f97ee01374409a38e8f495',1,'ne::DirectXRenderer::getShadowMappingPointLightColorTargetFormat()'],['../classne_1_1VulkanRenderer.html#a1fb781e6224b2efc4a54490d76c1ff10',1,'ne::VulkanRenderer::getShadowMappingPointLightColorTargetFormat()']]], + ['getshadowmappingpointpipeline_309',['getShadowMappingPointPipeline',['../classne_1_1Material.html#afdabd9fd25213f1c33138d978ddafdd1',1,'ne::Material']]], + ['getshadowmappingrenderpass_310',['getShadowMappingRenderPass',['../classne_1_1VulkanRenderer.html#a208c97cb75b621724bbd22a7b49c07d4',1,'ne::VulkanRenderer']]], + ['getshadowmappingusage_311',['getShadowMappingUsage',['../classne_1_1PipelineConfiguration.html#a30ee2a7f2a65d020b7d964e29faff289',1,'ne::PipelineConfiguration::getShadowMappingUsage()'],['../classne_1_1DepthPipelineConfiguration.html#ae7f82a013e9cabd1ef1c0f711efb1f32',1,'ne::DepthPipelineConfiguration::getShadowMappingUsage()']]], + ['getshadowmapsize_312',['getShadowMapSize',['../classne_1_1ShadowMapHandle.html#ad98533a1b6a3a75258cbdda340b58553',1,'ne::ShadowMapHandle']]], + ['getshadowmaptype_313',['getShadowMapType',['../classne_1_1ShadowMapHandle.html#ac3cbc9cb3295c4d2184c8963c04eb1f2',1,'ne::ShadowMapHandle']]], + ['getshadowpassdepthbias_314',['getShadowPassDepthBias',['../classne_1_1ShadowMapManager.html#a8b91d5b4bb295bc2d476ef2245348d17',1,'ne::ShadowMapManager']]], + ['getshadowpassdepthslopefactor_315',['getShadowPassDepthSlopeFactor',['../classne_1_1ShadowMapManager.html#a8193cb1ecfc0af6f57a5a428d1a13e6a',1,'ne::ShadowMapManager']]], + ['getshadowpasslightinfoarray_316',['getShadowPassLightInfoArray',['../classne_1_1LightingShaderResourceManager.html#a61f069d6581b82f2fda19872dd8a1f2e',1,'ne::LightingShaderResourceManager']]], + ['getshadowpasslightinfoarrayshaderresourcename_317',['getShadowPassLightInfoArrayShaderResourceName',['../classne_1_1LightingShaderResourceManager.html#aa15b76e93bb1854496754513e73f439b',1,'ne::LightingShaderResourceManager']]], + ['getshadowquality_318',['getShadowQuality',['../classne_1_1RenderSettings.html#a87dd817de4da7ec6b8a17515640798a2',1,'ne::RenderSettings']]], + ['getshadowtexturesampler_319',['getShadowTextureSampler',['../classne_1_1VulkanRenderer.html#ae7e11b0f1ffac78a633cdcb9a3c40424',1,'ne::VulkanRenderer']]], + ['getshape_320',['getShape',['../classne_1_1SpotlightNode.html#a0be3858c4c5ea09b4d04f060e6d40703',1,'ne::SpotlightNode::getShape()'],['../classne_1_1PointLightNode.html#a5b30375f6363dbb835446bf6839e2c54',1,'ne::PointLightNode::getShape()']]], + ['getsize_321',['getSize',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a8996d41a781867fdd7b57bea25dffc8c',1,'ne::DynamicCpuWriteShaderResourceArray::getSize()'],['../classne_1_1Window.html#a1f36cf9578b512707cbf98126dc1fd92',1,'ne::Window::getSize()']]], + ['getsizeinbytes_322',['getSizeInBytes',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a2b4ce0a39e1cf4dfb93293af186deed6',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['getspawndespawnmutex_323',['getSpawnDespawnMutex',['../classne_1_1Node.html#a893cf9d4987d1b3ece76c0ffa0577e6d',1,'ne::Node']]], + ['getspawnedmeshnodesthatusethismaterial_324',['getSpawnedMeshNodesThatUseThisMaterial',['../classne_1_1Material.html#a22972cb7fc8c34cd1e25794604c6f88f',1,'ne::Material']]], + ['getspecularcolor_325',['getSpecularColor',['../classne_1_1Material.html#af18626e7a64af061617da9fd328a6e3b',1,'ne::Material']]], + ['getspotlightdataarray_326',['getSpotlightDataArray',['../classne_1_1LightingShaderResourceManager.html#a2b6507057bb9a378f1686cf750c15e18',1,'ne::LightingShaderResourceManager']]], + ['getspotlightnodeshadowmappinginfo_327',['getSpotlightNodeShadowMappingInfo',['../classne_1_1Renderer.html#ad08311905dc6df3bf29f08b23b2e30cb',1,'ne::Renderer']]], + ['getspotlightsincamerafrustumindicesshaderresourcename_328',['getSpotlightsInCameraFrustumIndicesShaderResourceName',['../classne_1_1LightingShaderResourceManager.html#ab6cb78332ed7ed562600168db9bd5f3e',1,'ne::LightingShaderResourceManager']]], + ['getspotlightsshaderresourcename_329',['getSpotlightsShaderResourceName',['../classne_1_1LightingShaderResourceManager.html#ab503bd5d97d0aa7153a8f7174d2388ff',1,'ne::LightingShaderResourceManager']]], + ['getspotshadowmapsshaderresourcename_330',['getSpotShadowMapsShaderResourceName',['../classne_1_1ShadowMapManager.html#a5c0dddca2553708ee6f96742a088fd80',1,'ne::ShadowMapManager']]], + ['getsrvdescriptorrange_331',['getSrvDescriptorRange',['../classne_1_1DirectXShadowMapArrayIndexManager.html#a8f23a478ce9332b11b68c8bdcb120f5b',1,'ne::DirectXShadowMapArrayIndexManager']]], + ['getsrvdescriptorrangeandrootconstantindex_332',['getSrvDescriptorRangeAndRootConstantIndex',['../classne_1_1HlslShaderTextureResourceBinding.html#af32b2a6dbe5ff88c31a736a34e594546',1,'ne::HlslShaderTextureResourceBinding']]], + ['getstartcount_333',['getStartCount',['../classne_1_1Timer.html#ab8b529dbd73e58bc2901295aef47e099',1,'ne::Timer']]], + ['getstaticcomparisonsamplerdescription_334',['getStaticComparisonSamplerDescription',['../classne_1_1HlslShader.html#af8def282438e6998f68c2417720ca79a',1,'ne::HlslShader']]], + ['getstaticsamplerdescription_335',['getStaticSamplerDescription',['../classne_1_1HlslShader.html#a41de1137a06282d0962edfdffae5ac28',1,'ne::HlslShader']]], + ['getstaticsamplershaderregisterspace_336',['getStaticSamplerShaderRegisterSpace',['../classne_1_1HlslShader.html#a66ac995bf2aaf0eb2deaa5f1f9f15301',1,'ne::HlslShader']]], + ['getsubscribercount_337',['getSubscriberCount',['../classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#aa0703d7e0cab10459f4a2a227603f62e',1,'ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>']]], + ['getsupporteddisplaymodes_338',['getSupportedDisplayModes',['../classne_1_1DirectXRenderer.html#a88b530ed531a1779c6167c680180c9c8',1,'ne::DirectXRenderer']]], + ['getsupportedgpunames_339',['getSupportedGpuNames',['../classne_1_1VulkanRenderer.html#a66d3142a7256c58c9e5621ea1572df0a',1,'ne::VulkanRenderer::getSupportedGpuNames()'],['../classne_1_1Renderer.html#aa87df2fda14247192847d5056e0ecfe3',1,'ne::Renderer::getSupportedGpuNames()'],['../classne_1_1DirectXRenderer.html#a1781ea7494d8f9e1b97c4eb0ca08c154',1,'ne::DirectXRenderer::getSupportedGpuNames() const override']]], + ['getsupportedrefreshrates_340',['getSupportedRefreshRates',['../classne_1_1DirectXRenderer.html#a8276c58de1c600500b718a5b5e615d7c',1,'ne::DirectXRenderer::getSupportedRefreshRates()'],['../classne_1_1VulkanRenderer.html#a80d2498bc0ef0353911f54aa6bd6c2e6',1,'ne::VulkanRenderer::getSupportedRefreshRates()'],['../classne_1_1Renderer.html#aa2d73c28396846df0151e37f9a6a4830',1,'ne::Renderer::getSupportedRefreshRates()']]], + ['getsupportedrenderresolutions_341',['getSupportedRenderResolutions',['../classne_1_1DirectXRenderer.html#a4520b9aceab7912cc891eab113084c30',1,'ne::DirectXRenderer::getSupportedRenderResolutions()'],['../classne_1_1VulkanRenderer.html#a6b99ca902231e396a0abef4fe3a1cdfb',1,'ne::VulkanRenderer::getSupportedRenderResolutions()'],['../classne_1_1Renderer.html#ae620044334fb679c877d70e42c72b312',1,'ne::Renderer::getSupportedRenderResolutions()']]], + ['getswapchainextent_342',['getSwapChainExtent',['../classne_1_1VulkanRenderer.html#ac7f8f4f08713e16f16fbf4937da819a3',1,'ne::VulkanRenderer']]], + ['gettexture_343',['getTexture',['../classne_1_1TextureManager.html#aaffb98fbd3dfca5272382db486828830',1,'ne::TextureManager']]], + ['gettexturefilteringquality_344',['getTextureFilteringQuality',['../classne_1_1RenderSettings.html#ae87ad84151fdc18dc73216cdba71f8ab',1,'ne::RenderSettings']]], + ['gettextureindexinshaderarray_345',['getTextureIndexInShaderArray',['../classne_1_1GlslShaderTextureResourceBinding.html#afd12447a47da8fc586344fa986bef8d4',1,'ne::GlslShaderTextureResourceBinding']]], + ['gettextureinmemorycount_346',['getTextureInMemoryCount',['../classne_1_1TextureManager.html#a7513750d0f4e2343d2cd9d392f0380d1',1,'ne::TextureManager']]], + ['gettexturemanager_347',['getTextureManager',['../classne_1_1GpuResourceManager.html#a4f234f90eec7a4a4512ca1571f53422c',1,'ne::GpuResourceManager']]], + ['gettexturequality_348',['getTextureQuality',['../classne_1_1RenderSettings.html#ae26a0d83f36946cd51b18a8e174f8966',1,'ne::RenderSettings']]], + ['gettexturesampler_349',['getTextureSampler',['../classne_1_1VulkanRenderer.html#a10568b5e33484ba43ae1d4e0ef0a3c58',1,'ne::VulkanRenderer']]], + ['getthreadgroupcountx_350',['getThreadGroupCountX',['../classne_1_1ComputeShaderInterface.html#a3b78b8d2ee0eb431952adc91bde0f529',1,'ne::ComputeShaderInterface']]], + ['getthreadgroupcounty_351',['getThreadGroupCountY',['../classne_1_1ComputeShaderInterface.html#a4b90c488898283e8b9618283f90e244c',1,'ne::ComputeShaderInterface']]], + ['getthreadgroupcountz_352',['getThreadGroupCountZ',['../classne_1_1ComputeShaderInterface.html#acc01e4dc8dc119c674b9f6393318be54',1,'ne::ComputeShaderInterface']]], + ['gettickgroup_353',['getTickGroup',['../classne_1_1Node.html#ae5711513fe69f2771c6fc6bf84379768',1,'ne::Node']]], + ['gettimesinceprevframeinsec_354',['getTimeSincePrevFrameInSec',['../classne_1_1GameManager.html#adc20ef5adb9a70e63e0f126e302bd0b2',1,'ne::GameManager']]], + ['gettimespentlastframeonfrustumcullinglights_355',['getTimeSpentLastFrameOnFrustumCullingLights',['../classne_1_1RenderStatistics.html#a2c34d2a6416d9a2e72fea1a2a8ec1cdf',1,'ne::RenderStatistics']]], + ['gettimespentlastframeonfrustumcullingmeshes_356',['getTimeSpentLastFrameOnFrustumCullingMeshes',['../classne_1_1RenderStatistics.html#a873d0213cdc04b97a3500258a9143a9f',1,'ne::RenderStatistics']]], + ['gettimespentlastframewaitingforgpu_357',['getTimeSpentLastFrameWaitingForGpu',['../classne_1_1RenderStatistics.html#a9ac02303466d5b5dc53c75ae3c61d386',1,'ne::RenderStatistics']]], + ['gettitle_358',['getTitle',['../classne_1_1Window.html#a11c12ee65d98b281a352b682ab3a8e0a',1,'ne::Window']]], + ['gettotalaliveresourcecount_359',['getTotalAliveResourceCount',['../classne_1_1GpuResourceManager.html#abb05ff78285f579887978435d70c2234',1,'ne::GpuResourceManager']]], + ['gettotalapplicationtimeinsec_360',['getTotalApplicationTimeInSec',['../classne_1_1GameInstance.html#a87a26980f1331909ea81f47c550aca3e',1,'ne::GameInstance']]], + ['gettotalerrorsproduced_361',['getTotalErrorsProduced',['../classne_1_1Logger.html#a083ba88a5d82f69492cfeb9773489cad',1,'ne::Logger']]], + ['gettotalsize_362',['getTotalSize',['../structne_1_1MeshNodesThatUseThisMaterial.html#a4438de4195dde12a63c9f67b8f67d3fc',1,'ne::MeshNodesThatUseThisMaterial']]], + ['gettotalsizeinbytes_363',['getTotalSizeInBytes',['../classne_1_1PipelineShaderConstantsManager.html#ab48235457c697bacbdac488aa96072fa',1,'ne::PipelineShaderConstantsManager']]], + ['gettotalspawnednodecount_364',['getTotalSpawnedNodeCount',['../classne_1_1GameManager.html#aa0edbb377ab7b8e1fc1c5e1f583399f5',1,'ne::GameManager::getTotalSpawnedNodeCount()'],['../classne_1_1World.html#ab3b44ccb0d12fe307e4be59591b3d078',1,'ne::World::getTotalSpawnedNodeCount()'],['../classne_1_1GameInstance.html#a32886049aa6aa5c63bca94f60c179264',1,'ne::GameInstance::getTotalSpawnedNodeCount()']]], + ['gettotalvideomemoryinmb_365',['getTotalVideoMemoryInMb',['../classne_1_1DirectXResourceManager.html#adcb41f6caedbddf9be768f7f4cbce593',1,'ne::DirectXResourceManager::getTotalVideoMemoryInMb()'],['../classne_1_1GpuResourceManager.html#a5223b131043ac73681248f67afc9d3a2',1,'ne::GpuResourceManager::getTotalVideoMemoryInMb()'],['../classne_1_1VulkanResourceManager.html#afc0af46de31f171d7a15c65fc4ffb6bd',1,'ne::VulkanResourceManager::getTotalVideoMemoryInMb()'],['../classne_1_1Renderer.html#a6736b43c6b2fe8a64ec02547e83b7ab5',1,'ne::Renderer::getTotalVideoMemoryInMb()']]], + ['gettotalwarningsproduced_366',['getTotalWarningsProduced',['../classne_1_1Logger.html#ab721d9793bb9db637af27977ed6d659b',1,'ne::Logger']]], + ['gettype_367',['getType',['../classne_1_1DirectXRenderer.html#a0daa57b10444b533e5c84e4e943aedf8',1,'ne::DirectXRenderer::getType()'],['../classne_1_1VulkanRenderer.html#a87693c1fba2a1765915317d9ff817f28',1,'ne::VulkanRenderer::getType()'],['../classne_1_1Renderer.html#a19bc0b11a97b3e92b8510f348d0fa28f',1,'ne::Renderer::getType()']]], + ['getuintconstantoffset_368',['getUintConstantOffset',['../classne_1_1Pipeline.html#a57db0645e52bc62e08edb5459ad3be4d',1,'ne::Pipeline']]], + ['getuintshaderconstantoffsetsfrompipelines_369',['getUintShaderConstantOffsetsFromPipelines',['../classne_1_1ShaderCpuWriteResourceBinding.html#aeb8cb2153b57969d7623cd46b7f2d5fb',1,'ne::ShaderCpuWriteResourceBinding']]], + ['getuniquewindowname_370',['getUniqueWindowName',['../classne_1_1UniqueValueGenerator.html#a7c0313496f8a24d49d5073b2ba036fbb',1,'ne::UniqueValueGenerator']]], + ['getusedapiversion_371',['getUsedApiVersion',['../classne_1_1DirectXRenderer.html#aca706b99fc421f2fbd3c87ed5802d6f5',1,'ne::DirectXRenderer::getUsedApiVersion()'],['../classne_1_1VulkanRenderer.html#ada9f5059b75b65b93f4f45325f7184a4',1,'ne::VulkanRenderer::getUsedApiVersion()'],['../classne_1_1Renderer.html#a03e357989d5b7239ded555a7298e35d1',1,'ne::Renderer::getUsedApiVersion()']]], + ['getusedpipeline_372',['getUsedPipeline',['../classne_1_1ComputeShaderInterface.html#af3a736d157ba281acfba473e8ca66598',1,'ne::ComputeShaderInterface']]], + ['getusedvideomemoryinmb_373',['getUsedVideoMemoryInMb',['../classne_1_1DirectXResourceManager.html#abde91d9fe0065f1edc51ae2cb427ca7c',1,'ne::DirectXResourceManager::getUsedVideoMemoryInMb()'],['../classne_1_1GpuResourceManager.html#a306d6beb99858b87c761fc778d204a5c',1,'ne::GpuResourceManager::getUsedVideoMemoryInMb()'],['../classne_1_1VulkanResourceManager.html#aada002fa77b56b40f7d1a8144fe6db76',1,'ne::VulkanResourceManager::getUsedVideoMemoryInMb()'],['../classne_1_1Renderer.html#a155f3058794bf3ded4a8d4a1bc77dd71',1,'ne::Renderer::getUsedVideoMemoryInMb()']]], + ['getusedvulkanversion_374',['getUsedVulkanVersion',['../classne_1_1VulkanRenderer.html#acc334f432f35b32742ae93ba72e027b5',1,'ne::VulkanRenderer']]], + ['getvalue_375',['getValue',['../classne_1_1ConfigManager.html#ac355a5fa94ada2919d3e75a5246a94d2',1,'ne::ConfigManager']]], + ['getvariablecount_376',['getVariableCount',['../classne_1_1PipelineShaderConstantsManager.html#a9101a793c27142717ddb3238241ba81f',1,'ne::PipelineShaderConstantsManager']]], + ['getvertexattributedescriptions_377',['getVertexAttributeDescriptions',['../classne_1_1GlslVertexFormatDescription.html#a9b1fda390bdf44fb5044ffbe07f687ff',1,'ne::GlslVertexFormatDescription::getVertexAttributeDescriptions()'],['../classne_1_1MeshNodeGlslVertexFormatDescription.html#a65f7f66712d541f94a4dc324c23514df',1,'ne::MeshNodeGlslVertexFormatDescription::getVertexAttributeDescriptions()']]], + ['getvertexbindingdescription_378',['getVertexBindingDescription',['../classne_1_1GlslVertexFormatDescription.html#a7c3d520315c44fbbf5d3a67905be9f3e',1,'ne::GlslVertexFormatDescription::getVertexBindingDescription()'],['../classne_1_1MeshNodeGlslVertexFormatDescription.html#ae458552a60f544884103db619cd77c88',1,'ne::MeshNodeGlslVertexFormatDescription::getVertexBindingDescription()']]], + ['getvertexbindingindex_379',['getVertexBindingIndex',['../classne_1_1GlslVertexFormatDescription.html#a37c641b0543ae0fc1a8b10b2b34aba96',1,'ne::GlslVertexFormatDescription']]], + ['getvertexformat_380',['getVertexFormat',['../classne_1_1Shader.html#a0ccf42ee5ff6e2b432f46316c231860c',1,'ne::Shader']]], + ['getvertexlayoutbindingindexmacros_381',['getVertexLayoutBindingIndexMacros',['../classne_1_1GlslVertexFormatDescription.html#a6b41b4f5d80d7d7a5b17cff12af3981f',1,'ne::GlslVertexFormatDescription::getVertexLayoutBindingIndexMacros()'],['../classne_1_1MeshNodeGlslVertexFormatDescription.html#aeb3fc391a22f440ff711df71364de7e0',1,'ne::MeshNodeGlslVertexFormatDescription::getVertexLayoutBindingIndexMacros()']]], + ['getvertexsemanticlocations_382',['getVertexSemanticLocations',['../classne_1_1HlslVertexFormatDescription.html#a1ba49e2d29942d3ab988f8cedb687b68',1,'ne::HlslVertexFormatDescription::getVertexSemanticLocations()'],['../classne_1_1MeshNodeHlslVertexFormatDescription.html#a8bf54c5d9f0a07ced7270eb0e9ceae3f',1,'ne::MeshNodeHlslVertexFormatDescription::getVertexSemanticLocations()']]], + ['getvertexshader_383',['getVertexShader',['../structne_1_1EngineShaders_1_1MeshNode.html#ae56ec5ff16f84a5300e789466cc480cd',1,'ne::EngineShaders::MeshNode']]], + ['getvertexshadermacrosforcurrentstate_384',['getVertexShaderMacrosForCurrentState',['../classne_1_1Material.html#a9b10095374d989f99a568299b663ea1b',1,'ne::Material']]], + ['getvertexshadermodel_385',['getVertexShaderModel',['../classne_1_1HlslShader.html#ab5c80083b5c0a201bd146bbd3646b230',1,'ne::HlslShader']]], + ['getvertexshadername_386',['getVertexShaderName',['../classne_1_1PipelineConfiguration.html#a824a09704e1e98cb14e218948097d8c0',1,'ne::PipelineConfiguration::getVertexShaderName()'],['../structne_1_1EngineShaderNames_1_1MeshNode.html#a158ec016b970e63600a0aeea2c732b24',1,'ne::EngineShaderNames::MeshNode::getVertexShaderName()'],['../classne_1_1Material.html#a37c74feacb9365a1dffd9499374403bd',1,'ne::Material::getVertexShaderName()']]], + ['getverticalfov_387',['getVerticalFov',['../classne_1_1CameraProperties.html#af43b56792db43a694f9e5f4a5514f091',1,'ne::CameraProperties']]], + ['getvertices_388',['getVertices',['../classne_1_1MeshData.html#a2430ee585fe26a4c1d8dbb60776bf44e',1,'ne::MeshData']]], + ['getvideoadapter_389',['getVideoAdapter',['../classne_1_1DirectXRenderer.html#aaefff1d150a755ead34aaee472e6fa77',1,'ne::DirectXRenderer']]], + ['getviewmatrix_390',['getViewMatrix',['../classne_1_1CameraProperties.html#a0ca9e5d4a3ebfb520b8e39cd8497ec86',1,'ne::CameraProperties']]], + ['getvisibility_391',['getVisibility',['../classne_1_1RootSignatureGenerator_1_1RootParameter.html#aa5cf1cbf4b3988b5292816b7e53d26b5',1,'ne::RootSignatureGenerator::RootParameter']]], + ['getvisibledistancetonearclipplaneratio_392',['getVisibleDistanceToNearClipPlaneRatio',['../classne_1_1ShadowMapManager.html#a98d0cfa3f9a8786f34ec00ec560afa2e',1,'ne::ShadowMapManager']]], + ['getwindow_393',['getWindow',['../classne_1_1GameManager.html#a2410cd7594cc46077cee6c900a0a43da',1,'ne::GameManager::getWindow()'],['../classne_1_1GameInstance.html#aab1527a8de17aa14bc10fb321f5e80b2',1,'ne::GameInstance::getWindow()'],['../classne_1_1Renderer.html#a4b2060db01a347def8c4315f6aada1f8',1,'ne::Renderer::getWindow()']]], + ['getworldforwarddirection_394',['getWorldForwardDirection',['../classne_1_1SpatialNode.html#ac8bba3a225a35cd40d5f04c98506aa4e',1,'ne::SpatialNode']]], + ['getworldlocation_395',['getWorldLocation',['../classne_1_1CameraProperties.html#a9a2919ade3eb2d1247533bb99ca4e3d8',1,'ne::CameraProperties::getWorldLocation()'],['../classne_1_1SpatialNode.html#acbd42888d6bb7d5ff7e82bd61ed8f8c2',1,'ne::SpatialNode::getWorldLocation()']]], + ['getworldmatrix_396',['getWorldMatrix',['../classne_1_1SpatialNode.html#a9becf3737c72d57008bbc87d37aea546',1,'ne::SpatialNode']]], + ['getworldrightdirection_397',['getWorldRightDirection',['../classne_1_1SpatialNode.html#a2594545f207a1a4972eade6172cca66c',1,'ne::SpatialNode']]], + ['getworldrootnode_398',['getWorldRootNode',['../classne_1_1GameManager.html#abb00111cae84200296bf56234908c67e',1,'ne::GameManager::getWorldRootNode()'],['../classne_1_1GameInstance.html#a1694c7d8efca6ba32e3caff863d8fdfe',1,'ne::GameInstance::getWorldRootNode()'],['../classne_1_1Node.html#a470c2e53992a75304574a6c3c80a87d2',1,'ne::Node::getWorldRootNode()']]], + ['getworldrotation_399',['getWorldRotation',['../classne_1_1SpatialNode.html#af1c06e3d090b282f172c0978c8ddeb17',1,'ne::SpatialNode']]], + ['getworldrotationquaternion_400',['getWorldRotationQuaternion',['../classne_1_1SpatialNode.html#a9e77c912ebf8f0877addcee649fdffe1',1,'ne::SpatialNode']]], + ['getworldscale_401',['getWorldScale',['../classne_1_1SpatialNode.html#aac522941554b6f4f97f5eb1a2e29d31a',1,'ne::SpatialNode']]], + ['getworldsize_402',['getWorldSize',['../classne_1_1GameManager.html#aa80ac9bb728d49381e3573c98c741e83',1,'ne::GameManager::getWorldSize()'],['../classne_1_1World.html#af6219e17f62b2524332562c321307476',1,'ne::World::getWorldSize()'],['../classne_1_1GameInstance.html#ae9c6911a64ab45b5d45b9d2e241618c7',1,'ne::GameInstance::getWorldSize()']]], + ['getworldtimeinseconds_403',['getWorldTimeInSeconds',['../classne_1_1GameManager.html#a0af03153d75a24c9c3c62f3fcf88d297',1,'ne::GameManager::getWorldTimeInSeconds()'],['../classne_1_1World.html#a2bd9e608e87a30c949a98b0c9e9d6025',1,'ne::World::getWorldTimeInSeconds()'],['../classne_1_1GameInstance.html#a16483867d51ac5521d747038f37172ba',1,'ne::GameInstance::getWorldTimeInSeconds()']]], + ['getworldupdirection_404',['getWorldUpDirection',['../classne_1_1SpatialNode.html#a95209d6c7572ee121505191652ed529b',1,'ne::SpatialNode']]], + ['glfw_405',['GLFW',['../classne_1_1GLFW.html#a976ddbb5eb5029dfc3575c0acd6d8108',1,'ne::GLFW::GLFW()'],['../classne_1_1GLFW.html',1,'ne::GLFW']]], + ['glfwframebufferresizecallback_406',['glfwFramebufferResizeCallback',['../classne_1_1Window.html#ac57c250f86683edeb7fbce73ff2fc6e9',1,'ne::Window']]], + ['glfwwindowfocuscallback_407',['glfwWindowFocusCallback',['../classne_1_1Window.html#a2d4c36ba3af705eaa819978f3612f6c7',1,'ne::Window']]], + ['glfwwindowkeyboardcallback_408',['glfwWindowKeyboardCallback',['../classne_1_1Window.html#ad8b5e2911019e47727be995430314585',1,'ne::Window']]], + ['glfwwindowmousecallback_409',['glfwWindowMouseCallback',['../classne_1_1Window.html#aa5e2106db073a38d5e06181fc1a5c8ec',1,'ne::Window']]], + ['glfwwindowmousecursorposcallback_410',['glfwWindowMouseCursorPosCallback',['../classne_1_1Window.html#ab20e1bf7359ba32effd5cd82d9f71ff4',1,'ne::Window']]], + ['glfwwindowmousescrollcallback_411',['glfwWindowMouseScrollCallback',['../classne_1_1Window.html#a43b85c95a5ec1e7f7966391c19a62aaf',1,'ne::Window']]], + ['glmvecfieldserializer_412',['GlmVecFieldSerializer',['../classne_1_1GlmVecFieldSerializer.html',1,'ne']]], + ['globalcountersintolightindexlist_413',['GlobalCountersIntoLightIndexList',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1GlobalCountersIntoLightIndexList.html',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader']]], + ['globals_414',['Globals',['../classne_1_1Globals.html',1,'ne']]], + ['globalshadercacheparameternames_415',['GlobalShaderCacheParameterNames',['../structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames.html',1,'ne::HlslShaderCacheManager::GlobalShaderCacheParameterNames'],['../structne_1_1ShaderCacheManager_1_1GlobalShaderCacheParameterNames.html',1,'ne::ShaderCacheManager::GlobalShaderCacheParameterNames']]], + ['globalshaderresourcebinding_416',['GlobalShaderResourceBinding',['../classne_1_1GlobalShaderResourceBinding.html#ac41bfc2a986ce605df3dc1f72a7e4c14',1,'ne::GlobalShaderResourceBinding::GlobalShaderResourceBinding()'],['../classne_1_1GlobalShaderResourceBinding.html',1,'ne::GlobalShaderResourceBinding']]], + ['globalshaderresourcebindingmanager_417',['GlobalShaderResourceBindingManager',['../classne_1_1GlobalShaderResourceBindingManager.html#ae86dc66da2777c27675e1e45b0c8b2cc',1,'ne::GlobalShaderResourceBindingManager::GlobalShaderResourceBindingManager()'],['../classne_1_1GlobalShaderResourceBindingManager.html',1,'ne::GlobalShaderResourceBindingManager']]], + ['globalshaderresourcesrvs_418',['globalShaderResourceSrvs',['../structne_1_1DirectXPso_1_1InternalResources.html#ae8adbef06ce07fa05d1dedd5c79a875a',1,'ne::DirectXPso::InternalResources']]], + ['glslcomputeshaderinterface_419',['GlslComputeShaderInterface',['../classne_1_1GlslComputeShaderInterface.html#a3c7b25312c0eeea456770d0f7fc1dac1',1,'ne::GlslComputeShaderInterface::GlslComputeShaderInterface()'],['../classne_1_1GlslComputeShaderInterface.html',1,'ne::GlslComputeShaderInterface']]], + ['glslglobalshaderresourcebinding_420',['GlslGlobalShaderResourceBinding',['../classne_1_1GlslGlobalShaderResourceBinding.html#a480d229a4d6dc5189af68187e311a312',1,'ne::GlslGlobalShaderResourceBinding::GlslGlobalShaderResourceBinding()'],['../classne_1_1GlslGlobalShaderResourceBinding.html',1,'ne::GlslGlobalShaderResourceBinding']]], + ['glslshader_421',['GlslShader',['../classne_1_1GlslShader.html#a2ae5d270a554619cc5b4378c912b8d8b',1,'ne::GlslShader::GlslShader()'],['../classne_1_1GlslShader.html',1,'ne::GlslShader']]], + ['glslshadercachemanager_422',['GlslShaderCacheManager',['../classne_1_1GlslShaderCacheManager.html#ac42e9bc934ff4b50db12c2be7c81fc59',1,'ne::GlslShaderCacheManager::GlslShaderCacheManager()'],['../classne_1_1GlslShaderCacheManager.html',1,'ne::GlslShaderCacheManager']]], + ['glslshadertextureresourcebinding_423',['GlslShaderTextureResourceBinding',['../classne_1_1GlslShaderTextureResourceBinding.html#ad1944b0ed6f014801b6bfcf117d82808',1,'ne::GlslShaderTextureResourceBinding::GlslShaderTextureResourceBinding()'],['../classne_1_1GlslShaderTextureResourceBinding.html',1,'ne::GlslShaderTextureResourceBinding']]], + ['glslvertexformatdescription_424',['GlslVertexFormatDescription',['../classne_1_1GlslVertexFormatDescription.html',1,'ne']]], + ['gpudata_425',['GpuData',['../structne_1_1LightingShaderResourceManager_1_1GpuData.html',1,'ne::LightingShaderResourceManager']]], + ['gpuresource_426',['GpuResource',['../classne_1_1GpuResource.html#a794ee4dcd6089f0fd327b3698f8aceaf',1,'ne::GpuResource::GpuResource()'],['../classne_1_1GpuResource.html',1,'ne::GpuResource']]], + ['gpuresourcemanager_427',['GpuResourceManager',['../classne_1_1GpuResourceManager.html#a96cae9bf4c7387a9c7196b4a55d55a27',1,'ne::GpuResourceManager::GpuResourceManager()'],['../classne_1_1GpuResourceManager.html',1,'ne::GpuResourceManager']]], + ['gpuresources_428',['GpuResources',['../structne_1_1Material_1_1GpuResources.html',1,'ne::Material::GpuResources'],['../structne_1_1MeshNode_1_1GpuResources.html',1,'ne::MeshNode::GpuResources']]], + ['graphicspipelineregistry_429',['GraphicsPipelineRegistry',['../structne_1_1GraphicsPipelineRegistry.html',1,'ne']]], + ['guid_430',['Guid',['../classne_1_1Guid.html#a5053502ca718f99805488e8232b0f589',1,'ne::Guid::Guid()'],['../classne_1_1Guid.html',1,'ne::Guid']]] +]; diff --git a/search/all_7.js b/search/all_7.js new file mode 100644 index 000000000..32848d5bb --- /dev/null +++ b/search/all_7.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['handleresourcecreation_0',['handleResourceCreation',['../classne_1_1ShaderCpuWriteResourceBindingManager.html#af6d4a93fb5562dfb17feee2c90ef88a6',1,'ne::ShaderCpuWriteResourceBindingManager::handleResourceCreation()'],['../classne_1_1ShaderTextureResourceBindingManager.html#af6cdaa7ed156a6f464a4dcc629bb86f3',1,'ne::ShaderTextureResourceBindingManager::handleResourceCreation()']]], + ['heaptype_1',['heapType',['../classne_1_1DirectXDescriptorHeap.html#ab2522511d156c74628a0dd5b09c4a666',1,'ne::DirectXDescriptorHeap']]], + ['height_2',['height',['../structne_1_1Cone.html#a6c9e3ac2ff691d5b64a0784bb8c6b9f8',1,'ne::Cone']]], + ['hide_3',['hide',['../classne_1_1Window.html#a630e9e2b4cc602000a3153f0d3030b08',1,'ne::Window']]], + ['hlslcomputeshaderinterface_4',['HlslComputeShaderInterface',['../classne_1_1HlslComputeShaderInterface.html#a89f796b12bc0a0c8e5b224d569eb7873',1,'ne::HlslComputeShaderInterface::HlslComputeShaderInterface()'],['../classne_1_1HlslComputeShaderInterface.html',1,'ne::HlslComputeShaderInterface']]], + ['hlslglobalshaderresourcebinding_5',['HlslGlobalShaderResourceBinding',['../classne_1_1HlslGlobalShaderResourceBinding.html#a15034ae81523e54768fcfbf6f776ce09',1,'ne::HlslGlobalShaderResourceBinding::HlslGlobalShaderResourceBinding()'],['../classne_1_1HlslGlobalShaderResourceBinding.html',1,'ne::HlslGlobalShaderResourceBinding']]], + ['hlslshader_6',['HlslShader',['../classne_1_1HlslShader.html#a52534285c30371025fe925380b469e4b',1,'ne::HlslShader::HlslShader()'],['../classne_1_1HlslShader.html',1,'ne::HlslShader']]], + ['hlslshadercachemanager_7',['HlslShaderCacheManager',['../classne_1_1HlslShaderCacheManager.html#a5df914d1383c5b5e3c39958254081570',1,'ne::HlslShaderCacheManager::HlslShaderCacheManager()'],['../classne_1_1HlslShaderCacheManager.html',1,'ne::HlslShaderCacheManager']]], + ['hlslshadertextureresourcebinding_8',['HlslShaderTextureResourceBinding',['../classne_1_1HlslShaderTextureResourceBinding.html#a6c68f6b53eb496857c6de0a3b7c41c6e',1,'ne::HlslShaderTextureResourceBinding::HlslShaderTextureResourceBinding()'],['../classne_1_1HlslShaderTextureResourceBinding.html',1,'ne::HlslShaderTextureResourceBinding']]], + ['hlslvertexformatdescription_9',['HlslVertexFormatDescription',['../classne_1_1HlslVertexFormatDescription.html',1,'ne']]] +]; diff --git a/search/all_8.js b/search/all_8.js new file mode 100644 index 000000000..27e13b2da --- /dev/null +++ b/search/all_8.js @@ -0,0 +1,192 @@ +var searchData= +[ + ['iactiveindexcount_0',['iActiveIndexCount',['../structne_1_1ShaderArrayIndexManager_1_1InternalData.html#ac4543922a5899450368aed2f839a348b',1,'ne::ShaderArrayIndexManager::InternalData']]], + ['iactivetexturehandlecount_1',['iActiveTextureHandleCount',['../structne_1_1TextureManager_1_1TextureResource.html#ac4681d9855d66034e08ff75058fb4eb9',1,'ne::TextureManager::TextureResource']]], + ['ialiveresourcecount_2',['iAliveResourceCount',['../classne_1_1GpuResourceManager.html#a631d9913a4e39c9b3c136984d6eafbd6',1,'ne::GpuResourceManager']]], + ['iallocationid_3',['iAllocationId',['../structne_1_1KtxLoadingCallbackManager_1_1Data.html#a6866107b8968db1cb12985c569883337',1,'ne::KtxLoadingCallbackManager::Data']]], + ['iantialiasingsamplecount_4',['iAntialiasingSampleCount',['../classne_1_1RenderSettings.html#a427dd7d584682dab9fd9b0d72a41a218',1,'ne::RenderSettings']]], + ['iarraysize_5',['iArraySize',['../classne_1_1ShaderArrayIndexManager.html#a80cfc493b356e321d6d25dbf64f65f93',1,'ne::ShaderArrayIndexManager']]], + ['iavailablebindingid_6',['iAvailableBindingId',['../classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#adba97d6fe0225a124029e9518a6aec16',1,'ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>']]], + ['ibinaryfieldserializer_7',['IBinaryFieldSerializer',['../classne_1_1IBinaryFieldSerializer.html',1,'ne']]], + ['ibindlesstexturearraydescriptorcount_8',['iBindlessTextureArrayDescriptorCount',['../structne_1_1DescriptorConstants.html#af5253005f35744b9a7703b9edaaa3b50',1,'ne::DescriptorConstants']]], + ['ibindpoint_9',['iBindPoint',['../classne_1_1RootSignatureGenerator_1_1RootParameter.html#a63cc0c0d9fa6f9c22eb2bb6109583920',1,'ne::RootSignatureGenerator::RootParameter']]], + ['icapacity_10',['iCapacity',['../structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources.html#ac562105c0188204a1644a9893e2e5a9b',1,'ne::DynamicCpuWriteShaderResourceArray::InternalResources']]], + ['icapacitystepsize_11',['iCapacityStepSize',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a77ed3e7bbaf5d1f8bb6360dbf93ff9c1',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['icbvsrvuavdescriptorsize_12',['iCbvSrvUavDescriptorSize',['../classne_1_1HlslComputeShaderInterface.html#abfd44f3682e360f9af43ab7831ec2baa',1,'ne::HlslComputeShaderInterface']]], + ['icount_13',['iCount',['../classne_1_1RootSignatureGenerator_1_1RootParameter.html#a9e07e982d9608cd6af173b7607ef5187',1,'ne::RootSignatureGenerator::RootParameter']]], + ['iculledlightcount_14',['iCulledLightCount',['../structne_1_1RenderStatistics_1_1FrameTemporaryStatistics.html#af77243d789939aac616dfe88e38c90a9',1,'ne::RenderStatistics::FrameTemporaryStatistics']]], + ['iculledmeshcount_15',['iCulledMeshCount',['../structne_1_1RenderStatistics_1_1FrameTemporaryStatistics.html#a1cb09579bc34d6a4d106c0522b5012e9',1,'ne::RenderStatistics::FrameTemporaryStatistics']]], + ['icurrentimagesemaphore_16',['iCurrentImageSemaphore',['../classne_1_1VulkanRenderer.html#ad760e367dfdc6635cd2e4d8cd8c0f9ab',1,'ne::VulkanRenderer']]], + ['idefaultworldsize_17',['iDefaultWorldSize',['../classne_1_1Globals.html#ac9c490e97281e07bc3c5f3a6fa208a3e',1,'ne::Globals']]], + ['idepthonlyrenderpassdepthimageattachmentindex_18',['iDepthOnlyRenderPassDepthImageAttachmentIndex',['../classne_1_1VulkanRenderer.html#a7a02beb2a5ddf30d137775ae689b7e42',1,'ne::VulkanRenderer']]], + ['idepthonlyrenderpassdepthresolvetargetattachmentindex_19',['iDepthOnlyRenderPassDepthResolveTargetAttachmentIndex',['../classne_1_1VulkanRenderer.html#aaadb8a4947d61794e42e754432015a26',1,'ne::VulkanRenderer']]], + ['idescriptoroffsetindescriptors_20',['iDescriptorOffsetInDescriptors',['../classne_1_1DirectXDescriptor.html#a9d96255d7fa015cfb5cf1020e3bd33a2',1,'ne::DirectXDescriptor']]], + ['idescriptorsize_21',['iDescriptorSize',['../classne_1_1DirectXDescriptorHeap.html#ae40c806a0fbaa2c14c771573cba5541b',1,'ne::DirectXDescriptorHeap']]], + ['idirectionallightcount_22',['iDirectionalLightCount',['../structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData.html#ac0b4bbf6c89da2b0f8105e104b73c8ec',1,'ne::LightingShaderResourceManager::GeneralLightingShaderData']]], + ['idrawcallcount_23',['iDrawCallCount',['../structne_1_1RenderStatistics_1_1FrameTemporaryStatistics.html#ae9880c8c0ffeaaf1662af5982e322179',1,'ne::RenderStatistics::FrameTemporaryStatistics']]], + ['ielementcount_24',['iElementCount',['../classne_1_1UploadBuffer.html#ae35a838446a01a7961192d90b0a7c22f',1,'ne::UploadBuffer::iElementCount()'],['../classne_1_1GpuResource.html#ac0dcd4c2b7352d3d04ffdef966b0cf35',1,'ne::GpuResource::iElementCount()']]], + ['ielementsizeinbytes_25',['iElementSizeInBytes',['../classne_1_1ShaderLightArray.html#acc4c669a2419d42c01c780d5c7ce9484',1,'ne::ShaderLightArray::iElementSizeInBytes()'],['../classne_1_1DynamicCpuWriteShaderResourceArray.html#af70464f545138b705c620b7425b1318e',1,'ne::DynamicCpuWriteShaderResourceArray::iElementSizeInBytes()'],['../classne_1_1UploadBuffer.html#ac128a9a35daf3b0a13ed07475d2bee7d',1,'ne::UploadBuffer::iElementSizeInBytes()'],['../classne_1_1GpuResource.html#ad5c5dddda54b7541048b879fa5596617',1,'ne::GpuResource::iElementSizeInBytes()']]], + ['ifence_26',['iFence',['../structne_1_1DirectXFrameResource.html#a7392482ba9d0187ae8077fbd7761f6e9',1,'ne::DirectXFrameResource']]], + ['ifieldserializer_27',['IFieldSerializer',['../classne_1_1IFieldSerializer.html',1,'ne']]], + ['ifpslimit_28',['iFpsLimit',['../classne_1_1RenderSettings.html#ad2ec3ca65ca9ec3c720df7b3b42ed857',1,'ne::RenderSettings']]], + ['iframeresourcecount_29',['iFrameResourceCount',['../classne_1_1FrameResourceManager.html#ae257e43dd6fb325b380780a3b6238708',1,'ne::FrameResourceManager']]], + ['iframespersecond_30',['iFramesPerSecond',['../structne_1_1RenderStatistics_1_1FramesPerSecondInfo.html#a7818baef34f9efe44bac2f4d9a29eb5d',1,'ne::RenderStatistics::FramesPerSecondInfo']]], + ['igcrunintervalinsec_31',['iGcRunIntervalInSec',['../classne_1_1GameManager.html#ac5abc8e3a5c1c4b8249f3ac198981493',1,'ne::GameManager']]], + ['igraphicsfamilyindex_32',['iGraphicsFamilyIndex',['../structne_1_1VulkanRenderer_1_1QueueFamilyIndices.html#affc2afc694d338023ae98c8e2371b2c3',1,'ne::VulkanRenderer::QueueFamilyIndices']]], + ['iguidlength_33',['iGuidLength',['../classne_1_1Guid.html#ad89d0f5e20974999ffc7c8bd7acd5fb1',1,'ne::Guid']]], + ['iheapcapacity_34',['iHeapCapacity',['../structne_1_1DirectXDescriptorHeap_1_1InternalData.html#a98f87bc284e788556ab7835a31d8e3bc',1,'ne::DirectXDescriptorHeap::InternalData']]], + ['iheapgrowsize_35',['iHeapGrowSize',['../classne_1_1DirectXDescriptorHeap.html#af1077548bbd695a09d0805a69881f463',1,'ne::DirectXDescriptorHeap']]], + ['iheapsize_36',['iHeapSize',['../structne_1_1DirectXDescriptorHeap_1_1InternalData.html#abece015b552a01a15be81a1d39b12aec',1,'ne::DirectXDescriptorHeap::InternalData']]], + ['iindex_37',['iIndex',['../structne_1_1FrameResourceManager_1_1CurrentFrameResource.html#aa1b20fda217696a90d13d53848472d8c',1,'ne::FrameResourceManager::CurrentFrameResource']]], + ['iindexcount_38',['iIndexCount',['../structne_1_1MeshIndexBufferInfo.html#aa68e0d1f424c71f0af9d8be9df5c2646',1,'ne::MeshIndexBufferInfo']]], + ['iindexinarray_39',['iIndexInArray',['../classne_1_1DynamicCpuWriteShaderResourceArraySlot.html#a526670f53efd8c3cc11add52bf3ae5bd',1,'ne::DynamicCpuWriteShaderResourceArraySlot']]], + ['iindexintoarray_40',['iIndexIntoArray',['../classne_1_1ShaderLightArraySlot.html#abc1714d6b76b689a9769e4cf76cebdf8',1,'ne::ShaderLightArraySlot']]], + ['iindexintoshaderarray_41',['iIndexIntoShaderArray',['../classne_1_1ShaderArrayIndex.html#a5f617e253d427fb61d1efa7eb20c992c',1,'ne::ShaderArrayIndex']]], + ['ilastacquiredimageindex_42',['iLastAcquiredImageIndex',['../classne_1_1VulkanRenderer.html#a7fcba807d95a120c70073fc34ee004ac',1,'ne::VulkanRenderer']]], + ['ilastframeculledlightscount_43',['iLastFrameCulledLightsCount',['../structne_1_1RenderStatistics_1_1Counters.html#a402832003ea6ab3646e87cb253788b15',1,'ne::RenderStatistics::Counters']]], + ['ilastframeculledmeshescount_44',['iLastFrameCulledMeshesCount',['../structne_1_1RenderStatistics_1_1Counters.html#ac4b747970776fb9370a92de73be1db5b',1,'ne::RenderStatistics::Counters']]], + ['ilastframedrawcallcount_45',['iLastFrameDrawCallCount',['../structne_1_1RenderStatistics_1_1Counters.html#aa23fdc3f5311bca5cd9669e496194d7b',1,'ne::RenderStatistics::Counters']]], + ['ilastupdatetilecountx_46',['iLastUpdateTileCountX',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html#ab1a80c49a32a2de49f8be148872bd93e',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader']]], + ['ilastupdatetilecounty_47',['iLastUpdateTileCountY',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html#a775d56b669496697c76be7fef9b069e1',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader']]], + ['ilightgridtilecountx_48',['iLightGridTileCountX',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html#ab0b7c43cdb2ade335d3a6f6d0d4649d8',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources']]], + ['ilightgridtilecounty_49',['iLightGridTileCountY',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html#a633f73694bea9c5141b5b8b525fe5460',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources']]], + ['imainrenderpasscolorattachmentindex_50',['iMainRenderPassColorAttachmentIndex',['../classne_1_1VulkanRenderer.html#a1de07c4ad8280ce9dad181aa053bbc64',1,'ne::VulkanRenderer']]], + ['imainrenderpasscolorresolvetargetattachmentindex_51',['iMainRenderPassColorResolveTargetAttachmentIndex',['../classne_1_1VulkanRenderer.html#adf90eae1124256195e3940020aba0072',1,'ne::VulkanRenderer']]], + ['imainrenderpassdepthattachmentindex_52',['iMainRenderPassDepthAttachmentIndex',['../classne_1_1VulkanRenderer.html#a92ba65d4956388418e59bc6deb8b613e',1,'ne::VulkanRenderer']]], + ['imaximumshadernamelength_53',['iMaximumShaderNameLength',['../classne_1_1ShaderManager.html#a43b2d9ff0bf54dd02457e394a373e583',1,'ne::ShaderManager']]], + ['imaxlogfiles_54',['iMaxLogFiles',['../classne_1_1Logger.html#ac1c6d8c1568da0fdb5af4077130e004e',1,'ne::Logger']]], + ['imaxshaderconstantssizeinbytes_55',['iMaxShaderConstantsSizeInBytes',['../classne_1_1PipelineShaderConstantsManager.html#a5212ef8a1129197be5961f588c03e21f',1,'ne::PipelineShaderConstantsManager']]], + ['iminthreadcount_56',['iMinThreadCount',['../classne_1_1ThreadPool.html#ad61886cc465f83e718bfde4179f7bff7',1,'ne::ThreadPool']]], + ['imodifiers_57',['iModifiers',['../classne_1_1KeyboardModifiers.html#a89a334a630b7be5d4dab6d4129c8b606',1,'ne::KeyboardModifiers']]], + ['importmesh_58',['importMesh',['../classne_1_1MeshImporter.html#a3867621b8bf43182340ccac6d78847ce',1,'ne::MeshImporter']]], + ['importtexture_59',['importTexture',['../classne_1_1TextureImporter.html#a25aebfc1c8079c6e5013249a77df6b8c',1,'ne::TextureImporter']]], + ['imsaaqualitylevelscount_60',['iMsaaQualityLevelsCount',['../classne_1_1DirectXRenderer.html#a4f43b54789969661447b136ddaadf3ce',1,'ne::DirectXRenderer']]], + ['indextypeformat_61',['indexTypeFormat',['../classne_1_1VulkanRenderer.html#a97bd70cca7ae7440e0cbe802ca81447f',1,'ne::VulkanRenderer']]], + ['inextfreearrayindex_62',['iNextFreeArrayIndex',['../structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources.html#a5abefba5750f5c69221041c592037b17',1,'ne::DynamicCpuWriteShaderResourceArray::InternalResources']]], + ['inextfreeheapindex_63',['iNextFreeHeapIndex',['../structne_1_1DirectXDescriptorHeap_1_1InternalData.html#a9017d6711ced81f16d4868dcc43cb568',1,'ne::DirectXDescriptorHeap::InternalData']]], + ['inextfreeindex_64',['iNextFreeIndex',['../structne_1_1ShaderArrayIndexManager_1_1InternalData.html#a74dfb5dcba6aadecd499dac9fa07f146',1,'ne::ShaderArrayIndexManager::InternalData']]], + ['inextfreeindexinrange_65',['iNextFreeIndexInRange',['../structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData.html#af71e86eb892c26d938a2631be27cfd41',1,'ne::ContinuousDirectXDescriptorRange::InternalData']]], + ['info_66',['info',['../classne_1_1Logger.html#a0b8b03ae19b39a359b4116c369e23466',1,'ne::Logger::info()'],['../classne_1_1DesktopNotification.html#aab9ade90188338b7123e0caf5fc2712d',1,'ne::DesktopNotification::info()'],['../classne_1_1MessageBox.html#adb9a7ef1facd99643c8626eb894a13f6',1,'ne::MessageBox::info()']]], + ['initialize_67',['initialize',['../classne_1_1GameManager.html#a2cacc028e6ebb2353e44e00a12990f05',1,'ne::GameManager::initialize()'],['../classne_1_1CompressonatorSingleton.html#a6be025a845b117943553144f0b7594bf',1,'ne::CompressonatorSingleton::initialize()'],['../classne_1_1DirectXRenderer.html#abfdd71c29b6db28deef396aafb389b30',1,'ne::DirectXRenderer::initialize()'],['../structne_1_1DirectXFrameResource.html#a0a367f8468f93ef36c1d7679d80db721',1,'ne::DirectXFrameResource::initialize()'],['../classne_1_1DelayedPipelineResourcesCreation.html#a6f9ad038cfa944be463dd39c25ebd122',1,'ne::DelayedPipelineResourcesCreation::initialize()'],['../classne_1_1PipelineSharedPtr.html#a87f9db31874d4309c7ac82697188be47',1,'ne::PipelineSharedPtr::initialize(std::shared_ptr< Pipeline > pPipeline, Material *pMaterialThatUsesPipeline)'],['../classne_1_1PipelineSharedPtr.html#a9c28a317be914d621e869405921dbed6',1,'ne::PipelineSharedPtr::initialize(std::shared_ptr< Pipeline > pPipeline, ComputeShaderInterface *pComputeShaderThatUsesPipeline)'],['../structne_1_1FrameResource.html#a565314ed03b38cafbf0994d60bfd24bc',1,'ne::FrameResource::initialize()'],['../structne_1_1VulkanFrameResource.html#a2543cc63f995ab8e6e30ca4252983c34',1,'ne::VulkanFrameResource::initialize()'],['../classne_1_1VulkanRenderer.html#a3c46c72809425573ad938dfb4e131ccc',1,'ne::VulkanRenderer::initialize()'],['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html#a6e3d3463ca2331e68e1bcbd9d1fc22f1',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader::initialize()'],['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html#a66c4556e603b32d7babe396e289a7669',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader::initialize()']]], + ['initializedirectx_68',['initializeDirectX',['../classne_1_1DirectXRenderer.html#a7cac5d3cfd84b04f0a40c5ce05681d11',1,'ne::DirectXRenderer']]], + ['initializepipelines_69',['initializePipelines',['../classne_1_1Material.html#adf6582e8a2f026a45c61396bfe8f1feb',1,'ne::Material']]], + ['initializerenderer_70',['initializeRenderer',['../classne_1_1Renderer.html#a53240d9f15a95b2f5af5c219e7f65051',1,'ne::Renderer']]], + ['initializerendersettings_71',['initializeRenderSettings',['../classne_1_1Renderer.html#a7351705601b29bf309fda4bc9952b179',1,'ne::Renderer']]], + ['initializeresourcemanagers_72',['initializeResourceManagers',['../classne_1_1Renderer.html#a0108568bca8e4457756c6c51f51005e3',1,'ne::Renderer']]], + ['initializevulkan_73',['initializeVulkan',['../classne_1_1VulkanRenderer.html#a44bbc7d6b14f8a8b6a9ac9790ba1b8db',1,'ne::VulkanRenderer']]], + ['innerconeangle_74',['innerConeAngle',['../classne_1_1SpotlightNode.html#a714b4f0b154fe65652c9a0f65593871c',1,'ne::SpotlightNode']]], + ['inodeid_75',['iNodeId',['../classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a59a6a041fcd9f6026b8645bb6879ee81',1,'ne::NodeFunction< FunctionReturnType(FunctionArgs...)>::iNodeId()'],['../classne_1_1Node.html#aaee3df89d264e4e9514bbf394098fe7e',1,'ne::Node::iNodeId()']]], + ['inputmanager_76',['inputManager',['../classne_1_1GameManager.html#a39248f46950c1902149b386138f0eb7b',1,'ne::GameManager']]], + ['inputmanager_77',['InputManager',['../classne_1_1InputManager.html',1,'ne']]], + ['insert_78',['insert',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a36439f2bb2419b7d518e968c27df86bb',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['intensity_79',['intensity',['../structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData.html#adabadbd17ddbe14ed22dc6efd55a7cd9',1,'ne::DirectionalLightNode::DirecionalLightShaderData::intensity()'],['../classne_1_1DirectionalLightNode.html#a982292ca92956b6aa0c39439c490aadf',1,'ne::DirectionalLightNode::intensity()'],['../structne_1_1PointLightNode_1_1PointLightShaderData.html#a36ccaab44247d78e99090ba09f41b09b',1,'ne::PointLightNode::PointLightShaderData::intensity()'],['../classne_1_1PointLightNode.html#a753617180aa169a0311af08d844ab569',1,'ne::PointLightNode::intensity()'],['../structne_1_1SpotlightNode_1_1SpotlightShaderData.html#acdca544a41fab7c01411ec75b24f816a',1,'ne::SpotlightNode::SpotlightShaderData::intensity()'],['../classne_1_1SpotlightNode.html#ad2bc8175ae23247a18e47d79c384e2f7',1,'ne::SpotlightNode::intensity()']]], + ['internaldata_80',['InternalData',['../structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData.html',1,'ne::ContinuousDirectXDescriptorRange::InternalData'],['../structne_1_1DirectXDescriptorHeap_1_1InternalData.html',1,'ne::DirectXDescriptorHeap::InternalData'],['../structne_1_1ShaderArrayIndexManager_1_1InternalData.html',1,'ne::ShaderArrayIndexManager::InternalData'],['../structne_1_1VulkanShadowMapArrayIndexManager_1_1InternalData.html',1,'ne::VulkanShadowMapArrayIndexManager::InternalData']]], + ['internalresources_81',['InternalResources',['../structne_1_1DirectXPso_1_1InternalResources.html',1,'ne::DirectXPso::InternalResources'],['../structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources.html',1,'ne::DynamicCpuWriteShaderResourceArray::InternalResources'],['../structne_1_1Material_1_1InternalResources.html',1,'ne::Material::InternalResources'],['../structne_1_1ShaderPack_1_1InternalResources.html',1,'ne::ShaderPack::InternalResources'],['../structne_1_1ShadowMapHandle_1_1InternalResources.html',1,'ne::ShadowMapHandle::InternalResources'],['../structne_1_1ShadowMapManager_1_1InternalResources.html',1,'ne::ShadowMapManager::InternalResources'],['../structne_1_1VulkanPipeline_1_1InternalResources.html',1,'ne::VulkanPipeline::InternalResources']]], + ['into_5ftoml_82',['into_toml',['../structne_1_1ShaderDescription.html#a7aed6ce709ce5e2c55cc9c19c3367698',1,'ne::ShaderDescription']]], + ['inverseprojectionmatrix_83',['inverseProjectionMatrix',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ScreenToViewData.html#a88def20a7e59c121c0f7fdad58dce9e9',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ScreenToViewData']]], + ['invisiblemeshnodes_84',['invisibleMeshNodes',['../structne_1_1MeshNodesThatUseThisMaterial.html#add5c887811c2c85f3ad2be92276f1a9f',1,'ne::MeshNodesThatUseThisMaterial']]], + ['ipointlightcountincamerafrustum_85',['iPointLightCountInCameraFrustum',['../structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData.html#aa15659932635e4192b0977b78610e4c6',1,'ne::LightingShaderResourceManager::GeneralLightingShaderData']]], + ['ipointlightlistopaque_86',['iPointLightListOpaque',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1GlobalCountersIntoLightIndexList.html#a3085cf9001ee4d35cb29510f3c893e43',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::GlobalCountersIntoLightIndexList']]], + ['ipointlightlisttransparent_87',['iPointLightListTransparent',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1GlobalCountersIntoLightIndexList.html#ae64ac29ce4429d934bfdbe02560b9830',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::GlobalCountersIntoLightIndexList']]], + ['ipresentcountsincefpsupdate_88',['iPresentCountSinceFpsUpdate',['../structne_1_1RenderStatistics_1_1FramesPerSecondInfo.html#aa48ccd541f368001eea7856ea486c62d',1,'ne::RenderStatistics::FramesPerSecondInfo']]], + ['ipresentfamilyindex_89',['iPresentFamilyIndex',['../structne_1_1VulkanRenderer_1_1QueueFamilyIndices.html#a4bccb26bb18481a332a2aa8ceab2f0e9',1,'ne::VulkanRenderer::QueueFamilyIndices']]], + ['ipresentflags_90',['iPresentFlags',['../classne_1_1DirectXRenderer.html#ac1d666a4632cbbd91c353fe2ccb95817',1,'ne::DirectXRenderer']]], + ['ipresentsyncinterval_91',['iPresentSyncInterval',['../classne_1_1DirectXRenderer.html#af40f54365a2fb8c5cf78713da454e2bc',1,'ne::DirectXRenderer']]], + ['ipushconstantindex_92',['iPushConstantIndex',['../structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.html#a1e1cc195cfa93b926321b1a14e446015',1,'ne::GlslShaderTextureResourceBinding::PushConstantIndices']]], + ['irangecapacity_93',['iRangeCapacity',['../structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData.html#a45abe00b0d9cc4e98a5aa4e843330dae',1,'ne::ContinuousDirectXDescriptorRange::InternalData']]], + ['irangegrowsize_94',['iRangeGrowSize',['../classne_1_1ContinuousDirectXDescriptorRange.html#a6ee305a8a1e1c625340c1ca6e18c259d',1,'ne::ContinuousDirectXDescriptorRange']]], + ['irangestartinheap_95',['iRangeStartInHeap',['../structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData.html#a0fd7b807a2c65ed957ae71e4f363199f',1,'ne::ContinuousDirectXDescriptorRange::InternalData']]], + ['irecommendedswapchainbuffercount_96',['iRecommendedSwapChainBufferCount',['../classne_1_1Renderer.html#adf6d753503c44c85cc48f2ddcd891f84',1,'ne::Renderer']]], + ['irefreshratedenominator_97',['iRefreshRateDenominator',['../classne_1_1RenderSettings.html#a56076380e5b1260b7c653ed28c10aedc',1,'ne::RenderSettings']]], + ['irefreshratenumerator_98',['iRefreshRateNumerator',['../classne_1_1RenderSettings.html#a5b7ec944a98dd45b5ec9a755f99c8d65',1,'ne::RenderSettings']]], + ['irenderertype_99',['iRendererType',['../classne_1_1RenderSettings.html#ac9a7e1e4cd70be2c963742f76c9b9428',1,'ne::RenderSettings']]], + ['irenderresolutionheight_100',['iRenderResolutionHeight',['../classne_1_1RenderSettings.html#a7bc8493978b569dcc73222d058335045',1,'ne::RenderSettings']]], + ['irenderresolutionwidth_101',['iRenderResolutionWidth',['../classne_1_1RenderSettings.html#ae50a37057cd2172aa1b2df504dc1895a',1,'ne::RenderSettings']]], + ['irendertargetheight_102',['iRenderTargetHeight',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ScreenToViewData.html#af52eb3cc02fcded33a0473dc03bd2f01',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ScreenToViewData::iRenderTargetHeight()'],['../structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html#a88e8d36c0a658c32cea070aacf13cd37',1,'ne::CameraProperties::Data::ProjectionData::iRenderTargetHeight()']]], + ['irendertargetwidth_103',['iRenderTargetWidth',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ScreenToViewData.html#a2ffabdd059823afe05ef13e0c7794b82',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ScreenToViewData::iRenderTargetWidth()'],['../structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html#ad6bc8e651635d5be482760f51c343d85',1,'ne::CameraProperties::Data::ProjectionData::iRenderTargetWidth()']]], + ['iresourcedatasizeinbytes_104',['iResourceDataSizeInBytes',['../classne_1_1ShaderCpuWriteResourceBinding.html#ac2c2f454b05fc0e7a2d3f8dd30fd7b5b',1,'ne::ShaderCpuWriteResourceBinding']]], + ['is_5ftransparent_105',['is_transparent',['../structne_1_1StdStringHash.html#acaa12c39f92217a86fbe8e5ed6a4fea5',1,'ne::StdStringHash']]], + ['isaabbinfrustum_106',['isAabbInFrustum',['../structne_1_1Frustum.html#a05de473bc183c2c2eae1454d24624ccd',1,'ne::Frustum']]], + ['isaltpressed_107',['isAltPressed',['../classne_1_1KeyboardModifiers.html#a927825b0725ae0b6a4fbe65747f4c7f6',1,'ne::KeyboardModifiers']]], + ['isbehindplane_108',['isBehindPlane',['../structne_1_1AABB.html#a3fd60491f0d015bed761d2ee99f4d2e4',1,'ne::AABB::isBehindPlane()'],['../structne_1_1Cone.html#a8c42db27549d993b5d583d6b7bf50c82',1,'ne::Cone::isBehindPlane()'],['../structne_1_1Sphere.html#a4ea39373654a68322d77eaff724c892c',1,'ne::Sphere::isBehindPlane()']]], + ['isbeingdestroyed_109',['isBeingDestroyed',['../classne_1_1GameManager.html#afe8a00034541860f0595619e22381ea6',1,'ne::GameManager']]], + ['iscalledeveryframe_110',['isCalledEveryFrame',['../classne_1_1Node.html#afe0a06a7b62617e293529f2e0f89cd81',1,'ne::Node']]], + ['iscapslockpressed_111',['isCapsLockPressed',['../classne_1_1KeyboardModifiers.html#a4657332607cda9d1bf3e8ab76f36bec9',1,'ne::KeyboardModifiers']]], + ['ischildof_112',['isChildOf',['../classne_1_1Node.html#a7d48dcaa587589d0242d523d62bd9d27',1,'ne::Node']]], + ['iscomplete_113',['isComplete',['../structne_1_1VulkanRenderer_1_1QueueFamilyIndices.html#ab46d1ea43a48074394171f6e2385d4a1',1,'ne::VulkanRenderer::QueueFamilyIndices']]], + ['isconeinfrustum_114',['isConeInFrustum',['../structne_1_1Frustum.html#a56961fa9a498c0329070c93b6694d58c',1,'ne::Frustum']]], + ['iscontrolpressed_115',['isControlPressed',['../classne_1_1KeyboardModifiers.html#abeb9681e0fd5a60a1e3be33455123286',1,'ne::KeyboardModifiers']]], + ['isdepthbiasenabled_116',['isDepthBiasEnabled',['../classne_1_1PipelineConfiguration.html#a98ff43f107e6b379906da89db9eebe97',1,'ne::PipelineConfiguration::isDepthBiasEnabled()'],['../classne_1_1DepthPipelineConfiguration.html#a716607d5873fb9fb20f5bd18456b69d5',1,'ne::DepthPipelineConfiguration::isDepthBiasEnabled()']]], + ['isderivedfromserializable_117',['isDerivedFromSerializable',['../classne_1_1SerializableObjectFieldSerializer.html#a1608dcee1d57e8d2950120eaa060ac4b',1,'ne::SerializableObjectFieldSerializer']]], + ['isdevicesuitable_118',['isDeviceSuitable',['../classne_1_1VulkanRenderer.html#a81ad1d11a7975507e79ce9e1e9e7b610',1,'ne::VulkanRenderer']]], + ['isenabled_119',['isEnabled',['../classne_1_1Timer.html#a29a7fec318f11ccd58f3591d61829fed',1,'ne::Timer']]], + ['isfieldserializable_120',['isFieldSerializable',['../classne_1_1SerializableObjectFieldSerializer.html#a070f38772e32e7ba38fae023791268ef',1,'ne::SerializableObjectFieldSerializer']]], + ['isfieldtypesupported_121',['isFieldTypeSupported',['../classne_1_1VectorFieldSerializer.html#ac1dc541e313001d544ed2bc7583ccd68',1,'ne::VectorFieldSerializer::isFieldTypeSupported()'],['../classne_1_1UnorderedMapFieldSerializer.html#a12fb1b1c575f9e870444c1d00a86d7d8',1,'ne::UnorderedMapFieldSerializer::isFieldTypeSupported()'],['../classne_1_1StringFieldSerializer.html#a0f4ff779aac5f1e1d5f96bd178b091b5',1,'ne::StringFieldSerializer::isFieldTypeSupported()'],['../classne_1_1SerializableObjectFieldSerializer.html#a1ec9cc957f39f6d171ecaeb990d76474',1,'ne::SerializableObjectFieldSerializer::isFieldTypeSupported()'],['../classne_1_1PrimitiveFieldSerializer.html#ac94f362863bf8ec6923d7294036aafad',1,'ne::PrimitiveFieldSerializer::isFieldTypeSupported()'],['../classne_1_1IFieldSerializer.html#a78021093f6fcaa0b2def3112104f1791',1,'ne::IFieldSerializer::isFieldTypeSupported()'],['../classne_1_1IBinaryFieldSerializer.html#a1b8adda1b7aacde07b0d795b8262e884',1,'ne::IBinaryFieldSerializer::isFieldTypeSupported()'],['../classne_1_1GlmVecFieldSerializer.html#a10853202d56ccc075f98873af620f86b',1,'ne::GlmVecFieldSerializer::isFieldTypeSupported()'],['../classne_1_1MeshDataBinaryFieldSerializer.html#ab7712e6d4a47459f20e87b57c8426094',1,'ne::MeshDataBinaryFieldSerializer::isFieldTypeSupported()']]], + ['isfieldvalueequal_122',['isFieldValueEqual',['../classne_1_1StringFieldSerializer.html#a231538092259a22d71dd92ac46905691',1,'ne::StringFieldSerializer::isFieldValueEqual()'],['../classne_1_1VectorFieldSerializer.html#a07fa11d7ccd0673d227b9abab92e647d',1,'ne::VectorFieldSerializer::isFieldValueEqual()'],['../classne_1_1UnorderedMapFieldSerializer.html#af84dc8bd83cddb5cb93fdecc85bfffb5',1,'ne::UnorderedMapFieldSerializer::isFieldValueEqual()'],['../classne_1_1SerializableObjectFieldSerializer.html#a1e3866f8b86529cd0dac45ce264d4635',1,'ne::SerializableObjectFieldSerializer::isFieldValueEqual()'],['../classne_1_1PrimitiveFieldSerializer.html#ac12c52186fdf97f68d4eaf7328b16256',1,'ne::PrimitiveFieldSerializer::isFieldValueEqual()'],['../classne_1_1IFieldSerializer.html#ae68d18639d0969461e4ea8ecfb05eed4',1,'ne::IFieldSerializer::isFieldValueEqual()'],['../classne_1_1GlmVecFieldSerializer.html#a5de2375a9d9ae329236d49051cfbf979',1,'ne::GlmVecFieldSerializer::isFieldValueEqual()']]], + ['isglobalshadercacheoutdated_123',['isGlobalShaderCacheOutdated',['../classne_1_1ShaderCacheManager.html#ab660f563940cac6e8c55ff17cd82fa96',1,'ne::ShaderCacheManager']]], + ['isgpusupportsswapchain_124',['isGpuSupportsSwapChain',['../classne_1_1VulkanRenderer.html#a022a996bf0a4ffe8ff63a43b6af9b6e6',1,'ne::VulkanRenderer']]], + ['isgpusupportsuseddeviceextensions_125',['isGpuSupportsUsedDeviceExtensions',['../classne_1_1VulkanRenderer.html#aba975934c63978e6abe5d81a18a63a92',1,'ne::VulkanRenderer']]], + ['ishaderfilecodepage_126',['iShaderFileCodepage',['../classne_1_1HlslShader.html#a441a6b3006a0d6ab05c1f355ff3c6897',1,'ne::HlslShader']]], + ['ishadowmapindex_127',['iShadowMapIndex',['../structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData.html#a5c4d435ecb2e80fae4f1c916f6519375',1,'ne::DirectionalLightNode::DirecionalLightShaderData::iShadowMapIndex()'],['../structne_1_1SpotlightNode_1_1SpotlightShaderData.html#a3d34db8731ea7665b3984cab515312df',1,'ne::SpotlightNode::SpotlightShaderData::iShadowMapIndex()'],['../structne_1_1PointLightNode_1_1PointLightShaderData.html#ae8c15ccc100668afa0d36e4f0bdee2b4',1,'ne::PointLightNode::PointLightShaderData::iShadowMapIndex()']]], + ['ishadowmapsize_128',['iShadowMapSize',['../classne_1_1ShadowMapHandle.html#a87916d14c7fd2ed212c219f48c905cf6',1,'ne::ShadowMapHandle::iShadowMapSize()'],['../classne_1_1RenderSettings.html#ac3822167dd47b453706cbe4c91cd605f',1,'ne::RenderSettings::iShadowMapSize()']]], + ['isinitialized_129',['isInitialized',['../classne_1_1DirectXRenderer.html#ab985c5f8075d699d4c97844dbbf5fbff',1,'ne::DirectXRenderer::isInitialized()'],['../classne_1_1PipelineSharedPtr.html#a17943bbf4e292ae394e7e7dcae0139b7',1,'ne::PipelineSharedPtr::isInitialized()'],['../classne_1_1VulkanRenderer.html#aba9922f163c30de28d88bab2218841fd',1,'ne::VulkanRenderer::isInitialized()'],['../classne_1_1Renderer.html#a71f920f8d11ab50acac502c896161522',1,'ne::Renderer::isInitialized()']]], + ['iskeyused_130',['isKeyUsed',['../classne_1_1InputManager.html#ab21ead2b2fdc7f3149a8a787fe5ab1cf',1,'ne::InputManager']]], + ['islanguagespecificglobalcacheoutdated_131',['isLanguageSpecificGlobalCacheOutdated',['../classne_1_1ShaderCacheManager.html#a0397467d494307953652bbb3bc032b1c',1,'ne::ShaderCacheManager::isLanguageSpecificGlobalCacheOutdated()'],['../classne_1_1GlslShaderCacheManager.html#a8c5156f783168cd27e4a78aaf6f0c511',1,'ne::GlslShaderCacheManager::isLanguageSpecificGlobalCacheOutdated()'],['../classne_1_1HlslShaderCacheManager.html#a9b2ee2a8a96dd7b97bd36b1316ff9b2c',1,'ne::HlslShaderCacheManager::isLanguageSpecificGlobalCacheOutdated()']]], + ['ismacroshouldbeconsideredinconfiguration_132',['isMacroShouldBeConsideredInConfiguration',['../structne_1_1ShaderMacroConfigurations.html#aabf70371234d33cdf72268ab39ac1621',1,'ne::ShaderMacroConfigurations']]], + ['ismeshnodeadded_133',['isMeshNodeAdded',['../structne_1_1MeshNodesThatUseThisMaterial.html#a07aa808e0d4a11b9cdcf541bbce3952d',1,'ne::MeshNodesThatUseThisMaterial']]], + ['ismostinnertypeserializable_134',['isMostInnerTypeSerializable',['../classne_1_1VectorFieldSerializer.html#a6d92c3aeb1ea8adacc489f3cf19a1975',1,'ne::VectorFieldSerializer']]], + ['isnodespawned_135',['isNodeSpawned',['../classne_1_1GameManager.html#af183d6afc41ca41a4687f3073504f0fe',1,'ne::GameManager::isNodeSpawned()'],['../classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#af86056a25323eb76f3e8b722fe895a90',1,'ne::NodeFunction< FunctionReturnType(FunctionArgs...)>::isNodeSpawned()'],['../classne_1_1World.html#ace425331c8ebaf36b044733d05787941',1,'ne::World::isNodeSpawned()']]], + ['isnumlockpressed_136',['isNumLockPressed',['../classne_1_1KeyboardModifiers.html#a2cd866247a91c17d0e9f57b528763dfe',1,'ne::KeyboardModifiers']]], + ['ispace_137',['iSpace',['../classne_1_1RootSignatureGenerator_1_1RootParameter.html#a6f8eb2c5b7d6947480c690f06f6f047b',1,'ne::RootSignatureGenerator::RootParameter']]], + ['isparentof_138',['isParentOf',['../classne_1_1Node.html#ab4f66ab4ad5300e502fe964e8717f642',1,'ne::Node']]], + ['ispixelblendingenabled_139',['isPixelBlendingEnabled',['../classne_1_1PipelineConfiguration.html#af920980ff0dc2f664c0dc4857ae40d61',1,'ne::PipelineConfiguration::isPixelBlendingEnabled()'],['../classne_1_1ColorPipelineConfiguration.html#a89c4e0055032ef40592407231dd539c6',1,'ne::ColorPipelineConfiguration::isPixelBlendingEnabled()']]], + ['ispointbehindplane_140',['isPointBehindPlane',['../structne_1_1Plane.html#af85362ad4e9830f92d0557d56832f043',1,'ne::Plane']]], + ['ispotlightcountincamerafrustum_141',['iSpotLightCountInCameraFrustum',['../structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData.html#ab59835f523231d5e4e2f56a0ec715802',1,'ne::LightingShaderResourceManager::GeneralLightingShaderData']]], + ['ispotlightlistopaque_142',['iSpotlightListOpaque',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1GlobalCountersIntoLightIndexList.html#ac7c1184551bbd5edd0919677fdc9fec6',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::GlobalCountersIntoLightIndexList']]], + ['ispotlightlisttransparent_143',['iSpotlightListTransparent',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1GlobalCountersIntoLightIndexList.html#a90cec22c32e27aac02c517fed7e3c303',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::GlobalCountersIntoLightIndexList']]], + ['isreceivinginput_144',['isReceivingInput',['../classne_1_1Node.html#ab524a575030ca4f5a505c800680bcbb8',1,'ne::Node']]], + ['isrunning_145',['isRunning',['../classne_1_1Timer.html#a3cdc8fc9b982da60af83e9f0d9356f42',1,'ne::Timer']]], + ['isserializabledataequal_146',['isSerializableDataEqual',['../structne_1_1ShaderDescription.html#a9fcf588499ec4ad6be72988185806320',1,'ne::ShaderDescription']]], + ['isserializableobjectvalueequal_147',['isSerializableObjectValueEqual',['../classne_1_1SerializableObjectFieldSerializer.html#aeb49606637b47d3a2fe0747cd98beca9',1,'ne::SerializableObjectFieldSerializer']]], + ['isserialized_148',['isSerialized',['../classne_1_1Node.html#aca0a97f3a5893d137ef01aa155426706',1,'ne::Node']]], + ['isshadernamecanbeused_149',['isShaderNameCanBeUsed',['../classne_1_1ShaderManager.html#a87aa310492aa04059696943383403f7f',1,'ne::ShaderManager']]], + ['isshiftpressed_150',['isShiftPressed',['../classne_1_1KeyboardModifiers.html#a62b4f516ee15720f8f785941c0c27638',1,'ne::KeyboardModifiers']]], + ['isshrinkingpossible_151',['isShrinkingPossible',['../classne_1_1DirectXDescriptorHeap.html#aa60448ca77ae760185fb335c27055ba0',1,'ne::DirectXDescriptorHeap']]], + ['isspawned_152',['isSpawned',['../classne_1_1Node.html#ab452b5f388d94b20c652ae661caca5fd',1,'ne::Node']]], + ['issphereinfrustum_153',['isSphereInFrustum',['../structne_1_1Frustum.html#abd4917883366761005bf6538fa775279',1,'ne::Frustum']]], + ['isstopped_154',['isStopped',['../classne_1_1Timer.html#aae25a268580fe3b0b85026e05f706501',1,'ne::Timer']]], + ['isstorageresource_155',['isStorageResource',['../classne_1_1VulkanResource.html#a07219fb46896d75ea8d1e3c7c5d7851f',1,'ne::VulkanResource']]], + ['issuperpressed_156',['isSuperPressed',['../classne_1_1KeyboardModifiers.html#a6077c1a22262b43c3acdbef13efca237',1,'ne::KeyboardModifiers']]], + ['istable_157',['isTable',['../classne_1_1RootSignatureGenerator_1_1RootParameter.html#a1126962985b630af94ed15b1be0295e8',1,'ne::RootSignatureGenerator::RootParameter']]], + ['istartcount_158',['iStartCount',['../classne_1_1Timer.html#a4f6edada61d8ff396d3282155f00a7d7',1,'ne::Timer']]], + ['istaticsamplershaderregisterspace_159',['iStaticSamplerShaderRegisterSpace',['../classne_1_1HlslShader.html#a7a62c05906b0527e0994f00627dc1ecd',1,'ne::HlslShader']]], + ['istransparencyenabled_160',['isTransparencyEnabled',['../classne_1_1Material.html#a88305277fcf45b2d54ffdb0e7de731d2',1,'ne::Material']]], + ['istreedeserializedfromonefile_161',['isTreeDeserializedFromOneFile',['../classne_1_1Node.html#a42518527c8194051ae12f19603f6c32d',1,'ne::Node']]], + ['istypederivesfromserializable_162',['isTypeDerivesFromSerializable',['../classne_1_1SerializableObjectFieldSerializer.html#a8e712f2c8e7b3ddceb9ed1b8999374db',1,'ne::SerializableObjectFieldSerializer::isTypeDerivesFromSerializable(const std::string &sCanonicalTypeName)'],['../classne_1_1SerializableObjectFieldSerializer.html#a0b843de0c152918239c68497b4170cc2',1,'ne::SerializableObjectFieldSerializer::isTypeDerivesFromSerializable(const std::string &sCanonicalTypeName, const rfk::Namespace *pNamespace)']]], + ['isusedasstorageresource_163',['isUsedAsStorageResource',['../classne_1_1VulkanResource.html#aa0af1158058bedb20deafa96a8997810',1,'ne::VulkanResource']]], + ['isuseddepthimageformatsupported_164',['isUsedDepthImageFormatSupported',['../classne_1_1VulkanRenderer.html#a535406f12090a37dbdbb0c3de64c6265',1,'ne::VulkanRenderer']]], + ['isusingtransparency_165',['isUsingTransparency',['../classne_1_1Material.html#acb5fc8093b532caee4ab8293f4964198',1,'ne::Material']]], + ['isvisible_166',['isVisible',['../classne_1_1MeshNode.html#a4ec40629a5cb70acb3aa3172349e6440',1,'ne::MeshNode']]], + ['isvsyncenabled_167',['isVsyncEnabled',['../classne_1_1RenderSettings.html#a4cf567c98f20cb832aa86a9b1599fbe8',1,'ne::RenderSettings']]], + ['iswapchainimagecount_168',['iSwapChainImageCount',['../classne_1_1VulkanRenderer.html#a35cf860ba0c5cfee1a3b004e3059ebfb',1,'ne::VulkanRenderer']]], + ['itexturefilteringquality_169',['iTextureFilteringQuality',['../classne_1_1RenderSettings.html#ae5c511701fbd3147ca339e24b566e666',1,'ne::RenderSettings']]], + ['itexturequality_170',['iTextureQuality',['../classne_1_1RenderSettings.html#ab4b97e60b6559de291a42269f09d7111',1,'ne::RenderSettings']]], + ['ithreadgroupcountx_171',['iThreadGroupCountX',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo.html#ab308689d21b89bb2d959738cbd07db69',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeInfo::iThreadGroupCountX()'],['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ThreadGroupCount.html#ae59b42d87754c9cd787badbf8074a0f7',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ThreadGroupCount::iThreadGroupCountX()'],['../classne_1_1ComputeShaderInterface.html#a731c89afc984daccc2878980f5b97cdc',1,'ne::ComputeShaderInterface::iThreadGroupCountX()']]], + ['ithreadgroupcounty_172',['iThreadGroupCountY',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo.html#a05cdc88b9ef5a580ee0edd3b0b818895',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeInfo::iThreadGroupCountY()'],['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ThreadGroupCount.html#a74ae3fce8beb05bbbce933fe3ce0092b',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ThreadGroupCount::iThreadGroupCountY()'],['../classne_1_1ComputeShaderInterface.html#a1fe7ed137867517cef4af303b0a4d172',1,'ne::ComputeShaderInterface::iThreadGroupCountY()']]], + ['ithreadgroupcountz_173',['iThreadGroupCountZ',['../classne_1_1ComputeShaderInterface.html#ab6713b855cc72f2c52e1bbc32aa8f014',1,'ne::ComputeShaderInterface']]], + ['itilecountx_174',['iTileCountX',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo.html#a2a268ccaa59b26f42be4adaa12db4213',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeInfo']]], + ['itilecounty_175',['iTileCountY',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo.html#aba29ebf7c5fc7617c3d02d4997886c36',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeInfo']]], + ['itimetowaitinms_176',['iTimeToWaitInMs',['../classne_1_1Timer.html#ab048f0fbea3639ce1d3ad0bd65df8b10',1,'ne::Timer']]], + ['itotalcompileshadersqueries_177',['iTotalCompileShadersQueries',['../classne_1_1ShaderManager.html#a5d7f0bf39c48d5471354b19b0327289a',1,'ne::ShaderManager']]], + ['itotalerrorsproduced_178',['iTotalErrorsProduced',['../classne_1_1Logger.html#a2ee58c634be79f990ee30f937df86968',1,'ne::Logger']]], + ['itotalspawnednodecount_179',['iTotalSpawnedNodeCount',['../classne_1_1World.html#a451d19d7fc0a0efed1a9d5fa6487b071',1,'ne::World']]], + ['itotalwarningsproduced_180',['iTotalWarningsProduced',['../classne_1_1Logger.html#a90cb6e0647c9c69f385ac47d61c48e79',1,'ne::Logger']]], + ['iusedframeresourceindex_181',['iUsedFrameResourceIndex',['../structne_1_1VulkanRenderer_1_1SwapChainImageSemaphores.html#a4e9bc205927d11f458f3a47b7c2a2b8a',1,'ne::VulkanRenderer::SwapChainImageSemaphores']]], + ['iusedvulkanversion_182',['iUsedVulkanVersion',['../classne_1_1VulkanRenderer.html#af53d53fb3c12c28b016fda142cdd18f2',1,'ne::VulkanRenderer']]], + ['ivertexbindingindex_183',['iVertexBindingIndex',['../classne_1_1GlslVertexFormatDescription.html#a1d2995f3588a5a3bd35c94a80f550cf2',1,'ne::GlslVertexFormatDescription']]], + ['iverticalfov_184',['iVerticalFov',['../structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html#ab63d3652630d8073529bc03773ddbbf0',1,'ne::CameraProperties::Data::ProjectionData']]], + ['iwindowcounter_185',['iWindowCounter',['../classne_1_1UniqueValueGenerator.html#ae16ef42b2a2dfef4f4870e92a61b5830',1,'ne::UniqueValueGenerator']]], + ['iwindowheight_186',['iWindowHeight',['../structne_1_1WindowBuilderParameters.html#a9d00cd85cb9bc7efc459b53ab514deba',1,'ne::WindowBuilderParameters']]], + ['iwindowwidth_187',['iWindowWidth',['../structne_1_1WindowBuilderParameters.html#a6944bee601f7f3e31ddd5eb1edecf232',1,'ne::WindowBuilderParameters']]], + ['iworldsize_188',['iWorldSize',['../classne_1_1World.html#a518158f015375dcb5f04855f6788e21a',1,'ne::World']]] +]; diff --git a/search/all_9.js b/search/all_9.js new file mode 100644 index 000000000..c2324cfe9 --- /dev/null +++ b/search/all_9.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['key_0',['key',['../classne_1_1ActionState.html#a888b3a37b42550ea2386cd76dcea7c64',1,'ne::ActionState']]], + ['keyboardmodifiers_1',['KeyboardModifiers',['../classne_1_1KeyboardModifiers.html#ac6499c1eb8b60f0409da92e2c6d00009',1,'ne::KeyboardModifiers::KeyboardModifiers()'],['../classne_1_1KeyboardModifiers.html',1,'ne::KeyboardModifiers']]], + ['ktxloadingcallbackmanager_2',['KtxLoadingCallbackManager',['../classne_1_1KtxLoadingCallbackManager.html',1,'ne']]] +]; diff --git a/search/all_a.js b/search/all_a.js new file mode 100644 index 000000000..a410125cc --- /dev/null +++ b/search/all_a.js @@ -0,0 +1,26 @@ +var searchData= +[ + ['lastgcruntime_0',['lastGcRunTime',['../classne_1_1GameManager.html#a4ec6375e182f0531eb7a876989c14079',1,'ne::GameManager']]], + ['lastinputdirection_1',['lastInputDirection',['../classne_1_1EditorCameraNode.html#ae6670c5d3a43c866dbf2e83be6c9de54',1,'ne::EditorCameraNode']]], + ['lastmousexpos_2',['lastMouseXPos',['../classne_1_1Window.html#a2af20ae73e4912e23eae719b990aea48',1,'ne::Window']]], + ['lastmouseypos_3',['lastMouseYPos',['../classne_1_1Window.html#af0d0185848117ddf9db81403906bb5a5',1,'ne::Window']]], + ['leftface_4',['leftFace',['../structne_1_1Frustum.html#adb80de7ffb1dec114d59c258f5225579',1,'ne::Frustum']]], + ['lightarrays_5',['lightArrays',['../classne_1_1LightingShaderResourceManager.html#a2a8824a1de419499ed7840799a6e6e0c',1,'ne::LightingShaderResourceManager']]], + ['lightarrays_6',['LightArrays',['../structne_1_1LightingShaderResourceManager_1_1LightArrays.html',1,'ne::LightingShaderResourceManager']]], + ['lightcullingcomputeshader_7',['LightCullingComputeShader',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader.html',1,'ne::LightingShaderResourceManager::ComputeShaderData']]], + ['lightcullingcomputeshaderdata_8',['lightCullingComputeShaderData',['../classne_1_1LightingShaderResourceManager.html#a963ab704e0ca1083b20c8c0c80a6ed2b',1,'ne::LightingShaderResourceManager']]], + ['lightingshaderresourcemanager_9',['LightingShaderResourceManager',['../classne_1_1LightingShaderResourceManager.html#a11c44f87535d3904794827c653a85037',1,'ne::LightingShaderResourceManager::LightingShaderResourceManager()'],['../classne_1_1LightingShaderResourceManager.html',1,'ne::LightingShaderResourceManager']]], + ['lightsinfrustum_10',['lightsInFrustum',['../structne_1_1ShaderLightArray_1_1Resources.html#a9b6e286352f97221b5162cf3b28e1df4',1,'ne::ShaderLightArray::Resources']]], + ['lightsinfrustum_11',['LightsInFrustum',['../structne_1_1Renderer_1_1LightsInFrustum.html',1,'ne::Renderer']]], + ['loadfile_12',['loadFile',['../classne_1_1ConfigManager.html#a27345612b4ee53e154f32e951b219438',1,'ne::ConfigManager::loadFile(ConfigCategory category, std::string_view sFileName)'],['../classne_1_1ConfigManager.html#afeefdbbcf2983386c6cec36a3ebfa323',1,'ne::ConfigManager::loadFile(std::filesystem::path pathToConfigFile)']]], + ['loadfromfile_13',['loadFromFile',['../classne_1_1InputManager.html#a111e1ab4912627fdf82871608f880c1d',1,'ne::InputManager']]], + ['loadnodetreeasworld_14',['loadNodeTreeAsWorld',['../classne_1_1GameManager.html#afd64862dab6ec2d0dbdd9d6da07925c5',1,'ne::GameManager::loadNodeTreeAsWorld()'],['../classne_1_1World.html#a21e2601b4b9099bb4ef7a60a5a829c15',1,'ne::World::loadNodeTreeAsWorld()'],['../classne_1_1GameInstance.html#a9ac06b2413452cc4d3e041159cc0edd6',1,'ne::GameInstance::loadNodeTreeAsWorld()']]], + ['loadshaderdatafromdiskifnotloaded_15',['loadShaderDataFromDiskIfNotLoaded',['../classne_1_1GlslShader.html#aaca9528861ac6de8bdcd94980f939686',1,'ne::GlslShader::loadShaderDataFromDiskIfNotLoaded()'],['../classne_1_1HlslShader.html#aa071a4a5a1de69cedf489a678a530b60',1,'ne::HlslShader::loadShaderDataFromDiskIfNotLoaded()']]], + ['loadtextureandcreatenewtexturehandle_16',['loadTextureAndCreateNewTextureHandle',['../classne_1_1TextureManager.html#a7042b3ef960770a80fda068024123295',1,'ne::TextureManager']]], + ['loadtexturefromdisk_17',['loadTextureFromDisk',['../classne_1_1DirectXResourceManager.html#ab9b690e2c5578e44eb7adf100ffcac75',1,'ne::DirectXResourceManager::loadTextureFromDisk()'],['../classne_1_1GpuResourceManager.html#ab0184f8dfd018f63c08ae0bbe568517d',1,'ne::GpuResourceManager::loadTextureFromDisk()'],['../classne_1_1VulkanResourceManager.html#a0e25dc8a6b3a5ab4ed44fd96a6d4b11d',1,'ne::VulkanResourceManager::loadTextureFromDisk()']]], + ['localspaceinformation_18',['LocalSpaceInformation',['../structne_1_1SpatialNode_1_1LocalSpaceInformation.html',1,'ne::SpatialNode']]], + ['localspaceorigininworldspace_19',['localSpaceOriginInWorldSpace',['../classne_1_1CameraNode.html#a5c06303ff1bbddcf29e14c44f3f359e7',1,'ne::CameraNode']]], + ['location_20',['location',['../structne_1_1Cone.html#a365be3dfbd5b16d8fe3678726285a133',1,'ne::Cone']]], + ['lockchildren_21',['lockChildren',['../classne_1_1Node.html#a57649518a54e42668196d18741376397',1,'ne::Node']]], + ['logger_22',['Logger',['../classne_1_1Logger.html',1,'ne']]] +]; diff --git a/search/all_b.js b/search/all_b.js new file mode 100644 index 000000000..7139d6020 --- /dev/null +++ b/search/all_b.js @@ -0,0 +1,133 @@ +var searchData= +[ + ['mainthreadid_0',['mainThreadId',['../classne_1_1Window.html#ac16b6cf29d2c53d5cf8a972a7b3783c7',1,'ne::Window::mainThreadId()'],['../classne_1_1GameManager.html#aaa4102525036bd884533c415e7052998',1,'ne::GameManager::mainThreadId()']]], + ['makeactive_1',['makeActive',['../classne_1_1CameraNode.html#ae921cadd3b2cec25e034d01e9e9b35e3',1,'ne::CameraNode']]], + ['makemultipleof256_2',['makeMultipleOf256',['../classne_1_1DirectXResourceManager.html#ae0a340ec70ed691ca3f23b628404cdf9',1,'ne::DirectXResourceManager']]], + ['makertvresourcesfromswapchainbuffer_3',['makeRtvResourcesFromSwapChainBuffer',['../classne_1_1DirectXResourceManager.html#af1c93f50b5afb8cf81bd50f338a1e27e',1,'ne::DirectXResourceManager']]], + ['makesureprojectionmatrixandclipplanesareuptodate_4',['makeSureProjectionMatrixAndClipPlanesAreUpToDate',['../classne_1_1CameraProperties.html#a7b1491114da9fc4e459fafa2328ef4ce',1,'ne::CameraProperties']]], + ['makesureviewmatrixisuptodate_5',['makeSureViewMatrixIsUpToDate',['../classne_1_1CameraProperties.html#a5ef5cedc69836074ceecedc91682084f',1,'ne::CameraProperties']]], + ['manual_6',['Manual',['../index.html',1,'']]], + ['markasneedsupdate_7',['markAsNeedsUpdate',['../classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html#afe9f2436048cef54a38ea54976ae6834',1,'ne::ShaderCpuWriteResourceBindingUniquePtr::markAsNeedsUpdate()'],['../classne_1_1ShaderLightArraySlot.html#a21fe2de979e1fa1585836d4ea2f26cfb',1,'ne::ShaderLightArraySlot::markAsNeedsUpdate()']]], + ['markdescriptorasunused_8',['markDescriptorAsUnused',['../classne_1_1ContinuousDirectXDescriptorRange.html#a6669cb1a0aac2f621ddaf91693132c80',1,'ne::ContinuousDirectXDescriptorRange']]], + ['markresourceasneedsupdate_9',['markResourceAsNeedsUpdate',['../classne_1_1ShaderCpuWriteResourceBindingManager.html#a6a61adffdf7d6a8c3c6984c1e6996812',1,'ne::ShaderCpuWriteResourceBindingManager']]], + ['markshadercpuwriteresourceasneedsupdate_10',['markShaderCpuWriteResourceAsNeedsUpdate',['../classne_1_1Material.html#a2092ab1b66f459ce1b690e053488a5aa',1,'ne::Material']]], + ['markshadercpuwriteresourcetobecopiedtogpu_11',['markShaderCpuWriteResourceToBeCopiedToGpu',['../classne_1_1MeshNode.html#a7a8fe299045faa38a4ac4fa458753422',1,'ne::MeshNode']]], + ['markshaderdatatobecopiedtogpu_12',['markShaderDataToBeCopiedToGpu',['../classne_1_1DirectionalLightNode.html#a3c9be0e86ae2e5f1579c0e77ac0eaf34',1,'ne::DirectionalLightNode::markShaderDataToBeCopiedToGpu()'],['../classne_1_1PointLightNode.html#ae64d1c2e27549c93100744b194770d6e',1,'ne::PointLightNode::markShaderDataToBeCopiedToGpu()'],['../classne_1_1SpotlightNode.html#abd3bfa9de6cc0f55938e69a31371f82e',1,'ne::SpotlightNode::markShaderDataToBeCopiedToGpu()']]], + ['markshadertoberemoved_13',['markShaderToBeRemoved',['../classne_1_1ShaderManager.html#a005b1de2299a6257502f772992ab52b5',1,'ne::ShaderManager']]], + ['markshadowpassdatatobecopiedtogpu_14',['markShadowPassDataToBeCopiedToGpu',['../classne_1_1DirectionalLightNode.html#aff21b412eff00fd17a16e8413d376d3c',1,'ne::DirectionalLightNode::markShadowPassDataToBeCopiedToGpu()'],['../classne_1_1PointLightNode.html#a8639059b33f82370c811ec13b744eb42',1,'ne::PointLightNode::markShadowPassDataToBeCopiedToGpu()']]], + ['markslotasneedsupdate_15',['markSlotAsNeedsUpdate',['../classne_1_1ShaderLightArray.html#a3a1ca46441de4fdd45cb53339968fecb',1,'ne::ShaderLightArray']]], + ['markslotasnolongerbeingused_16',['markSlotAsNoLongerBeingUsed',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#acef60155637b8544bdc5d3d78d5ef901',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['material_17',['Material',['../classne_1_1Material.html#a0970484073a752aed3a6704a85be04b4',1,'ne::Material::Material()'],['../classne_1_1Material.html#af88101c98cc96028ca9cfb4f6fbebf96',1,'ne::Material::Material(const std::string &sVertexShaderName, const std::string &sPixelShaderName, bool bUseTransparency, PipelineManager *pPipelineManager, const std::string &sMaterialName="Material")'],['../classne_1_1Material.html',1,'ne::Material']]], + ['materialinfrustuminfo_18',['MaterialInFrustumInfo',['../structne_1_1Renderer_1_1MeshesInFrustum_1_1MaterialInFrustumInfo.html',1,'ne::Renderer::MeshesInFrustum']]], + ['materialshaderconstants_19',['MaterialShaderConstants',['../structne_1_1Material_1_1MaterialShaderConstants.html',1,'ne::Material']]], + ['mathhelpers_20',['MathHelpers',['../classne_1_1MathHelpers.html',1,'ne']]], + ['maxconeangle_21',['maxConeAngle',['../classne_1_1SpotlightNode.html#a1a8692bd15e11e49ee528b08a52ef9ba',1,'ne::SpotlightNode']]], + ['maxdepth_22',['maxDepth',['../classne_1_1Renderer.html#ad9880997d2cd513e4326240ee67990ac',1,'ne::Renderer']]], + ['maximize_23',['maximize',['../classne_1_1Window.html#ae3e0d90c39725216ccdcee6a1261e05e',1,'ne::Window']]], + ['memorymap_24',['memoryMap',['../classne_1_1KtxLoadingCallbackManager.html#ab6de741eb467287f35fc43e5afef0c08',1,'ne::KtxLoadingCallbackManager']]], + ['memoryunmap_25',['memoryUnmap',['../classne_1_1KtxLoadingCallbackManager.html#a2b60b0942fa48882ef7f7f5f5518f05b',1,'ne::KtxLoadingCallbackManager']]], + ['mesh_26',['mesh',['../structne_1_1MeshNode_1_1GpuResources.html#acc81b1bb266f1e7318dc387ae2a7b881',1,'ne::MeshNode::GpuResources']]], + ['mesh_27',['Mesh',['../structne_1_1MeshNode_1_1GpuResources_1_1Mesh.html',1,'ne::MeshNode::GpuResources']]], + ['meshdata_28',['MeshData',['../classne_1_1MeshData.html#ad4b137ea298731fcca0c60b88bbc21ed',1,'ne::MeshData::MeshData(MeshData &&) noexcept=default'],['../classne_1_1MeshData.html#a1a7851ff413252527772d106b347b749',1,'ne::MeshData::MeshData(const MeshData &)=default']]], + ['meshdata_29',['meshData',['../classne_1_1MeshNode.html#a3b250fb570ed3679ac1e52c84e6455a3',1,'ne::MeshNode']]], + ['meshdata_30',['MeshData',['../classne_1_1MeshData.html',1,'ne']]], + ['meshdatabinaryfieldserializer_31',['MeshDataBinaryFieldSerializer',['../classne_1_1MeshDataBinaryFieldSerializer.html',1,'ne']]], + ['meshesinfrustum_32',['MeshesInFrustum',['../structne_1_1Renderer_1_1MeshesInFrustum.html',1,'ne::Renderer']]], + ['meshesinfrustumlastframe_33',['meshesInFrustumLastFrame',['../classne_1_1Renderer.html#a4cb42c81756f39a1027566ee0bbb538e',1,'ne::Renderer']]], + ['meshimporter_34',['MeshImporter',['../classne_1_1MeshImporter.html',1,'ne']]], + ['meshindex_5ft_35',['meshindex_t',['../classne_1_1MeshData.html#a88563415e42ed43b4271643048796e29',1,'ne::MeshData']]], + ['meshindexbufferinfo_36',['MeshIndexBufferInfo',['../structne_1_1MeshIndexBufferInfo.html#a1fcff22232579cd89333e6275e5cb81c',1,'ne::MeshIndexBufferInfo::MeshIndexBufferInfo()=default'],['../structne_1_1MeshIndexBufferInfo.html#a79e3e38504242948f9c8d0de18715bb0',1,'ne::MeshIndexBufferInfo::MeshIndexBufferInfo(GpuResource *pIndexBuffer, unsigned int iIndexCount)'],['../structne_1_1MeshIndexBufferInfo.html',1,'ne::MeshIndexBufferInfo']]], + ['meshinfrustuminfo_37',['MeshInFrustumInfo',['../structne_1_1Renderer_1_1MeshesInFrustum_1_1MeshInFrustumInfo.html',1,'ne::Renderer::MeshesInFrustum']]], + ['meshnode_38',['MeshNode',['../classne_1_1MeshNode.html#a6ed41a6566e750963f8cb3f8f5eb1963',1,'ne::MeshNode::MeshNode()'],['../structne_1_1EngineShaderNames_1_1MeshNode.html',1,'ne::EngineShaderNames::MeshNode'],['../structne_1_1EngineShaders_1_1MeshNode.html',1,'ne::EngineShaders::MeshNode'],['../classne_1_1MeshNode.html',1,'ne::MeshNode']]], + ['meshnodeglslvertexformatdescription_39',['MeshNodeGlslVertexFormatDescription',['../classne_1_1MeshNodeGlslVertexFormatDescription.html',1,'ne']]], + ['meshnodehlslvertexformatdescription_40',['MeshNodeHlslVertexFormatDescription',['../classne_1_1MeshNodeHlslVertexFormatDescription.html',1,'ne']]], + ['meshnodesthatusethismaterial_41',['MeshNodesThatUseThisMaterial',['../structne_1_1MeshNodesThatUseThisMaterial.html',1,'ne']]], + ['meshshaderconstants_42',['MeshShaderConstants',['../structne_1_1MeshNode_1_1MeshShaderConstants.html',1,'ne::MeshNode']]], + ['meshvertex_43',['MeshVertex',['../structne_1_1MeshVertex.html#af564b14fe07bd82d61d4c20057cf8bb7',1,'ne::MeshVertex::MeshVertex(const MeshVertex &)=default'],['../structne_1_1MeshVertex.html#abefb00d0d68519994453e8c082939712',1,'ne::MeshVertex::MeshVertex(MeshVertex &&) noexcept=default'],['../structne_1_1MeshVertex.html',1,'ne::MeshVertex']]], + ['messagebox_44',['MessageBox',['../classne_1_1MessageBox.html',1,'ne']]], + ['mindepth_45',['minDepth',['../classne_1_1Renderer.html#aa8f0fb305d230c3a12fa0e1dedb79212',1,'ne::Renderer']]], + ['minimize_46',['minimize',['../classne_1_1Window.html#ac49be1d6be65f2f8285848741387f8e2',1,'ne::Window']]], + ['minimumclipplanedistance_47',['minimumClipPlaneDistance',['../structne_1_1CameraProperties_1_1Data.html#a3c100ca604cf3b53410fe4bcc7baf971',1,'ne::CameraProperties::Data']]], + ['minuskey_48',['minusKey',['../classne_1_1AxisState.html#a61729c5d8d492f9f3f68d8569c0e27d0',1,'ne::AxisState']]], + ['modifyactioneventkey_49',['modifyActionEventKey',['../classne_1_1InputManager.html#a70778280bab2b2758296a142de947bc8',1,'ne::InputManager']]], + ['modifyaxiseventkey_50',['modifyAxisEventKey',['../classne_1_1InputManager.html#aa820c1355bd36cceca43ceabb4c7bd8e',1,'ne::InputManager']]], + ['movementspeed_51',['movementSpeed',['../classne_1_1EditorCameraNode.html#af1f1b3192b4f0e8a0fb12fc22c606fed',1,'ne::EditorCameraNode']]], + ['msaasamplecount_52',['msaaSampleCount',['../classne_1_1VulkanRenderer.html#a9b42f573c4591e2778172503d8cd4d0d',1,'ne::VulkanRenderer']]], + ['mtxactionevents_53',['mtxActionEvents',['../classne_1_1InputManager.html#a5388c0d7c25236b79a2494121f8d2d76',1,'ne::InputManager']]], + ['mtxactivebindings_54',['mtxActiveBindings',['../classne_1_1GlobalShaderResourceBindingManager.html#a0175cd03b1d869d52c13ebb532dea084',1,'ne::GlobalShaderResourceBindingManager']]], + ['mtxactivecamera_55',['mtxActiveCamera',['../classne_1_1CameraManager.html#a43472a1a4b0ef3935dd4c82d526ab99b',1,'ne::CameraManager']]], + ['mtxassignedshaders_56',['mtxAssignedShaders',['../classne_1_1ShaderUser.html#a42d469bd25703e5efc4042b8e7e39215',1,'ne::ShaderUser']]], + ['mtxaxisevents_57',['mtxAxisEvents',['../classne_1_1InputManager.html#aca78bfc65d4592fdc2e73c2b29232daf',1,'ne::InputManager']]], + ['mtxbinaryfieldserializers_58',['mtxBinaryFieldSerializers',['../classne_1_1FieldSerializerManager.html#a4e94a4341496e0dbb2ca5cbff6d118e0',1,'ne::FieldSerializerManager']]], + ['mtxbindedactionevents_59',['mtxBindedActionEvents',['../classne_1_1Node.html#a531525f4d208ca0f45eb5492c3debb54',1,'ne::Node::mtxBindedActionEvents()'],['../classne_1_1GameInstance.html#a9a2b201b1cad1e756f4ecfaa4c019d36',1,'ne::GameInstance::mtxBindedActionEvents()']]], + ['mtxbindedaxisevents_60',['mtxBindedAxisEvents',['../classne_1_1GameInstance.html#af280f5e74bace192c883afce7bbfa179',1,'ne::GameInstance::mtxBindedAxisEvents()'],['../classne_1_1Node.html#a8913f0acc86e74780a053109f4ccee96',1,'ne::Node::mtxBindedAxisEvents()']]], + ['mtxcallbacks_61',['mtxCallbacks',['../classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#ad6e940c530716142832a91432c786952',1,'ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>']]], + ['mtxcallbackstoadd_62',['mtxCallbacksToAdd',['../classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a81482c16a2389e577c48b84dd61b7eaf',1,'ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>']]], + ['mtxcallbackstoremove_63',['mtxCallbacksToRemove',['../classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a42b58752ab6a036c172fa0126ed66863',1,'ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>']]], + ['mtxchildnodes_64',['mtxChildNodes',['../classne_1_1Node.html#a39d161e8751a61d6c23cca65bc22847d',1,'ne::Node']]], + ['mtxcompiledbytecode_65',['mtxCompiledBytecode',['../classne_1_1HlslShader.html#af695cac90908c7aa75559db55cd32dfd',1,'ne::HlslShader']]], + ['mtxcomputeshadersthatusethispipeline_66',['mtxComputeShadersThatUseThisPipeline',['../classne_1_1Pipeline.html#afdec478a2fb8ef8209bf994bb39a7962',1,'ne::Pipeline']]], + ['mtxcpuwriteshaderresourcearrays_67',['mtxCpuWriteShaderResourceArrays',['../classne_1_1DynamicCpuWriteShaderResourceArrayManager.html#aa2ba191348b2a3c44ad938c0ac6d0d04',1,'ne::DynamicCpuWriteShaderResourceArrayManager']]], + ['mtxcreatedbroadcasters_68',['mtxCreatedBroadcasters',['../classne_1_1Node.html#af274ceec79c97784089f06bd8a95dc34',1,'ne::Node']]], + ['mtxcreatedtimers_69',['mtxCreatedTimers',['../classne_1_1Node.html#ada864abad4d11488fd6652b6f6a6e77f',1,'ne::Node::mtxCreatedTimers()'],['../classne_1_1GameInstance.html#a57d67eeab693b01a3feea546861566ee',1,'ne::GameInstance::mtxCreatedTimers()']]], + ['mtxcurrentfencevalue_70',['mtxCurrentFenceValue',['../classne_1_1DirectXRenderer.html#a1c7cb9cdb3aa6146806e6e8ea54f36f8',1,'ne::DirectXRenderer']]], + ['mtxcurrentframeresource_71',['mtxCurrentFrameResource',['../classne_1_1FrameResourceManager.html#a61c89d9208f648479c167b9c6ab2d4e6',1,'ne::FrameResourceManager']]], + ['mtxdata_72',['mtxData',['../classne_1_1ShaderArrayIndexManager.html#a5e8515cc71bac8b449dcac6ecd4e4f53',1,'ne::ShaderArrayIndexManager::mtxData()'],['../classne_1_1CameraProperties.html#a756d10f45555f0aafdc9d695009b302d',1,'ne::CameraProperties::mtxData()'],['../classne_1_1KtxLoadingCallbackManager.html#a3777ddc52bd2ce8514b7a78ec6d5db65',1,'ne::KtxLoadingCallbackManager::mtxData()']]], + ['mtxdeferredtasks_73',['mtxDeferredTasks',['../classne_1_1GameManager.html#a53a45277ed8a6afce0344d355feb2543',1,'ne::GameManager']]], + ['mtxdescriptorsetlayoutinfo_74',['mtxDescriptorSetLayoutInfo',['../classne_1_1GlslShader.html#a45e33212794299c2b2378df1e292d89f',1,'ne::GlslShader']]], + ['mtxfieldserializers_75',['mtxFieldSerializers',['../classne_1_1FieldSerializerManager.html#af270ed06b02afe7a6c719af3fcbf7c38',1,'ne::FieldSerializerManager']]], + ['mtxfirsttickgroup_76',['mtxFirstTickGroup',['../structne_1_1CalledEveryFrameNodes.html#a572be858f765b3f11cf6fa21431d53b6',1,'ne::CalledEveryFrameNodes']]], + ['mtxframeconstants_77',['mtxFrameConstants',['../classne_1_1Renderer.html#a1669af9fc5bb3e90aacba3093c9e6b6f',1,'ne::Renderer']]], + ['mtxfrustumcullinglightstimeinms_78',['mtxFrustumCullingLightsTimeInMs',['../structne_1_1RenderStatistics_1_1FrameTemporaryStatistics.html#a4a8cbbada6cd75ec67c6b462d2666fed',1,'ne::RenderStatistics::FrameTemporaryStatistics']]], + ['mtxfrustumcullingmeshestimeinms_79',['mtxFrustumCullingMeshesTimeInMs',['../structne_1_1RenderStatistics_1_1FrameTemporaryStatistics.html#ae8e8f123d886cf61167513c0948c975e',1,'ne::RenderStatistics::FrameTemporaryStatistics']]], + ['mtxgpudata_80',['mtxGpuData',['../classne_1_1LightingShaderResourceManager.html#af31cb4524db9f7665c482e1d380fd626',1,'ne::LightingShaderResourceManager']]], + ['mtxgpuresources_81',['mtxGpuResources',['../classne_1_1Material.html#a03ecb1cda7f941de8a208c79a731fb35',1,'ne::Material::mtxGpuResources()'],['../classne_1_1MeshNode.html#a4f182285c84099513809acf961169c12',1,'ne::MeshNode::mtxGpuResources()']]], + ['mtxgraphicspipelines_82',['mtxGraphicsPipelines',['../classne_1_1PipelineManager.html#aeace69b8742a79b77faa24ac51841d46',1,'ne::PipelineManager']]], + ['mtxheapdescriptors_83',['mtxHeapDescriptors',['../classne_1_1DirectXResource.html#ad5fcc47d76cb6ab3b214b5dc41e0ada3',1,'ne::DirectXResource']]], + ['mtxinternaldata_84',['mtxInternalData',['../classne_1_1ContinuousDirectXDescriptorRange.html#a8706d1d376a81add52a155d61b9b8417',1,'ne::ContinuousDirectXDescriptorRange::mtxInternalData()'],['../classne_1_1DirectXDescriptorHeap.html#ab1d2ab617880d628ef21750774779bf2',1,'ne::DirectXDescriptorHeap::mtxInternalData()'],['../classne_1_1VulkanShadowMapArrayIndexManager.html#aae132b978197a4c86e12e85f956d1c6c',1,'ne::VulkanShadowMapArrayIndexManager::mtxInternalData()']]], + ['mtxinternalresources_85',['mtxInternalResources',['../classne_1_1VulkanPipeline.html#a08db272e8993e637b9eef09c00664e72',1,'ne::VulkanPipeline::mtxInternalResources()'],['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a63d6257bfa63b25ab971fa75a8c38c97',1,'ne::DynamicCpuWriteShaderResourceArray::mtxInternalResources()'],['../classne_1_1ShaderPack.html#a3e3f35470603f26915aad667807d52ea',1,'ne::ShaderPack::mtxInternalResources()'],['../classne_1_1Material.html#ac9b5deaf64d3c2e268338b3ca2653d67',1,'ne::Material::mtxInternalResources()'],['../classne_1_1DirectXPso.html#a77195b4ea5e5c135d3c9f0fc9fba207b',1,'ne::DirectXPso::mtxInternalResources()'],['../classne_1_1ShadowMapManager.html#af787913862612c7c18dae345fb0cd1f7',1,'ne::ShadowMapManager::mtxInternalResources()']]], + ['mtxisactive_86',['mtxIsActive',['../classne_1_1CameraNode.html#a797519c82747e6c3255ca833e5d55bcf',1,'ne::CameraNode']]], + ['mtxiscalledeveryframe_87',['mtxIsCalledEveryFrame',['../classne_1_1Node.html#aa406867a33c8b3347df81e329c46b5b8',1,'ne::Node']]], + ['mtxisdestroyed_88',['mtxIsDestroyed',['../classne_1_1World.html#ab872caeb40404a9476f4e2e0f5a53099',1,'ne::World']]], + ['mtxisreceivinginput_89',['mtxIsReceivingInput',['../classne_1_1Node.html#ab250eceeeddc12965d14b29ad0f29ae7',1,'ne::Node']]], + ['mtxisspawned_90',['mtxIsSpawned',['../classne_1_1Node.html#a104dc3bb8409c8d592fdc320c776d9fc',1,'ne::Node']]], + ['mtxlocalspace_91',['mtxLocalSpace',['../classne_1_1SpatialNode.html#ada55492444a50c37c75d960d612400c8',1,'ne::SpatialNode']]], + ['mtxmaterialsthatusethispipeline_92',['mtxMaterialsThatUseThisPipeline',['../classne_1_1Pipeline.html#a356e051dc0a1c064de3231c7d50b1f1f',1,'ne::Pipeline']]], + ['mtxmeshdata_93',['mtxMeshData',['../classne_1_1MeshNode.html#af5a5728de87baff4232c78322627435a',1,'ne::MeshNode']]], + ['mtxparentnode_94',['mtxParentNode',['../classne_1_1Node.html#a272a651fe2aa6d290b6d6adbccf31bf3',1,'ne::Node']]], + ['mtxpointlightsinfrustum_95',['mtxPointLightsInFrustum',['../structne_1_1Renderer_1_1LightsInFrustum.html#a68a90f23d6cb60e1536dcd381ce92445',1,'ne::Renderer::LightsInFrustum']]], + ['mtxpushconstantindices_96',['mtxPushConstantIndices',['../classne_1_1GlslShaderTextureResourceBinding.html#aa9761cda29f21727e708d17bcfbe524d',1,'ne::GlslShaderTextureResourceBinding']]], + ['mtxreceivinginputnodes_97',['mtxReceivingInputNodes',['../classne_1_1World.html#ae18707fd0edc0922715542b5bca62cdc',1,'ne::World']]], + ['mtxregisteredshadowmaps_98',['mtxRegisteredShadowMaps',['../classne_1_1DirectXShadowMapArrayIndexManager.html#a82078a70bb424fbc09ad4a9db8fa30b0',1,'ne::DirectXShadowMapArrayIndexManager']]], + ['mtxrendersettings_99',['mtxRenderSettings',['../classne_1_1Renderer.html#aa18f4e0a48198ef495aa7f4d9863ebc8',1,'ne::Renderer']]], + ['mtxresourcememory_100',['mtxResourceMemory',['../classne_1_1VulkanResource.html#a08ed78ff874115fd27193ec035640ed5',1,'ne::VulkanResource']]], + ['mtxresources_101',['mtxResources',['../structne_1_1PipelineManager_1_1ComputePipelines.html#ad5cf2fef4ef51e069d473d7282917408',1,'ne::PipelineManager::ComputePipelines::mtxResources()'],['../classne_1_1ShadowMapHandle.html#a5777a0bed24a146642a00cd1e7fb8f85',1,'ne::ShadowMapHandle::mtxResources()'],['../classne_1_1ShaderLightArray.html#a15f7189a54f5809dcc61dbd61eb8bb39',1,'ne::ShaderLightArray::mtxResources()']]], + ['mtxrootnode_102',['mtxRootNode',['../classne_1_1World.html#ae89d2d0ea54ef393dc1d8a179bd550e3',1,'ne::World']]], + ['mtxrootsignatureinfo_103',['mtxRootSignatureInfo',['../classne_1_1HlslShader.html#ac79b32a972640b83aa631593fff2e45d',1,'ne::HlslShader']]], + ['mtxrwrenderresources_104',['mtxRwRenderResources',['../classne_1_1Renderer.html#a03ce849e9f2411be3f015c626d98f38f',1,'ne::Renderer']]], + ['mtxsecondtickgroup_105',['mtxSecondTickGroup',['../structne_1_1CalledEveryFrameNodes.html#a8276f45216e91ebde6336c94fcb72ad0',1,'ne::CalledEveryFrameNodes']]], + ['mtxshaderconfiguration_106',['mtxShaderConfiguration',['../classne_1_1Renderer.html#a00aa8bed57037f29671d584067f1ab9a',1,'ne::Renderer']]], + ['mtxshaderconstantsdata_107',['mtxShaderConstantsData',['../classne_1_1Pipeline.html#a0960d5e2e5e4877ae19bb6550ff4dfa7',1,'ne::Pipeline']]], + ['mtxshadercpuwriteresources_108',['mtxShaderCpuWriteResources',['../classne_1_1ShaderCpuWriteResourceBindingManager.html#a91e46393a14c37f89c38bff6a9947601',1,'ne::ShaderCpuWriteResourceBindingManager']]], + ['mtxshaderdata_109',['mtxShaderData',['../classne_1_1DirectionalLightNode.html#aaefd19ac77e5ae3a9c16b33f43e4dbdc',1,'ne::DirectionalLightNode::mtxShaderData()'],['../classne_1_1PointLightNode.html#a730cd8da0898b2d8c6f22e4483cdab58',1,'ne::PointLightNode::mtxShaderData()'],['../classne_1_1SpotlightNode.html#aabdc7730c31fd4de721d6a84d5e44de8',1,'ne::SpotlightNode::mtxShaderData()'],['../classne_1_1ShaderManager.html#ab348a57a97036ac786b40b061cc6e307',1,'ne::ShaderManager::mtxShaderData()']]], + ['mtxshadermaterialdataconstants_110',['mtxShaderMaterialDataConstants',['../classne_1_1Material.html#a3f9064b25a8c5ada13136dcfeb073da7',1,'ne::Material']]], + ['mtxshadermeshdataconstants_111',['mtxShaderMeshDataConstants',['../classne_1_1MeshNode.html#afa524ac9c5eda6a9e704e833e804c69e',1,'ne::MeshNode']]], + ['mtxshadertextureresources_112',['mtxShaderTextureResources',['../classne_1_1ShaderTextureResourceBindingManager.html#a39bc00cee6fc45ffed9f6cf568845b69',1,'ne::ShaderTextureResourceBindingManager']]], + ['mtxshape_113',['mtxShape',['../classne_1_1PointLightNode.html#aa2c7675f8f35358b85b1da96a2a5c601',1,'ne::PointLightNode::mtxShape()'],['../classne_1_1SpotlightNode.html#a6743c0d574660f74b48b160357823d93',1,'ne::SpotlightNode::mtxShape()']]], + ['mtxspatialparent_114',['mtxSpatialParent',['../classne_1_1SpatialNode.html#a5d77f27055f3775057ab0bf195b2c84a',1,'ne::SpatialNode']]], + ['mtxspawnedenvironmentnode_115',['mtxSpawnedEnvironmentNode',['../classne_1_1Renderer.html#afbd472501b5c6b883d6b9b0d1d434f28',1,'ne::Renderer']]], + ['mtxspawnedmeshnodesthatusethismaterial_116',['mtxSpawnedMeshNodesThatUseThisMaterial',['../classne_1_1Material.html#a4b40c304da2d5ca6098d421fc60116ef',1,'ne::Material']]], + ['mtxspawnednodes_117',['mtxSpawnedNodes',['../classne_1_1World.html#a1d739d49d68f5464ec85bc67f51f8292',1,'ne::World']]], + ['mtxspawnedownernode_118',['mtxSpawnedOwnerNode',['../classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a928215dd35eeb35f2fddb0b15548100f',1,'ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>']]], + ['mtxspirvbytecode_119',['mtxSpirvBytecode',['../classne_1_1GlslShader.html#a5a4a945cec000f32228a1f3ca46fe6c3',1,'ne::GlslShader']]], + ['mtxspotlightsinfrustum_120',['mtxSpotlightsInFrustum',['../structne_1_1Renderer_1_1LightsInFrustum.html#a759a0d5ceaafd9723aff2b3c135dac30',1,'ne::Renderer::LightsInFrustum']]], + ['mtxtaskqueue_121',['mtxTaskQueue',['../classne_1_1ThreadPool.html#a258d22803923f0dcf4086fdb58a387e2',1,'ne::ThreadPool']]], + ['mtxterminatetimerthread_122',['mtxTerminateTimerThread',['../classne_1_1Timer.html#a76cdf05b5af8f11c7f5dca674a058be0',1,'ne::Timer']]], + ['mtxtextureresources_123',['mtxTextureResources',['../classne_1_1TextureManager.html#a2c1c3469db309be020ef8114de540b90',1,'ne::TextureManager']]], + ['mtxtimewhenstarted_124',['mtxTimeWhenStarted',['../classne_1_1Timer.html#a8e0ce3323dbb910c5c24402e7eed7124',1,'ne::Timer']]], + ['mtxuintshaderconstantoffsets_125',['mtxUintShaderConstantOffsets',['../classne_1_1ShaderCpuWriteResourceBinding.html#aeb55d3e832595e7c09be95535e98a33a',1,'ne::ShaderCpuWriteResourceBinding']]], + ['mtxusedpipelinedescriptorranges_126',['mtxUsedPipelineDescriptorRanges',['../classne_1_1HlslShaderTextureResourceBinding.html#a3d27a9b290c65e7192b2d30c46f34d79',1,'ne::HlslShaderTextureResourceBinding']]], + ['mtxusedtexture_127',['mtxUsedTexture',['../classne_1_1GlslShaderTextureResourceBinding.html#ad8d3fed85b5b7719de489029a716260a',1,'ne::GlslShaderTextureResourceBinding::mtxUsedTexture()'],['../classne_1_1HlslShaderTextureResourceBinding.html#a84d54d200a7425ad069855b72675b3e6',1,'ne::HlslShaderTextureResourceBinding::mtxUsedTexture()']]], + ['mtxworld_128',['mtxWorld',['../classne_1_1GameManager.html#a2402a69e89bbfe77f7d4bcf576a16ac4',1,'ne::GameManager']]], + ['mtxworldmatrix_129',['mtxWorldMatrix',['../classne_1_1SpatialNode.html#a624839dac964e36060f5cf43922549d9',1,'ne::SpatialNode']]] +]; diff --git a/search/all_c.js b/search/all_c.js new file mode 100644 index 000000000..1836049f0 --- /dev/null +++ b/search/all_c.js @@ -0,0 +1,25 @@ +var searchData= +[ + ['nearclipplanedistance_0',['nearClipPlaneDistance',['../structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html#a618597a171de8adfa110494a43250d18',1,'ne::CameraProperties::Data::ProjectionData']]], + ['nearclipplaneheight_1',['nearClipPlaneHeight',['../structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html#a10015aa6b9050ef7082c34219b5d0b14',1,'ne::CameraProperties::Data::ProjectionData']]], + ['nearface_2',['nearFace',['../structne_1_1Frustum.html#a4e9d9f6af438342db734b836561e42a9',1,'ne::Frustum']]], + ['node_3',['Node',['../classne_1_1Node.html',1,'ne::Node'],['../classne_1_1Node.html#a869b03190702ccef1f85bad536bf1a4b',1,'ne::Node::Node()'],['../classne_1_1Node.html#a21e8ff8b016048cb83b9bbfbe822a7e7',1,'ne::Node::Node(const std::string &sName)']]], + ['nodefunction_4',['NodeFunction',['../classne_1_1NodeFunction.html',1,'ne::NodeFunction< FunctionReturnType, FunctionArgs >'],['../classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a87be6ed619ef19fc70ffc839032a0f4b',1,'ne::NodeFunction< FunctionReturnType(FunctionArgs...)>::NodeFunction(size_t iNodeId, const std::function< FunctionReturnType(FunctionArgs...)> &callback)'],['../classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a0b583d1cffcec3340d969eab61cd2aaa',1,'ne::NodeFunction< FunctionReturnType(FunctionArgs...)>::NodeFunction(const NodeFunction &other)=default'],['../classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#ac0d22b7a67c10fd9a1cea9cfa2677bc9',1,'ne::NodeFunction< FunctionReturnType(FunctionArgs...)>::NodeFunction(NodeFunction &&other) noexcept=default']]], + ['nodefunction_3c_20functionreturntype_28functionargs_2e_2e_2e_29_3e_5',['NodeFunction< FunctionReturnType(FunctionArgs...)>',['../classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html',1,'ne']]], + ['nodenotificationbroadcaster_6',['NodeNotificationBroadcaster',['../classne_1_1NodeNotificationBroadcaster.html',1,'ne']]], + ['nodenotificationbroadcaster_3c_20functionreturntype_28functionargs_2e_2e_2e_29_3e_7',['NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>',['../classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html',1,'ne']]], + ['nodenotificationbroadcasterbase_8',['NodeNotificationBroadcasterBase',['../classne_1_1NodeNotificationBroadcasterBase.html',1,'ne']]], + ['nolongerusedarrayindices_9',['noLongerUsedArrayIndices',['../structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources.html#ab18686fe27601abdce1d7828288028ac',1,'ne::DynamicCpuWriteShaderResourceArray::InternalResources']]], + ['nolongeruseddescriptorindices_10',['noLongerUsedDescriptorIndices',['../structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData.html#a6aec94b8685f66832c39811146cccb0b',1,'ne::ContinuousDirectXDescriptorRange::InternalData']]], + ['nolongerusedindices_11',['noLongerUsedIndices',['../structne_1_1ShaderArrayIndexManager_1_1InternalData.html#a1519589d2b693c484268701737964b2b',1,'ne::ShaderArrayIndexManager::InternalData']]], + ['nolongerusedsingledescriptorindices_12',['noLongerUsedSingleDescriptorIndices',['../structne_1_1DirectXDescriptorHeap_1_1InternalData.html#a259415752a9e21d5dad959b15ddbab2b',1,'ne::DirectXDescriptorHeap::InternalData']]], + ['normal_13',['normal',['../structne_1_1MeshVertex.html#a3cb4ef9b868401205f185f9bbaf56783',1,'ne::MeshVertex::normal()'],['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Plane.html#ad0597c15418c0152a2d50c68be5f3b5f',1,'ne::LightingShaderResourceManager::ComputeShaderData::Plane::normal()'],['../structne_1_1Plane.html#a9e3dae347c4cc72d2e14089bdad100a3',1,'ne::Plane::normal()']]], + ['normalizesafely_14',['normalizeSafely',['../classne_1_1MathHelpers.html#aaff69b1d4a3834f7a4a5df8fd3565510',1,'ne::MathHelpers']]], + ['normalizevalue_15',['normalizeValue',['../classne_1_1MathHelpers.html#a20352d2ad41452e1a4d4cb432c79aa7e',1,'ne::MathHelpers']]], + ['normalmatrix_16',['normalMatrix',['../structne_1_1MeshNode_1_1MeshShaderConstants.html#af4f40275001b0c5eddbaa8a1f4b9416d',1,'ne::MeshNode::MeshShaderConstants']]], + ['notifyaboutattachedtonewparent_17',['notifyAboutAttachedToNewParent',['../classne_1_1Node.html#a8472729af29f2e90d0a4ee334953e783',1,'ne::Node']]], + ['notifyaboutdetachingfromparent_18',['notifyAboutDetachingFromParent',['../classne_1_1Node.html#a9854b81a46b4c0063a0447a8a42dac0c',1,'ne::Node']]], + ['notifyrendereraboutchangedsettings_19',['notifyRendererAboutChangedSettings',['../classne_1_1RenderSettings.html#a1ef3a5f77f2b71b60fdfc97c886479ca',1,'ne::RenderSettings']]], + ['notifyshaderbytecodeloadedintomemory_20',['notifyShaderBytecodeLoadedIntoMemory',['../classne_1_1Shader.html#ad1f2db6459f9b9c7adf6a2b09938d7e9',1,'ne::Shader']]], + ['notifyshaderbytecodereleasedfrommemory_21',['notifyShaderBytecodeReleasedFromMemory',['../classne_1_1Shader.html#a7919d112571cf03c409fa713a741192a',1,'ne::Shader']]] +]; diff --git a/search/all_d.js b/search/all_d.js new file mode 100644 index 000000000..f847b2fc2 --- /dev/null +++ b/search/all_d.js @@ -0,0 +1,92 @@ +var searchData= +[ + ['onactivecamerachanged_0',['onActiveCameraChanged',['../classne_1_1Renderer.html#a51e0749c507f29e83f11ad2e5b5cdc18',1,'ne::Renderer']]], + ['onafterallpipelinesrefreshedresources_1',['onAfterAllPipelinesRefreshedResources',['../classne_1_1ShaderResourceBindingBase.html#aeeb20e00c70013812394fc38f24677c8',1,'ne::ShaderResourceBindingBase::onAfterAllPipelinesRefreshedResources()'],['../classne_1_1ShaderCpuWriteResourceBinding.html#a7a7beba941bc6302e57e78b6a259e265',1,'ne::ShaderCpuWriteResourceBinding::onAfterAllPipelinesRefreshedResources()'],['../classne_1_1HlslShaderTextureResourceBinding.html#ad64467fd97a647a3b480de5aedfe5961',1,'ne::HlslShaderTextureResourceBinding::onAfterAllPipelinesRefreshedResources()'],['../classne_1_1GlslShaderTextureResourceBinding.html#acdcec2ee9f7c94f9dad2bbe1637a7505',1,'ne::GlslShaderTextureResourceBinding::onAfterAllPipelinesRefreshedResources()']]], + ['onafterattachedtonewparent_2',['onAfterAttachedToNewParent',['../classne_1_1Node.html#ab7e67ce1bfe3c1015630301e3c53411f',1,'ne::Node::onAfterAttachedToNewParent()'],['../classne_1_1SpatialNode.html#ae883c06ca2bc4bd917de5486cbbda0d4',1,'ne::SpatialNode::onAfterAttachedToNewParent()'],['../classne_1_1EditorCameraNode.html#a08e4e5ace5a7e1f0c9267a3482f7f4ca',1,'ne::EditorCameraNode::onAfterAttachedToNewParent()']]], + ['onafterdeserialized_3',['onAfterDeserialized',['../classne_1_1Material.html#a7946faee0b5231b38196c9cc8c2dffd4',1,'ne::Material::onAfterDeserialized()'],['../classne_1_1RenderSettings.html#a9107963ba60801c525dcfecdc3d0d293',1,'ne::RenderSettings::onAfterDeserialized()'],['../classne_1_1SpatialNode.html#a4ef72e0c9e17fba2aeae88a87c424a84',1,'ne::SpatialNode::onAfterDeserialized()'],['../classne_1_1Serializable.html#a00002d59e5d0dcda6e53c20b59947150',1,'ne::Serializable::onAfterDeserialized()'],['../classne_1_1PointLightNode.html#ae2b46df4a1cf71aafb64a05a2b03a98c',1,'ne::PointLightNode::onAfterDeserialized()'],['../classne_1_1SpotlightNode.html#aa34d6c205b21d9b7beeaa2769c0ecb96',1,'ne::SpotlightNode::onAfterDeserialized()'],['../classne_1_1MeshNode.html#a453c3a079be0120c8c9fb7cd3a5a6899',1,'ne::MeshNode::onAfterDeserialized()'],['../classne_1_1DirectionalLightNode.html#a5371921a835741ed94bc0c823e8f5424',1,'ne::DirectionalLightNode::onAfterDeserialized()']]], + ['onallgraphicspipelinesrecreatedinternalresources_4',['onAllGraphicsPipelinesRecreatedInternalResources',['../classne_1_1GlobalShaderResourceBindingManager.html#a57921a52680a1de20d4d9668206a3608',1,'ne::GlobalShaderResourceBindingManager']]], + ['onarrayindexchanged_5',['onArrayIndexChanged',['../classne_1_1ShadowMapHandle.html#a5b5e4dd72fe6231c33b5a7d3d996f480',1,'ne::ShadowMapHandle']]], + ['onbeforedetachedfromparent_6',['onBeforeDetachedFromParent',['../classne_1_1Node.html#a53e4a732c0e3578d8a5551693b8c02aa',1,'ne::Node']]], + ['onbeforenewframe_7',['onBeforeNewFrame',['../classne_1_1EditorGameInstance.html#a98db763ad2e5b24ba9bb24c5192fb1c5',1,'ne::EditorGameInstance::onBeforeNewFrame()'],['../classne_1_1EditorCameraNode.html#a32c682de69a47481aa8429f56a58f07c',1,'ne::EditorCameraNode::onBeforeNewFrame()'],['../classne_1_1GameManager.html#ad5574aec98eb24f9f6a5ac33e24e0a1f',1,'ne::GameManager::onBeforeNewFrame()'],['../classne_1_1GameInstance.html#a33c3f5c6e96408babf22b3a977f8c5e1',1,'ne::GameInstance::onBeforeNewFrame()'],['../classne_1_1Node.html#a6ccde9ffedb8ce10cfb4cbdd8b6ea59a',1,'ne::Node::onBeforeNewFrame()']]], + ['oncameranodedespawning_8',['onCameraNodeDespawning',['../classne_1_1CameraManager.html#a2906fa6c31c8fab04105c42ea23e33bb',1,'ne::CameraManager']]], + ['onchildnodesspawned_9',['onChildNodesSpawned',['../classne_1_1Node.html#a79cba5cd17e5e968ed92f162b5a9f08b',1,'ne::Node']]], + ['oncomputeshadernolongerusingpipeline_10',['onComputeShaderNoLongerUsingPipeline',['../classne_1_1Pipeline.html#ac3a9612dddfef7d6a717be4790a65ef7',1,'ne::Pipeline']]], + ['oncomputeshaderusingpipeline_11',['onComputeShaderUsingPipeline',['../classne_1_1Pipeline.html#af4273d385ab2a9d70874e290c27dfc17',1,'ne::Pipeline']]], + ['ondescriptorbeingdestroyed_12',['onDescriptorBeingDestroyed',['../classne_1_1DirectXDescriptorHeap.html#a2f77d06c9122f0badd958b8ee5efc88e',1,'ne::DirectXDescriptorHeap']]], + ['ondescriptorrangebeingdestroyed_13',['onDescriptorRangeBeingDestroyed',['../classne_1_1DirectXDescriptorHeap.html#a0817166531ea8947342962e195ab98d4',1,'ne::DirectXDescriptorHeap']]], + ['ondespawning_14',['onDespawning',['../classne_1_1CameraNode.html#a163b51874818ad22d1e4bcc83774a78f',1,'ne::CameraNode::onDespawning()'],['../classne_1_1EnvironmentNode.html#adbe7bebff6387c0bdca1b8b18af811db',1,'ne::EnvironmentNode::onDespawning()'],['../classne_1_1DirectionalLightNode.html#a8ecbc829b192d1caf811746b58b8a475',1,'ne::DirectionalLightNode::onDespawning()'],['../classne_1_1PointLightNode.html#a3a3653f472765d4594939d8c3796aa73',1,'ne::PointLightNode::onDespawning()'],['../classne_1_1SpotlightNode.html#a8f09cc94a4a701d7f9771e0cddddeebe',1,'ne::SpotlightNode::onDespawning()'],['../classne_1_1MeshNode.html#a53861da301908fac9900bd11073b745f',1,'ne::MeshNode::onDespawning()'],['../classne_1_1Node.html#a890cf446e639ac9dd1e9e7832cf796ed',1,'ne::Node::onDespawning()']]], + ['ondirectionallightarraysizechanged_15',['onDirectionalLightArraySizeChanged',['../classne_1_1LightingShaderResourceManager.html#a4509a3f1e11d13d092aa01e0c286a708',1,'ne::LightingShaderResourceManager']]], + ['onengineshaderscompiled_16',['onEngineShadersCompiled',['../classne_1_1LightingShaderResourceManager.html#aa04b68e7333b07b078edfc596f52c644',1,'ne::LightingShaderResourceManager']]], + ['onfinishedupdatingresource_17',['onFinishedUpdatingResource',['../classne_1_1ShaderCpuWriteResourceBinding.html#a5524efd84ed3ab90145dc567d1ae99dd',1,'ne::ShaderCpuWriteResourceBinding']]], + ['onfinishedupdatingshaderdata_18',['onFinishedUpdatingShaderData',['../classne_1_1DirectionalLightNode.html#a3d3f12064a238c4c35a2d76878e53338',1,'ne::DirectionalLightNode::onFinishedUpdatingShaderData()'],['../classne_1_1PointLightNode.html#aeb4c5c983c4821bead1f744afe581f33',1,'ne::PointLightNode::onFinishedUpdatingShaderData()'],['../classne_1_1SpotlightNode.html#a840d32981f5133a1b60b78be61512869',1,'ne::SpotlightNode::onFinishedUpdatingShaderData()']]], + ['onfinishedupdatingshadermeshconstants_19',['onFinishedUpdatingShaderMeshConstants',['../classne_1_1MeshNode.html#a59ea8756566f5a6b8016e3f919050211',1,'ne::MeshNode::onFinishedUpdatingShaderMeshConstants()'],['../classne_1_1Material.html#acc4f2a67629155070efdac11fbdae46e',1,'ne::Material::onFinishedUpdatingShaderMeshConstants()']]], + ['onfinishedupdatingshadowpassdata_20',['onFinishedUpdatingShadowPassData',['../classne_1_1DirectionalLightNode.html#a7ee385a787777c41b87a5e05a0b197ec',1,'ne::DirectionalLightNode::onFinishedUpdatingShadowPassData()'],['../classne_1_1PointLightNode.html#a20c2d24c0bde9f3438443c5fc2be7735',1,'ne::PointLightNode::onFinishedUpdatingShadowPassData()'],['../classne_1_1SpotlightNode.html#a4b442dcbfae7ca18ef8b2596a29c96d2',1,'ne::SpotlightNode::onFinishedUpdatingShadowPassData()']]], + ['onframebuffersizechanged_21',['onFramebufferSizeChanged',['../classne_1_1GameManager.html#af375a4afde29577ed3f3d0d23e44bd2a',1,'ne::GameManager::onFramebufferSizeChanged()'],['../classne_1_1GameInstance.html#a9cdb73a250e0af9c3ff2ce94ee020efc',1,'ne::GameInstance::onFramebufferSizeChanged()'],['../classne_1_1Window.html#a8d02d41e2da8983f74a643ece8621871',1,'ne::Window::onFramebufferSizeChanged()'],['../classne_1_1Renderer.html#ad5e9d40f1b603f016147f8788a6e0a6f',1,'ne::Renderer::onFramebufferSizeChanged()']]], + ['onframebuffersizechangedderived_22',['onFramebufferSizeChangedDerived',['../classne_1_1VulkanRenderer.html#ac51bddb238dd93b8653067c0c64fbc5a',1,'ne::VulkanRenderer::onFramebufferSizeChangedDerived()'],['../classne_1_1Renderer.html#a57afd8ef14e2dfbae2391aaed4c57bb5',1,'ne::Renderer::onFramebufferSizeChangedDerived()']]], + ['ongamestarted_23',['onGameStarted',['../classne_1_1EditorGameInstance.html#aab5506f886d0c72aa81728232ef7b3b5',1,'ne::EditorGameInstance::onGameStarted()'],['../classne_1_1GameManager.html#a931e5d8a4cf3a264eb43f0e15536dc3c',1,'ne::GameManager::onGameStarted()'],['../classne_1_1GameInstance.html#a62e6067d69f8f01c946e80d52397daee',1,'ne::GameInstance::onGameStarted()']]], + ['onindexnolongerused_24',['onIndexNoLongerUsed',['../classne_1_1ShaderArrayIndexManager.html#afde4c4dbea1109ddd21798382e0d0986',1,'ne::ShaderArrayIndexManager']]], + ['oninputactionevent_25',['onInputActionEvent',['../classne_1_1GameInstance.html#a5bb595a982b111f00b5dea23e9ea44ed',1,'ne::GameInstance::onInputActionEvent()'],['../classne_1_1Node.html#a1f3b44b31513e2898d2caf35ea63d4e7',1,'ne::Node::onInputActionEvent(unsigned int iActionId, KeyboardModifiers modifiers, bool bIsPressedDown)']]], + ['oninputaxisevent_26',['onInputAxisEvent',['../classne_1_1Node.html#aa48b63d44d51992c3c594b08d3e1c0a9',1,'ne::Node::onInputAxisEvent()'],['../classne_1_1GameInstance.html#a1d0adc50099fca125b3ed972056ee671',1,'ne::GameInstance::onInputAxisEvent()']]], + ['onkeyboardinput_27',['onKeyboardInput',['../classne_1_1GameManager.html#aec5a9ce9430796de2ec8e28ae516d711',1,'ne::GameManager::onKeyboardInput()'],['../classne_1_1GameInstance.html#ac32b017f37cf76d44c6b2b4b9e36bf82',1,'ne::GameInstance::onKeyboardInput()'],['../classne_1_1Window.html#ab001e8adc478d9786e8c7e6d1709e7ff',1,'ne::Window::onKeyboardInput()']]], + ['onlightsincamerafrustumculled_28',['onLightsInCameraFrustumCulled',['../classne_1_1ShaderLightArray.html#a47d9f5f3d4916adb095077b84dccad0a',1,'ne::ShaderLightArray']]], + ['onmaterialnolongerusingpipeline_29',['onMaterialNoLongerUsingPipeline',['../classne_1_1Pipeline.html#a4d95882c56e6ede0aee77a75f08248ad',1,'ne::Pipeline']]], + ['onmaterialusingpipeline_30',['onMaterialUsingPipeline',['../classne_1_1Pipeline.html#a1feae2550cfd0920cc0a22723edf64ed',1,'ne::Pipeline']]], + ['onmeshdatachanged_31',['onMeshDataChanged',['../classne_1_1MeshNode.html#add9e3c1ba2be62c9f806bb2b7eae78e2',1,'ne::MeshNode']]], + ['onmeshnodedespawning_32',['onMeshNodeDespawning',['../classne_1_1Material.html#af1e3a6939b7619716744eadb2a7a0723',1,'ne::Material']]], + ['onmeshnodespawning_33',['onMeshNodeSpawning',['../classne_1_1Material.html#a1f72b3b50221e37374506f7a4c344422',1,'ne::Material']]], + ['onmouseinput_34',['onMouseInput',['../classne_1_1GameManager.html#a4b5d9b861fa1952061473c9169a9b8ae',1,'ne::GameManager::onMouseInput()'],['../classne_1_1GameInstance.html#a5eb8ba7f0f5601466ae1d5a6b59bd572',1,'ne::GameInstance::onMouseInput()'],['../classne_1_1Window.html#accadf60c741561964cd91838ba82d474',1,'ne::Window::onMouseInput()']]], + ['onmousemove_35',['onMouseMove',['../classne_1_1EditorCameraNode.html#acdb9469dbdb548e0e91712f1d93454ec',1,'ne::EditorCameraNode::onMouseMove()'],['../classne_1_1GameManager.html#a69b185684744bbc5afdf2bed15c2f15c',1,'ne::GameManager::onMouseMove()'],['../classne_1_1GameInstance.html#aca8684ad4a68801bc651b2b31b1031ad',1,'ne::GameInstance::onMouseMove()'],['../classne_1_1Node.html#a5b5e6b60ec1e1fdf9d1b7d6cb8387b74',1,'ne::Node::onMouseMove()'],['../classne_1_1Window.html#a1f8a227df2096eefb218e8c2c68acedc',1,'ne::Window::onMouseMove()']]], + ['onmousescrollmove_36',['onMouseScrollMove',['../classne_1_1GameManager.html#a4c537ba44301a3852283dda7ecce9b9f',1,'ne::GameManager::onMouseScrollMove()'],['../classne_1_1GameInstance.html#abf5324001b1c186881e7f12232cef62f',1,'ne::GameInstance::onMouseScrollMove()'],['../classne_1_1Node.html#adde53f1d8c88385fb8ba338820e77c8e',1,'ne::Node::onMouseScrollMove()'],['../classne_1_1Window.html#a99b6040442ba87e17aeb117f2a365797',1,'ne::Window::onMouseScrollMove()']]], + ['onnewgraphicspipelinecreated_37',['onNewGraphicsPipelineCreated',['../classne_1_1GlobalShaderResourceBindingManager.html#adc0ace29a033866d9e1b17783d41c743',1,'ne::GlobalShaderResourceBindingManager']]], + ['onnodedespawned_38',['onNodeDespawned',['../classne_1_1World.html#a70d4265d9cbfa1e28d57fda64f1e1160',1,'ne::World']]], + ['onnodespawned_39',['onNodeSpawned',['../classne_1_1World.html#a6fcb9bd531158d9c614bb48c22578d13',1,'ne::World']]], + ['onownernodedespawning_40',['onOwnerNodeDespawning',['../classne_1_1NodeNotificationBroadcasterBase.html#a7611d4137442ac68f7aec218bf4fabf0',1,'ne::NodeNotificationBroadcasterBase::onOwnerNodeDespawning()'],['../classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a9499a271ec2c8a036ac69e2ed823efc0',1,'ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>::onOwnerNodeDespawning()']]], + ['onownernodespawning_41',['onOwnerNodeSpawning',['../classne_1_1NodeNotificationBroadcasterBase.html#a920dedca17f4cb14b814942becc9e2a7',1,'ne::NodeNotificationBroadcasterBase::onOwnerNodeSpawning()'],['../classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#aee8f02eeef7b435dd2eccee5585010ee',1,'ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>::onOwnerNodeSpawning()']]], + ['onpipelinenolongerusedbycomputeshaderinterface_42',['onPipelineNoLongerUsedByComputeShaderInterface',['../structne_1_1PipelineManager_1_1ComputePipelines.html#a2f9930204f6088be4d835502902924fb',1,'ne::PipelineManager::ComputePipelines::onPipelineNoLongerUsedByComputeShaderInterface()'],['../classne_1_1PipelineManager.html#a02cd88db58b6607098cddc41bf855501',1,'ne::PipelineManager::onPipelineNoLongerUsedByComputeShaderInterface(const std::string &sComputeShaderName, ComputeShaderInterface *pComputeShaderInterface)']]], + ['onpipelinenolongerusedbymaterial_43',['onPipelineNoLongerUsedByMaterial',['../classne_1_1PipelineManager.html#a07b8c5604d6e9f1c44ec925bdee27400',1,'ne::PipelineManager']]], + ['onpointlightarraysizechanged_44',['onPointLightArraySizeChanged',['../classne_1_1LightingShaderResourceManager.html#a7a5a986f0975a902eb20de4a35cda99f',1,'ne::LightingShaderResourceManager']]], + ['onpointlightsinfrustumculled_45',['onPointLightsInFrustumCulled',['../classne_1_1LightingShaderResourceManager.html#a93a002ef3c7c24a2056853ca92a71aa1',1,'ne::LightingShaderResourceManager']]], + ['onrangeindiceschanged_46',['onRangeIndicesChanged',['../classne_1_1ContinuousDirectXDescriptorRange.html#a34fb9337ed96dec21dd34ce8b910f0b5',1,'ne::ContinuousDirectXDescriptorRange']]], + ['onrendersettingschanged_47',['onRenderSettingsChanged',['../classne_1_1Renderer.html#ab8810b0fa64b1de6124922d4c1ee49b2',1,'ne::Renderer']]], + ['onrendersettingschangedderived_48',['onRenderSettingsChangedDerived',['../classne_1_1DirectXRenderer.html#a9af23af0c2fd8c0584de1cfaeae27fa0',1,'ne::DirectXRenderer::onRenderSettingsChangedDerived()'],['../classne_1_1VulkanRenderer.html#a044c441415996a4391768b740384871b',1,'ne::VulkanRenderer::onRenderSettingsChangedDerived()'],['../classne_1_1Renderer.html#a3cc725e2a6ccfaac9ea4ef4fa2201a66',1,'ne::Renderer::onRenderSettingsChangedDerived()']]], + ['onshadowmaparrayindexchanged_49',['onShadowMapArrayIndexChanged',['../classne_1_1DirectionalLightNode.html#a653214da27f58550d0844ec942cc8dd1',1,'ne::DirectionalLightNode::onShadowMapArrayIndexChanged()'],['../classne_1_1PointLightNode.html#ad10da8aac0cdcf757127d75e444c1438',1,'ne::PointLightNode::onShadowMapArrayIndexChanged()'],['../classne_1_1SpotlightNode.html#a801eab825445391194df24cbc406eaea',1,'ne::SpotlightNode::onShadowMapArrayIndexChanged()']]], + ['onshadowmaphandlebeingdestroyed_50',['onShadowMapHandleBeingDestroyed',['../classne_1_1ShadowMapManager.html#a45d27940a9c5513d4f71fff46459859d',1,'ne::ShadowMapManager']]], + ['onsizechanged_51',['onSizeChanged',['../classne_1_1ShaderLightArray.html#acb1cd03348735f995151cca2af72dc35',1,'ne::ShaderLightArray']]], + ['onspawnedmeshnodechangedvisibility_52',['onSpawnedMeshNodeChangedVisibility',['../classne_1_1Material.html#a05f4e887a2fda3da02f4875eb60053ec',1,'ne::Material']]], + ['onspawnedmeshnoderecreatedindexbuffer_53',['onSpawnedMeshNodeRecreatedIndexBuffer',['../classne_1_1Material.html#a5dca5d184d1079603751789ef76edc62',1,'ne::Material']]], + ['onspawnedmeshnodestartedusingmaterial_54',['onSpawnedMeshNodeStartedUsingMaterial',['../classne_1_1Material.html#a39df1e140902043bd534cb3279d3d665',1,'ne::Material']]], + ['onspawnedmeshnodestoppedusingmaterial_55',['onSpawnedMeshNodeStoppedUsingMaterial',['../classne_1_1Material.html#a6ba3060536452524bb96ae049d050289',1,'ne::Material']]], + ['onspawnednodechangediscalledeveryframe_56',['onSpawnedNodeChangedIsCalledEveryFrame',['../classne_1_1World.html#adffa9f0f840b51ca3e05a5ebf5067ad2',1,'ne::World']]], + ['onspawnednodechangedisreceivinginput_57',['onSpawnedNodeChangedIsReceivingInput',['../classne_1_1World.html#a96c17a4d0a568b2f3e0b3d94577642c5',1,'ne::World']]], + ['onspawning_58',['onSpawning',['../classne_1_1Node.html#abe2310c20abcd99331c4d6b104e1e919',1,'ne::Node::onSpawning()'],['../classne_1_1SpatialNode.html#a3af79f3d46f46b70636d67b70dab12d2',1,'ne::SpatialNode::onSpawning()'],['../classne_1_1MeshNode.html#a7127ccc4f7cc62ab5f74583920ee93ee',1,'ne::MeshNode::onSpawning()'],['../classne_1_1SpotlightNode.html#ab2281ef335d11edcd87971e8ed3d92c1',1,'ne::SpotlightNode::onSpawning()'],['../classne_1_1PointLightNode.html#afd427bdca3170f84fe6d924e9ba9cde4',1,'ne::PointLightNode::onSpawning()'],['../classne_1_1DirectionalLightNode.html#a87cfb909061175db5c5ec9a0fc9ef899',1,'ne::DirectionalLightNode::onSpawning()'],['../classne_1_1EnvironmentNode.html#a095bb987abc897af274a2e9627fadfac',1,'ne::EnvironmentNode::onSpawning()']]], + ['onspotlightarraysizechanged_59',['onSpotlightArraySizeChanged',['../classne_1_1LightingShaderResourceManager.html#abf744efd85681e0590d4581730f3b702',1,'ne::LightingShaderResourceManager']]], + ['onspotlightsinfrustumculled_60',['onSpotlightsInFrustumCulled',['../classne_1_1LightingShaderResourceManager.html#a3adfd30e58ca0880081b4041487c6834',1,'ne::LightingShaderResourceManager']]], + ['onsrvrangeindiceschanged_61',['onSrvRangeIndicesChanged',['../classne_1_1DirectXShadowMapArrayIndexManager.html#a66afc43c6e8e3b971e7b3ed121ad67fd',1,'ne::DirectXShadowMapArrayIndexManager']]], + ['onstartedupdatingresource_62',['onStartedUpdatingResource',['../classne_1_1ShaderCpuWriteResourceBinding.html#a068a1984ca2ea0e6537717d3639dee7f',1,'ne::ShaderCpuWriteResourceBinding']]], + ['onstartedupdatingshaderdata_63',['onStartedUpdatingShaderData',['../classne_1_1DirectionalLightNode.html#ad043b455bc7abf31320709162ae142c8',1,'ne::DirectionalLightNode::onStartedUpdatingShaderData()'],['../classne_1_1PointLightNode.html#a1b060b0a223f693622b823ed594b8def',1,'ne::PointLightNode::onStartedUpdatingShaderData()'],['../classne_1_1SpotlightNode.html#a4285419429a5fcc7780f0e09b455c447',1,'ne::SpotlightNode::onStartedUpdatingShaderData()']]], + ['onstartedupdatingshadermeshconstants_64',['onStartedUpdatingShaderMeshConstants',['../classne_1_1MeshNode.html#aaf06c681193ebc25c067b64e05f52871',1,'ne::MeshNode']]], + ['onstartedupdatingshadowpassdata_65',['onStartedUpdatingShadowPassData',['../classne_1_1PointLightNode.html#a84d4950085cf3b039992aea9d9cc3240',1,'ne::PointLightNode::onStartedUpdatingShadowPassData()'],['../classne_1_1SpotlightNode.html#a67a7965a252a4dc0c0930a7b55119449',1,'ne::SpotlightNode::onStartedUpdatingShadowPassData()'],['../classne_1_1DirectionalLightNode.html#ae0e66d75c49bd454ad92df320dbb3f69',1,'ne::DirectionalLightNode::onStartedUpdatingShadowPassData()']]], + ['onstartupdatingshadermeshconstants_66',['onStartUpdatingShaderMeshConstants',['../classne_1_1Material.html#a82c2abbb8c345c5a1b2e121a20f68175',1,'ne::Material']]], + ['ontickfinished_67',['onTickFinished',['../classne_1_1GameManager.html#ae14d13f580407fd93ae6102feca95d2e',1,'ne::GameManager']]], + ['onwindowclose_68',['onWindowClose',['../classne_1_1GameManager.html#aa9ecb6c766e07be4246e04bcac82105b',1,'ne::GameManager::onWindowClose()'],['../classne_1_1GameInstance.html#a861a62cb1bd5094ebdaac417f3196675',1,'ne::GameInstance::onWindowClose()']]], + ['onwindowfocuschanged_69',['onWindowFocusChanged',['../classne_1_1GameInstance.html#a1e67e6624e5b7bb018f14a5adfa6db97',1,'ne::GameInstance::onWindowFocusChanged()'],['../classne_1_1Window.html#a933186503eae3cc20268ee85f7fd34cb',1,'ne::Window::onWindowFocusChanged()'],['../classne_1_1GameManager.html#aa77a6095cd5ae41739e27292aba1188c',1,'ne::GameManager::onWindowFocusChanged()']]], + ['onworldlocationrotationscalechanged_70',['onWorldLocationRotationScaleChanged',['../classne_1_1SpatialNode.html#adf62ec87e7faeebafc764a2b71ae92b6',1,'ne::SpatialNode::onWorldLocationRotationScaleChanged()'],['../classne_1_1PointLightNode.html#a6fa982be86ccabacc971b188f2632e14',1,'ne::PointLightNode::onWorldLocationRotationScaleChanged()'],['../classne_1_1SpotlightNode.html#a9c37f11e3e4aae66a316dd7c5a2bc477',1,'ne::SpotlightNode::onWorldLocationRotationScaleChanged()'],['../classne_1_1MeshNode.html#a74b459c63b02d3f8fa269ba17d93bf5e',1,'ne::MeshNode::onWorldLocationRotationScaleChanged()'],['../classne_1_1DirectionalLightNode.html#a50234389cb5b38e47185e56802605663',1,'ne::DirectionalLightNode::onWorldLocationRotationScaleChanged()'],['../classne_1_1CameraNode.html#a9410fa3451b9d607ebdf851819cd03d2',1,'ne::CameraNode::onWorldLocationRotationScaleChanged()']]], + ['opacity_71',['opacity',['../classne_1_1Material.html#a0baf76cad634fde0115a9285f51771c1',1,'ne::Material']]], + ['open_72',['open',['../classne_1_1OpenLinkInBrowser.html#a2f61d7c3eaf81e78929f92580c0f825b',1,'ne::OpenLinkInBrowser']]], + ['openfile_73',['openFile',['../classne_1_1FileDialog.html#a79abaf46ef916fb7081d2423043dae62',1,'ne::FileDialog']]], + ['openlinkinbrowser_74',['OpenLinkInBrowser',['../classne_1_1OpenLinkInBrowser.html',1,'ne']]], + ['operator_28_29_75',['operator()',['../structne_1_1StdStringHash.html#aa60fb6f2c93bd3a3a017aae599085f7b',1,'ne::StdStringHash::operator()(const char *pText) const'],['../structne_1_1StdStringHash.html#a5a854cc2fd1b60a0049cda104f8a6176',1,'ne::StdStringHash::operator()(std::string_view text) const'],['../structne_1_1StdStringHash.html#ab51ae54295e6977de46ffccb58e83b46',1,'ne::StdStringHash::operator()(std::string const &text) const'],['../structne_1_1ShaderMacroSetHash.html#a4815a726b90ee095a39c2a94a81abf25',1,'ne::ShaderMacroSetHash::operator()()'],['../classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a31f9bd6d7315b69f7e5c011a8014a950',1,'ne::NodeFunction< FunctionReturnType(FunctionArgs...)>::operator()()']]], + ['operator_2d_3e_76',['operator->',['../classne_1_1PipelineSharedPtr.html#a9647bc1bead502ad18894eac5d3cd9a0',1,'ne::PipelineSharedPtr']]], + ['operator_3d_77',['operator=',['../classne_1_1ShaderTextureResourceBindingUniquePtr.html#a5ab423bb76406c1a80252b38a69e1e3a',1,'ne::ShaderTextureResourceBindingUniquePtr::operator=()'],['../structne_1_1ShaderDescription.html#a88c0dc416c3fc67b6d71d4885ac07b56',1,'ne::ShaderDescription::operator=(ShaderDescription &&other) noexcept=default'],['../structne_1_1ShaderDescription.html#a4c6b3dc0063e415cf7e87892dc3af060',1,'ne::ShaderDescription::operator=(const ShaderDescription &other) noexcept=default'],['../classne_1_1Error.html#a63a045f839a8f4ca8ff2f27a6091f50e',1,'ne::Error::operator=(Error &&other)=default'],['../classne_1_1Error.html#a8a54db84023f6eba40e154d8b1e14da5',1,'ne::Error::operator=(const Error &other)=default'],['../classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#acbe83245d48b31c4f2f469232d3c22f0',1,'ne::NodeFunction< FunctionReturnType(FunctionArgs...)>::operator=(NodeFunction &&other) noexcept=default'],['../classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a953a1c7bb9e06c5f4d6ae592e591b290',1,'ne::NodeFunction< FunctionReturnType(FunctionArgs...)>::operator=(const NodeFunction &other)=default'],['../structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.html#a782622b173c3a0c6f7814f4a6c9eac93',1,'ne::GlslShaderTextureResourceBinding::PushConstantIndices::operator=()'],['../classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html#a6b00d6c1679e69af2d486ae8ed73ffae',1,'ne::ShaderCpuWriteResourceBindingUniquePtr::operator=()'],['../classne_1_1MeshData.html#a418a80ab6715461b00a6eeedf2a2ac9e',1,'ne::MeshData::operator=(MeshData &&) noexcept=default'],['../classne_1_1MeshData.html#a71016ccc08f15529205709f6579736a5',1,'ne::MeshData::operator=(const MeshData &)=default'],['../structne_1_1MeshVertex.html#a9d31336ab8a0cb1c4f16e4dd2b2f418f',1,'ne::MeshVertex::operator=(MeshVertex &&) noexcept=default'],['../structne_1_1MeshVertex.html#aebeda482bc16965a3e31d56721f009eb',1,'ne::MeshVertex::operator=(const MeshVertex &)=default'],['../classne_1_1PipelineSharedPtr.html#a6013388ffb7c2fb1305e4fe987a05d17',1,'ne::PipelineSharedPtr::operator=()']]], + ['operator_3d_3d_78',['operator==',['../structne_1_1MeshVertex.html#ae2a97b7a3946b917de1df6ef8c68f9c0',1,'ne::MeshVertex']]], + ['optionalcallbackonlightsincamerafrustumculled_79',['optionalCallbackOnLightsInCameraFrustumCulled',['../classne_1_1ShaderLightArray.html#a61485718d7dc7043ba990c7eec6beed1',1,'ne::ShaderLightArray']]], + ['optionalktxtexture_80',['optionalKtxTexture',['../classne_1_1VulkanResource.html#a7eaddd98e847c4cf5000760425b2efc0',1,'ne::VulkanResource']]], + ['optionaltargettimetorenderframeinns_81',['optionalTargetTimeToRenderFrameInNs',['../structne_1_1RenderStatistics_1_1FpsLimitInfo.html#accf7ee9c37661472207b71038c1b7853',1,'ne::RenderStatistics::FpsLimitInfo']]], + ['optionalvertexformat_82',['optionalVertexFormat',['../classne_1_1Shader.html#a16d650cdfd0c3d2c8bc3e3bbb6eb7163',1,'ne::Shader']]], + ['orbitalcameratargetinworldspace_83',['orbitalCameraTargetInWorldSpace',['../classne_1_1CameraNode.html#afb9d8361569162d17cf76d53b69b300c',1,'ne::CameraNode']]], + ['orbitalmodedata_84',['OrbitalModeData',['../structne_1_1CameraProperties_1_1Data_1_1OrbitalModeData.html',1,'ne::CameraProperties::Data']]], + ['orbitalmodedata_85',['orbitalModeData',['../structne_1_1CameraProperties_1_1Data.html#a17863cca37b02d1671ed97bf91bbd340',1,'ne::CameraProperties::Data']]], + ['outerconeangle_86',['outerConeAngle',['../classne_1_1SpotlightNode.html#a04553071ad23e7712f262d0d8a02a383',1,'ne::SpotlightNode']]], + ['overwriteactionevent_87',['overwriteActionEvent',['../classne_1_1InputManager.html#a77e07d518b2254d0047bf687c3576278',1,'ne::InputManager']]], + ['overwriteaxisevent_88',['overwriteAxisEvent',['../classne_1_1InputManager.html#a4b31620ebf6c39e6872c0e4f3d6c858e',1,'ne::InputManager']]] +]; diff --git a/search/all_e.js b/search/all_e.js new file mode 100644 index 000000000..c36553c07 --- /dev/null +++ b/search/all_e.js @@ -0,0 +1,183 @@ +var searchData= +[ + ['pacquireimagesemaphore_0',['pAcquireImageSemaphore',['../structne_1_1VulkanRenderer_1_1SwapChainImageSemaphores.html#aaa3b3fee4fdd58a5c7dc3c9f2ddfe6f3',1,'ne::VulkanRenderer::SwapChainImageSemaphores']]], + ['pad_1',['pad',['../structne_1_1Material_1_1MaterialShaderConstants.html#a0098ad99c73d03d504a54f056d15173b',1,'ne::Material::MaterialShaderConstants']]], + ['pallocatedresource_2',['pAllocatedResource',['../classne_1_1DirectXResource.html#a139b6ee043fc9a4d06deb98bd6adc175',1,'ne::DirectXResource']]], + ['params_3',['params',['../classne_1_1WindowBuilder.html#a13ab0c1e913a2352996bba87341c379c',1,'ne::WindowBuilder']]], + ['parray_4',['pArray',['../classne_1_1ShaderLightArraySlot.html#ab6d7dfa8936060b9ddd4d943632d6be5',1,'ne::ShaderLightArraySlot::pArray()'],['../classne_1_1DynamicCpuWriteShaderResourceArraySlot.html#a48b0b51b0fa6e7d47f39ae4dc2ea6722',1,'ne::DynamicCpuWriteShaderResourceArraySlot::pArray()']]], + ['pathdeserializedfromrelativetores_5',['pathDeserializedFromRelativeToRes',['../classne_1_1Serializable.html#aa26ef7fb597d68900cf353dfd6f63120',1,'ne::Serializable']]], + ['pathtocompiledshader_6',['pathToCompiledShader',['../classne_1_1Shader.html#a71aa98f2359111db49af5d06c87a0340',1,'ne::Shader']]], + ['pathtoshaderfile_7',['pathToShaderFile',['../structne_1_1ShaderDescription.html#ad7a2d136379794834a600b577fe95e34',1,'ne::ShaderDescription']]], + ['pathtowindowicon_8',['pathToWindowIcon',['../structne_1_1WindowBuilderParameters.html#a55f21e01c3ce4569fcc765190b90d76d',1,'ne::WindowBuilderParameters']]], + ['pbufferresource_9',['pBufferResource',['../classne_1_1VulkanResource.html#ae0e824896e06ba2dc43a7a679af51e87',1,'ne::VulkanResource']]], + ['pcalculatedfrustums_10',['pCalculatedFrustums',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ShaderResources.html#a5536318e578d675cc9c73621204a098e',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ShaderResources']]], + ['pcameramanager_11',['pCameraManager',['../classne_1_1GameManager.html#a21b64aa111fb2a3e65fdf5044d71c8f0',1,'ne::GameManager']]], + ['pcameranode_12',['pCameraNode',['../structne_1_1EditorGameInstance_1_1EditorGcPointers.html#a738523e377f942f0839be557e8c70edd',1,'ne::EditorGameInstance::EditorGcPointers']]], + ['pcbvsrvuavheap_13',['pCbvSrvUavHeap',['../classne_1_1DirectXResourceManager.html#aa9df706ca4877b2369ea4784ce0534e0',1,'ne::DirectXResourceManager::pCbvSrvUavHeap()'],['../classne_1_1HlslComputeShaderInterface.html#a257b80b936c54309a5aae345b82b872f',1,'ne::HlslComputeShaderInterface::pCbvSrvUavHeap()']]], + ['pcolorpipeline_14',['pColorPipeline',['../structne_1_1Material_1_1InternalResources.html#a277cd86f6cf7e36be7d85f27536db544',1,'ne::Material::InternalResources']]], + ['pcolortexture_15',['pColorTexture',['../structne_1_1ShadowMapHandle_1_1InternalResources.html#a44d60afbcd0f16429fda579d1bf115bb',1,'ne::ShadowMapHandle::InternalResources::pColorTexture()'],['../structne_1_1ShadowMapManager_1_1ShadowMapHandleResources.html#ae75774a326f7897f085c8b7373298ea0',1,'ne::ShadowMapManager::ShadowMapHandleResources::pColorTexture()']]], + ['pcommandallocator_16',['pCommandAllocator',['../structne_1_1DirectXFrameResource.html#a5f97a3c8801e747202418a6ec9d105f7',1,'ne::DirectXFrameResource']]], + ['pcommandbuffer_17',['pCommandBuffer',['../structne_1_1VulkanFrameResource.html#a053fec88b3598fb3b8492f4f23abeed2',1,'ne::VulkanFrameResource']]], + ['pcommandlist_18',['pCommandList',['../classne_1_1DirectXRenderer.html#a9466a6883c11e93768c79b50be096091',1,'ne::DirectXRenderer']]], + ['pcommandpool_19',['pCommandPool',['../classne_1_1VulkanRenderer.html#a26466d01d327fa6c08f70952c1c4fcd1',1,'ne::VulkanRenderer']]], + ['pcommandqueue_20',['pCommandQueue',['../classne_1_1DirectXRenderer.html#a08927085e32ccdfab95609f5fe9b5d24',1,'ne::DirectXRenderer']]], + ['pcomputecommandlist_21',['pComputeCommandList',['../classne_1_1DirectXRenderer.html#aae66a211a653272448cfc098c3405d29',1,'ne::DirectXRenderer']]], + ['pcomputeinfo_22',['pComputeInfo',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ShaderResources.html#a91d32e644202638395469ad82f644080',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ShaderResources']]], + ['pcomputeinterface_23',['pComputeInterface',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html#a6e69ff87cfe1cf9fe018d97f7ab250ae',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader::pComputeInterface()'],['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html#aed6e81285588d562b3f8b959e5d34e09',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader::pComputeInterface()']]], + ['pcomputeshaderthatusespipeline_24',['pComputeShaderThatUsesPipeline',['../classne_1_1PipelineSharedPtr.html#a271f3573d2ec8683ffdbea79e2883797',1,'ne::PipelineSharedPtr']]], + ['pcomputetexturesampler_25',['pComputeTextureSampler',['../classne_1_1VulkanRenderer.html#a5bcf2cea84ab332c38127a6730281b82',1,'ne::VulkanRenderer']]], + ['pconstantsmanager_26',['pConstantsManager',['../structne_1_1Pipeline_1_1ShaderConstantsData.html#a8003f96d4f9c89bec91b5dc97e2904d3',1,'ne::Pipeline::ShaderConstantsData']]], + ['pcursor_27',['pCursor',['../classne_1_1WindowCursor.html#a4c7edc314b4971311675245eeb8a1403',1,'ne::WindowCursor']]], + ['pdepthaspectimageview_28',['pDepthAspectImageView',['../classne_1_1VulkanResource.html#a2601eb9e4603339359aa13f98e52563a',1,'ne::VulkanResource']]], + ['pdepthbuffernomultisampling_29',['pDepthBufferNoMultisampling',['../classne_1_1DirectXRenderer.html#aebe43e71c56812c262f42c342d731e6b',1,'ne::DirectXRenderer']]], + ['pdepthimage_30',['pDepthImage',['../classne_1_1VulkanRenderer.html#a381afdbdc2e4df87806f51a443f02b62',1,'ne::VulkanRenderer']]], + ['pdepthimagenomultisampling_31',['pDepthImageNoMultisampling',['../classne_1_1VulkanRenderer.html#a6eae1fbd4b5d52b925ddf1521d8d7d58',1,'ne::VulkanRenderer']]], + ['pdepthonlypipeline_32',['pDepthOnlyPipeline',['../structne_1_1Material_1_1InternalResources.html#ae3e97b93c9651a7ea3f5c67f2cd0aa31',1,'ne::Material::InternalResources']]], + ['pdepthonlyrenderpass_33',['pDepthOnlyRenderPass',['../classne_1_1VulkanRenderer.html#aef93999ba66bac87974a444092be9a52',1,'ne::VulkanRenderer']]], + ['pdepthstencilbuffer_34',['pDepthStencilBuffer',['../classne_1_1DirectXRenderer.html#ac5e941eeb2d94f9ac3c01beb00f6948e',1,'ne::DirectXRenderer']]], + ['pdepthtexture_35',['pDepthTexture',['../structne_1_1ShadowMapHandle_1_1InternalResources.html#ae819447ca5923b9a2389442b4f1079b9',1,'ne::ShadowMapHandle::InternalResources::pDepthTexture()'],['../structne_1_1ShadowMapManager_1_1ShadowMapHandleResources.html#a15da9e3138922d35b562a16d58e75f4a',1,'ne::ShadowMapManager::ShadowMapHandleResources::pDepthTexture()']]], + ['pdescriptorpool_36',['pDescriptorPool',['../structne_1_1VulkanPipeline_1_1InternalResources.html#a701e0756d6b92ddbf703e4d56afa4cb8',1,'ne::VulkanPipeline::InternalResources::pDescriptorPool()'],['../structne_1_1DescriptorSetLayoutGenerator_1_1Generated.html#afad58169aa6b81321683521be443c24f',1,'ne::DescriptorSetLayoutGenerator::Generated::pDescriptorPool()']]], + ['pdescriptorsetlayout_37',['pDescriptorSetLayout',['../structne_1_1VulkanPipeline_1_1InternalResources.html#a78d1b0352eb91654c6fcf1699f129eb1',1,'ne::VulkanPipeline::InternalResources::pDescriptorSetLayout()'],['../structne_1_1DescriptorSetLayoutGenerator_1_1Generated.html#a1270167d98f2e1524e972fa27fc1efd0',1,'ne::DescriptorSetLayoutGenerator::Generated::pDescriptorSetLayout()']]], + ['pdeserializedoriginalobject_38',['pDeserializedOriginalObject',['../structne_1_1Node_1_1SerializableObjectInformationWithGcPointer.html#a59b594e2949f9db073a22112b619e016',1,'ne::Node::SerializableObjectInformationWithGcPointer']]], + ['pdevice_39',['pDevice',['../classne_1_1DirectXRenderer.html#a18d709bf89f24a01d803884dfcc069a1',1,'ne::DirectXRenderer']]], + ['pdirectionallightarrayslot_40',['pDirectionalLightArraySlot',['../structne_1_1DirectionalLightNode_1_1ShaderData.html#a0efaed56b6baf4995a9931868d756b74',1,'ne::DirectionalLightNode::ShaderData']]], + ['pdirectionallightdataarray_41',['pDirectionalLightDataArray',['../structne_1_1LightingShaderResourceManager_1_1LightArrays.html#ab59765e591f9557ecfa94701f1dfb50f',1,'ne::LightingShaderResourceManager::LightArrays']]], + ['pdirectionalshadowmapsshaderresourcename_42',['pDirectionalShadowMapsShaderResourceName',['../classne_1_1ShadowMapManager.html#a83c118221584c70df6f1cb65eb03e755',1,'ne::ShadowMapManager']]], + ['pdsvheap_43',['pDsvHeap',['../classne_1_1DirectXResourceManager.html#ab675d4fbb32401c0d8966c9657cb6a06',1,'ne::DirectXResourceManager']]], + ['pdynamiccpuwriteshaderresourcearraymanager_44',['pDynamicCpuWriteShaderResourceArrayManager',['../classne_1_1GpuResourceManager.html#a63bb6680214f170993420640210ab324',1,'ne::GpuResourceManager']]], + ['peditorwindowtitle_45',['pEditorWindowTitle',['../classne_1_1EditorGameInstance.html#acf42faf2f7dfd17db06affdbb488101c',1,'ne::EditorGameInstance']]], + ['performselfvalidation_46',['performSelfValidation',['../classne_1_1ShaderManager.html#a09beef22fcf157936533b5b7a8e62ac6',1,'ne::ShaderManager']]], + ['pfactory_47',['pFactory',['../classne_1_1DirectXRenderer.html#a615ccae12f4293415a0408ddb6542646',1,'ne::DirectXRenderer']]], + ['pfence_48',['pFence',['../classne_1_1DirectXRenderer.html#a2095dee93557381b4bb2b2126a99ffef',1,'ne::DirectXRenderer::pFence()'],['../structne_1_1VulkanFrameResource.html#a098ad12698b8ef1010615d6c557f30e7',1,'ne::VulkanFrameResource::pFence()']]], + ['pframeconstantbuffer_49',['pFrameConstantBuffer',['../structne_1_1FrameResource.html#a1897cd22604bbec9f221abca2a894c16',1,'ne::FrameResource']]], + ['pframeconstantbuffername_50',['pFrameConstantBufferName',['../classne_1_1Shader.html#a67bba3bc4576c51b1d7fa87c58e3588c',1,'ne::Shader']]], + ['pframeresourcemanager_51',['pFrameResourceManager',['../classne_1_1Renderer.html#a7d982ddeb425a7774798e6419be0042d',1,'ne::Renderer']]], + ['pgameinstance_52',['pGameInstance',['../classne_1_1GameManager.html#a0f922618fabec5069d5547b80ebcafa6',1,'ne::GameManager']]], + ['pgamemanager_53',['pGameManager',['../classne_1_1World.html#accf0604ef0f01f101a2f551fb3428e73',1,'ne::World::pGameManager()'],['../classne_1_1GameInstance.html#ac13ef9e4f2be1010406d6e3d62d7a9de',1,'ne::GameInstance::pGameManager()'],['../classne_1_1Window.html#a02e142692c3377630b5c9b9c7630aa9b',1,'ne::Window::pGameManager()'],['../classne_1_1Renderer.html#a25e1de71d1ebe7b95281c7de8833986a',1,'ne::Renderer::pGameManager()']]], + ['pgamewindow_54',['pGameWindow',['../classne_1_1GameInstance.html#a4f65dca260b1f8581b1c30a2be4f5316',1,'ne::GameInstance']]], + ['pglfwwindow_55',['pGlfwWindow',['../classne_1_1Window.html#acedc4ae0227f2fdb62df828e58662323',1,'ne::Window']]], + ['pglobalcountersintolightindexlist_56',['pGlobalCountersIntoLightIndexList',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html#ac7a710e025e855c734c06799224a8c35',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources']]], + ['pglobalshaderresourcebinding_57',['pGlobalShaderResourceBinding',['../classne_1_1GpuResource.html#a91ce363512db65e0792912a60693c40a',1,'ne::GpuResource']]], + ['pglobalshaderresourcebindingmanager_58',['pGlobalShaderResourceBindingManager',['../classne_1_1Renderer.html#a848c1ed93db9948edefbfbf66078642c',1,'ne::Renderer']]], + ['pgpuresource_59',['pGpuResource',['../classne_1_1UploadBuffer.html#a470eaf8071f3297926ac11d4b89b4e60',1,'ne::UploadBuffer']]], + ['pgraphicsqueue_60',['pGraphicsQueue',['../classne_1_1VulkanRenderer.html#af94ec4223715e882d2a6a10fce46875a',1,'ne::VulkanRenderer']]], + ['pheap_61',['pHeap',['../classne_1_1DirectXDescriptor.html#abc0548df41567e1682b85d6ec5cc1282',1,'ne::DirectXDescriptor::pHeap()'],['../classne_1_1ContinuousDirectXDescriptorRange.html#a508e8c418cea82aac92b50c97a0e19af',1,'ne::ContinuousDirectXDescriptorRange::pHeap()'],['../structne_1_1DirectXDescriptorHeap_1_1InternalData.html#ac0192c82b8a37823d3b75ff1c38bbf8b',1,'ne::DirectXDescriptorHeap::InternalData::pHeap()']]], + ['phi_62',['phi',['../structne_1_1CameraProperties_1_1Data_1_1OrbitalModeData.html#a312506d08512b64adfba2f02e1687f22',1,'ne::CameraProperties::Data::OrbitalModeData']]], + ['physicaldevicequeuefamilyindices_63',['physicalDeviceQueueFamilyIndices',['../classne_1_1VulkanRenderer.html#a8632129baa17acf6324c4ff9cf4fb6f8',1,'ne::VulkanRenderer']]], + ['pickphysicaldevice_64',['pickPhysicalDevice',['../classne_1_1VulkanRenderer.html#a2d17f56242f67d07950c3fb0169d9ffa',1,'ne::VulkanRenderer']]], + ['pickswapchainextent_65',['pickSwapChainExtent',['../classne_1_1VulkanRenderer.html#ac673f06adac6b10b0d9773de553873d9',1,'ne::VulkanRenderer']]], + ['pickvideoadapter_66',['pickVideoAdapter',['../classne_1_1DirectXRenderer.html#a4eb291cb6cafdeca3db5965dc26c9e33',1,'ne::DirectXRenderer']]], + ['pimageresource_67',['pImageResource',['../classne_1_1VulkanResource.html#aa7c6b5023f1eab54948b5a52a716e476',1,'ne::VulkanResource']]], + ['pimageview_68',['pImageView',['../classne_1_1VulkanResource.html#ae5a145e3090f1c31779c8715ae474826',1,'ne::VulkanResource']]], + ['pimportedfilename_69',['pImportedFileName',['../classne_1_1TextureImporter.html#ad2200d8a86c7ddfe970afeebbe9d9c8c',1,'ne::TextureImporter']]], + ['pindexbuffer_70',['pIndexBuffer',['../structne_1_1MeshIndexBufferInfo.html#a88661886eccb725722526d89d0c77418',1,'ne::MeshIndexBufferInfo']]], + ['pindexmanager_71',['pIndexManager',['../structne_1_1VulkanShadowMapArrayIndexManager_1_1InternalData.html#a38bc16f1e597d302c6d5abd47736d4e0',1,'ne::VulkanShadowMapArrayIndexManager::InternalData']]], + ['pinputmanager_72',['pInputManager',['../classne_1_1GameInstance.html#a7e778278348dc1e1b27b1b2183d00625',1,'ne::GameInstance']]], + ['pinstance_73',['pInstance',['../classne_1_1VulkanRenderer.html#ae7d8f3d9cbc80dfec91abfc84f8f4ef1',1,'ne::VulkanRenderer']]], + ['pinternalresource_74',['pInternalResource',['../classne_1_1DirectXResource.html#a83046b2b67adf89670801e38ced04c17',1,'ne::DirectXResource']]], + ['pipeline_75',['Pipeline',['../classne_1_1Pipeline.html',1,'ne::Pipeline'],['../classne_1_1Pipeline.html#a090092de0749ed546b5c8a86320cdf22',1,'ne::Pipeline::Pipeline()']]], + ['pipelineconfiguration_76',['PipelineConfiguration',['../classne_1_1PipelineConfiguration.html',1,'ne::PipelineConfiguration'],['../classne_1_1PipelineConfiguration.html#ae5da1f4416a498503bf23fe527a53fda',1,'ne::PipelineConfiguration::PipelineConfiguration()']]], + ['pipelineinfrustuminfo_77',['PipelineInFrustumInfo',['../structne_1_1Renderer_1_1MeshesInFrustum_1_1PipelineInFrustumInfo.html',1,'ne::Renderer::MeshesInFrustum']]], + ['pipelinemanager_78',['PipelineManager',['../classne_1_1PipelineManager.html',1,'ne::PipelineManager'],['../classne_1_1PipelineManager.html#a977740ed73ba168c3b95c7b9e828c9a0',1,'ne::PipelineManager::PipelineManager()']]], + ['pipelines_79',['pipelines',['../structne_1_1PipelineManager_1_1ComputePipelines_1_1Resources.html#a9c285666831ac87049768eb2338e9347',1,'ne::PipelineManager::ComputePipelines::Resources']]], + ['pipelineshaderconstantsmanager_80',['PipelineShaderConstantsManager',['../classne_1_1PipelineShaderConstantsManager.html',1,'ne::PipelineShaderConstantsManager'],['../classne_1_1PipelineShaderConstantsManager.html#a8717bae2912b1cc6d06ba3cabca25c75',1,'ne::PipelineShaderConstantsManager::PipelineShaderConstantsManager()']]], + ['pipelinesharedptr_81',['PipelineSharedPtr',['../classne_1_1PipelineSharedPtr.html',1,'ne::PipelineSharedPtr'],['../classne_1_1PipelineSharedPtr.html#ad3765321a3f62e21230b550cee0ab53a',1,'ne::PipelineSharedPtr::PipelineSharedPtr(PipelineSharedPtr &&other) noexcept'],['../classne_1_1PipelineSharedPtr.html#aaa822938861b9c81ecd08a59816f1843',1,'ne::PipelineSharedPtr::PipelineSharedPtr()=default'],['../classne_1_1PipelineSharedPtr.html#aea9c5204fb8342cac5cfaf3cbda1d1b0',1,'ne::PipelineSharedPtr::PipelineSharedPtr(std::shared_ptr< Pipeline > pPipeline, ComputeShaderInterface *pComputeShaderThatUsesPipeline)'],['../classne_1_1PipelineSharedPtr.html#a9e81b443572b3e20891b50d879a9ad7b',1,'ne::PipelineSharedPtr::PipelineSharedPtr(std::shared_ptr< Pipeline > pPipeline, Material *pMaterialThatUsesPipeline)']]], + ['plane_82',['Plane',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Plane.html',1,'ne::LightingShaderResourceManager::ComputeShaderData::Plane'],['../structne_1_1Plane.html',1,'ne::Plane'],['../structne_1_1Plane.html#a881feb6e40da8448afc677727afca309',1,'ne::Plane::Plane()=default'],['../structne_1_1Plane.html#a236eff35739ac0fccf59cde96b950fa2',1,'ne::Plane::Plane(const glm::vec3 &normal, const glm::vec3 &location)']]], + ['planes_83',['planes',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Frustum.html#aa6514376259d1c7841746b48e41b7fc5',1,'ne::LightingShaderResourceManager::ComputeShaderData::Frustum']]], + ['plightingshaderresourcemanager_84',['pLightingShaderResourceManager',['../classne_1_1Renderer.html#ae9f076f02ae7967c19b3c3979c798684',1,'ne::Renderer']]], + ['plogicaldevice_85',['pLogicalDevice',['../classne_1_1VulkanRenderer.html#a4b72ac67263d9e718f95214a823c8865',1,'ne::VulkanRenderer']]], + ['pluskey_86',['plusKey',['../classne_1_1AxisState.html#a5180a63f5c3d86e079aa52bc24287c85',1,'ne::AxisState']]], + ['pmainrenderpass_87',['pMainRenderPass',['../classne_1_1VulkanRenderer.html#aecd3c39cbed7a71daca4113101946452',1,'ne::VulkanRenderer']]], + ['pmanager_88',['pManager',['../classne_1_1GpuResource.html#a9e786ca90a027b8cb96d80a60dfbe890',1,'ne::GpuResource::pManager()'],['../classne_1_1ShadowMapHandle.html#abc29fe8108c5700e9839d1b37108c58f',1,'ne::ShadowMapHandle::pManager()'],['../classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html#a45bea1c8d39d064909658dc1adb1a5d4',1,'ne::ShaderCpuWriteResourceBindingUniquePtr::pManager()'],['../classne_1_1ShaderTextureResourceBindingUniquePtr.html#a9c0f2106a28995d25436707c88355ecc',1,'ne::ShaderTextureResourceBindingUniquePtr::pManager()'],['../classne_1_1GlobalShaderResourceBinding.html#a170244afb3894f6ddb17565af7275680',1,'ne::GlobalShaderResourceBinding::pManager()'],['../classne_1_1ShaderArrayIndex.html#a5bd72a621befac7330bfe7727f43cac1',1,'ne::ShaderArrayIndex::pManager()']]], + ['pmappedresourcedata_89',['pMappedResourceData',['../classne_1_1UploadBuffer.html#a8d118da3d08f11f27ce934a4e0942bd2',1,'ne::UploadBuffer']]], + ['pmaterial_90',['pMaterial',['../structne_1_1Renderer_1_1MeshesInFrustum_1_1MaterialInFrustumInfo.html#a5e0b2532dd826010cf094ccda5dfb5cd',1,'ne::Renderer::MeshesInFrustum::MaterialInFrustumInfo']]], + ['pmaterialthatusespipeline_91',['pMaterialThatUsesPipeline',['../classne_1_1PipelineSharedPtr.html#ad54307b5723d4543e15f6f96308e7fd9',1,'ne::PipelineSharedPtr']]], + ['pmemoryallocator_92',['pMemoryAllocator',['../classne_1_1VulkanResourceManager.html#a3bdc1da71171eee86859a458b94f5749',1,'ne::VulkanResourceManager::pMemoryAllocator()'],['../classne_1_1DirectXResourceManager.html#a06f94642e84fbb8b6235d8016fafca9b',1,'ne::DirectXResourceManager::pMemoryAllocator()']]], + ['pmeshdatafileextension_93',['pMeshDataFileExtension',['../classne_1_1MeshDataBinaryFieldSerializer.html#a6dfbf6d9351d1e8d0b15c069f6af15be',1,'ne::MeshDataBinaryFieldSerializer']]], + ['pmeshnode_94',['pMeshNode',['../structne_1_1Renderer_1_1MeshesInFrustum_1_1MeshInFrustumInfo.html#a318875ab73c37d6f08eb156609ec9ac2',1,'ne::Renderer::MeshesInFrustum::MeshInFrustumInfo']]], + ['pmsaaimage_95',['pMsaaImage',['../classne_1_1VulkanRenderer.html#a57a6cc1e77934c7974abcf2fafa4e13e',1,'ne::VulkanRenderer']]], + ['pmsaarenderbuffer_96',['pMsaaRenderBuffer',['../classne_1_1DirectXRenderer.html#abf7e53de5dd9ce9352db41ea7b80d4b0',1,'ne::DirectXRenderer']]], + ['pobject_97',['pObject',['../structne_1_1SerializableObjectInformation.html#a17b0331fa19ed855cb25a806288f3a41',1,'ne::SerializableObjectInformation::pObject()'],['../structne_1_1DeserializedObjectInformation.html#a0ebcff6817130499f87987d83e2f9136',1,'ne::DeserializedObjectInformation::pObject()']]], + ['pointlight_98',['PointLight',['../structne_1_1EngineShaderNames_1_1PointLight.html',1,'ne::EngineShaderNames::PointLight'],['../structne_1_1EngineShaders_1_1PointLight.html',1,'ne::EngineShaders::PointLight']]], + ['pointlightnode_99',['PointLightNode',['../classne_1_1PointLightNode.html',1,'ne::PointLightNode'],['../classne_1_1PointLightNode.html#aa60d8ae6408b46c1b33acf221dbd2d8b',1,'ne::PointLightNode::PointLightNode(const std::string &sNodeName)']]], + ['pointlightshaderdata_100',['PointLightShaderData',['../structne_1_1PointLightNode_1_1PointLightShaderData.html',1,'ne::PointLightNode']]], + ['popaquepointlightgrid_101',['pOpaquePointLightGrid',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html#acfeefdfa12f93dfd7cfcdf68571fe621',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources']]], + ['popaquepointlightindexlist_102',['pOpaquePointLightIndexList',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html#ac6539fe62eb7dbbfd319e889f63672d2',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources']]], + ['popaquespotlightgrid_103',['pOpaqueSpotLightGrid',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html#a38f00ed76b2947b21172bdd3a843ad2d',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources']]], + ['popaquespotlightindexlist_104',['pOpaqueSpotLightIndexList',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html#adae90bdb2505281a6b77e71c0bc8eef1',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources']]], + ['poriginalobject_105',['pOriginalObject',['../structne_1_1SerializableObjectInformation.html#a9060266f5da40f01cc05af2358698b77',1,'ne::SerializableObjectInformation']]], + ['position_106',['position',['../structne_1_1MeshVertex.html#af2d2908d2dbe52eea09963aecdd4e0d7',1,'ne::MeshVertex::position()'],['../structne_1_1ShadowPassLightShaderInfo.html#a70b76cc0a57c54a9316574a1d45d8bd4',1,'ne::ShadowPassLightShaderInfo::position()'],['../structne_1_1PointLightNode_1_1PointLightShaderData.html#a79222d97190887a0eb61374b7e1c4e47',1,'ne::PointLightNode::PointLightShaderData::position()'],['../structne_1_1SpotlightNode_1_1SpotlightShaderData.html#a1ac7fb1ef7b68ac9b8d7a048976af632',1,'ne::SpotlightNode::SpotlightShaderData::position()']]], + ['poutputadapter_107',['pOutputAdapter',['../classne_1_1DirectXRenderer.html#acd216d2479e084a675ad2feaa00985a6',1,'ne::DirectXRenderer']]], + ['pphysicaldevice_108',['pPhysicalDevice',['../classne_1_1VulkanRenderer.html#aaf590460af70c900d8f03e7f9c039b5a',1,'ne::VulkanRenderer']]], + ['ppipeline_109',['pPipeline',['../classne_1_1PipelineSharedPtr.html#aeec24450bda6907413a62ac9288a704f',1,'ne::PipelineSharedPtr::pPipeline()'],['../structne_1_1VulkanPipeline_1_1InternalResources.html#aa2becfc19cef78a7545a9176999a8f8c',1,'ne::VulkanPipeline::InternalResources::pPipeline()'],['../structne_1_1Renderer_1_1MeshesInFrustum_1_1PipelineInFrustumInfo.html#a3728e9f7ee6fd8dedef7bf3ac8f6a462',1,'ne::Renderer::MeshesInFrustum::PipelineInFrustumInfo::pPipeline()'],['../classne_1_1ComputeShaderInterface.html#ac4115168862b8aa468c9d7a93e488421',1,'ne::ComputeShaderInterface::pPipeline()']]], + ['ppipelineconfiguration_110',['pPipelineConfiguration',['../classne_1_1Pipeline.html#a3e237d16f103bd14b22a050887184069',1,'ne::Pipeline']]], + ['ppipelinelayout_111',['pPipelineLayout',['../structne_1_1VulkanPipeline_1_1InternalResources.html#a61a191e7526bc94fb29abf33a511d484',1,'ne::VulkanPipeline::InternalResources']]], + ['ppipelinemanager_112',['pPipelineManager',['../classne_1_1Pipeline.html#aaf4dd0a9d10352cf4d6aa858cadcffcf',1,'ne::Pipeline::pPipelineManager()'],['../classne_1_1DelayedPipelineResourcesCreation.html#a6a5b319be9e487c9001e1166940a8e20',1,'ne::DelayedPipelineResourcesCreation::pPipelineManager()'],['../classne_1_1GlobalShaderResourceBindingManager.html#ae032197943227db61564b60bb16546f8',1,'ne::GlobalShaderResourceBindingManager::pPipelineManager()'],['../classne_1_1Material.html#a217c2e878ea6111089fea8b9d6372b9d',1,'ne::Material::pPipelineManager()'],['../classne_1_1Renderer.html#ad94f23fedb90cc91d2d4d61285aefa4a',1,'ne::Renderer::pPipelineManager()']]], + ['ppointlightarrayslot_113',['pPointLightArraySlot',['../structne_1_1PointLightNode_1_1ShaderData.html#a3f447f80f22f1cc6176d3212afd80071',1,'ne::PointLightNode::ShaderData']]], + ['ppointlightdataarray_114',['pPointLightDataArray',['../structne_1_1LightingShaderResourceManager_1_1LightArrays.html#ad9c566eb8540d1489e0f2c236f617b7d',1,'ne::LightingShaderResourceManager::LightArrays']]], + ['ppointshadowmapsshaderresourcename_115',['pPointShadowMapsShaderResourceName',['../classne_1_1ShadowMapManager.html#a1797ba789929450c4e49491838f2125e',1,'ne::ShadowMapManager']]], + ['ppreparelightcullingcomputeinterface_116',['pPrepareLightCullingComputeInterface',['../classne_1_1LightingShaderResourceManager.html#a202097de5e699ed052ccd7e1eb96483d',1,'ne::LightingShaderResourceManager']]], + ['ppresentqueue_117',['pPresentQueue',['../classne_1_1VulkanRenderer.html#a57df121e6648a8ecf76af55bc3e7436d',1,'ne::VulkanRenderer']]], + ['ppso_118',['pPso',['../structne_1_1DirectXPso_1_1InternalResources.html#af04a5d4d7add6de9ec77c22e2bb0aaef',1,'ne::DirectXPso::InternalResources']]], + ['pqueuesubmitsemaphore_119',['pQueueSubmitSemaphore',['../structne_1_1VulkanRenderer_1_1SwapChainImageSemaphores.html#a3c0607fdeef1d41ddab66e46271b5f14',1,'ne::VulkanRenderer::SwapChainImageSemaphores']]], + ['prange_120',['pRange',['../classne_1_1DirectXDescriptor.html#a5723495d27d4b5137adb341ebabaed4d',1,'ne::DirectXDescriptor']]], + ['preferredrenderer_121',['preferredRenderer',['../classne_1_1Window.html#aa305d03b7bb058ab602a4e7cd1c54f3a',1,'ne::Window']]], + ['prenderer_122',['pRenderer',['../classne_1_1ShaderCpuWriteResourceBindingManager.html#a78c472bb9ac3b9a9ae42a2858390396d',1,'ne::ShaderCpuWriteResourceBindingManager::pRenderer()'],['../classne_1_1ShaderCacheManager.html#af3a1bec0d912cca3640ea16616c315c0',1,'ne::ShaderCacheManager::pRenderer()'],['../structne_1_1VulkanFrameResource.html#a02dbf9cc5aaee5d49825c369d57d9877',1,'ne::VulkanFrameResource::pRenderer()'],['../classne_1_1CameraManager.html#a8d260bedb94ed5c4a1da2d50dab95644',1,'ne::CameraManager::pRenderer()'],['../classne_1_1ShadowMapArrayIndexManager.html#a5d6a104f7848a1d8c6f388619be4a9cb',1,'ne::ShadowMapArrayIndexManager::pRenderer()'],['../classne_1_1ShaderTextureResourceBindingManager.html#aa9f360bd9aa162696622e0600a1bb3bd',1,'ne::ShaderTextureResourceBindingManager::pRenderer()'],['../classne_1_1LightingShaderResourceManager.html#a5ef0adb2877a35e64a6a8b6e9a69370a',1,'ne::LightingShaderResourceManager::pRenderer()'],['../classne_1_1ShaderLightArray.html#aa20bb571bf72d18efd48b3c7cc5d540f',1,'ne::ShaderLightArray::pRenderer()'],['../classne_1_1Shader.html#ad47865f8c80247a067a5faa0f7d18438',1,'ne::Shader::pRenderer()'],['../classne_1_1ShaderConfiguration.html#a03bc12d02a4f1194b6e031cb317f5273',1,'ne::ShaderConfiguration::pRenderer()'],['../classne_1_1GpuResourceManager.html#a0c2f4bb10186a08c635b99a6838d362c',1,'ne::GpuResourceManager::pRenderer()'],['../classne_1_1FrameResourceManager.html#a93a51c27032c00357bf3fe84dbd75bfd',1,'ne::FrameResourceManager::pRenderer()'],['../classne_1_1PipelineManager.html#aa47dd48258976cdb05b313c9c52033cd',1,'ne::PipelineManager::pRenderer()'],['../classne_1_1Pipeline.html#a4609e9e9ef33b970cc04d5aa90c9ffd4',1,'ne::Pipeline::pRenderer()'],['../classne_1_1DirectXDescriptorHeap.html#a1d2182a2b5b1da00959c472431d0ef5e',1,'ne::DirectXDescriptorHeap::pRenderer()'],['../classne_1_1GameManager.html#a911267408ef42cbb9c2686caba274e68',1,'ne::GameManager::pRenderer()'],['../classne_1_1RenderSettings.html#affd081e6f78cb4b9c136eb8cbd4f9068',1,'ne::RenderSettings::pRenderer()'],['../classne_1_1ComputeShaderInterface.html#a45b8cf2fcac7d1fcf27a229daf4170d7',1,'ne::ComputeShaderInterface::pRenderer()'],['../classne_1_1ShaderManager.html#a7cd027c36ca5f4e81f04ee3c66adedde',1,'ne::ShaderManager::pRenderer()']]], + ['preparefordrawingnextframe_123',['prepareForDrawingNextFrame',['../classne_1_1DirectXRenderer.html#ac56bdae6b7900b59a326be6d8d2fd6aa',1,'ne::DirectXRenderer::prepareForDrawingNextFrame()'],['../classne_1_1VulkanRenderer.html#aedbedcc94ae5a0149ef01122c578fd68',1,'ne::VulkanRenderer::prepareForDrawingNextFrame()'],['../classne_1_1Renderer.html#ad9e4ce85fd3babdb2f5ca69a1d76b54d',1,'ne::Renderer::prepareForDrawingNextFrame()']]], + ['preparerendertargetfornextframe_124',['prepareRenderTargetForNextFrame',['../classne_1_1VulkanRenderer.html#aeda042e148260fe4693b728775a91740',1,'ne::VulkanRenderer::prepareRenderTargetForNextFrame()'],['../classne_1_1Renderer.html#a1104f4c7c926b7ac3d2cc13c0e8fa799',1,'ne::Renderer::prepareRenderTargetForNextFrame()']]], + ['present_125',['present',['../classne_1_1DirectXRenderer.html#a8c62f8526ed5b4b208aef449ea712e5b',1,'ne::DirectXRenderer::present()'],['../classne_1_1VulkanRenderer.html#a1a5e581efdf77fd3e927a5a58d4f89da',1,'ne::VulkanRenderer::present()'],['../classne_1_1Renderer.html#a3408af535d34d9cf26ccac19975d6403',1,'ne::Renderer::present()']]], + ['presource_126',['pResource',['../classne_1_1DirectXDescriptor.html#a23305c4ab8028e3202cfcbedbb4a69a9',1,'ne::DirectXDescriptor::pResource()'],['../structne_1_1DirectXResource_1_1DescriptorsSameType.html#a3dafe197c9f2e9296276fcab24ac93ba',1,'ne::DirectXResource::DescriptorsSameType::pResource()'],['../structne_1_1FrameResourceManager_1_1CurrentFrameResource.html#ae88656160613c7f8eeece7f12770c4eb',1,'ne::FrameResourceManager::CurrentFrameResource::pResource()'],['../classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html#a30851b027f19c369f1e349ec5a8475cb',1,'ne::ShaderCpuWriteResourceBindingUniquePtr::pResource()'],['../classne_1_1ShaderTextureResourceBindingUniquePtr.html#ad45e591a7831145e12ed323638475266',1,'ne::ShaderTextureResourceBindingUniquePtr::pResource()']]], + ['presourcemanager_127',['pResourceManager',['../classne_1_1ShadowMapManager.html#ace5a6dbb7289d9d35ef1bab45db45397',1,'ne::ShadowMapManager::pResourceManager()'],['../classne_1_1DynamicCpuWriteShaderResourceArray.html#aca4d0768b6f3712c171ba33b487801db',1,'ne::DynamicCpuWriteShaderResourceArray::pResourceManager()'],['../classne_1_1DynamicCpuWriteShaderResourceArrayManager.html#a72c1e9f423b132a8b28bdb05ab7974e5',1,'ne::DynamicCpuWriteShaderResourceArrayManager::pResourceManager()'],['../classne_1_1TextureManager.html#aa716b5a73c47de0039cf5ef9e0480cbd',1,'ne::TextureManager::pResourceManager()'],['../classne_1_1Renderer.html#a09e411bf2fcfc84b427770d5e3878b08',1,'ne::Renderer::pResourceManager()']]], + ['primitivefieldserializer_128',['PrimitiveFieldSerializer',['../classne_1_1PrimitiveFieldSerializer.html',1,'ne']]], + ['primitivemeshgenerator_129',['PrimitiveMeshGenerator',['../classne_1_1PrimitiveMeshGenerator.html',1,'ne']]], + ['processevents_130',['processEvents',['../classne_1_1Window.html#aa56c65358fd0067acccd567cd4910673',1,'ne::Window']]], + ['processrootconstantsiffound_131',['processRootConstantsIfFound',['../classne_1_1RootSignatureGenerator.html#a504d256c86cf6332c136748885352e4c',1,'ne::RootSignatureGenerator']]], + ['processtasksthread_132',['processTasksThread',['../classne_1_1ThreadPool.html#ac2742a67849bfeb63ddbc87b82f0ba90',1,'ne::ThreadPool']]], + ['projectiondata_133',['ProjectionData',['../structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html',1,'ne::CameraProperties::Data']]], + ['projectiondata_134',['projectionData',['../structne_1_1CameraProperties_1_1Data.html#a248e126eabcd9b6938dbe0a7e9a61080',1,'ne::CameraProperties::Data']]], + ['projectionmatrix_135',['projectionMatrix',['../structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html#a4b034342bfd1ac4a91d9638f96028add',1,'ne::CameraProperties::Data::ProjectionData']]], + ['projectpaths_136',['ProjectPaths',['../classne_1_1ProjectPaths.html',1,'ne']]], + ['prootsignature_137',['pRootSignature',['../structne_1_1DirectXPso_1_1InternalResources.html#ae88c73106434bd6edb7d08f493e67765',1,'ne::DirectXPso::InternalResources::pRootSignature()'],['../structne_1_1RootSignatureGenerator_1_1Generated.html#a5cd04d90f905758ae3598b1f870f9107',1,'ne::RootSignatureGenerator::Generated::pRootSignature()']]], + ['prtvheap_138',['pRtvHeap',['../classne_1_1DirectXResourceManager.html#aa71b8a7aa6c023f77c196984411ce6e9',1,'ne::DirectXResourceManager']]], + ['pscreentoviewdata_139',['pScreenToViewData',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ShaderResources.html#ae4b835c7074d35b4be05fc42835ad62b',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ShaderResources']]], + ['pshaderarrayindex_140',['pShaderArrayIndex',['../structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.html#af67760f14fa0226d0572e3d98beae9f3',1,'ne::GlslShaderTextureResourceBinding::PushConstantIndices']]], + ['pshadercachemanager_141',['pShaderCacheManager',['../classne_1_1ShaderManager.html#a1df76e59cacdb2d3f2e3c480ad78a7f4',1,'ne::ShaderManager']]], + ['pshadercpuwriteresourcemanager_142',['pShaderCpuWriteResourceManager',['../classne_1_1Renderer.html#a8c331d8c13193e4074f539c32f2632e5',1,'ne::Renderer']]], + ['pshadermanager_143',['pShaderManager',['../classne_1_1ShaderUser.html#a9cf0c3bb95f00f5192b8da3f283d09b3',1,'ne::ShaderUser::pShaderManager()'],['../classne_1_1Renderer.html#a1264001609f0c58c8a425fe7bc1f5077',1,'ne::Renderer::pShaderManager()']]], + ['pshaderresource_144',['pShaderResource',['../classne_1_1DynamicCpuWriteShaderResourceArraySlot.html#afbf9c89b88b778814b3e116a1974e347',1,'ne::DynamicCpuWriteShaderResourceArraySlot']]], + ['pshadertextureresourcemanager_145',['pShaderTextureResourceManager',['../classne_1_1Renderer.html#a32e14cd78fa0ee897c3ab23f211526af',1,'ne::Renderer']]], + ['pshadowmaphandle_146',['pShadowMapHandle',['../classne_1_1SpotlightNode.html#a90d629136e58c7ae03c301cfe4b02202',1,'ne::SpotlightNode::pShadowMapHandle()'],['../classne_1_1PointLightNode.html#aa7082758917320a88a445cd6129d547b',1,'ne::PointLightNode::pShadowMapHandle()'],['../classne_1_1DirectionalLightNode.html#afc0e26a3adb732f937ce54a84539c2f7',1,'ne::DirectionalLightNode::pShadowMapHandle()']]], + ['pshadowmapmanager_147',['pShadowMapManager',['../classne_1_1GpuResourceManager.html#ab0870eb40e8dc5de9c2d3c97e1b67232',1,'ne::GpuResourceManager']]], + ['pshadowmappingdirectionalspotpipeline_148',['pShadowMappingDirectionalSpotPipeline',['../structne_1_1Material_1_1InternalResources.html#a38f4850e92c9237fc5b001b27119b6d2',1,'ne::Material::InternalResources']]], + ['pshadowmappingdirectionalspotrenderpass_149',['pShadowMappingDirectionalSpotRenderPass',['../classne_1_1VulkanRenderer.html#a68e87cc69b9b840872f5a3bc67a4be30',1,'ne::VulkanRenderer']]], + ['pshadowmappingpointpipeline_150',['pShadowMappingPointPipeline',['../structne_1_1Material_1_1InternalResources.html#a37516c968251a24ef96906e5f691ac3c',1,'ne::Material::InternalResources']]], + ['pshadowmappingpointrenderpass_151',['pShadowMappingPointRenderPass',['../classne_1_1VulkanRenderer.html#a0c5aaea6b30613e856567eec78172039',1,'ne::VulkanRenderer']]], + ['pshadowpasslightinfoarray_152',['pShadowPassLightInfoArray',['../structne_1_1LightingShaderResourceManager_1_1LightArrays.html#a07ff64fd57ee2c85eb94cd4a2cbeb1b1',1,'ne::LightingShaderResourceManager::LightArrays']]], + ['pshadowpasslightinfoindex_153',['pShadowPassLightInfoIndex',['../structne_1_1PipelineShaderConstantsManager_1_1SpecialConstantsNames.html#a57992b289fa190fe5d429bace13bb854',1,'ne::PipelineShaderConstantsManager::SpecialConstantsNames']]], + ['pshadowtexturesampler_154',['pShadowTextureSampler',['../classne_1_1VulkanRenderer.html#affc1856c23bbdf9a97819a2cc9fcd6d7',1,'ne::VulkanRenderer']]], + ['pslot_155',['pSlot',['../structne_1_1DirectionalLightNode_1_1ShaderData_1_1ShadowPassDataGroup.html#a2d905787e18f04939b36627ea92ec3be',1,'ne::DirectionalLightNode::ShaderData::ShadowPassDataGroup::pSlot()'],['../structne_1_1PointLightNode_1_1ShaderData_1_1ShadowPassDataGroup.html#afaf08c1117bc30da8681afe3813fa89a',1,'ne::PointLightNode::ShaderData::ShadowPassDataGroup::pSlot()'],['../structne_1_1SpotlightNode_1_1ShaderData_1_1ShadowPassDataGroup.html#aa525a25a8ef1c078b042c7d163af3c40',1,'ne::SpotlightNode::ShaderData::ShadowPassDataGroup::pSlot()']]], + ['pspawnedownerlightnode_156',['pSpawnedOwnerLightNode',['../classne_1_1ShaderLightArraySlot.html#ad2a3b93eae7d588786cc7dd802ba16e3',1,'ne::ShaderLightArraySlot']]], + ['pspdlogger_157',['pSpdLogger',['../classne_1_1Logger.html#a1eff896c38ca6db2e7a5df2c8c580b9c',1,'ne::Logger']]], + ['pspotlightarrayslot_158',['pSpotlightArraySlot',['../structne_1_1SpotlightNode_1_1ShaderData.html#a98bee944ae1f5ec796242dbeec7101ae',1,'ne::SpotlightNode::ShaderData']]], + ['pspotlightdataarray_159',['pSpotlightDataArray',['../structne_1_1LightingShaderResourceManager_1_1LightArrays.html#a5ac8e7e862b17f5e1ee8fb2470bdc8ed',1,'ne::LightingShaderResourceManager::LightArrays']]], + ['pspotshadowmapsshaderresourcename_160',['pSpotShadowMapsShaderResourceName',['../classne_1_1ShadowMapManager.html#a0eb08feb300194ad045bcc235e2218bf',1,'ne::ShadowMapManager']]], + ['psrvrange_161',['pSrvRange',['../classne_1_1DirectXShadowMapArrayIndexManager.html#aadb4593349672386299166e727c94b78',1,'ne::DirectXShadowMapArrayIndexManager']]], + ['pswapchain_162',['pSwapChain',['../classne_1_1DirectXRenderer.html#ac74713bec3906f825d08cfbcb3e2c325',1,'ne::DirectXRenderer::pSwapChain()'],['../classne_1_1VulkanRenderer.html#ac76aec9c5294592503420f83df985759',1,'ne::VulkanRenderer::pSwapChain()']]], + ['pswapchainbuffer_163',['pSwapChainBuffer',['../classne_1_1DirectXResource.html#a27a9bd97380eb486ff9e3b2473906aec',1,'ne::DirectXResource']]], + ['ptexture_164',['pTexture',['../classne_1_1TextureHandle.html#aa60e20f76856958da21eda8e049545e4',1,'ne::TextureHandle::pTexture()'],['../structne_1_1TextureManager_1_1TextureResource.html#a52185ca860f11301b0d67e357b0c191a',1,'ne::TextureManager::TextureResource::pTexture()']]], + ['ptexturemanager_165',['pTextureManager',['../classne_1_1GpuResourceManager.html#a3b50391772b2e50aeb2b5ceaf6ea2b52',1,'ne::GpuResourceManager::pTextureManager()'],['../classne_1_1TextureHandle.html#a50113f86d879cd2f20053e8132b828a3',1,'ne::TextureHandle::pTextureManager()']]], + ['ptexturesampler_166',['pTextureSampler',['../classne_1_1VulkanRenderer.html#a7067d9ed480a9f4dd1d798ab38d84bf3',1,'ne::VulkanRenderer']]], + ['pthreadgroupcount_167',['pThreadGroupCount',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html#a6ed7dab02b4f1db9d3fa111a4f108e92',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources']]], + ['ptransparentpointlightgrid_168',['pTransparentPointLightGrid',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html#a8c53bf6e23bb173f952f10696257dadb',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources']]], + ['ptransparentpointlightindexlist_169',['pTransparentPointLightIndexList',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html#ae8b1f8bce99eb6ade138ebd690324634',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources']]], + ['ptransparentspotlightgrid_170',['pTransparentSpotLightGrid',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html#aff669d819f60149c8220385172a7f683',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources']]], + ['ptransparentspotlightindexlist_171',['pTransparentSpotLightIndexList',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html#aac30f437f99473fbe57e99070d8fdfa2',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources']]], + ['puploadbuffer_172',['pUploadBuffer',['../structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources.html#ac4fb48be7e95f9c5e44b02dcda29f4b0',1,'ne::DynamicCpuWriteShaderResourceArray::InternalResources']]], + ['pushconstantindices_173',['PushConstantIndices',['../structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.html',1,'ne::GlslShaderTextureResourceBinding::PushConstantIndices'],['../structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.html#ae5e51e0f28158d2fda3e890b79b52879',1,'ne::GlslShaderTextureResourceBinding::PushConstantIndices::PushConstantIndices()=default'],['../structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.html#af822c9b567edb5e660729fc798fb157b',1,'ne::GlslShaderTextureResourceBinding::PushConstantIndices::PushConstantIndices(size_t iPushConstantIndex, std::unique_ptr< ShaderArrayIndex > pShaderArrayIndex)'],['../structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.html#a5cd95151df6d8a464ffa7f5baf3611cd',1,'ne::GlslShaderTextureResourceBinding::PushConstantIndices::PushConstantIndices(PushConstantIndices &&)=default']]], + ['pushconstantuintfieldoffsets_174',['pushConstantUintFieldOffsets',['../structne_1_1DescriptorSetLayoutGenerator_1_1Collected.html#add34a66d3f766816b7379569dad2c6fb',1,'ne::DescriptorSetLayoutGenerator::Collected::pushConstantUintFieldOffsets()'],['../structne_1_1DescriptorSetLayoutGenerator_1_1Generated.html#a72f7bfdccfcc3ce31500334daa6d349a',1,'ne::DescriptorSetLayoutGenerator::Generated::pushConstantUintFieldOffsets()']]], + ['pvertexbuffer_175',['pVertexBuffer',['../structne_1_1MeshNode_1_1GpuResources_1_1Mesh.html#a42b97502296e7fad55050ecef18ae7d3',1,'ne::MeshNode::GpuResources::Mesh']]], + ['pvideoadapter_176',['pVideoAdapter',['../classne_1_1DirectXRenderer.html#ad699fa06e2fddf1b6c7bdf57939e1fa5',1,'ne::DirectXRenderer']]], + ['pwindow_177',['pWindow',['../classne_1_1GameManager.html#a4f0ad11430695a9e779bec3f15f7a589',1,'ne::GameManager']]], + ['pwindowsurface_178',['pWindowSurface',['../classne_1_1VulkanRenderer.html#adc4ef9ce95ed2cd2985a75e2a669dfda',1,'ne::VulkanRenderer']]], + ['pworld_179',['pWorld',['../classne_1_1Node.html#a7d87d6149dac42ad71c72959d287dce1',1,'ne::Node']]] +]; diff --git a/search/all_f.js b/search/all_f.js new file mode 100644 index 000000000..a3f90a1ae --- /dev/null +++ b/search/all_f.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['queryqueuefamilyindices_0',['queryQueueFamilyIndices',['../classne_1_1VulkanRenderer.html#a1676cee71601db7969ab9993bfedb590',1,'ne::VulkanRenderer']]], + ['queryswapchainsupportdetails_1',['querySwapChainSupportDetails',['../classne_1_1VulkanRenderer.html#a47b70ab9bf361cd01f7ccac5545766ba',1,'ne::VulkanRenderer']]], + ['question_2',['question',['../classne_1_1MessageBox.html#ab51f9da3d779cbebab192bd3a4075c38',1,'ne::MessageBox']]], + ['queuecomputeshaderinterfaceforexecution_3',['queueComputeShaderInterfaceForExecution',['../structne_1_1PipelineManager_1_1ComputePipelines.html#a47b30ad3c21f330ec96bff388f125a0f',1,'ne::PipelineManager::ComputePipelines']]], + ['queuedcomputeshaders_4',['queuedComputeShaders',['../structne_1_1PipelineManager_1_1ComputePipelines_1_1Resources.html#a3aa8123606a6c4611b2c1c60500aebd4',1,'ne::PipelineManager::ComputePipelines::Resources']]], + ['queuedforexecutioncomputeshaders_5',['QueuedForExecutionComputeShaders',['../structne_1_1QueuedForExecutionComputeShaders.html',1,'ne']]], + ['queueexecutionfornextframe_6',['queueExecutionForNextFrame',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html#a8ec144ca0cd2b77c55111c65682ff341',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader']]], + ['queuefamilyindices_7',['QueueFamilyIndices',['../structne_1_1VulkanRenderer_1_1QueueFamilyIndices.html',1,'ne::VulkanRenderer']]], + ['queuegarbagecollection_8',['queueGarbageCollection',['../classne_1_1GameManager.html#aa62d3ab261690c22e6db96cd39cc3704',1,'ne::GameManager::queueGarbageCollection()'],['../classne_1_1GameInstance.html#a3b2b339ea3f41d6d71a36ce7c47acb5e',1,'ne::GameInstance::queueGarbageCollection()']]], + ['queueshaderexecutionongraphicsqueue_9',['queueShaderExecutionOnGraphicsQueue',['../structne_1_1PipelineManager_1_1ComputePipelines.html#a48c2bea4e0194599be414e8050f08282',1,'ne::PipelineManager::ComputePipelines']]] +]; diff --git a/search/classes_0.js b/search/classes_0.js new file mode 100644 index 000000000..8e2c91030 --- /dev/null +++ b/search/classes_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['aabb_0',['AABB',['../structne_1_1AABB.html',1,'ne']]], + ['actionstate_1',['ActionState',['../classne_1_1ActionState.html',1,'ne']]], + ['axisstate_2',['AxisState',['../classne_1_1AxisState.html',1,'ne']]] +]; diff --git a/search/classes_1.js b/search/classes_1.js new file mode 100644 index 000000000..499ac9629 --- /dev/null +++ b/search/classes_1.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['calledeveryframenodes_0',['CalledEveryFrameNodes',['../structne_1_1CalledEveryFrameNodes.html',1,'ne']]], + ['cameramanager_1',['CameraManager',['../classne_1_1CameraManager.html',1,'ne']]], + ['cameranode_2',['CameraNode',['../classne_1_1CameraNode.html',1,'ne']]], + ['cameraproperties_3',['CameraProperties',['../classne_1_1CameraProperties.html',1,'ne']]], + ['collected_4',['Collected',['../structne_1_1DescriptorSetLayoutGenerator_1_1Collected.html',1,'ne::DescriptorSetLayoutGenerator']]], + ['collectedinfo_5',['CollectedInfo',['../structne_1_1RootSignatureGenerator_1_1CollectedInfo.html',1,'ne::RootSignatureGenerator']]], + ['colorpipelineconfiguration_6',['ColorPipelineConfiguration',['../classne_1_1ColorPipelineConfiguration.html',1,'ne']]], + ['compressonatorsingleton_7',['CompressonatorSingleton',['../classne_1_1CompressonatorSingleton.html',1,'ne']]], + ['computeinfo_8',['ComputeInfo',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo.html',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader']]], + ['computepipelineconfiguration_9',['ComputePipelineConfiguration',['../classne_1_1ComputePipelineConfiguration.html',1,'ne']]], + ['computepipelines_10',['ComputePipelines',['../structne_1_1PipelineManager_1_1ComputePipelines.html',1,'ne::PipelineManager']]], + ['computeshader_11',['ComputeShader',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader'],['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader']]], + ['computeshaderdata_12',['ComputeShaderData',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData.html',1,'ne::LightingShaderResourceManager']]], + ['computeshaderinterface_13',['ComputeShaderInterface',['../classne_1_1ComputeShaderInterface.html',1,'ne']]], + ['cone_14',['Cone',['../structne_1_1Cone.html',1,'ne']]], + ['configmanager_15',['ConfigManager',['../classne_1_1ConfigManager.html',1,'ne']]], + ['continuousdirectxdescriptorrange_16',['ContinuousDirectXDescriptorRange',['../classne_1_1ContinuousDirectXDescriptorRange.html',1,'ne']]], + ['counters_17',['Counters',['../structne_1_1RenderStatistics_1_1Counters.html',1,'ne::RenderStatistics']]], + ['currentframeresource_18',['CurrentFrameResource',['../structne_1_1FrameResourceManager_1_1CurrentFrameResource.html',1,'ne::FrameResourceManager']]] +]; diff --git a/search/classes_10.js b/search/classes_10.js new file mode 100644 index 000000000..fa4210192 --- /dev/null +++ b/search/classes_10.js @@ -0,0 +1,52 @@ +var searchData= +[ + ['screentoviewdata_0',['ScreenToViewData',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ScreenToViewData.html',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader']]], + ['serializable_1',['Serializable',['../classne_1_1Serializable.html',1,'ne']]], + ['serializableobjectfieldserializer_2',['SerializableObjectFieldSerializer',['../classne_1_1SerializableObjectFieldSerializer.html',1,'ne']]], + ['serializableobjectinformation_3',['SerializableObjectInformation',['../structne_1_1SerializableObjectInformation.html',1,'ne']]], + ['serializableobjectinformationwithgcpointer_4',['SerializableObjectInformationWithGcPointer',['../structne_1_1Node_1_1SerializableObjectInformationWithGcPointer.html',1,'ne::Node']]], + ['serialize_5',['Serialize',['../classne_1_1Serialize.html',1,'ne']]], + ['shader_6',['Shader',['../classne_1_1Shader.html',1,'ne']]], + ['shaderarrayindex_7',['ShaderArrayIndex',['../classne_1_1ShaderArrayIndex.html',1,'ne']]], + ['shaderarrayindexmanager_8',['ShaderArrayIndexManager',['../classne_1_1ShaderArrayIndexManager.html',1,'ne']]], + ['shadercacheinvalidationreasondescription_9',['ShaderCacheInvalidationReasonDescription',['../structne_1_1ShaderCacheInvalidationReasonDescription.html',1,'ne']]], + ['shadercachemanager_10',['ShaderCacheManager',['../classne_1_1ShaderCacheManager.html',1,'ne']]], + ['shaderconfiguration_11',['ShaderConfiguration',['../classne_1_1ShaderConfiguration.html',1,'ne']]], + ['shaderconstantsdata_12',['ShaderConstantsData',['../structne_1_1Pipeline_1_1ShaderConstantsData.html',1,'ne::Pipeline']]], + ['shadercpuwriteresourcebinding_13',['ShaderCpuWriteResourceBinding',['../classne_1_1ShaderCpuWriteResourceBinding.html',1,'ne']]], + ['shadercpuwriteresourcebindingmanager_14',['ShaderCpuWriteResourceBindingManager',['../classne_1_1ShaderCpuWriteResourceBindingManager.html',1,'ne']]], + ['shadercpuwriteresourcebindinguniqueptr_15',['ShaderCpuWriteResourceBindingUniquePtr',['../classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html',1,'ne']]], + ['shaderdata_16',['ShaderData',['../structne_1_1DirectionalLightNode_1_1ShaderData.html',1,'ne::DirectionalLightNode::ShaderData'],['../structne_1_1PointLightNode_1_1ShaderData.html',1,'ne::PointLightNode::ShaderData'],['../structne_1_1ShaderManager_1_1ShaderData.html',1,'ne::ShaderManager::ShaderData'],['../structne_1_1SpotlightNode_1_1ShaderData.html',1,'ne::SpotlightNode::ShaderData']]], + ['shaderdescription_17',['ShaderDescription',['../structne_1_1ShaderDescription.html',1,'ne']]], + ['shaderfilesystempaths_18',['ShaderFilesystemPaths',['../classne_1_1ShaderFilesystemPaths.html',1,'ne']]], + ['shaderlightarray_19',['ShaderLightArray',['../classne_1_1ShaderLightArray.html',1,'ne']]], + ['shaderlightarrayslot_20',['ShaderLightArraySlot',['../classne_1_1ShaderLightArraySlot.html',1,'ne']]], + ['shaderlightsinfrustumsingletype_21',['ShaderLightsInFrustumSingleType',['../structne_1_1ShaderLightsInFrustumSingleType.html',1,'ne']]], + ['shadermacroconfigurations_22',['ShaderMacroConfigurations',['../structne_1_1ShaderMacroConfigurations.html',1,'ne']]], + ['shadermacrosethash_23',['ShaderMacroSetHash',['../structne_1_1ShaderMacroSetHash.html',1,'ne']]], + ['shadermanager_24',['ShaderManager',['../classne_1_1ShaderManager.html',1,'ne']]], + ['shaderpack_25',['ShaderPack',['../classne_1_1ShaderPack.html',1,'ne']]], + ['shaderpipelines_26',['ShaderPipelines',['../structne_1_1ShaderPipelines.html',1,'ne']]], + ['shaderresourcebindingbase_27',['ShaderResourceBindingBase',['../classne_1_1ShaderResourceBindingBase.html',1,'ne']]], + ['shaderresources_28',['ShaderResources',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ShaderResources.html',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ShaderResources'],['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources'],['../structne_1_1Material_1_1GpuResources_1_1ShaderResources.html',1,'ne::Material::GpuResources::ShaderResources'],['../structne_1_1MeshNode_1_1GpuResources_1_1ShaderResources.html',1,'ne::MeshNode::GpuResources::ShaderResources']]], + ['shadertextureresourcebinding_29',['ShaderTextureResourceBinding',['../classne_1_1ShaderTextureResourceBinding.html',1,'ne']]], + ['shadertextureresourcebindingmanager_30',['ShaderTextureResourceBindingManager',['../classne_1_1ShaderTextureResourceBindingManager.html',1,'ne']]], + ['shadertextureresourcebindinguniqueptr_31',['ShaderTextureResourceBindingUniquePtr',['../classne_1_1ShaderTextureResourceBindingUniquePtr.html',1,'ne']]], + ['shaderuser_32',['ShaderUser',['../classne_1_1ShaderUser.html',1,'ne']]], + ['shadowmaparrayindexmanager_33',['ShadowMapArrayIndexManager',['../classne_1_1ShadowMapArrayIndexManager.html',1,'ne']]], + ['shadowmaphandle_34',['ShadowMapHandle',['../classne_1_1ShadowMapHandle.html',1,'ne']]], + ['shadowmaphandleresources_35',['ShadowMapHandleResources',['../structne_1_1ShadowMapManager_1_1ShadowMapHandleResources.html',1,'ne::ShadowMapManager']]], + ['shadowmapmanager_36',['ShadowMapManager',['../classne_1_1ShadowMapManager.html',1,'ne']]], + ['shadowpassdatagroup_37',['ShadowPassDataGroup',['../structne_1_1DirectionalLightNode_1_1ShaderData_1_1ShadowPassDataGroup.html',1,'ne::DirectionalLightNode::ShaderData::ShadowPassDataGroup'],['../structne_1_1PointLightNode_1_1ShaderData_1_1ShadowPassDataGroup.html',1,'ne::PointLightNode::ShaderData::ShadowPassDataGroup'],['../structne_1_1SpotlightNode_1_1ShaderData_1_1ShadowPassDataGroup.html',1,'ne::SpotlightNode::ShaderData::ShadowPassDataGroup']]], + ['shadowpasslightshaderinfo_38',['ShadowPassLightShaderInfo',['../structne_1_1ShadowPassLightShaderInfo.html',1,'ne']]], + ['sourcelocationinfo_39',['SourceLocationInfo',['../structne_1_1SourceLocationInfo.html',1,'ne']]], + ['spatialnode_40',['SpatialNode',['../classne_1_1SpatialNode.html',1,'ne']]], + ['specialconstantsnames_41',['SpecialConstantsNames',['../structne_1_1PipelineShaderConstantsManager_1_1SpecialConstantsNames.html',1,'ne::PipelineShaderConstantsManager']]], + ['sphere_42',['Sphere',['../structne_1_1Sphere.html',1,'ne']]], + ['spotlightnode_43',['SpotlightNode',['../classne_1_1SpotlightNode.html',1,'ne']]], + ['spotlightshaderdata_44',['SpotlightShaderData',['../structne_1_1SpotlightNode_1_1SpotlightShaderData.html',1,'ne::SpotlightNode']]], + ['stdstringhash_45',['StdStringHash',['../structne_1_1StdStringHash.html',1,'ne']]], + ['stringfieldserializer_46',['StringFieldSerializer',['../classne_1_1StringFieldSerializer.html',1,'ne']]], + ['swapchainimagesemaphores_47',['SwapChainImageSemaphores',['../structne_1_1VulkanRenderer_1_1SwapChainImageSemaphores.html',1,'ne::VulkanRenderer']]], + ['swapchainsupportdetails_48',['SwapChainSupportDetails',['../structne_1_1VulkanRenderer_1_1SwapChainSupportDetails.html',1,'ne::VulkanRenderer']]] +]; diff --git a/search/classes_11.js b/search/classes_11.js new file mode 100644 index 000000000..6f4bac493 --- /dev/null +++ b/search/classes_11.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['tasktimeinfo_0',['TaskTimeInfo',['../structne_1_1RenderStatistics_1_1TaskTimeInfo.html',1,'ne::RenderStatistics']]], + ['texturehandle_1',['TextureHandle',['../classne_1_1TextureHandle.html',1,'ne']]], + ['textureimporter_2',['TextureImporter',['../classne_1_1TextureImporter.html',1,'ne']]], + ['texturemanager_3',['TextureManager',['../classne_1_1TextureManager.html',1,'ne']]], + ['textureresource_4',['TextureResource',['../structne_1_1TextureManager_1_1TextureResource.html',1,'ne::TextureManager']]], + ['threadgroupcount_5',['ThreadGroupCount',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ThreadGroupCount.html',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader']]], + ['threadpool_6',['ThreadPool',['../classne_1_1ThreadPool.html',1,'ne']]], + ['timer_7',['Timer',['../classne_1_1Timer.html',1,'ne']]] +]; diff --git a/search/classes_12.js b/search/classes_12.js new file mode 100644 index 000000000..f22cf1b8f --- /dev/null +++ b/search/classes_12.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['uniquevaluegenerator_0',['UniqueValueGenerator',['../classne_1_1UniqueValueGenerator.html',1,'ne']]], + ['unorderedmapfieldserializer_1',['UnorderedMapFieldSerializer',['../classne_1_1UnorderedMapFieldSerializer.html',1,'ne']]], + ['uploadbuffer_2',['UploadBuffer',['../classne_1_1UploadBuffer.html',1,'ne']]] +]; diff --git a/search/classes_13.js b/search/classes_13.js new file mode 100644 index 000000000..2f8c166ab --- /dev/null +++ b/search/classes_13.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['vectorfieldserializer_0',['VectorFieldSerializer',['../classne_1_1VectorFieldSerializer.html',1,'ne']]], + ['vertexformatdescription_1',['VertexFormatDescription',['../classne_1_1VertexFormatDescription.html',1,'ne']]], + ['viewdata_2',['ViewData',['../structne_1_1CameraProperties_1_1Data_1_1ViewData.html',1,'ne::CameraProperties::Data']]], + ['vulkanframeresource_3',['VulkanFrameResource',['../structne_1_1VulkanFrameResource.html',1,'ne']]], + ['vulkanpipeline_4',['VulkanPipeline',['../classne_1_1VulkanPipeline.html',1,'ne']]], + ['vulkanrenderer_5',['VulkanRenderer',['../classne_1_1VulkanRenderer.html',1,'ne']]], + ['vulkanresource_6',['VulkanResource',['../classne_1_1VulkanResource.html',1,'ne']]], + ['vulkanresourcemanager_7',['VulkanResourceManager',['../classne_1_1VulkanResourceManager.html',1,'ne']]], + ['vulkanshadowmaparrayindexmanager_8',['VulkanShadowMapArrayIndexManager',['../classne_1_1VulkanShadowMapArrayIndexManager.html',1,'ne']]] +]; diff --git a/search/classes_14.js b/search/classes_14.js new file mode 100644 index 000000000..823cbe201 --- /dev/null +++ b/search/classes_14.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['window_0',['Window',['../classne_1_1Window.html',1,'ne']]], + ['windowbuilder_1',['WindowBuilder',['../classne_1_1WindowBuilder.html',1,'ne']]], + ['windowbuilderparameters_2',['WindowBuilderParameters',['../structne_1_1WindowBuilderParameters.html',1,'ne']]], + ['windowcursor_3',['WindowCursor',['../classne_1_1WindowCursor.html',1,'ne']]], + ['world_4',['World',['../classne_1_1World.html',1,'ne']]], + ['worlddirection_5',['WorldDirection',['../structne_1_1Globals_1_1WorldDirection.html',1,'ne::Globals']]], + ['worldmatrixinformation_6',['WorldMatrixInformation',['../structne_1_1SpatialNode_1_1WorldMatrixInformation.html',1,'ne::SpatialNode']]] +]; diff --git a/search/classes_2.js b/search/classes_2.js new file mode 100644 index 000000000..070d78bef --- /dev/null +++ b/search/classes_2.js @@ -0,0 +1,25 @@ +var searchData= +[ + ['data_0',['Data',['../structne_1_1CameraProperties_1_1Data.html',1,'ne::CameraProperties::Data'],['../structne_1_1KtxLoadingCallbackManager_1_1Data.html',1,'ne::KtxLoadingCallbackManager::Data']]], + ['delayedpipelineresourcescreation_1',['DelayedPipelineResourcesCreation',['../classne_1_1DelayedPipelineResourcesCreation.html',1,'ne']]], + ['depthpipelineconfiguration_2',['DepthPipelineConfiguration',['../classne_1_1DepthPipelineConfiguration.html',1,'ne']]], + ['descriptorconstants_3',['DescriptorConstants',['../structne_1_1DescriptorConstants.html',1,'ne']]], + ['descriptorsetlayoutbindinginfo_4',['DescriptorSetLayoutBindingInfo',['../structne_1_1DescriptorSetLayoutGenerator_1_1Collected_1_1DescriptorSetLayoutBindingInfo.html',1,'ne::DescriptorSetLayoutGenerator::Collected']]], + ['descriptorsetlayoutgenerator_5',['DescriptorSetLayoutGenerator',['../classne_1_1DescriptorSetLayoutGenerator.html',1,'ne']]], + ['descriptorssametype_6',['DescriptorsSameType',['../structne_1_1DirectXResource_1_1DescriptorsSameType.html',1,'ne::DirectXResource']]], + ['deserializedobjectinformation_7',['DeserializedObjectInformation',['../structne_1_1DeserializedObjectInformation.html',1,'ne']]], + ['desktopnotification_8',['DesktopNotification',['../classne_1_1DesktopNotification.html',1,'ne']]], + ['direcionallightshaderdata_9',['DirecionalLightShaderData',['../structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData.html',1,'ne::DirectionalLightNode']]], + ['directionallightnode_10',['DirectionalLightNode',['../classne_1_1DirectionalLightNode.html',1,'ne']]], + ['directxdescriptor_11',['DirectXDescriptor',['../classne_1_1DirectXDescriptor.html',1,'ne']]], + ['directxdescriptorheap_12',['DirectXDescriptorHeap',['../classne_1_1DirectXDescriptorHeap.html',1,'ne']]], + ['directxframeresource_13',['DirectXFrameResource',['../structne_1_1DirectXFrameResource.html',1,'ne']]], + ['directxpso_14',['DirectXPso',['../classne_1_1DirectXPso.html',1,'ne']]], + ['directxrenderer_15',['DirectXRenderer',['../classne_1_1DirectXRenderer.html',1,'ne']]], + ['directxresource_16',['DirectXResource',['../classne_1_1DirectXResource.html',1,'ne']]], + ['directxresourcemanager_17',['DirectXResourceManager',['../classne_1_1DirectXResourceManager.html',1,'ne']]], + ['directxshadowmaparrayindexmanager_18',['DirectXShadowMapArrayIndexManager',['../classne_1_1DirectXShadowMapArrayIndexManager.html',1,'ne']]], + ['dynamiccpuwriteshaderresourcearray_19',['DynamicCpuWriteShaderResourceArray',['../classne_1_1DynamicCpuWriteShaderResourceArray.html',1,'ne']]], + ['dynamiccpuwriteshaderresourcearraymanager_20',['DynamicCpuWriteShaderResourceArrayManager',['../classne_1_1DynamicCpuWriteShaderResourceArrayManager.html',1,'ne']]], + ['dynamiccpuwriteshaderresourcearrayslot_21',['DynamicCpuWriteShaderResourceArraySlot',['../classne_1_1DynamicCpuWriteShaderResourceArraySlot.html',1,'ne']]] +]; diff --git a/search/classes_3.js b/search/classes_3.js new file mode 100644 index 000000000..5d58dbd00 --- /dev/null +++ b/search/classes_3.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['editorcameranode_0',['EditorCameraNode',['../classne_1_1EditorCameraNode.html',1,'ne']]], + ['editorgameinstance_1',['EditorGameInstance',['../classne_1_1EditorGameInstance.html',1,'ne']]], + ['editorgcpointers_2',['EditorGcPointers',['../structne_1_1EditorGameInstance_1_1EditorGcPointers.html',1,'ne::EditorGameInstance']]], + ['editorinputeventids_3',['EditorInputEventIds',['../structne_1_1EditorInputEventIds.html',1,'ne']]], + ['editornodecreationhelpers_4',['EditorNodeCreationHelpers',['../classne_1_1EditorNodeCreationHelpers.html',1,'ne']]], + ['engineshaderconstantmacros_5',['EngineShaderConstantMacros',['../classne_1_1EngineShaderConstantMacros.html',1,'ne']]], + ['engineshadernames_6',['EngineShaderNames',['../classne_1_1EngineShaderNames.html',1,'ne']]], + ['engineshaders_7',['EngineShaders',['../classne_1_1EngineShaders.html',1,'ne']]], + ['environmentnode_8',['EnvironmentNode',['../classne_1_1EnvironmentNode.html',1,'ne']]], + ['error_9',['Error',['../classne_1_1Error.html',1,'ne']]] +]; diff --git a/search/classes_4.js b/search/classes_4.js new file mode 100644 index 000000000..1e9101d89 --- /dev/null +++ b/search/classes_4.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['fieldserializermanager_0',['FieldSerializerManager',['../classne_1_1FieldSerializerManager.html',1,'ne']]], + ['filedialog_1',['FileDialog',['../classne_1_1FileDialog.html',1,'ne']]], + ['forwardplus_2',['ForwardPlus',['../structne_1_1EngineShaderConstantMacros_1_1ForwardPlus.html',1,'ne::EngineShaderConstantMacros::ForwardPlus'],['../structne_1_1EngineShaderNames_1_1ForwardPlus.html',1,'ne::EngineShaderNames::ForwardPlus'],['../structne_1_1EngineShaders_1_1ForwardPlus.html',1,'ne::EngineShaders::ForwardPlus']]], + ['fpslimitinfo_3',['FpsLimitInfo',['../structne_1_1RenderStatistics_1_1FpsLimitInfo.html',1,'ne::RenderStatistics']]], + ['frameconstants_4',['FrameConstants',['../structne_1_1FrameConstants.html',1,'ne']]], + ['frameresource_5',['FrameResource',['../structne_1_1FrameResource.html',1,'ne']]], + ['frameresourcemanager_6',['FrameResourceManager',['../classne_1_1FrameResourceManager.html',1,'ne']]], + ['framespersecondinfo_7',['FramesPerSecondInfo',['../structne_1_1RenderStatistics_1_1FramesPerSecondInfo.html',1,'ne::RenderStatistics']]], + ['frametemporarystatistics_8',['FrameTemporaryStatistics',['../structne_1_1RenderStatistics_1_1FrameTemporaryStatistics.html',1,'ne::RenderStatistics']]], + ['frustum_9',['Frustum',['../structne_1_1Frustum.html',1,'ne::Frustum'],['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Frustum.html',1,'ne::LightingShaderResourceManager::ComputeShaderData::Frustum']]], + ['frustumgridcomputeshader_10',['FrustumGridComputeShader',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader.html',1,'ne::LightingShaderResourceManager::ComputeShaderData']]] +]; diff --git a/search/classes_5.js b/search/classes_5.js new file mode 100644 index 000000000..5df982dc4 --- /dev/null +++ b/search/classes_5.js @@ -0,0 +1,26 @@ +var searchData= +[ + ['gameinstance_0',['GameInstance',['../classne_1_1GameInstance.html',1,'ne']]], + ['gamemanager_1',['GameManager',['../classne_1_1GameManager.html',1,'ne']]], + ['generallightingshaderdata_2',['GeneralLightingShaderData',['../structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData.html',1,'ne::LightingShaderResourceManager']]], + ['generated_3',['Generated',['../structne_1_1DescriptorSetLayoutGenerator_1_1Generated.html',1,'ne::DescriptorSetLayoutGenerator::Generated'],['../structne_1_1RootSignatureGenerator_1_1Generated.html',1,'ne::RootSignatureGenerator::Generated']]], + ['glfw_4',['GLFW',['../classne_1_1GLFW.html',1,'ne']]], + ['glmvecfieldserializer_5',['GlmVecFieldSerializer',['../classne_1_1GlmVecFieldSerializer.html',1,'ne']]], + ['globalcountersintolightindexlist_6',['GlobalCountersIntoLightIndexList',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1GlobalCountersIntoLightIndexList.html',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader']]], + ['globals_7',['Globals',['../classne_1_1Globals.html',1,'ne']]], + ['globalshadercacheparameternames_8',['GlobalShaderCacheParameterNames',['../structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames.html',1,'ne::HlslShaderCacheManager::GlobalShaderCacheParameterNames'],['../structne_1_1ShaderCacheManager_1_1GlobalShaderCacheParameterNames.html',1,'ne::ShaderCacheManager::GlobalShaderCacheParameterNames']]], + ['globalshaderresourcebinding_9',['GlobalShaderResourceBinding',['../classne_1_1GlobalShaderResourceBinding.html',1,'ne']]], + ['globalshaderresourcebindingmanager_10',['GlobalShaderResourceBindingManager',['../classne_1_1GlobalShaderResourceBindingManager.html',1,'ne']]], + ['glslcomputeshaderinterface_11',['GlslComputeShaderInterface',['../classne_1_1GlslComputeShaderInterface.html',1,'ne']]], + ['glslglobalshaderresourcebinding_12',['GlslGlobalShaderResourceBinding',['../classne_1_1GlslGlobalShaderResourceBinding.html',1,'ne']]], + ['glslshader_13',['GlslShader',['../classne_1_1GlslShader.html',1,'ne']]], + ['glslshadercachemanager_14',['GlslShaderCacheManager',['../classne_1_1GlslShaderCacheManager.html',1,'ne']]], + ['glslshadertextureresourcebinding_15',['GlslShaderTextureResourceBinding',['../classne_1_1GlslShaderTextureResourceBinding.html',1,'ne']]], + ['glslvertexformatdescription_16',['GlslVertexFormatDescription',['../classne_1_1GlslVertexFormatDescription.html',1,'ne']]], + ['gpudata_17',['GpuData',['../structne_1_1LightingShaderResourceManager_1_1GpuData.html',1,'ne::LightingShaderResourceManager']]], + ['gpuresource_18',['GpuResource',['../classne_1_1GpuResource.html',1,'ne']]], + ['gpuresourcemanager_19',['GpuResourceManager',['../classne_1_1GpuResourceManager.html',1,'ne']]], + ['gpuresources_20',['GpuResources',['../structne_1_1Material_1_1GpuResources.html',1,'ne::Material::GpuResources'],['../structne_1_1MeshNode_1_1GpuResources.html',1,'ne::MeshNode::GpuResources']]], + ['graphicspipelineregistry_21',['GraphicsPipelineRegistry',['../structne_1_1GraphicsPipelineRegistry.html',1,'ne']]], + ['guid_22',['Guid',['../classne_1_1Guid.html',1,'ne']]] +]; diff --git a/search/classes_6.js b/search/classes_6.js new file mode 100644 index 000000000..6140c3cb8 --- /dev/null +++ b/search/classes_6.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['hlslcomputeshaderinterface_0',['HlslComputeShaderInterface',['../classne_1_1HlslComputeShaderInterface.html',1,'ne']]], + ['hlslglobalshaderresourcebinding_1',['HlslGlobalShaderResourceBinding',['../classne_1_1HlslGlobalShaderResourceBinding.html',1,'ne']]], + ['hlslshader_2',['HlslShader',['../classne_1_1HlslShader.html',1,'ne']]], + ['hlslshadercachemanager_3',['HlslShaderCacheManager',['../classne_1_1HlslShaderCacheManager.html',1,'ne']]], + ['hlslshadertextureresourcebinding_4',['HlslShaderTextureResourceBinding',['../classne_1_1HlslShaderTextureResourceBinding.html',1,'ne']]], + ['hlslvertexformatdescription_5',['HlslVertexFormatDescription',['../classne_1_1HlslVertexFormatDescription.html',1,'ne']]] +]; diff --git a/search/classes_7.js b/search/classes_7.js new file mode 100644 index 000000000..b00c8bd5f --- /dev/null +++ b/search/classes_7.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['ibinaryfieldserializer_0',['IBinaryFieldSerializer',['../classne_1_1IBinaryFieldSerializer.html',1,'ne']]], + ['ifieldserializer_1',['IFieldSerializer',['../classne_1_1IFieldSerializer.html',1,'ne']]], + ['inputmanager_2',['InputManager',['../classne_1_1InputManager.html',1,'ne']]], + ['internaldata_3',['InternalData',['../structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData.html',1,'ne::ContinuousDirectXDescriptorRange::InternalData'],['../structne_1_1DirectXDescriptorHeap_1_1InternalData.html',1,'ne::DirectXDescriptorHeap::InternalData'],['../structne_1_1ShaderArrayIndexManager_1_1InternalData.html',1,'ne::ShaderArrayIndexManager::InternalData'],['../structne_1_1VulkanShadowMapArrayIndexManager_1_1InternalData.html',1,'ne::VulkanShadowMapArrayIndexManager::InternalData']]], + ['internalresources_4',['InternalResources',['../structne_1_1DirectXPso_1_1InternalResources.html',1,'ne::DirectXPso::InternalResources'],['../structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources.html',1,'ne::DynamicCpuWriteShaderResourceArray::InternalResources'],['../structne_1_1Material_1_1InternalResources.html',1,'ne::Material::InternalResources'],['../structne_1_1ShaderPack_1_1InternalResources.html',1,'ne::ShaderPack::InternalResources'],['../structne_1_1ShadowMapHandle_1_1InternalResources.html',1,'ne::ShadowMapHandle::InternalResources'],['../structne_1_1ShadowMapManager_1_1InternalResources.html',1,'ne::ShadowMapManager::InternalResources'],['../structne_1_1VulkanPipeline_1_1InternalResources.html',1,'ne::VulkanPipeline::InternalResources']]] +]; diff --git a/search/classes_8.js b/search/classes_8.js new file mode 100644 index 000000000..2ebbdb8ac --- /dev/null +++ b/search/classes_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['keyboardmodifiers_0',['KeyboardModifiers',['../classne_1_1KeyboardModifiers.html',1,'ne']]], + ['ktxloadingcallbackmanager_1',['KtxLoadingCallbackManager',['../classne_1_1KtxLoadingCallbackManager.html',1,'ne']]] +]; diff --git a/search/classes_9.js b/search/classes_9.js new file mode 100644 index 000000000..b3090a736 --- /dev/null +++ b/search/classes_9.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['lightarrays_0',['LightArrays',['../structne_1_1LightingShaderResourceManager_1_1LightArrays.html',1,'ne::LightingShaderResourceManager']]], + ['lightcullingcomputeshader_1',['LightCullingComputeShader',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader.html',1,'ne::LightingShaderResourceManager::ComputeShaderData']]], + ['lightingshaderresourcemanager_2',['LightingShaderResourceManager',['../classne_1_1LightingShaderResourceManager.html',1,'ne']]], + ['lightsinfrustum_3',['LightsInFrustum',['../structne_1_1Renderer_1_1LightsInFrustum.html',1,'ne::Renderer']]], + ['localspaceinformation_4',['LocalSpaceInformation',['../structne_1_1SpatialNode_1_1LocalSpaceInformation.html',1,'ne::SpatialNode']]], + ['logger_5',['Logger',['../classne_1_1Logger.html',1,'ne']]] +]; diff --git a/search/classes_a.js b/search/classes_a.js new file mode 100644 index 000000000..dadcb4e3b --- /dev/null +++ b/search/classes_a.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['material_0',['Material',['../classne_1_1Material.html',1,'ne']]], + ['materialinfrustuminfo_1',['MaterialInFrustumInfo',['../structne_1_1Renderer_1_1MeshesInFrustum_1_1MaterialInFrustumInfo.html',1,'ne::Renderer::MeshesInFrustum']]], + ['materialshaderconstants_2',['MaterialShaderConstants',['../structne_1_1Material_1_1MaterialShaderConstants.html',1,'ne::Material']]], + ['mathhelpers_3',['MathHelpers',['../classne_1_1MathHelpers.html',1,'ne']]], + ['mesh_4',['Mesh',['../structne_1_1MeshNode_1_1GpuResources_1_1Mesh.html',1,'ne::MeshNode::GpuResources']]], + ['meshdata_5',['MeshData',['../classne_1_1MeshData.html',1,'ne']]], + ['meshdatabinaryfieldserializer_6',['MeshDataBinaryFieldSerializer',['../classne_1_1MeshDataBinaryFieldSerializer.html',1,'ne']]], + ['meshesinfrustum_7',['MeshesInFrustum',['../structne_1_1Renderer_1_1MeshesInFrustum.html',1,'ne::Renderer']]], + ['meshimporter_8',['MeshImporter',['../classne_1_1MeshImporter.html',1,'ne']]], + ['meshindexbufferinfo_9',['MeshIndexBufferInfo',['../structne_1_1MeshIndexBufferInfo.html',1,'ne']]], + ['meshinfrustuminfo_10',['MeshInFrustumInfo',['../structne_1_1Renderer_1_1MeshesInFrustum_1_1MeshInFrustumInfo.html',1,'ne::Renderer::MeshesInFrustum']]], + ['meshnode_11',['MeshNode',['../structne_1_1EngineShaderNames_1_1MeshNode.html',1,'ne::EngineShaderNames::MeshNode'],['../structne_1_1EngineShaders_1_1MeshNode.html',1,'ne::EngineShaders::MeshNode'],['../classne_1_1MeshNode.html',1,'ne::MeshNode']]], + ['meshnodeglslvertexformatdescription_12',['MeshNodeGlslVertexFormatDescription',['../classne_1_1MeshNodeGlslVertexFormatDescription.html',1,'ne']]], + ['meshnodehlslvertexformatdescription_13',['MeshNodeHlslVertexFormatDescription',['../classne_1_1MeshNodeHlslVertexFormatDescription.html',1,'ne']]], + ['meshnodesthatusethismaterial_14',['MeshNodesThatUseThisMaterial',['../structne_1_1MeshNodesThatUseThisMaterial.html',1,'ne']]], + ['meshshaderconstants_15',['MeshShaderConstants',['../structne_1_1MeshNode_1_1MeshShaderConstants.html',1,'ne::MeshNode']]], + ['meshvertex_16',['MeshVertex',['../structne_1_1MeshVertex.html',1,'ne']]], + ['messagebox_17',['MessageBox',['../classne_1_1MessageBox.html',1,'ne']]] +]; diff --git a/search/classes_b.js b/search/classes_b.js new file mode 100644 index 000000000..7a6b897ad --- /dev/null +++ b/search/classes_b.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['node_0',['Node',['../classne_1_1Node.html',1,'ne']]], + ['nodefunction_1',['NodeFunction',['../classne_1_1NodeFunction.html',1,'ne']]], + ['nodefunction_3c_20functionreturntype_28functionargs_2e_2e_2e_29_3e_2',['NodeFunction< FunctionReturnType(FunctionArgs...)>',['../classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html',1,'ne']]], + ['nodenotificationbroadcaster_3',['NodeNotificationBroadcaster',['../classne_1_1NodeNotificationBroadcaster.html',1,'ne']]], + ['nodenotificationbroadcaster_3c_20functionreturntype_28functionargs_2e_2e_2e_29_3e_4',['NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>',['../classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html',1,'ne']]], + ['nodenotificationbroadcasterbase_5',['NodeNotificationBroadcasterBase',['../classne_1_1NodeNotificationBroadcasterBase.html',1,'ne']]] +]; diff --git a/search/classes_c.js b/search/classes_c.js new file mode 100644 index 000000000..62cc66b59 --- /dev/null +++ b/search/classes_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['openlinkinbrowser_0',['OpenLinkInBrowser',['../classne_1_1OpenLinkInBrowser.html',1,'ne']]], + ['orbitalmodedata_1',['OrbitalModeData',['../structne_1_1CameraProperties_1_1Data_1_1OrbitalModeData.html',1,'ne::CameraProperties::Data']]] +]; diff --git a/search/classes_d.js b/search/classes_d.js new file mode 100644 index 000000000..a045f1d58 --- /dev/null +++ b/search/classes_d.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['pipeline_0',['Pipeline',['../classne_1_1Pipeline.html',1,'ne']]], + ['pipelineconfiguration_1',['PipelineConfiguration',['../classne_1_1PipelineConfiguration.html',1,'ne']]], + ['pipelineinfrustuminfo_2',['PipelineInFrustumInfo',['../structne_1_1Renderer_1_1MeshesInFrustum_1_1PipelineInFrustumInfo.html',1,'ne::Renderer::MeshesInFrustum']]], + ['pipelinemanager_3',['PipelineManager',['../classne_1_1PipelineManager.html',1,'ne']]], + ['pipelineshaderconstantsmanager_4',['PipelineShaderConstantsManager',['../classne_1_1PipelineShaderConstantsManager.html',1,'ne']]], + ['pipelinesharedptr_5',['PipelineSharedPtr',['../classne_1_1PipelineSharedPtr.html',1,'ne']]], + ['plane_6',['Plane',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Plane.html',1,'ne::LightingShaderResourceManager::ComputeShaderData::Plane'],['../structne_1_1Plane.html',1,'ne::Plane']]], + ['pointlight_7',['PointLight',['../structne_1_1EngineShaderNames_1_1PointLight.html',1,'ne::EngineShaderNames::PointLight'],['../structne_1_1EngineShaders_1_1PointLight.html',1,'ne::EngineShaders::PointLight']]], + ['pointlightnode_8',['PointLightNode',['../classne_1_1PointLightNode.html',1,'ne']]], + ['pointlightshaderdata_9',['PointLightShaderData',['../structne_1_1PointLightNode_1_1PointLightShaderData.html',1,'ne::PointLightNode']]], + ['primitivefieldserializer_10',['PrimitiveFieldSerializer',['../classne_1_1PrimitiveFieldSerializer.html',1,'ne']]], + ['primitivemeshgenerator_11',['PrimitiveMeshGenerator',['../classne_1_1PrimitiveMeshGenerator.html',1,'ne']]], + ['projectiondata_12',['ProjectionData',['../structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html',1,'ne::CameraProperties::Data']]], + ['projectpaths_13',['ProjectPaths',['../classne_1_1ProjectPaths.html',1,'ne']]], + ['pushconstantindices_14',['PushConstantIndices',['../structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.html',1,'ne::GlslShaderTextureResourceBinding']]] +]; diff --git a/search/classes_e.js b/search/classes_e.js new file mode 100644 index 000000000..ec7232ac8 --- /dev/null +++ b/search/classes_e.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['queuedforexecutioncomputeshaders_0',['QueuedForExecutionComputeShaders',['../structne_1_1QueuedForExecutionComputeShaders.html',1,'ne']]], + ['queuefamilyindices_1',['QueueFamilyIndices',['../structne_1_1VulkanRenderer_1_1QueueFamilyIndices.html',1,'ne::VulkanRenderer']]] +]; diff --git a/search/classes_f.js b/search/classes_f.js new file mode 100644 index 000000000..4a2542122 --- /dev/null +++ b/search/classes_f.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['renderer_0',['Renderer',['../classne_1_1Renderer.html',1,'ne']]], + ['rendersettings_1',['RenderSettings',['../classne_1_1RenderSettings.html',1,'ne']]], + ['renderstatistics_2',['RenderStatistics',['../classne_1_1RenderStatistics.html',1,'ne']]], + ['resources_3',['Resources',['../structne_1_1PipelineManager_1_1ComputePipelines_1_1Resources.html',1,'ne::PipelineManager::ComputePipelines::Resources'],['../structne_1_1ShaderCpuWriteResourceBindingManager_1_1Resources.html',1,'ne::ShaderCpuWriteResourceBindingManager::Resources'],['../structne_1_1ShaderLightArray_1_1Resources.html',1,'ne::ShaderLightArray::Resources']]], + ['rootparameter_4',['RootParameter',['../classne_1_1RootSignatureGenerator_1_1RootParameter.html',1,'ne::RootSignatureGenerator']]], + ['rootsignaturegenerator_5',['RootSignatureGenerator',['../classne_1_1RootSignatureGenerator.html',1,'ne']]] +]; diff --git a/search/close.svg b/search/close.svg new file mode 100644 index 000000000..a933eea1a --- /dev/null +++ b/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/search/enums_0.js b/search/enums_0.js new file mode 100644 index 000000000..d9d797df8 --- /dev/null +++ b/search/enums_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['action_0',['Action',['../structne_1_1EditorInputEventIds.html#a543624b702b3ac523a37ef02f84337f3',1,'ne::EditorInputEventIds']]], + ['attachmentrule_1',['AttachmentRule',['../classne_1_1Node.html#a14bad364fb30a60063a147b95ab17acc',1,'ne::Node']]], + ['axis_2',['Axis',['../structne_1_1EditorInputEventIds.html#a55fc78df9952c8365e8db8143ebc0391',1,'ne::EditorInputEventIds']]] +]; diff --git a/search/enums_1.js b/search/enums_1.js new file mode 100644 index 000000000..97152b4bf --- /dev/null +++ b/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['type_0',['Type',['../classne_1_1RootSignatureGenerator_1_1RootParameter.html#a5ceefae221c3d54741bee6ef88b9b59f',1,'ne::RootSignatureGenerator::RootParameter']]] +]; diff --git a/search/functions_0.js b/search/functions_0.js new file mode 100644 index 000000000..0ff2d3a66 --- /dev/null +++ b/search/functions_0.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['actionstate_0',['ActionState',['../classne_1_1ActionState.html#aad7da26eea3f54bc3a62b93001280e39',1,'ne::ActionState']]], + ['addactionevent_1',['addActionEvent',['../classne_1_1InputManager.html#a8c6376e3d7b39c34d71b685584d8c1d4',1,'ne::InputManager']]], + ['addaxisevent_2',['addAxisEvent',['../classne_1_1InputManager.html#a937f8a855ed96b1c17f34393e4314994',1,'ne::InputManager']]], + ['addbinaryfieldserializer_3',['addBinaryFieldSerializer',['../classne_1_1FieldSerializerManager.html#a17d522d8a1b3c916fcb2116f2b8f725e',1,'ne::FieldSerializerManager']]], + ['addcbufferrootparameter_4',['addCbufferRootParameter',['../classne_1_1RootSignatureGenerator.html#a045e6dc8a1f5825d0f6dcef0b2846d35',1,'ne::RootSignatureGenerator']]], + ['addchildnode_5',['addChildNode',['../classne_1_1Node.html#a3a921f5e7fe4deb183e7910be557b1da',1,'ne::Node']]], + ['addcurrentlocationtoerrorstack_6',['addCurrentLocationToErrorStack',['../classne_1_1Error.html#ab597ff09fa96e109686cc66081a0ca80',1,'ne::Error']]], + ['adddeferredtask_7',['addDeferredTask',['../classne_1_1GameManager.html#ad6ccd23069578f4131297a56d64d9fe4',1,'ne::GameManager::addDeferredTask()'],['../classne_1_1GameInstance.html#a9f3763b4fa0eedb9735d02a3face9f5a',1,'ne::GameInstance::addDeferredTask()']]], + ['addenginemacrostoshaderdescription_8',['addEngineMacrosToShaderDescription',['../classne_1_1ShaderPack.html#ae213785f3aee3b1c7942d509557b9d10',1,'ne::ShaderPack']]], + ['addfieldserializer_9',['addFieldSerializer',['../classne_1_1FieldSerializerManager.html#aaf579632f4c5798826e599f25ecf6ca6',1,'ne::FieldSerializerManager']]], + ['addnodetocalledeveryframearrays_10',['addNodeToCalledEveryFrameArrays',['../classne_1_1World.html#a2c95947d75fb1c8abd0a0da4c719a214',1,'ne::World']]], + ['addnodetoreceivinginputarray_11',['addNodeToReceivingInputArray',['../classne_1_1World.html#ab216aa0941ff9bdee5a33fad3f090cd0',1,'ne::World']]], + ['addshader_12',['addShader',['../classne_1_1ShaderUser.html#a0057b3ae30961b3500575722f9db2f18',1,'ne::ShaderUser']]], + ['addspecialresourcerootparametersifused_13',['addSpecialResourceRootParametersIfUsed',['../classne_1_1RootSignatureGenerator.html#a5ee6a55e1308f9ad9aad09220b0926cf',1,'ne::RootSignatureGenerator']]], + ['addstructuredbufferrootparameter_14',['addStructuredBufferRootParameter',['../classne_1_1RootSignatureGenerator.html#ac2ec702d20cc94e10a9064fe314778e4',1,'ne::RootSignatureGenerator']]], + ['addtask_15',['addTask',['../classne_1_1ThreadPool.html#af15d7bc0f05008ffc8c63e4cda46a557',1,'ne::ThreadPool']]], + ['addtasktothreadpool_16',['addTaskToThreadPool',['../classne_1_1GameManager.html#a0fd6b822a9e3cd5387c29c967cb1d369',1,'ne::GameManager::addTaskToThreadPool()'],['../classne_1_1GameInstance.html#afeabdd90b1b0bd2d15b04b01d009a2b4',1,'ne::GameInstance::addTaskToThreadPool()']]], + ['addtexture2drootparameter_17',['addTexture2DRootParameter',['../classne_1_1RootSignatureGenerator.html#aad50e6eb8ae97779a5fdc2158e4456f9',1,'ne::RootSignatureGenerator']]], + ['adduniquepairresourcenamerootparameterindex_18',['addUniquePairResourceNameRootParameterIndex',['../classne_1_1RootSignatureGenerator.html#af8f76ee52018743d024a24c7134fe2fd',1,'ne::RootSignatureGenerator']]], + ['allocatecontinuousdescriptorrange_19',['allocateContinuousDescriptorRange',['../classne_1_1DirectXDescriptorHeap.html#ab42d4fafa16c177531598a10ed00c8af',1,'ne::DirectXDescriptorHeap']]], + ['allocategeometrybuffers_20',['allocateGeometryBuffers',['../classne_1_1MeshNode.html#a39074f6279baeea3d03794f4480d4c29',1,'ne::MeshNode']]], + ['allocateshaderresources_21',['allocateShaderResources',['../classne_1_1MeshNode.html#a995527f60cf6160e427183e604ae9c89',1,'ne::MeshNode::allocateShaderResources()'],['../classne_1_1Material.html#ad098fa1bc60126bee59d73a9ba5a55a4',1,'ne::Material::allocateShaderResources()']]], + ['allocmem_22',['allocMem',['../classne_1_1KtxLoadingCallbackManager.html#affa2d1da7b14a2c8d526c266c55f19a1',1,'ne::KtxLoadingCallbackManager']]], + ['applyattachmentrule_23',['applyAttachmentRule',['../classne_1_1SpatialNode.html#a26f0039cbde3055ea33a7090b3d03964',1,'ne::SpatialNode']]], + ['assigndescriptor_24',['assignDescriptor',['../classne_1_1DirectXDescriptorHeap.html#aa22837b542496371413ae59dc1078cf2',1,'ne::DirectXDescriptorHeap']]], + ['axisstate_25',['AxisState',['../classne_1_1AxisState.html#ad00936b0ee3e548a80755ea39c5537fa',1,'ne::AxisState']]] +]; diff --git a/search/functions_1.js b/search/functions_1.js new file mode 100644 index 000000000..c163ab0c0 --- /dev/null +++ b/search/functions_1.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['bindbuffer_0',['bindBuffer',['../classne_1_1KtxLoadingCallbackManager.html#a14abc0228d2da125a3bdfc8b4698d721',1,'ne::KtxLoadingCallbackManager']]], + ['bindbuffersifused_1',['bindBuffersIfUsed',['../classne_1_1VulkanPipeline.html#a76f1504c355cc84ea78c071a8e9d0e2a',1,'ne::VulkanPipeline']]], + ['bindbufferstoallvulkanpipelinesifused_2',['bindBuffersToAllVulkanPipelinesIfUsed',['../classne_1_1PipelineManager.html#ab19fcac5d073e236595bbaba0ef05289',1,'ne::PipelineManager']]], + ['binddescriptor_3',['bindDescriptor',['../classne_1_1DirectXResource.html#a584fc36f4a22a38f68b9a2f0ed9e623c',1,'ne::DirectXResource']]], + ['binddescriptorstorecreatedpipelineresources_4',['bindDescriptorsToRecreatedPipelineResources',['../classne_1_1LightingShaderResourceManager.html#a262f09bbf6a6d9d7409488b6d2ea63ea',1,'ne::LightingShaderResourceManager']]], + ['bindframedatadescriptors_5',['bindFrameDataDescriptors',['../classne_1_1VulkanPipeline.html#a521a3000b4791af8f8273c8a01126bc9',1,'ne::VulkanPipeline']]], + ['bindglobalshaderresourceviews_6',['bindGlobalShaderResourceViews',['../classne_1_1DirectXPso.html#adaa2fc853ef7eff6885030bfbc3dce8a',1,'ne::DirectXPso']]], + ['bindimage_7',['bindImage',['../classne_1_1KtxLoadingCallbackManager.html#a95f3ecf2b46433e51a59553d971c646f',1,'ne::KtxLoadingCallbackManager']]], + ['bindimageifused_8',['bindImageIfUsed',['../classne_1_1VulkanPipeline.html#a3d56db292e08242cea53ecb59443f627',1,'ne::VulkanPipeline']]], + ['bindimagetoallvulkanpipelinesifused_9',['bindImageToAllVulkanPipelinesIfUsed',['../classne_1_1PipelineManager.html#a51f3fae6d2b1ad8dd957061c4b902093',1,'ne::PipelineManager']]], + ['bindresource_10',['bindResource',['../classne_1_1GlslComputeShaderInterface.html#afc2c48e069ae78bf4487dd37a1ddc955',1,'ne::GlslComputeShaderInterface::bindResource()'],['../classne_1_1HlslComputeShaderInterface.html#a3766c12ba388a79f758f475b87e2f902',1,'ne::HlslComputeShaderInterface::bindResource()'],['../classne_1_1ComputeShaderInterface.html#a91277887a773e2aba5158ad0a53d16f9',1,'ne::ComputeShaderInterface::bindResource()']]], + ['bindshadowmapstoallpipelines_11',['bindShadowMapsToAllPipelines',['../classne_1_1VulkanShadowMapArrayIndexManager.html#a2b8342ead9df48d19292f92975fcf9c9',1,'ne::VulkanShadowMapArrayIndexManager::bindShadowMapsToAllPipelines() override'],['../classne_1_1VulkanShadowMapArrayIndexManager.html#a41a7fa9b722b6108ff567975febb1a24',1,'ne::VulkanShadowMapArrayIndexManager::bindShadowMapsToAllPipelines(ShadowMapHandle *pOnlyBindThisShadowMap)'],['../classne_1_1ShadowMapArrayIndexManager.html#a283ebedde27fe846847f6e6adcb44ad1',1,'ne::ShadowMapArrayIndexManager::bindShadowMapsToAllPipelines()'],['../classne_1_1DirectXShadowMapArrayIndexManager.html#a46e6d305747093b638fde6040f04de9e',1,'ne::DirectXShadowMapArrayIndexManager::bindShadowMapsToAllPipelines()'],['../classne_1_1ShadowMapManager.html#a9b6ce0b9dfdce9646454013a505eb901',1,'ne::ShadowMapManager::bindShadowMapsToAllPipelines()']]], + ['bindshadowmapstopipeline_12',['bindShadowMapsToPipeline',['../classne_1_1DirectXShadowMapArrayIndexManager.html#afbbb79f5322dade315bb41c8d31f4dcc',1,'ne::DirectXShadowMapArrayIndexManager::bindShadowMapsToPipeline()'],['../classne_1_1ShadowMapArrayIndexManager.html#a491d3eaf6fc69f239ae4bccc4abc6eff',1,'ne::ShadowMapArrayIndexManager::bindShadowMapsToPipeline()'],['../classne_1_1ShadowMapManager.html#ad4c128e8327e2fbed373f94a1e327cf8',1,'ne::ShadowMapManager::bindShadowMapsToPipeline()'],['../classne_1_1VulkanShadowMapArrayIndexManager.html#a0326fb92107d8e0c75cadc6f68f4aef4',1,'ne::VulkanShadowMapArrayIndexManager::bindShadowMapsToPipeline(Pipeline *pPipeline) override'],['../classne_1_1VulkanShadowMapArrayIndexManager.html#a510f973bd1cc116473917569e9449507',1,'ne::VulkanShadowMapArrayIndexManager::bindShadowMapsToPipeline(Pipeline *pPipeline, ShadowMapHandle *pOnlyBindThisShadowMap)']]], + ['bindshadowmaptopipelineifused_13',['bindShadowMapToPipelineIfUsed',['../classne_1_1VulkanShadowMapArrayIndexManager.html#abf06bfb2a6414981d9f04b04b3a0f321',1,'ne::VulkanShadowMapArrayIndexManager']]], + ['bindtexturetoshaderdescriptorarray_14',['bindTextureToShaderDescriptorArray',['../classne_1_1GlslShaderTextureResourceBinding.html#aefc86111ccf47cf222f5254cef395e92',1,'ne::GlslShaderTextureResourceBinding']]], + ['bindtopipelines_15',['bindToPipelines',['../classne_1_1GlobalShaderResourceBinding.html#ad8695f7ca8d6f45c13822772602cd4b9',1,'ne::GlobalShaderResourceBinding::bindToPipelines()'],['../classne_1_1GlslGlobalShaderResourceBinding.html#a74baa2557d77b9f62b341c22d59dce2e',1,'ne::GlslGlobalShaderResourceBinding::bindToPipelines()'],['../classne_1_1HlslGlobalShaderResourceBinding.html#aa6152c06d24057ffa6cac20118dc9bb5',1,'ne::HlslGlobalShaderResourceBinding::bindToPipelines()']]], + ['bindtowindowevents_16',['bindToWindowEvents',['../classne_1_1Window.html#a0a21ba6120db929aff3a4e9d31cd9b38',1,'ne::Window']]], + ['broadcast_17',['broadcast',['../classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#aa5768a935e524fcd12d04dd121b912e6',1,'ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>']]], + ['build_18',['build',['../classne_1_1WindowBuilder.html#a74d2120e5f0871a5d6b347f5a31b2b2b',1,'ne::WindowBuilder']]], + ['buildrotationmatrix_19',['buildRotationMatrix',['../classne_1_1MathHelpers.html#a7bff468878c5b201d276cc385db8a5ea',1,'ne::MathHelpers']]] +]; diff --git a/search/functions_10.js b/search/functions_10.js new file mode 100644 index 000000000..f02b43190 --- /dev/null +++ b/search/functions_10.js @@ -0,0 +1,59 @@ +var searchData= +[ + ['rategpusuitability_0',['rateGpuSuitability',['../classne_1_1VulkanRenderer.html#a4690a07dc723725e760768b1a454ec01',1,'ne::VulkanRenderer::rateGpuSuitability()'],['../classne_1_1DirectXRenderer.html#aa7ce37db86a74d8ec1dec1bb9db4e0c3',1,'ne::DirectXRenderer::rateGpuSuitability()']]], + ['readblobfromdisk_1',['readBlobFromDisk',['../classne_1_1HlslShader.html#ac23cb997145345f3b130f4d809e494ba',1,'ne::HlslShader']]], + ['rebindgpudatatoallpipelines_2',['rebindGpuDataToAllPipelines',['../classne_1_1LightingShaderResourceManager.html#a88316d676ec4e8badf007e1779861062',1,'ne::LightingShaderResourceManager']]], + ['rebindgpudatatopipelineifused_3',['rebindGpuDataToPipelineIfUsed',['../classne_1_1LightingShaderResourceManager.html#a57dac1214d1939093dc8dbea6be03046',1,'ne::LightingShaderResourceManager']]], + ['rebindviewsupdateindices_4',['rebindViewsUpdateIndices',['../classne_1_1DirectXDescriptorHeap.html#ade3f95e4e392a02ffb9c44c493063e50',1,'ne::DirectXDescriptorHeap']]], + ['recalculateandmarkshaderdatatobecopiedtogpu_5',['recalculateAndMarkShaderDataToBeCopiedToGpu',['../classne_1_1SpotlightNode.html#afd8dd380c787cf909b01afcbadd52783',1,'ne::SpotlightNode']]], + ['recalculatefrustum_6',['recalculateFrustum',['../classne_1_1CameraProperties.html#aed83a8c2ef397ea0aae6fd15ad626cdc',1,'ne::CameraProperties']]], + ['recalculatelighttilefrustums_7',['recalculateLightTileFrustums',['../classne_1_1LightingShaderResourceManager.html#a6eb69be2c6ba12b23d29aa978bff7d07',1,'ne::LightingShaderResourceManager::recalculateLightTileFrustums()'],['../classne_1_1Renderer.html#a7e71fc6ecff7925b5cda79dbc8dbcc5a',1,'ne::Renderer::recalculateLightTileFrustums()']]], + ['recalculatelocalmatrix_8',['recalculateLocalMatrix',['../classne_1_1SpatialNode.html#aae9f01357ae4a798be84c588dfe11ecc',1,'ne::SpatialNode']]], + ['recalculateshadowmappingshaderdata_9',['recalculateShadowMappingShaderData',['../classne_1_1DirectionalLightNode.html#a4fae44a2efa51bf7329b13ed343ee567',1,'ne::DirectionalLightNode::recalculateShadowMappingShaderData()'],['../classne_1_1SpotlightNode.html#ac6aa271da830cd1c3bbf9176c65c67f8',1,'ne::SpotlightNode::recalculateShadowMappingShaderData()']]], + ['recalculateshadowpassshaderdata_10',['recalculateShadowPassShaderData',['../classne_1_1PointLightNode.html#a98d7bd9c3bc1e607dde0c5ee6076075a',1,'ne::PointLightNode']]], + ['recalculateshape_11',['recalculateShape',['../classne_1_1PointLightNode.html#aa2a13da948ce78237400827b473a92a7',1,'ne::PointLightNode::recalculateShape()'],['../classne_1_1SpotlightNode.html#aacee3dce9ea926d06c4c1626543092f5',1,'ne::SpotlightNode::recalculateShape()']]], + ['recalculateworldmatrix_12',['recalculateWorldMatrix',['../classne_1_1SpatialNode.html#af6a9d48594b1c45a95dde0d1cf542805',1,'ne::SpatialNode']]], + ['recalculateworldmatrixfornodeandnotifychildren_13',['recalculateWorldMatrixForNodeAndNotifyChildren',['../classne_1_1SpatialNode.html#a62b2b6516e8a31a398fa1207db20bc23',1,'ne::SpatialNode']]], + ['recreatearray_14',['recreateArray',['../classne_1_1ShaderLightArray.html#a545c6de44ae5674b637ddc849599c8ba',1,'ne::ShaderLightArray']]], + ['recreateframebuffers_15',['recreateFramebuffers',['../classne_1_1ShadowMapHandle.html#a4ddc9e9db7d9976a42c8a65a48623234',1,'ne::ShadowMapHandle']]], + ['recreateshadowmaps_16',['recreateShadowMaps',['../classne_1_1ShadowMapManager.html#aa1ffc8307e6ade709bb3910fbe5289a6',1,'ne::ShadowMapManager']]], + ['recreateswapchainanddependentresources_17',['recreateSwapChainAndDependentResources',['../classne_1_1VulkanRenderer.html#ab7a93662bc19a87d3df0afe21466941a',1,'ne::VulkanRenderer']]], + ['refreshshadercache_18',['refreshShaderCache',['../classne_1_1ShaderCacheManager.html#a6d89f494055e8d601df024a240068af1',1,'ne::ShaderCacheManager::refreshShaderCache()'],['../classne_1_1ShaderManager.html#ae5a1e41b8eccc56ef48163f4d5bbd09c',1,'ne::ShaderManager::refreshShaderCache()']]], + ['registerenginefieldserializers_19',['registerEngineFieldSerializers',['../classne_1_1FieldSerializerManager.html#a6e9c2d63ba77b96244e3205d82b56359',1,'ne::FieldSerializerManager']]], + ['registernewbinding_20',['registerNewBinding',['../classne_1_1GlobalShaderResourceBindingManager.html#ab10d2fa079ca6fad271b9e78aad878be',1,'ne::GlobalShaderResourceBindingManager']]], + ['registershadowmapresource_21',['registerShadowMapResource',['../classne_1_1DirectXShadowMapArrayIndexManager.html#aca5bcd3d1658998fb438a82c6d032417',1,'ne::DirectXShadowMapArrayIndexManager::registerShadowMapResource()'],['../classne_1_1ShadowMapArrayIndexManager.html#a255378744537bc9c65de2e4979df0c58',1,'ne::ShadowMapArrayIndexManager::registerShadowMapResource()'],['../classne_1_1VulkanShadowMapArrayIndexManager.html#a0f0bdb3740849a2b1928be5bf30822a4',1,'ne::VulkanShadowMapArrayIndexManager::registerShadowMapResource()']]], + ['releasecursor_22',['releaseCursor',['../classne_1_1WindowCursor.html#a111fc33dffebee1cb78cdefc65295509',1,'ne::WindowCursor']]], + ['releaseinternalgraphicspipelinesresources_23',['releaseInternalGraphicsPipelinesResources',['../classne_1_1PipelineManager.html#ac354177b83c5c3c491143088c96a2b8b',1,'ne::PipelineManager']]], + ['releaseinternalresources_24',['releaseInternalResources',['../classne_1_1DirectXPso.html#aafe18306adda795d5e81710f28586888',1,'ne::DirectXPso::releaseInternalResources()'],['../classne_1_1Pipeline.html#a413262f60974f9c5ac973969d0aad319',1,'ne::Pipeline::releaseInternalResources()'],['../classne_1_1VulkanPipeline.html#a1e5ef7c56fa62ee2c66245e9d29ef6d9',1,'ne::VulkanPipeline::releaseInternalResources()']]], + ['releaseshader_25',['releaseShader',['../classne_1_1ShaderUser.html#a295d7fab3b2217af0e91169d766c81d4',1,'ne::ShaderUser']]], + ['releaseshaderbytecodeifnotused_26',['releaseShaderBytecodeIfNotUsed',['../classne_1_1ShaderManager.html#ac605a789b555ca9fa5a267e258ec4143',1,'ne::ShaderManager']]], + ['releaseshaderdatafrommemoryifloaded_27',['releaseShaderDataFromMemoryIfLoaded',['../classne_1_1GlslShader.html#aa755cdf70f58655629ff99038ffbd8bc',1,'ne::GlslShader::releaseShaderDataFromMemoryIfLoaded()'],['../classne_1_1Shader.html#a129137959e2dd2f04911aa4985b56a13',1,'ne::Shader::releaseShaderDataFromMemoryIfLoaded()'],['../classne_1_1HlslShader.html#a634592389dcf017cf0929200549421e5',1,'ne::HlslShader::releaseShaderDataFromMemoryIfLoaded()']]], + ['releaseshaderpackdatafrommemoryifloaded_28',['releaseShaderPackDataFromMemoryIfLoaded',['../classne_1_1ShaderPack.html#a794382bfd7d48874044a2f2e8ed28835',1,'ne::ShaderPack']]], + ['releasetextureresourceifnotused_29',['releaseTextureResourceIfNotUsed',['../classne_1_1TextureManager.html#ac77052739df05199bc528a0856c06dc5',1,'ne::TextureManager']]], + ['removeactionevent_30',['removeActionEvent',['../classne_1_1InputManager.html#aacc89ae7c39633599a9725ab2194b437',1,'ne::InputManager']]], + ['removeallcallbacks_31',['removeAllCallbacks',['../classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a8fdcd63923d32c5bf567d871872cc7f7',1,'ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>']]], + ['removeaxisevent_32',['removeAxisEvent',['../classne_1_1InputManager.html#ab2af95f125632039f477c358f79e9e3a',1,'ne::InputManager']]], + ['removeemptyarrays_33',['removeEmptyArrays',['../classne_1_1DynamicCpuWriteShaderResourceArrayManager.html#aef0cf7c6e1f1b987f64cd189aa33c95f',1,'ne::DynamicCpuWriteShaderResourceArrayManager']]], + ['removefile_34',['removeFile',['../classne_1_1ConfigManager.html#ad827081f18e99d095c89e35febf3b126',1,'ne::ConfigManager::removeFile(ConfigCategory category, std::string_view sFileName)'],['../classne_1_1ConfigManager.html#a927f98253f753d475b09aad736a0d173',1,'ne::ConfigManager::removeFile(std::filesystem::path pathToConfigFile)']]], + ['removenodefromcalledeveryframearrays_35',['removeNodeFromCalledEveryFrameArrays',['../classne_1_1World.html#acbb81246c0894866b8e61d43885d244f',1,'ne::World']]], + ['removenodefromreceivinginputarray_36',['removeNodeFromReceivingInputArray',['../classne_1_1World.html#ac82df1af642e11b236c39ed7f6936140',1,'ne::World']]], + ['removeoldestlogfiles_37',['removeOldestLogFiles',['../classne_1_1Logger.html#ad687d5425c746e747fb3dcd5c13bf2fc',1,'ne::Logger']]], + ['removeshaderifmarkedtoberemoved_38',['removeShaderIfMarkedToBeRemoved',['../classne_1_1ShaderManager.html#aac23eeac24f3692764f9bb9592441c50',1,'ne::ShaderManager']]], + ['renderer_39',['Renderer',['../classne_1_1Renderer.html#a5b5369cf5d1a7dffbde1ff17d54ce7ff',1,'ne::Renderer']]], + ['reserveindex_40',['reserveIndex',['../classne_1_1ShaderArrayIndexManager.html#ad6cb66b311cee6e85d8ffc7089a38c1b',1,'ne::ShaderArrayIndexManager']]], + ['reservenewslot_41',['reserveNewSlot',['../classne_1_1ShaderLightArray.html#aae70b6d70f55db9c6a6c7e6a4e79813c',1,'ne::ShaderLightArray']]], + ['reserveslotsinarray_42',['reserveSlotsInArray',['../classne_1_1DynamicCpuWriteShaderResourceArrayManager.html#a99cd6f7a677bf97ab36c9ee8b0cca10a',1,'ne::DynamicCpuWriteShaderResourceArrayManager']]], + ['resetcommandlistforgraphics_43',['resetCommandListForGraphics',['../classne_1_1DirectXRenderer.html#a849c0fe971f23e51a074c5ee0a5c9fae',1,'ne::DirectXRenderer']]], + ['resetframeresourcemanager_44',['resetFrameResourceManager',['../classne_1_1Renderer.html#a38b97ea2de9b0293f89fb4280618a333',1,'ne::Renderer']]], + ['resetgpuresourcemanager_45',['resetGpuResourceManager',['../classne_1_1Renderer.html#aa539114f74384e2bbdd14d5b9049e8a3',1,'ne::Renderer']]], + ['resetlightingshaderresourcemanager_46',['resetLightingShaderResourceManager',['../classne_1_1Renderer.html#a08726652b7affeb260c8719aaf469ced',1,'ne::Renderer']]], + ['resetmanagers_47',['resetManagers',['../classne_1_1GpuResourceManager.html#ae93152cc3ff47a82411870370fb6c369',1,'ne::GpuResourceManager']]], + ['resetpipelinemanager_48',['resetPipelineManager',['../classne_1_1Renderer.html#ae59727774d2199a7ea0354224ecc819d',1,'ne::Renderer']]], + ['resetpipelines_49',['resetPipelines',['../classne_1_1Material.html#ad94a42c86625c72a14036cae1e2db707',1,'ne::Material']]], + ['resolvepathtotoml_50',['resolvePathToToml',['../classne_1_1Serializable.html#aab36f16bc593429b096f1112ad5cd52d',1,'ne::Serializable']]], + ['restore_51',['restore',['../classne_1_1Window.html#a3ceabc6dc41dc22ab50ac090f16510b8',1,'ne::Window']]], + ['restoreinternalgraphicspipelinesresources_52',['restoreInternalGraphicsPipelinesResources',['../classne_1_1PipelineManager.html#a8c0e034e9ab8d38dacf0c732ce9e7bab',1,'ne::PipelineManager']]], + ['restoreinternalresources_53',['restoreInternalResources',['../classne_1_1DirectXPso.html#a50174336a707116161760fa2737c6b4e',1,'ne::DirectXPso::restoreInternalResources()'],['../classne_1_1Pipeline.html#a5ae100670225ade4287f4ba6db73ca14',1,'ne::Pipeline::restoreInternalResources()'],['../classne_1_1VulkanPipeline.html#a9e94d5f9478270ae6ba80bafba14db5b',1,'ne::VulkanPipeline::restoreInternalResources()']]], + ['rootparameter_54',['RootParameter',['../classne_1_1RootSignatureGenerator_1_1RootParameter.html#a13523f698ce9e04f408b94fdbca56c2b',1,'ne::RootSignatureGenerator::RootParameter::RootParameter()=default'],['../classne_1_1RootSignatureGenerator_1_1RootParameter.html#a77422bf3eecd38e6d1dfe21e39a184e2',1,'ne::RootSignatureGenerator::RootParameter::RootParameter(UINT iBindPoint, UINT iSpace, Type type, bool bIsTable=false, UINT iCount=1)']]], + ['rungarbagecollection_55',['runGarbageCollection',['../classne_1_1GameManager.html#a0230c880a42001e9444bd4d99b4143ab',1,'ne::GameManager']]] +]; diff --git a/search/functions_11.js b/search/functions_11.js new file mode 100644 index 000000000..9ddb07309 --- /dev/null +++ b/search/functions_11.js @@ -0,0 +1,131 @@ +var searchData= +[ + ['saveadditionalcompilationresultsinfo_0',['saveAdditionalCompilationResultsInfo',['../classne_1_1GlslShader.html#a725410d50f91868d6f853d1287eac9a6',1,'ne::GlslShader::saveAdditionalCompilationResultsInfo()'],['../classne_1_1Shader.html#a6fb50e7c63a8fb2f2b599441dcb414e8',1,'ne::Shader::saveAdditionalCompilationResultsInfo()'],['../classne_1_1HlslShader.html#a07c69fd957ba46965313bc22d8e51974',1,'ne::HlslShader::saveAdditionalCompilationResultsInfo()']]], + ['saveandresettemporaryframestatistics_1',['saveAndResetTemporaryFrameStatistics',['../classne_1_1RenderStatistics.html#afef3fee96c5750f3a71809d3c274be73',1,'ne::RenderStatistics']]], + ['saveconfigurationtodisk_2',['saveConfigurationToDisk',['../classne_1_1RenderSettings.html#a25adb8a7b5fca2c480fdc177d881774d',1,'ne::RenderSettings']]], + ['savefile_3',['saveFile',['../classne_1_1ConfigManager.html#aafc4701dd102d93a0f23d277821600c0',1,'ne::ConfigManager::saveFile(ConfigCategory category, std::string_view sFileName)'],['../classne_1_1ConfigManager.html#ad5fa7616322bc39eb8ed673b17d7df19',1,'ne::ConfigManager::saveFile(std::filesystem::path pathToConfigFile, bool bEnableBackup)'],['../classne_1_1FileDialog.html#a56e46fa4383b6710f56cd5f0e6527d41',1,'ne::FileDialog::saveFile()']]], + ['savetofile_4',['saveToFile',['../classne_1_1InputManager.html#a2d75477eb8b82c5836426adaa579b5bf',1,'ne::InputManager']]], + ['saveusedshaderconfiguration_5',['saveUsedShaderConfiguration',['../classne_1_1Pipeline.html#aa2163521b46e65c7dff05f3ccd2fb036',1,'ne::Pipeline']]], + ['selectdirectory_6',['selectDirectory',['../classne_1_1FileDialog.html#acc6217d584191571dd382886ecfd6c7c',1,'ne::FileDialog']]], + ['serializableobjectinformation_7',['SerializableObjectInformation',['../structne_1_1SerializableObjectInformation.html#aedc442ac8943e01ebe484ef561323c7a',1,'ne::SerializableObjectInformation']]], + ['serializableobjectinformationwithgcpointer_8',['SerializableObjectInformationWithGcPointer',['../structne_1_1Node_1_1SerializableObjectInformationWithGcPointer.html#a8f02d725d788ebfb96b0aa6b2374ec87',1,'ne::Node::SerializableObjectInformationWithGcPointer']]], + ['serialize_9',['Serialize',['../classne_1_1Serialize.html#a52398891b39f15c4969c39ab7a6f1836',1,'ne::Serialize']]], + ['serialize_10',['serialize',['../classne_1_1Serializable.html#a2b1c9ee24ea69f0b6231eff5a262e348',1,'ne::Serializable::serialize(std::filesystem::path pathToFile, bool bEnableBackup, const std::unordered_map< std::string, std::string > &customAttributes={})'],['../classne_1_1Serializable.html#af0a79714019d1b40ce8d063b920bbdcf',1,'ne::Serializable::serialize(toml::value &tomlData, const std::string &sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)'],['../classne_1_1Serializable.html#aa99dd41bee3fdcea40c80bf317cc590d',1,'ne::Serializable::serialize(toml::value &tomlData, Serializable *pOriginalObject, std::string sEntityId="", const std::unordered_map< std::string, std::string > &customAttributes={}, const std::optional< std::filesystem::path > &optionalPathToFile={}, bool bEnableBackup=false)']]], + ['serializefield_11',['serializeField',['../classne_1_1VectorFieldSerializer.html#a0cfc065e6e5c7538500f303a9679746e',1,'ne::VectorFieldSerializer::serializeField()'],['../classne_1_1UnorderedMapFieldSerializer.html#a5a5fd430dd41791039c18d43f72df037',1,'ne::UnorderedMapFieldSerializer::serializeField()'],['../classne_1_1StringFieldSerializer.html#a48acbfca114bda02ae99cd170b4527d5',1,'ne::StringFieldSerializer::serializeField()'],['../classne_1_1SerializableObjectFieldSerializer.html#a3d028fa3ecb3f45b53146487e32ee779',1,'ne::SerializableObjectFieldSerializer::serializeField()'],['../classne_1_1MeshDataBinaryFieldSerializer.html#a6be0a74036c9cfdec49f935ec65a8aa2',1,'ne::MeshDataBinaryFieldSerializer::serializeField()'],['../classne_1_1IFieldSerializer.html#aa931301f632674becd2ba222486bbb9e',1,'ne::IFieldSerializer::serializeField()'],['../classne_1_1IBinaryFieldSerializer.html#aecaa18ab97b27fdafe074803b223a1fb',1,'ne::IBinaryFieldSerializer::serializeField()'],['../classne_1_1GlmVecFieldSerializer.html#add662acde6c42fa2b8dde1039a52cc2b',1,'ne::GlmVecFieldSerializer::serializeField()'],['../classne_1_1PrimitiveFieldSerializer.html#aadaced28235434f98d1cb3375b4ad101',1,'ne::PrimitiveFieldSerializer::serializeField()']]], + ['serializefieldobject_12',['serializeFieldObject',['../classne_1_1SerializableObjectFieldSerializer.html#a9d90acc0ff74cb2ac1e2bceffb6ea01d',1,'ne::SerializableObjectFieldSerializer']]], + ['serializemultiple_13',['serializeMultiple',['../classne_1_1Serializable.html#a1f76ea78f80fb43e5e481277a930b364',1,'ne::Serializable']]], + ['serializenodetree_14',['serializeNodeTree',['../classne_1_1Node.html#a40e9b140812be7a938906e36f6e6188b',1,'ne::Node']]], + ['serializeshaderincludetree_15',['serializeShaderIncludeTree',['../structne_1_1ShaderDescription.html#a9e41b60f477834ce5e4d88223f8ee75b',1,'ne::ShaderDescription']]], + ['set_16',['set',['../classne_1_1PipelineSharedPtr.html#a37f875482488fca84e6a82e5f0524705',1,'ne::PipelineSharedPtr']]], + ['setactivecamera_17',['setActiveCamera',['../classne_1_1CameraManager.html#a5e5b95f80a0d2bb1ede34a07f1c48668',1,'ne::CameraManager']]], + ['setambientlight_18',['setAmbientLight',['../classne_1_1LightingShaderResourceManager.html#a2b7f5ff1ff34b822c2e54afb7427fccd',1,'ne::LightingShaderResourceManager::setAmbientLight()'],['../classne_1_1EnvironmentNode.html#a25cab70a6a87acfb2db3b8a01461e0f6',1,'ne::EnvironmentNode::setAmbientLight()']]], + ['setantialiasingquality_19',['setAntialiasingQuality',['../classne_1_1RenderSettings.html#a5e7b93c67a1460ef9fc82a14ff7721ca',1,'ne::RenderSettings']]], + ['setcallbackfortimeout_20',['setCallbackForTimeout',['../classne_1_1Timer.html#adda0aa36c796bf3d9087f50d1a3388b8',1,'ne::Timer']]], + ['setcallbackvalidator_21',['setCallbackValidator',['../classne_1_1Timer.html#a42298aa372846901f5139e57a96b9d55',1,'ne::Timer']]], + ['setcameramode_22',['setCameraMode',['../classne_1_1CameraNode.html#a95c8976cf155363baf45bc5775a273b7',1,'ne::CameraNode']]], + ['setcursor_23',['setCursor',['../classne_1_1Window.html#a6a66b1291fda77f5fc9f3e0796c24b73',1,'ne::Window']]], + ['setcursorvisibility_24',['setCursorVisibility',['../classne_1_1Window.html#a85a2d3ea44db5ff3e1d35a4e8e2a7416',1,'ne::Window']]], + ['setdefaultcursor_25',['setDefaultCursor',['../classne_1_1Window.html#a49e5e779bf99e890ce3543be742596e6',1,'ne::Window']]], + ['setdiffusecolor_26',['setDiffuseColor',['../classne_1_1Material.html#a3f3ef9edcab7dc00f3449fcefee66bea',1,'ne::Material']]], + ['setdiffusetexture_27',['setDiffuseTexture',['../classne_1_1Material.html#a44c6e1c40cc75ce6e8f93b30c60ad8f3',1,'ne::Material']]], + ['setenable_28',['setEnable',['../classne_1_1Timer.html#a1e4b01f28b5d3436354dd5b382f273c3',1,'ne::Timer']]], + ['setenabletransparency_29',['setEnableTransparency',['../classne_1_1Material.html#a5e1abba43e7ecc07d1740bc75872c050',1,'ne::Material']]], + ['setfarclipplanedistance_30',['setFarClipPlaneDistance',['../classne_1_1CameraProperties.html#ac53a9666cf237128fc51aa723114770e',1,'ne::CameraProperties']]], + ['setfov_31',['setFov',['../classne_1_1CameraProperties.html#a0f4b92ad961e55ec6b561f95aac21fd1',1,'ne::CameraProperties']]], + ['setfpslimit_32',['setFpsLimit',['../classne_1_1RenderSettings.html#a573b58c8b74b72d7fcd8f78f8e09f230',1,'ne::RenderSettings']]], + ['setgameinstance_33',['setGameInstance',['../classne_1_1GameManager.html#aead966795a4312f88b60b003ea0a42d7',1,'ne::GameManager']]], + ['setgarbagecollectorruninterval_34',['setGarbageCollectorRunInterval',['../classne_1_1GameManager.html#a3c41dc82e4e6715a3ba543281b6eb63f',1,'ne::GameManager::setGarbageCollectorRunInterval()'],['../classne_1_1GameInstance.html#adcc2960f6fd8aa93c95b6d7f7eb8ee69',1,'ne::GameInstance::setGarbageCollectorRunInterval()']]], + ['setgputouse_35',['setGpuToUse',['../classne_1_1RenderSettings.html#a14aa87d43e3d4575b42f4bc2c10891ff',1,'ne::RenderSettings']]], + ['seticon_36',['setIcon',['../classne_1_1Window.html#af50d6a10dbf861b7450ff633e5f15aa9',1,'ne::Window']]], + ['setignoreinput_37',['setIgnoreInput',['../classne_1_1EditorCameraNode.html#a7e74373b5cabafbec454c8bc45595932',1,'ne::EditorCameraNode']]], + ['setiscalledeveryframe_38',['setIsCalledEveryFrame',['../classne_1_1Node.html#a9294c7c58a8b4f85b7674c55751f4b13',1,'ne::Node']]], + ['setisreceivinginput_39',['setIsReceivingInput',['../classne_1_1Node.html#a8ecdaaf48f89ae036a48ecb38d3ac382',1,'ne::Node']]], + ['setisvisible_40',['setIsVisible',['../classne_1_1MeshNode.html#aaf28d800c9aaaaa16f20ff190a913667',1,'ne::MeshNode']]], + ['setlightcolor_41',['setLightColor',['../classne_1_1DirectionalLightNode.html#abdf4d81d4378056e13447c6ab21e1e91',1,'ne::DirectionalLightNode::setLightColor()'],['../classne_1_1PointLightNode.html#a7ebcc78564997d232927c47c452e2ca3',1,'ne::PointLightNode::setLightColor()'],['../classne_1_1SpotlightNode.html#a7ca35e137d40e80b55e6e5a5a0975f4d',1,'ne::SpotlightNode::setLightColor(const glm::vec3 &color)']]], + ['setlightdistance_42',['setLightDistance',['../classne_1_1SpotlightNode.html#a80dedcd160957e4a0d06c20de8c904d3',1,'ne::SpotlightNode::setLightDistance()'],['../classne_1_1PointLightNode.html#aede9df986937bba7876b54fc2dd9a37c',1,'ne::PointLightNode::setLightDistance()']]], + ['setlightinnerconeangle_43',['setLightInnerConeAngle',['../classne_1_1SpotlightNode.html#a72b25ed6e8dd9dc8c3fb6d18dc79cced',1,'ne::SpotlightNode']]], + ['setlightintensity_44',['setLightIntensity',['../classne_1_1DirectionalLightNode.html#a6d6675f5537e58c71b0282e221e65bcb',1,'ne::DirectionalLightNode::setLightIntensity()'],['../classne_1_1PointLightNode.html#ac333b558aa1b9531b5b66f1f0c97113b',1,'ne::PointLightNode::setLightIntensity()'],['../classne_1_1SpotlightNode.html#a773f1e3cbe5277c253b8cdcac5a48946',1,'ne::SpotlightNode::setLightIntensity(float intensity)']]], + ['setlightouterconeangle_45',['setLightOuterConeAngle',['../classne_1_1SpotlightNode.html#aa370282a587a18d263394791da885dbc',1,'ne::SpotlightNode']]], + ['setmaterial_46',['setMaterial',['../classne_1_1MeshNode.html#a600afde2008f201682f59751d175efb7',1,'ne::MeshNode']]], + ['setmeshdata_47',['setMeshData',['../classne_1_1MeshNode.html#a4e9fc27cf88ec1ec90d732b8fe71737c',1,'ne::MeshNode::setMeshData(const MeshData &meshData)'],['../classne_1_1MeshNode.html#a0d4e8cd51eaf440c9a77a715d8543e24',1,'ne::MeshNode::setMeshData(MeshData &&meshData)']]], + ['setnearclipplanedistance_48',['setNearClipPlaneDistance',['../classne_1_1CameraProperties.html#afe001448fa25b4a8ed57966220e2cba5',1,'ne::CameraProperties']]], + ['setnodename_49',['setNodeName',['../classne_1_1Node.html#aa75cedd320fd643ad154bdceb4b0aad1',1,'ne::Node']]], + ['setobjectdebugonlyname_50',['setObjectDebugOnlyName',['../classne_1_1VulkanRenderer.html#a73e8afa9d6e86aeb33be8fa1c453c8e3',1,'ne::VulkanRenderer']]], + ['setopacity_51',['setOpacity',['../classne_1_1Window.html#a75621710e80bc9b618929d535619e2e8',1,'ne::Window::setOpacity()'],['../classne_1_1Material.html#a2c1e2ef9f66f9f8e69658de3bb3fb491',1,'ne::Material::setOpacity()']]], + ['setorbitaldistancetotarget_52',['setOrbitalDistanceToTarget',['../classne_1_1CameraNode.html#adc8a5c0555ee5de59db5568193884768',1,'ne::CameraNode']]], + ['setorbitalrotation_53',['setOrbitalRotation',['../classne_1_1CameraNode.html#a0d076da378e660ce49629bdebde38340',1,'ne::CameraNode']]], + ['setorbitaltargetlocation_54',['setOrbitalTargetLocation',['../classne_1_1CameraNode.html#a55ef742db7eefc40844697b5c6062276',1,'ne::CameraNode']]], + ['setoutputadapter_55',['setOutputAdapter',['../classne_1_1DirectXRenderer.html#a942ec924b07f40819458bd780037d26c',1,'ne::DirectXRenderer']]], + ['setpreferredrenderer_56',['setPreferredRenderer',['../classne_1_1RenderSettings.html#a11363c652eb1ee875f816c8d4bfd8266',1,'ne::RenderSettings::setPreferredRenderer()'],['../classne_1_1Window.html#a153750b05d15b500bcc4e62a4b5f1a27',1,'ne::Window::setPreferredRenderer()']]], + ['setrefreshrate_57',['setRefreshRate',['../classne_1_1RenderSettings.html#acb5f17b373b5e04b619f4242a0384c22',1,'ne::RenderSettings']]], + ['setrelativelocation_58',['setRelativeLocation',['../classne_1_1SpatialNode.html#a15d5413bbb88c9b259e8e9e48a271ab6',1,'ne::SpatialNode']]], + ['setrelativerotation_59',['setRelativeRotation',['../classne_1_1SpatialNode.html#a32914b6236f0d2675736be0f1ea1cac2',1,'ne::SpatialNode']]], + ['setrelativescale_60',['setRelativeScale',['../classne_1_1SpatialNode.html#aecf859b09995cfac54203d12d5527627',1,'ne::SpatialNode']]], + ['setrenderer_61',['setRenderer',['../classne_1_1RenderSettings.html#ae45e242d04d3dd5c67da39daa8199e75',1,'ne::RenderSettings']]], + ['setrendererconfiguration_62',['setRendererConfiguration',['../classne_1_1ShaderPack.html#ab663e6d76007cf72fa73d27a080b11de',1,'ne::ShaderPack']]], + ['setrendererconfigurationforshaders_63',['setRendererConfigurationForShaders',['../classne_1_1ShaderManager.html#a6bd5b94c95221216d98e690d502c5336',1,'ne::ShaderManager']]], + ['setrenderresolution_64',['setRenderResolution',['../classne_1_1RenderSettings.html#a7801c6f424fc71df5df9663120b2cfd6',1,'ne::RenderSettings']]], + ['setrendertargetsize_65',['setRenderTargetSize',['../classne_1_1CameraProperties.html#a8949fc9efca6bc167ba6bd32e3f9e646',1,'ne::CameraProperties']]], + ['setroughness_66',['setRoughness',['../classne_1_1Material.html#a120643a43142cb24e81bbec6dd8f6dc2',1,'ne::Material']]], + ['setserialize_67',['setSerialize',['../classne_1_1Node.html#ad8cb324f9de9b495f7bc223356540a44',1,'ne::Node']]], + ['setshaderconstants_68',['setShaderConstants',['../classne_1_1Pipeline.html#aa78fa21db079ad0a9f2dbf5b397f2bfe',1,'ne::Pipeline']]], + ['setshadercpuwriteresourcebinding_69',['setShaderCpuWriteResourceBinding',['../classne_1_1MeshNode.html#adf53c8e5bcfdc8cbb3d1bc359ff01273',1,'ne::MeshNode::setShaderCpuWriteResourceBinding()'],['../classne_1_1Material.html#a1bd758e7acff200a7b93ca29304cbbcd',1,'ne::Material::setShaderCpuWriteResourceBinding()']]], + ['setshadertextureresourcebinding_70',['setShaderTextureResourceBinding',['../classne_1_1MeshNode.html#ac6098a2228cffcf6caadeaf98546bbda',1,'ne::MeshNode::setShaderTextureResourceBinding()'],['../classne_1_1Material.html#a799ecf3e2da01410a1823f6132a12fa9',1,'ne::Material::setShaderTextureResourceBinding()']]], + ['setshadowquality_71',['setShadowQuality',['../classne_1_1RenderSettings.html#a80cfef7ef20061158702642785c2be26',1,'ne::RenderSettings']]], + ['setspecularcolor_72',['setSpecularColor',['../classne_1_1Material.html#ac7fa00d994567a8e00e010bca321253d',1,'ne::Material']]], + ['settexturefilteringquality_73',['setTextureFilteringQuality',['../classne_1_1RenderSettings.html#ab0eb617b2ad2b3d3dfd12cfdc4dd35ba',1,'ne::RenderSettings']]], + ['settexturequality_74',['setTextureQuality',['../classne_1_1RenderSettings.html#aef1193285e4a7a670969854d9e5874a2',1,'ne::RenderSettings']]], + ['settickgroup_75',['setTickGroup',['../classne_1_1Node.html#a138f69f892f8b80a89262b8a5f7625b8',1,'ne::Node']]], + ['settitle_76',['setTitle',['../classne_1_1Window.html#addd9d36370af92c039fe462f510470af',1,'ne::Window']]], + ['setupdatedresources_77',['setUpdatedResources',['../classne_1_1ShadowMapHandle.html#ad8a418c66c28f7c0c573461909ee7d64',1,'ne::ShadowMapHandle']]], + ['setuprenderstats_78',['setupRenderStats',['../classne_1_1Renderer.html#a404ad787d39833a8f7d4f66815c55793',1,'ne::Renderer']]], + ['setvalue_79',['setValue',['../classne_1_1ConfigManager.html#a96cb16396d2789a15ef1e0bec6c8c144',1,'ne::ConfigManager']]], + ['setvsyncenabled_80',['setVsyncEnabled',['../classne_1_1RenderSettings.html#a0c1620f0b1a5dc7b569dfdf549f08287',1,'ne::RenderSettings']]], + ['setworldlocation_81',['setWorldLocation',['../classne_1_1SpatialNode.html#a5505c98b284aaf4037e8bf2e31305f2b',1,'ne::SpatialNode']]], + ['setworldrotation_82',['setWorldRotation',['../classne_1_1SpatialNode.html#afb2f513f7406d324c9927af5fec07c26',1,'ne::SpatialNode']]], + ['setworldscale_83',['setWorldScale',['../classne_1_1SpatialNode.html#a95c51087d2b8e3bd43ca218de57a7cca',1,'ne::SpatialNode']]], + ['shader_84',['Shader',['../classne_1_1Shader.html#a636024292405941806fc15521ce9b287',1,'ne::Shader']]], + ['shaderarrayindex_85',['ShaderArrayIndex',['../classne_1_1ShaderArrayIndex.html#a121d1c966c6d5f1f0df78386b996b7e6',1,'ne::ShaderArrayIndex']]], + ['shaderarrayindexmanager_86',['ShaderArrayIndexManager',['../classne_1_1ShaderArrayIndexManager.html#a5a424260884f301156e09359e65902ec',1,'ne::ShaderArrayIndexManager']]], + ['shadercachemanager_87',['ShaderCacheManager',['../classne_1_1ShaderCacheManager.html#a0b053d2a069dcbdf7dd7c16358eaa517',1,'ne::ShaderCacheManager']]], + ['shaderconfiguration_88',['ShaderConfiguration',['../classne_1_1ShaderConfiguration.html#aaaeb988d1f0747062c84af9bf88ce69a',1,'ne::ShaderConfiguration']]], + ['shadercpuwriteresourcebinding_89',['ShaderCpuWriteResourceBinding',['../classne_1_1ShaderCpuWriteResourceBinding.html#af6c9a2063ccf95219b02b677246af7ff',1,'ne::ShaderCpuWriteResourceBinding']]], + ['shadercpuwriteresourcebindingmanager_90',['ShaderCpuWriteResourceBindingManager',['../classne_1_1ShaderCpuWriteResourceBindingManager.html#a1f14598de45ac6b859feed077efe526f',1,'ne::ShaderCpuWriteResourceBindingManager']]], + ['shadercpuwriteresourcebindinguniqueptr_91',['ShaderCpuWriteResourceBindingUniquePtr',['../classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html#abd1d66d75b317333b829c1f9a864e29b',1,'ne::ShaderCpuWriteResourceBindingUniquePtr::ShaderCpuWriteResourceBindingUniquePtr(ShaderCpuWriteResourceBindingUniquePtr &&other) noexcept'],['../classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html#ac6eb58a83bfc18d5f2e1847c9dcfd1b0',1,'ne::ShaderCpuWriteResourceBindingUniquePtr::ShaderCpuWriteResourceBindingUniquePtr(ShaderCpuWriteResourceBindingManager *pManager, ShaderCpuWriteResourceBinding *pResource)']]], + ['shaderdescription_92',['ShaderDescription',['../structne_1_1ShaderDescription.html#a2c70945fe59e6a3284dd2aa7dd1defab',1,'ne::ShaderDescription::ShaderDescription(ShaderDescription &&other) noexcept=default'],['../structne_1_1ShaderDescription.html#ab5bfedd7ce317fd80e304006ad5e4a67',1,'ne::ShaderDescription::ShaderDescription(const ShaderDescription &other) noexcept=default'],['../structne_1_1ShaderDescription.html#a97a6839e98880d6e3f3644534de1d3f6',1,'ne::ShaderDescription::ShaderDescription(std::string_view sShaderName, const std::filesystem::path &pathToShaderFile, ShaderType shaderType, std::optional< VertexFormat > vertexFormat, const std::string &sShaderEntryFunctionName, const std::unordered_map< std::string, std::string > &definedShaderMacros)']]], + ['shaderlightarray_93',['ShaderLightArray',['../classne_1_1ShaderLightArray.html#a82364a0934412cb48f7ac3f8d2a71696',1,'ne::ShaderLightArray']]], + ['shaderlightarrayslot_94',['ShaderLightArraySlot',['../classne_1_1ShaderLightArraySlot.html#aae03ed0253b5a738e8a4d40598c2f931',1,'ne::ShaderLightArraySlot']]], + ['shadermanager_95',['ShaderManager',['../classne_1_1ShaderManager.html#a7b7db57803fdfd091373e3efc2a23808',1,'ne::ShaderManager']]], + ['shaderpack_96',['ShaderPack',['../classne_1_1ShaderPack.html#a42ceba304a51e8c5585dbe9c1771f869',1,'ne::ShaderPack']]], + ['shaderresourcebindingbase_97',['ShaderResourceBindingBase',['../classne_1_1ShaderResourceBindingBase.html#a605b56970e874418a368dda9eca826ef',1,'ne::ShaderResourceBindingBase']]], + ['shadertextureresourcebinding_98',['ShaderTextureResourceBinding',['../classne_1_1ShaderTextureResourceBinding.html#aa9ee18e305ac2dd28e568b26547ed002',1,'ne::ShaderTextureResourceBinding']]], + ['shadertextureresourcebindingmanager_99',['ShaderTextureResourceBindingManager',['../classne_1_1ShaderTextureResourceBindingManager.html#a3c5f6cd000c9ca1b878c86f10d505d1e',1,'ne::ShaderTextureResourceBindingManager']]], + ['shadertextureresourcebindinguniqueptr_100',['ShaderTextureResourceBindingUniquePtr',['../classne_1_1ShaderTextureResourceBindingUniquePtr.html#a9c914f9cf46978f0f5ecc5b012a32e65',1,'ne::ShaderTextureResourceBindingUniquePtr::ShaderTextureResourceBindingUniquePtr(ShaderTextureResourceBindingUniquePtr &&other) noexcept'],['../classne_1_1ShaderTextureResourceBindingUniquePtr.html#a11790c77dc523ed2e7f1226cab6e62dc',1,'ne::ShaderTextureResourceBindingUniquePtr::ShaderTextureResourceBindingUniquePtr(ShaderTextureResourceBindingManager *pManager, ShaderTextureResourceBinding *pResource)']]], + ['shaderuser_101',['ShaderUser',['../classne_1_1ShaderUser.html#ac15d8ee87b0b270395bd82996295731d',1,'ne::ShaderUser']]], + ['shadowmaparrayindexmanager_102',['ShadowMapArrayIndexManager',['../classne_1_1ShadowMapArrayIndexManager.html#a1f0f881fdde61426686c58790e19f391',1,'ne::ShadowMapArrayIndexManager']]], + ['shadowmaphandle_103',['ShadowMapHandle',['../classne_1_1ShadowMapHandle.html#a8f8e2251279ff44699033533ca53b77b',1,'ne::ShadowMapHandle']]], + ['shadowmapmanager_104',['ShadowMapManager',['../classne_1_1ShadowMapManager.html#ab2160d05ed38e5ab2ae6ac7f5011f6a5',1,'ne::ShadowMapManager']]], + ['show_105',['show',['../classne_1_1Window.html#a495b1c4bccac831b35bd2499188dd197',1,'ne::Window']]], + ['showerror_106',['showError',['../classne_1_1Error.html#ade90dc178bddb9810268ecdcf987b5ec',1,'ne::Error']]], + ['showerrorifnotonmainthread_107',['showErrorIfNotOnMainThread',['../classne_1_1Window.html#a8f32169e1d18621b2a138b5b8024040e',1,'ne::Window']]], + ['shrinkarray_108',['shrinkArray',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#ac52e605871bb0ec51f51800741dcbe25',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['shrinkheapifpossible_109',['shrinkHeapIfPossible',['../classne_1_1DirectXDescriptorHeap.html#a65b75fd5fba26eb90482730d7636079d',1,'ne::DirectXDescriptorHeap']]], + ['sourcelocationtoinfo_110',['sourceLocationToInfo',['../classne_1_1Error.html#a95e64d00cb9ccbab81ee925d5f2deb3f',1,'ne::Error']]], + ['spatialnode_111',['SpatialNode',['../classne_1_1SpatialNode.html#ac02b39a7177a89acf9613d4b1bb9f203',1,'ne::SpatialNode']]], + ['spawn_112',['spawn',['../classne_1_1Node.html#a2d0cdd65e3886dd5e069a099701f0124',1,'ne::Node']]], + ['spawneditornodesfornewworld_113',['spawnEditorNodesForNewWorld',['../classne_1_1EditorGameInstance.html#a396c05b1176a5d1d5b915416106754af',1,'ne::EditorGameInstance']]], + ['sphere_114',['Sphere',['../structne_1_1Sphere.html#add0f174b3583a3acb6cb4eedbf02b747',1,'ne::Sphere::Sphere()=default'],['../structne_1_1Sphere.html#a7d17f66b91d761f31a51de2052521771',1,'ne::Sphere::Sphere(const glm::vec3 &center, float radius)']]], + ['splitstring_115',['splitString',['../classne_1_1InputManager.html#a14249a877d01c2e11358beceb650333e',1,'ne::InputManager']]], + ['spotlightnode_116',['SpotlightNode',['../classne_1_1SpotlightNode.html#a199b559a25939ea3c00dab93e7123107',1,'ne::SpotlightNode']]], + ['start_117',['start',['../classne_1_1Timer.html#ac46cfad93a59a7cfe0671783d0b3d9ad',1,'ne::Timer']]], + ['startdepthonlyrenderpass_118',['startDepthOnlyRenderPass',['../classne_1_1VulkanRenderer.html#a4f4d6c9fdc4a49289136ba7d47946b38',1,'ne::VulkanRenderer']]], + ['startmainrenderpass_119',['startMainRenderPass',['../classne_1_1VulkanRenderer.html#ac02641d6d9eb0a4da9d07eca2f6df847',1,'ne::VulkanRenderer']]], + ['startshadowmappingrenderpass_120',['startShadowMappingRenderPass',['../classne_1_1VulkanRenderer.html#adc006ddec7ab5d6a4e495efaff01058a',1,'ne::VulkanRenderer']]], + ['stop_121',['stop',['../classne_1_1ThreadPool.html#a9e37ae656bbc187039137e24e92dd90c',1,'ne::ThreadPool::stop()'],['../classne_1_1Timer.html#a04379b8607c06511158f5c2f3ee7f173',1,'ne::Timer::stop()']]], + ['stopanddisablecreatedtimers_122',['stopAndDisableCreatedTimers',['../classne_1_1GameInstance.html#a2e23df6476d30d752135ac6229e9b20f',1,'ne::GameInstance']]], + ['stringtowstring_123',['stringToWstring',['../classne_1_1Globals.html#ac533ec3312fca7269fb0a17e5e3d439f',1,'ne::Globals']]], + ['submitforexecution_124',['submitForExecution',['../classne_1_1ComputeShaderInterface.html#a0181a3c1bebad87d5824ba71ab73cf3d',1,'ne::ComputeShaderInterface']]], + ['submitwaitdestroyonetimesubmitcommandbuffer_125',['submitWaitDestroyOneTimeSubmitCommandBuffer',['../classne_1_1VulkanRenderer.html#a5be101433f7df8f6fedfd7d4d3f4985e',1,'ne::VulkanRenderer']]], + ['subscribe_126',['subscribe',['../classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a863d2fe913a2ebc3a505c15fe4e343fd',1,'ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>']]], + ['switchtonextframeresource_127',['switchToNextFrameResource',['../classne_1_1FrameResourceManager.html#a36f7c0aac591a488fe24dd0048320f7f',1,'ne::FrameResourceManager']]] +]; diff --git a/search/functions_12.js b/search/functions_12.js new file mode 100644 index 000000000..b8705f5e1 --- /dev/null +++ b/search/functions_12.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['texturehandle_0',['TextureHandle',['../classne_1_1TextureHandle.html#a3ed805f9d0b3a86834879d8bf50974e2',1,'ne::TextureHandle']]], + ['texturemanager_1',['TextureManager',['../classne_1_1TextureManager.html#a9ad02e8d158593504b08ce1eae1a7ca0',1,'ne::TextureManager']]], + ['threadpool_2',['ThreadPool',['../classne_1_1ThreadPool.html#a56117439a6897fab5e8ae84c3c754e69',1,'ne::ThreadPool']]], + ['timer_3',['Timer',['../classne_1_1Timer.html#ac7b56b08458195237f492738e18bd7f5',1,'ne::Timer']]], + ['timerthread_4',['timerThread',['../classne_1_1Timer.html#a0f17e0b04cf2f82037a6ce01746a4d33',1,'ne::Timer']]], + ['transitionimagelayout_5',['transitionImageLayout',['../classne_1_1VulkanRenderer.html#a363deaf734f4f58cd5106a0c8a0802ae',1,'ne::VulkanRenderer']]], + ['triggeractionevents_6',['triggerActionEvents',['../classne_1_1GameManager.html#a153301dbfab661f9095d3686dfd9fe24',1,'ne::GameManager']]], + ['triggeraxisevents_7',['triggerAxisEvents',['../classne_1_1GameManager.html#aa4399a39cea06629d980609044de20c3',1,'ne::GameManager']]], + ['tryreservefreeheapindextocreatedescriptor_8',['tryReserveFreeHeapIndexToCreateDescriptor',['../classne_1_1ContinuousDirectXDescriptorRange.html#a1d8cf28f91e2313cdc90fb1351d98717',1,'ne::ContinuousDirectXDescriptorRange']]] +]; diff --git a/search/functions_13.js b/search/functions_13.js new file mode 100644 index 000000000..0bfe3bfdb --- /dev/null +++ b/search/functions_13.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['unbindfromwindowevents_0',['unbindFromWindowEvents',['../classne_1_1Window.html#a21b7df05cab9cac3a9fe63c74d326670',1,'ne::Window']]], + ['unlockchildren_1',['unlockChildren',['../classne_1_1Node.html#a00e575b462b1ef5aff5d2b63e03a1d43',1,'ne::Node']]], + ['unregisterbinding_2',['unregisterBinding',['../classne_1_1GlobalShaderResourceBinding.html#a9ce6edba5ef9b3d16d58f04a37cb38c8',1,'ne::GlobalShaderResourceBinding::unregisterBinding()'],['../classne_1_1GlobalShaderResourceBindingManager.html#a418b19ebb88d8e7886ca40c313285021',1,'ne::GlobalShaderResourceBindingManager::unregisterBinding()']]], + ['unregistershadowmapresource_3',['unregisterShadowMapResource',['../classne_1_1DirectXShadowMapArrayIndexManager.html#ad3640175d6093d4a9ac48964706ffdf9',1,'ne::DirectXShadowMapArrayIndexManager::unregisterShadowMapResource()'],['../classne_1_1ShadowMapArrayIndexManager.html#a430cb961ba89ed63febcdc08e71b65dc',1,'ne::ShadowMapArrayIndexManager::unregisterShadowMapResource()'],['../classne_1_1VulkanShadowMapArrayIndexManager.html#a5b3545d2478a89527736c376570c99a6',1,'ne::VulkanShadowMapArrayIndexManager::unregisterShadowMapResource()']]], + ['unsubscribe_4',['unsubscribe',['../classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a78174056c24c62fe7f2d2b6bfab2a850',1,'ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>']]], + ['updatebindingsinallpipelines_5',['updateBindingsInAllPipelines',['../classne_1_1ShaderLightArray.html#a0ab06a0a73281fe8a8c3a55f3dac39fe',1,'ne::ShaderLightArray']]], + ['updatecameraproperties_6',['updateCameraProperties',['../classne_1_1CameraNode.html#ad018c29c128fa28032e2ad3c8e96ec5c',1,'ne::CameraNode']]], + ['updatedata_7',['updateData',['../classne_1_1DynamicCpuWriteShaderResourceArraySlot.html#a8087b79c633ad3deb6d0d396280eb3d5',1,'ne::DynamicCpuWriteShaderResourceArraySlot']]], + ['updatedataandsubmitshader_8',['updateDataAndSubmitShader',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html#aeae65e9c819111f67d18377731b92ad3',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader']]], + ['updatedescriptorsforpipelineresource_9',['updateDescriptorsForPipelineResource',['../classne_1_1LightingShaderResourceManager.html#aab34aa3877cdbeef9b0edeef19fbec7d',1,'ne::LightingShaderResourceManager']]], + ['updateframeconstantsbuffer_10',['updateFrameConstantsBuffer',['../classne_1_1Renderer.html#a46fe2980b8802431726d3da64ea6aeeb',1,'ne::Renderer']]], + ['updateindex_11',['updateIndex',['../classne_1_1DynamicCpuWriteShaderResourceArraySlot.html#ab5817f7d2faf274dfc0f368abbe8ffd6',1,'ne::DynamicCpuWriteShaderResourceArraySlot']]], + ['updatemsaaqualitylevelcount_12',['updateMsaaQualityLevelCount',['../classne_1_1DirectXRenderer.html#a1e14b11fc60b1c51260bd1bb788b8b51',1,'ne::DirectXRenderer']]], + ['updatemsaasamplecount_13',['updateMsaaSampleCount',['../classne_1_1VulkanRenderer.html#a8a8c74ba10f06441ddcdc4cb989e7aec',1,'ne::VulkanRenderer']]], + ['updatepipelinebinding_14',['updatePipelineBinding',['../classne_1_1ShaderLightArray.html#a9c45a8a69b61832fb3563a00baa685c9',1,'ne::ShaderLightArray']]], + ['updateresource_15',['updateResource',['../classne_1_1ShaderCpuWriteResourceBinding.html#a33648104f7e366bbda652e92a4742b26',1,'ne::ShaderCpuWriteResourceBinding']]], + ['updateresources_16',['updateResources',['../classne_1_1ShaderCpuWriteResourceBindingManager.html#a16c272216f9b3d5953290e14551c794e',1,'ne::ShaderCpuWriteResourceBindingManager::updateResources()'],['../classne_1_1LightingShaderResourceManager.html#a2e40c621b5b2f81c8bf2213ce4bb3ee6',1,'ne::LightingShaderResourceManager::updateResources()']]], + ['updateresourcesfornextframe_17',['updateResourcesForNextFrame',['../classne_1_1Renderer.html#a4fb5b5b7cdc654945fd7b7f90352fe65',1,'ne::Renderer']]], + ['updateshaderconfiguration_18',['updateShaderConfiguration',['../classne_1_1ShaderConfiguration.html#a7a25c478bba8426de264bb787416b970',1,'ne::ShaderConfiguration::updateShaderConfiguration()'],['../classne_1_1Renderer.html#af25df43af497e19e2c5cdb5a64c2c77e',1,'ne::Renderer::updateShaderConfiguration()']]], + ['updateshaderresourcestousechangedmaterialpipelines_19',['updateShaderResourcesToUseChangedMaterialPipelines',['../classne_1_1MeshNode.html#a37d0fdab3342915497cdc86b00ba30ba',1,'ne::MeshNode']]], + ['updateslotdata_20',['updateSlotData',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a007cd2ff002832ac03c2584e9b2a51a5',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['updateslotsmarkedasneedsupdate_21',['updateSlotsMarkedAsNeedsUpdate',['../classne_1_1ShaderLightArray.html#a57ff63eebae0040b8a82ced015c22662',1,'ne::ShaderLightArray']]], + ['updatetargettimetorenderframe_22',['updateTargetTimeToRenderFrame',['../classne_1_1Renderer.html#a74b201ad1fae3dafa959c9002a4aec86',1,'ne::Renderer']]], + ['updatetonewpipeline_23',['updateToNewPipeline',['../classne_1_1Material.html#a55308869a89ec874f334de5843030c85',1,'ne::Material']]], + ['uploadbuffer_24',['UploadBuffer',['../classne_1_1UploadBuffer.html#ab31ad949c3d972cbfa6bda83d3fd8485',1,'ne::UploadBuffer']]], + ['usenewtexture_25',['useNewTexture',['../classne_1_1ShaderTextureResourceBinding.html#add4e143f594bbe46d08065f0b8bd03ca',1,'ne::ShaderTextureResourceBinding::useNewTexture()'],['../classne_1_1GlslShaderTextureResourceBinding.html#af63076ba6c94ff19e3b1268b77be8041',1,'ne::GlslShaderTextureResourceBinding::useNewTexture()'],['../classne_1_1HlslShaderTextureResourceBinding.html#a9a3ab85bf79d675a5d26c5c3390a276c',1,'ne::HlslShaderTextureResourceBinding::useNewTexture()']]] +]; diff --git a/search/functions_14.js b/search/functions_14.js new file mode 100644 index 000000000..106fd7cf6 --- /dev/null +++ b/search/functions_14.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['vulkanpipeline_0',['VulkanPipeline',['../classne_1_1VulkanPipeline.html#ae0287419c4562b26ff727a12ab84a79c',1,'ne::VulkanPipeline']]], + ['vulkanrenderer_1',['VulkanRenderer',['../classne_1_1VulkanRenderer.html#a2cd8cc2433f8da659e5e72f315f7ec4c',1,'ne::VulkanRenderer']]], + ['vulkanresource_2',['VulkanResource',['../classne_1_1VulkanResource.html#a86c3e8d31717ebe606c73583c427b296',1,'ne::VulkanResource::VulkanResource(VulkanResourceManager *pResourceManager, const std::string &sResourceName, std::variant< VkBuffer, VkImage > pInternalResource, bool isStorageResource, VmaAllocation pResourceMemory, unsigned int iElementSizeInBytes, unsigned int iElementCount)'],['../classne_1_1VulkanResource.html#a1726eea36c762dad94d8126dcf9d93cd',1,'ne::VulkanResource::VulkanResource(VulkanResourceManager *pResourceManager, const std::string &sResourceName, ktxVulkanTexture ktxTexture)']]], + ['vulkanresourcemanager_3',['VulkanResourceManager',['../classne_1_1VulkanResourceManager.html#a7ecf7ec3593abdf65a194b94dde39058',1,'ne::VulkanResourceManager']]], + ['vulkanshadowmaparrayindexmanager_4',['VulkanShadowMapArrayIndexManager',['../classne_1_1VulkanShadowMapArrayIndexManager.html#a2394d01ec3129e0e79ea712972f558c8',1,'ne::VulkanShadowMapArrayIndexManager']]] +]; diff --git a/search/functions_15.js b/search/functions_15.js new file mode 100644 index 000000000..37e706fab --- /dev/null +++ b/search/functions_15.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['waitforfencevalue_0',['waitForFenceValue',['../classne_1_1DirectXRenderer.html#acad252aed765ced403e6e21ac74230a1',1,'ne::DirectXRenderer']]], + ['waitforgputofinishusingframeresource_1',['waitForGpuToFinishUsingFrameResource',['../classne_1_1DirectXRenderer.html#a64dccc90232ee6345bf67382d8df2d6d',1,'ne::DirectXRenderer::waitForGpuToFinishUsingFrameResource()'],['../classne_1_1VulkanRenderer.html#afa790a607caa70247e134dfc452a0a49',1,'ne::VulkanRenderer::waitForGpuToFinishUsingFrameResource()'],['../classne_1_1Renderer.html#a64332a4c9b10010ec74584dddc91c68d',1,'ne::Renderer::waitForGpuToFinishUsingFrameResource()']]], + ['waitforgputofinishworkuptothispoint_2',['waitForGpuToFinishWorkUpToThisPoint',['../classne_1_1DirectXRenderer.html#aae18afc489996ebedd1504305ba34d85',1,'ne::DirectXRenderer::waitForGpuToFinishWorkUpToThisPoint()'],['../classne_1_1VulkanRenderer.html#a3ba1205f16b9038da69db0c001550943',1,'ne::VulkanRenderer::waitForGpuToFinishWorkUpToThisPoint()'],['../classne_1_1Renderer.html#a82398bb159588b48ad20f09b02db47a9',1,'ne::Renderer::waitForGpuToFinishWorkUpToThisPoint()']]], + ['warn_3',['warn',['../classne_1_1Logger.html#ae8507446e039b60153cb8b43b20bf714',1,'ne::Logger']]], + ['warning_4',['warning',['../classne_1_1DesktopNotification.html#a7848d7fb797b501873d1afe434391cde',1,'ne::DesktopNotification::warning()'],['../classne_1_1MessageBox.html#ab0847393177d7c8c7413d4de291d2a7f',1,'ne::MessageBox::warning()']]], + ['window_5',['Window',['../classne_1_1Window.html#a398013436bb9666a1b73a241ca03b7b5',1,'ne::Window']]], + ['windowcursor_6',['WindowCursor',['../classne_1_1WindowCursor.html#ae20456ef418e3235cb07d9324336cc66',1,'ne::WindowCursor']]], + ['withfullscreenmode_7',['withFullscreenMode',['../classne_1_1WindowBuilder.html#a138b7e2c077466970bef56fc754918a6',1,'ne::WindowBuilder']]], + ['withicon_8',['withIcon',['../classne_1_1WindowBuilder.html#ae1206242e82f60740f33368672baa5bb',1,'ne::WindowBuilder']]], + ['withmaximizedstate_9',['withMaximizedState',['../classne_1_1WindowBuilder.html#aaa2d79c2e394fcf395d6f2c7475e2af8',1,'ne::WindowBuilder']]], + ['withsize_10',['withSize',['../classne_1_1WindowBuilder.html#aeb34378e47c1355807a54b789859ecb5',1,'ne::WindowBuilder']]], + ['withsplashscreenmode_11',['withSplashScreenMode',['../classne_1_1WindowBuilder.html#af2d361e7868e3a69d77d1292cacfe320',1,'ne::WindowBuilder']]], + ['withtitle_12',['withTitle',['../classne_1_1WindowBuilder.html#a0bb2d30b784c64424b5015a4745bd282',1,'ne::WindowBuilder']]], + ['withvisibility_13',['withVisibility',['../classne_1_1WindowBuilder.html#a32ace752ff0c9c1e6df896dea74e37c7',1,'ne::WindowBuilder']]], + ['world_14',['World',['../classne_1_1World.html#a61f502f2e8b6345e88c1262cac1aa30a',1,'ne::World']]], + ['writelanguagespecificparameters_15',['writeLanguageSpecificParameters',['../classne_1_1ShaderCacheManager.html#a0157bf45305829fa4b3aacb9fae473c7',1,'ne::ShaderCacheManager::writeLanguageSpecificParameters()'],['../classne_1_1GlslShaderCacheManager.html#a6385a8cd94368608ae658f702cd42cfc',1,'ne::GlslShaderCacheManager::writeLanguageSpecificParameters()'],['../classne_1_1HlslShaderCacheManager.html#aec21c88348aaf39b0e402c1596bade44',1,'ne::HlslShaderCacheManager::writeLanguageSpecificParameters()']]], + ['wstringtostring_16',['wstringToString',['../classne_1_1Globals.html#a7d1befdd956b01e86a7064f91626d133',1,'ne::Globals']]] +]; diff --git a/search/functions_16.js b/search/functions_16.js new file mode 100644 index 000000000..5964201d6 --- /dev/null +++ b/search/functions_16.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['_7edirectxdescriptor_0',['~DirectXDescriptor',['../classne_1_1DirectXDescriptor.html#aac99e0444589184bf2db2af6d6156d99',1,'ne::DirectXDescriptor']]], + ['_7edirectxdescriptorheap_1',['~DirectXDescriptorHeap',['../classne_1_1DirectXDescriptorHeap.html#a7cdcaa8bf2f6be6e4c1d063079042d9f',1,'ne::DirectXDescriptorHeap']]], + ['_7edirectxshadowmaparrayindexmanager_2',['~DirectXShadowMapArrayIndexManager',['../classne_1_1DirectXShadowMapArrayIndexManager.html#a97be552860a91c2516a4832231e4fad9',1,'ne::DirectXShadowMapArrayIndexManager']]], + ['_7eglfw_3',['~GLFW',['../classne_1_1GLFW.html#a714f4dd30268e0c06e36001bec8bec75',1,'ne::GLFW']]], + ['_7eglobalshaderresourcebindingmanager_4',['~GlobalShaderResourceBindingManager',['../classne_1_1GlobalShaderResourceBindingManager.html#a1b2f6454d669328c3a4894184090d5ab',1,'ne::GlobalShaderResourceBindingManager']]], + ['_7enode_5',['~Node',['../classne_1_1Node.html#a79642d37ba8f7a42e6bbb43285f8b0fb',1,'ne::Node']]], + ['_7epipelinemanager_6',['~PipelineManager',['../classne_1_1PipelineManager.html#abc3041bd4f89a01584c07810d97c5cb9',1,'ne::PipelineManager']]], + ['_7eshaderarrayindex_7',['~ShaderArrayIndex',['../classne_1_1ShaderArrayIndex.html#a037772a8c435ea927c131956af466e43',1,'ne::ShaderArrayIndex']]], + ['_7eshaderarrayindexmanager_8',['~ShaderArrayIndexManager',['../classne_1_1ShaderArrayIndexManager.html#ac471051864cae59ce7f16fc7c56c7313',1,'ne::ShaderArrayIndexManager']]], + ['_7eshadercpuwriteresourcebindingmanager_9',['~ShaderCpuWriteResourceBindingManager',['../classne_1_1ShaderCpuWriteResourceBindingManager.html#ab47c204ddf9ca67b3a54caa7e77fe0a6',1,'ne::ShaderCpuWriteResourceBindingManager']]], + ['_7eshaderlightarray_10',['~ShaderLightArray',['../classne_1_1ShaderLightArray.html#ab31abec30f8efd631644f951a9943e1e',1,'ne::ShaderLightArray']]], + ['_7eshadertextureresourcebindingmanager_11',['~ShaderTextureResourceBindingManager',['../classne_1_1ShaderTextureResourceBindingManager.html#a572be35070c082bb695f00e0956835e6',1,'ne::ShaderTextureResourceBindingManager']]], + ['_7eshaderuser_12',['~ShaderUser',['../classne_1_1ShaderUser.html#ac20528d5e1938e7c4ff6cc7f80b75b12',1,'ne::ShaderUser']]], + ['_7eshadowmapmanager_13',['~ShadowMapManager',['../classne_1_1ShadowMapManager.html#af9e145ab19d0c5745fefca168ebca19e',1,'ne::ShadowMapManager']]], + ['_7etexturehandle_14',['~TextureHandle',['../classne_1_1TextureHandle.html#a864df0ae321949f96c49db7877c19895',1,'ne::TextureHandle']]], + ['_7etexturemanager_15',['~TextureManager',['../classne_1_1TextureManager.html#aa39de6ae0a73574699777743fb7dbe5b',1,'ne::TextureManager']]], + ['_7ethreadpool_16',['~ThreadPool',['../classne_1_1ThreadPool.html#aa8d941103615e754d86c63e0f6414998',1,'ne::ThreadPool']]], + ['_7ewindowcursor_17',['~WindowCursor',['../classne_1_1WindowCursor.html#a991811e70ac34b285cefe011e47107a9',1,'ne::WindowCursor']]], + ['_7eworld_18',['~World',['../classne_1_1World.html#a6941ce4e5566c000c2e7e32d03394ce6',1,'ne::World']]] +]; diff --git a/search/functions_2.js b/search/functions_2.js new file mode 100644 index 000000000..02b92e487 --- /dev/null +++ b/search/functions_2.js @@ -0,0 +1,122 @@ +var searchData= +[ + ['calculatecapacitystepsize_0',['calculateCapacityStepSize',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a7e53a422c30c87a8dbba0e4bacfc25cd',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['calculateframestatistics_1',['calculateFrameStatistics',['../classne_1_1Renderer.html#a70c498eade90efc06c4ef64100347cd0',1,'ne::Renderer']]], + ['calculatereciprocalvector_2',['calculateReciprocalVector',['../classne_1_1MathHelpers.html#a91b29eece21547964d43cf45a63eda49',1,'ne::MathHelpers']]], + ['calculatereflectionfilehash_3',['calculateReflectionFileHash',['../classne_1_1HlslShader.html#ae95b76a7d079b79a8bf3e33adc47394e',1,'ne::HlslShader']]], + ['calculateshaderincludetreehashes_4',['calculateShaderIncludeTreeHashes',['../structne_1_1ShaderDescription.html#a4a8d2d724407d111e95b481e7e325192',1,'ne::ShaderDescription']]], + ['cameramanager_5',['CameraManager',['../classne_1_1CameraManager.html#a72ffaa75c6f90e592e015c81cdf1451b',1,'ne::CameraManager']]], + ['cameranode_6',['CameraNode',['../classne_1_1CameraNode.html#a66cf208b54020efbc30846cf6c2eb194',1,'ne::CameraNode']]], + ['changearrayindex_7',['changeArrayIndex',['../classne_1_1ShadowMapHandle.html#a8c0bcc02eb4a5eb6eb5f88d6425c37da',1,'ne::ShadowMapHandle']]], + ['changeshadowmaparrayindex_8',['changeShadowMapArrayIndex',['../classne_1_1ShadowMapArrayIndexManager.html#a9d790c4e38cde1dafcb51d35f46b4dd7',1,'ne::ShadowMapArrayIndexManager']]], + ['changeusedpipelines_9',['changeUsedPipelines',['../classne_1_1ShaderCpuWriteResourceBinding.html#a7bc2c8bc3aea60dc7d57710549932a12',1,'ne::ShaderCpuWriteResourceBinding::changeUsedPipelines()'],['../classne_1_1ShaderResourceBindingBase.html#a994a141941a81fd2058c36f144c1685f',1,'ne::ShaderResourceBindingBase::changeUsedPipelines()'],['../classne_1_1GlslShaderTextureResourceBinding.html#a4b72c64b7d785dce01fde577c3988c9f',1,'ne::GlslShaderTextureResourceBinding::changeUsedPipelines()'],['../classne_1_1HlslShaderTextureResourceBinding.html#a60b75ced6ba8617241c0e9ee60fa01ca',1,'ne::HlslShaderTextureResourceBinding::changeUsedPipelines()']]], + ['checkcachedadditionalcompilationresultsinfo_10',['checkCachedAdditionalCompilationResultsInfo',['../classne_1_1GlslShader.html#a9988459010db9a0541eb67e33c619486',1,'ne::GlslShader::checkCachedAdditionalCompilationResultsInfo()'],['../classne_1_1HlslShader.html#abda558c5f5894029e8a8f142e4bb80a0',1,'ne::HlslShader::checkCachedAdditionalCompilationResultsInfo()'],['../classne_1_1Shader.html#a11818ca25d7c8c0fd54106974986ea5e',1,'ne::Shader::checkCachedAdditionalCompilationResultsInfo()']]], + ['clampsettingstomaxsupported_11',['clampSettingsToMaxSupported',['../classne_1_1Renderer.html#ad05657ef406f0ed434e044730120bc50',1,'ne::Renderer::clampSettingsToMaxSupported()'],['../classne_1_1RenderSettings.html#a9272a6f47961e38ce05a5dc30711f49f',1,'ne::RenderSettings::clampSettingsToMaxSupported()']]], + ['clear_12',['clear',['../classne_1_1PipelineSharedPtr.html#a56e0c400e9f98b36f68621c405972e8f',1,'ne::PipelineSharedPtr']]], + ['clearactivecamera_13',['clearActiveCamera',['../classne_1_1CameraManager.html#ac8d1c44db8825d68771422dcf1acf0d8',1,'ne::CameraManager']]], + ['cleargraphicspipelinesinternalresourcesanddelayrestoring_14',['clearGraphicsPipelinesInternalResourcesAndDelayRestoring',['../classne_1_1PipelineManager.html#a96c2a86cad7a37faad2508fb372201c5',1,'ne::PipelineManager']]], + ['clearorbitaltargetlocation_15',['clearOrbitalTargetLocation',['../classne_1_1CameraNode.html#afd09e5fb6b075bcd8eeb89d738264e2e',1,'ne::CameraNode']]], + ['clearpointerandnotifypipeline_16',['clearPointerAndNotifyPipeline',['../classne_1_1PipelineSharedPtr.html#a969425d9d6613b26e631908adf2bb9a8',1,'ne::PipelineSharedPtr']]], + ['clonefield_17',['cloneField',['../classne_1_1GlmVecFieldSerializer.html#ab59602603b35391b468187de31f81d01',1,'ne::GlmVecFieldSerializer::cloneField()'],['../classne_1_1VectorFieldSerializer.html#a5ada0bab82838106d75fff4aa224d8c7',1,'ne::VectorFieldSerializer::cloneField()'],['../classne_1_1UnorderedMapFieldSerializer.html#a4276dac8bfad846d5ca32269e5d52c85',1,'ne::UnorderedMapFieldSerializer::cloneField()'],['../classne_1_1StringFieldSerializer.html#a173e92693293da7619d95975d9ab4a5a',1,'ne::StringFieldSerializer::cloneField()'],['../classne_1_1PrimitiveFieldSerializer.html#a81782da414a164378e6cdc51b62b157a',1,'ne::PrimitiveFieldSerializer::cloneField()'],['../classne_1_1IFieldSerializer.html#a1ae8afecd50c3e398ff33414e70a8f61',1,'ne::IFieldSerializer::cloneField()'],['../classne_1_1SerializableObjectFieldSerializer.html#aade78685d1a01e220300e0f3221b4e85',1,'ne::SerializableObjectFieldSerializer::cloneField(Serializable *pFromInstance, const rfk::Field *pFromField, Serializable *pToInstance, const rfk::Field *pToField) override']]], + ['cloneserializableobject_18',['cloneSerializableObject',['../classne_1_1SerializableObjectFieldSerializer.html#a4de4b69ef3d5c2c526d20284af92fa2c',1,'ne::SerializableObjectFieldSerializer']]], + ['close_19',['close',['../classne_1_1Window.html#aa64f0812a116f4ddd2c32615b5881879',1,'ne::Window']]], + ['collectinfofrombytecode_20',['collectInfoFromBytecode',['../classne_1_1DescriptorSetLayoutGenerator.html#a5808697193eca980c68c4e1020c46771',1,'ne::DescriptorSetLayoutGenerator']]], + ['collectinfofromreflection_21',['collectInfoFromReflection',['../classne_1_1RootSignatureGenerator.html#a3f8b9fb865d2e56872c4ee525298d3fb',1,'ne::RootSignatureGenerator']]], + ['colorpipelineconfiguration_22',['ColorPipelineConfiguration',['../classne_1_1ColorPipelineConfiguration.html#ad5312e34d5a37663d9e04e8c3a0fc7b9',1,'ne::ColorPipelineConfiguration']]], + ['combineconfigurations_23',['combineConfigurations',['../structne_1_1ShaderMacroConfigurations.html#a0256da50fbf77ce275e6d000ffbfe8e7',1,'ne::ShaderMacroConfigurations']]], + ['combineshadernames_24',['combineShaderNames',['../classne_1_1Pipeline.html#af7a9e8dc05049f4a0c760352a0a35135',1,'ne::Pipeline']]], + ['compileengineshaders_25',['compileEngineShaders',['../classne_1_1Renderer.html#a02ba4b9ee40da30d3c5724fcdade5117',1,'ne::Renderer']]], + ['compilerenderdependentshader_26',['compileRenderDependentShader',['../classne_1_1Shader.html#aa27ff6aa3242003827ec215977a14125',1,'ne::Shader']]], + ['compileshader_27',['compileShader',['../classne_1_1Shader.html#a1ed2a99d9fbcba50b665c59e39e67e38',1,'ne::Shader::compileShader()'],['../classne_1_1GlslShader.html#a2439b253b962cb8892e2d1f5785bc427',1,'ne::GlslShader::compileShader()'],['../classne_1_1HlslShader.html#a09710beab6f8be11dd315b92279df72e',1,'ne::HlslShader::compileShader()']]], + ['compileshaderpack_28',['compileShaderPack',['../classne_1_1ShaderPack.html#a3c7a7c5e1701d992df2a23ffb1a9dff0',1,'ne::ShaderPack']]], + ['compileshaders_29',['compileShaders',['../classne_1_1ShaderManager.html#a8d2166c0698051cb43ba0b44dd1e6536',1,'ne::ShaderManager']]], + ['compileshadertask_30',['compileShaderTask',['../classne_1_1ShaderManager.html#a435cd6d65d44e573a745f15f3172102a',1,'ne::ShaderManager']]], + ['compileshadertobytecode_31',['compileShaderToBytecode',['../classne_1_1GlslShader.html#ab52ebda25eaf279d3f62fca544879db5',1,'ne::GlslShader::compileShaderToBytecode()'],['../classne_1_1HlslShader.html#ae2eb43e5f828d21adde32b6fe6788e5f',1,'ne::HlslShader::compileShaderToBytecode()']]], + ['compressonatorsingleton_32',['CompressonatorSingleton',['../classne_1_1CompressonatorSingleton.html#ae69a53d901f8a4403f9e39791015023c',1,'ne::CompressonatorSingleton']]], + ['computepipelineconfiguration_33',['ComputePipelineConfiguration',['../classne_1_1ComputePipelineConfiguration.html#a100e198b2f025cbe568233c752f699b5',1,'ne::ComputePipelineConfiguration']]], + ['computeshaderinterface_34',['ComputeShaderInterface',['../classne_1_1ComputeShaderInterface.html#a8f8f7fe121d6032e64d7094658f10f7f',1,'ne::ComputeShaderInterface']]], + ['cone_35',['Cone',['../structne_1_1Cone.html#a3a452850d53f4861eb40238dd2ed99b8',1,'ne::Cone::Cone()=default'],['../structne_1_1Cone.html#ac4d1e9628959bcbe607add22c2cc464e',1,'ne::Cone::Cone(const glm::vec3 &location, float height, const glm::vec3 &direction, float bottomRadius)']]], + ['configmanager_36',['ConfigManager',['../classne_1_1ConfigManager.html#ac159e82089e6991b9b22f9e06c16dd65',1,'ne::ConfigManager']]], + ['constructfilepath_37',['constructFilePath',['../classne_1_1ConfigManager.html#a0f00e5296531689ef4190a123ef23287',1,'ne::ConfigManager']]], + ['constructpathtoshadersourcefile_38',['constructPathToShaderSourceFile',['../classne_1_1EngineShaders.html#ac91ecca64b940b61ed038c984e7e0bb4',1,'ne::EngineShaders']]], + ['continuousdirectxdescriptorrange_39',['ContinuousDirectXDescriptorRange',['../classne_1_1ContinuousDirectXDescriptorRange.html#a03aa5fc76b329c2aa1d52f6ba3b90d39',1,'ne::ContinuousDirectXDescriptorRange']]], + ['convertcartesiancoordinatestospherical_40',['convertCartesianCoordinatesToSpherical',['../classne_1_1MathHelpers.html#ab8c51244450bb42df5619027e578c530',1,'ne::MathHelpers']]], + ['convertconfigurationtohash_41',['convertConfigurationToHash',['../structne_1_1ShaderMacroConfigurations.html#aab969c8a507ad54a058aaaf105367880',1,'ne::ShaderMacroConfigurations']]], + ['convertconfigurationtotext_42',['convertConfigurationToText',['../structne_1_1ShaderMacroConfigurations.html#ac437b9daf4d8174af6beaeea845d2265',1,'ne::ShaderMacroConfigurations']]], + ['convertdirectiontorollpitchyaw_43',['convertDirectionToRollPitchYaw',['../classne_1_1MathHelpers.html#aba71393ad209bc41e713a20fc0fae438',1,'ne::MathHelpers']]], + ['convertheaptypetostring_44',['convertHeapTypeToString',['../classne_1_1DirectXDescriptorHeap.html#a03fea39d2e3f0d752f285b623f2ebdcc',1,'ne::DirectXDescriptorHeap']]], + ['convertresourceusagetypetovkbufferusagetype_45',['convertResourceUsageTypeToVkBufferUsageType',['../classne_1_1VulkanResourceManager.html#a059df514f7d83c82a76a2513ddb13a02',1,'ne::VulkanResourceManager']]], + ['convertrollpitchyawtodirection_46',['convertRollPitchYawToDirection',['../classne_1_1MathHelpers.html#ac133c40d43a8cfaf56de23e9e6649b1b',1,'ne::MathHelpers']]], + ['convertshadertypetoshadercshaderkind_47',['convertShaderTypeToShadercShaderKind',['../classne_1_1GlslShader.html#a36dfc0390f6b430dfdc693f88d9a86d9',1,'ne::GlslShader']]], + ['convertsphericaltocartesiancoordinates_48',['convertSphericalToCartesianCoordinates',['../classne_1_1MathHelpers.html#ac5c45f87480b68caaa070bb371795408',1,'ne::MathHelpers']]], + ['converttextureresourceformattodxformat_49',['convertTextureResourceFormatToDxFormat',['../classne_1_1DirectXResourceManager.html#a7527c3da0a394fa0a226b9cad10ec5cc',1,'ne::DirectXResourceManager']]], + ['converttextureresourceformattovkformat_50',['convertTextureResourceFormatToVkFormat',['../classne_1_1VulkanResourceManager.html#a6a24d595205d77312fa0af5d3bd9c5e3',1,'ne::VulkanResourceManager']]], + ['copydatatoelement_51',['copyDataToElement',['../classne_1_1UploadBuffer.html#a0576ed6e3eaee33ff4c3a2c2d88518cc',1,'ne::UploadBuffer']]], + ['copydatatogpu_52',['copyDataToGpu',['../classne_1_1LightingShaderResourceManager.html#aeebc11d68f89e7a0cc7d174b09bc6f12',1,'ne::LightingShaderResourceManager']]], + ['copyresourceindextopushconstants_53',['copyResourceIndexToPushConstants',['../classne_1_1GlslShaderTextureResourceBinding.html#a145dda4a9f6868404db29cd0b1588621',1,'ne::GlslShaderTextureResourceBinding']]], + ['copyresourceindextorootconstants_54',['copyResourceIndexToRootConstants',['../classne_1_1HlslShaderTextureResourceBinding.html#a1fb8e8bdcbf5668c7ab21eda2126d78a',1,'ne::HlslShaderTextureResourceBinding']]], + ['copyresourceindextoshaderconstants_55',['copyResourceIndexToShaderConstants',['../classne_1_1ShaderCpuWriteResourceBinding.html#ae1fdd09dc4a1ed860ef49d2ea2a844c0',1,'ne::ShaderCpuWriteResourceBinding']]], + ['copyvaluetoshaderconstant_56',['copyValueToShaderConstant',['../classne_1_1PipelineShaderConstantsManager.html#ad292517c37ad69a098d56e61efd287d4',1,'ne::PipelineShaderConstantsManager']]], + ['correctshadowmapresolutionfortype_57',['correctShadowMapResolutionForType',['../classne_1_1ShadowMapManager.html#a42e4558005a41dd1e56529f95ca0c8d6',1,'ne::ShadowMapManager']]], + ['create_58',['create',['../classne_1_1VulkanRenderer.html#a72f6619897fdb3232624e240783970ad',1,'ne::VulkanRenderer::create()'],['../classne_1_1ShaderCacheManager.html#a88eaa115dda2f124d317150bbbe3ef62',1,'ne::ShaderCacheManager::create()'],['../classne_1_1ShaderCpuWriteResourceBinding.html#a8a22646effb6575c74bd41857583da75',1,'ne::ShaderCpuWriteResourceBinding::create()'],['../classne_1_1GlobalShaderResourceBinding.html#a753e2e8ad792411db85db6ea1d95414f',1,'ne::GlobalShaderResourceBinding::create()'],['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a8b7de3f21b7402de2cb7dd7630bf99ea',1,'ne::DynamicCpuWriteShaderResourceArray::create()'],['../classne_1_1LightingShaderResourceManager.html#a0ba31dd66bb4ab870b307f58affd1c3e',1,'ne::LightingShaderResourceManager::create()'],['../classne_1_1ShaderLightArray.html#abf03e290231b8ccbf397735d8b5da41d',1,'ne::ShaderLightArray::create()'],['../classne_1_1GlslShaderTextureResourceBinding.html#a3c821a0fa63e7de55ec3c83cd917f2ba',1,'ne::GlslShaderTextureResourceBinding::create()'],['../classne_1_1HlslShaderTextureResourceBinding.html#a8167b40dbcfc97fe14f6304029a6b9fe',1,'ne::HlslShaderTextureResourceBinding::create()'],['../classne_1_1WindowCursor.html#a25a36c69b194328091aba187a6271d50',1,'ne::WindowCursor::create()'],['../classne_1_1Window.html#a9b5b50ece0bd8627e02c4e489749552d',1,'ne::Window::create()'],['../classne_1_1Material.html#ac3b008d630640dbfc2281ed97e979ecd',1,'ne::Material::create()'],['../classne_1_1Renderer.html#a329ab805808f20b4bf0b2b60f3f715c6',1,'ne::Renderer::create()'],['../classne_1_1VulkanResource.html#ac7ef62c793386a8c4516c0ed8b9f0830',1,'ne::VulkanResource::create()'],['../classne_1_1VulkanResourceManager.html#aedcb8a5137bad9f3ce0a61457f20f80a',1,'ne::VulkanResourceManager::create()'],['../classne_1_1DirectXDescriptorHeap.html#a0d29feace5aaf5fb2951bec7b4c0d3a3',1,'ne::DirectXDescriptorHeap::create()'],['../classne_1_1DirectXRenderer.html#a563340fbc530d8ffc266b275349e578a',1,'ne::DirectXRenderer::create()'],['../classne_1_1DirectXResource.html#a7bea5e130871494072e59a7a86cd2cf3',1,'ne::DirectXResource::create()'],['../classne_1_1DirectXResourceManager.html#a03dac55b0407fbad02a7163f1408d897',1,'ne::DirectXResourceManager::create()'],['../classne_1_1DirectXShadowMapArrayIndexManager.html#aec6ba090fa1681274b6b3c2d2ff86d27',1,'ne::DirectXShadowMapArrayIndexManager::create()'],['../classne_1_1GpuResourceManager.html#a71c9e5a58c7becf033edd6e94167f55d',1,'ne::GpuResourceManager::create()'],['../classne_1_1FrameResourceManager.html#ad42756d12fceadc03738867da9cfcdfe',1,'ne::FrameResourceManager::create()'],['../classne_1_1VulkanResource.html#acf5a6afb5245c1b11692f8bd578e2442',1,'ne::VulkanResource::create(VulkanResourceManager *pResourceManager, const std::string &sResourceName, VmaAllocator pMemoryAllocator, const VkImageCreateInfo &imageInfo, const VmaAllocationCreateInfo &allocationInfo, std::optional< VkImageAspectFlags > viewDescription, bool bIsCubeMapView=false)'],['../classne_1_1VulkanResource.html#a676b4c1ad0f17d0aeec309b2b0887457',1,'ne::VulkanResource::create(VulkanResourceManager *pResourceManager, const std::string &sResourceName, VmaAllocator pMemoryAllocator, const VkBufferCreateInfo &bufferInfo, const VmaAllocationCreateInfo &allocationInfo, unsigned int iElementSizeInBytes, unsigned int iElementCount)'],['../classne_1_1ShadowMapArrayIndexManager.html#ae6d05e46a6008971f9941a2b423c9bdf',1,'ne::ShadowMapArrayIndexManager::create()'],['../classne_1_1ShadowMapManager.html#afdeaed693969ef6c0086bd4cbe1e7566',1,'ne::ShadowMapManager::create()']]], + ['createarray_59',['createArray',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a8b8464857538cd06ccc5a875804d5c6d',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['createbuffer_60',['createBuffer',['../classne_1_1VulkanResourceManager.html#a260c54ebbb06263a3db83fc4d3e5fb1f',1,'ne::VulkanResourceManager::createBuffer(const std::string &sResourceName, const VkBufferCreateInfo &bufferInfo, const VmaAllocationCreateInfo &allocationInfo, unsigned int iElementSizeInBytes, unsigned int iElementCount)'],['../classne_1_1VulkanResourceManager.html#a4c14e543b942b6e585fa2993caa2e737',1,'ne::VulkanResourceManager::createBuffer(const std::string &sResourceName, VkDeviceSize iBufferSize, VkBufferUsageFlags bufferUsage, bool bAllowCpuWrite, unsigned int iElementSizeInBytes, unsigned int iElementCount)']]], + ['createcommandlist_61',['createCommandList',['../classne_1_1DirectXRenderer.html#a5f66a037cf7681ad65cb871756b137bb',1,'ne::DirectXRenderer']]], + ['createcommandpool_62',['createCommandPool',['../classne_1_1VulkanRenderer.html#ade11ccb2b6db9600acda37859587df57',1,'ne::VulkanRenderer']]], + ['createcommandqueue_63',['createCommandQueue',['../classne_1_1DirectXRenderer.html#a98d4301fc8204a56f223097eb3cb5bc2',1,'ne::DirectXRenderer']]], + ['createcomputepipeline_64',['createComputePipeline',['../classne_1_1VulkanPipeline.html#a8c03e8298ec83e5a95148abc77937bae',1,'ne::VulkanPipeline::createComputePipeline(Renderer *pRenderer, PipelineManager *pPipelineManager, const std::string &sComputeShaderName)'],['../classne_1_1VulkanPipeline.html#a7ec3cb31b77a830a626f9956fcfad663',1,'ne::VulkanPipeline::createComputePipeline(VulkanRenderer *pVulkanRenderer, GlslShader *pComputeShader)'],['../classne_1_1Pipeline.html#a65c5d8932e6792fc8b584ad03fdf28f6',1,'ne::Pipeline::createComputePipeline()']]], + ['createcomputepso_65',['createComputePso',['../classne_1_1DirectXPso.html#a75b11d16db493ab2643361ad3fd22eef',1,'ne::DirectXPso']]], + ['createcomputetexturesampler_66',['createComputeTextureSampler',['../classne_1_1VulkanRenderer.html#a1710a797dad8501705c06d307cf48c81',1,'ne::VulkanRenderer']]], + ['createcube_67',['createCube',['../classne_1_1PrimitiveMeshGenerator.html#a561b0e915550760d5a9f7cfd58c9df8a',1,'ne::PrimitiveMeshGenerator']]], + ['createcursor_68',['createCursor',['../classne_1_1Window.html#a218650ea81247783eb3b768311c8662b',1,'ne::Window']]], + ['createdepthimage_69',['createDepthImage',['../classne_1_1VulkanRenderer.html#a3c1974da9773bc5908a0c8c482d9583a',1,'ne::VulkanRenderer']]], + ['createdepthonlyrenderpass_70',['createDepthOnlyRenderPass',['../classne_1_1VulkanRenderer.html#aecb0609c18ccac6662fa096258a93718',1,'ne::VulkanRenderer']]], + ['createdepthstencilbuffer_71',['createDepthStencilBuffer',['../classne_1_1DirectXRenderer.html#af772fa96f6b1e7d98993850c49938c06',1,'ne::DirectXRenderer']]], + ['createdescription_72',['createDescription',['../classne_1_1GlslVertexFormatDescription.html#a223d2e61d5bf728e421b950aa5ed1b36',1,'ne::GlslVertexFormatDescription::createDescription()'],['../classne_1_1HlslVertexFormatDescription.html#a7a40cf759e48c9f51406169c771badad',1,'ne::HlslVertexFormatDescription::createDescription()'],['../classne_1_1VertexFormatDescription.html#a12bbedae0fb811f3c2edf5305ef8e3c2',1,'ne::VertexFormatDescription::createDescription()']]], + ['createeditornode_73',['createEditorNode',['../classne_1_1EditorNodeCreationHelpers.html#ac27cd814e1fa939ca533cf7f5e0836a9',1,'ne::EditorNodeCreationHelpers']]], + ['createfromcache_74',['createFromCache',['../classne_1_1Shader.html#ac8556a2d59aac40ce122be453611608c',1,'ne::Shader::createFromCache()'],['../classne_1_1ShaderPack.html#afdc9476711344b190a2a07855106acce',1,'ne::ShaderPack::createFromCache()']]], + ['createfromvertices_75',['createFromVertices',['../structne_1_1AABB.html#af95248f9c0353559e76cc616e75313c0',1,'ne::AABB']]], + ['createglobalshaderresourcebindingresourceperframe_76',['createGlobalShaderResourceBindingResourcePerFrame',['../classne_1_1GlobalShaderResourceBindingManager.html#a50b52be19c6c1758c5db6c4e8bba9968',1,'ne::GlobalShaderResourceBindingManager']]], + ['createglobalshaderresourcebindingsingleresource_77',['createGlobalShaderResourceBindingSingleResource',['../classne_1_1GlobalShaderResourceBindingManager.html#a349ec6b21d175bcccb8a3ae4b088128c',1,'ne::GlobalShaderResourceBindingManager']]], + ['creategraphicspipeline_78',['createGraphicsPipeline',['../classne_1_1VulkanPipeline.html#a124250d5c8831bc3edee3d4f64af4954',1,'ne::VulkanPipeline::createGraphicsPipeline(Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration)'],['../classne_1_1VulkanPipeline.html#a8cebaf1166f0e6b1c4cdf97878898f0a',1,'ne::VulkanPipeline::createGraphicsPipeline(VulkanRenderer *pVulkanRenderer, GlslShader *pVertexShader, GlslShader *pFragmentShader, bool bUsePixelBlending)'],['../classne_1_1Pipeline.html#a7201a6cf1a84a049527ed8b3a4226d8d',1,'ne::Pipeline::createGraphicsPipeline()']]], + ['creategraphicspipelineformaterial_79',['createGraphicsPipelineForMaterial',['../classne_1_1PipelineManager.html#ab5a5dd302834a0098188defe1051edb6',1,'ne::PipelineManager']]], + ['creategraphicspso_80',['createGraphicsPso',['../classne_1_1DirectXPso.html#a4960728fd4cbefb43b371fdf589095f3',1,'ne::DirectXPso']]], + ['createheap_81',['createHeap',['../classne_1_1DirectXDescriptorHeap.html#af2e838b499904e1cda555aca59be14e3',1,'ne::DirectXDescriptorHeap']]], + ['createimage_82',['createImage',['../classne_1_1VulkanResourceManager.html#a93d53203a1ce3a6c60a0b27799960c35',1,'ne::VulkanResourceManager']]], + ['createlightindexlistsandlightgrid_83',['createLightIndexListsAndLightGrid',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html#a3c8b14d8953896b32447dead850a5cfe',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader']]], + ['createlogicaldevice_84',['createLogicalDevice',['../classne_1_1VulkanRenderer.html#ac03701aac30a708bd63b42c77ce55618',1,'ne::VulkanRenderer']]], + ['createmainrenderpass_85',['createMainRenderPass',['../classne_1_1VulkanRenderer.html#ac3a2829ecb547e4bb6ccce2b92d8e943',1,'ne::VulkanRenderer']]], + ['createmsaaimage_86',['createMsaaImage',['../classne_1_1VulkanRenderer.html#aa531822b46e63a1df0396bd9877b3eca',1,'ne::VulkanRenderer']]], + ['createnewshadercache_87',['createNewShaderCache',['../classne_1_1ShaderCacheManager.html#a751381c8f07c63b5adbdfaa1c21ddbe2',1,'ne::ShaderCacheManager']]], + ['createnewtexturehandle_88',['createNewTextureHandle',['../classne_1_1TextureManager.html#ab4cf5f60eb0e62615b50b183aade6061',1,'ne::TextureManager']]], + ['createnotificationbroadcaster_89',['createNotificationBroadcaster',['../classne_1_1Node.html#a5f2dca870a640ac24053a76b804ce111',1,'ne::Node']]], + ['createonetimesubmitcommandbuffer_90',['createOneTimeSubmitCommandBuffer',['../classne_1_1VulkanRenderer.html#a6ba6849ba3e37cc117afec21b339f97e',1,'ne::VulkanRenderer']]], + ['createpartiallyinitializedrenderspecificinterface_91',['createPartiallyInitializedRenderSpecificInterface',['../classne_1_1ComputeShaderInterface.html#afdf3e809c7c7a335aba188bdd38865cb',1,'ne::ComputeShaderInterface']]], + ['createrenderdependentframeresources_92',['createRenderDependentFrameResources',['../classne_1_1FrameResourceManager.html#ad87185a708fba8c76b32202a019b6582',1,'ne::FrameResourceManager']]], + ['createrenderdependentshaderfromcache_93',['createRenderDependentShaderFromCache',['../classne_1_1Shader.html#aee13925a6c8f208f9adab11fc710ff35',1,'ne::Shader']]], + ['createrenderer_94',['createRenderer',['../classne_1_1Renderer.html#a687d528df003c3e5b85a35b8d7a2d581',1,'ne::Renderer::createRenderer(GameManager *pGameManager, std::optional< RendererType > preferredRenderer)'],['../classne_1_1Renderer.html#a80bb51d2db6be521c11d1066516f6f06',1,'ne::Renderer::createRenderer(RendererType type, GameManager *pGameManager, const std::vector< std::string > &vBlacklistedGpuNames)']]], + ['createrendererspecificmanager_95',['createRendererSpecificManager',['../classne_1_1GpuResourceManager.html#a0ae59995a7856ffe4ee188705bb6809b',1,'ne::GpuResourceManager']]], + ['createrenderpasses_96',['createRenderPasses',['../classne_1_1VulkanRenderer.html#ab8d78098e6ef1c645f722fefcd8f494d',1,'ne::VulkanRenderer']]], + ['createrenderspecificinterface_97',['createRenderSpecificInterface',['../classne_1_1ComputeShaderInterface.html#a11355f0efb3b89792fb562512a63da5b',1,'ne::ComputeShaderInterface']]], + ['createresource_98',['createResource',['../classne_1_1GpuResourceManager.html#ae10f17bd3fe1402deff6501dadf97085',1,'ne::GpuResourceManager::createResource()'],['../classne_1_1VulkanResourceManager.html#adc81fd834a7c7a0b9ca9ccc1c8d39174',1,'ne::VulkanResourceManager::createResource()'],['../classne_1_1DirectXResourceManager.html#a6c2d9741e1b106aaad80641e6ec86a75',1,'ne::DirectXResourceManager::createResource(const std::string &sResourceName, const D3D12MA::ALLOCATION_DESC &allocationDesc, const D3D12_RESOURCE_DESC &resourceDesc, const D3D12_RESOURCE_STATES &initialResourceState, const std::optional< D3D12_CLEAR_VALUE > &resourceClearValue)'],['../classne_1_1DirectXResourceManager.html#acd9f6c63e16d7c4300dba39f0a44fbb2',1,'ne::DirectXResourceManager::createResource(const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource) override']]], + ['createresourcefromswapchainbuffer_99',['createResourceFromSwapChainBuffer',['../classne_1_1DirectXResource.html#a8fc3c9641487eac5be9f0e90ae086c27',1,'ne::DirectXResource']]], + ['createresourcewithcpuwriteaccess_100',['createResourceWithCpuWriteAccess',['../classne_1_1DirectXResourceManager.html#a054542cccba822248ab956d4e7a20a77',1,'ne::DirectXResourceManager::createResourceWithCpuWriteAccess()'],['../classne_1_1GpuResourceManager.html#a3b6b609815ffa83367d236a9bc161184',1,'ne::GpuResourceManager::createResourceWithCpuWriteAccess()'],['../classne_1_1VulkanResourceManager.html#a188efc9ccb999c3b3e2799391be27e88',1,'ne::VulkanResourceManager::createResourceWithCpuWriteAccess()']]], + ['createresourcewithdata_101',['createResourceWithData',['../classne_1_1DirectXResourceManager.html#ad8a2540c34c3a75ef33332a799116b4a',1,'ne::DirectXResourceManager::createResourceWithData(const std::string &sResourceName, const void *pBufferData, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource) override'],['../classne_1_1DirectXResourceManager.html#a4b1608b20346b9e8a8e4c17cd54dcbd0',1,'ne::DirectXResourceManager::createResourceWithData(const std::string &sResourceName, const D3D12_RESOURCE_DESC &finalResourceDescription, const std::vector< D3D12_SUBRESOURCE_DATA > &vSubresourcesToCopy, const D3D12_RESOURCE_DESC &uploadResourceDescription, bool bIsTextureResource, size_t iElementSizeInBytes=0, size_t iElementCount=0)'],['../classne_1_1GpuResourceManager.html#a06e28ad52a7a5e112965bb69bf1e7453',1,'ne::GpuResourceManager::createResourceWithData()'],['../classne_1_1VulkanResourceManager.html#a3ecb83b9bc9c1933c66a08515b4e5f34',1,'ne::VulkanResourceManager::createResourceWithData()']]], + ['createshadercpuwriteresource_102',['createShaderCpuWriteResource',['../classne_1_1ShaderCpuWriteResourceBindingManager.html#ac72f18bb5467c304b92ad311c538eccf',1,'ne::ShaderCpuWriteResourceBindingManager']]], + ['createshaderreadwritetextureresource_103',['createShaderReadWriteTextureResource',['../classne_1_1DirectXResourceManager.html#a0be34ba9f11f44ca032c048bb1c7f760',1,'ne::DirectXResourceManager::createShaderReadWriteTextureResource()'],['../classne_1_1VulkanResourceManager.html#a42fef744a9adf9b4214a8571740ec6f2',1,'ne::VulkanResourceManager::createShaderReadWriteTextureResource()'],['../classne_1_1GpuResourceManager.html#ad1657d2dcef066ddbc3d51e7b15b7eeb',1,'ne::GpuResourceManager::createShaderReadWriteTextureResource()']]], + ['createshadertextureresource_104',['createShaderTextureResource',['../classne_1_1ShaderTextureResourceBindingManager.html#ab169d6343a60876e0748b358f901407f',1,'ne::ShaderTextureResourceBindingManager']]], + ['createshadowmap_105',['createShadowMap',['../classne_1_1ShadowMapManager.html#aaa3738a11cb6e6d13f2b32a72cb2d884',1,'ne::ShadowMapManager']]], + ['createshadowmappingrenderpasses_106',['createShadowMappingRenderPasses',['../classne_1_1VulkanRenderer.html#a34e46570dd6eff948ed4c9954002b433',1,'ne::VulkanRenderer']]], + ['createshadowmaptexture_107',['createShadowMapTexture',['../classne_1_1DirectXResourceManager.html#ada5ed605700ba61b32343256e1f167e5',1,'ne::DirectXResourceManager::createShadowMapTexture()'],['../classne_1_1GpuResourceManager.html#aabeed80bdfa62a81dd80ecb8f0499de8',1,'ne::GpuResourceManager::createShadowMapTexture()'],['../classne_1_1VulkanResourceManager.html#a1f5eb768a33dff3a9eb310c283954a0a',1,'ne::VulkanResourceManager::createShadowMapTexture()']]], + ['createshadowtexturesampler_108',['createShadowTextureSampler',['../classne_1_1VulkanRenderer.html#afcc002e2b0f9a23dfb3901201fb576cd',1,'ne::VulkanRenderer']]], + ['createswapchain_109',['createSwapChain',['../classne_1_1DirectXRenderer.html#aae666e59658c23839e96be3853bf01c3',1,'ne::DirectXRenderer::createSwapChain()'],['../classne_1_1VulkanRenderer.html#a12e7cdf043898ecb3941625e48e43d51',1,'ne::VulkanRenderer::createSwapChain()']]], + ['createswapchainframebuffers_110',['createSwapChainFramebuffers',['../classne_1_1VulkanRenderer.html#a1baf0a69e479a0c765cbd89a7434695a',1,'ne::VulkanRenderer']]], + ['createtexturesampler_111',['createTextureSampler',['../classne_1_1VulkanRenderer.html#a737d9784afa5358a973580273ef5a23f',1,'ne::VulkanRenderer']]], + ['createtimer_112',['createTimer',['../classne_1_1GameInstance.html#abc2070d12e33c6658ff109040a20b324',1,'ne::GameInstance::createTimer()'],['../classne_1_1Node.html#a0e80560b3b2f02be42285e60195f1b64',1,'ne::Node::createTimer()']]], + ['createusinggraphicsqueue_113',['createUsingGraphicsQueue',['../classne_1_1ComputeShaderInterface.html#ad1cfd5a57d56a66433d3da5744f5092d',1,'ne::ComputeShaderInterface']]], + ['createview_114',['createView',['../classne_1_1DirectXDescriptorHeap.html#ae620d73736459a50de75807f8ea4d5a6',1,'ne::DirectXDescriptorHeap']]], + ['createvulkaninstance_115',['createVulkanInstance',['../classne_1_1VulkanRenderer.html#a9a5f2dc988ff0dbbda8aabdfe393ae5f',1,'ne::VulkanRenderer']]], + ['createwindowsurface_116',['createWindowSurface',['../classne_1_1VulkanRenderer.html#a586500bcb331bb423a61ac9bddb30436',1,'ne::VulkanRenderer']]], + ['createworld_117',['createWorld',['../classne_1_1GameManager.html#a56d0b6a09db7a67f1cd036e9414e1be6',1,'ne::GameManager::createWorld()'],['../classne_1_1World.html#af6da71bf1c2496e8591379d5703ed96c',1,'ne::World::createWorld()'],['../classne_1_1GameInstance.html#aff0fca06776071d01c9e97909806df6a',1,'ne::GameInstance::createWorld()']]], + ['culllightsoutsidecamerafrustum_118',['cullLightsOutsideCameraFrustum',['../classne_1_1Renderer.html#a4c65b8eeb863809e7287596f9cfc926c',1,'ne::Renderer']]] +]; diff --git a/search/functions_3.js b/search/functions_3.js new file mode 100644 index 000000000..14332958e --- /dev/null +++ b/search/functions_3.js @@ -0,0 +1,43 @@ +var searchData= +[ + ['deallocategeometrybuffers_0',['deallocateGeometryBuffers',['../classne_1_1MeshNode.html#abee6b4fa44a505403f4255a2a3cdbc99',1,'ne::MeshNode']]], + ['deallocateshaderresources_1',['deallocateShaderResources',['../classne_1_1MeshNode.html#a6fd309b596dd9b63483f174af4f64b95',1,'ne::MeshNode::deallocateShaderResources()'],['../classne_1_1Material.html#ac3395d21390030fd5e0b7da98b96b751',1,'ne::Material::deallocateShaderResources()']]], + ['definepushconstants_2',['definePushConstants',['../classne_1_1VulkanPipeline.html#a4f870a6a2501b7eb449fe47928e29039',1,'ne::VulkanPipeline']]], + ['delayedpipelineresourcescreation_3',['DelayedPipelineResourcesCreation',['../classne_1_1DelayedPipelineResourcesCreation.html#ac24112ba84b83dbedcda80e32c31cabd',1,'ne::DelayedPipelineResourcesCreation']]], + ['depthpipelineconfiguration_4',['DepthPipelineConfiguration',['../classne_1_1DepthPipelineConfiguration.html#a4f0ebe4f37534c94b736ff65d5608471',1,'ne::DepthPipelineConfiguration']]], + ['deserialize_5',['deserialize',['../classne_1_1Serializable.html#a464dd6597a8eb7793dfde75c36a44a24',1,'ne::Serializable::deserialize(const std::filesystem::path &pathToFile)'],['../classne_1_1Serializable.html#a3162d0dbc003bfcef8c0ae0846b32f77',1,'ne::Serializable::deserialize(const std::filesystem::path &pathToFile, std::unordered_map< std::string, std::string > &customAttributes)'],['../classne_1_1Serializable.html#a32a58a89522b5cca64db7b6750a73a19',1,'ne::Serializable::deserialize(std::filesystem::path pathToFile, std::unordered_map< std::string, std::string > &customAttributes, const std::string &sEntityId)'],['../classne_1_1Serializable.html#afb8e66a57cc108fca4d35ae40de8e22a',1,'ne::Serializable::deserialize(const std::filesystem::path &pathToFile, const std::string &sEntityId)'],['../classne_1_1Serializable.html#af67ef936c5d20e2f861430b48c69c95a',1,'ne::Serializable::deserialize(const toml::value &tomlData, std::unordered_map< std::string, std::string > &customAttributes, std::string sEntityId="", const std::optional< std::filesystem::path > &optionalPathToFile={})']]], + ['deserializedobjectinformation_6',['DeserializedObjectInformation',['../structne_1_1DeserializedObjectInformation.html#a406090b0706536fc4f4691e4dd83cd50',1,'ne::DeserializedObjectInformation']]], + ['deserializefield_7',['deserializeField',['../classne_1_1SerializableObjectFieldSerializer.html#acd380b1c75bc23c9147292ff6d7992f8',1,'ne::SerializableObjectFieldSerializer::deserializeField()'],['../classne_1_1VectorFieldSerializer.html#afb26619237c0acd15d41b6fe47197c73',1,'ne::VectorFieldSerializer::deserializeField()'],['../classne_1_1UnorderedMapFieldSerializer.html#a89f311522840bfb21d4ac363e7b789ec',1,'ne::UnorderedMapFieldSerializer::deserializeField()'],['../classne_1_1StringFieldSerializer.html#a65ab73d3993240b01dfe68d079742e30',1,'ne::StringFieldSerializer::deserializeField()'],['../classne_1_1MeshDataBinaryFieldSerializer.html#aa57307de527e72c0aaedbf83a8be8884',1,'ne::MeshDataBinaryFieldSerializer::deserializeField()'],['../classne_1_1IFieldSerializer.html#a1d29ae36f95085f2ac1d38a23786033e',1,'ne::IFieldSerializer::deserializeField()'],['../classne_1_1IBinaryFieldSerializer.html#a3754b7399959c000a85b530bde197cae',1,'ne::IBinaryFieldSerializer::deserializeField()'],['../classne_1_1GlmVecFieldSerializer.html#a8edebb5ee053cdee85781eb7665c41e5',1,'ne::GlmVecFieldSerializer::deserializeField()'],['../classne_1_1PrimitiveFieldSerializer.html#af4c3afefc6645db9145e21403dfe7ef0',1,'ne::PrimitiveFieldSerializer::deserializeField()']]], + ['deserializefromsection_8',['deserializeFromSection',['../classne_1_1Serializable.html#adf799d17a8e7649d66c956fee4bb921b',1,'ne::Serializable']]], + ['deserializemultiple_9',['deserializeMultiple',['../classne_1_1Serializable.html#a5d16d519e3d326cbdc101e78ca1a2478',1,'ne::Serializable']]], + ['deserializenodetree_10',['deserializeNodeTree',['../classne_1_1Node.html#a7b45ecbcfa73932f521f10154cd65e35',1,'ne::Node']]], + ['deserializeserializableobject_11',['deserializeSerializableObject',['../classne_1_1SerializableObjectFieldSerializer.html#aabceb0f46d2e228aa52452da411985c7',1,'ne::SerializableObjectFieldSerializer']]], + ['deserializeshaderincludetreehashes_12',['deserializeShaderIncludeTreeHashes',['../structne_1_1ShaderDescription.html#a0a93d7f6ab9d7c5351b3412c805438f0',1,'ne::ShaderDescription']]], + ['despawn_13',['despawn',['../classne_1_1Node.html#ad9bd6ddcf9906c8526b02aa7d1067776',1,'ne::Node']]], + ['destroy_14',['destroy',['../classne_1_1GameManager.html#abaeb5caa61c983880af3717cb064dd3d',1,'ne::GameManager::destroy()'],['../classne_1_1DelayedPipelineResourcesCreation.html#afaffb5e2c2373aaebb46ff9434db8352',1,'ne::DelayedPipelineResourcesCreation::destroy()']]], + ['destroyandcleanexistingworld_15',['destroyAndCleanExistingWorld',['../classne_1_1GameManager.html#a9d22383e19aa33ebc740aab88ffdc709',1,'ne::GameManager']]], + ['destroyresource_16',['destroyResource',['../classne_1_1ShaderCpuWriteResourceBindingManager.html#a39a238fca36d55a121ceb843dbac289a',1,'ne::ShaderCpuWriteResourceBindingManager::destroyResource()'],['../classne_1_1ShaderTextureResourceBindingManager.html#a6b8a74810c30429ad595367438029d28',1,'ne::ShaderTextureResourceBindingManager::destroyResource()']]], + ['destroyswapchainanddependentresources_17',['destroySwapChainAndDependentResources',['../classne_1_1VulkanRenderer.html#a245053a3aed78b4cc1b8e1c1c416d21c',1,'ne::VulkanRenderer']]], + ['destroyworld_18',['destroyWorld',['../classne_1_1World.html#a09026fca206138bcf07975ef8bbbdd15',1,'ne::World']]], + ['detachfromparentanddespawn_19',['detachFromParentAndDespawn',['../classne_1_1Node.html#aa4e2afe27909c7d87d39c048999ab190',1,'ne::Node']]], + ['determinetextureformatextension_20',['determineTextureFormatExtension',['../classne_1_1TextureManager.html#abd42d25226801617a66a276d8679acd9',1,'ne::TextureManager']]], + ['directionallightnode_21',['DirectionalLightNode',['../classne_1_1DirectionalLightNode.html#a3aaaab3578d22d40515c645997414c82',1,'ne::DirectionalLightNode']]], + ['directxdescriptor_22',['DirectXDescriptor',['../classne_1_1DirectXDescriptor.html#a1653dd29d1ee727a98111b7192b438cc',1,'ne::DirectXDescriptor']]], + ['directxdescriptorheap_23',['DirectXDescriptorHeap',['../classne_1_1DirectXDescriptorHeap.html#a4180de8457a89d357473ebd7d1c218ab',1,'ne::DirectXDescriptorHeap']]], + ['directxpso_24',['DirectXPso',['../classne_1_1DirectXPso.html#ab94bbd234d8696b0ac7e8890c79fe008',1,'ne::DirectXPso']]], + ['directxrenderer_25',['DirectXRenderer',['../classne_1_1DirectXRenderer.html#aa5b10bcccb9602f1aadf2422db1fda03',1,'ne::DirectXRenderer']]], + ['directxresource_26',['DirectXResource',['../classne_1_1DirectXResource.html#a64e30c33040fa4213f57ba3d736403b5',1,'ne::DirectXResource']]], + ['directxresourcemanager_27',['DirectXResourceManager',['../classne_1_1DirectXResourceManager.html#a01f42f11f72e1766795c391ea2978c05',1,'ne::DirectXResourceManager']]], + ['directxshadowmaparrayindexmanager_28',['DirectXShadowMapArrayIndexManager',['../classne_1_1DirectXShadowMapArrayIndexManager.html#a49a1df0ef8c6ceeb226defc52eeabd36',1,'ne::DirectXShadowMapArrayIndexManager']]], + ['dispatchcomputeshadersongraphicsqueue_29',['dispatchComputeShadersOnGraphicsQueue',['../classne_1_1DirectXRenderer.html#a912463203e9ede50d9abed4f6c3b9854',1,'ne::DirectXRenderer::dispatchComputeShadersOnGraphicsQueue()'],['../classne_1_1VulkanRenderer.html#a71dec7fcf5ddc1f4bcabb94a091fa68e',1,'ne::VulkanRenderer::dispatchComputeShadersOnGraphicsQueue()']]], + ['dispatchongraphicsqueue_30',['dispatchOnGraphicsQueue',['../classne_1_1GlslComputeShaderInterface.html#a80f1d2210e76d4cd0f984b7aac02d405',1,'ne::GlslComputeShaderInterface::dispatchOnGraphicsQueue()'],['../classne_1_1HlslComputeShaderInterface.html#a31f678f3e2314e82836b16bd2e8ca646',1,'ne::HlslComputeShaderInterface::dispatchOnGraphicsQueue()']]], + ['drawmeshesdepthprepass_31',['drawMeshesDepthPrepass',['../classne_1_1DirectXRenderer.html#ab6c0ca6bb384356ecfa2daf5096babab',1,'ne::DirectXRenderer::drawMeshesDepthPrepass()'],['../classne_1_1Renderer.html#ade28a2acfbf0d842310ed09e43347a6a',1,'ne::Renderer::drawMeshesDepthPrepass()'],['../classne_1_1VulkanRenderer.html#a9adfef1f5c1a3d766b60594b1671e310',1,'ne::VulkanRenderer::drawMeshesDepthPrepass()']]], + ['drawmeshesmainpass_32',['drawMeshesMainPass',['../classne_1_1DirectXRenderer.html#aeb61c86daba65a036adaf0733e335188',1,'ne::DirectXRenderer::drawMeshesMainPass()'],['../classne_1_1VulkanRenderer.html#ab379f5bf43b961a79dfe11bd1cd2b0a9',1,'ne::VulkanRenderer::drawMeshesMainPass()'],['../classne_1_1Renderer.html#ae7c93c8411ed36b3a1a1d548b3119ed4',1,'ne::Renderer::drawMeshesMainPass()']]], + ['drawmeshesmainpassspecificpipelines_33',['drawMeshesMainPassSpecificPipelines',['../classne_1_1DirectXRenderer.html#a449781a0b56051b054faf5d4b6fff786',1,'ne::DirectXRenderer::drawMeshesMainPassSpecificPipelines()'],['../classne_1_1VulkanRenderer.html#afa1ccacfb1ed1749dfb2c75aecdb7a77',1,'ne::VulkanRenderer::drawMeshesMainPassSpecificPipelines()']]], + ['drawnextframe_34',['drawNextFrame',['../classne_1_1Renderer.html#a0c5cd211faa4ab6680cc7e8c20e99d04',1,'ne::Renderer']]], + ['drawshadowmappingpass_35',['drawShadowMappingPass',['../classne_1_1DirectXRenderer.html#a6213bc74d1b269f37e8baff654803c60',1,'ne::DirectXRenderer::drawShadowMappingPass()'],['../classne_1_1VulkanRenderer.html#a1f11c831e45a8489c2e15ba2fbc26dc9',1,'ne::VulkanRenderer::drawShadowMappingPass()'],['../classne_1_1Renderer.html#a406150bfe82ba580d6ed7b2ea780c4e6',1,'ne::Renderer::drawShadowMappingPass()']]], + ['duplicateandappendconfiguration_36',['duplicateAndAppendConfiguration',['../structne_1_1ShaderMacroConfigurations.html#a0fea3a25214cf5d9f6f3a200fe6fb7e1',1,'ne::ShaderMacroConfigurations']]], + ['dynamiccpuwriteshaderresourcearray_37',['DynamicCpuWriteShaderResourceArray',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#ac7069aaeb5cd0f6fa0a343b6a7f4d7d0',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['dynamiccpuwriteshaderresourcearraymanager_38',['DynamicCpuWriteShaderResourceArrayManager',['../classne_1_1DynamicCpuWriteShaderResourceArrayManager.html#a23ccad251759dad28a838bba4707595f',1,'ne::DynamicCpuWriteShaderResourceArrayManager']]], + ['dynamiccpuwriteshaderresourcearrayslot_39',['DynamicCpuWriteShaderResourceArraySlot',['../classne_1_1DynamicCpuWriteShaderResourceArraySlot.html#a280ae578906d453b83c8c93e64d6dfc0',1,'ne::DynamicCpuWriteShaderResourceArraySlot']]] +]; diff --git a/search/functions_4.js b/search/functions_4.js new file mode 100644 index 000000000..f56e9b4de --- /dev/null +++ b/search/functions_4.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['editorcameranode_0',['EditorCameraNode',['../classne_1_1EditorCameraNode.html#ae76688628b584c4fbd37eee488745a41',1,'ne::EditorCameraNode']]], + ['editorgameinstance_1',['EditorGameInstance',['../classne_1_1EditorGameInstance.html#a7a5fafe560c718e9762c7dab30074b0c',1,'ne::EditorGameInstance']]], + ['enabletimer_2',['enableTimer',['../classne_1_1Node.html#a64f1ae678b1d2c5a02158346dc8a1219',1,'ne::Node']]], + ['environmentnode_3',['EnvironmentNode',['../classne_1_1EnvironmentNode.html#a9e3b14ea64d15d790f31393ee795316e',1,'ne::EnvironmentNode']]], + ['error_4',['Error',['../classne_1_1Error.html#aeab59d878b9909b6ec2c984d85e0cf6e',1,'ne::Error::Error(Error &&other)=default'],['../classne_1_1Error.html#abc1af9c0ac9343d134ed153c436ae7f2',1,'ne::Error::Error(const Error &other)=default'],['../classne_1_1Error.html#a3a8c7572c889c7f1562f7f7206b7e1f2',1,'ne::Error::Error(std::string_view sMessage, const std::source_location location=std::source_location::current())']]], + ['error_5',['error',['../classne_1_1MessageBox.html#ab902fd4c15bebf7d81d8898b0a0495dc',1,'ne::MessageBox::error()'],['../classne_1_1DesktopNotification.html#a4b6800bfbe6d91bb6fa6ac9b2e10a419',1,'ne::DesktopNotification::error()'],['../classne_1_1Logger.html#a8924f8a6a69fa1a7b64d1c2a1a4f59e8',1,'ne::Logger::error()']]], + ['executecomputeshadersongraphicsqueue_6',['executeComputeShadersOnGraphicsQueue',['../classne_1_1DirectXRenderer.html#ac60f6b10d7b48fab48253a3ff0e031d9',1,'ne::DirectXRenderer::executeComputeShadersOnGraphicsQueue()'],['../classne_1_1VulkanRenderer.html#a0491f1ed9a420d8758f7091398d2bc88',1,'ne::VulkanRenderer::executeComputeShadersOnGraphicsQueue()'],['../classne_1_1Renderer.html#a159404d107fc2b9c62609f7a4b29158e',1,'ne::Renderer::executeComputeShadersOnGraphicsQueue()']]], + ['executedeferredtasks_7',['executeDeferredTasks',['../classne_1_1GameManager.html#a3d550fb580a02a05eaa937d5fa6fe1f7',1,'ne::GameManager']]], + ['executegraphicscommandlist_8',['executeGraphicsCommandList',['../classne_1_1DirectXRenderer.html#ab9493948abc31d91c435160568f579c5',1,'ne::DirectXRenderer']]], + ['executeshadermanagerselfvalidation_9',['executeShaderManagerSelfValidation',['../classne_1_1GameInstance.html#a632031102f1943178d5b19d98407babe',1,'ne::GameInstance']]], + ['expandarray_10',['expandArray',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#adac22230c0160ba49541df70eac168a9',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['expandheap_11',['expandHeap',['../classne_1_1DirectXDescriptorHeap.html#ab67c669279ff6c6779b5943a6678d245',1,'ne::DirectXDescriptorHeap']]], + ['expandrange_12',['expandRange',['../classne_1_1DirectXDescriptorHeap.html#a4fc8e9f42963ca0db93b71232e50cd75',1,'ne::DirectXDescriptorHeap']]] +]; diff --git a/search/functions_5.js b/search/functions_5.js new file mode 100644 index 000000000..1ba0bb5e5 --- /dev/null +++ b/search/functions_5.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['findoffsetandcopyspecialvaluetoconstant_0',['findOffsetAndCopySpecialValueToConstant',['../structne_1_1Pipeline_1_1ShaderConstantsData.html#a6406029473f3f6445b8ce750a829b900',1,'ne::Pipeline::ShaderConstantsData']]], + ['findorcreatepipeline_1',['findOrCreatePipeline',['../classne_1_1PipelineManager.html#ab535e2ce924545544f65fff07d192c7e',1,'ne::PipelineManager']]], + ['findshader_2',['findShader',['../classne_1_1ShaderUser.html#a114354cd7387a460273a1134bf47fb77',1,'ne::ShaderUser::findShader()'],['../classne_1_1ShaderManager.html#a65e06a6661d97629ce2b0bfed110e6ea',1,'ne::ShaderManager::findShader()']]], + ['findstaticsamplerforsamplerresource_3',['findStaticSamplerForSamplerResource',['../classne_1_1RootSignatureGenerator.html#ad1a3ea4eb8e2e6b537e67fdcaba657c5',1,'ne::RootSignatureGenerator']]], + ['findvalidworld_4',['findValidWorld',['../classne_1_1Node.html#a1ff981780eeb406408afd037bb31f684',1,'ne::Node']]], + ['flushtodisk_5',['flushToDisk',['../classne_1_1Logger.html#ae512e20fe66d1959c9efb026704e5e8a',1,'ne::Logger']]], + ['formatbytestokilobytes_6',['formatBytesToKilobytes',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a8ac9a04da60f0f69e9c35776e4949cf0',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['formatbytestomegabytes_7',['formatBytesToMegabytes',['../classne_1_1DynamicCpuWriteShaderResourceArrayManager.html#a997069c09e8bc1e087ef3ba74165fae0',1,'ne::DynamicCpuWriteShaderResourceArrayManager']]], + ['frameresourcemanager_8',['FrameResourceManager',['../classne_1_1FrameResourceManager.html#a7fc075709f514e458505092139a5e507',1,'ne::FrameResourceManager']]], + ['freemem_9',['freeMem',['../classne_1_1KtxLoadingCallbackManager.html#a150e6501d9d32d0a8a603d7286fb6c64',1,'ne::KtxLoadingCallbackManager']]], + ['freeslot_10',['freeSlot',['../classne_1_1ShaderLightArray.html#a3328662ff475820aae6c436b08ef8bc7',1,'ne::ShaderLightArray']]], + ['from_5ftoml_11',['from_toml',['../structne_1_1ShaderDescription.html#abde82750728f62e7ac5b51d406631139',1,'ne::ShaderDescription']]] +]; diff --git a/search/functions_6.js b/search/functions_6.js new file mode 100644 index 000000000..7dff414a6 --- /dev/null +++ b/search/functions_6.js @@ -0,0 +1,420 @@ +var searchData= +[ + ['gameinstance_0',['GameInstance',['../classne_1_1GameInstance.html#a7f00c7df05113dc71320acdf378c24d8',1,'ne::GameInstance']]], + ['gamemanager_1',['GameManager',['../classne_1_1GameManager.html#a18e4273cc512aa41cec39e2bdbba4296',1,'ne::GameManager']]], + ['generatecompute_2',['generateCompute',['../classne_1_1RootSignatureGenerator.html#a3e29b37cbfed89d7bca3b699e8436024',1,'ne::RootSignatureGenerator::generateCompute()'],['../classne_1_1DescriptorSetLayoutGenerator.html#aa4a494cb89af4dc2bfdfd96bddbc1712',1,'ne::DescriptorSetLayoutGenerator::generateCompute()']]], + ['generatecomputepipelineforshader_3',['generateComputePipelineForShader',['../classne_1_1VulkanPipeline.html#a71297686d899c8de2f12c4874b955806',1,'ne::VulkanPipeline']]], + ['generatecomputepso_4',['generateComputePso',['../classne_1_1DirectXPso.html#aeddc74b51dd0863dd3e7278aae05aafd',1,'ne::DirectXPso']]], + ['generatefreefilename_5',['generateFreeFileName',['../classne_1_1ConfigManager.html#ac563ff748a1fe991aabe5629f08d1ce6',1,'ne::ConfigManager']]], + ['generategraphics_6',['generateGraphics',['../classne_1_1DescriptorSetLayoutGenerator.html#ab7ad336e157e9fc9aaee7dc5fae40f70',1,'ne::DescriptorSetLayoutGenerator::generateGraphics()'],['../classne_1_1RootSignatureGenerator.html#a40f6aca1c59ce13664201a7ec34ca2ee',1,'ne::RootSignatureGenerator::generateGraphics()']]], + ['generategraphicspipeline_7',['generateGraphicsPipeline',['../classne_1_1VulkanPipeline.html#a271ed56d31af0e20e6f1a4b396931e31',1,'ne::VulkanPipeline']]], + ['generategraphicspso_8',['generateGraphicsPso',['../classne_1_1DirectXPso.html#a610740c80cb68074f2097cdbf967a8ce',1,'ne::DirectXPso']]], + ['generatelayoutbinding_9',['generateLayoutBinding',['../classne_1_1DescriptorSetLayoutGenerator.html#a42e6d69dbd45da013ab4da65a5e3d662',1,'ne::DescriptorSetLayoutGenerator']]], + ['generatesingledescriptordescription_10',['generateSingleDescriptorDescription',['../classne_1_1RootSignatureGenerator_1_1RootParameter.html#a1f1ba2eb092e2c938202694630266feb',1,'ne::RootSignatureGenerator::RootParameter']]], + ['generatetablerange_11',['generateTableRange',['../classne_1_1RootSignatureGenerator_1_1RootParameter.html#aa0265621533a19869ecba78866b4b91e',1,'ne::RootSignatureGenerator::RootParameter']]], + ['get_12',['get',['../classne_1_1GameManager.html#a3d76df401f4711a33a9bb896d793923b',1,'ne::GameManager::get()'],['../classne_1_1UniqueValueGenerator.html#ab4a93d2f5dd3cf695ec0efef311ca0df',1,'ne::UniqueValueGenerator::get()'],['../classne_1_1GLFW.html#af53e48a61258744799475d8ce33c13b5',1,'ne::GLFW::get()'],['../classne_1_1Logger.html#ac04b761e4d1a5e7a9cd5c48e4d926f92',1,'ne::Logger::get()']]], + ['getaabb_13',['getAABB',['../classne_1_1MeshNode.html#a6295e3796e64c6fb4d4552e46cf9f14a',1,'ne::MeshNode']]], + ['getactionevent_14',['getActionEvent',['../classne_1_1InputManager.html#a3ba5941eb643fa0bfa2157bfe7612f16',1,'ne::InputManager']]], + ['getactioneventbindings_15',['getActionEventBindings',['../classne_1_1GameInstance.html#aaf9d328115f9ccfb0a2bcf59696b4706',1,'ne::GameInstance::getActionEventBindings()'],['../classne_1_1Node.html#a77035ce347e8bf68b564b5358ef4b5cc',1,'ne::Node::getActionEventBindings()']]], + ['getactivecamera_16',['getActiveCamera',['../classne_1_1CameraManager.html#a01a07e47ef74699df66d3d84a127d903',1,'ne::CameraManager']]], + ['getactualindex_17',['getActualIndex',['../classne_1_1ShaderArrayIndex.html#a02149f17e195a983700f0904a439caf3',1,'ne::ShaderArrayIndex']]], + ['getadditionalpixelshadermacros_18',['getAdditionalPixelShaderMacros',['../classne_1_1PipelineConfiguration.html#a346f88493f1047ffa54fa6d8fff6fb80',1,'ne::PipelineConfiguration::getAdditionalPixelShaderMacros()'],['../classne_1_1ColorPipelineConfiguration.html#a209c072abbe6ef7fab06039d74ffc572',1,'ne::ColorPipelineConfiguration::getAdditionalPixelShaderMacros()']]], + ['getadditionalvertexshadermacros_19',['getAdditionalVertexShaderMacros',['../classne_1_1PipelineConfiguration.html#ad328d153d41a2c8bff9907f83859a7fa',1,'ne::PipelineConfiguration']]], + ['getalivenodecount_20',['getAliveNodeCount',['../classne_1_1Node.html#a881561ee518c6b936d7b973c89b26b62',1,'ne::Node']]], + ['getallactionevents_21',['getAllActionEvents',['../classne_1_1InputManager.html#aa5f3a9b1d2ea56b97a5a8cf62f1ffdc7',1,'ne::InputManager']]], + ['getallaxisevents_22',['getAllAxisEvents',['../classne_1_1InputManager.html#a950d6565c8af99f98a512e99be88b741',1,'ne::InputManager']]], + ['getallfilenames_23',['getAllFileNames',['../classne_1_1ConfigManager.html#a070d6ddb597e827ce1ead622537d16a5',1,'ne::ConfigManager']]], + ['getallframeresources_24',['getAllFrameResources',['../classne_1_1FrameResourceManager.html#aa953eaa3de8f8f69d646e26dde1a124c',1,'ne::FrameResourceManager']]], + ['getallkeysofsection_25',['getAllKeysOfSection',['../classne_1_1ConfigManager.html#ae0612346f4826dd639e6033af0ae3809',1,'ne::ConfigManager']]], + ['getallsections_26',['getAllSections',['../classne_1_1ConfigManager.html#aa9efb319cadaf29d209c86aefe4d65a6',1,'ne::ConfigManager']]], + ['getambientlight_27',['getAmbientLight',['../classne_1_1EnvironmentNode.html#a3d3ec8182d874479ea206e7b5461c34d',1,'ne::EnvironmentNode']]], + ['getantialiasingquality_28',['getAntialiasingQuality',['../classne_1_1RenderSettings.html#afa1e88e397a0fd9be160abd14738dc84',1,'ne::RenderSettings']]], + ['getapplicationname_29',['getApplicationName',['../classne_1_1Globals.html#a9978606fda780ac44f7725d33be33fba',1,'ne::Globals']]], + ['getarrayforshaderresource_30',['getArrayForShaderResource',['../classne_1_1DynamicCpuWriteShaderResourceArrayManager.html#a656266f96634a2bac890181a028d17eb',1,'ne::DynamicCpuWriteShaderResourceArrayManager']]], + ['getarrayindexmanagerbasedonshadowmaptype_31',['getArrayIndexManagerBasedOnShadowMapType',['../classne_1_1ShadowMapManager.html#a95e60fc5e0f6c1b4123673d919bc39fa',1,'ne::ShadowMapManager']]], + ['getavailablematerialslotcount_32',['getAvailableMaterialSlotCount',['../classne_1_1MeshNode.html#a8911af4b77829e58ed0d59466d2ba18a',1,'ne::MeshNode']]], + ['getaveragepointlightnumpertilemacro_33',['getAveragePointLightNumPerTileMacro',['../structne_1_1EngineShaderConstantMacros_1_1ForwardPlus.html#a8689ec16825647e999783708615abd46',1,'ne::EngineShaderConstantMacros::ForwardPlus']]], + ['getaveragespotlightnumpertilemacro_34',['getAverageSpotLightNumPerTileMacro',['../structne_1_1EngineShaderConstantMacros_1_1ForwardPlus.html#abaf1ef6566e1890ba86271c8dc353dcc',1,'ne::EngineShaderConstantMacros::ForwardPlus']]], + ['getaxisevent_35',['getAxisEvent',['../classne_1_1InputManager.html#ae1fff3cb781f1b72c96a5bf1eb0c4b00',1,'ne::InputManager']]], + ['getaxiseventbindings_36',['getAxisEventBindings',['../classne_1_1GameInstance.html#ae937d75eae2f65ede3f1e1409929d7a4',1,'ne::GameInstance::getAxisEventBindings()'],['../classne_1_1Node.html#a062c7be217334d4bce02ce34c32e00cb',1,'ne::Node::getAxisEventBindings()']]], + ['getbackbufferformat_37',['getBackBufferFormat',['../classne_1_1DirectXRenderer.html#a243147e850a9d3751472d126b3c03f40',1,'ne::DirectXRenderer']]], + ['getbackupfileextension_38',['getBackupFileExtension',['../classne_1_1ConfigManager.html#a0d1770b8889f99ee59c9ca3fb7baa977',1,'ne::ConfigManager']]], + ['getbinaryfieldserializers_39',['getBinaryFieldSerializers',['../classne_1_1FieldSerializerManager.html#ad379c0a5fffa68d953ff83e45f4e8e72',1,'ne::FieldSerializerManager']]], + ['getbindedcubemapfacedescriptorcpuhandle_40',['getBindedCubemapFaceDescriptorCpuHandle',['../classne_1_1DirectXResource.html#a44ab736799802e22a37fa6430dbd4802',1,'ne::DirectXResource']]], + ['getbindeddescriptorcpuhandle_41',['getBindedDescriptorCpuHandle',['../classne_1_1DirectXResource.html#a3e742527bbb00f2f6b36c29f4bb1a16a',1,'ne::DirectXResource']]], + ['getbindeddescriptorgpuhandle_42',['getBindedDescriptorGpuHandle',['../classne_1_1DirectXResource.html#a1afca035bead505995bc62336c4bf14d',1,'ne::DirectXResource']]], + ['getbindedresources_43',['getBindedResources',['../classne_1_1GlobalShaderResourceBinding.html#aaa54e850f3768df7fa2411c619809882',1,'ne::GlobalShaderResourceBinding']]], + ['getbuilder_44',['getBuilder',['../classne_1_1Window.html#a7c2a38739854b5445626d7698877c683',1,'ne::Window']]], + ['getcalculatefrustumgridcomputeshadername_45',['getCalculateFrustumGridComputeShaderName',['../structne_1_1EngineShaderNames_1_1ForwardPlus.html#a5038351f0972dc5d648ebd58f04631f0',1,'ne::EngineShaderNames::ForwardPlus']]], + ['getcalculategridfrustumcomputeshader_46',['getCalculateGridFrustumComputeShader',['../structne_1_1EngineShaders_1_1ForwardPlus.html#a4268318f0948424a7f5e62fb2486d3fc',1,'ne::EngineShaders::ForwardPlus']]], + ['getcalledeveryframenodecount_47',['getCalledEveryFrameNodeCount',['../classne_1_1GameManager.html#a3851e2ff66e0ec908c30701d08e8d7bb',1,'ne::GameManager::getCalledEveryFrameNodeCount()'],['../classne_1_1World.html#a78ec47ebedbb2fdfe2d2ffdcbb3710c9',1,'ne::World::getCalledEveryFrameNodeCount()'],['../classne_1_1GameInstance.html#a88c6a395c405626e8b9bd9f88bca48a0',1,'ne::GameInstance::getCalledEveryFrameNodeCount()']]], + ['getcalledeveryframenodes_48',['getCalledEveryFrameNodes',['../classne_1_1World.html#a6349774922ab7039790289df90931318',1,'ne::World']]], + ['getcamerafrustum_49',['getCameraFrustum',['../classne_1_1CameraProperties.html#a99286d96919503b9ce07c32fd7e9f2cf',1,'ne::CameraProperties']]], + ['getcameramanager_50',['getCameraManager',['../classne_1_1GameManager.html#a5b1aad14129460108addc870a7cdc2a7',1,'ne::GameManager::getCameraManager()'],['../classne_1_1GameInstance.html#a20c9104a81b6b32567972bdd09a175ec',1,'ne::GameInstance::getCameraManager()']]], + ['getcameraproperties_51',['getCameraProperties',['../classne_1_1CameraNode.html#a67679c00bce3038f336dc4bef7a96315',1,'ne::CameraNode']]], + ['getcapacity_52',['getCapacity',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#afbbc127aa1fafba7f89a2d85b6e5b17c',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['getcapacitystepsize_53',['getCapacityStepSize',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a07d4d8a7281982cdef1ae64a9a6d2249',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['getcategorydirectory_54',['getCategoryDirectory',['../classne_1_1ConfigManager.html#a3c1a80a7f4ed3cecf490d4883407fdbb',1,'ne::ConfigManager']]], + ['getcbvsrvuavheap_55',['getCbvSrvUavHeap',['../classne_1_1DirectXResourceManager.html#aa6d30f7a66a65dcd84fd6187affdf0ae',1,'ne::DirectXResourceManager']]], + ['getchildnodeoftype_56',['getChildNodeOfType',['../classne_1_1Node.html#a7b03a7b88779e86fd7df6f158892c86b',1,'ne::Node']]], + ['getchildnodes_57',['getChildNodes',['../classne_1_1Node.html#a874ddce54dfd82fcda801cb799bb1b85',1,'ne::Node']]], + ['getclassforguid_58',['getClassForGuid',['../classne_1_1Serializable.html#ae524a157024d00ae1ab1ee6a3a44b01a',1,'ne::Serializable::getClassForGuid(const std::string &sGuid)'],['../classne_1_1Serializable.html#a8c9ca7767a0cac5a0612ff2243e15fd0',1,'ne::Serializable::getClassForGuid(const rfk::Struct *pArchetypeToAnalyze, const std::string &sGuid)']]], + ['getclosestspatialparent_59',['getClosestSpatialParent',['../classne_1_1SpatialNode.html#aa361d4f17cb0cac78ad7f4b1f33d2c05',1,'ne::SpatialNode']]], + ['getcolorpipeline_60',['getColorPipeline',['../classne_1_1Material.html#ae72f306a7b3eb645832d4b850108110a',1,'ne::Material']]], + ['getcommandpool_61',['getCommandPool',['../classne_1_1VulkanRenderer.html#a4bfac946f7d02bde23fc62106eed5561',1,'ne::VulkanRenderer']]], + ['getcompiledblob_62',['getCompiledBlob',['../classne_1_1HlslShader.html#a8a15f4befc886abb6c34237c904629ed',1,'ne::HlslShader']]], + ['getcompiledbytecode_63',['getCompiledBytecode',['../classne_1_1GlslShader.html#a01e870cc4e2b610e9984e68dcae59049',1,'ne::GlslShader']]], + ['getcomputepipelinecount_64',['getComputePipelineCount',['../structne_1_1PipelineManager_1_1ComputePipelines.html#a13470d46781385cb1fb755f56c8d3362',1,'ne::PipelineManager::ComputePipelines']]], + ['getcomputepipelineforshader_65',['getComputePipelineForShader',['../structne_1_1PipelineManager_1_1ComputePipelines.html#a2597aab9c580a5596d131e6988d8b2b9',1,'ne::PipelineManager::ComputePipelines']]], + ['getcomputeshadermodel_66',['getComputeShaderModel',['../classne_1_1HlslShader.html#ae22f3feedd16a9ffc8a141bc90627266',1,'ne::HlslShader']]], + ['getcomputeshadername_67',['getComputeShaderName',['../classne_1_1PipelineConfiguration.html#a84366bcf00697f665cb36b8340d9d1f3',1,'ne::PipelineConfiguration::getComputeShaderName()'],['../classne_1_1ComputePipelineConfiguration.html#abca07a14787e1efeb10cef56bbc3b3cd',1,'ne::ComputePipelineConfiguration::getComputeShaderName()'],['../classne_1_1ComputeShaderInterface.html#a127554f5a4ba6616f68bcf61787a9498',1,'ne::ComputeShaderInterface::getComputeShaderName()']]], + ['getcomputeshadersforgraphicsqueueexecution_68',['getComputeShadersForGraphicsQueueExecution',['../classne_1_1PipelineManager.html#aff2b14224c8e71e0f15daf965f54b398',1,'ne::PipelineManager::getComputeShadersForGraphicsQueueExecution()'],['../structne_1_1PipelineManager_1_1ComputePipelines.html#ae8f30fe009055207bca46d93bf124ae4',1,'ne::PipelineManager::ComputePipelines::getComputeShadersForGraphicsQueueExecution()']]], + ['getcomputetexturesampler_69',['getComputeTextureSampler',['../classne_1_1VulkanRenderer.html#a841bbb1e1f79595e68c8f771dc17da6f',1,'ne::VulkanRenderer']]], + ['getconfigformatextension_70',['getConfigFormatExtension',['../classne_1_1ConfigManager.html#a768b2f50bba6590ec86d94fa86995a38',1,'ne::ConfigManager']]], + ['getconfiguration_71',['getConfiguration',['../classne_1_1Pipeline.html#ac2e7491482673ebcbbbeb707929b0c1c',1,'ne::Pipeline']]], + ['getconfigurationfilename_72',['getConfigurationFileName',['../classne_1_1RenderSettings.html#a11f9aa51b447226818d14884d04e399f',1,'ne::RenderSettings']]], + ['getconfigurationfilesectionname_73',['getConfigurationFileSectionName',['../structne_1_1ShaderDescription.html#ab4507d18c32a93428852bd5ca24b3e3b',1,'ne::ShaderDescription']]], + ['getcurrentalivematerialcount_74',['getCurrentAliveMaterialCount',['../classne_1_1Material.html#ad3f8b2e84ad7f53c3a100894bfd6c3e2',1,'ne::Material']]], + ['getcurrentallocationcount_75',['getCurrentAllocationCount',['../classne_1_1KtxLoadingCallbackManager.html#a2b89149c0e95795d5ae3a8fe98572591',1,'ne::KtxLoadingCallbackManager']]], + ['getcurrentamountofshadersinmemory_76',['getCurrentAmountOfShadersInMemory',['../classne_1_1Shader.html#a98489a6ee5b3cdede368328501da1eda',1,'ne::Shader']]], + ['getcurrentaxiseventstate_77',['getCurrentAxisEventState',['../classne_1_1InputManager.html#ab353bd1605a9f18cc4c480f0fdd9c493',1,'ne::InputManager']]], + ['getcurrentbackbufferresource_78',['getCurrentBackBufferResource',['../classne_1_1DirectXRenderer.html#a501564c57f5930bb4c37e6430f92711d',1,'ne::DirectXRenderer']]], + ['getcurrentcameramode_79',['getCurrentCameraMode',['../classne_1_1CameraProperties.html#ae671a0422c76e0e69a2dae283c2508a6',1,'ne::CameraProperties']]], + ['getcurrentcomputepipelinecount_80',['getCurrentComputePipelineCount',['../classne_1_1PipelineManager.html#ae43fd33ba41cc0103d9decb11c5bb64d',1,'ne::PipelineManager']]], + ['getcurrentframeresource_81',['getCurrentFrameResource',['../classne_1_1FrameResourceManager.html#a911bf789ded20a8a704c504eb337357d',1,'ne::FrameResourceManager']]], + ['getcurrentgraphicspipelinecount_82',['getCurrentGraphicsPipelineCount',['../classne_1_1PipelineManager.html#a9c6df8937369f1b14c0277f4645cf847',1,'ne::PipelineManager']]], + ['getcurrentindexintoarray_83',['getCurrentIndexIntoArray',['../classne_1_1ShaderLightArraySlot.html#ad6e9749490d9b666091ebd826b55ee5b',1,'ne::ShaderLightArraySlot']]], + ['getcurrentlyusedgpuname_84',['getCurrentlyUsedGpuName',['../classne_1_1DirectXRenderer.html#a88cfe7d4e46ccb9f1d9229228f1e5db0',1,'ne::DirectXRenderer::getCurrentlyUsedGpuName()'],['../classne_1_1VulkanRenderer.html#a603e6ac31825bf57a772c0e89a89ec8b',1,'ne::VulkanRenderer::getCurrentlyUsedGpuName()'],['../classne_1_1Renderer.html#ab89d3ddad084a96bb1f348c96e0b7263',1,'ne::Renderer::getCurrentlyUsedGpuName()']]], + ['getcurrentshaderconfiguration_85',['getCurrentShaderConfiguration',['../classne_1_1Pipeline.html#ae0485a87a3355641f8afaa7d4a28d9d7',1,'ne::Pipeline']]], + ['getcurrentstateinfo_86',['getCurrentStateInfo',['../classne_1_1GpuResourceManager.html#adbd4f6f1f7b983f54d63b2b2c08c82d7',1,'ne::GpuResourceManager::getCurrentStateInfo()'],['../classne_1_1DirectXResourceManager.html#ac85dd77c5153331d54ad99c25b76c1a8',1,'ne::DirectXResourceManager::getCurrentStateInfo()'],['../classne_1_1VulkanResourceManager.html#a8ddb89478c58e0c11ae2d9178b738e3f',1,'ne::VulkanResourceManager::getCurrentStateInfo()']]], + ['getcursor_87',['getCursor',['../classne_1_1WindowCursor.html#a61e8c35907db8dfd2932528af5e22570',1,'ne::WindowCursor']]], + ['getcursorposition_88',['getCursorPosition',['../classne_1_1Window.html#a74e467463a4c29a266028816722c9ccd',1,'ne::Window']]], + ['getd3dcommandlist_89',['getD3dCommandList',['../classne_1_1DirectXRenderer.html#afb9c21dc0d41cc85e24b097cff26f732',1,'ne::DirectXRenderer']]], + ['getd3dcommandqueue_90',['getD3dCommandQueue',['../classne_1_1DirectXRenderer.html#a4ab37cf018996f17dbe1bcb15b603420',1,'ne::DirectXRenderer']]], + ['getd3ddevice_91',['getD3dDevice',['../classne_1_1DirectXRenderer.html#a47db7ffc60c01f0370cbe98e6c2e40bd',1,'ne::DirectXRenderer']]], + ['getdata_92',['getData',['../classne_1_1PipelineShaderConstantsManager.html#a651e27c76603031970b452233c9ba0da',1,'ne::PipelineShaderConstantsManager']]], + ['getdatetime_93',['getDateTime',['../classne_1_1Logger.html#a0d54d158ef98dd59b27f553ec6d51ff8',1,'ne::Logger']]], + ['getdebugonlyloggingprefix_94',['getDebugOnlyLoggingPrefix',['../classne_1_1Globals.html#a5b78765ce2be8d944763e039e71e29b1',1,'ne::Globals']]], + ['getdefaultmaterial_95',['getDefaultMaterial',['../classne_1_1MeshNode.html#ad5c28bad20f7a24d30f248602ca9aff0',1,'ne::MeshNode']]], + ['getdefaultworldsize_96',['getDefaultWorldSize',['../classne_1_1Globals.html#a7179df5dd887fdc07ac727435cc2e9bc',1,'ne::Globals']]], + ['getdepthbufferformatnomultisampling_97',['getDepthBufferFormatNoMultisampling',['../classne_1_1DirectXRenderer.html#a9541f211398419d7dcbfc3430f5b0b1a',1,'ne::DirectXRenderer']]], + ['getdepthimageformat_98',['getDepthImageFormat',['../classne_1_1VulkanRenderer.html#a843071a0c9dde64b9eae832fde1b8e97',1,'ne::VulkanRenderer']]], + ['getdepthonlypipeline_99',['getDepthOnlyPipeline',['../classne_1_1Material.html#a0b40a74637b5be997eb63c999773f52e',1,'ne::Material']]], + ['getdepthonlyrenderpass_100',['getDepthOnlyRenderPass',['../classne_1_1VulkanRenderer.html#a20260337b2a82568f06e8f2d1bd2c4e4',1,'ne::VulkanRenderer']]], + ['getdepthstencilbufferformat_101',['getDepthStencilBufferFormat',['../classne_1_1DirectXRenderer.html#ac667bc2de2a52d1f29845eaead3f6d06',1,'ne::DirectXRenderer']]], + ['getdepthtexturenomultisampling_102',['getDepthTextureNoMultisampling',['../classne_1_1DirectXRenderer.html#a6cc0a84715bba5c6ab4ca4197c98c7d5',1,'ne::DirectXRenderer::getDepthTextureNoMultisampling()'],['../classne_1_1VulkanRenderer.html#a26352c2baa0cdc7764911d55b15bc037',1,'ne::VulkanRenderer::getDepthTextureNoMultisampling()'],['../classne_1_1Renderer.html#ad507d970274a84b8fbb2a0a97b30305e',1,'ne::Renderer::getDepthTextureNoMultisampling()']]], + ['getdescription_103',['getDescription',['../structne_1_1ShaderCacheInvalidationReasonDescription.html#a7157d8971a6e12a9bf09264ac20a9ffb',1,'ne::ShaderCacheInvalidationReasonDescription']]], + ['getdescriptor_104',['getDescriptor',['../classne_1_1DirectXResource.html#a6a2a8b20d5e4b2749e56b70225544e8b',1,'ne::DirectXResource']]], + ['getdescriptorheap_105',['getDescriptorHeap',['../classne_1_1DirectXDescriptor.html#a899e303aa3c9dbe190b97a1ff7a1e472',1,'ne::DirectXDescriptor']]], + ['getdescriptoroffsetindescriptors_106',['getDescriptorOffsetInDescriptors',['../classne_1_1DirectXDescriptor.html#a23428da422839a2b3266644047d3fc5d',1,'ne::DirectXDescriptor']]], + ['getdescriptorsetlayoutinfo_107',['getDescriptorSetLayoutInfo',['../classne_1_1GlslShader.html#a09f1eb22fc3973a9d1dfdb19233b613e',1,'ne::GlslShader']]], + ['getdescriptorsize_108',['getDescriptorSize',['../classne_1_1DirectXDescriptorHeap.html#a962349564c7a269466e7eb7d9be5dece',1,'ne::DirectXDescriptorHeap']]], + ['getdescriptortypeshandledbythisheap_109',['getDescriptorTypesHandledByThisHeap',['../classne_1_1DirectXDescriptorHeap.html#a7ea4e5d3212c4304e674cb7777e483cd',1,'ne::DirectXDescriptorHeap']]], + ['getdiffusecolor_110',['getDiffuseColor',['../classne_1_1Material.html#aafe13b5a88171864d83f787303b87ebe',1,'ne::Material']]], + ['getdirectionallightdataarray_111',['getDirectionalLightDataArray',['../classne_1_1LightingShaderResourceManager.html#ab1059a45ce18ac2d920320812e7d6782',1,'ne::LightingShaderResourceManager']]], + ['getdirectionallightnodeshadowmappinginfo_112',['getDirectionalLightNodeShadowMappingInfo',['../classne_1_1Renderer.html#a20c1e754bb8669365ff64f726e22f253',1,'ne::Renderer']]], + ['getdirectionallightsshaderresourcename_113',['getDirectionalLightsShaderResourceName',['../classne_1_1LightingShaderResourceManager.html#ac404f96829ab7021c2486d0c1626b36e',1,'ne::LightingShaderResourceManager']]], + ['getdirectionalshadowmapsshaderresourcename_114',['getDirectionalShadowMapsShaderResourceName',['../classne_1_1ShadowMapManager.html#ae122edf82ee3612ccd217f223216229b',1,'ne::ShadowMapManager']]], + ['getdirectorywithlogs_115',['getDirectoryWithLogs',['../classne_1_1Logger.html#a15839ec7b47081c58f2cd8d489d65f80',1,'ne::Logger']]], + ['getdrawcallcounter_116',['getDrawCallCounter',['../classne_1_1Renderer.html#a4cb0d87cb12c66c71c5922f942d5da71',1,'ne::Renderer']]], + ['getdsvheap_117',['getDsvHeap',['../classne_1_1DirectXResourceManager.html#a7541f40bfcc1a066d58160c7887ec4eb',1,'ne::DirectXResourceManager']]], + ['getdynamiccpuwriteshaderresourcearraymanager_118',['getDynamicCpuWriteShaderResourceArrayManager',['../classne_1_1GpuResourceManager.html#a82a3775c7752174f489f049f01327f1e',1,'ne::GpuResourceManager']]], + ['geteditorcamera_119',['getEditorCamera',['../classne_1_1EditorGameInstance.html#ad13da9aea3a7dc4275907c873fde63c1',1,'ne::EditorGameInstance']]], + ['geteditorwindowtitle_120',['getEditorWindowTitle',['../classne_1_1EditorGameInstance.html#af8bf4f0a4f57cca6516327988a4c6838',1,'ne::EditorGameInstance']]], + ['getelapsedtimeinms_121',['getElapsedTimeInMs',['../classne_1_1Timer.html#aea4d4cb8702cd5017a0e786bdf2cca92',1,'ne::Timer']]], + ['getelementcount_122',['getElementCount',['../classne_1_1GpuResource.html#a7169c9c330ba86dc9e164eec4bc4ce60',1,'ne::GpuResource::getElementCount()'],['../classne_1_1UploadBuffer.html#a9ff8ca5b5291cffd5fe8acbd8b3256ef',1,'ne::UploadBuffer::getElementCount()']]], + ['getelementsize_123',['getElementSize',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a40f8d0c16e8c0902483fb39a13c91cf1',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['getelementsizeinbytes_124',['getElementSizeInBytes',['../classne_1_1GpuResource.html#a70c29a51ac2bcfec8318cbdce1cb8d8e',1,'ne::GpuResource::getElementSizeInBytes()'],['../classne_1_1UploadBuffer.html#a66ac386509b4137b422a9f0855edf4ff',1,'ne::UploadBuffer::getElementSizeInBytes()']]], + ['getenginedirectoryname_125',['getEngineDirectoryName',['../classne_1_1Globals.html#aeafc24c3a3035bf20a65f7515cc54633',1,'ne::Globals']]], + ['getexecutiongroup_126',['getExecutionGroup',['../classne_1_1ComputeShaderInterface.html#a24a573e7f0ac4191e37300041b96be65',1,'ne::ComputeShaderInterface']]], + ['getexecutionstage_127',['getExecutionStage',['../classne_1_1ComputeShaderInterface.html#a7117d4df5768fb441629262b698d2cd1',1,'ne::ComputeShaderInterface']]], + ['getfarclipplanedistance_128',['getFarClipPlaneDistance',['../classne_1_1CameraProperties.html#a45d9ee38bba5b4779b0818ffb40ae18d',1,'ne::CameraProperties']]], + ['getfieldserializers_129',['getFieldSerializers',['../classne_1_1FieldSerializerManager.html#a5a6d061fef5e818e53e74f1f1afaec65',1,'ne::FieldSerializerManager']]], + ['getfilehash_130',['getFileHash',['../structne_1_1ShaderDescription.html#a433fa17772019933ab544502b309d19d',1,'ne::ShaderDescription']]], + ['getfilepath_131',['getFilePath',['../classne_1_1ConfigManager.html#a23d1dee3702c1138f50e19ec07dea40a',1,'ne::ConfigManager']]], + ['getfpslimit_132',['getFpsLimit',['../classne_1_1RenderSettings.html#a1c51d150d32d36c9900d7aa6b8ca0de6',1,'ne::RenderSettings']]], + ['getfragmentshader_133',['getFragmentShader',['../structne_1_1EngineShaders_1_1MeshNode.html#a8c2153a65383aa49cf1671604d4e07ff',1,'ne::EngineShaders::MeshNode::getFragmentShader()'],['../structne_1_1EngineShaders_1_1PointLight.html#af008ea34fb0af60e5393c950d1ceb3b2',1,'ne::EngineShaders::PointLight::getFragmentShader()']]], + ['getfragmentshadername_134',['getFragmentShaderName',['../structne_1_1EngineShaderNames_1_1MeshNode.html#a7e4678f9d327fad03899a73f55e21528',1,'ne::EngineShaderNames::MeshNode::getFragmentShaderName()'],['../structne_1_1EngineShaderNames_1_1PointLight.html#ac1ce2eeeeeba6c155f2b89f9bb5d5837',1,'ne::EngineShaderNames::PointLight::getFragmentShaderName()']]], + ['getframeconstants_135',['getFrameConstants',['../classne_1_1Renderer.html#a6576b5f7eac84e7846e5b5fb6c0d1a12',1,'ne::Renderer']]], + ['getframeconstantsshaderresourcename_136',['getFrameConstantsShaderResourceName',['../classne_1_1Shader.html#a90155a175ff12db3d1a4a56b3fee662e',1,'ne::Shader']]], + ['getframeresourcecount_137',['getFrameResourceCount',['../classne_1_1FrameResourceManager.html#a90b23924d591a9a2fc33241c25d7892c',1,'ne::FrameResourceManager']]], + ['getframeresourcemanager_138',['getFrameResourceManager',['../classne_1_1Renderer.html#a50ba13de625c3e7137ffccafe418e54d',1,'ne::Renderer']]], + ['getframespersecond_139',['getFramesPerSecond',['../classne_1_1RenderStatistics.html#a464f0a2447943de7e26f7ca6237c2027',1,'ne::RenderStatistics']]], + ['getfreeprogressprofilename_140',['getFreeProgressProfileName',['../classne_1_1ConfigManager.html#a56c3967d8ed010743046f053311446fe',1,'ne::ConfigManager']]], + ['getfullerrormessage_141',['getFullErrorMessage',['../classne_1_1Error.html#a5b6c8b66765051c98f6d4d5bd81e941f',1,'ne::Error']]], + ['getgameinstance_142',['getGameInstance',['../classne_1_1GameManager.html#aae9bad5367d771ea77d603082af45391',1,'ne::GameManager::getGameInstance()'],['../classne_1_1Node.html#a2aeb90fc6bd28ec3b54e9f8f641c3574',1,'ne::Node::getGameInstance()']]], + ['getgamemanager_143',['getGameManager',['../classne_1_1Renderer.html#aa3a8871ad19fc9e5e91a618e0c47aaae',1,'ne::Renderer']]], + ['getgarbagecollectorrunintervalinsec_144',['getGarbageCollectorRunIntervalInSec',['../classne_1_1GameInstance.html#a16e2423872298e507160249708f6bb1e',1,'ne::GameInstance::getGarbageCollectorRunIntervalInSec()'],['../classne_1_1GameManager.html#aae8e383cad293ab7b0b9e8f2106fe5ae',1,'ne::GameManager::getGarbageCollectorRunIntervalInSec()']]], + ['getgenerallightingdatashaderresourcename_145',['getGeneralLightingDataShaderResourceName',['../classne_1_1LightingShaderResourceManager.html#a559ee5b30d2a872715b1633f1d0a4f8d',1,'ne::LightingShaderResourceManager']]], + ['getglfwwindow_146',['getGlfwWindow',['../classne_1_1Window.html#a72b674801f591afc4f0b3c2373f98829',1,'ne::Window']]], + ['getglobalshaderresourcebindingmanager_147',['getGlobalShaderResourceBindingManager',['../classne_1_1Renderer.html#a94ca55b01e064a85b554058e395e427a',1,'ne::Renderer']]], + ['getgpudescriptorhandletorangestart_148',['getGpuDescriptorHandleToRangeStart',['../classne_1_1ContinuousDirectXDescriptorRange.html#a2838e7ed840c64a196737537fcce9961',1,'ne::ContinuousDirectXDescriptorRange']]], + ['getgputouse_149',['getGpuToUse',['../classne_1_1RenderSettings.html#a1a3c4d49f5fbba99e558d9d35d951221',1,'ne::RenderSettings']]], + ['getgraphicspipelineformaterial_150',['getGraphicsPipelineForMaterial',['../classne_1_1PipelineManager.html#a9ec99295c715da94f3969044a54b0b63',1,'ne::PipelineManager']]], + ['getgraphicspipelines_151',['getGraphicsPipelines',['../classne_1_1PipelineManager.html#ad700c995b0d52d2386731fe2a25277f6',1,'ne::PipelineManager']]], + ['getgraphicsqueue_152',['getGraphicsQueue',['../classne_1_1VulkanRenderer.html#abca6b972881780350eec71ce0869dc2d',1,'ne::VulkanRenderer']]], + ['getgraphicstype_153',['getGraphicsType',['../classne_1_1PipelineConfiguration.html#a4084ed64ee6c27161b3ed51e5a070ab6',1,'ne::PipelineConfiguration::getGraphicsType()'],['../classne_1_1ColorPipelineConfiguration.html#ae90627a023da52b08a5b5d3cbafc18b0',1,'ne::ColorPipelineConfiguration::getGraphicsType()'],['../classne_1_1DepthPipelineConfiguration.html#a9eb2970563f38cdee2e721b65af36626',1,'ne::DepthPipelineConfiguration::getGraphicsType()'],['../classne_1_1ComputePipelineConfiguration.html#a792e7db372e8fc28a6cef460f74a443c',1,'ne::ComputePipelineConfiguration::getGraphicsType()']]], + ['getguid_154',['getGuid',['../classne_1_1Guid.html#a63b89445951d0c0c2ff2ca7070394730',1,'ne::Guid']]], + ['gethandledshaderresourcename_155',['getHandledShaderResourceName',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a422f2b1e5a1585614212a8b1862ba525',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['getheapcapacity_156',['getHeapCapacity',['../classne_1_1DirectXDescriptorHeap.html#aeb1c71536a10ff8b86c8240f5fab61ae',1,'ne::DirectXDescriptorHeap']]], + ['getheapgrowsize_157',['getHeapGrowSize',['../classne_1_1DirectXDescriptorHeap.html#a23c0364843a97bb4862760b6f521a579',1,'ne::DirectXDescriptorHeap']]], + ['getheapsize_158',['getHeapSize',['../classne_1_1DirectXDescriptorHeap.html#a0001e8830f2783b006c1659a7d6805f4',1,'ne::DirectXDescriptorHeap']]], + ['getidsfromfile_159',['getIdsFromFile',['../classne_1_1Serializable.html#a6cd50b9cef87748dede76ba3ef125e43',1,'ne::Serializable']]], + ['getimportedfilename_160',['getImportedFileName',['../classne_1_1TextureImporter.html#a4bbfc788869a4a751aa0396765f25c50',1,'ne::TextureImporter']]], + ['getindexbufferinfoformaterialslot_161',['getIndexBufferInfoForMaterialSlot',['../classne_1_1MeshNode.html#a90ac0f144af7a1a9786a1be3684fc754',1,'ne::MeshNode']]], + ['getindexintoarray_162',['getIndexIntoArray',['../classne_1_1DynamicCpuWriteShaderResourceArraySlot.html#a3ab49e829204f8c419a713c28f308305',1,'ne::DynamicCpuWriteShaderResourceArraySlot']]], + ['getindexintoshadowpassinfoshaderarray_163',['getIndexIntoShadowPassInfoShaderArray',['../classne_1_1DirectionalLightNode.html#ac2cec88c06759cb8bc625563f9903b1c',1,'ne::DirectionalLightNode::getIndexIntoShadowPassInfoShaderArray()'],['../classne_1_1PointLightNode.html#a4606abcc9f1ff0cc787df6917a6fc469',1,'ne::PointLightNode::getIndexIntoShadowPassInfoShaderArray()'],['../classne_1_1SpotlightNode.html#ac6af2a343602cbf1dfb7fd0388783a89',1,'ne::SpotlightNode::getIndexIntoShadowPassInfoShaderArray()']]], + ['getindices_164',['getIndices',['../classne_1_1MeshData.html#a35c1b75b662b7f56364ae01d7f15130c',1,'ne::MeshData']]], + ['getinformationforserialization_165',['getInformationForSerialization',['../classne_1_1Node.html#aca87f422b087084a4561e46165022a96',1,'ne::Node']]], + ['getinitialmessage_166',['getInitialMessage',['../classne_1_1Error.html#a7f2dd01c28953efe65c5926cab05211e',1,'ne::Error']]], + ['getinputmanager_167',['getInputManager',['../classne_1_1GameInstance.html#a1914730da5993e3f18f15ce5ee6dbc4e',1,'ne::GameInstance']]], + ['getinstance_168',['getInstance',['../classne_1_1VulkanRenderer.html#a070da1c1fd3bf14ab93a1ccba8908b52',1,'ne::VulkanRenderer']]], + ['getinternalbufferresource_169',['getInternalBufferResource',['../classne_1_1VulkanResource.html#a4d203427f5eea6ddcff4096259adc4be',1,'ne::VulkanResource']]], + ['getinternalcubemapimageview_170',['getInternalCubemapImageView',['../classne_1_1VulkanResource.html#af06df7d7876bcb54051a070af1b4b7dc',1,'ne::VulkanResource']]], + ['getinternaldata_171',['getInternalData',['../classne_1_1DirectXDescriptorHeap.html#ab3a024bf67085d61777247dd20a52e2b',1,'ne::DirectXDescriptorHeap']]], + ['getinternalheap_172',['getInternalHeap',['../classne_1_1DirectXDescriptorHeap.html#ae55ad33f9d3df0e5305c788d23fe3ef8',1,'ne::DirectXDescriptorHeap']]], + ['getinternalimage_173',['getInternalImage',['../classne_1_1VulkanResource.html#a32d12a5637f2a970ab6f0d45a66c70e8',1,'ne::VulkanResource']]], + ['getinternalimageview_174',['getInternalImageView',['../classne_1_1VulkanResource.html#ad1dd065e7c59ef45f351eb6f4bdb1de7',1,'ne::VulkanResource']]], + ['getinternalimageviewdepthaspect_175',['getInternalImageViewDepthAspect',['../classne_1_1VulkanResource.html#af77930223a146475d8877c30114da79e',1,'ne::VulkanResource']]], + ['getinternalresource_176',['getInternalResource',['../classne_1_1DirectXResource.html#ade04211fc7ac802cc9805c24320bdb53',1,'ne::DirectXResource::getInternalResource()'],['../classne_1_1UploadBuffer.html#afe8afef68f06fdd2dcab71318b70ab85',1,'ne::UploadBuffer::getInternalResource()']]], + ['getinternalresourcememory_177',['getInternalResourceMemory',['../classne_1_1VulkanResource.html#a070df83c8b0b49122e0b8b4dc617d613',1,'ne::VulkanResource']]], + ['getinternalresources_178',['getInternalResources',['../classne_1_1DirectXPso.html#a7a2a02d39350c678b23ff2d5939d743a',1,'ne::DirectXPso::getInternalResources()'],['../classne_1_1ShadowMapManager.html#a39f611895ac4f76c50ac43b8954811e5',1,'ne::ShadowMapManager::getInternalResources()'],['../classne_1_1VulkanPipeline.html#a3433d274f84a57bca9149c23aaebfe40',1,'ne::VulkanPipeline::getInternalResources()'],['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a4a65f3e3f217b25e6b62cb4ee2422e19',1,'ne::DynamicCpuWriteShaderResourceArray::getInternalResources()'],['../classne_1_1LightingShaderResourceManager.html#a7c4eac3d12365c446e56058a78a7766b',1,'ne::LightingShaderResourceManager::getInternalResources()'],['../classne_1_1ShaderLightArray.html#a1ebc69a64306d5c8018702d33c56f67a',1,'ne::ShaderLightArray::getInternalResources()'],['../classne_1_1ShaderPack.html#adca074fdbd97f63b79d9f85093539b1c',1,'ne::ShaderPack::getInternalResources()']]], + ['getktxsuballocatorcallbacks_179',['getKtxSubAllocatorCallbacks',['../classne_1_1KtxLoadingCallbackManager.html#aaf3390befbc9984c8a972d4d39b4d3d8',1,'ne::KtxLoadingCallbackManager']]], + ['getlastframeculledlightcount_180',['getLastFrameCulledLightCount',['../classne_1_1RenderStatistics.html#ad84bd1c12f19bc17c49d7b3252bfe61e',1,'ne::RenderStatistics']]], + ['getlastframeculledmeshcount_181',['getLastFrameCulledMeshCount',['../classne_1_1RenderStatistics.html#a5c6a95c0e3eda956d3f115e7a0596b81',1,'ne::RenderStatistics']]], + ['getlastframedrawcallcount_182',['getLastFrameDrawCallCount',['../classne_1_1RenderStatistics.html#a5fc0bc97a6544fee69ab1c9acbf66a60',1,'ne::RenderStatistics']]], + ['getlightcolor_183',['getLightColor',['../classne_1_1DirectionalLightNode.html#a299423d36a013e8ae159aa0f5e3006e6',1,'ne::DirectionalLightNode::getLightColor()'],['../classne_1_1PointLightNode.html#ae4e8e15a56295141fe407b2b28e8a01a',1,'ne::PointLightNode::getLightColor()'],['../classne_1_1SpotlightNode.html#a0f69cdb3b0e435a0b039096a3f55c040',1,'ne::SpotlightNode::getLightColor()']]], + ['getlightcullingcomputeshader_184',['getLightCullingComputeShader',['../structne_1_1EngineShaders_1_1ForwardPlus.html#a9c42c346ee49b5e20d6fc0deedb0c85a',1,'ne::EngineShaders::ForwardPlus']]], + ['getlightcullingcomputeshadername_185',['getLightCullingComputeShaderName',['../structne_1_1EngineShaderNames_1_1ForwardPlus.html#a22bcf48d0dc15e6c5a6c51fe6a4199cc',1,'ne::EngineShaderNames::ForwardPlus']]], + ['getlightdistance_186',['getLightDistance',['../classne_1_1PointLightNode.html#a23e3f3e28cf39dc6c0bcca825f4333d8',1,'ne::PointLightNode::getLightDistance()'],['../classne_1_1SpotlightNode.html#a60fb43aeb84bc3ef4402e2cd861fc37b',1,'ne::SpotlightNode::getLightDistance()']]], + ['getlightgridtilesizemacro_187',['getLightGridTileSizeMacro',['../structne_1_1EngineShaderConstantMacros_1_1ForwardPlus.html#a1a0db93874cbe33ce06b8fe28f165eed',1,'ne::EngineShaderConstantMacros::ForwardPlus']]], + ['getlightingshaderresourcemanager_188',['getLightingShaderResourceManager',['../classne_1_1Renderer.html#a065b2ac320b63d2651c706f1e98fab12',1,'ne::Renderer']]], + ['getlightinnerconeangle_189',['getLightInnerConeAngle',['../classne_1_1SpotlightNode.html#a473c13f9f02fd3d6ce2950e5af7640c2',1,'ne::SpotlightNode']]], + ['getlightintensity_190',['getLightIntensity',['../classne_1_1SpotlightNode.html#a773c16b46fe96fc7627d9db634cb31cf',1,'ne::SpotlightNode::getLightIntensity()'],['../classne_1_1PointLightNode.html#a381841c910fc7342a793bf4dd14c58cf',1,'ne::PointLightNode::getLightIntensity()'],['../classne_1_1DirectionalLightNode.html#aa07507fda65b3f4c8ee8ab430ecff03a',1,'ne::DirectionalLightNode::getLightIntensity()']]], + ['getlightouterconeangle_191',['getLightOuterConeAngle',['../classne_1_1SpotlightNode.html#a38329dd8164b4750b874a4231175d74f',1,'ne::SpotlightNode']]], + ['getlogicaldevice_192',['getLogicalDevice',['../classne_1_1VulkanRenderer.html#a664c90ee63237b1a5177bf5cbb9e54a3',1,'ne::VulkanRenderer']]], + ['getmainrenderpass_193',['getMainRenderPass',['../classne_1_1VulkanRenderer.html#a35a06a845e9c0ae7d5b9f9ccf3e03b6d',1,'ne::VulkanRenderer']]], + ['getmaterial_194',['getMaterial',['../classne_1_1MeshNode.html#a83cb60dfc8713be834295480cbeb4414',1,'ne::MeshNode']]], + ['getmaterialgpuresources_195',['getMaterialGpuResources',['../classne_1_1Material.html#a37ad940792aec3452dc12e8af8ef1f21',1,'ne::Material']]], + ['getmaterialname_196',['getMaterialName',['../classne_1_1Material.html#a7a5109eeb024a2f06e7bdd6a739118ca',1,'ne::Material']]], + ['getmaterialsthatusethispipeline_197',['getMaterialsThatUseThisPipeline',['../classne_1_1Pipeline.html#a9e2644e49b3f3d70893a3672aaef44f5',1,'ne::Pipeline']]], + ['getmaxconstantssizeinbytes_198',['getMaxConstantsSizeInBytes',['../classne_1_1PipelineShaderConstantsManager.html#a6bb03322b3c4bf0032d7bae7d59c2544',1,'ne::PipelineShaderConstantsManager']]], + ['getmaxdepth_199',['getMaxDepth',['../classne_1_1Renderer.html#aa26cb2e1d65dc77d041466bd3155032a',1,'ne::Renderer']]], + ['getmaxlightconeangle_200',['getMaxLightConeAngle',['../classne_1_1SpotlightNode.html#a9e950327863ee31e22bec1368056921a',1,'ne::SpotlightNode']]], + ['getmaxsupportedantialiasingquality_201',['getMaxSupportedAntialiasingQuality',['../classne_1_1DirectXRenderer.html#a5ca63e8979f15ea9ecde3a12a02b0d1b',1,'ne::DirectXRenderer::getMaxSupportedAntialiasingQuality()'],['../classne_1_1VulkanRenderer.html#a507467fc554d7206093d7284ecc0b049',1,'ne::VulkanRenderer::getMaxSupportedAntialiasingQuality()'],['../classne_1_1Renderer.html#a2015e4bdaef2b2786909132757b4401c',1,'ne::Renderer::getMaxSupportedAntialiasingQuality()'],['../classne_1_1RenderSettings.html#ae8eecaaee3873609f6dfe61f12c86ee2',1,'ne::RenderSettings::getMaxSupportedAntialiasingQuality()']]], + ['getmemoryallocator_202',['getMemoryAllocator',['../classne_1_1KtxLoadingCallbackManager.html#a78d03f87a1034e9e553b8acbefad151d',1,'ne::KtxLoadingCallbackManager']]], + ['getmeshdata_203',['getMeshData',['../classne_1_1MeshNode.html#a27eb0a143ae98c2419c2e5eef36df9cf',1,'ne::MeshNode']]], + ['getmeshesincamerafrustum_204',['getMeshesInCameraFrustum',['../classne_1_1Renderer.html#aeb527a8099001d8c3f60f0f546ea8fc9',1,'ne::Renderer']]], + ['getmeshgpuresources_205',['getMeshGpuResources',['../classne_1_1MeshNode.html#a3f15c8ce01a9270e58ab56518bfe7098',1,'ne::MeshNode']]], + ['getmeshshaderconstantbuffername_206',['getMeshShaderConstantBufferName',['../classne_1_1MeshNode.html#ae2c7e2a2dcad5b88a2636e212ca87503',1,'ne::MeshNode']]], + ['getmeshshaderconstants_207',['getMeshShaderConstants',['../classne_1_1MeshNode.html#aaea00de98b55c7e4a6f0ad6abe9db77f',1,'ne::MeshNode']]], + ['getmindepth_208',['getMinDepth',['../classne_1_1Renderer.html#afb7a609075deb5b121a3218a92d4a1c6',1,'ne::Renderer']]], + ['getmsaaqualitylevel_209',['getMsaaQualityLevel',['../classne_1_1DirectXRenderer.html#ae8105874906ab58893e4c393f97fab6a',1,'ne::DirectXRenderer']]], + ['getmsaasamplecount_210',['getMsaaSampleCount',['../classne_1_1VulkanRenderer.html#a41b0c33fd86d697831304e0a0dd098c2',1,'ne::VulkanRenderer']]], + ['getname_211',['getName',['../classne_1_1Timer.html#a615873fbc3308b957519eb59cf73c9c3',1,'ne::Timer']]], + ['getnearclipplanedistance_212',['getNearClipPlaneDistance',['../classne_1_1CameraProperties.html#af8edd62c67ffd4750c8d687c7e537751',1,'ne::CameraProperties']]], + ['getnodeid_213',['getNodeId',['../classne_1_1Node.html#a5cbae38dafd4765e9026028bd004b31c',1,'ne::Node']]], + ['getnodename_214',['getNodeName',['../classne_1_1Node.html#aaf3b419efa656af7bf82b3e85532ceed',1,'ne::Node']]], + ['getnolongeruseddescriptorcount_215',['getNoLongerUsedDescriptorCount',['../classne_1_1DirectXDescriptorHeap.html#acd26be333f36c68a8e50c527ba21d6cb',1,'ne::DirectXDescriptorHeap']]], + ['getopacity_216',['getOpacity',['../classne_1_1Window.html#a8a59b6905fec3f12199fc8b16d86ba3a',1,'ne::Window::getOpacity()'],['../classne_1_1Material.html#ad0467877a11e184dc5f0627dd1cbd02d',1,'ne::Material::getOpacity()']]], + ['getorbitalmodeproperties_217',['getOrbitalModeProperties',['../classne_1_1CameraProperties.html#a056330e6889e12a897abf0cc5d907b7f',1,'ne::CameraProperties']]], + ['getorbitaltargetlocation_218',['getOrbitalTargetLocation',['../classne_1_1CameraNode.html#a75181ed55e2f12b7c910816c3be830e1',1,'ne::CameraNode']]], + ['getownerresource_219',['getOwnerResource',['../classne_1_1DirectXDescriptor.html#a58f7bcabf3e97bb889ed8b26fe212449',1,'ne::DirectXDescriptor']]], + ['getparentnode_220',['getParentNode',['../classne_1_1Node.html#a561de14810416e06b506a6c970c296e7',1,'ne::Node']]], + ['getparentnodeoftype_221',['getParentNodeOfType',['../classne_1_1Node.html#acc4ff3174738477037de125dff1a0707',1,'ne::Node']]], + ['getpathdeserializedfromrelativetores_222',['getPathDeserializedFromRelativeToRes',['../classne_1_1Serializable.html#a0404cdf34dc3fb25b7932a87ed9ade38',1,'ne::Serializable']]], + ['getpathtobaseconfigdirectory_223',['getPathToBaseConfigDirectory',['../classne_1_1ProjectPaths.html#a8bb3ba8c53c55c5d57e65e4937f92527',1,'ne::ProjectPaths']]], + ['getpathtocompiledshader_224',['getPathToCompiledShader',['../classne_1_1Shader.html#ac75f07c83fa4d33247354653b9e05640',1,'ne::Shader']]], + ['getpathtocompiledshadersdirectory_225',['getPathToCompiledShadersDirectory',['../classne_1_1ProjectPaths.html#a7d56a37593aa1ad58e44625a82ebc597',1,'ne::ProjectPaths']]], + ['getpathtoconfigurationfile_226',['getPathToConfigurationFile',['../classne_1_1RenderSettings.html#a93af910913eb360eb0dc7a235fe79949',1,'ne::RenderSettings']]], + ['getpathtodiffusetextureresource_227',['getPathToDiffuseTextureResource',['../classne_1_1Material.html#aae6d5d76aa52f5e312a871edba8d001f',1,'ne::Material']]], + ['getpathtoengineconfigsdirectory_228',['getPathToEngineConfigsDirectory',['../classne_1_1ProjectPaths.html#ab48ea963df9e3061a5d86c11a621fee6',1,'ne::ProjectPaths']]], + ['getpathtologsdirectory_229',['getPathToLogsDirectory',['../classne_1_1ProjectPaths.html#ab2f965673f6c2ee2b7b1cee23c5d7d48',1,'ne::ProjectPaths']]], + ['getpathtoplayerprogressdirectory_230',['getPathToPlayerProgressDirectory',['../classne_1_1ProjectPaths.html#a94f4c68886f0f5c27f52d139902672e1',1,'ne::ProjectPaths']]], + ['getpathtoplayersettingsdirectory_231',['getPathToPlayerSettingsDirectory',['../classne_1_1ProjectPaths.html#a938cbdde81d85f34704685e9533b6e39',1,'ne::ProjectPaths']]], + ['getpathtoresdirectory_232',['getPathToResDirectory',['../classne_1_1ProjectPaths.html#a7453ad9bd614a272717d9cca4a78adbb',1,'ne::ProjectPaths::getPathToResDirectory(ResourceDirectory directory)'],['../classne_1_1ProjectPaths.html#a7e3b23f03d31b30fbcdd468ad8b5ebb2',1,'ne::ProjectPaths::getPathToResDirectory()']]], + ['getpathtoresourcerelativeres_233',['getPathToResourceRelativeRes',['../classne_1_1TextureHandle.html#ae45b667613cae49c44d6ea0e2b4f6fa6',1,'ne::TextureHandle']]], + ['getpathtoshadercachedirectory_234',['getPathToShaderCacheDirectory',['../classne_1_1ShaderFilesystemPaths.html#a81e8852b1bbe64318913e8f0535c0349',1,'ne::ShaderFilesystemPaths']]], + ['getpathtotextureresource_235',['getPathToTextureResource',['../classne_1_1GlslShaderTextureResourceBinding.html#a01eb6c04b78151d3402cbdedea9867dc',1,'ne::GlslShaderTextureResourceBinding']]], + ['getphysicaldevice_236',['getPhysicalDevice',['../classne_1_1KtxLoadingCallbackManager.html#a5d2d32f177b8d942cd2ade0ba971aaaf',1,'ne::KtxLoadingCallbackManager::getPhysicalDevice()'],['../classne_1_1VulkanRenderer.html#aa6b515b9b5dfb8c1c7a95e98339f1c51',1,'ne::VulkanRenderer::getPhysicalDevice()']]], + ['getpipeline_237',['getPipeline',['../classne_1_1PipelineSharedPtr.html#acb3dfd9dae017d88756a24835f27dc8c',1,'ne::PipelineSharedPtr::getPipeline()'],['../classne_1_1ComputeShaderInterface.html#a33f98db82d4e0b1a9ab2127cea23c1cf',1,'ne::ComputeShaderInterface::getPipeline()']]], + ['getpipelineidentifier_238',['getPipelineIdentifier',['../classne_1_1Pipeline.html#a218ccad73ae55717fa7a460685058e97',1,'ne::Pipeline']]], + ['getpipelinemanager_239',['getPipelineManager',['../classne_1_1Renderer.html#a2c1988bfc14749904750ba6dde70ffb2',1,'ne::Renderer']]], + ['getpipelinemanagerfornewmaterial_240',['getPipelineManagerForNewMaterial',['../classne_1_1Material.html#a4d8b157a95a2ee1968b2fe9994be623c',1,'ne::Material']]], + ['getpixelshadermacrosforcurrentstate_241',['getPixelShaderMacrosForCurrentState',['../classne_1_1Material.html#ab749c0e8cae5d47f5a78b3617d538f52',1,'ne::Material']]], + ['getpixelshadermodel_242',['getPixelShaderModel',['../classne_1_1HlslShader.html#a1afb11ee133fd07c0c68c9b3c52fbc79',1,'ne::HlslShader']]], + ['getpixelshadername_243',['getPixelShaderName',['../classne_1_1PipelineConfiguration.html#af456593254ac0de2177f2659648d5e41',1,'ne::PipelineConfiguration::getPixelShaderName()'],['../classne_1_1ColorPipelineConfiguration.html#a0d6eb5eb6800ca3738d902630f6ee7fd',1,'ne::ColorPipelineConfiguration::getPixelShaderName()'],['../classne_1_1DepthPipelineConfiguration.html#aa6cfdf5f6defa8702cddd2130ab9e3a3',1,'ne::DepthPipelineConfiguration::getPixelShaderName()'],['../classne_1_1Material.html#a819dd3b1497a89dc06e811b12329181d',1,'ne::Material::getPixelShaderName()']]], + ['getpointlightdataarray_244',['getPointLightDataArray',['../classne_1_1LightingShaderResourceManager.html#a08ad02504ad104da763078265e6b2394',1,'ne::LightingShaderResourceManager']]], + ['getpointlightnodeshadowmaphandle_245',['getPointLightNodeShadowMapHandle',['../classne_1_1Renderer.html#a89aacf3db90f19ab0153ba61d5d375d9',1,'ne::Renderer']]], + ['getpointlightshadowpasslightinfoarrayindex_246',['getPointLightShadowPassLightInfoArrayIndex',['../classne_1_1Renderer.html#ae3fe9634ba28331a5c7808e41aee8280',1,'ne::Renderer']]], + ['getpointlightsincamerafrustumindicesshaderresourcename_247',['getPointLightsInCameraFrustumIndicesShaderResourceName',['../classne_1_1LightingShaderResourceManager.html#ab982d7908db0212f3020ce2221871021',1,'ne::LightingShaderResourceManager']]], + ['getpointlightsshaderresourcename_248',['getPointLightsShaderResourceName',['../classne_1_1LightingShaderResourceManager.html#a9fb9e5fd18cc1b94d55f8a91b3839875',1,'ne::LightingShaderResourceManager']]], + ['getpointlightworldlocationsshaderresourcename_249',['getPointLightWorldLocationsShaderResourceName',['../classne_1_1LightingShaderResourceManager.html#a6e197d9e72831ef61946d89653d14cf8',1,'ne::LightingShaderResourceManager']]], + ['getpointshadowmapsshaderresourcename_250',['getPointShadowMapsShaderResourceName',['../classne_1_1ShadowMapManager.html#a5ebcd4be52c938935837c85764229845',1,'ne::ShadowMapManager']]], + ['getpreparelightcullingcomputeshader_251',['getPrepareLightCullingComputeShader',['../structne_1_1EngineShaders_1_1ForwardPlus.html#ab0990ca28d1ce804f698350af9bd0b2e',1,'ne::EngineShaders::ForwardPlus']]], + ['getpreparelightcullingcomputeshadername_252',['getPrepareLightCullingComputeShaderName',['../structne_1_1EngineShaderNames_1_1ForwardPlus.html#aab591a1e904000ca05cbe199a8aeabdd',1,'ne::EngineShaderNames::ForwardPlus']]], + ['getprojectionmatrix_253',['getProjectionMatrix',['../classne_1_1CameraProperties.html#aef602d4e9cc65aa0782eb4d5b90a6056',1,'ne::CameraProperties']]], + ['getrangecapacity_254',['getRangeCapacity',['../classne_1_1ContinuousDirectXDescriptorRange.html#a25663080f142ddaae9b34d2a8d2c55d0',1,'ne::ContinuousDirectXDescriptorRange']]], + ['getrangegrowsize_255',['getRangeGrowSize',['../classne_1_1ContinuousDirectXDescriptorRange.html#a79e3306d5dcd53a0631f77cf20fcd09c',1,'ne::ContinuousDirectXDescriptorRange']]], + ['getrangesize_256',['getRangeSize',['../classne_1_1ContinuousDirectXDescriptorRange.html#a02f9c0acfce7f52044002b3225e409e0',1,'ne::ContinuousDirectXDescriptorRange']]], + ['getrangestartinheap_257',['getRangeStartInHeap',['../classne_1_1ContinuousDirectXDescriptorRange.html#a252e39d8b79e1c6bbb893268c2b23281',1,'ne::ContinuousDirectXDescriptorRange']]], + ['getreceivinginputnodes_258',['getReceivingInputNodes',['../classne_1_1World.html#a757a20074f441235297efe54c0322f48',1,'ne::World']]], + ['getrecommendedswapchainbuffercount_259',['getRecommendedSwapChainBufferCount',['../classne_1_1Renderer.html#a71c2681a6e9f19c6bc27c40edd6957d8',1,'ne::Renderer']]], + ['getrefreshrate_260',['getRefreshRate',['../classne_1_1RenderSettings.html#afd2eefc25534997a421364f1f75dc123',1,'ne::RenderSettings']]], + ['getrelativelocation_261',['getRelativeLocation',['../classne_1_1SpatialNode.html#aeb558a9f20e9501a3d8a4b0f4a769f2c',1,'ne::SpatialNode']]], + ['getrelativerotation_262',['getRelativeRotation',['../classne_1_1SpatialNode.html#a277ebb64994069549f09f5148d890fb9',1,'ne::SpatialNode']]], + ['getrelativerotationmatrix_263',['getRelativeRotationMatrix',['../classne_1_1SpatialNode.html#a50e2381f0d40f43e050cfa9ac2c2d9fa',1,'ne::SpatialNode']]], + ['getrelativescale_264',['getRelativeScale',['../classne_1_1SpatialNode.html#a2b030ce699a74fd273d64affd7c34963',1,'ne::SpatialNode']]], + ['getrenderer_265',['getRenderer',['../classne_1_1Pipeline.html#aec27eb8ac8215829a22da7153375b7c7',1,'ne::Pipeline::getRenderer()'],['../classne_1_1PipelineManager.html#a291716865f8990d91d417292c7b253be',1,'ne::PipelineManager::getRenderer()'],['../classne_1_1GpuResourceManager.html#a4a0e769ab46d6bb8dc2cb69b745f83b0',1,'ne::GpuResourceManager::getRenderer()'],['../classne_1_1ShadowMapArrayIndexManager.html#a07fe51c35001aa9b5720f1abba58d45c',1,'ne::ShadowMapArrayIndexManager::getRenderer()'],['../classne_1_1ShadowMapManager.html#a279927b58f6d9b133a52fa64f30c83a3',1,'ne::ShadowMapManager::getRenderer()'],['../classne_1_1Shader.html#a210613fe5a5262b52dec7fad1b6335e9',1,'ne::Shader::getRenderer()'],['../classne_1_1Window.html#a05339b9ab53c064050d8c1cab7cf97ca',1,'ne::Window::getRenderer()'],['../classne_1_1ComputeShaderInterface.html#a7e94e5fd200126e11e57baac6adda2f8',1,'ne::ComputeShaderInterface::getRenderer()']]], + ['getrenderresolution_266',['getRenderResolution',['../classne_1_1RenderSettings.html#a35eb481744e77843303a1576c286e8cc',1,'ne::RenderSettings']]], + ['getrenderresourcesmutex_267',['getRenderResourcesMutex',['../classne_1_1Renderer.html#a695dc78d2a55c2aa0d1c6d77265e286f',1,'ne::Renderer']]], + ['getrendersettings_268',['getRenderSettings',['../classne_1_1Renderer.html#a12fd460314e60a79b027fba12d55a68d',1,'ne::Renderer']]], + ['getrenderstatistics_269',['getRenderStatistics',['../classne_1_1Renderer.html#ab65404722ecba28c300763c04ab06712',1,'ne::Renderer']]], + ['getrendertargetsize_270',['getRenderTargetSize',['../classne_1_1Renderer.html#a29a086ceb56a27475014417e862175fe',1,'ne::Renderer::getRenderTargetSize()'],['../classne_1_1DirectXRenderer.html#a16174eb607292f2da7dd92ef41291e0c',1,'ne::DirectXRenderer::getRenderTargetSize()'],['../classne_1_1VulkanRenderer.html#aff7cba297c4619c36856488e11a63247',1,'ne::VulkanRenderer::getRenderTargetSize() const override']]], + ['getrequiredvulkaninstanceextensions_271',['getRequiredVulkanInstanceExtensions',['../classne_1_1VulkanRenderer.html#ad54eb71349aae9c81c5068f43ea488e0',1,'ne::VulkanRenderer']]], + ['getresource_272',['getResource',['../classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html#a48fda1bec582b81e5649c9af885e7f8a',1,'ne::ShaderCpuWriteResourceBindingUniquePtr::getResource()'],['../classne_1_1ShaderTextureResourceBindingUniquePtr.html#a57222be5717c13b28576cae4d9b84511',1,'ne::ShaderTextureResourceBindingUniquePtr::getResource()'],['../classne_1_1TextureHandle.html#aad972f4110514144ae690eaeb3b3fd3f',1,'ne::TextureHandle::getResource()']]], + ['getresourcedatasizeinbytes_273',['getResourceDataSizeInBytes',['../classne_1_1ShaderCpuWriteResourceBinding.html#ad61d5d64df67b98b7b941a14b73ba56f',1,'ne::ShaderCpuWriteResourceBinding']]], + ['getresourcedescriptoroffsetfromrangestart_274',['getResourceDescriptorOffsetFromRangeStart',['../classne_1_1ContinuousDirectXDescriptorRange.html#a782221c535345b665a6bc77b9f596df1',1,'ne::ContinuousDirectXDescriptorRange']]], + ['getresourcemanager_275',['getResourceManager',['../classne_1_1GpuResource.html#abed4c39f44bce7ecf2f3859ab688dd02',1,'ne::GpuResource::getResourceManager()'],['../classne_1_1Renderer.html#a691ec87d1ca95da47e88b27cd0cfc4d0',1,'ne::Renderer::getResourceManager()']]], + ['getresourcename_276',['getResourceName',['../classne_1_1GpuResource.html#a90b9a139422b1d568e5be6ec9186130c',1,'ne::GpuResource']]], + ['getresources_277',['getResources',['../classne_1_1ShadowMapHandle.html#a356969647bcc25ef9d2422fd6628019c',1,'ne::ShadowMapHandle::getResources()'],['../classne_1_1ShaderCpuWriteResourceBindingManager.html#aefbb3032d20e81cad856648fe41c4b31',1,'ne::ShaderCpuWriteResourceBindingManager::getResources()'],['../classne_1_1ShaderTextureResourceBindingManager.html#ac9716e4c88de526e16d5eef010d83dca',1,'ne::ShaderTextureResourceBindingManager::getResources()']]], + ['getresourcesdirectoryname_278',['getResourcesDirectoryName',['../classne_1_1Globals.html#a3701ce77cd54340119247a2a7bb34f81',1,'ne::Globals']]], + ['getrootnode_279',['getRootNode',['../classne_1_1World.html#a28a6bf6adf0f0344bec77af2fab2a01f',1,'ne::World']]], + ['getrootparameterindex_280',['getRootParameterIndex',['../classne_1_1DirectXPso.html#a9d3a1c982c009a497d913ed335aef373',1,'ne::DirectXPso']]], + ['getrootsignatureinfo_281',['getRootSignatureInfo',['../classne_1_1HlslShader.html#a80bcace02f77fc952d1491ac39726190',1,'ne::HlslShader']]], + ['getroughness_282',['getRoughness',['../classne_1_1Material.html#a0f38075d473d23e8255a0cab5e3126e2',1,'ne::Material']]], + ['getrtvheap_283',['getRtvHeap',['../classne_1_1DirectXResourceManager.html#a5a5c3ebf98c7239375e8aefd7f49e1aa',1,'ne::DirectXResourceManager']]], + ['getserializationtype_284',['getSerializationType',['../classne_1_1Serialize.html#ac4ea052ff89820d1ad8f102f26f57b42',1,'ne::Serialize']]], + ['getshader_285',['getShader',['../classne_1_1ShaderPack.html#ad75d45005776472f0afac481ac569abd',1,'ne::ShaderPack']]], + ['getshaderarrayresourcename_286',['getShaderArrayResourceName',['../classne_1_1ShadowMapArrayIndexManager.html#ab77f0f16fe42c573772c6d04a788772d',1,'ne::ShadowMapArrayIndexManager']]], + ['getshadercachebasefilename_287',['getShaderCacheBaseFileName',['../classne_1_1ShaderFilesystemPaths.html#ab46855d84c9a86ce8170de61d5e9daa1',1,'ne::ShaderFilesystemPaths']]], + ['getshadercompilerversion_288',['getShaderCompilerVersion',['../classne_1_1HlslShader.html#a17d394f3fc24a7079f0e61d674d1b6cb',1,'ne::HlslShader']]], + ['getshaderconfiguration_289',['getShaderConfiguration',['../classne_1_1Renderer.html#a4652ff17d96dd1cf1cc5e8c41dd8904b',1,'ne::Renderer']]], + ['getshaderconstants_290',['getShaderConstants',['../classne_1_1Pipeline.html#a1f70f9ad1f96d425f6f6328397f8c36b',1,'ne::Pipeline']]], + ['getshadercpuwriteresourcemanager_291',['getShaderCpuWriteResourceManager',['../classne_1_1Renderer.html#af291d346e7a157b4a519ebda87245dbd',1,'ne::Renderer']]], + ['getshaderinputelementdescription_292',['getShaderInputElementDescription',['../classne_1_1HlslVertexFormatDescription.html#ad43948e45c4b369c0fe99f8972547eff',1,'ne::HlslVertexFormatDescription::getShaderInputElementDescription()'],['../classne_1_1MeshNodeHlslVertexFormatDescription.html#ab73c3b0426fdb1b228f4b514ca40aa29',1,'ne::MeshNodeHlslVertexFormatDescription::getShaderInputElementDescription()']]], + ['getshadermanager_293',['getShaderManager',['../classne_1_1Renderer.html#a9cde18dbde3564c907d839703c8f4193',1,'ne::Renderer']]], + ['getshadername_294',['getShaderName',['../classne_1_1Shader.html#a61ec6ae20ef30b58a0fb2b975dbc73ba',1,'ne::Shader::getShaderName()'],['../classne_1_1ShaderPack.html#a86ea31924003ccee3a3d8550986df6a8',1,'ne::ShaderPack::getShaderName()']]], + ['getshaderresourcename_295',['getShaderResourceName',['../classne_1_1GlobalShaderResourceBinding.html#a0a9e0f42492b807f4441ddd28c1d5435',1,'ne::GlobalShaderResourceBinding::getShaderResourceName()'],['../classne_1_1ShaderLightArray.html#a1ba83acfc58436dcb6c7bb1d0e9dcc41',1,'ne::ShaderLightArray::getShaderResourceName()'],['../classne_1_1ShaderResourceBindingBase.html#a741dd05156bdd35eed54ab3e549b448c',1,'ne::ShaderResourceBindingBase::getShaderResourceName()']]], + ['getshadersourcefilehash_296',['getShaderSourceFileHash',['../classne_1_1HlslShader.html#a531f22aaacd342827821d80c48600f76',1,'ne::HlslShader']]], + ['getshadertextureresourcemanager_297',['getShaderTextureResourceManager',['../classne_1_1Renderer.html#a06a9c1d031f1b6ba3f2f86b81eadf561',1,'ne::Renderer']]], + ['getshadertype_298',['getShaderType',['../classne_1_1Shader.html#a3ffa1bc747721fd8c0f7ff04fd85a6ea',1,'ne::Shader::getShaderType()'],['../classne_1_1ShaderPack.html#ad7359b8a3b2719f520503653aa7ae6b3',1,'ne::ShaderPack::getShaderType()']]], + ['getshadowmapformat_299',['getShadowMapFormat',['../classne_1_1DirectXRenderer.html#a568b5472e5ab5a0884e92eef18738902',1,'ne::DirectXRenderer::getShadowMapFormat()'],['../classne_1_1VulkanRenderer.html#a347daefa40e801343ff6e3ee02b1cc39',1,'ne::VulkanRenderer::getShadowMapFormat()']]], + ['getshadowmaphandle_300',['getShadowMapHandle',['../classne_1_1DirectionalLightNode.html#aa8accc71d63ece80c100b5fd155f56d7',1,'ne::DirectionalLightNode::getShadowMapHandle()'],['../classne_1_1PointLightNode.html#a377a771a725777aab67298791c67200c',1,'ne::PointLightNode::getShadowMapHandle()'],['../classne_1_1SpotlightNode.html#a4d9ee93af57b605afc3bc87889519cb0',1,'ne::SpotlightNode::getShadowMapHandle()']]], + ['getshadowmapmanager_301',['getShadowMapManager',['../classne_1_1GpuResourceManager.html#a4cbc670da1ddb223070a5ad1745b99bb',1,'ne::GpuResourceManager']]], + ['getshadowmappingdirectionalspotpipeline_302',['getShadowMappingDirectionalSpotPipeline',['../classne_1_1Material.html#a1879f119b0b281dd2f421a135bb74329',1,'ne::Material']]], + ['getshadowmappingpointlightcolortargetformat_303',['getShadowMappingPointLightColorTargetFormat',['../classne_1_1DirectXRenderer.html#a63c6cac3c9f97ee01374409a38e8f495',1,'ne::DirectXRenderer::getShadowMappingPointLightColorTargetFormat()'],['../classne_1_1VulkanRenderer.html#a1fb781e6224b2efc4a54490d76c1ff10',1,'ne::VulkanRenderer::getShadowMappingPointLightColorTargetFormat()']]], + ['getshadowmappingpointpipeline_304',['getShadowMappingPointPipeline',['../classne_1_1Material.html#afdabd9fd25213f1c33138d978ddafdd1',1,'ne::Material']]], + ['getshadowmappingrenderpass_305',['getShadowMappingRenderPass',['../classne_1_1VulkanRenderer.html#a208c97cb75b621724bbd22a7b49c07d4',1,'ne::VulkanRenderer']]], + ['getshadowmappingusage_306',['getShadowMappingUsage',['../classne_1_1PipelineConfiguration.html#a30ee2a7f2a65d020b7d964e29faff289',1,'ne::PipelineConfiguration::getShadowMappingUsage()'],['../classne_1_1DepthPipelineConfiguration.html#ae7f82a013e9cabd1ef1c0f711efb1f32',1,'ne::DepthPipelineConfiguration::getShadowMappingUsage()']]], + ['getshadowmapsize_307',['getShadowMapSize',['../classne_1_1ShadowMapHandle.html#ad98533a1b6a3a75258cbdda340b58553',1,'ne::ShadowMapHandle']]], + ['getshadowmaptype_308',['getShadowMapType',['../classne_1_1ShadowMapHandle.html#ac3cbc9cb3295c4d2184c8963c04eb1f2',1,'ne::ShadowMapHandle']]], + ['getshadowpassdepthbias_309',['getShadowPassDepthBias',['../classne_1_1ShadowMapManager.html#a8b91d5b4bb295bc2d476ef2245348d17',1,'ne::ShadowMapManager']]], + ['getshadowpassdepthslopefactor_310',['getShadowPassDepthSlopeFactor',['../classne_1_1ShadowMapManager.html#a8193cb1ecfc0af6f57a5a428d1a13e6a',1,'ne::ShadowMapManager']]], + ['getshadowpasslightinfoarray_311',['getShadowPassLightInfoArray',['../classne_1_1LightingShaderResourceManager.html#a61f069d6581b82f2fda19872dd8a1f2e',1,'ne::LightingShaderResourceManager']]], + ['getshadowpasslightinfoarrayshaderresourcename_312',['getShadowPassLightInfoArrayShaderResourceName',['../classne_1_1LightingShaderResourceManager.html#aa15b76e93bb1854496754513e73f439b',1,'ne::LightingShaderResourceManager']]], + ['getshadowquality_313',['getShadowQuality',['../classne_1_1RenderSettings.html#a87dd817de4da7ec6b8a17515640798a2',1,'ne::RenderSettings']]], + ['getshadowtexturesampler_314',['getShadowTextureSampler',['../classne_1_1VulkanRenderer.html#ae7e11b0f1ffac78a633cdcb9a3c40424',1,'ne::VulkanRenderer']]], + ['getshape_315',['getShape',['../classne_1_1PointLightNode.html#a5b30375f6363dbb835446bf6839e2c54',1,'ne::PointLightNode::getShape()'],['../classne_1_1SpotlightNode.html#a0be3858c4c5ea09b4d04f060e6d40703',1,'ne::SpotlightNode::getShape()']]], + ['getsize_316',['getSize',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a8996d41a781867fdd7b57bea25dffc8c',1,'ne::DynamicCpuWriteShaderResourceArray::getSize()'],['../classne_1_1Window.html#a1f36cf9578b512707cbf98126dc1fd92',1,'ne::Window::getSize()']]], + ['getsizeinbytes_317',['getSizeInBytes',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a2b4ce0a39e1cf4dfb93293af186deed6',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['getspawndespawnmutex_318',['getSpawnDespawnMutex',['../classne_1_1Node.html#a893cf9d4987d1b3ece76c0ffa0577e6d',1,'ne::Node']]], + ['getspawnedmeshnodesthatusethismaterial_319',['getSpawnedMeshNodesThatUseThisMaterial',['../classne_1_1Material.html#a22972cb7fc8c34cd1e25794604c6f88f',1,'ne::Material']]], + ['getspecularcolor_320',['getSpecularColor',['../classne_1_1Material.html#af18626e7a64af061617da9fd328a6e3b',1,'ne::Material']]], + ['getspotlightdataarray_321',['getSpotlightDataArray',['../classne_1_1LightingShaderResourceManager.html#a2b6507057bb9a378f1686cf750c15e18',1,'ne::LightingShaderResourceManager']]], + ['getspotlightnodeshadowmappinginfo_322',['getSpotlightNodeShadowMappingInfo',['../classne_1_1Renderer.html#ad08311905dc6df3bf29f08b23b2e30cb',1,'ne::Renderer']]], + ['getspotlightsincamerafrustumindicesshaderresourcename_323',['getSpotlightsInCameraFrustumIndicesShaderResourceName',['../classne_1_1LightingShaderResourceManager.html#ab6cb78332ed7ed562600168db9bd5f3e',1,'ne::LightingShaderResourceManager']]], + ['getspotlightsshaderresourcename_324',['getSpotlightsShaderResourceName',['../classne_1_1LightingShaderResourceManager.html#ab503bd5d97d0aa7153a8f7174d2388ff',1,'ne::LightingShaderResourceManager']]], + ['getspotshadowmapsshaderresourcename_325',['getSpotShadowMapsShaderResourceName',['../classne_1_1ShadowMapManager.html#a5c0dddca2553708ee6f96742a088fd80',1,'ne::ShadowMapManager']]], + ['getsrvdescriptorrange_326',['getSrvDescriptorRange',['../classne_1_1DirectXShadowMapArrayIndexManager.html#a8f23a478ce9332b11b68c8bdcb120f5b',1,'ne::DirectXShadowMapArrayIndexManager']]], + ['getsrvdescriptorrangeandrootconstantindex_327',['getSrvDescriptorRangeAndRootConstantIndex',['../classne_1_1HlslShaderTextureResourceBinding.html#af32b2a6dbe5ff88c31a736a34e594546',1,'ne::HlslShaderTextureResourceBinding']]], + ['getstartcount_328',['getStartCount',['../classne_1_1Timer.html#ab8b529dbd73e58bc2901295aef47e099',1,'ne::Timer']]], + ['getstaticcomparisonsamplerdescription_329',['getStaticComparisonSamplerDescription',['../classne_1_1HlslShader.html#af8def282438e6998f68c2417720ca79a',1,'ne::HlslShader']]], + ['getstaticsamplerdescription_330',['getStaticSamplerDescription',['../classne_1_1HlslShader.html#a41de1137a06282d0962edfdffae5ac28',1,'ne::HlslShader']]], + ['getstaticsamplershaderregisterspace_331',['getStaticSamplerShaderRegisterSpace',['../classne_1_1HlslShader.html#a66ac995bf2aaf0eb2deaa5f1f9f15301',1,'ne::HlslShader']]], + ['getsubscribercount_332',['getSubscriberCount',['../classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#aa0703d7e0cab10459f4a2a227603f62e',1,'ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>']]], + ['getsupporteddisplaymodes_333',['getSupportedDisplayModes',['../classne_1_1DirectXRenderer.html#a88b530ed531a1779c6167c680180c9c8',1,'ne::DirectXRenderer']]], + ['getsupportedgpunames_334',['getSupportedGpuNames',['../classne_1_1DirectXRenderer.html#a1781ea7494d8f9e1b97c4eb0ca08c154',1,'ne::DirectXRenderer::getSupportedGpuNames()'],['../classne_1_1VulkanRenderer.html#a66d3142a7256c58c9e5621ea1572df0a',1,'ne::VulkanRenderer::getSupportedGpuNames()'],['../classne_1_1Renderer.html#aa87df2fda14247192847d5056e0ecfe3',1,'ne::Renderer::getSupportedGpuNames()']]], + ['getsupportedrefreshrates_335',['getSupportedRefreshRates',['../classne_1_1VulkanRenderer.html#a80d2498bc0ef0353911f54aa6bd6c2e6',1,'ne::VulkanRenderer::getSupportedRefreshRates()'],['../classne_1_1Renderer.html#aa2d73c28396846df0151e37f9a6a4830',1,'ne::Renderer::getSupportedRefreshRates()'],['../classne_1_1DirectXRenderer.html#a8276c58de1c600500b718a5b5e615d7c',1,'ne::DirectXRenderer::getSupportedRefreshRates() const override']]], + ['getsupportedrenderresolutions_336',['getSupportedRenderResolutions',['../classne_1_1DirectXRenderer.html#a4520b9aceab7912cc891eab113084c30',1,'ne::DirectXRenderer::getSupportedRenderResolutions()'],['../classne_1_1VulkanRenderer.html#a6b99ca902231e396a0abef4fe3a1cdfb',1,'ne::VulkanRenderer::getSupportedRenderResolutions()'],['../classne_1_1Renderer.html#ae620044334fb679c877d70e42c72b312',1,'ne::Renderer::getSupportedRenderResolutions()']]], + ['getswapchainextent_337',['getSwapChainExtent',['../classne_1_1VulkanRenderer.html#ac7f8f4f08713e16f16fbf4937da819a3',1,'ne::VulkanRenderer']]], + ['gettexture_338',['getTexture',['../classne_1_1TextureManager.html#aaffb98fbd3dfca5272382db486828830',1,'ne::TextureManager']]], + ['gettexturefilteringquality_339',['getTextureFilteringQuality',['../classne_1_1RenderSettings.html#ae87ad84151fdc18dc73216cdba71f8ab',1,'ne::RenderSettings']]], + ['gettextureindexinshaderarray_340',['getTextureIndexInShaderArray',['../classne_1_1GlslShaderTextureResourceBinding.html#afd12447a47da8fc586344fa986bef8d4',1,'ne::GlslShaderTextureResourceBinding']]], + ['gettextureinmemorycount_341',['getTextureInMemoryCount',['../classne_1_1TextureManager.html#a7513750d0f4e2343d2cd9d392f0380d1',1,'ne::TextureManager']]], + ['gettexturemanager_342',['getTextureManager',['../classne_1_1GpuResourceManager.html#a4f234f90eec7a4a4512ca1571f53422c',1,'ne::GpuResourceManager']]], + ['gettexturequality_343',['getTextureQuality',['../classne_1_1RenderSettings.html#ae26a0d83f36946cd51b18a8e174f8966',1,'ne::RenderSettings']]], + ['gettexturesampler_344',['getTextureSampler',['../classne_1_1VulkanRenderer.html#a10568b5e33484ba43ae1d4e0ef0a3c58',1,'ne::VulkanRenderer']]], + ['getthreadgroupcountx_345',['getThreadGroupCountX',['../classne_1_1ComputeShaderInterface.html#a3b78b8d2ee0eb431952adc91bde0f529',1,'ne::ComputeShaderInterface']]], + ['getthreadgroupcounty_346',['getThreadGroupCountY',['../classne_1_1ComputeShaderInterface.html#a4b90c488898283e8b9618283f90e244c',1,'ne::ComputeShaderInterface']]], + ['getthreadgroupcountz_347',['getThreadGroupCountZ',['../classne_1_1ComputeShaderInterface.html#acc01e4dc8dc119c674b9f6393318be54',1,'ne::ComputeShaderInterface']]], + ['gettickgroup_348',['getTickGroup',['../classne_1_1Node.html#ae5711513fe69f2771c6fc6bf84379768',1,'ne::Node']]], + ['gettimesinceprevframeinsec_349',['getTimeSincePrevFrameInSec',['../classne_1_1GameManager.html#adc20ef5adb9a70e63e0f126e302bd0b2',1,'ne::GameManager']]], + ['gettimespentlastframeonfrustumcullinglights_350',['getTimeSpentLastFrameOnFrustumCullingLights',['../classne_1_1RenderStatistics.html#a2c34d2a6416d9a2e72fea1a2a8ec1cdf',1,'ne::RenderStatistics']]], + ['gettimespentlastframeonfrustumcullingmeshes_351',['getTimeSpentLastFrameOnFrustumCullingMeshes',['../classne_1_1RenderStatistics.html#a873d0213cdc04b97a3500258a9143a9f',1,'ne::RenderStatistics']]], + ['gettimespentlastframewaitingforgpu_352',['getTimeSpentLastFrameWaitingForGpu',['../classne_1_1RenderStatistics.html#a9ac02303466d5b5dc53c75ae3c61d386',1,'ne::RenderStatistics']]], + ['gettitle_353',['getTitle',['../classne_1_1Window.html#a11c12ee65d98b281a352b682ab3a8e0a',1,'ne::Window']]], + ['gettotalaliveresourcecount_354',['getTotalAliveResourceCount',['../classne_1_1GpuResourceManager.html#abb05ff78285f579887978435d70c2234',1,'ne::GpuResourceManager']]], + ['gettotalapplicationtimeinsec_355',['getTotalApplicationTimeInSec',['../classne_1_1GameInstance.html#a87a26980f1331909ea81f47c550aca3e',1,'ne::GameInstance']]], + ['gettotalerrorsproduced_356',['getTotalErrorsProduced',['../classne_1_1Logger.html#a083ba88a5d82f69492cfeb9773489cad',1,'ne::Logger']]], + ['gettotalsize_357',['getTotalSize',['../structne_1_1MeshNodesThatUseThisMaterial.html#a4438de4195dde12a63c9f67b8f67d3fc',1,'ne::MeshNodesThatUseThisMaterial']]], + ['gettotalsizeinbytes_358',['getTotalSizeInBytes',['../classne_1_1PipelineShaderConstantsManager.html#ab48235457c697bacbdac488aa96072fa',1,'ne::PipelineShaderConstantsManager']]], + ['gettotalspawnednodecount_359',['getTotalSpawnedNodeCount',['../classne_1_1GameManager.html#aa0edbb377ab7b8e1fc1c5e1f583399f5',1,'ne::GameManager::getTotalSpawnedNodeCount()'],['../classne_1_1World.html#ab3b44ccb0d12fe307e4be59591b3d078',1,'ne::World::getTotalSpawnedNodeCount()'],['../classne_1_1GameInstance.html#a32886049aa6aa5c63bca94f60c179264',1,'ne::GameInstance::getTotalSpawnedNodeCount()']]], + ['gettotalvideomemoryinmb_360',['getTotalVideoMemoryInMb',['../classne_1_1GpuResourceManager.html#a5223b131043ac73681248f67afc9d3a2',1,'ne::GpuResourceManager::getTotalVideoMemoryInMb()'],['../classne_1_1Renderer.html#a6736b43c6b2fe8a64ec02547e83b7ab5',1,'ne::Renderer::getTotalVideoMemoryInMb()'],['../classne_1_1VulkanResourceManager.html#afc0af46de31f171d7a15c65fc4ffb6bd',1,'ne::VulkanResourceManager::getTotalVideoMemoryInMb()'],['../classne_1_1DirectXResourceManager.html#adcb41f6caedbddf9be768f7f4cbce593',1,'ne::DirectXResourceManager::getTotalVideoMemoryInMb()']]], + ['gettotalwarningsproduced_361',['getTotalWarningsProduced',['../classne_1_1Logger.html#ab721d9793bb9db637af27977ed6d659b',1,'ne::Logger']]], + ['gettype_362',['getType',['../classne_1_1DirectXRenderer.html#a0daa57b10444b533e5c84e4e943aedf8',1,'ne::DirectXRenderer::getType()'],['../classne_1_1VulkanRenderer.html#a87693c1fba2a1765915317d9ff817f28',1,'ne::VulkanRenderer::getType()'],['../classne_1_1Renderer.html#a19bc0b11a97b3e92b8510f348d0fa28f',1,'ne::Renderer::getType()']]], + ['getuintconstantoffset_363',['getUintConstantOffset',['../classne_1_1Pipeline.html#a57db0645e52bc62e08edb5459ad3be4d',1,'ne::Pipeline']]], + ['getuintshaderconstantoffsetsfrompipelines_364',['getUintShaderConstantOffsetsFromPipelines',['../classne_1_1ShaderCpuWriteResourceBinding.html#aeb8cb2153b57969d7623cd46b7f2d5fb',1,'ne::ShaderCpuWriteResourceBinding']]], + ['getuniquewindowname_365',['getUniqueWindowName',['../classne_1_1UniqueValueGenerator.html#a7c0313496f8a24d49d5073b2ba036fbb',1,'ne::UniqueValueGenerator']]], + ['getusedapiversion_366',['getUsedApiVersion',['../classne_1_1DirectXRenderer.html#aca706b99fc421f2fbd3c87ed5802d6f5',1,'ne::DirectXRenderer::getUsedApiVersion()'],['../classne_1_1VulkanRenderer.html#ada9f5059b75b65b93f4f45325f7184a4',1,'ne::VulkanRenderer::getUsedApiVersion()'],['../classne_1_1Renderer.html#a03e357989d5b7239ded555a7298e35d1',1,'ne::Renderer::getUsedApiVersion()']]], + ['getusedpipeline_367',['getUsedPipeline',['../classne_1_1ComputeShaderInterface.html#af3a736d157ba281acfba473e8ca66598',1,'ne::ComputeShaderInterface']]], + ['getusedvideomemoryinmb_368',['getUsedVideoMemoryInMb',['../classne_1_1Renderer.html#a155f3058794bf3ded4a8d4a1bc77dd71',1,'ne::Renderer::getUsedVideoMemoryInMb()'],['../classne_1_1GpuResourceManager.html#a306d6beb99858b87c761fc778d204a5c',1,'ne::GpuResourceManager::getUsedVideoMemoryInMb()'],['../classne_1_1DirectXResourceManager.html#abde91d9fe0065f1edc51ae2cb427ca7c',1,'ne::DirectXResourceManager::getUsedVideoMemoryInMb()'],['../classne_1_1VulkanResourceManager.html#aada002fa77b56b40f7d1a8144fe6db76',1,'ne::VulkanResourceManager::getUsedVideoMemoryInMb()']]], + ['getusedvulkanversion_369',['getUsedVulkanVersion',['../classne_1_1VulkanRenderer.html#acc334f432f35b32742ae93ba72e027b5',1,'ne::VulkanRenderer']]], + ['getvalue_370',['getValue',['../classne_1_1ConfigManager.html#ac355a5fa94ada2919d3e75a5246a94d2',1,'ne::ConfigManager']]], + ['getvariablecount_371',['getVariableCount',['../classne_1_1PipelineShaderConstantsManager.html#a9101a793c27142717ddb3238241ba81f',1,'ne::PipelineShaderConstantsManager']]], + ['getvertexattributedescriptions_372',['getVertexAttributeDescriptions',['../classne_1_1GlslVertexFormatDescription.html#a9b1fda390bdf44fb5044ffbe07f687ff',1,'ne::GlslVertexFormatDescription::getVertexAttributeDescriptions()'],['../classne_1_1MeshNodeGlslVertexFormatDescription.html#a65f7f66712d541f94a4dc324c23514df',1,'ne::MeshNodeGlslVertexFormatDescription::getVertexAttributeDescriptions()']]], + ['getvertexbindingdescription_373',['getVertexBindingDescription',['../classne_1_1GlslVertexFormatDescription.html#a7c3d520315c44fbbf5d3a67905be9f3e',1,'ne::GlslVertexFormatDescription::getVertexBindingDescription()'],['../classne_1_1MeshNodeGlslVertexFormatDescription.html#ae458552a60f544884103db619cd77c88',1,'ne::MeshNodeGlslVertexFormatDescription::getVertexBindingDescription()']]], + ['getvertexbindingindex_374',['getVertexBindingIndex',['../classne_1_1GlslVertexFormatDescription.html#a37c641b0543ae0fc1a8b10b2b34aba96',1,'ne::GlslVertexFormatDescription']]], + ['getvertexformat_375',['getVertexFormat',['../classne_1_1Shader.html#a0ccf42ee5ff6e2b432f46316c231860c',1,'ne::Shader']]], + ['getvertexlayoutbindingindexmacros_376',['getVertexLayoutBindingIndexMacros',['../classne_1_1GlslVertexFormatDescription.html#a6b41b4f5d80d7d7a5b17cff12af3981f',1,'ne::GlslVertexFormatDescription::getVertexLayoutBindingIndexMacros()'],['../classne_1_1MeshNodeGlslVertexFormatDescription.html#aeb3fc391a22f440ff711df71364de7e0',1,'ne::MeshNodeGlslVertexFormatDescription::getVertexLayoutBindingIndexMacros()']]], + ['getvertexsemanticlocations_377',['getVertexSemanticLocations',['../classne_1_1HlslVertexFormatDescription.html#a1ba49e2d29942d3ab988f8cedb687b68',1,'ne::HlslVertexFormatDescription::getVertexSemanticLocations()'],['../classne_1_1MeshNodeHlslVertexFormatDescription.html#a8bf54c5d9f0a07ced7270eb0e9ceae3f',1,'ne::MeshNodeHlslVertexFormatDescription::getVertexSemanticLocations()']]], + ['getvertexshader_378',['getVertexShader',['../structne_1_1EngineShaders_1_1MeshNode.html#ae56ec5ff16f84a5300e789466cc480cd',1,'ne::EngineShaders::MeshNode']]], + ['getvertexshadermacrosforcurrentstate_379',['getVertexShaderMacrosForCurrentState',['../classne_1_1Material.html#a9b10095374d989f99a568299b663ea1b',1,'ne::Material']]], + ['getvertexshadermodel_380',['getVertexShaderModel',['../classne_1_1HlslShader.html#ab5c80083b5c0a201bd146bbd3646b230',1,'ne::HlslShader']]], + ['getvertexshadername_381',['getVertexShaderName',['../classne_1_1PipelineConfiguration.html#a824a09704e1e98cb14e218948097d8c0',1,'ne::PipelineConfiguration::getVertexShaderName()'],['../structne_1_1EngineShaderNames_1_1MeshNode.html#a158ec016b970e63600a0aeea2c732b24',1,'ne::EngineShaderNames::MeshNode::getVertexShaderName()'],['../classne_1_1Material.html#a37c74feacb9365a1dffd9499374403bd',1,'ne::Material::getVertexShaderName()']]], + ['getverticalfov_382',['getVerticalFov',['../classne_1_1CameraProperties.html#af43b56792db43a694f9e5f4a5514f091',1,'ne::CameraProperties']]], + ['getvertices_383',['getVertices',['../classne_1_1MeshData.html#a2430ee585fe26a4c1d8dbb60776bf44e',1,'ne::MeshData']]], + ['getvideoadapter_384',['getVideoAdapter',['../classne_1_1DirectXRenderer.html#aaefff1d150a755ead34aaee472e6fa77',1,'ne::DirectXRenderer']]], + ['getviewmatrix_385',['getViewMatrix',['../classne_1_1CameraProperties.html#a0ca9e5d4a3ebfb520b8e39cd8497ec86',1,'ne::CameraProperties']]], + ['getvisibility_386',['getVisibility',['../classne_1_1RootSignatureGenerator_1_1RootParameter.html#aa5cf1cbf4b3988b5292816b7e53d26b5',1,'ne::RootSignatureGenerator::RootParameter']]], + ['getvisibledistancetonearclipplaneratio_387',['getVisibleDistanceToNearClipPlaneRatio',['../classne_1_1ShadowMapManager.html#a98d0cfa3f9a8786f34ec00ec560afa2e',1,'ne::ShadowMapManager']]], + ['getwindow_388',['getWindow',['../classne_1_1GameManager.html#a2410cd7594cc46077cee6c900a0a43da',1,'ne::GameManager::getWindow()'],['../classne_1_1GameInstance.html#aab1527a8de17aa14bc10fb321f5e80b2',1,'ne::GameInstance::getWindow()'],['../classne_1_1Renderer.html#a4b2060db01a347def8c4315f6aada1f8',1,'ne::Renderer::getWindow()']]], + ['getworldforwarddirection_389',['getWorldForwardDirection',['../classne_1_1SpatialNode.html#ac8bba3a225a35cd40d5f04c98506aa4e',1,'ne::SpatialNode']]], + ['getworldlocation_390',['getWorldLocation',['../classne_1_1SpatialNode.html#acbd42888d6bb7d5ff7e82bd61ed8f8c2',1,'ne::SpatialNode::getWorldLocation()'],['../classne_1_1CameraProperties.html#a9a2919ade3eb2d1247533bb99ca4e3d8',1,'ne::CameraProperties::getWorldLocation()']]], + ['getworldmatrix_391',['getWorldMatrix',['../classne_1_1SpatialNode.html#a9becf3737c72d57008bbc87d37aea546',1,'ne::SpatialNode']]], + ['getworldrightdirection_392',['getWorldRightDirection',['../classne_1_1SpatialNode.html#a2594545f207a1a4972eade6172cca66c',1,'ne::SpatialNode']]], + ['getworldrootnode_393',['getWorldRootNode',['../classne_1_1GameManager.html#abb00111cae84200296bf56234908c67e',1,'ne::GameManager::getWorldRootNode()'],['../classne_1_1GameInstance.html#a1694c7d8efca6ba32e3caff863d8fdfe',1,'ne::GameInstance::getWorldRootNode()'],['../classne_1_1Node.html#a470c2e53992a75304574a6c3c80a87d2',1,'ne::Node::getWorldRootNode()']]], + ['getworldrotation_394',['getWorldRotation',['../classne_1_1SpatialNode.html#af1c06e3d090b282f172c0978c8ddeb17',1,'ne::SpatialNode']]], + ['getworldrotationquaternion_395',['getWorldRotationQuaternion',['../classne_1_1SpatialNode.html#a9e77c912ebf8f0877addcee649fdffe1',1,'ne::SpatialNode']]], + ['getworldscale_396',['getWorldScale',['../classne_1_1SpatialNode.html#aac522941554b6f4f97f5eb1a2e29d31a',1,'ne::SpatialNode']]], + ['getworldsize_397',['getWorldSize',['../classne_1_1GameManager.html#aa80ac9bb728d49381e3573c98c741e83',1,'ne::GameManager::getWorldSize()'],['../classne_1_1World.html#af6219e17f62b2524332562c321307476',1,'ne::World::getWorldSize()'],['../classne_1_1GameInstance.html#ae9c6911a64ab45b5d45b9d2e241618c7',1,'ne::GameInstance::getWorldSize()']]], + ['getworldtimeinseconds_398',['getWorldTimeInSeconds',['../classne_1_1GameManager.html#a0af03153d75a24c9c3c62f3fcf88d297',1,'ne::GameManager::getWorldTimeInSeconds()'],['../classne_1_1World.html#a2bd9e608e87a30c949a98b0c9e9d6025',1,'ne::World::getWorldTimeInSeconds()'],['../classne_1_1GameInstance.html#a16483867d51ac5521d747038f37172ba',1,'ne::GameInstance::getWorldTimeInSeconds()']]], + ['getworldupdirection_399',['getWorldUpDirection',['../classne_1_1SpatialNode.html#a95209d6c7572ee121505191652ed529b',1,'ne::SpatialNode']]], + ['glfw_400',['GLFW',['../classne_1_1GLFW.html#a976ddbb5eb5029dfc3575c0acd6d8108',1,'ne::GLFW']]], + ['glfwframebufferresizecallback_401',['glfwFramebufferResizeCallback',['../classne_1_1Window.html#ac57c250f86683edeb7fbce73ff2fc6e9',1,'ne::Window']]], + ['glfwwindowfocuscallback_402',['glfwWindowFocusCallback',['../classne_1_1Window.html#a2d4c36ba3af705eaa819978f3612f6c7',1,'ne::Window']]], + ['glfwwindowkeyboardcallback_403',['glfwWindowKeyboardCallback',['../classne_1_1Window.html#ad8b5e2911019e47727be995430314585',1,'ne::Window']]], + ['glfwwindowmousecallback_404',['glfwWindowMouseCallback',['../classne_1_1Window.html#aa5e2106db073a38d5e06181fc1a5c8ec',1,'ne::Window']]], + ['glfwwindowmousecursorposcallback_405',['glfwWindowMouseCursorPosCallback',['../classne_1_1Window.html#ab20e1bf7359ba32effd5cd82d9f71ff4',1,'ne::Window']]], + ['glfwwindowmousescrollcallback_406',['glfwWindowMouseScrollCallback',['../classne_1_1Window.html#a43b85c95a5ec1e7f7966391c19a62aaf',1,'ne::Window']]], + ['globalshaderresourcebinding_407',['GlobalShaderResourceBinding',['../classne_1_1GlobalShaderResourceBinding.html#ac41bfc2a986ce605df3dc1f72a7e4c14',1,'ne::GlobalShaderResourceBinding']]], + ['globalshaderresourcebindingmanager_408',['GlobalShaderResourceBindingManager',['../classne_1_1GlobalShaderResourceBindingManager.html#ae86dc66da2777c27675e1e45b0c8b2cc',1,'ne::GlobalShaderResourceBindingManager']]], + ['glslcomputeshaderinterface_409',['GlslComputeShaderInterface',['../classne_1_1GlslComputeShaderInterface.html#a3c7b25312c0eeea456770d0f7fc1dac1',1,'ne::GlslComputeShaderInterface']]], + ['glslglobalshaderresourcebinding_410',['GlslGlobalShaderResourceBinding',['../classne_1_1GlslGlobalShaderResourceBinding.html#a480d229a4d6dc5189af68187e311a312',1,'ne::GlslGlobalShaderResourceBinding']]], + ['glslshader_411',['GlslShader',['../classne_1_1GlslShader.html#a2ae5d270a554619cc5b4378c912b8d8b',1,'ne::GlslShader']]], + ['glslshadercachemanager_412',['GlslShaderCacheManager',['../classne_1_1GlslShaderCacheManager.html#ac42e9bc934ff4b50db12c2be7c81fc59',1,'ne::GlslShaderCacheManager']]], + ['glslshadertextureresourcebinding_413',['GlslShaderTextureResourceBinding',['../classne_1_1GlslShaderTextureResourceBinding.html#ad1944b0ed6f014801b6bfcf117d82808',1,'ne::GlslShaderTextureResourceBinding']]], + ['gpuresource_414',['GpuResource',['../classne_1_1GpuResource.html#a794ee4dcd6089f0fd327b3698f8aceaf',1,'ne::GpuResource']]], + ['gpuresourcemanager_415',['GpuResourceManager',['../classne_1_1GpuResourceManager.html#a96cae9bf4c7387a9c7196b4a55d55a27',1,'ne::GpuResourceManager']]], + ['guid_416',['Guid',['../classne_1_1Guid.html#a5053502ca718f99805488e8232b0f589',1,'ne::Guid']]] +]; diff --git a/search/functions_7.js b/search/functions_7.js new file mode 100644 index 000000000..1abd6a057 --- /dev/null +++ b/search/functions_7.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['handleresourcecreation_0',['handleResourceCreation',['../classne_1_1ShaderCpuWriteResourceBindingManager.html#af6d4a93fb5562dfb17feee2c90ef88a6',1,'ne::ShaderCpuWriteResourceBindingManager::handleResourceCreation()'],['../classne_1_1ShaderTextureResourceBindingManager.html#af6cdaa7ed156a6f464a4dcc629bb86f3',1,'ne::ShaderTextureResourceBindingManager::handleResourceCreation()']]], + ['hide_1',['hide',['../classne_1_1Window.html#a630e9e2b4cc602000a3153f0d3030b08',1,'ne::Window']]], + ['hlslcomputeshaderinterface_2',['HlslComputeShaderInterface',['../classne_1_1HlslComputeShaderInterface.html#a89f796b12bc0a0c8e5b224d569eb7873',1,'ne::HlslComputeShaderInterface']]], + ['hlslglobalshaderresourcebinding_3',['HlslGlobalShaderResourceBinding',['../classne_1_1HlslGlobalShaderResourceBinding.html#a15034ae81523e54768fcfbf6f776ce09',1,'ne::HlslGlobalShaderResourceBinding']]], + ['hlslshader_4',['HlslShader',['../classne_1_1HlslShader.html#a52534285c30371025fe925380b469e4b',1,'ne::HlslShader']]], + ['hlslshadercachemanager_5',['HlslShaderCacheManager',['../classne_1_1HlslShaderCacheManager.html#a5df914d1383c5b5e3c39958254081570',1,'ne::HlslShaderCacheManager']]], + ['hlslshadertextureresourcebinding_6',['HlslShaderTextureResourceBinding',['../classne_1_1HlslShaderTextureResourceBinding.html#a6c68f6b53eb496857c6de0a3b7c41c6e',1,'ne::HlslShaderTextureResourceBinding']]] +]; diff --git a/search/functions_8.js b/search/functions_8.js new file mode 100644 index 000000000..4e551c719 --- /dev/null +++ b/search/functions_8.js @@ -0,0 +1,67 @@ +var searchData= +[ + ['importmesh_0',['importMesh',['../classne_1_1MeshImporter.html#a3867621b8bf43182340ccac6d78847ce',1,'ne::MeshImporter']]], + ['importtexture_1',['importTexture',['../classne_1_1TextureImporter.html#a25aebfc1c8079c6e5013249a77df6b8c',1,'ne::TextureImporter']]], + ['info_2',['info',['../classne_1_1DesktopNotification.html#aab9ade90188338b7123e0caf5fc2712d',1,'ne::DesktopNotification::info()'],['../classne_1_1MessageBox.html#adb9a7ef1facd99643c8626eb894a13f6',1,'ne::MessageBox::info()'],['../classne_1_1Logger.html#a0b8b03ae19b39a359b4116c369e23466',1,'ne::Logger::info()']]], + ['initialize_3',['initialize',['../structne_1_1VulkanFrameResource.html#a2543cc63f995ab8e6e30ca4252983c34',1,'ne::VulkanFrameResource::initialize()'],['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html#a66c4556e603b32d7babe396e289a7669',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader::initialize()'],['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html#a6e3d3463ca2331e68e1bcbd9d1fc22f1',1,'ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader::initialize()'],['../classne_1_1VulkanRenderer.html#a3c46c72809425573ad938dfb4e131ccc',1,'ne::VulkanRenderer::initialize()'],['../structne_1_1FrameResource.html#a565314ed03b38cafbf0994d60bfd24bc',1,'ne::FrameResource::initialize()'],['../classne_1_1PipelineSharedPtr.html#a9c28a317be914d621e869405921dbed6',1,'ne::PipelineSharedPtr::initialize(std::shared_ptr< Pipeline > pPipeline, ComputeShaderInterface *pComputeShaderThatUsesPipeline)'],['../classne_1_1PipelineSharedPtr.html#a87f9db31874d4309c7ac82697188be47',1,'ne::PipelineSharedPtr::initialize(std::shared_ptr< Pipeline > pPipeline, Material *pMaterialThatUsesPipeline)'],['../classne_1_1DelayedPipelineResourcesCreation.html#a6f9ad038cfa944be463dd39c25ebd122',1,'ne::DelayedPipelineResourcesCreation::initialize()'],['../structne_1_1DirectXFrameResource.html#a0a367f8468f93ef36c1d7679d80db721',1,'ne::DirectXFrameResource::initialize()'],['../classne_1_1DirectXRenderer.html#abfdd71c29b6db28deef396aafb389b30',1,'ne::DirectXRenderer::initialize()'],['../classne_1_1CompressonatorSingleton.html#a6be025a845b117943553144f0b7594bf',1,'ne::CompressonatorSingleton::initialize()'],['../classne_1_1GameManager.html#a2cacc028e6ebb2353e44e00a12990f05',1,'ne::GameManager::initialize()']]], + ['initializedirectx_4',['initializeDirectX',['../classne_1_1DirectXRenderer.html#a7cac5d3cfd84b04f0a40c5ce05681d11',1,'ne::DirectXRenderer']]], + ['initializepipelines_5',['initializePipelines',['../classne_1_1Material.html#adf6582e8a2f026a45c61396bfe8f1feb',1,'ne::Material']]], + ['initializerenderer_6',['initializeRenderer',['../classne_1_1Renderer.html#a53240d9f15a95b2f5af5c219e7f65051',1,'ne::Renderer']]], + ['initializerendersettings_7',['initializeRenderSettings',['../classne_1_1Renderer.html#a7351705601b29bf309fda4bc9952b179',1,'ne::Renderer']]], + ['initializeresourcemanagers_8',['initializeResourceManagers',['../classne_1_1Renderer.html#a0108568bca8e4457756c6c51f51005e3',1,'ne::Renderer']]], + ['initializevulkan_9',['initializeVulkan',['../classne_1_1VulkanRenderer.html#a44bbc7d6b14f8a8b6a9ac9790ba1b8db',1,'ne::VulkanRenderer']]], + ['insert_10',['insert',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#a36439f2bb2419b7d518e968c27df86bb',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['into_5ftoml_11',['into_toml',['../structne_1_1ShaderDescription.html#a7aed6ce709ce5e2c55cc9c19c3367698',1,'ne::ShaderDescription']]], + ['isaabbinfrustum_12',['isAabbInFrustum',['../structne_1_1Frustum.html#a05de473bc183c2c2eae1454d24624ccd',1,'ne::Frustum']]], + ['isaltpressed_13',['isAltPressed',['../classne_1_1KeyboardModifiers.html#a927825b0725ae0b6a4fbe65747f4c7f6',1,'ne::KeyboardModifiers']]], + ['isbehindplane_14',['isBehindPlane',['../structne_1_1AABB.html#a3fd60491f0d015bed761d2ee99f4d2e4',1,'ne::AABB::isBehindPlane()'],['../structne_1_1Cone.html#a8c42db27549d993b5d583d6b7bf50c82',1,'ne::Cone::isBehindPlane()'],['../structne_1_1Sphere.html#a4ea39373654a68322d77eaff724c892c',1,'ne::Sphere::isBehindPlane()']]], + ['isbeingdestroyed_15',['isBeingDestroyed',['../classne_1_1GameManager.html#afe8a00034541860f0595619e22381ea6',1,'ne::GameManager']]], + ['iscalledeveryframe_16',['isCalledEveryFrame',['../classne_1_1Node.html#afe0a06a7b62617e293529f2e0f89cd81',1,'ne::Node']]], + ['iscapslockpressed_17',['isCapsLockPressed',['../classne_1_1KeyboardModifiers.html#a4657332607cda9d1bf3e8ab76f36bec9',1,'ne::KeyboardModifiers']]], + ['ischildof_18',['isChildOf',['../classne_1_1Node.html#a7d48dcaa587589d0242d523d62bd9d27',1,'ne::Node']]], + ['iscomplete_19',['isComplete',['../structne_1_1VulkanRenderer_1_1QueueFamilyIndices.html#ab46d1ea43a48074394171f6e2385d4a1',1,'ne::VulkanRenderer::QueueFamilyIndices']]], + ['isconeinfrustum_20',['isConeInFrustum',['../structne_1_1Frustum.html#a56961fa9a498c0329070c93b6694d58c',1,'ne::Frustum']]], + ['iscontrolpressed_21',['isControlPressed',['../classne_1_1KeyboardModifiers.html#abeb9681e0fd5a60a1e3be33455123286',1,'ne::KeyboardModifiers']]], + ['isdepthbiasenabled_22',['isDepthBiasEnabled',['../classne_1_1PipelineConfiguration.html#a98ff43f107e6b379906da89db9eebe97',1,'ne::PipelineConfiguration::isDepthBiasEnabled()'],['../classne_1_1DepthPipelineConfiguration.html#a716607d5873fb9fb20f5bd18456b69d5',1,'ne::DepthPipelineConfiguration::isDepthBiasEnabled()']]], + ['isderivedfromserializable_23',['isDerivedFromSerializable',['../classne_1_1SerializableObjectFieldSerializer.html#a1608dcee1d57e8d2950120eaa060ac4b',1,'ne::SerializableObjectFieldSerializer']]], + ['isdevicesuitable_24',['isDeviceSuitable',['../classne_1_1VulkanRenderer.html#a81ad1d11a7975507e79ce9e1e9e7b610',1,'ne::VulkanRenderer']]], + ['isenabled_25',['isEnabled',['../classne_1_1Timer.html#a29a7fec318f11ccd58f3591d61829fed',1,'ne::Timer']]], + ['isfieldserializable_26',['isFieldSerializable',['../classne_1_1SerializableObjectFieldSerializer.html#a070f38772e32e7ba38fae023791268ef',1,'ne::SerializableObjectFieldSerializer']]], + ['isfieldtypesupported_27',['isFieldTypeSupported',['../classne_1_1VectorFieldSerializer.html#ac1dc541e313001d544ed2bc7583ccd68',1,'ne::VectorFieldSerializer::isFieldTypeSupported()'],['../classne_1_1UnorderedMapFieldSerializer.html#a12fb1b1c575f9e870444c1d00a86d7d8',1,'ne::UnorderedMapFieldSerializer::isFieldTypeSupported()'],['../classne_1_1StringFieldSerializer.html#a0f4ff779aac5f1e1d5f96bd178b091b5',1,'ne::StringFieldSerializer::isFieldTypeSupported()'],['../classne_1_1SerializableObjectFieldSerializer.html#a1ec9cc957f39f6d171ecaeb990d76474',1,'ne::SerializableObjectFieldSerializer::isFieldTypeSupported()'],['../classne_1_1MeshDataBinaryFieldSerializer.html#ab7712e6d4a47459f20e87b57c8426094',1,'ne::MeshDataBinaryFieldSerializer::isFieldTypeSupported()'],['../classne_1_1PrimitiveFieldSerializer.html#ac94f362863bf8ec6923d7294036aafad',1,'ne::PrimitiveFieldSerializer::isFieldTypeSupported()'],['../classne_1_1GlmVecFieldSerializer.html#a10853202d56ccc075f98873af620f86b',1,'ne::GlmVecFieldSerializer::isFieldTypeSupported()'],['../classne_1_1IFieldSerializer.html#a78021093f6fcaa0b2def3112104f1791',1,'ne::IFieldSerializer::isFieldTypeSupported()'],['../classne_1_1IBinaryFieldSerializer.html#a1b8adda1b7aacde07b0d795b8262e884',1,'ne::IBinaryFieldSerializer::isFieldTypeSupported()']]], + ['isfieldvalueequal_28',['isFieldValueEqual',['../classne_1_1GlmVecFieldSerializer.html#a5de2375a9d9ae329236d49051cfbf979',1,'ne::GlmVecFieldSerializer::isFieldValueEqual()'],['../classne_1_1IFieldSerializer.html#ae68d18639d0969461e4ea8ecfb05eed4',1,'ne::IFieldSerializer::isFieldValueEqual()'],['../classne_1_1PrimitiveFieldSerializer.html#ac12c52186fdf97f68d4eaf7328b16256',1,'ne::PrimitiveFieldSerializer::isFieldValueEqual()'],['../classne_1_1SerializableObjectFieldSerializer.html#a1e3866f8b86529cd0dac45ce264d4635',1,'ne::SerializableObjectFieldSerializer::isFieldValueEqual()'],['../classne_1_1StringFieldSerializer.html#a231538092259a22d71dd92ac46905691',1,'ne::StringFieldSerializer::isFieldValueEqual()'],['../classne_1_1UnorderedMapFieldSerializer.html#af84dc8bd83cddb5cb93fdecc85bfffb5',1,'ne::UnorderedMapFieldSerializer::isFieldValueEqual()'],['../classne_1_1VectorFieldSerializer.html#a07fa11d7ccd0673d227b9abab92e647d',1,'ne::VectorFieldSerializer::isFieldValueEqual()']]], + ['isglobalshadercacheoutdated_29',['isGlobalShaderCacheOutdated',['../classne_1_1ShaderCacheManager.html#ab660f563940cac6e8c55ff17cd82fa96',1,'ne::ShaderCacheManager']]], + ['isgpusupportsswapchain_30',['isGpuSupportsSwapChain',['../classne_1_1VulkanRenderer.html#a022a996bf0a4ffe8ff63a43b6af9b6e6',1,'ne::VulkanRenderer']]], + ['isgpusupportsuseddeviceextensions_31',['isGpuSupportsUsedDeviceExtensions',['../classne_1_1VulkanRenderer.html#aba975934c63978e6abe5d81a18a63a92',1,'ne::VulkanRenderer']]], + ['isinitialized_32',['isInitialized',['../classne_1_1DirectXRenderer.html#ab985c5f8075d699d4c97844dbbf5fbff',1,'ne::DirectXRenderer::isInitialized()'],['../classne_1_1Renderer.html#a71f920f8d11ab50acac502c896161522',1,'ne::Renderer::isInitialized()'],['../classne_1_1VulkanRenderer.html#aba9922f163c30de28d88bab2218841fd',1,'ne::VulkanRenderer::isInitialized()'],['../classne_1_1PipelineSharedPtr.html#a17943bbf4e292ae394e7e7dcae0139b7',1,'ne::PipelineSharedPtr::isInitialized()']]], + ['iskeyused_33',['isKeyUsed',['../classne_1_1InputManager.html#ab21ead2b2fdc7f3149a8a787fe5ab1cf',1,'ne::InputManager']]], + ['islanguagespecificglobalcacheoutdated_34',['isLanguageSpecificGlobalCacheOutdated',['../classne_1_1ShaderCacheManager.html#a0397467d494307953652bbb3bc032b1c',1,'ne::ShaderCacheManager::isLanguageSpecificGlobalCacheOutdated()'],['../classne_1_1GlslShaderCacheManager.html#a8c5156f783168cd27e4a78aaf6f0c511',1,'ne::GlslShaderCacheManager::isLanguageSpecificGlobalCacheOutdated()'],['../classne_1_1HlslShaderCacheManager.html#a9b2ee2a8a96dd7b97bd36b1316ff9b2c',1,'ne::HlslShaderCacheManager::isLanguageSpecificGlobalCacheOutdated()']]], + ['ismacroshouldbeconsideredinconfiguration_35',['isMacroShouldBeConsideredInConfiguration',['../structne_1_1ShaderMacroConfigurations.html#aabf70371234d33cdf72268ab39ac1621',1,'ne::ShaderMacroConfigurations']]], + ['ismeshnodeadded_36',['isMeshNodeAdded',['../structne_1_1MeshNodesThatUseThisMaterial.html#a07aa808e0d4a11b9cdcf541bbce3952d',1,'ne::MeshNodesThatUseThisMaterial']]], + ['ismostinnertypeserializable_37',['isMostInnerTypeSerializable',['../classne_1_1VectorFieldSerializer.html#a6d92c3aeb1ea8adacc489f3cf19a1975',1,'ne::VectorFieldSerializer']]], + ['isnodespawned_38',['isNodeSpawned',['../classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#af86056a25323eb76f3e8b722fe895a90',1,'ne::NodeFunction< FunctionReturnType(FunctionArgs...)>::isNodeSpawned()'],['../classne_1_1GameManager.html#af183d6afc41ca41a4687f3073504f0fe',1,'ne::GameManager::isNodeSpawned()'],['../classne_1_1World.html#ace425331c8ebaf36b044733d05787941',1,'ne::World::isNodeSpawned()']]], + ['isnumlockpressed_39',['isNumLockPressed',['../classne_1_1KeyboardModifiers.html#a2cd866247a91c17d0e9f57b528763dfe',1,'ne::KeyboardModifiers']]], + ['isparentof_40',['isParentOf',['../classne_1_1Node.html#ab4f66ab4ad5300e502fe964e8717f642',1,'ne::Node']]], + ['ispixelblendingenabled_41',['isPixelBlendingEnabled',['../classne_1_1PipelineConfiguration.html#af920980ff0dc2f664c0dc4857ae40d61',1,'ne::PipelineConfiguration::isPixelBlendingEnabled()'],['../classne_1_1ColorPipelineConfiguration.html#a89c4e0055032ef40592407231dd539c6',1,'ne::ColorPipelineConfiguration::isPixelBlendingEnabled()']]], + ['ispointbehindplane_42',['isPointBehindPlane',['../structne_1_1Plane.html#af85362ad4e9830f92d0557d56832f043',1,'ne::Plane']]], + ['isreceivinginput_43',['isReceivingInput',['../classne_1_1Node.html#ab524a575030ca4f5a505c800680bcbb8',1,'ne::Node']]], + ['isrunning_44',['isRunning',['../classne_1_1Timer.html#a3cdc8fc9b982da60af83e9f0d9356f42',1,'ne::Timer']]], + ['isserializabledataequal_45',['isSerializableDataEqual',['../structne_1_1ShaderDescription.html#a9fcf588499ec4ad6be72988185806320',1,'ne::ShaderDescription']]], + ['isserializableobjectvalueequal_46',['isSerializableObjectValueEqual',['../classne_1_1SerializableObjectFieldSerializer.html#aeb49606637b47d3a2fe0747cd98beca9',1,'ne::SerializableObjectFieldSerializer']]], + ['isserialized_47',['isSerialized',['../classne_1_1Node.html#aca0a97f3a5893d137ef01aa155426706',1,'ne::Node']]], + ['isshadernamecanbeused_48',['isShaderNameCanBeUsed',['../classne_1_1ShaderManager.html#a87aa310492aa04059696943383403f7f',1,'ne::ShaderManager']]], + ['isshiftpressed_49',['isShiftPressed',['../classne_1_1KeyboardModifiers.html#a62b4f516ee15720f8f785941c0c27638',1,'ne::KeyboardModifiers']]], + ['isshrinkingpossible_50',['isShrinkingPossible',['../classne_1_1DirectXDescriptorHeap.html#aa60448ca77ae760185fb335c27055ba0',1,'ne::DirectXDescriptorHeap']]], + ['isspawned_51',['isSpawned',['../classne_1_1Node.html#ab452b5f388d94b20c652ae661caca5fd',1,'ne::Node']]], + ['issphereinfrustum_52',['isSphereInFrustum',['../structne_1_1Frustum.html#abd4917883366761005bf6538fa775279',1,'ne::Frustum']]], + ['isstopped_53',['isStopped',['../classne_1_1Timer.html#aae25a268580fe3b0b85026e05f706501',1,'ne::Timer']]], + ['isstorageresource_54',['isStorageResource',['../classne_1_1VulkanResource.html#a07219fb46896d75ea8d1e3c7c5d7851f',1,'ne::VulkanResource']]], + ['issuperpressed_55',['isSuperPressed',['../classne_1_1KeyboardModifiers.html#a6077c1a22262b43c3acdbef13efca237',1,'ne::KeyboardModifiers']]], + ['istable_56',['isTable',['../classne_1_1RootSignatureGenerator_1_1RootParameter.html#a1126962985b630af94ed15b1be0295e8',1,'ne::RootSignatureGenerator::RootParameter']]], + ['istransparencyenabled_57',['isTransparencyEnabled',['../classne_1_1Material.html#a88305277fcf45b2d54ffdb0e7de731d2',1,'ne::Material']]], + ['istreedeserializedfromonefile_58',['isTreeDeserializedFromOneFile',['../classne_1_1Node.html#a42518527c8194051ae12f19603f6c32d',1,'ne::Node']]], + ['istypederivesfromserializable_59',['isTypeDerivesFromSerializable',['../classne_1_1SerializableObjectFieldSerializer.html#a8e712f2c8e7b3ddceb9ed1b8999374db',1,'ne::SerializableObjectFieldSerializer::isTypeDerivesFromSerializable(const std::string &sCanonicalTypeName)'],['../classne_1_1SerializableObjectFieldSerializer.html#a0b843de0c152918239c68497b4170cc2',1,'ne::SerializableObjectFieldSerializer::isTypeDerivesFromSerializable(const std::string &sCanonicalTypeName, const rfk::Namespace *pNamespace)']]], + ['isuseddepthimageformatsupported_60',['isUsedDepthImageFormatSupported',['../classne_1_1VulkanRenderer.html#a535406f12090a37dbdbb0c3de64c6265',1,'ne::VulkanRenderer']]], + ['isusingtransparency_61',['isUsingTransparency',['../classne_1_1Material.html#acb5fc8093b532caee4ab8293f4964198',1,'ne::Material']]], + ['isvisible_62',['isVisible',['../classne_1_1MeshNode.html#a4ec40629a5cb70acb3aa3172349e6440',1,'ne::MeshNode']]], + ['isvsyncenabled_63',['isVsyncEnabled',['../classne_1_1RenderSettings.html#a4cf567c98f20cb832aa86a9b1599fbe8',1,'ne::RenderSettings']]] +]; diff --git a/search/functions_9.js b/search/functions_9.js new file mode 100644 index 000000000..e28fb81eb --- /dev/null +++ b/search/functions_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['keyboardmodifiers_0',['KeyboardModifiers',['../classne_1_1KeyboardModifiers.html#ac6499c1eb8b60f0409da92e2c6d00009',1,'ne::KeyboardModifiers']]] +]; diff --git a/search/functions_a.js b/search/functions_a.js new file mode 100644 index 000000000..cfd2390d7 --- /dev/null +++ b/search/functions_a.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['lightingshaderresourcemanager_0',['LightingShaderResourceManager',['../classne_1_1LightingShaderResourceManager.html#a11c44f87535d3904794827c653a85037',1,'ne::LightingShaderResourceManager']]], + ['loadfile_1',['loadFile',['../classne_1_1ConfigManager.html#a27345612b4ee53e154f32e951b219438',1,'ne::ConfigManager::loadFile(ConfigCategory category, std::string_view sFileName)'],['../classne_1_1ConfigManager.html#afeefdbbcf2983386c6cec36a3ebfa323',1,'ne::ConfigManager::loadFile(std::filesystem::path pathToConfigFile)']]], + ['loadfromfile_2',['loadFromFile',['../classne_1_1InputManager.html#a111e1ab4912627fdf82871608f880c1d',1,'ne::InputManager']]], + ['loadnodetreeasworld_3',['loadNodeTreeAsWorld',['../classne_1_1GameManager.html#afd64862dab6ec2d0dbdd9d6da07925c5',1,'ne::GameManager::loadNodeTreeAsWorld()'],['../classne_1_1World.html#a21e2601b4b9099bb4ef7a60a5a829c15',1,'ne::World::loadNodeTreeAsWorld()'],['../classne_1_1GameInstance.html#a9ac06b2413452cc4d3e041159cc0edd6',1,'ne::GameInstance::loadNodeTreeAsWorld()']]], + ['loadshaderdatafromdiskifnotloaded_4',['loadShaderDataFromDiskIfNotLoaded',['../classne_1_1GlslShader.html#aaca9528861ac6de8bdcd94980f939686',1,'ne::GlslShader::loadShaderDataFromDiskIfNotLoaded()'],['../classne_1_1HlslShader.html#aa071a4a5a1de69cedf489a678a530b60',1,'ne::HlslShader::loadShaderDataFromDiskIfNotLoaded()']]], + ['loadtextureandcreatenewtexturehandle_5',['loadTextureAndCreateNewTextureHandle',['../classne_1_1TextureManager.html#a7042b3ef960770a80fda068024123295',1,'ne::TextureManager']]], + ['loadtexturefromdisk_6',['loadTextureFromDisk',['../classne_1_1DirectXResourceManager.html#ab9b690e2c5578e44eb7adf100ffcac75',1,'ne::DirectXResourceManager::loadTextureFromDisk()'],['../classne_1_1GpuResourceManager.html#ab0184f8dfd018f63c08ae0bbe568517d',1,'ne::GpuResourceManager::loadTextureFromDisk()'],['../classne_1_1VulkanResourceManager.html#a0e25dc8a6b3a5ab4ed44fd96a6d4b11d',1,'ne::VulkanResourceManager::loadTextureFromDisk()']]], + ['lockchildren_7',['lockChildren',['../classne_1_1Node.html#a57649518a54e42668196d18741376397',1,'ne::Node']]] +]; diff --git a/search/functions_b.js b/search/functions_b.js new file mode 100644 index 000000000..dc885365c --- /dev/null +++ b/search/functions_b.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['makeactive_0',['makeActive',['../classne_1_1CameraNode.html#ae921cadd3b2cec25e034d01e9e9b35e3',1,'ne::CameraNode']]], + ['makemultipleof256_1',['makeMultipleOf256',['../classne_1_1DirectXResourceManager.html#ae0a340ec70ed691ca3f23b628404cdf9',1,'ne::DirectXResourceManager']]], + ['makertvresourcesfromswapchainbuffer_2',['makeRtvResourcesFromSwapChainBuffer',['../classne_1_1DirectXResourceManager.html#af1c93f50b5afb8cf81bd50f338a1e27e',1,'ne::DirectXResourceManager']]], + ['makesureprojectionmatrixandclipplanesareuptodate_3',['makeSureProjectionMatrixAndClipPlanesAreUpToDate',['../classne_1_1CameraProperties.html#a7b1491114da9fc4e459fafa2328ef4ce',1,'ne::CameraProperties']]], + ['makesureviewmatrixisuptodate_4',['makeSureViewMatrixIsUpToDate',['../classne_1_1CameraProperties.html#a5ef5cedc69836074ceecedc91682084f',1,'ne::CameraProperties']]], + ['markasneedsupdate_5',['markAsNeedsUpdate',['../classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html#afe9f2436048cef54a38ea54976ae6834',1,'ne::ShaderCpuWriteResourceBindingUniquePtr::markAsNeedsUpdate()'],['../classne_1_1ShaderLightArraySlot.html#a21fe2de979e1fa1585836d4ea2f26cfb',1,'ne::ShaderLightArraySlot::markAsNeedsUpdate()']]], + ['markdescriptorasunused_6',['markDescriptorAsUnused',['../classne_1_1ContinuousDirectXDescriptorRange.html#a6669cb1a0aac2f621ddaf91693132c80',1,'ne::ContinuousDirectXDescriptorRange']]], + ['markresourceasneedsupdate_7',['markResourceAsNeedsUpdate',['../classne_1_1ShaderCpuWriteResourceBindingManager.html#a6a61adffdf7d6a8c3c6984c1e6996812',1,'ne::ShaderCpuWriteResourceBindingManager']]], + ['markshadercpuwriteresourceasneedsupdate_8',['markShaderCpuWriteResourceAsNeedsUpdate',['../classne_1_1Material.html#a2092ab1b66f459ce1b690e053488a5aa',1,'ne::Material']]], + ['markshadercpuwriteresourcetobecopiedtogpu_9',['markShaderCpuWriteResourceToBeCopiedToGpu',['../classne_1_1MeshNode.html#a7a8fe299045faa38a4ac4fa458753422',1,'ne::MeshNode']]], + ['markshaderdatatobecopiedtogpu_10',['markShaderDataToBeCopiedToGpu',['../classne_1_1DirectionalLightNode.html#a3c9be0e86ae2e5f1579c0e77ac0eaf34',1,'ne::DirectionalLightNode::markShaderDataToBeCopiedToGpu()'],['../classne_1_1PointLightNode.html#ae64d1c2e27549c93100744b194770d6e',1,'ne::PointLightNode::markShaderDataToBeCopiedToGpu()'],['../classne_1_1SpotlightNode.html#abd3bfa9de6cc0f55938e69a31371f82e',1,'ne::SpotlightNode::markShaderDataToBeCopiedToGpu()']]], + ['markshadertoberemoved_11',['markShaderToBeRemoved',['../classne_1_1ShaderManager.html#a005b1de2299a6257502f772992ab52b5',1,'ne::ShaderManager']]], + ['markshadowpassdatatobecopiedtogpu_12',['markShadowPassDataToBeCopiedToGpu',['../classne_1_1DirectionalLightNode.html#aff21b412eff00fd17a16e8413d376d3c',1,'ne::DirectionalLightNode::markShadowPassDataToBeCopiedToGpu()'],['../classne_1_1PointLightNode.html#a8639059b33f82370c811ec13b744eb42',1,'ne::PointLightNode::markShadowPassDataToBeCopiedToGpu()']]], + ['markslotasneedsupdate_13',['markSlotAsNeedsUpdate',['../classne_1_1ShaderLightArray.html#a3a1ca46441de4fdd45cb53339968fecb',1,'ne::ShaderLightArray']]], + ['markslotasnolongerbeingused_14',['markSlotAsNoLongerBeingUsed',['../classne_1_1DynamicCpuWriteShaderResourceArray.html#acef60155637b8544bdc5d3d78d5ef901',1,'ne::DynamicCpuWriteShaderResourceArray']]], + ['material_15',['Material',['../classne_1_1Material.html#a0970484073a752aed3a6704a85be04b4',1,'ne::Material::Material()'],['../classne_1_1Material.html#af88101c98cc96028ca9cfb4f6fbebf96',1,'ne::Material::Material(const std::string &sVertexShaderName, const std::string &sPixelShaderName, bool bUseTransparency, PipelineManager *pPipelineManager, const std::string &sMaterialName="Material")']]], + ['maximize_16',['maximize',['../classne_1_1Window.html#ae3e0d90c39725216ccdcee6a1261e05e',1,'ne::Window']]], + ['memorymap_17',['memoryMap',['../classne_1_1KtxLoadingCallbackManager.html#ab6de741eb467287f35fc43e5afef0c08',1,'ne::KtxLoadingCallbackManager']]], + ['memoryunmap_18',['memoryUnmap',['../classne_1_1KtxLoadingCallbackManager.html#a2b60b0942fa48882ef7f7f5f5518f05b',1,'ne::KtxLoadingCallbackManager']]], + ['meshdata_19',['MeshData',['../classne_1_1MeshData.html#a1a7851ff413252527772d106b347b749',1,'ne::MeshData::MeshData(const MeshData &)=default'],['../classne_1_1MeshData.html#ad4b137ea298731fcca0c60b88bbc21ed',1,'ne::MeshData::MeshData(MeshData &&) noexcept=default']]], + ['meshindexbufferinfo_20',['MeshIndexBufferInfo',['../structne_1_1MeshIndexBufferInfo.html#a1fcff22232579cd89333e6275e5cb81c',1,'ne::MeshIndexBufferInfo::MeshIndexBufferInfo()=default'],['../structne_1_1MeshIndexBufferInfo.html#a79e3e38504242948f9c8d0de18715bb0',1,'ne::MeshIndexBufferInfo::MeshIndexBufferInfo(GpuResource *pIndexBuffer, unsigned int iIndexCount)']]], + ['meshnode_21',['MeshNode',['../classne_1_1MeshNode.html#a6ed41a6566e750963f8cb3f8f5eb1963',1,'ne::MeshNode']]], + ['meshvertex_22',['MeshVertex',['../structne_1_1MeshVertex.html#af564b14fe07bd82d61d4c20057cf8bb7',1,'ne::MeshVertex::MeshVertex(const MeshVertex &)=default'],['../structne_1_1MeshVertex.html#abefb00d0d68519994453e8c082939712',1,'ne::MeshVertex::MeshVertex(MeshVertex &&) noexcept=default']]], + ['minimize_23',['minimize',['../classne_1_1Window.html#ac49be1d6be65f2f8285848741387f8e2',1,'ne::Window']]], + ['modifyactioneventkey_24',['modifyActionEventKey',['../classne_1_1InputManager.html#a70778280bab2b2758296a142de947bc8',1,'ne::InputManager']]], + ['modifyaxiseventkey_25',['modifyAxisEventKey',['../classne_1_1InputManager.html#aa820c1355bd36cceca43ceabb4c7bd8e',1,'ne::InputManager']]] +]; diff --git a/search/functions_c.js b/search/functions_c.js new file mode 100644 index 000000000..67e202968 --- /dev/null +++ b/search/functions_c.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['node_0',['Node',['../classne_1_1Node.html#a869b03190702ccef1f85bad536bf1a4b',1,'ne::Node::Node()'],['../classne_1_1Node.html#a21e8ff8b016048cb83b9bbfbe822a7e7',1,'ne::Node::Node(const std::string &sName)']]], + ['nodefunction_1',['NodeFunction',['../classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a87be6ed619ef19fc70ffc839032a0f4b',1,'ne::NodeFunction< FunctionReturnType(FunctionArgs...)>::NodeFunction(size_t iNodeId, const std::function< FunctionReturnType(FunctionArgs...)> &callback)'],['../classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a0b583d1cffcec3340d969eab61cd2aaa',1,'ne::NodeFunction< FunctionReturnType(FunctionArgs...)>::NodeFunction(const NodeFunction &other)=default'],['../classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#ac0d22b7a67c10fd9a1cea9cfa2677bc9',1,'ne::NodeFunction< FunctionReturnType(FunctionArgs...)>::NodeFunction(NodeFunction &&other) noexcept=default']]], + ['normalizesafely_2',['normalizeSafely',['../classne_1_1MathHelpers.html#aaff69b1d4a3834f7a4a5df8fd3565510',1,'ne::MathHelpers']]], + ['normalizevalue_3',['normalizeValue',['../classne_1_1MathHelpers.html#a20352d2ad41452e1a4d4cb432c79aa7e',1,'ne::MathHelpers']]], + ['notifyaboutattachedtonewparent_4',['notifyAboutAttachedToNewParent',['../classne_1_1Node.html#a8472729af29f2e90d0a4ee334953e783',1,'ne::Node']]], + ['notifyaboutdetachingfromparent_5',['notifyAboutDetachingFromParent',['../classne_1_1Node.html#a9854b81a46b4c0063a0447a8a42dac0c',1,'ne::Node']]], + ['notifyrendereraboutchangedsettings_6',['notifyRendererAboutChangedSettings',['../classne_1_1RenderSettings.html#a1ef3a5f77f2b71b60fdfc97c886479ca',1,'ne::RenderSettings']]], + ['notifyshaderbytecodeloadedintomemory_7',['notifyShaderBytecodeLoadedIntoMemory',['../classne_1_1Shader.html#ad1f2db6459f9b9c7adf6a2b09938d7e9',1,'ne::Shader']]], + ['notifyshaderbytecodereleasedfrommemory_8',['notifyShaderBytecodeReleasedFromMemory',['../classne_1_1Shader.html#a7919d112571cf03c409fa713a741192a',1,'ne::Shader']]] +]; diff --git a/search/functions_d.js b/search/functions_d.js new file mode 100644 index 000000000..e237de0c5 --- /dev/null +++ b/search/functions_d.js @@ -0,0 +1,77 @@ +var searchData= +[ + ['onactivecamerachanged_0',['onActiveCameraChanged',['../classne_1_1Renderer.html#a51e0749c507f29e83f11ad2e5b5cdc18',1,'ne::Renderer']]], + ['onafterallpipelinesrefreshedresources_1',['onAfterAllPipelinesRefreshedResources',['../classne_1_1ShaderCpuWriteResourceBinding.html#a7a7beba941bc6302e57e78b6a259e265',1,'ne::ShaderCpuWriteResourceBinding::onAfterAllPipelinesRefreshedResources()'],['../classne_1_1HlslShaderTextureResourceBinding.html#ad64467fd97a647a3b480de5aedfe5961',1,'ne::HlslShaderTextureResourceBinding::onAfterAllPipelinesRefreshedResources()'],['../classne_1_1ShaderResourceBindingBase.html#aeeb20e00c70013812394fc38f24677c8',1,'ne::ShaderResourceBindingBase::onAfterAllPipelinesRefreshedResources()'],['../classne_1_1GlslShaderTextureResourceBinding.html#acdcec2ee9f7c94f9dad2bbe1637a7505',1,'ne::GlslShaderTextureResourceBinding::onAfterAllPipelinesRefreshedResources()']]], + ['onafterattachedtonewparent_2',['onAfterAttachedToNewParent',['../classne_1_1Node.html#ab7e67ce1bfe3c1015630301e3c53411f',1,'ne::Node::onAfterAttachedToNewParent()'],['../classne_1_1EditorCameraNode.html#a08e4e5ace5a7e1f0c9267a3482f7f4ca',1,'ne::EditorCameraNode::onAfterAttachedToNewParent()'],['../classne_1_1SpatialNode.html#ae883c06ca2bc4bd917de5486cbbda0d4',1,'ne::SpatialNode::onAfterAttachedToNewParent()']]], + ['onafterdeserialized_3',['onAfterDeserialized',['../classne_1_1DirectionalLightNode.html#a5371921a835741ed94bc0c823e8f5424',1,'ne::DirectionalLightNode::onAfterDeserialized()'],['../classne_1_1RenderSettings.html#a9107963ba60801c525dcfecdc3d0d293',1,'ne::RenderSettings::onAfterDeserialized()'],['../classne_1_1Material.html#a7946faee0b5231b38196c9cc8c2dffd4',1,'ne::Material::onAfterDeserialized()'],['../classne_1_1Serializable.html#a00002d59e5d0dcda6e53c20b59947150',1,'ne::Serializable::onAfterDeserialized()'],['../classne_1_1SpatialNode.html#a4ef72e0c9e17fba2aeae88a87c424a84',1,'ne::SpatialNode::onAfterDeserialized()'],['../classne_1_1MeshNode.html#a453c3a079be0120c8c9fb7cd3a5a6899',1,'ne::MeshNode::onAfterDeserialized()'],['../classne_1_1SpotlightNode.html#aa34d6c205b21d9b7beeaa2769c0ecb96',1,'ne::SpotlightNode::onAfterDeserialized()'],['../classne_1_1PointLightNode.html#ae2b46df4a1cf71aafb64a05a2b03a98c',1,'ne::PointLightNode::onAfterDeserialized()']]], + ['onallgraphicspipelinesrecreatedinternalresources_4',['onAllGraphicsPipelinesRecreatedInternalResources',['../classne_1_1GlobalShaderResourceBindingManager.html#a57921a52680a1de20d4d9668206a3608',1,'ne::GlobalShaderResourceBindingManager']]], + ['onbeforedetachedfromparent_5',['onBeforeDetachedFromParent',['../classne_1_1Node.html#a53e4a732c0e3578d8a5551693b8c02aa',1,'ne::Node']]], + ['onbeforenewframe_6',['onBeforeNewFrame',['../classne_1_1EditorGameInstance.html#a98db763ad2e5b24ba9bb24c5192fb1c5',1,'ne::EditorGameInstance::onBeforeNewFrame()'],['../classne_1_1EditorCameraNode.html#a32c682de69a47481aa8429f56a58f07c',1,'ne::EditorCameraNode::onBeforeNewFrame()'],['../classne_1_1GameManager.html#ad5574aec98eb24f9f6a5ac33e24e0a1f',1,'ne::GameManager::onBeforeNewFrame()'],['../classne_1_1GameInstance.html#a33c3f5c6e96408babf22b3a977f8c5e1',1,'ne::GameInstance::onBeforeNewFrame()'],['../classne_1_1Node.html#a6ccde9ffedb8ce10cfb4cbdd8b6ea59a',1,'ne::Node::onBeforeNewFrame()']]], + ['oncameranodedespawning_7',['onCameraNodeDespawning',['../classne_1_1CameraManager.html#a2906fa6c31c8fab04105c42ea23e33bb',1,'ne::CameraManager']]], + ['onchildnodesspawned_8',['onChildNodesSpawned',['../classne_1_1Node.html#a79cba5cd17e5e968ed92f162b5a9f08b',1,'ne::Node']]], + ['oncomputeshadernolongerusingpipeline_9',['onComputeShaderNoLongerUsingPipeline',['../classne_1_1Pipeline.html#ac3a9612dddfef7d6a717be4790a65ef7',1,'ne::Pipeline']]], + ['oncomputeshaderusingpipeline_10',['onComputeShaderUsingPipeline',['../classne_1_1Pipeline.html#af4273d385ab2a9d70874e290c27dfc17',1,'ne::Pipeline']]], + ['ondescriptorbeingdestroyed_11',['onDescriptorBeingDestroyed',['../classne_1_1DirectXDescriptorHeap.html#a2f77d06c9122f0badd958b8ee5efc88e',1,'ne::DirectXDescriptorHeap']]], + ['ondescriptorrangebeingdestroyed_12',['onDescriptorRangeBeingDestroyed',['../classne_1_1DirectXDescriptorHeap.html#a0817166531ea8947342962e195ab98d4',1,'ne::DirectXDescriptorHeap']]], + ['ondespawning_13',['onDespawning',['../classne_1_1SpotlightNode.html#a8f09cc94a4a701d7f9771e0cddddeebe',1,'ne::SpotlightNode::onDespawning()'],['../classne_1_1Node.html#a890cf446e639ac9dd1e9e7832cf796ed',1,'ne::Node::onDespawning()'],['../classne_1_1MeshNode.html#a53861da301908fac9900bd11073b745f',1,'ne::MeshNode::onDespawning()'],['../classne_1_1PointLightNode.html#a3a3653f472765d4594939d8c3796aa73',1,'ne::PointLightNode::onDespawning()'],['../classne_1_1DirectionalLightNode.html#a8ecbc829b192d1caf811746b58b8a475',1,'ne::DirectionalLightNode::onDespawning()'],['../classne_1_1EnvironmentNode.html#adbe7bebff6387c0bdca1b8b18af811db',1,'ne::EnvironmentNode::onDespawning()'],['../classne_1_1CameraNode.html#a163b51874818ad22d1e4bcc83774a78f',1,'ne::CameraNode::onDespawning()']]], + ['ondirectionallightarraysizechanged_14',['onDirectionalLightArraySizeChanged',['../classne_1_1LightingShaderResourceManager.html#a4509a3f1e11d13d092aa01e0c286a708',1,'ne::LightingShaderResourceManager']]], + ['onengineshaderscompiled_15',['onEngineShadersCompiled',['../classne_1_1LightingShaderResourceManager.html#aa04b68e7333b07b078edfc596f52c644',1,'ne::LightingShaderResourceManager']]], + ['onfinishedupdatingshaderdata_16',['onFinishedUpdatingShaderData',['../classne_1_1DirectionalLightNode.html#a3d3f12064a238c4c35a2d76878e53338',1,'ne::DirectionalLightNode::onFinishedUpdatingShaderData()'],['../classne_1_1PointLightNode.html#aeb4c5c983c4821bead1f744afe581f33',1,'ne::PointLightNode::onFinishedUpdatingShaderData()'],['../classne_1_1SpotlightNode.html#a840d32981f5133a1b60b78be61512869',1,'ne::SpotlightNode::onFinishedUpdatingShaderData()']]], + ['onfinishedupdatingshadermeshconstants_17',['onFinishedUpdatingShaderMeshConstants',['../classne_1_1Material.html#acc4f2a67629155070efdac11fbdae46e',1,'ne::Material::onFinishedUpdatingShaderMeshConstants()'],['../classne_1_1MeshNode.html#a59ea8756566f5a6b8016e3f919050211',1,'ne::MeshNode::onFinishedUpdatingShaderMeshConstants()']]], + ['onfinishedupdatingshadowpassdata_18',['onFinishedUpdatingShadowPassData',['../classne_1_1DirectionalLightNode.html#a7ee385a787777c41b87a5e05a0b197ec',1,'ne::DirectionalLightNode::onFinishedUpdatingShadowPassData()'],['../classne_1_1SpotlightNode.html#a4b442dcbfae7ca18ef8b2596a29c96d2',1,'ne::SpotlightNode::onFinishedUpdatingShadowPassData()'],['../classne_1_1PointLightNode.html#a20c2d24c0bde9f3438443c5fc2be7735',1,'ne::PointLightNode::onFinishedUpdatingShadowPassData()']]], + ['onframebuffersizechanged_19',['onFramebufferSizeChanged',['../classne_1_1GameManager.html#af375a4afde29577ed3f3d0d23e44bd2a',1,'ne::GameManager::onFramebufferSizeChanged()'],['../classne_1_1GameInstance.html#a9cdb73a250e0af9c3ff2ce94ee020efc',1,'ne::GameInstance::onFramebufferSizeChanged()'],['../classne_1_1Window.html#a8d02d41e2da8983f74a643ece8621871',1,'ne::Window::onFramebufferSizeChanged()'],['../classne_1_1Renderer.html#ad5e9d40f1b603f016147f8788a6e0a6f',1,'ne::Renderer::onFramebufferSizeChanged()']]], + ['onframebuffersizechangedderived_20',['onFramebufferSizeChangedDerived',['../classne_1_1VulkanRenderer.html#ac51bddb238dd93b8653067c0c64fbc5a',1,'ne::VulkanRenderer::onFramebufferSizeChangedDerived()'],['../classne_1_1Renderer.html#a57afd8ef14e2dfbae2391aaed4c57bb5',1,'ne::Renderer::onFramebufferSizeChangedDerived()']]], + ['ongamestarted_21',['onGameStarted',['../classne_1_1EditorGameInstance.html#aab5506f886d0c72aa81728232ef7b3b5',1,'ne::EditorGameInstance::onGameStarted()'],['../classne_1_1GameManager.html#a931e5d8a4cf3a264eb43f0e15536dc3c',1,'ne::GameManager::onGameStarted()'],['../classne_1_1GameInstance.html#a62e6067d69f8f01c946e80d52397daee',1,'ne::GameInstance::onGameStarted()']]], + ['onindexnolongerused_22',['onIndexNoLongerUsed',['../classne_1_1ShaderArrayIndexManager.html#afde4c4dbea1109ddd21798382e0d0986',1,'ne::ShaderArrayIndexManager']]], + ['oninputactionevent_23',['onInputActionEvent',['../classne_1_1GameInstance.html#a5bb595a982b111f00b5dea23e9ea44ed',1,'ne::GameInstance::onInputActionEvent()'],['../classne_1_1Node.html#a1f3b44b31513e2898d2caf35ea63d4e7',1,'ne::Node::onInputActionEvent()']]], + ['oninputaxisevent_24',['onInputAxisEvent',['../classne_1_1GameInstance.html#a1d0adc50099fca125b3ed972056ee671',1,'ne::GameInstance::onInputAxisEvent()'],['../classne_1_1Node.html#aa48b63d44d51992c3c594b08d3e1c0a9',1,'ne::Node::onInputAxisEvent()']]], + ['onkeyboardinput_25',['onKeyboardInput',['../classne_1_1Window.html#ab001e8adc478d9786e8c7e6d1709e7ff',1,'ne::Window::onKeyboardInput()'],['../classne_1_1GameManager.html#aec5a9ce9430796de2ec8e28ae516d711',1,'ne::GameManager::onKeyboardInput()'],['../classne_1_1GameInstance.html#ac32b017f37cf76d44c6b2b4b9e36bf82',1,'ne::GameInstance::onKeyboardInput()']]], + ['onlightsincamerafrustumculled_26',['onLightsInCameraFrustumCulled',['../classne_1_1ShaderLightArray.html#a47d9f5f3d4916adb095077b84dccad0a',1,'ne::ShaderLightArray']]], + ['onmaterialnolongerusingpipeline_27',['onMaterialNoLongerUsingPipeline',['../classne_1_1Pipeline.html#a4d95882c56e6ede0aee77a75f08248ad',1,'ne::Pipeline']]], + ['onmaterialusingpipeline_28',['onMaterialUsingPipeline',['../classne_1_1Pipeline.html#a1feae2550cfd0920cc0a22723edf64ed',1,'ne::Pipeline']]], + ['onmeshdatachanged_29',['onMeshDataChanged',['../classne_1_1MeshNode.html#add9e3c1ba2be62c9f806bb2b7eae78e2',1,'ne::MeshNode']]], + ['onmeshnodedespawning_30',['onMeshNodeDespawning',['../classne_1_1Material.html#af1e3a6939b7619716744eadb2a7a0723',1,'ne::Material']]], + ['onmeshnodespawning_31',['onMeshNodeSpawning',['../classne_1_1Material.html#a1f72b3b50221e37374506f7a4c344422',1,'ne::Material']]], + ['onmouseinput_32',['onMouseInput',['../classne_1_1Window.html#accadf60c741561964cd91838ba82d474',1,'ne::Window::onMouseInput()'],['../classne_1_1GameInstance.html#a5eb8ba7f0f5601466ae1d5a6b59bd572',1,'ne::GameInstance::onMouseInput()'],['../classne_1_1GameManager.html#a4b5d9b861fa1952061473c9169a9b8ae',1,'ne::GameManager::onMouseInput()']]], + ['onmousemove_33',['onMouseMove',['../classne_1_1EditorCameraNode.html#acdb9469dbdb548e0e91712f1d93454ec',1,'ne::EditorCameraNode::onMouseMove()'],['../classne_1_1GameManager.html#a69b185684744bbc5afdf2bed15c2f15c',1,'ne::GameManager::onMouseMove()'],['../classne_1_1GameInstance.html#aca8684ad4a68801bc651b2b31b1031ad',1,'ne::GameInstance::onMouseMove()'],['../classne_1_1Node.html#a5b5e6b60ec1e1fdf9d1b7d6cb8387b74',1,'ne::Node::onMouseMove()'],['../classne_1_1Window.html#a1f8a227df2096eefb218e8c2c68acedc',1,'ne::Window::onMouseMove()']]], + ['onmousescrollmove_34',['onMouseScrollMove',['../classne_1_1GameManager.html#a4c537ba44301a3852283dda7ecce9b9f',1,'ne::GameManager::onMouseScrollMove()'],['../classne_1_1GameInstance.html#abf5324001b1c186881e7f12232cef62f',1,'ne::GameInstance::onMouseScrollMove()'],['../classne_1_1Node.html#adde53f1d8c88385fb8ba338820e77c8e',1,'ne::Node::onMouseScrollMove()'],['../classne_1_1Window.html#a99b6040442ba87e17aeb117f2a365797',1,'ne::Window::onMouseScrollMove()']]], + ['onnewgraphicspipelinecreated_35',['onNewGraphicsPipelineCreated',['../classne_1_1GlobalShaderResourceBindingManager.html#adc0ace29a033866d9e1b17783d41c743',1,'ne::GlobalShaderResourceBindingManager']]], + ['onnodedespawned_36',['onNodeDespawned',['../classne_1_1World.html#a70d4265d9cbfa1e28d57fda64f1e1160',1,'ne::World']]], + ['onnodespawned_37',['onNodeSpawned',['../classne_1_1World.html#a6fcb9bd531158d9c614bb48c22578d13',1,'ne::World']]], + ['onownernodedespawning_38',['onOwnerNodeDespawning',['../classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a9499a271ec2c8a036ac69e2ed823efc0',1,'ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>::onOwnerNodeDespawning()'],['../classne_1_1NodeNotificationBroadcasterBase.html#a7611d4137442ac68f7aec218bf4fabf0',1,'ne::NodeNotificationBroadcasterBase::onOwnerNodeDespawning()']]], + ['onownernodespawning_39',['onOwnerNodeSpawning',['../classne_1_1NodeNotificationBroadcaster_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#aee8f02eeef7b435dd2eccee5585010ee',1,'ne::NodeNotificationBroadcaster< FunctionReturnType(FunctionArgs...)>::onOwnerNodeSpawning()'],['../classne_1_1NodeNotificationBroadcasterBase.html#a920dedca17f4cb14b814942becc9e2a7',1,'ne::NodeNotificationBroadcasterBase::onOwnerNodeSpawning()']]], + ['onpipelinenolongerusedbycomputeshaderinterface_40',['onPipelineNoLongerUsedByComputeShaderInterface',['../structne_1_1PipelineManager_1_1ComputePipelines.html#a2f9930204f6088be4d835502902924fb',1,'ne::PipelineManager::ComputePipelines::onPipelineNoLongerUsedByComputeShaderInterface()'],['../classne_1_1PipelineManager.html#a02cd88db58b6607098cddc41bf855501',1,'ne::PipelineManager::onPipelineNoLongerUsedByComputeShaderInterface(const std::string &sComputeShaderName, ComputeShaderInterface *pComputeShaderInterface)']]], + ['onpipelinenolongerusedbymaterial_41',['onPipelineNoLongerUsedByMaterial',['../classne_1_1PipelineManager.html#a07b8c5604d6e9f1c44ec925bdee27400',1,'ne::PipelineManager']]], + ['onpointlightarraysizechanged_42',['onPointLightArraySizeChanged',['../classne_1_1LightingShaderResourceManager.html#a7a5a986f0975a902eb20de4a35cda99f',1,'ne::LightingShaderResourceManager']]], + ['onpointlightsinfrustumculled_43',['onPointLightsInFrustumCulled',['../classne_1_1LightingShaderResourceManager.html#a93a002ef3c7c24a2056853ca92a71aa1',1,'ne::LightingShaderResourceManager']]], + ['onrendersettingschanged_44',['onRenderSettingsChanged',['../classne_1_1Renderer.html#ab8810b0fa64b1de6124922d4c1ee49b2',1,'ne::Renderer']]], + ['onrendersettingschangedderived_45',['onRenderSettingsChangedDerived',['../classne_1_1VulkanRenderer.html#a044c441415996a4391768b740384871b',1,'ne::VulkanRenderer::onRenderSettingsChangedDerived()'],['../classne_1_1Renderer.html#a3cc725e2a6ccfaac9ea4ef4fa2201a66',1,'ne::Renderer::onRenderSettingsChangedDerived()'],['../classne_1_1DirectXRenderer.html#a9af23af0c2fd8c0584de1cfaeae27fa0',1,'ne::DirectXRenderer::onRenderSettingsChangedDerived()']]], + ['onshadowmaparrayindexchanged_46',['onShadowMapArrayIndexChanged',['../classne_1_1DirectionalLightNode.html#a653214da27f58550d0844ec942cc8dd1',1,'ne::DirectionalLightNode::onShadowMapArrayIndexChanged()'],['../classne_1_1PointLightNode.html#ad10da8aac0cdcf757127d75e444c1438',1,'ne::PointLightNode::onShadowMapArrayIndexChanged()'],['../classne_1_1SpotlightNode.html#a801eab825445391194df24cbc406eaea',1,'ne::SpotlightNode::onShadowMapArrayIndexChanged()']]], + ['onshadowmaphandlebeingdestroyed_47',['onShadowMapHandleBeingDestroyed',['../classne_1_1ShadowMapManager.html#a45d27940a9c5513d4f71fff46459859d',1,'ne::ShadowMapManager']]], + ['onspawnedmeshnodechangedvisibility_48',['onSpawnedMeshNodeChangedVisibility',['../classne_1_1Material.html#a05f4e887a2fda3da02f4875eb60053ec',1,'ne::Material']]], + ['onspawnedmeshnoderecreatedindexbuffer_49',['onSpawnedMeshNodeRecreatedIndexBuffer',['../classne_1_1Material.html#a5dca5d184d1079603751789ef76edc62',1,'ne::Material']]], + ['onspawnedmeshnodestartedusingmaterial_50',['onSpawnedMeshNodeStartedUsingMaterial',['../classne_1_1Material.html#a39df1e140902043bd534cb3279d3d665',1,'ne::Material']]], + ['onspawnedmeshnodestoppedusingmaterial_51',['onSpawnedMeshNodeStoppedUsingMaterial',['../classne_1_1Material.html#a6ba3060536452524bb96ae049d050289',1,'ne::Material']]], + ['onspawnednodechangediscalledeveryframe_52',['onSpawnedNodeChangedIsCalledEveryFrame',['../classne_1_1World.html#adffa9f0f840b51ca3e05a5ebf5067ad2',1,'ne::World']]], + ['onspawnednodechangedisreceivinginput_53',['onSpawnedNodeChangedIsReceivingInput',['../classne_1_1World.html#a96c17a4d0a568b2f3e0b3d94577642c5',1,'ne::World']]], + ['onspawning_54',['onSpawning',['../classne_1_1SpatialNode.html#a3af79f3d46f46b70636d67b70dab12d2',1,'ne::SpatialNode::onSpawning()'],['../classne_1_1Node.html#abe2310c20abcd99331c4d6b104e1e919',1,'ne::Node::onSpawning()'],['../classne_1_1MeshNode.html#a7127ccc4f7cc62ab5f74583920ee93ee',1,'ne::MeshNode::onSpawning()'],['../classne_1_1SpotlightNode.html#ab2281ef335d11edcd87971e8ed3d92c1',1,'ne::SpotlightNode::onSpawning()'],['../classne_1_1PointLightNode.html#afd427bdca3170f84fe6d924e9ba9cde4',1,'ne::PointLightNode::onSpawning()'],['../classne_1_1DirectionalLightNode.html#a87cfb909061175db5c5ec9a0fc9ef899',1,'ne::DirectionalLightNode::onSpawning()'],['../classne_1_1EnvironmentNode.html#a095bb987abc897af274a2e9627fadfac',1,'ne::EnvironmentNode::onSpawning()']]], + ['onspotlightarraysizechanged_55',['onSpotlightArraySizeChanged',['../classne_1_1LightingShaderResourceManager.html#abf744efd85681e0590d4581730f3b702',1,'ne::LightingShaderResourceManager']]], + ['onspotlightsinfrustumculled_56',['onSpotlightsInFrustumCulled',['../classne_1_1LightingShaderResourceManager.html#a3adfd30e58ca0880081b4041487c6834',1,'ne::LightingShaderResourceManager']]], + ['onsrvrangeindiceschanged_57',['onSrvRangeIndicesChanged',['../classne_1_1DirectXShadowMapArrayIndexManager.html#a66afc43c6e8e3b971e7b3ed121ad67fd',1,'ne::DirectXShadowMapArrayIndexManager']]], + ['onstartedupdatingshaderdata_58',['onStartedUpdatingShaderData',['../classne_1_1DirectionalLightNode.html#ad043b455bc7abf31320709162ae142c8',1,'ne::DirectionalLightNode::onStartedUpdatingShaderData()'],['../classne_1_1PointLightNode.html#a1b060b0a223f693622b823ed594b8def',1,'ne::PointLightNode::onStartedUpdatingShaderData()'],['../classne_1_1SpotlightNode.html#a4285419429a5fcc7780f0e09b455c447',1,'ne::SpotlightNode::onStartedUpdatingShaderData()']]], + ['onstartedupdatingshadermeshconstants_59',['onStartedUpdatingShaderMeshConstants',['../classne_1_1MeshNode.html#aaf06c681193ebc25c067b64e05f52871',1,'ne::MeshNode']]], + ['onstartedupdatingshadowpassdata_60',['onStartedUpdatingShadowPassData',['../classne_1_1SpotlightNode.html#a67a7965a252a4dc0c0930a7b55119449',1,'ne::SpotlightNode::onStartedUpdatingShadowPassData()'],['../classne_1_1PointLightNode.html#a84d4950085cf3b039992aea9d9cc3240',1,'ne::PointLightNode::onStartedUpdatingShadowPassData()'],['../classne_1_1DirectionalLightNode.html#ae0e66d75c49bd454ad92df320dbb3f69',1,'ne::DirectionalLightNode::onStartedUpdatingShadowPassData()']]], + ['onstartupdatingshadermeshconstants_61',['onStartUpdatingShaderMeshConstants',['../classne_1_1Material.html#a82c2abbb8c345c5a1b2e121a20f68175',1,'ne::Material']]], + ['ontickfinished_62',['onTickFinished',['../classne_1_1GameManager.html#ae14d13f580407fd93ae6102feca95d2e',1,'ne::GameManager']]], + ['onwindowclose_63',['onWindowClose',['../classne_1_1GameManager.html#aa9ecb6c766e07be4246e04bcac82105b',1,'ne::GameManager::onWindowClose()'],['../classne_1_1GameInstance.html#a861a62cb1bd5094ebdaac417f3196675',1,'ne::GameInstance::onWindowClose()']]], + ['onwindowfocuschanged_64',['onWindowFocusChanged',['../classne_1_1GameManager.html#aa77a6095cd5ae41739e27292aba1188c',1,'ne::GameManager::onWindowFocusChanged()'],['../classne_1_1GameInstance.html#a1e67e6624e5b7bb018f14a5adfa6db97',1,'ne::GameInstance::onWindowFocusChanged()'],['../classne_1_1Window.html#a933186503eae3cc20268ee85f7fd34cb',1,'ne::Window::onWindowFocusChanged()']]], + ['onworldlocationrotationscalechanged_65',['onWorldLocationRotationScaleChanged',['../classne_1_1CameraNode.html#a9410fa3451b9d607ebdf851819cd03d2',1,'ne::CameraNode::onWorldLocationRotationScaleChanged()'],['../classne_1_1DirectionalLightNode.html#a50234389cb5b38e47185e56802605663',1,'ne::DirectionalLightNode::onWorldLocationRotationScaleChanged()'],['../classne_1_1PointLightNode.html#a6fa982be86ccabacc971b188f2632e14',1,'ne::PointLightNode::onWorldLocationRotationScaleChanged()'],['../classne_1_1SpotlightNode.html#a9c37f11e3e4aae66a316dd7c5a2bc477',1,'ne::SpotlightNode::onWorldLocationRotationScaleChanged()'],['../classne_1_1MeshNode.html#a74b459c63b02d3f8fa269ba17d93bf5e',1,'ne::MeshNode::onWorldLocationRotationScaleChanged()'],['../classne_1_1SpatialNode.html#adf62ec87e7faeebafc764a2b71ae92b6',1,'ne::SpatialNode::onWorldLocationRotationScaleChanged()']]], + ['open_66',['open',['../classne_1_1OpenLinkInBrowser.html#a2f61d7c3eaf81e78929f92580c0f825b',1,'ne::OpenLinkInBrowser']]], + ['openfile_67',['openFile',['../classne_1_1FileDialog.html#a79abaf46ef916fb7081d2423043dae62',1,'ne::FileDialog']]], + ['operator_28_29_68',['operator()',['../classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a31f9bd6d7315b69f7e5c011a8014a950',1,'ne::NodeFunction< FunctionReturnType(FunctionArgs...)>::operator()()'],['../structne_1_1ShaderMacroSetHash.html#a4815a726b90ee095a39c2a94a81abf25',1,'ne::ShaderMacroSetHash::operator()()'],['../structne_1_1StdStringHash.html#a5a854cc2fd1b60a0049cda104f8a6176',1,'ne::StdStringHash::operator()(std::string_view text) const'],['../structne_1_1StdStringHash.html#aa60fb6f2c93bd3a3a017aae599085f7b',1,'ne::StdStringHash::operator()(const char *pText) const'],['../structne_1_1StdStringHash.html#ab51ae54295e6977de46ffccb58e83b46',1,'ne::StdStringHash::operator()(std::string const &text) const']]], + ['operator_2d_3e_69',['operator->',['../classne_1_1PipelineSharedPtr.html#a9647bc1bead502ad18894eac5d3cd9a0',1,'ne::PipelineSharedPtr']]], + ['operator_3d_70',['operator=',['../classne_1_1ShaderTextureResourceBindingUniquePtr.html#a5ab423bb76406c1a80252b38a69e1e3a',1,'ne::ShaderTextureResourceBindingUniquePtr::operator=()'],['../structne_1_1ShaderDescription.html#a88c0dc416c3fc67b6d71d4885ac07b56',1,'ne::ShaderDescription::operator=(ShaderDescription &&other) noexcept=default'],['../structne_1_1ShaderDescription.html#a4c6b3dc0063e415cf7e87892dc3af060',1,'ne::ShaderDescription::operator=(const ShaderDescription &other) noexcept=default'],['../classne_1_1Error.html#a63a045f839a8f4ca8ff2f27a6091f50e',1,'ne::Error::operator=(Error &&other)=default'],['../classne_1_1Error.html#a8a54db84023f6eba40e154d8b1e14da5',1,'ne::Error::operator=(const Error &other)=default'],['../classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#acbe83245d48b31c4f2f469232d3c22f0',1,'ne::NodeFunction< FunctionReturnType(FunctionArgs...)>::operator=(NodeFunction &&other) noexcept=default'],['../classne_1_1NodeFunction_3_01FunctionReturnType_07FunctionArgs_8_8_8_08_4.html#a953a1c7bb9e06c5f4d6ae592e591b290',1,'ne::NodeFunction< FunctionReturnType(FunctionArgs...)>::operator=(const NodeFunction &other)=default'],['../structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.html#a782622b173c3a0c6f7814f4a6c9eac93',1,'ne::GlslShaderTextureResourceBinding::PushConstantIndices::operator=()'],['../classne_1_1ShaderCpuWriteResourceBindingUniquePtr.html#a6b00d6c1679e69af2d486ae8ed73ffae',1,'ne::ShaderCpuWriteResourceBindingUniquePtr::operator=()'],['../classne_1_1MeshData.html#a418a80ab6715461b00a6eeedf2a2ac9e',1,'ne::MeshData::operator=(MeshData &&) noexcept=default'],['../classne_1_1MeshData.html#a71016ccc08f15529205709f6579736a5',1,'ne::MeshData::operator=(const MeshData &)=default'],['../structne_1_1MeshVertex.html#a9d31336ab8a0cb1c4f16e4dd2b2f418f',1,'ne::MeshVertex::operator=(MeshVertex &&) noexcept=default'],['../structne_1_1MeshVertex.html#aebeda482bc16965a3e31d56721f009eb',1,'ne::MeshVertex::operator=(const MeshVertex &)=default'],['../classne_1_1PipelineSharedPtr.html#a6013388ffb7c2fb1305e4fe987a05d17',1,'ne::PipelineSharedPtr::operator=()']]], + ['operator_3d_3d_71',['operator==',['../structne_1_1MeshVertex.html#ae2a97b7a3946b917de1df6ef8c68f9c0',1,'ne::MeshVertex']]], + ['overwriteactionevent_72',['overwriteActionEvent',['../classne_1_1InputManager.html#a77e07d518b2254d0047bf687c3576278',1,'ne::InputManager']]], + ['overwriteaxisevent_73',['overwriteAxisEvent',['../classne_1_1InputManager.html#a4b31620ebf6c39e6872c0e4f3d6c858e',1,'ne::InputManager']]] +]; diff --git a/search/functions_e.js b/search/functions_e.js new file mode 100644 index 000000000..91955e86f --- /dev/null +++ b/search/functions_e.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['performselfvalidation_0',['performSelfValidation',['../classne_1_1ShaderManager.html#a09beef22fcf157936533b5b7a8e62ac6',1,'ne::ShaderManager']]], + ['pickphysicaldevice_1',['pickPhysicalDevice',['../classne_1_1VulkanRenderer.html#a2d17f56242f67d07950c3fb0169d9ffa',1,'ne::VulkanRenderer']]], + ['pickswapchainextent_2',['pickSwapChainExtent',['../classne_1_1VulkanRenderer.html#ac673f06adac6b10b0d9773de553873d9',1,'ne::VulkanRenderer']]], + ['pickvideoadapter_3',['pickVideoAdapter',['../classne_1_1DirectXRenderer.html#a4eb291cb6cafdeca3db5965dc26c9e33',1,'ne::DirectXRenderer']]], + ['pipeline_4',['Pipeline',['../classne_1_1Pipeline.html#a090092de0749ed546b5c8a86320cdf22',1,'ne::Pipeline']]], + ['pipelineconfiguration_5',['PipelineConfiguration',['../classne_1_1PipelineConfiguration.html#ae5da1f4416a498503bf23fe527a53fda',1,'ne::PipelineConfiguration']]], + ['pipelinemanager_6',['PipelineManager',['../classne_1_1PipelineManager.html#a977740ed73ba168c3b95c7b9e828c9a0',1,'ne::PipelineManager']]], + ['pipelineshaderconstantsmanager_7',['PipelineShaderConstantsManager',['../classne_1_1PipelineShaderConstantsManager.html#a8717bae2912b1cc6d06ba3cabca25c75',1,'ne::PipelineShaderConstantsManager']]], + ['pipelinesharedptr_8',['PipelineSharedPtr',['../classne_1_1PipelineSharedPtr.html#a9e81b443572b3e20891b50d879a9ad7b',1,'ne::PipelineSharedPtr::PipelineSharedPtr(std::shared_ptr< Pipeline > pPipeline, Material *pMaterialThatUsesPipeline)'],['../classne_1_1PipelineSharedPtr.html#aea9c5204fb8342cac5cfaf3cbda1d1b0',1,'ne::PipelineSharedPtr::PipelineSharedPtr(std::shared_ptr< Pipeline > pPipeline, ComputeShaderInterface *pComputeShaderThatUsesPipeline)'],['../classne_1_1PipelineSharedPtr.html#aaa822938861b9c81ecd08a59816f1843',1,'ne::PipelineSharedPtr::PipelineSharedPtr()=default'],['../classne_1_1PipelineSharedPtr.html#ad3765321a3f62e21230b550cee0ab53a',1,'ne::PipelineSharedPtr::PipelineSharedPtr(PipelineSharedPtr &&other) noexcept']]], + ['plane_9',['Plane',['../structne_1_1Plane.html#a881feb6e40da8448afc677727afca309',1,'ne::Plane::Plane()=default'],['../structne_1_1Plane.html#a236eff35739ac0fccf59cde96b950fa2',1,'ne::Plane::Plane(const glm::vec3 &normal, const glm::vec3 &location)']]], + ['pointlightnode_10',['PointLightNode',['../classne_1_1PointLightNode.html#aa60d8ae6408b46c1b33acf221dbd2d8b',1,'ne::PointLightNode']]], + ['preparefordrawingnextframe_11',['prepareForDrawingNextFrame',['../classne_1_1DirectXRenderer.html#ac56bdae6b7900b59a326be6d8d2fd6aa',1,'ne::DirectXRenderer::prepareForDrawingNextFrame()'],['../classne_1_1VulkanRenderer.html#aedbedcc94ae5a0149ef01122c578fd68',1,'ne::VulkanRenderer::prepareForDrawingNextFrame()'],['../classne_1_1Renderer.html#ad9e4ce85fd3babdb2f5ca69a1d76b54d',1,'ne::Renderer::prepareForDrawingNextFrame()']]], + ['preparerendertargetfornextframe_12',['prepareRenderTargetForNextFrame',['../classne_1_1VulkanRenderer.html#aeda042e148260fe4693b728775a91740',1,'ne::VulkanRenderer::prepareRenderTargetForNextFrame()'],['../classne_1_1Renderer.html#a1104f4c7c926b7ac3d2cc13c0e8fa799',1,'ne::Renderer::prepareRenderTargetForNextFrame()']]], + ['present_13',['present',['../classne_1_1DirectXRenderer.html#a8c62f8526ed5b4b208aef449ea712e5b',1,'ne::DirectXRenderer::present()'],['../classne_1_1VulkanRenderer.html#a1a5e581efdf77fd3e927a5a58d4f89da',1,'ne::VulkanRenderer::present()'],['../classne_1_1Renderer.html#a3408af535d34d9cf26ccac19975d6403',1,'ne::Renderer::present()']]], + ['processevents_14',['processEvents',['../classne_1_1Window.html#aa56c65358fd0067acccd567cd4910673',1,'ne::Window']]], + ['processrootconstantsiffound_15',['processRootConstantsIfFound',['../classne_1_1RootSignatureGenerator.html#a504d256c86cf6332c136748885352e4c',1,'ne::RootSignatureGenerator']]], + ['processtasksthread_16',['processTasksThread',['../classne_1_1ThreadPool.html#ac2742a67849bfeb63ddbc87b82f0ba90',1,'ne::ThreadPool']]], + ['pushconstantindices_17',['PushConstantIndices',['../structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.html#ae5e51e0f28158d2fda3e890b79b52879',1,'ne::GlslShaderTextureResourceBinding::PushConstantIndices::PushConstantIndices()=default'],['../structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.html#af822c9b567edb5e660729fc798fb157b',1,'ne::GlslShaderTextureResourceBinding::PushConstantIndices::PushConstantIndices(size_t iPushConstantIndex, std::unique_ptr< ShaderArrayIndex > pShaderArrayIndex)'],['../structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.html#a5cd95151df6d8a464ffa7f5baf3611cd',1,'ne::GlslShaderTextureResourceBinding::PushConstantIndices::PushConstantIndices(PushConstantIndices &&)=default']]] +]; diff --git a/search/functions_f.js b/search/functions_f.js new file mode 100644 index 000000000..368500930 --- /dev/null +++ b/search/functions_f.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['queryqueuefamilyindices_0',['queryQueueFamilyIndices',['../classne_1_1VulkanRenderer.html#a1676cee71601db7969ab9993bfedb590',1,'ne::VulkanRenderer']]], + ['queryswapchainsupportdetails_1',['querySwapChainSupportDetails',['../classne_1_1VulkanRenderer.html#a47b70ab9bf361cd01f7ccac5545766ba',1,'ne::VulkanRenderer']]], + ['question_2',['question',['../classne_1_1MessageBox.html#ab51f9da3d779cbebab192bd3a4075c38',1,'ne::MessageBox']]], + ['queuecomputeshaderinterfaceforexecution_3',['queueComputeShaderInterfaceForExecution',['../structne_1_1PipelineManager_1_1ComputePipelines.html#a47b30ad3c21f330ec96bff388f125a0f',1,'ne::PipelineManager::ComputePipelines']]], + ['queueexecutionfornextframe_4',['queueExecutionForNextFrame',['../structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html#a8ec144ca0cd2b77c55111c65682ff341',1,'ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader']]], + ['queuegarbagecollection_5',['queueGarbageCollection',['../classne_1_1GameManager.html#aa62d3ab261690c22e6db96cd39cc3704',1,'ne::GameManager::queueGarbageCollection()'],['../classne_1_1GameInstance.html#a3b2b339ea3f41d6d71a36ce7c47acb5e',1,'ne::GameInstance::queueGarbageCollection()']]], + ['queueshaderexecutionongraphicsqueue_6',['queueShaderExecutionOnGraphicsQueue',['../structne_1_1PipelineManager_1_1ComputePipelines.html#a48c2bea4e0194599be414e8050f08282',1,'ne::PipelineManager::ComputePipelines']]] +]; diff --git a/search/mag.svg b/search/mag.svg new file mode 100644 index 000000000..9f46b301e --- /dev/null +++ b/search/mag.svg @@ -0,0 +1,37 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/search/mag_d.svg b/search/mag_d.svg new file mode 100644 index 000000000..b9a814c78 --- /dev/null +++ b/search/mag_d.svg @@ -0,0 +1,37 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/search/mag_sel.svg b/search/mag_sel.svg new file mode 100644 index 000000000..03626f64a --- /dev/null +++ b/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/search/mag_seld.svg b/search/mag_seld.svg new file mode 100644 index 000000000..6e720dcc9 --- /dev/null +++ b/search/mag_seld.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/search/pages_0.js b/search/pages_0.js new file mode 100644 index 000000000..bdc2fc7cb --- /dev/null +++ b/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['manual_0',['Manual',['../index.html',1,'']]] +]; diff --git a/search/related_0.js b/search/related_0.js new file mode 100644 index 000000000..f79a1d473 --- /dev/null +++ b/search/related_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['shaderarrayindexmanager_0',['ShaderArrayIndexManager',['../classne_1_1ShaderArrayIndex.html#a62a2c2b3a9c83678fa0df2b314424763',1,'ne::ShaderArrayIndex']]] +]; diff --git a/search/search.css b/search/search.css new file mode 100644 index 000000000..19f76f9d5 --- /dev/null +++ b/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/search/search.js b/search/search.js new file mode 100644 index 000000000..e103a2621 --- /dev/null +++ b/search/search.js @@ -0,0 +1,816 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + searchResults.Search(searchValue); + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/splitbard.png b/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/structne_1_1AABB-members.html b/structne_1_1AABB-members.html new file mode 100644 index 000000000..5cae0d836 --- /dev/null +++ b/structne_1_1AABB-members.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::AABB Member List
    +
    +
    + +

    This is the complete list of members for ne::AABB, including all inherited members.

    + + + + + +
    centerne::AABB
    createFromVertices(std::vector< MeshVertex > *pVertices)ne::AABBstatic
    extentsne::AABB
    isBehindPlane(const Plane &plane) constne::AABB
    +
    + + + + diff --git a/structne_1_1AABB.html b/structne_1_1AABB.html new file mode 100644 index 000000000..be389beb1 --- /dev/null +++ b/structne_1_1AABB.html @@ -0,0 +1,231 @@ + + + + + + + +Nameless Engine: ne::AABB Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    + +

    #include <AABB.h>

    + + + + +

    +Public Member Functions

    bool isBehindPlane (const Plane &plane) const
     
    + + + +

    +Static Public Member Functions

    static AABB createFromVertices (std::vector< MeshVertex > *pVertices)
     
    + + + + + +

    +Public Attributes

    glm::vec3 center = glm::vec3(0.0F, 0.0F, 0.0F)
     
    glm::vec3 extents = glm::vec3(0.0F, 0.0F, 0.0F)
     
    +

    Detailed Description

    +

    Axis-aligned bounding box.

    +

    Member Function Documentation

    + +

    ◆ createFromVertices()

    + +
    +
    + + + + + +
    + + + + + + + + +
    AABB ne::AABB::createFromVertices (std::vector< MeshVertex > * pVertices)
    +
    +static
    +
    +

    Creates a new AABB from the specified vertices.

    +
    Parameters
    + + +
    pVerticesVertices to process.
    +
    +
    +
    Returns
    Created AABB.
    + +
    +
    + +

    ◆ isBehindPlane()

    + +
    +
    + + + + + + + + +
    bool ne::AABB::isBehindPlane (const Planeplane) const
    +
    +

    Tells if the AABB is fully behind (inside the negative halfspace of) a plane.

    +
    Parameters
    + + +
    planePlane to test.
    +
    +
    +
    Returns
    true if the AABB is fully behind the plane, false if intersects or in front of it.
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ center

    + +
    +
    + + + + +
    glm::vec3 ne::AABB::center = glm::vec3(0.0F, 0.0F, 0.0F)
    +
    +

    Center of the AABB in model space.

    + +
    +
    + +

    ◆ extents

    + +
    +
    + + + + +
    glm::vec3 ne::AABB::extents = glm::vec3(0.0F, 0.0F, 0.0F)
    +
    +

    Half extension (size) of the AABB in model space.

    + +
    +
    +
    The documentation for this struct was generated from the following files:
      +
    • src/engine_lib/public/misc/shapes/AABB.h
    • +
    • src/engine_lib/private/misc/shapes/AABB.cpp
    • +
    +
    +
    + + + + diff --git a/structne_1_1AABB.js b/structne_1_1AABB.js new file mode 100644 index 000000000..d91bc258f --- /dev/null +++ b/structne_1_1AABB.js @@ -0,0 +1,7 @@ +var structne_1_1AABB = +[ + [ "createFromVertices", "structne_1_1AABB.html#af95248f9c0353559e76cc616e75313c0", null ], + [ "isBehindPlane", "structne_1_1AABB.html#a3fd60491f0d015bed761d2ee99f4d2e4", null ], + [ "center", "structne_1_1AABB.html#a08f000f8058ba4783db946ceeda3478d", null ], + [ "extents", "structne_1_1AABB.html#a25e01d5088b3452762466a8e4c805c31", null ] +]; \ No newline at end of file diff --git a/structne_1_1CalledEveryFrameNodes-members.html b/structne_1_1CalledEveryFrameNodes-members.html new file mode 100644 index 000000000..aa591fbcc --- /dev/null +++ b/structne_1_1CalledEveryFrameNodes-members.html @@ -0,0 +1,115 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::CalledEveryFrameNodes Member List
    +
    +
    + +

    This is the complete list of members for ne::CalledEveryFrameNodes, including all inherited members.

    + + + + + + +
    CalledEveryFrameNodes()=default (defined in ne::CalledEveryFrameNodes)ne::CalledEveryFrameNodes
    CalledEveryFrameNodes(const CalledEveryFrameNodes &)=delete (defined in ne::CalledEveryFrameNodes)ne::CalledEveryFrameNodes
    mtxFirstTickGroupne::CalledEveryFrameNodes
    mtxSecondTickGroupne::CalledEveryFrameNodes
    operator=(const CalledEveryFrameNodes &)=delete (defined in ne::CalledEveryFrameNodes)ne::CalledEveryFrameNodes
    +
    + + + + diff --git a/structne_1_1CalledEveryFrameNodes.html b/structne_1_1CalledEveryFrameNodes.html new file mode 100644 index 000000000..84ce1b798 --- /dev/null +++ b/structne_1_1CalledEveryFrameNodes.html @@ -0,0 +1,167 @@ + + + + + + + +Nameless Engine: ne::CalledEveryFrameNodes Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::CalledEveryFrameNodes Struct Reference
    +
    +
    + +

    #include <World.h>

    + + + + + + +

    +Public Member Functions

    CalledEveryFrameNodes (const CalledEveryFrameNodes &)=delete
     
    +CalledEveryFrameNodesoperator= (const CalledEveryFrameNodes &)=delete
     
    + + + + + +

    +Public Attributes

    std::pair< std::recursive_mutex, std::unordered_set< Node * > > mtxFirstTickGroup
     
    std::pair< std::recursive_mutex, std::unordered_set< Node * > > mtxSecondTickGroup
     
    +

    Detailed Description

    +

    Represents arrays of nodes that are marked as "should be called every frame".

    +

    Member Data Documentation

    + +

    ◆ mtxFirstTickGroup

    + +
    +
    + + + + +
    std::pair<std::recursive_mutex, std::unordered_set<Node*> > ne::CalledEveryFrameNodes::mtxFirstTickGroup
    +
    +

    Nodes of the first tick group.

    + +
    +
    + +

    ◆ mtxSecondTickGroup

    + +
    +
    + + + + +
    std::pair<std::recursive_mutex, std::unordered_set<Node*> > ne::CalledEveryFrameNodes::mtxSecondTickGroup
    +
    +

    Nodes of the second tick group.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • src/engine_lib/private/game/World.h
    • +
    +
    +
    + + + + diff --git a/structne_1_1CalledEveryFrameNodes.js b/structne_1_1CalledEveryFrameNodes.js new file mode 100644 index 000000000..9ae2725f0 --- /dev/null +++ b/structne_1_1CalledEveryFrameNodes.js @@ -0,0 +1,5 @@ +var structne_1_1CalledEveryFrameNodes = +[ + [ "mtxFirstTickGroup", "structne_1_1CalledEveryFrameNodes.html#a572be858f765b3f11cf6fa21431d53b6", null ], + [ "mtxSecondTickGroup", "structne_1_1CalledEveryFrameNodes.html#a8276f45216e91ebde6336c94fcb72ad0", null ] +]; \ No newline at end of file diff --git a/structne_1_1CameraProperties_1_1Data-members.html b/structne_1_1CameraProperties_1_1Data-members.html new file mode 100644 index 000000000..9f7df148f --- /dev/null +++ b/structne_1_1CameraProperties_1_1Data-members.html @@ -0,0 +1,117 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::CameraProperties::Data Member List
    +
    + +
    + + + + diff --git a/structne_1_1CameraProperties_1_1Data.html b/structne_1_1CameraProperties_1_1Data.html new file mode 100644 index 000000000..a8c2425b5 --- /dev/null +++ b/structne_1_1CameraProperties_1_1Data.html @@ -0,0 +1,249 @@ + + + + + + + +Nameless Engine: ne::CameraProperties::Data Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::CameraProperties::Data Struct Reference
    +
    +
    + +

    #include <CameraProperties.h>

    + + + + + + + + +

    +Classes

    struct  OrbitalModeData
     
    struct  ProjectionData
     
    struct  ViewData
     
    + + + + + + + + + + + +

    +Public Attributes

    ViewData viewData
     
    ProjectionData projectionData
     
    Frustum frustum
     
    CameraMode currentCameraMode = CameraMode::FREE
     
    OrbitalModeData orbitalModeData
     
    + + + +

    +Static Public Attributes

    static const float minimumClipPlaneDistance = 0.00001F
     
    +

    Detailed Description

    +

    Stores internal data.

    +

    Member Data Documentation

    + +

    ◆ currentCameraMode

    + +
    +
    + + + + +
    CameraMode ne::CameraProperties::Data::currentCameraMode = CameraMode::FREE
    +
    +

    Defines how camera can move and rotate.

    + +
    +
    + +

    ◆ frustum

    + +
    +
    + + + + +
    Frustum ne::CameraProperties::Data::frustum
    +
    +

    Camera's frustum.

    + +
    +
    + +

    ◆ minimumClipPlaneDistance

    + +
    +
    + + + + + +
    + + + + +
    const float ne::CameraProperties::Data::minimumClipPlaneDistance = 0.00001F
    +
    +inlinestatic
    +
    +

    Minimum allowed value for near clip plane distance and far clip plane distance.

    + +
    +
    + +

    ◆ orbitalModeData

    + +
    +
    + + + + +
    OrbitalModeData ne::CameraProperties::Data::orbitalModeData
    +
    +

    Parameters used by orbital camera mode.

    + +
    +
    + +

    ◆ projectionData

    + +
    +
    + + + + +
    ProjectionData ne::CameraProperties::Data::projectionData
    +
    +

    Contains a flag the indicates whether projection matrix needs to be recalculated or not and a matrix that transforms positions from view (camera) space to 2D projection window (homogeneous clip space).

    +
    Remarks
    The bool variable is used to minimize the amount of times we recalculate projection matrix.
    + +
    +
    + +

    ◆ viewData

    + +
    +
    + + + + +
    ViewData ne::CameraProperties::Data::viewData
    +
    +

    Contains a flag the indicates whether view matrix needs to be recalculated or not and a matrix that transforms positions to view (camera) space.

    +
    Remarks
    The bool variable is used to minimize the amount of times we recalculate view matrix.
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1CameraProperties_1_1Data.js b/structne_1_1CameraProperties_1_1Data.js new file mode 100644 index 000000000..bce4a5451 --- /dev/null +++ b/structne_1_1CameraProperties_1_1Data.js @@ -0,0 +1,12 @@ +var structne_1_1CameraProperties_1_1Data = +[ + [ "OrbitalModeData", "structne_1_1CameraProperties_1_1Data_1_1OrbitalModeData.html", "structne_1_1CameraProperties_1_1Data_1_1OrbitalModeData" ], + [ "ProjectionData", "structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html", "structne_1_1CameraProperties_1_1Data_1_1ProjectionData" ], + [ "ViewData", "structne_1_1CameraProperties_1_1Data_1_1ViewData.html", "structne_1_1CameraProperties_1_1Data_1_1ViewData" ], + [ "currentCameraMode", "structne_1_1CameraProperties_1_1Data.html#ac88c2f4388238051d479ccd8af187248", null ], + [ "frustum", "structne_1_1CameraProperties_1_1Data.html#a09bb16d93d0a425ef3a3cce8b29d6e1f", null ], + [ "minimumClipPlaneDistance", "structne_1_1CameraProperties_1_1Data.html#a3c100ca604cf3b53410fe4bcc7baf971", null ], + [ "orbitalModeData", "structne_1_1CameraProperties_1_1Data.html#a17863cca37b02d1671ed97bf91bbd340", null ], + [ "projectionData", "structne_1_1CameraProperties_1_1Data.html#a248e126eabcd9b6938dbe0a7e9a61080", null ], + [ "viewData", "structne_1_1CameraProperties_1_1Data.html#a5ad01c89a78c667a7b561b392f1d926d", null ] +]; \ No newline at end of file diff --git a/structne_1_1CameraProperties_1_1Data_1_1OrbitalModeData-members.html b/structne_1_1CameraProperties_1_1Data_1_1OrbitalModeData-members.html new file mode 100644 index 000000000..c69873430 --- /dev/null +++ b/structne_1_1CameraProperties_1_1Data_1_1OrbitalModeData-members.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::CameraProperties::Data::OrbitalModeData Member List
    +
    + +
    + + + + diff --git a/structne_1_1CameraProperties_1_1Data_1_1OrbitalModeData.html b/structne_1_1CameraProperties_1_1Data_1_1OrbitalModeData.html new file mode 100644 index 000000000..d40acb873 --- /dev/null +++ b/structne_1_1CameraProperties_1_1Data_1_1OrbitalModeData.html @@ -0,0 +1,174 @@ + + + + + + + +Nameless Engine: ne::CameraProperties::Data::OrbitalModeData Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::CameraProperties::Data::OrbitalModeData Struct Reference
    +
    +
    + +

    #include <CameraProperties.h>

    + + + + + + + + +

    +Public Attributes

    float distanceToTarget = 10.0F
     
    float theta = 0.0F
     
    float phi = 0.0F
     
    +

    Detailed Description

    +

    Stores orbital mode specific data.

    +

    Member Data Documentation

    + +

    ◆ distanceToTarget

    + +
    +
    + + + + +
    float ne::CameraProperties::Data::OrbitalModeData::distanceToTarget = 10.0F
    +
    +

    Radial distance or distance from camera to target point (look target).

    + +
    +
    + +

    ◆ phi

    + +
    +
    + + + + +
    float ne::CameraProperties::Data::OrbitalModeData::phi = 0.0F
    +
    +

    Azimuthal angle (in degrees).

    + +
    +
    + +

    ◆ theta

    + +
    +
    + + + + +
    float ne::CameraProperties::Data::OrbitalModeData::theta = 0.0F
    +
    +

    Polar angle (in degrees).

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1CameraProperties_1_1Data_1_1OrbitalModeData.js b/structne_1_1CameraProperties_1_1Data_1_1OrbitalModeData.js new file mode 100644 index 000000000..c6c52727c --- /dev/null +++ b/structne_1_1CameraProperties_1_1Data_1_1OrbitalModeData.js @@ -0,0 +1,6 @@ +var structne_1_1CameraProperties_1_1Data_1_1OrbitalModeData = +[ + [ "distanceToTarget", "structne_1_1CameraProperties_1_1Data_1_1OrbitalModeData.html#aa68f686aafdf8e1d09f9b034346215a5", null ], + [ "phi", "structne_1_1CameraProperties_1_1Data_1_1OrbitalModeData.html#a312506d08512b64adfba2f02e1687f22", null ], + [ "theta", "structne_1_1CameraProperties_1_1Data_1_1OrbitalModeData.html#a271ec0280b73932fa669cb5aff2ab517", null ] +]; \ No newline at end of file diff --git a/structne_1_1CameraProperties_1_1Data_1_1ProjectionData-members.html b/structne_1_1CameraProperties_1_1Data_1_1ProjectionData-members.html new file mode 100644 index 000000000..9d5a63827 --- /dev/null +++ b/structne_1_1CameraProperties_1_1Data_1_1ProjectionData-members.html @@ -0,0 +1,121 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html b/structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html new file mode 100644 index 000000000..93fd627fc --- /dev/null +++ b/structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html @@ -0,0 +1,294 @@ + + + + + + + +Nameless Engine: ne::CameraProperties::Data::ProjectionData Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::CameraProperties::Data::ProjectionData Struct Reference
    +
    +
    + +

    #include <CameraProperties.h>

    + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    glm::mat4x4 projectionMatrix = glm::identity<glm::mat4x4>()
     
    bool bProjectionMatrixNeedsUpdate = true
     
    bool bLightGridFrustumsNeedUpdate = true
     
    float nearClipPlaneDistance = 0.3F
     
    float farClipPlaneDistance = 500.0F
     
    unsigned int iVerticalFov = 90
     
    unsigned int iRenderTargetWidth = 800
     
    unsigned int iRenderTargetHeight = 600
     
    float nearClipPlaneHeight = 0.0F
     
    float farClipPlaneHeight = 0.0F
     
    +

    Detailed Description

    +

    Stores data used for projection matrix.

    +

    Member Data Documentation

    + +

    ◆ bLightGridFrustumsNeedUpdate

    + +
    +
    + + + + +
    bool ne::CameraProperties::Data::ProjectionData::bLightGridFrustumsNeedUpdate = true
    +
    +

    Used by the renderer to track if projectionMatrix was changed or not to recalculate grid of frustums for light culling.

    +
    Remarks
    Camera only sets this value to true and only renderer is allowed to set this value to false.
    + +
    +
    + +

    ◆ bProjectionMatrixNeedsUpdate

    + +
    +
    + + + + +
    bool ne::CameraProperties::Data::ProjectionData::bProjectionMatrixNeedsUpdate = true
    +
    +

    Whether projectionMatrix needs to be recalculated or not.

    + +
    +
    + +

    ◆ farClipPlaneDistance

    + +
    +
    + + + + +
    float ne::CameraProperties::Data::ProjectionData::farClipPlaneDistance = 500.0F
    +
    +

    Distance to camera's far clip plane.

    + +
    +
    + +

    ◆ farClipPlaneHeight

    + +
    +
    + + + + +
    float ne::CameraProperties::Data::ProjectionData::farClipPlaneHeight = 0.0F
    +
    +

    Height of camera's far clip plane.

    + +
    +
    + +

    ◆ iRenderTargetHeight

    + +
    +
    + + + + +
    unsigned int ne::CameraProperties::Data::ProjectionData::iRenderTargetHeight = 600
    +
    +

    Height of the buffer we are rendering the image to.

    + +
    +
    + +

    ◆ iRenderTargetWidth

    + +
    +
    + + + + +
    unsigned int ne::CameraProperties::Data::ProjectionData::iRenderTargetWidth = 800
    +
    +

    Width of the buffer we are rendering the image to.

    + +
    +
    + +

    ◆ iVerticalFov

    + +
    +
    + + + + +
    unsigned int ne::CameraProperties::Data::ProjectionData::iVerticalFov = 90
    +
    +

    Vertical field of view.

    + +
    +
    + +

    ◆ nearClipPlaneDistance

    + +
    +
    + + + + +
    float ne::CameraProperties::Data::ProjectionData::nearClipPlaneDistance = 0.3F
    +
    +

    Distance from camera (view) space origin to camera's near clip plane.

    + +
    +
    + +

    ◆ nearClipPlaneHeight

    + +
    +
    + + + + +
    float ne::CameraProperties::Data::ProjectionData::nearClipPlaneHeight = 0.0F
    +
    +

    Height of camera's near clip plane.

    + +
    +
    + +

    ◆ projectionMatrix

    + +
    +
    + + + + +
    glm::mat4x4 ne::CameraProperties::Data::ProjectionData::projectionMatrix = glm::identity<glm::mat4x4>()
    +
    +

    Transforms positions from view (camera) space to 2D projection window (homogeneous clip space).

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1CameraProperties_1_1Data_1_1ProjectionData.js b/structne_1_1CameraProperties_1_1Data_1_1ProjectionData.js new file mode 100644 index 000000000..5adcdd0ac --- /dev/null +++ b/structne_1_1CameraProperties_1_1Data_1_1ProjectionData.js @@ -0,0 +1,13 @@ +var structne_1_1CameraProperties_1_1Data_1_1ProjectionData = +[ + [ "bLightGridFrustumsNeedUpdate", "structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html#a54c256471f5db84e9af5ce6598db0d5e", null ], + [ "bProjectionMatrixNeedsUpdate", "structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html#a1a48d82819585d5c594c3f7b4e5036ed", null ], + [ "farClipPlaneDistance", "structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html#ae7513621efc71f6002af80fef02954b2", null ], + [ "farClipPlaneHeight", "structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html#afacb311e7482c4dc320382acd580f9cc", null ], + [ "iRenderTargetHeight", "structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html#a88e8d36c0a658c32cea070aacf13cd37", null ], + [ "iRenderTargetWidth", "structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html#ad6bc8e651635d5be482760f51c343d85", null ], + [ "iVerticalFov", "structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html#ab63d3652630d8073529bc03773ddbbf0", null ], + [ "nearClipPlaneDistance", "structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html#a618597a171de8adfa110494a43250d18", null ], + [ "nearClipPlaneHeight", "structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html#a10015aa6b9050ef7082c34219b5d0b14", null ], + [ "projectionMatrix", "structne_1_1CameraProperties_1_1Data_1_1ProjectionData.html#a4b034342bfd1ac4a91d9638f96028add", null ] +]; \ No newline at end of file diff --git a/structne_1_1CameraProperties_1_1Data_1_1ViewData-members.html b/structne_1_1CameraProperties_1_1Data_1_1ViewData-members.html new file mode 100644 index 000000000..78b5ffe52 --- /dev/null +++ b/structne_1_1CameraProperties_1_1Data_1_1ViewData-members.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::CameraProperties::Data::ViewData Member List
    +
    + +
    + + + + diff --git a/structne_1_1CameraProperties_1_1Data_1_1ViewData.html b/structne_1_1CameraProperties_1_1Data_1_1ViewData.html new file mode 100644 index 000000000..67cef35f0 --- /dev/null +++ b/structne_1_1CameraProperties_1_1Data_1_1ViewData.html @@ -0,0 +1,208 @@ + + + + + + + +Nameless Engine: ne::CameraProperties::Data::ViewData Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::CameraProperties::Data::ViewData Struct Reference
    +
    +
    + +

    #include <CameraProperties.h>

    + + + + + + + + + + + + +

    +Public Attributes

    glm::mat4x4 viewMatrix = glm::identity<glm::mat4x4>()
     
    bool bViewMatrixNeedsUpdate = true
     
    glm::vec3 worldLocation = glm::vec3(0.0F, 0.0F, 0.0F)
     
    glm::vec3 worldUpDirection = Globals::WorldDirection::up
     
    glm::vec3 targetPointWorldLocation = glm::vec3(1.0F, 0.0F, 0.0F)
     
    +

    Detailed Description

    +

    Stores data used for view matrix.

    +

    Member Data Documentation

    + +

    ◆ bViewMatrixNeedsUpdate

    + +
    +
    + + + + +
    bool ne::CameraProperties::Data::ViewData::bViewMatrixNeedsUpdate = true
    +
    +

    Whether viewMatrix needs to be recalculated or not.

    + +
    +
    + +

    ◆ targetPointWorldLocation

    + +
    +
    + + + + +
    glm::vec3 ne::CameraProperties::Data::ViewData::targetPointWorldLocation = glm::vec3(1.0F, 0.0F, 0.0F)
    +
    +

    Location of the point in world space that the camera should look at.

    + +
    +
    + +

    ◆ viewMatrix

    + +
    +
    + + + + +
    glm::mat4x4 ne::CameraProperties::Data::ViewData::viewMatrix = glm::identity<glm::mat4x4>()
    +
    +

    Matrix that transforms positions to view (camera) space.

    + +
    +
    + +

    ◆ worldLocation

    + +
    +
    + + + + +
    glm::vec3 ne::CameraProperties::Data::ViewData::worldLocation = glm::vec3(0.0F, 0.0F, 0.0F)
    +
    +

    Location of the camera in world space.

    + +
    +
    + +

    ◆ worldUpDirection

    + +
    +
    + + + + +
    glm::vec3 ne::CameraProperties::Data::ViewData::worldUpDirection = Globals::WorldDirection::up
    +
    +

    Unit vector that points in camera's current up direction in world space.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1CameraProperties_1_1Data_1_1ViewData.js b/structne_1_1CameraProperties_1_1Data_1_1ViewData.js new file mode 100644 index 000000000..b566f518f --- /dev/null +++ b/structne_1_1CameraProperties_1_1Data_1_1ViewData.js @@ -0,0 +1,8 @@ +var structne_1_1CameraProperties_1_1Data_1_1ViewData = +[ + [ "bViewMatrixNeedsUpdate", "structne_1_1CameraProperties_1_1Data_1_1ViewData.html#afa8793cfdd282b933a4da26888f98881", null ], + [ "targetPointWorldLocation", "structne_1_1CameraProperties_1_1Data_1_1ViewData.html#a832e2d267faf9fc0654f85e27d488e91", null ], + [ "viewMatrix", "structne_1_1CameraProperties_1_1Data_1_1ViewData.html#a22ad55c21da62139593d6716ff5a49ec", null ], + [ "worldLocation", "structne_1_1CameraProperties_1_1Data_1_1ViewData.html#a745d7059cc4aff387259b3f3167e8163", null ], + [ "worldUpDirection", "structne_1_1CameraProperties_1_1Data_1_1ViewData.html#a64d375d6f760e9755e2624ae234dcf01", null ] +]; \ No newline at end of file diff --git a/structne_1_1Cone-members.html b/structne_1_1Cone-members.html new file mode 100644 index 000000000..9f6a415d9 --- /dev/null +++ b/structne_1_1Cone-members.html @@ -0,0 +1,117 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::Cone Member List
    +
    +
    + +

    This is the complete list of members for ne::Cone, including all inherited members.

    + + + + + + + + +
    bottomRadiusne::Cone
    Cone()=defaultne::Cone
    Cone(const glm::vec3 &location, float height, const glm::vec3 &direction, float bottomRadius)ne::Cone
    directionne::Cone
    heightne::Cone
    isBehindPlane(const Plane &plane) constne::Cone
    locationne::Cone
    +
    + + + + diff --git a/structne_1_1Cone.html b/structne_1_1Cone.html new file mode 100644 index 000000000..44fff79db --- /dev/null +++ b/structne_1_1Cone.html @@ -0,0 +1,306 @@ + + + + + + + +Nameless Engine: ne::Cone Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::Cone Struct Reference
    +
    +
    + +

    #include <Cone.h>

    + + + + + + + + +

    +Public Member Functions

     Cone ()=default
     
     Cone (const glm::vec3 &location, float height, const glm::vec3 &direction, float bottomRadius)
     
    bool isBehindPlane (const Plane &plane) const
     
    + + + + + + + + + +

    +Public Attributes

    glm::vec3 location = glm::vec3(0.0F, 0.0F, 0.0F)
     
    float height = 1.0F
     
    glm::vec3 direction = glm::vec3(1.0F, 0.0F, 0.0F)
     
    float bottomRadius = 1.0F
     
    +

    Detailed Description

    +

    Cone shape.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Cone() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    ne::Cone::Cone ()
    +
    +default
    +
    +

    Creates uninitialized cone.

    + +
    +
    + +

    ◆ Cone() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ne::Cone::Cone (const glm::vec3 & location,
    float height,
    const glm::vec3 & direction,
    float bottomRadius 
    )
    +
    +

    Initializes the cone.

    +
    Parameters
    + + + + + +
    locationLocation of cone's tip.
    heightHeight of the cone.
    directionDirection unit vector from cone's tip.
    bottomRadiusRadius of the bottom part of the cone.
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ isBehindPlane()

    + +
    +
    + + + + + + + + +
    bool ne::Cone::isBehindPlane (const Planeplane) const
    +
    +

    Tells if the cone is fully behind (inside the negative halfspace of) a plane.

    +
    Parameters
    + + +
    planePlane to test.
    +
    +
    +
    Returns
    true if the cone is fully behind the plane, false if intersects or in front of it.
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ bottomRadius

    + +
    +
    + + + + +
    float ne::Cone::bottomRadius = 1.0F
    +
    +

    Radius of the bottom part of the cone.

    + +
    +
    + +

    ◆ direction

    + +
    +
    + + + + +
    glm::vec3 ne::Cone::direction = glm::vec3(1.0F, 0.0F, 0.0F)
    +
    +

    Direction unit vector from cone's tip.

    + +
    +
    + +

    ◆ height

    + +
    +
    + + + + +
    float ne::Cone::height = 1.0F
    +
    +

    Height of the cone.

    + +
    +
    + +

    ◆ location

    + +
    +
    + + + + +
    glm::vec3 ne::Cone::location = glm::vec3(0.0F, 0.0F, 0.0F)
    +
    +

    Location of cone's tip.

    + +
    +
    +
    The documentation for this struct was generated from the following files:
      +
    • src/engine_lib/public/misc/shapes/Cone.h
    • +
    • src/engine_lib/private/misc/shapes/Cone.cpp
    • +
    +
    +
    + + + + diff --git a/structne_1_1Cone.js b/structne_1_1Cone.js new file mode 100644 index 000000000..d6d27c10e --- /dev/null +++ b/structne_1_1Cone.js @@ -0,0 +1,10 @@ +var structne_1_1Cone = +[ + [ "Cone", "structne_1_1Cone.html#a3a452850d53f4861eb40238dd2ed99b8", null ], + [ "Cone", "structne_1_1Cone.html#ac4d1e9628959bcbe607add22c2cc464e", null ], + [ "isBehindPlane", "structne_1_1Cone.html#a8c42db27549d993b5d583d6b7bf50c82", null ], + [ "bottomRadius", "structne_1_1Cone.html#a53f093e1ec5475871b4572a955ea59bd", null ], + [ "direction", "structne_1_1Cone.html#a20f57ac20ce70ce5f4674120d860cdad", null ], + [ "height", "structne_1_1Cone.html#a6c9e3ac2ff691d5b64a0784bb8c6b9f8", null ], + [ "location", "structne_1_1Cone.html#a365be3dfbd5b16d8fe3678726285a133", null ] +]; \ No newline at end of file diff --git a/structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData-members.html b/structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData-members.html new file mode 100644 index 000000000..71104b02b --- /dev/null +++ b/structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData-members.html @@ -0,0 +1,115 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData.html b/structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData.html new file mode 100644 index 000000000..ea5eef6ab --- /dev/null +++ b/structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData.html @@ -0,0 +1,211 @@ + + + + + + + +Nameless Engine: ne::ContinuousDirectXDescriptorRange::InternalData Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::ContinuousDirectXDescriptorRange::InternalData Struct Reference
    +
    +
    + + + + + + + + + + + + +

    +Public Attributes

    std::unordered_set< DirectXDescriptor * > allocatedDescriptors
     
    std::queue< INT > noLongerUsedDescriptorIndices
     
    INT iRangeStartInHeap = -1
     
    INT iRangeCapacity = 0
     
    INT iNextFreeIndexInRange = 0
     
    +

    Detailed Description

    +

    Groups mutex guarded data.

    +

    Member Data Documentation

    + +

    ◆ allocatedDescriptors

    + +
    +
    + + + + +
    std::unordered_set<DirectXDescriptor*> ne::ContinuousDirectXDescriptorRange::InternalData::allocatedDescriptors
    +
    +

    Descriptors allocated from this range.

    +
    Remarks
    Size of this set defines range size (actually used descriptor count).
    +
    +It's safe to store raw pointers here because descriptor in its destructor will notify the range.
    + +
    +
    + +

    ◆ iNextFreeIndexInRange

    + +
    +
    + + + + +
    INT ne::ContinuousDirectXDescriptorRange::InternalData::iNextFreeIndexInRange = 0
    +
    +

    Index of the next free descriptor (relative to the range start iRangeStartInHeap) that can be used.

    +
    Remarks
    Once this value is equal to iRangeCapacity we will use noLongerUsedDescriptorIndices to see if any old descriptors were released and no longer being used.
    + +
    +
    + +

    ◆ iRangeCapacity

    + +
    +
    + + + + +
    INT ne::ContinuousDirectXDescriptorRange::InternalData::iRangeCapacity = 0
    +
    +

    Current range capacity.

    + +
    +
    + +

    ◆ iRangeStartInHeap

    + +
    +
    + + + + +
    INT ne::ContinuousDirectXDescriptorRange::InternalData::iRangeStartInHeap = -1
    +
    +

    Index of the first descriptor of this range in the heap.

    +
    Remarks
    -1 means that no space was reserved (i.e. not initialized), this is used to determine if we should call the notification callback or not.
    + +
    +
    + +

    ◆ noLongerUsedDescriptorIndices

    + +
    +
    + + + + +
    std::queue<INT> ne::ContinuousDirectXDescriptorRange::InternalData::noLongerUsedDescriptorIndices
    +
    +

    Indices (relative to heap start) of descriptors that were created but no longer being used.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData.js b/structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData.js new file mode 100644 index 000000000..2479d93e8 --- /dev/null +++ b/structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData.js @@ -0,0 +1,8 @@ +var structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData = +[ + [ "allocatedDescriptors", "structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData.html#a08a78334fe97ddb7d062fc883355c1ef", null ], + [ "iNextFreeIndexInRange", "structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData.html#af71e86eb892c26d938a2631be27cfd41", null ], + [ "iRangeCapacity", "structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData.html#a45abe00b0d9cc4e98a5aa4e843330dae", null ], + [ "iRangeStartInHeap", "structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData.html#a0fd7b807a2c65ed957ae71e4f363199f", null ], + [ "noLongerUsedDescriptorIndices", "structne_1_1ContinuousDirectXDescriptorRange_1_1InternalData.html#a6aec94b8685f66832c39811146cccb0b", null ] +]; \ No newline at end of file diff --git a/structne_1_1DescriptorConstants-members.html b/structne_1_1DescriptorConstants-members.html new file mode 100644 index 000000000..a85cd0bc5 --- /dev/null +++ b/structne_1_1DescriptorConstants-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::DescriptorConstants Member List
    +
    +
    + +

    This is the complete list of members for ne::DescriptorConstants, including all inherited members.

    + + + +
    DescriptorConstants()=delete (defined in ne::DescriptorConstants)ne::DescriptorConstants
    iBindlessTextureArrayDescriptorCountne::DescriptorConstantsstatic
    +
    + + + + diff --git a/structne_1_1DescriptorConstants.html b/structne_1_1DescriptorConstants.html new file mode 100644 index 000000000..f706bb56d --- /dev/null +++ b/structne_1_1DescriptorConstants.html @@ -0,0 +1,149 @@ + + + + + + + +Nameless Engine: ne::DescriptorConstants Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::DescriptorConstants Struct Reference
    +
    +
    + +

    #include <DescriptorConstants.hpp>

    + + + + +

    +Static Public Attributes

    static constexpr unsigned int iBindlessTextureArrayDescriptorCount = 20000
     
    +

    Detailed Description

    +

    Defines some descriptor-related constants.

    +

    Member Data Documentation

    + +

    ◆ iBindlessTextureArrayDescriptorCount

    + +
    +
    + + + + + +
    + + + + +
    constexpr unsigned int ne::DescriptorConstants::iBindlessTextureArrayDescriptorCount = 20000
    +
    +staticconstexpr
    +
    +

    Defines the maximum amount of descriptors a bindless texture array/table will have.

    +
    Remarks
    With bindless arrays/tables we generally think that there's no limit but when creating them we need to provide some value as array size so let's use this value.
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1DescriptorConstants.js b/structne_1_1DescriptorConstants.js new file mode 100644 index 000000000..c4d91fb72 --- /dev/null +++ b/structne_1_1DescriptorConstants.js @@ -0,0 +1,4 @@ +var structne_1_1DescriptorConstants = +[ + [ "iBindlessTextureArrayDescriptorCount", "structne_1_1DescriptorConstants.html#af5253005f35744b9a7703b9edaaa3b50", null ] +]; \ No newline at end of file diff --git a/structne_1_1DescriptorSetLayoutGenerator_1_1Collected-members.html b/structne_1_1DescriptorSetLayoutGenerator_1_1Collected-members.html new file mode 100644 index 000000000..19edf9cb0 --- /dev/null +++ b/structne_1_1DescriptorSetLayoutGenerator_1_1Collected-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::DescriptorSetLayoutGenerator::Collected Member List
    +
    + +
    + + + + diff --git a/structne_1_1DescriptorSetLayoutGenerator_1_1Collected.html b/structne_1_1DescriptorSetLayoutGenerator_1_1Collected.html new file mode 100644 index 000000000..cd2910c89 --- /dev/null +++ b/structne_1_1DescriptorSetLayoutGenerator_1_1Collected.html @@ -0,0 +1,166 @@ + + + + + + + +Nameless Engine: ne::DescriptorSetLayoutGenerator::Collected Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::DescriptorSetLayoutGenerator::Collected Struct Reference
    +
    +
    + +

    #include <DescriptorSetLayoutGenerator.h>

    + + + + +

    +Classes

    struct  DescriptorSetLayoutBindingInfo
     
    + + + + + +

    +Public Attributes

    std::unordered_map< uint32_t, DescriptorSetLayoutBindingInfobindingInfo
     
    std::unordered_map< std::string, size_t > pushConstantUintFieldOffsets
     
    +

    Detailed Description

    +

    Groups collected info.

    +

    Member Data Documentation

    + +

    ◆ bindingInfo

    + +
    +
    + + + + +
    std::unordered_map<uint32_t, DescriptorSetLayoutBindingInfo> ne::DescriptorSetLayoutGenerator::Collected::bindingInfo
    +
    +

    Map of descriptor set layout binding where key is binding index and value is descriptor info.

    + +
    +
    + +

    ◆ pushConstantUintFieldOffsets

    + +
    +
    + + + + +
    std::unordered_map<std::string, size_t> ne::DescriptorSetLayoutGenerator::Collected::pushConstantUintFieldOffsets
    +
    +

    Stores pairs of "name of field defined in GLSL push constants" (all with uint type) and "offset from the beginning of the push constants struct (in `uint`s not bytes)".

    +
    Remarks
    May be empty if not used.
    +
    +If a non uint fields is found an error is returned instead.
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1DescriptorSetLayoutGenerator_1_1Collected.js b/structne_1_1DescriptorSetLayoutGenerator_1_1Collected.js new file mode 100644 index 000000000..788069636 --- /dev/null +++ b/structne_1_1DescriptorSetLayoutGenerator_1_1Collected.js @@ -0,0 +1,6 @@ +var structne_1_1DescriptorSetLayoutGenerator_1_1Collected = +[ + [ "DescriptorSetLayoutBindingInfo", "structne_1_1DescriptorSetLayoutGenerator_1_1Collected_1_1DescriptorSetLayoutBindingInfo.html", "structne_1_1DescriptorSetLayoutGenerator_1_1Collected_1_1DescriptorSetLayoutBindingInfo" ], + [ "bindingInfo", "structne_1_1DescriptorSetLayoutGenerator_1_1Collected.html#a21381939697b9ab1257e0ca2ea3838e7", null ], + [ "pushConstantUintFieldOffsets", "structne_1_1DescriptorSetLayoutGenerator_1_1Collected.html#add34a66d3f766816b7379569dad2c6fb", null ] +]; \ No newline at end of file diff --git a/structne_1_1DescriptorSetLayoutGenerator_1_1Collected_1_1DescriptorSetLayoutBindingInfo-members.html b/structne_1_1DescriptorSetLayoutGenerator_1_1Collected_1_1DescriptorSetLayoutBindingInfo-members.html new file mode 100644 index 000000000..8e640c57e --- /dev/null +++ b/structne_1_1DescriptorSetLayoutGenerator_1_1Collected_1_1DescriptorSetLayoutBindingInfo-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::DescriptorSetLayoutGenerator::Collected::DescriptorSetLayoutBindingInfo Member List
    +
    + +
    + + + + diff --git a/structne_1_1DescriptorSetLayoutGenerator_1_1Collected_1_1DescriptorSetLayoutBindingInfo.html b/structne_1_1DescriptorSetLayoutGenerator_1_1Collected_1_1DescriptorSetLayoutBindingInfo.html new file mode 100644 index 000000000..94150eb76 --- /dev/null +++ b/structne_1_1DescriptorSetLayoutGenerator_1_1Collected_1_1DescriptorSetLayoutBindingInfo.html @@ -0,0 +1,157 @@ + + + + + + + +Nameless Engine: ne::DescriptorSetLayoutGenerator::Collected::DescriptorSetLayoutBindingInfo Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::DescriptorSetLayoutGenerator::Collected::DescriptorSetLayoutBindingInfo Struct Reference
    +
    +
    + +

    #include <DescriptorSetLayoutGenerator.h>

    + + + + + + +

    +Public Attributes

    GlslResourceType resourceType
     
    std::string sResourceName
     
    +

    Detailed Description

    +

    Contains information about a descriptor set layout binding.

    +

    Member Data Documentation

    + +

    ◆ resourceType

    + +
    +
    + + + + +
    GlslResourceType ne::DescriptorSetLayoutGenerator::Collected::DescriptorSetLayoutBindingInfo::resourceType
    +
    +

    Type of the shader resource.

    + +
    +
    + +

    ◆ sResourceName

    + +
    +
    + + + + +
    std::string ne::DescriptorSetLayoutGenerator::Collected::DescriptorSetLayoutBindingInfo::sResourceName
    +
    +

    Name of the resource (written in the GLSL code).

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1DescriptorSetLayoutGenerator_1_1Collected_1_1DescriptorSetLayoutBindingInfo.js b/structne_1_1DescriptorSetLayoutGenerator_1_1Collected_1_1DescriptorSetLayoutBindingInfo.js new file mode 100644 index 000000000..451c116a5 --- /dev/null +++ b/structne_1_1DescriptorSetLayoutGenerator_1_1Collected_1_1DescriptorSetLayoutBindingInfo.js @@ -0,0 +1,5 @@ +var structne_1_1DescriptorSetLayoutGenerator_1_1Collected_1_1DescriptorSetLayoutBindingInfo = +[ + [ "resourceType", "structne_1_1DescriptorSetLayoutGenerator_1_1Collected_1_1DescriptorSetLayoutBindingInfo.html#acf9ced25bc87177335a34f48f5fadb54", null ], + [ "sResourceName", "structne_1_1DescriptorSetLayoutGenerator_1_1Collected_1_1DescriptorSetLayoutBindingInfo.html#a59041cfd0262ba947ead347a73137889", null ] +]; \ No newline at end of file diff --git a/structne_1_1DescriptorSetLayoutGenerator_1_1Generated-members.html b/structne_1_1DescriptorSetLayoutGenerator_1_1Generated-members.html new file mode 100644 index 000000000..cc8f5ff1a --- /dev/null +++ b/structne_1_1DescriptorSetLayoutGenerator_1_1Generated-members.html @@ -0,0 +1,115 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structne_1_1DescriptorSetLayoutGenerator_1_1Generated.html b/structne_1_1DescriptorSetLayoutGenerator_1_1Generated.html new file mode 100644 index 000000000..ae098da1f --- /dev/null +++ b/structne_1_1DescriptorSetLayoutGenerator_1_1Generated.html @@ -0,0 +1,214 @@ + + + + + + + +Nameless Engine: ne::DescriptorSetLayoutGenerator::Generated Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::DescriptorSetLayoutGenerator::Generated Struct Reference
    +
    +
    + +

    #include <DescriptorSetLayoutGenerator.h>

    + + + + + + + + + + + + +

    +Public Attributes

    VkDescriptorSetLayout pDescriptorSetLayout = nullptr
     
    VkDescriptorPool pDescriptorPool = nullptr
     
    std::array< VkDescriptorSet, FrameResourceManager::getFrameResourceCount()> vDescriptorSets
     
    std::unordered_map< std::string, uint32_t, StdStringHash, std::equal_to<> > resourceBindings
     
    std::unordered_map< std::string, size_t > pushConstantUintFieldOffsets
     
    +

    Detailed Description

    +

    Groups generated data.

    +

    Member Data Documentation

    + +

    ◆ pDescriptorPool

    + +
    +
    + + + + +
    VkDescriptorPool ne::DescriptorSetLayoutGenerator::Generated::pDescriptorPool = nullptr
    +
    +

    Created descriptor pool.

    + +
    +
    + +

    ◆ pDescriptorSetLayout

    + +
    +
    + + + + +
    VkDescriptorSetLayout ne::DescriptorSetLayoutGenerator::Generated::pDescriptorSetLayout = nullptr
    +
    +

    Created descriptor set layout.

    + +
    +
    + +

    ◆ pushConstantUintFieldOffsets

    + +
    +
    + + + + +
    std::unordered_map<std::string, size_t> ne::DescriptorSetLayoutGenerator::Generated::pushConstantUintFieldOffsets
    +
    +

    Stores pairs of "name of field defined in GLSL push constants" (all with uint type) and "offset from the beginning of the push constants struct (in `uint`s not bytes)".

    +
    Remarks
    May be empty if not used.
    +
    +If a non uint fields is found an error is returned instead.
    + +
    +
    + +

    ◆ resourceBindings

    + +
    +
    + + + + +
    std::unordered_map<std::string, uint32_t, StdStringHash, std::equal_to<> > ne::DescriptorSetLayoutGenerator::Generated::resourceBindings
    +
    +

    Map of pairs "resource name" (from GLSL code) - "layout binding index".

    +
    Remarks
    Binding index in the map reference descriptor sets from vDescriptorSets.
    +
    +Generally used to bind/update data of some GLSL resource to a specific descriptor in a descriptor set.
    + +
    +
    + +

    ◆ vDescriptorSets

    + +
    +
    + + + + +
    std::array<VkDescriptorSet, FrameResourceManager::getFrameResourceCount()> ne::DescriptorSetLayoutGenerator::Generated::vDescriptorSets
    +
    +

    Created descriptor set per each frame resource.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1DescriptorSetLayoutGenerator_1_1Generated.js b/structne_1_1DescriptorSetLayoutGenerator_1_1Generated.js new file mode 100644 index 000000000..3ea4a4355 --- /dev/null +++ b/structne_1_1DescriptorSetLayoutGenerator_1_1Generated.js @@ -0,0 +1,8 @@ +var structne_1_1DescriptorSetLayoutGenerator_1_1Generated = +[ + [ "pDescriptorPool", "structne_1_1DescriptorSetLayoutGenerator_1_1Generated.html#afad58169aa6b81321683521be443c24f", null ], + [ "pDescriptorSetLayout", "structne_1_1DescriptorSetLayoutGenerator_1_1Generated.html#a1270167d98f2e1524e972fa27fc1efd0", null ], + [ "pushConstantUintFieldOffsets", "structne_1_1DescriptorSetLayoutGenerator_1_1Generated.html#a72f7bfdccfcc3ce31500334daa6d349a", null ], + [ "resourceBindings", "structne_1_1DescriptorSetLayoutGenerator_1_1Generated.html#a4756d619e0360fcbc85fa658afceebcc", null ], + [ "vDescriptorSets", "structne_1_1DescriptorSetLayoutGenerator_1_1Generated.html#a723bdee1cc8661e6dad2183ee9a8860c", null ] +]; \ No newline at end of file diff --git a/structne_1_1DeserializedObjectInformation-members.html b/structne_1_1DeserializedObjectInformation-members.html new file mode 100644 index 000000000..afe442c6b --- /dev/null +++ b/structne_1_1DeserializedObjectInformation-members.html @@ -0,0 +1,115 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::DeserializedObjectInformation< SmartPointer, InnerType > Member List
    +
    + +
    + + + + diff --git a/structne_1_1DeserializedObjectInformation.html b/structne_1_1DeserializedObjectInformation.html new file mode 100644 index 000000000..689ea500c --- /dev/null +++ b/structne_1_1DeserializedObjectInformation.html @@ -0,0 +1,242 @@ + + + + + + + +Nameless Engine: ne::DeserializedObjectInformation< SmartPointer, InnerType > Struct Template Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::DeserializedObjectInformation< SmartPointer, InnerType > Struct Template Reference
    +
    +
    + +

    #include <Serializable.h>

    + + + + +

    +Public Member Functions

     DeserializedObjectInformation (SmartPointer pObject, std::string sObjectUniqueId, std::unordered_map< std::string, std::string > customAttributes)
     
    + + + + + + + +

    +Public Attributes

    SmartPointer pObject
     
    std::string sObjectUniqueId
     
    std::unordered_map< std::string, std::string > customAttributes
     
    +

    Detailed Description

    +
    template<typename SmartPointer, typename InnerType = typename SmartPointer::element_type>
    +requires std::same_as<SmartPointer, sgc::GcPtr<Serializable>> || std::same_as<SmartPointer, std::unique_ptr<Serializable>>
    +struct ne::DeserializedObjectInformation< SmartPointer, InnerType >

    Information about an object that was deserialized.

    +

    Constructor & Destructor Documentation

    + +

    ◆ DeserializedObjectInformation()

    + +
    +
    +
    +template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    ne::DeserializedObjectInformation< SmartPointer, InnerType >::DeserializedObjectInformation (SmartPointer pObject,
    std::string sObjectUniqueId,
    std::unordered_map< std::string, std::string > customAttributes 
    )
    +
    +inline
    +
    +

    Initialized object information after deserialization.

    +
    Parameters
    + + + + +
    pObjectDeserialized object.
    sObjectUniqueIdObject's unique ID.
    customAttributesObject's custom attributes.
    +
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ customAttributes

    + +
    +
    +
    +template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
    + + + + +
    std::unordered_map<std::string, std::string> ne::DeserializedObjectInformation< SmartPointer, InnerType >::customAttributes
    +
    +

    Map of object attributes (custom information) that were deserialized.

    + +
    +
    + +

    ◆ pObject

    + +
    +
    +
    +template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
    + + + + +
    SmartPointer ne::DeserializedObjectInformation< SmartPointer, InnerType >::pObject
    +
    +

    Object to serialize.

    + +
    +
    + +

    ◆ sObjectUniqueId

    + +
    +
    +
    +template<typename SmartPointer , typename InnerType = typename SmartPointer::element_type>
    + + + + +
    std::string ne::DeserializedObjectInformation< SmartPointer, InnerType >::sObjectUniqueId
    +
    +

    Unique object ID.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1DeserializedObjectInformation.js b/structne_1_1DeserializedObjectInformation.js new file mode 100644 index 000000000..e6e6d2e7a --- /dev/null +++ b/structne_1_1DeserializedObjectInformation.js @@ -0,0 +1,7 @@ +var structne_1_1DeserializedObjectInformation = +[ + [ "DeserializedObjectInformation", "structne_1_1DeserializedObjectInformation.html#a406090b0706536fc4f4691e4dd83cd50", null ], + [ "customAttributes", "structne_1_1DeserializedObjectInformation.html#ac6e6cb3fd6bbdd733fcfb0099f795a37", null ], + [ "pObject", "structne_1_1DeserializedObjectInformation.html#a0ebcff6817130499f87987d83e2f9136", null ], + [ "sObjectUniqueId", "structne_1_1DeserializedObjectInformation.html#afa7aac4cb83c851a40ea466f1755dddb", null ] +]; \ No newline at end of file diff --git a/structne_1_1DirectXDescriptorHeap_1_1InternalData-members.html b/structne_1_1DirectXDescriptorHeap_1_1InternalData-members.html new file mode 100644 index 000000000..2217802ee --- /dev/null +++ b/structne_1_1DirectXDescriptorHeap_1_1InternalData-members.html @@ -0,0 +1,117 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structne_1_1DirectXDescriptorHeap_1_1InternalData.html b/structne_1_1DirectXDescriptorHeap_1_1InternalData.html new file mode 100644 index 000000000..0236bb9a0 --- /dev/null +++ b/structne_1_1DirectXDescriptorHeap_1_1InternalData.html @@ -0,0 +1,246 @@ + + + + + + + +Nameless Engine: ne::DirectXDescriptorHeap::InternalData Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::DirectXDescriptorHeap::InternalData Struct Reference
    +
    +
    + +

    #include <DirectXDescriptorHeap.h>

    + + + + + + + + + + + + + + + + +

    +Public Attributes

    ComPtr< ID3D12DescriptorHeap > pHeap
     
    std::unordered_set< ContinuousDirectXDescriptorRange * > continuousDescriptorRanges
     
    INT iHeapCapacity = 0
     
    INT iHeapSize = 0
     
    INT iNextFreeHeapIndex = 0
     
    std::queue< INT > noLongerUsedSingleDescriptorIndices
     
    std::unordered_set< DirectXDescriptor * > bindedSingleDescriptors
     
    +

    Detailed Description

    +

    Groups mutex guarded data.

    +

    Member Data Documentation

    + +

    ◆ bindedSingleDescriptors

    + +
    +
    + + + + +
    std::unordered_set<DirectXDescriptor*> ne::DirectXDescriptorHeap::InternalData::bindedSingleDescriptors
    +
    +

    Set of descriptors that use this heap (size of this set might not be equal to iHeapSize due to continuousDescriptorRanges, because this set stores single descriptors (that don't belong to a continuous range)).

    +
    Remarks
    Storing a raw pointer here because it's only used to update view if the heap was recreated (no resource ownership). Once resource is destroyed the descriptor will also be destroyed and thus it will be removed from this set.
    + +
    +
    + +

    ◆ continuousDescriptorRanges

    + +
    +
    + + + + +
    std::unordered_set<ContinuousDirectXDescriptorRange*> ne::DirectXDescriptorHeap::InternalData::continuousDescriptorRanges
    +
    +

    Descriptor ranges that were allocated in this heap.

    + +
    +
    + +

    ◆ iHeapCapacity

    + +
    +
    + + + + +
    INT ne::DirectXDescriptorHeap::InternalData::iHeapCapacity = 0
    +
    +

    Current heap capacity.

    + +
    +
    + +

    ◆ iHeapSize

    + +
    +
    + + + + +
    INT ne::DirectXDescriptorHeap::InternalData::iHeapSize = 0
    +
    +

    Current heap size (actually used size).

    +
    Remarks
    Includes capacity of ranges from continuousDescriptorRanges.
    + +
    +
    + +

    ◆ iNextFreeHeapIndex

    + +
    +
    + + + + +
    INT ne::DirectXDescriptorHeap::InternalData::iNextFreeHeapIndex = 0
    +
    +

    Index of the next free descriptor that can be used. Each created descriptor will fetch this value (to be used) and increment it.

    +
    Remarks
    Once this value is equal to iHeapCapacity we will use noLongerUsedSingleDescriptorIndices to see if any old descriptors were released and no longer being used.
    + +
    +
    + +

    ◆ noLongerUsedSingleDescriptorIndices

    + +
    +
    + + + + +
    std::queue<INT> ne::DirectXDescriptorHeap::InternalData::noLongerUsedSingleDescriptorIndices
    +
    +

    Indices of descriptors that were created but no longer being used.

    +
    Remarks
    Does not include unused descriptor indices of ranges from continuousDescriptorRanges.
    + +
    +
    + +

    ◆ pHeap

    + +
    +
    + + + + +
    ComPtr<ID3D12DescriptorHeap> ne::DirectXDescriptorHeap::InternalData::pHeap
    +
    +

    Descriptor heap.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1DirectXDescriptorHeap_1_1InternalData.js b/structne_1_1DirectXDescriptorHeap_1_1InternalData.js new file mode 100644 index 000000000..7a95f78db --- /dev/null +++ b/structne_1_1DirectXDescriptorHeap_1_1InternalData.js @@ -0,0 +1,10 @@ +var structne_1_1DirectXDescriptorHeap_1_1InternalData = +[ + [ "bindedSingleDescriptors", "structne_1_1DirectXDescriptorHeap_1_1InternalData.html#a754c7bdf9281457f5502e814fd71f3df", null ], + [ "continuousDescriptorRanges", "structne_1_1DirectXDescriptorHeap_1_1InternalData.html#a63ad9b3fd128cf07ac325997d8ae97f5", null ], + [ "iHeapCapacity", "structne_1_1DirectXDescriptorHeap_1_1InternalData.html#a98f87bc284e788556ab7835a31d8e3bc", null ], + [ "iHeapSize", "structne_1_1DirectXDescriptorHeap_1_1InternalData.html#abece015b552a01a15be81a1d39b12aec", null ], + [ "iNextFreeHeapIndex", "structne_1_1DirectXDescriptorHeap_1_1InternalData.html#a9017d6711ced81f16d4868dcc43cb568", null ], + [ "noLongerUsedSingleDescriptorIndices", "structne_1_1DirectXDescriptorHeap_1_1InternalData.html#a259415752a9e21d5dad959b15ddbab2b", null ], + [ "pHeap", "structne_1_1DirectXDescriptorHeap_1_1InternalData.html#ac0192c82b8a37823d3b75ff1c38bbf8b", null ] +]; \ No newline at end of file diff --git a/structne_1_1DirectXFrameResource-members.html b/structne_1_1DirectXFrameResource-members.html new file mode 100644 index 000000000..0cfc8088b --- /dev/null +++ b/structne_1_1DirectXFrameResource-members.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::DirectXFrameResource Member List
    +
    +
    + +

    This is the complete list of members for ne::DirectXFrameResource, including all inherited members.

    + + + + + + + +
    iFencene::DirectXFrameResource
    initialize(Renderer *pRenderer) overridene::DirectXFrameResourceprivatevirtual
    pCommandAllocatorne::DirectXFrameResource
    pFrameConstantBufferne::FrameResource
    ~DirectXFrameResource() override=default (defined in ne::DirectXFrameResource)ne::DirectXFrameResourcevirtual
    ~FrameResource()=default (defined in ne::FrameResource)ne::FrameResourcevirtual
    +
    + + + + diff --git a/structne_1_1DirectXFrameResource.html b/structne_1_1DirectXFrameResource.html new file mode 100644 index 000000000..879ab8583 --- /dev/null +++ b/structne_1_1DirectXFrameResource.html @@ -0,0 +1,213 @@ + + + + + + + +Nameless Engine: ne::DirectXFrameResource Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::DirectXFrameResource Struct Reference
    +
    +
    + +

    #include <DirectXFrameResource.h>

    +
    +Inheritance diagram for ne::DirectXFrameResource:
    +
    +
    + + +ne::FrameResource + +
    + + + + + + + + + +

    +Public Attributes

    ComPtr< ID3D12CommandAllocator > pCommandAllocator
     
    unsigned long long iFence = 0
     
    - Public Attributes inherited from ne::FrameResource
    std::unique_ptr< UploadBufferpFrameConstantBuffer
     
    + + + +

    +Private Member Functions

    virtual std::optional< Errorinitialize (Renderer *pRenderer) override
     
    +

    Detailed Description

    +

    Stores objects used by one frame.

    +

    Member Function Documentation

    + +

    ◆ initialize()

    + +
    +
    + + + + + +
    + + + + + + + + +
    std::optional< Error > ne::DirectXFrameResource::initialize (RendererpRenderer)
    +
    +overrideprivatevirtual
    +
    +

    Called by frame resource manager after a frame resource was constructed to initialize its fields.

    +
    Parameters
    + + +
    pRendererUsed renderer.
    +
    +
    +
    Returns
    Error if something went wrong.
    + +

    Implements ne::FrameResource.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ iFence

    + +
    +
    + + + + +
    unsigned long long ne::DirectXFrameResource::iFence = 0
    +
    +

    Current fence value of the resource.

    + +
    +
    + +

    ◆ pCommandAllocator

    + +
    +
    + + + + +
    ComPtr<ID3D12CommandAllocator> ne::DirectXFrameResource::pCommandAllocator
    +
    +

    Stores frame commands from command lists.

    + +
    +
    +
    The documentation for this struct was generated from the following files:
      +
    • src/engine_lib/private/render/directx/resource/DirectXFrameResource.h
    • +
    • src/engine_lib/private/render/directx/resource/DirectXFrameResource.cpp
    • +
    +
    +
    + + + + diff --git a/structne_1_1DirectXFrameResource.js b/structne_1_1DirectXFrameResource.js new file mode 100644 index 000000000..1564e6678 --- /dev/null +++ b/structne_1_1DirectXFrameResource.js @@ -0,0 +1,6 @@ +var structne_1_1DirectXFrameResource = +[ + [ "initialize", "structne_1_1DirectXFrameResource.html#a0a367f8468f93ef36c1d7679d80db721", null ], + [ "iFence", "structne_1_1DirectXFrameResource.html#a7392482ba9d0187ae8077fbd7761f6e9", null ], + [ "pCommandAllocator", "structne_1_1DirectXFrameResource.html#a5f97a3c8801e747202418a6ec9d105f7", null ] +]; \ No newline at end of file diff --git a/structne_1_1DirectXFrameResource.png b/structne_1_1DirectXFrameResource.png new file mode 100644 index 0000000000000000000000000000000000000000..f535c646b93f27f6befa297732b99880e05fe52a GIT binary patch literal 688 zcmeAS@N?(olHy`uVBq!ia0vp^OMy6mgBeKruX1$)QqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#NtWJzX3_Dj46+y_mPefX6jo z@6wBZ|Hbva6$*uzF0Ye!c-?h5af2bddS3iSoztHxHcWVOnA3aG7eyVFRi*|W_jJN(upWf(ov-tQ_ms`pC6W>Okd!w7psqSsf^VYNP%HkS( zF`L_Er}jR*yP@{(>CLs4dMh*isvn>1+P+uiq~`vJkJhJu*WUD!E|0;hT_e_2w%mH)n1{F{Fxa6Hcf0QsBn90vzGcP=%&MyB#P3u#wpG;@V zBaZbjH;5;4GT61KGW-yj#_+&7f~kQYufXB|*)xN@`q@1v$@xWiP2x|~^t6kK%6q(Z zuE(VVRi^C!=1qz5w0hnx;%W8pR#9Gsi_WByqrR4&vjTK3|628%dwXjCw6&b7yK0}r z?_KJ7dimCjjXI&XZoCY(IvrDZeqH>lt7=iKyTop8d3(0~&qv8`xyQY8^?zTuaQa)J zTFtiB$tnGt%71I^T^hK1!xrnBEoTC=Ex&v!*f#B}S+MH*AFZjOmam`Y#FzPoOp^N5 zefL~u*q)!-hVP$R*iIJppJerH>ho#ee{Y(-Xtn5i<@D+M{W6TF|IRZ1tN9Taii<8w y+IRK(cmAI+>4`hcZ!Jqzer||bHs#XgpUkzI9Z7TJmh1(lEe20lKbLh*2~7ZX2Tt|? literal 0 HcmV?d00001 diff --git a/structne_1_1DirectXPso_1_1InternalResources-members.html b/structne_1_1DirectXPso_1_1InternalResources-members.html new file mode 100644 index 000000000..39fd9cb14 --- /dev/null +++ b/structne_1_1DirectXPso_1_1InternalResources-members.html @@ -0,0 +1,117 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structne_1_1DirectXPso_1_1InternalResources.html b/structne_1_1DirectXPso_1_1InternalResources.html new file mode 100644 index 000000000..200151a2d --- /dev/null +++ b/structne_1_1DirectXPso_1_1InternalResources.html @@ -0,0 +1,248 @@ + + + + + + + +Nameless Engine: ne::DirectXPso::InternalResources Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::DirectXPso::InternalResources Struct Reference
    +
    +
    + +

    #include <DirectXPso.h>

    + + + + + + + + + + + + + + + + +

    +Public Attributes

    ComPtr< ID3D12RootSignature > pRootSignature
     
    ComPtr< ID3D12PipelineState > pPso
     
    std::unordered_map< std::string, UINT > rootParameterIndices
     
    std::array< UINT, static_cast< unsigned int >(SpecialRootParameterSlot::SIZE)> vSpecialRootParameterIndices
     
    std::unordered_map< UINT, std::array< DirectXResource *, FrameResourceManager::getFrameResourceCount()> > globalShaderResourceSrvs
     
    std::unordered_map< UINT, std::unique_ptr< ContinuousDirectXDescriptorRange > > descriptorTablesToBind
     
    bool bIsReadyForUsage = false
     
    +

    Detailed Description

    +

    Stores internal resources.

    +

    Member Data Documentation

    + +

    ◆ bIsReadyForUsage

    + +
    +
    + + + + +
    bool ne::DirectXPso::InternalResources::bIsReadyForUsage = false
    +
    +

    Whether fields of this struct are initialized or not.

    + +
    +
    + +

    ◆ descriptorTablesToBind

    + +
    +
    + + + + +
    std::unordered_map<UINT, std::unique_ptr<ContinuousDirectXDescriptorRange> > ne::DirectXPso::InternalResources::descriptorTablesToBind
    +
    +

    Stores pairs of "root parameter index" - "descriptor table (range) to bind".

    +
    Remarks
    Shader resources modify this map.
    + +
    +
    + +

    ◆ globalShaderResourceSrvs

    + +
    +
    + + + + +
    std::unordered_map< UINT, std::array<DirectXResource*, FrameResourceManager::getFrameResourceCount()> > ne::DirectXPso::InternalResources::globalShaderResourceSrvs
    +
    +

    Global bindings that should be binded as SRVs. Stores pairs of "root parameter index" - "resource to bind".

    +
    Remarks
    It's safe to store raw pointers here because the SRVs should be valid while the pipeline exists and has not re-created its internal resources (when internal resources are re-created these SRVs (resource pointers) are cleared).
    + +
    +
    + +

    ◆ pPso

    + +
    +
    + + + + +
    ComPtr<ID3D12PipelineState> ne::DirectXPso::InternalResources::pPso
    +
    +

    Created PSO.

    + +
    +
    + +

    ◆ pRootSignature

    + +
    +
    + + + + +
    ComPtr<ID3D12RootSignature> ne::DirectXPso::InternalResources::pRootSignature
    +
    +

    Root signature, used in PSO.

    + +
    +
    + +

    ◆ rootParameterIndices

    + +
    +
    + + + + +
    std::unordered_map<std::string, UINT> ne::DirectXPso::InternalResources::rootParameterIndices
    +
    +

    Root parameter indices that was used in creation of pRootSignature.

    +

    Stores pairs of shader resource name - root parameter index, allows determining which resource is binded to which root parameter index (by using resource name taken from shader file).

    + +
    +
    + +

    ◆ vSpecialRootParameterIndices

    + +
    +
    + + + + +
    std::array<UINT, static_cast<unsigned int>(SpecialRootParameterSlot::SIZE)> ne::DirectXPso::InternalResources::vSpecialRootParameterIndices
    +
    +

    Stores indices of some non-user specified root parameters. Duplicates some root parameters and their indices from rootParameterIndices but only stored some special non-user specified root parameter indices.

    +
    Remarks
    Generally used for fast access (without doing a find in the map) to some root parameter indices.
    +
    +Example usage: iRootParameterIndex = vIndices[Slot::FRAME_DATA].
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • src/engine_lib/private/render/directx/pipeline/DirectXPso.h
    • +
    +
    +
    + + + + diff --git a/structne_1_1DirectXPso_1_1InternalResources.js b/structne_1_1DirectXPso_1_1InternalResources.js new file mode 100644 index 000000000..812f8a9b2 --- /dev/null +++ b/structne_1_1DirectXPso_1_1InternalResources.js @@ -0,0 +1,10 @@ +var structne_1_1DirectXPso_1_1InternalResources = +[ + [ "bIsReadyForUsage", "structne_1_1DirectXPso_1_1InternalResources.html#a2dcec7913790fd0388415801a77206af", null ], + [ "descriptorTablesToBind", "structne_1_1DirectXPso_1_1InternalResources.html#abc78273021854a8153a689aafae979a4", null ], + [ "globalShaderResourceSrvs", "structne_1_1DirectXPso_1_1InternalResources.html#ae8adbef06ce07fa05d1dedd5c79a875a", null ], + [ "pPso", "structne_1_1DirectXPso_1_1InternalResources.html#af04a5d4d7add6de9ec77c22e2bb0aaef", null ], + [ "pRootSignature", "structne_1_1DirectXPso_1_1InternalResources.html#ae88c73106434bd6edb7d08f493e67765", null ], + [ "rootParameterIndices", "structne_1_1DirectXPso_1_1InternalResources.html#ac4bca338beefcd67377d8fa20b7f044e", null ], + [ "vSpecialRootParameterIndices", "structne_1_1DirectXPso_1_1InternalResources.html#aa31f750b4e95af1bea415b4cc02bf47d", null ] +]; \ No newline at end of file diff --git a/structne_1_1DirectXResource_1_1DescriptorsSameType-members.html b/structne_1_1DirectXResource_1_1DescriptorsSameType-members.html new file mode 100644 index 000000000..8182752c2 --- /dev/null +++ b/structne_1_1DirectXResource_1_1DescriptorsSameType-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::DirectXResource::DescriptorsSameType Member List
    +
    + +
    + + + + diff --git a/structne_1_1DirectXResource_1_1DescriptorsSameType.html b/structne_1_1DirectXResource_1_1DescriptorsSameType.html new file mode 100644 index 000000000..d49695f20 --- /dev/null +++ b/structne_1_1DirectXResource_1_1DescriptorsSameType.html @@ -0,0 +1,155 @@ + + + + + + + +Nameless Engine: ne::DirectXResource::DescriptorsSameType Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::DirectXResource::DescriptorsSameType Struct Reference
    +
    +
    + + + + + + +

    +Public Attributes

    std::unique_ptr< DirectXDescriptorpResource
     
    std::array< std::unique_ptr< DirectXDescriptor >, 6 > vCubemapFaces
     
    +

    Detailed Description

    +

    Groups descriptors of the same type (only SRVs or DSVs, etc.) that point to different parts of the resource.

    +

    Member Data Documentation

    + +

    ◆ pResource

    + +
    +
    + + + + +
    std::unique_ptr<DirectXDescriptor> ne::DirectXResource::DescriptorsSameType::pResource
    +
    +

    Descriptor that references the entire resource.

    + +
    +
    + +

    ◆ vCubemapFaces

    + +
    +
    + + + + +
    std::array<std::unique_ptr<DirectXDescriptor>, 6> ne::DirectXResource::DescriptorsSameType::vCubemapFaces
    +
    +

    If the resource is a cubemap (otherwise descriptors here will be nullptr), descriptors here will reference specific cubemap faces.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1DirectXResource_1_1DescriptorsSameType.js b/structne_1_1DirectXResource_1_1DescriptorsSameType.js new file mode 100644 index 000000000..42e36bd59 --- /dev/null +++ b/structne_1_1DirectXResource_1_1DescriptorsSameType.js @@ -0,0 +1,5 @@ +var structne_1_1DirectXResource_1_1DescriptorsSameType = +[ + [ "pResource", "structne_1_1DirectXResource_1_1DescriptorsSameType.html#a3dafe197c9f2e9296276fcab24ac93ba", null ], + [ "vCubemapFaces", "structne_1_1DirectXResource_1_1DescriptorsSameType.html#abac667d3fd7d57b82fbd3e9b1bf4afb2", null ] +]; \ No newline at end of file diff --git a/structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData-members.html b/structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData-members.html new file mode 100644 index 000000000..1aa55543c --- /dev/null +++ b/structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData-members.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData.html b/structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData.html new file mode 100644 index 000000000..5ef12c732 --- /dev/null +++ b/structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData.html @@ -0,0 +1,206 @@ + + + + + + + +Nameless Engine: ne::DirectionalLightNode::DirecionalLightShaderData Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::DirectionalLightNode::DirecionalLightShaderData Struct Reference
    +
    +
    + + + + + + + + + + + + +

    +Public Attributes

    glm::mat4 viewProjectionMatrix = glm::identity<glm::mat4>()
     
    glm::vec4 direction = glm::vec4(0.0F, 0.0F, 0.0F, 0.0F)
     
    glm::vec4 color = glm::vec4(1.0F, 1.0F, 1.0F, 1.0F)
     
    float intensity = 1.0F
     
    unsigned int iShadowMapIndex = 0
     
    +

    Detailed Description

    +

    Data that will be directly copied into shaders.

    +

    Member Data Documentation

    + +

    ◆ color

    + +
    +
    + + + + +
    glm::vec4 ne::DirectionalLightNode::DirecionalLightShaderData::color = glm::vec4(1.0F, 1.0F, 1.0F, 1.0F)
    +
    +

    Light color. 4th component is not used.

    + +
    +
    + +

    ◆ direction

    + +
    +
    + + + + +
    glm::vec4 ne::DirectionalLightNode::DirecionalLightShaderData::direction = glm::vec4(0.0F, 0.0F, 0.0F, 0.0F)
    +
    +

    Light forward unit vector (direction). 4th component is not used.

    + +
    +
    + +

    ◆ intensity

    + +
    +
    + + + + +
    float ne::DirectionalLightNode::DirecionalLightShaderData::intensity = 1.0F
    +
    +

    Light intensity.

    + +
    +
    + +

    ◆ iShadowMapIndex

    + +
    +
    + + + + +
    unsigned int ne::DirectionalLightNode::DirecionalLightShaderData::iShadowMapIndex = 0
    +
    +

    Index in the directional shadow map array where shadow map of this light source is stored.

    + +
    +
    + +

    ◆ viewProjectionMatrix

    + +
    +
    + + + + +
    glm::mat4 ne::DirectionalLightNode::DirecionalLightShaderData::viewProjectionMatrix = glm::identity<glm::mat4>()
    +
    +

    Matrix that transforms data (such as positions) to clip (projection) space of the light source (used for shadow mapping).

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData.js b/structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData.js new file mode 100644 index 000000000..11611520e --- /dev/null +++ b/structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData.js @@ -0,0 +1,8 @@ +var structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData = +[ + [ "color", "structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData.html#aeb77c6c69bfde6ebd32043eccc54948e", null ], + [ "direction", "structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData.html#a7d83b206320f0a85f11ea7240463d1ca", null ], + [ "intensity", "structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData.html#adabadbd17ddbe14ed22dc6efd55a7cd9", null ], + [ "iShadowMapIndex", "structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData.html#a5c4d435ecb2e80fae4f1c916f6519375", null ], + [ "viewProjectionMatrix", "structne_1_1DirectionalLightNode_1_1DirecionalLightShaderData.html#aad16e66fb292cc9fbadcb590c42d1efb", null ] +]; \ No newline at end of file diff --git a/structne_1_1DirectionalLightNode_1_1ShaderData-members.html b/structne_1_1DirectionalLightNode_1_1ShaderData-members.html new file mode 100644 index 000000000..fe2b96c63 --- /dev/null +++ b/structne_1_1DirectionalLightNode_1_1ShaderData-members.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::DirectionalLightNode::ShaderData Member List
    +
    + +
    + + + + diff --git a/structne_1_1DirectionalLightNode_1_1ShaderData.html b/structne_1_1DirectionalLightNode_1_1ShaderData.html new file mode 100644 index 000000000..55333525b --- /dev/null +++ b/structne_1_1DirectionalLightNode_1_1ShaderData.html @@ -0,0 +1,178 @@ + + + + + + + +Nameless Engine: ne::DirectionalLightNode::ShaderData Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::DirectionalLightNode::ShaderData Struct Reference
    +
    +
    + + + + +

    +Classes

    struct  ShadowPassDataGroup
     
    + + + + + + + +

    +Public Attributes

    std::unique_ptr< ShaderLightArraySlotpDirectionalLightArraySlot
     
    ShadowPassDataGroup shadowPassData
     
    DirecionalLightShaderData shaderData
     
    +

    Detailed Description

    +

    Groups data related to shaders.

    +

    Member Data Documentation

    + +

    ◆ pDirectionalLightArraySlot

    + +
    +
    + + + + +
    std::unique_ptr<ShaderLightArraySlot> ne::DirectionalLightNode::ShaderData::pDirectionalLightArraySlot
    +
    +

    Slot in the array with data of all spawned directional lights.

    + +
    +
    + +

    ◆ shaderData

    + +
    +
    + + + + +
    DirecionalLightShaderData ne::DirectionalLightNode::ShaderData::shaderData
    +
    +

    Groups data that will be directly copied to the GPU resource.

    + +
    +
    + +

    ◆ shadowPassData

    + +
    +
    + + + + +
    ShadowPassDataGroup ne::DirectionalLightNode::ShaderData::shadowPassData
    +
    +

    Groups data used in shadow pass.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1DirectionalLightNode_1_1ShaderData.js b/structne_1_1DirectionalLightNode_1_1ShaderData.js new file mode 100644 index 000000000..9fd15f2a4 --- /dev/null +++ b/structne_1_1DirectionalLightNode_1_1ShaderData.js @@ -0,0 +1,7 @@ +var structne_1_1DirectionalLightNode_1_1ShaderData = +[ + [ "ShadowPassDataGroup", "structne_1_1DirectionalLightNode_1_1ShaderData_1_1ShadowPassDataGroup.html", "structne_1_1DirectionalLightNode_1_1ShaderData_1_1ShadowPassDataGroup" ], + [ "pDirectionalLightArraySlot", "structne_1_1DirectionalLightNode_1_1ShaderData.html#a0efaed56b6baf4995a9931868d756b74", null ], + [ "shaderData", "structne_1_1DirectionalLightNode_1_1ShaderData.html#abcf30e42761f882c2a22a60a867ef501", null ], + [ "shadowPassData", "structne_1_1DirectionalLightNode_1_1ShaderData.html#a4882f0fc4adf2a96edcac155ce718fb4", null ] +]; \ No newline at end of file diff --git a/structne_1_1DirectionalLightNode_1_1ShaderData_1_1ShadowPassDataGroup-members.html b/structne_1_1DirectionalLightNode_1_1ShaderData_1_1ShadowPassDataGroup-members.html new file mode 100644 index 000000000..e160b5e42 --- /dev/null +++ b/structne_1_1DirectionalLightNode_1_1ShaderData_1_1ShadowPassDataGroup-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::DirectionalLightNode::ShaderData::ShadowPassDataGroup Member List
    +
    + +
    + + + + diff --git a/structne_1_1DirectionalLightNode_1_1ShaderData_1_1ShadowPassDataGroup.html b/structne_1_1DirectionalLightNode_1_1ShaderData_1_1ShadowPassDataGroup.html new file mode 100644 index 000000000..26fb1bdb6 --- /dev/null +++ b/structne_1_1DirectionalLightNode_1_1ShaderData_1_1ShadowPassDataGroup.html @@ -0,0 +1,157 @@ + + + + + + + +Nameless Engine: ne::DirectionalLightNode::ShaderData::ShadowPassDataGroup Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::DirectionalLightNode::ShaderData::ShadowPassDataGroup Struct Reference
    +
    +
    + +

    #include <DirectionalLightNode.h>

    + + + + + + +

    +Public Attributes

    std::unique_ptr< ShaderLightArraySlotpSlot
     
    ShadowPassLightShaderInfo shaderData
     
    +

    Detailed Description

    +

    Groups used in shadow pass.

    +

    Member Data Documentation

    + +

    ◆ pSlot

    + +
    +
    + + + + +
    std::unique_ptr<ShaderLightArraySlot> ne::DirectionalLightNode::ShaderData::ShadowPassDataGroup::pSlot
    +
    +

    Slot to store shaderData.

    + +
    +
    + +

    ◆ shaderData

    + +
    +
    + + + + +
    ShadowPassLightShaderInfo ne::DirectionalLightNode::ShaderData::ShadowPassDataGroup::shaderData
    +
    +

    Data to copy to shaders.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1DirectionalLightNode_1_1ShaderData_1_1ShadowPassDataGroup.js b/structne_1_1DirectionalLightNode_1_1ShaderData_1_1ShadowPassDataGroup.js new file mode 100644 index 000000000..b97e6f86f --- /dev/null +++ b/structne_1_1DirectionalLightNode_1_1ShaderData_1_1ShadowPassDataGroup.js @@ -0,0 +1,5 @@ +var structne_1_1DirectionalLightNode_1_1ShaderData_1_1ShadowPassDataGroup = +[ + [ "pSlot", "structne_1_1DirectionalLightNode_1_1ShaderData_1_1ShadowPassDataGroup.html#a2d905787e18f04939b36627ea92ec3be", null ], + [ "shaderData", "structne_1_1DirectionalLightNode_1_1ShaderData_1_1ShadowPassDataGroup.html#a681eee0b2b196163e5ff75024ef8a72d", null ] +]; \ No newline at end of file diff --git a/structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources-members.html b/structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources-members.html new file mode 100644 index 000000000..fbbd3448c --- /dev/null +++ b/structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources-members.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources.html b/structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources.html new file mode 100644 index 000000000..074d0492b --- /dev/null +++ b/structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources.html @@ -0,0 +1,209 @@ + + + + + + + +Nameless Engine: ne::DynamicCpuWriteShaderResourceArray::InternalResources Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::DynamicCpuWriteShaderResourceArray::InternalResources Struct Reference
    +
    +
    + +

    #include <DynamicCpuWriteShaderResourceArray.h>

    + + + + + + + + + + + + +

    +Public Attributes

    std::unique_ptr< UploadBufferpUploadBuffer = nullptr
     
    size_t iCapacity = 0
     
    size_t iNextFreeArrayIndex = 0
     
    std::queue< size_t > noLongerUsedArrayIndices
     
    std::unordered_set< DynamicCpuWriteShaderResourceArraySlot * > activeSlots
     
    +

    Detailed Description

    +

    Groups mutex-guarded internal resources.

    +

    Member Data Documentation

    + +

    ◆ activeSlots

    + +
    +
    + + + + +
    std::unordered_set<DynamicCpuWriteShaderResourceArraySlot*> ne::DynamicCpuWriteShaderResourceArray::InternalResources::activeSlots
    +
    +

    Set of slots that were inserted (size of this set is the actual number of elements in the array (smaller or equal to iCapacity)).

    +

    Storing a raw pointer here is safe because it's only used to update slot's index if the array was resized. Before the slot is destroyed it will be automatically removed from this set (see slot's destructor).

    + +
    +
    + +

    ◆ iCapacity

    + +
    +
    + + + + +
    size_t ne::DynamicCpuWriteShaderResourceArray::InternalResources::iCapacity = 0
    +
    +

    The maximum number of elements that could be added to the array without expanding (recreating with a bigger size) the GPU buffer.

    + +
    +
    + +

    ◆ iNextFreeArrayIndex

    + +
    +
    + + + + +
    size_t ne::DynamicCpuWriteShaderResourceArray::InternalResources::iNextFreeArrayIndex = 0
    +
    +

    Index of the next free place in the array. Each new element inserted in the array will fetch this value (to be used) and increment it. Once this value is equal to iCapacity we will use noLongerUsedArrayIndices to see if any old indices are no longer being used.

    + +
    +
    + +

    ◆ noLongerUsedArrayIndices

    + +
    +
    + + + + +
    std::queue<size_t> ne::DynamicCpuWriteShaderResourceArray::InternalResources::noLongerUsedArrayIndices
    +
    +

    Indices in the array that were previously used but now unused.

    + +
    +
    + +

    ◆ pUploadBuffer

    + +
    +
    + + + + +
    std::unique_ptr<UploadBuffer> ne::DynamicCpuWriteShaderResourceArray::InternalResources::pUploadBuffer = nullptr
    +
    +

    CPU visible GPU buffer that stores all elements.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources.js b/structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources.js new file mode 100644 index 000000000..645c72420 --- /dev/null +++ b/structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources.js @@ -0,0 +1,8 @@ +var structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources = +[ + [ "activeSlots", "structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources.html#af4c78cf673a2f6d523816c5e6485c83a", null ], + [ "iCapacity", "structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources.html#ac562105c0188204a1644a9893e2e5a9b", null ], + [ "iNextFreeArrayIndex", "structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources.html#a5abefba5750f5c69221041c592037b17", null ], + [ "noLongerUsedArrayIndices", "structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources.html#ab18686fe27601abdce1d7828288028ac", null ], + [ "pUploadBuffer", "structne_1_1DynamicCpuWriteShaderResourceArray_1_1InternalResources.html#ac4fb48be7e95f9c5e44b02dcda29f4b0", null ] +]; \ No newline at end of file diff --git a/structne_1_1EditorGameInstance_1_1EditorGcPointers-members.html b/structne_1_1EditorGameInstance_1_1EditorGcPointers-members.html new file mode 100644 index 000000000..c6d254bb4 --- /dev/null +++ b/structne_1_1EditorGameInstance_1_1EditorGcPointers-members.html @@ -0,0 +1,111 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::EditorGameInstance::EditorGcPointers Member List
    +
    +
    + +

    This is the complete list of members for ne::EditorGameInstance::EditorGcPointers, including all inherited members.

    + + +
    pCameraNodene::EditorGameInstance::EditorGcPointers
    +
    + + + + diff --git a/structne_1_1EditorGameInstance_1_1EditorGcPointers.html b/structne_1_1EditorGameInstance_1_1EditorGcPointers.html new file mode 100644 index 000000000..0267d5862 --- /dev/null +++ b/structne_1_1EditorGameInstance_1_1EditorGcPointers.html @@ -0,0 +1,138 @@ + + + + + + + +Nameless Engine: ne::EditorGameInstance::EditorGcPointers Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::EditorGameInstance::EditorGcPointers Struct Reference
    +
    +
    + + + + +

    +Public Attributes

    sgc::GcPtr< EditorCameraNodepCameraNode
     
    +

    Detailed Description

    +

    Groups all GC pointers that the editor holds.

    +

    Member Data Documentation

    + +

    ◆ pCameraNode

    + +
    +
    + + + + +
    sgc::GcPtr<EditorCameraNode> ne::EditorGameInstance::EditorGcPointers::pCameraNode
    +
    +

    Camera used in the editor.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1EditorGameInstance_1_1EditorGcPointers.js b/structne_1_1EditorGameInstance_1_1EditorGcPointers.js new file mode 100644 index 000000000..35e44666c --- /dev/null +++ b/structne_1_1EditorGameInstance_1_1EditorGcPointers.js @@ -0,0 +1,4 @@ +var structne_1_1EditorGameInstance_1_1EditorGcPointers = +[ + [ "pCameraNode", "structne_1_1EditorGameInstance_1_1EditorGcPointers.html#a738523e377f942f0839be557e8c70edd", null ] +]; \ No newline at end of file diff --git a/structne_1_1EditorInputEventIds-members.html b/structne_1_1EditorInputEventIds-members.html new file mode 100644 index 000000000..878532223 --- /dev/null +++ b/structne_1_1EditorInputEventIds-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::EditorInputEventIds Member List
    +
    +
    + +

    This is the complete list of members for ne::EditorInputEventIds, including all inherited members.

    + + + +
    Action enum namene::EditorInputEventIds
    Axis enum namene::EditorInputEventIds
    +
    + + + + diff --git a/structne_1_1EditorInputEventIds.html b/structne_1_1EditorInputEventIds.html new file mode 100644 index 000000000..2fe3f7870 --- /dev/null +++ b/structne_1_1EditorInputEventIds.html @@ -0,0 +1,179 @@ + + + + + + + +Nameless Engine: ne::EditorInputEventIds Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::EditorInputEventIds Struct Reference
    +
    +
    + +

    #include <EditorInputEventIds.hpp>

    + + + + + + +

    +Public Types

    enum class  Action : unsigned int { CAPTURE_MOUSE_CURSOR = 0 +, INCREASE_CAMERA_SPEED +, DECREASE_CAMERA_SPEED + }
     
    enum class  Axis : unsigned int { MOVE_CAMERA_FORWARD = 0 +, MOVE_CAMERA_RIGHT +, MOVE_CAMERA_UP + }
     
    +

    Detailed Description

    +

    Stores unique IDs of input events.

    +

    Member Enumeration Documentation

    + +

    ◆ Action

    + +
    +
    + + + + + +
    + + + + +
    enum class ne::EditorInputEventIds::Action : unsigned int
    +
    +strong
    +
    +

    Groups action events.

    + +
    +
    + +

    ◆ Axis

    + +
    +
    + + + + + +
    + + + + +
    enum class ne::EditorInputEventIds::Axis : unsigned int
    +
    +strong
    +
    +

    Groups axis events.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1EditorInputEventIds.js b/structne_1_1EditorInputEventIds.js new file mode 100644 index 000000000..9c3e986f0 --- /dev/null +++ b/structne_1_1EditorInputEventIds.js @@ -0,0 +1,13 @@ +var structne_1_1EditorInputEventIds = +[ + [ "Action", "structne_1_1EditorInputEventIds.html#a543624b702b3ac523a37ef02f84337f3", [ + [ "CAPTURE_MOUSE_CURSOR", "structne_1_1EditorInputEventIds.html#a543624b702b3ac523a37ef02f84337f3aa907d72f9c7624facdc0015a7bc1ea50", null ], + [ "INCREASE_CAMERA_SPEED", "structne_1_1EditorInputEventIds.html#a543624b702b3ac523a37ef02f84337f3af76c6ab3ad17667cf485c033e163c75f", null ], + [ "DECREASE_CAMERA_SPEED", "structne_1_1EditorInputEventIds.html#a543624b702b3ac523a37ef02f84337f3a7bf519adced772c19b35260ad00018c6", null ] + ] ], + [ "Axis", "structne_1_1EditorInputEventIds.html#a55fc78df9952c8365e8db8143ebc0391", [ + [ "MOVE_CAMERA_FORWARD", "structne_1_1EditorInputEventIds.html#a55fc78df9952c8365e8db8143ebc0391a8797520cd56f2135fa2223e73c9390cd", null ], + [ "MOVE_CAMERA_RIGHT", "structne_1_1EditorInputEventIds.html#a55fc78df9952c8365e8db8143ebc0391a0bd4bbbc5c8aa8716afb74772d04361d", null ], + [ "MOVE_CAMERA_UP", "structne_1_1EditorInputEventIds.html#a55fc78df9952c8365e8db8143ebc0391ae44c942cef5d98e62389a53228cad3db", null ] + ] ] +]; \ No newline at end of file diff --git a/structne_1_1EngineShaderConstantMacros_1_1ForwardPlus-members.html b/structne_1_1EngineShaderConstantMacros_1_1ForwardPlus-members.html new file mode 100644 index 000000000..457f17bdf --- /dev/null +++ b/structne_1_1EngineShaderConstantMacros_1_1ForwardPlus-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::EngineShaderConstantMacros::ForwardPlus Member List
    +
    + +
    + + + + diff --git a/structne_1_1EngineShaderConstantMacros_1_1ForwardPlus.html b/structne_1_1EngineShaderConstantMacros_1_1ForwardPlus.html new file mode 100644 index 000000000..b1af89972 --- /dev/null +++ b/structne_1_1EngineShaderConstantMacros_1_1ForwardPlus.html @@ -0,0 +1,213 @@ + + + + + + + +Nameless Engine: ne::EngineShaderConstantMacros::ForwardPlus Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::EngineShaderConstantMacros::ForwardPlus Struct Reference
    +
    +
    + +

    #include <EngineShaderConstantMacros.hpp>

    + + + + + + + + +

    +Static Public Member Functions

    static std::pair< std::string, std::string > getLightGridTileSizeMacro ()
     
    static std::pair< std::string, std::string > getAveragePointLightNumPerTileMacro ()
     
    static std::pair< std::string, std::string > getAverageSpotLightNumPerTileMacro ()
     
    +

    Detailed Description

    +

    Groups macros used in Forward+ light culling process.

    +

    Member Function Documentation

    + +

    ◆ getAveragePointLightNumPerTileMacro()

    + +
    +
    + + + + + +
    + + + + + + + +
    static std::pair< std::string, std::string > ne::EngineShaderConstantMacros::ForwardPlus::getAveragePointLightNumPerTileMacro ()
    +
    +inlinestatic
    +
    +

    Returns a macro that defines how much point lights are expected to be on average in a light grid tile for opaque or transparent geometry.

    +
    Remarks
    Determines the size for light lists and light grid.
    +
    Returns
    Macro name and macro value.
    + +
    +
    + +

    ◆ getAverageSpotLightNumPerTileMacro()

    + +
    +
    + + + + + +
    + + + + + + + +
    static std::pair< std::string, std::string > ne::EngineShaderConstantMacros::ForwardPlus::getAverageSpotLightNumPerTileMacro ()
    +
    +inlinestatic
    +
    +

    Returns a macro that defines how much spotlights are expected to be on average in a light grid tile for opaque or transparent geometry.

    +
    Remarks
    Determines the size for light lists and light grid.
    +
    Returns
    Macro name and macro value.
    + +
    +
    + +

    ◆ getLightGridTileSizeMacro()

    + +
    +
    + + + + + +
    + + + + + + + +
    static std::pair< std::string, std::string > ne::EngineShaderConstantMacros::ForwardPlus::getLightGridTileSizeMacro ()
    +
    +inlinestatic
    +
    +

    Returns a macro that defines how much threads should be executed in the X and the Y dimensions for compute shader that calculates frustums for light grid tiles.

    +
    Remarks
    This macro also defines how much pixels there are in one grid tile.
    +
    Returns
    Macro name and macro value.
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1EngineShaderConstantMacros_1_1ForwardPlus.js b/structne_1_1EngineShaderConstantMacros_1_1ForwardPlus.js new file mode 100644 index 000000000..02d1a7160 --- /dev/null +++ b/structne_1_1EngineShaderConstantMacros_1_1ForwardPlus.js @@ -0,0 +1,6 @@ +var structne_1_1EngineShaderConstantMacros_1_1ForwardPlus = +[ + [ "getAveragePointLightNumPerTileMacro", "structne_1_1EngineShaderConstantMacros_1_1ForwardPlus.html#a8689ec16825647e999783708615abd46", null ], + [ "getAverageSpotLightNumPerTileMacro", "structne_1_1EngineShaderConstantMacros_1_1ForwardPlus.html#abaf1ef6566e1890ba86271c8dc353dcc", null ], + [ "getLightGridTileSizeMacro", "structne_1_1EngineShaderConstantMacros_1_1ForwardPlus.html#a1a0db93874cbe33ce06b8fe28f165eed", null ] +]; \ No newline at end of file diff --git a/structne_1_1EngineShaderNames_1_1ForwardPlus-members.html b/structne_1_1EngineShaderNames_1_1ForwardPlus-members.html new file mode 100644 index 000000000..a2a507a20 --- /dev/null +++ b/structne_1_1EngineShaderNames_1_1ForwardPlus-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::EngineShaderNames::ForwardPlus Member List
    +
    + +
    + + + + diff --git a/structne_1_1EngineShaderNames_1_1ForwardPlus.html b/structne_1_1EngineShaderNames_1_1ForwardPlus.html new file mode 100644 index 000000000..147433cf7 --- /dev/null +++ b/structne_1_1EngineShaderNames_1_1ForwardPlus.html @@ -0,0 +1,210 @@ + + + + + + + +Nameless Engine: ne::EngineShaderNames::ForwardPlus Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::EngineShaderNames::ForwardPlus Struct Reference
    +
    +
    + +

    #include <EngineShaderNames.hpp>

    + + + + + + + + +

    +Static Public Member Functions

    static std::string getCalculateFrustumGridComputeShaderName ()
     
    static std::string getPrepareLightCullingComputeShaderName ()
     
    static std::string getLightCullingComputeShaderName ()
     
    +

    Detailed Description

    +

    Groups info about shaders used in Forward+ light culling process.

    +

    Member Function Documentation

    + +

    ◆ getCalculateFrustumGridComputeShaderName()

    + +
    +
    + + + + + +
    + + + + + + + +
    static std::string ne::EngineShaderNames::ForwardPlus::getCalculateFrustumGridComputeShaderName ()
    +
    +inlinestatic
    +
    +

    Returns a globally unique name of the compute shader used to calculate grid of frustums for light culling.

    +
    Returns
    Shader name.
    + +
    +
    + +

    ◆ getLightCullingComputeShaderName()

    + +
    +
    + + + + + +
    + + + + + + + +
    static std::string ne::EngineShaderNames::ForwardPlus::getLightCullingComputeShaderName ()
    +
    +inlinestatic
    +
    +

    Returns a globally unique name of the compute shader used to do light culling.

    +
    Returns
    Shader name.
    + +
    +
    + +

    ◆ getPrepareLightCullingComputeShaderName()

    + +
    +
    + + + + + +
    + + + + + + + +
    static std::string ne::EngineShaderNames::ForwardPlus::getPrepareLightCullingComputeShaderName ()
    +
    +inlinestatic
    +
    +

    Returns a globally unique name of the compute shader used to reset global counters for light culling.

    +
    Returns
    Shader name.
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1EngineShaderNames_1_1ForwardPlus.js b/structne_1_1EngineShaderNames_1_1ForwardPlus.js new file mode 100644 index 000000000..6900bc904 --- /dev/null +++ b/structne_1_1EngineShaderNames_1_1ForwardPlus.js @@ -0,0 +1,6 @@ +var structne_1_1EngineShaderNames_1_1ForwardPlus = +[ + [ "getCalculateFrustumGridComputeShaderName", "structne_1_1EngineShaderNames_1_1ForwardPlus.html#a5038351f0972dc5d648ebd58f04631f0", null ], + [ "getLightCullingComputeShaderName", "structne_1_1EngineShaderNames_1_1ForwardPlus.html#a22bcf48d0dc15e6c5a6c51fe6a4199cc", null ], + [ "getPrepareLightCullingComputeShaderName", "structne_1_1EngineShaderNames_1_1ForwardPlus.html#aab591a1e904000ca05cbe199a8aeabdd", null ] +]; \ No newline at end of file diff --git a/structne_1_1EngineShaderNames_1_1MeshNode-members.html b/structne_1_1EngineShaderNames_1_1MeshNode-members.html new file mode 100644 index 000000000..c2976be51 --- /dev/null +++ b/structne_1_1EngineShaderNames_1_1MeshNode-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::EngineShaderNames::MeshNode Member List
    +
    +
    + +

    This is the complete list of members for ne::EngineShaderNames::MeshNode, including all inherited members.

    + + + +
    getFragmentShaderName()ne::EngineShaderNames::MeshNodeinlinestatic
    getVertexShaderName()ne::EngineShaderNames::MeshNodeinlinestatic
    +
    + + + + diff --git a/structne_1_1EngineShaderNames_1_1MeshNode.html b/structne_1_1EngineShaderNames_1_1MeshNode.html new file mode 100644 index 000000000..334da2eac --- /dev/null +++ b/structne_1_1EngineShaderNames_1_1MeshNode.html @@ -0,0 +1,181 @@ + + + + + + + +Nameless Engine: ne::EngineShaderNames::MeshNode Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::EngineShaderNames::MeshNode Struct Reference
    +
    +
    + +

    #include <EngineShaderNames.hpp>

    + + + + + + +

    +Static Public Member Functions

    static std::string getVertexShaderName ()
     
    static std::string getFragmentShaderName ()
     
    +

    Detailed Description

    +

    Groups MeshNode's shader names.

    +

    Member Function Documentation

    + +

    ◆ getFragmentShaderName()

    + +
    +
    + + + + + +
    + + + + + + + +
    static std::string ne::EngineShaderNames::MeshNode::getFragmentShaderName ()
    +
    +inlinestatic
    +
    +

    Returns a globally unique name of the pixel/fragment shader used by mesh nodes.

    +
    Returns
    Shader name.
    + +
    +
    + +

    ◆ getVertexShaderName()

    + +
    +
    + + + + + +
    + + + + + + + +
    static std::string ne::EngineShaderNames::MeshNode::getVertexShaderName ()
    +
    +inlinestatic
    +
    +

    Returns a globally unique name of the vertex shader used by mesh nodes.

    +
    Returns
    Shader name.
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1EngineShaderNames_1_1MeshNode.js b/structne_1_1EngineShaderNames_1_1MeshNode.js new file mode 100644 index 000000000..c7ec86f7f --- /dev/null +++ b/structne_1_1EngineShaderNames_1_1MeshNode.js @@ -0,0 +1,5 @@ +var structne_1_1EngineShaderNames_1_1MeshNode = +[ + [ "getFragmentShaderName", "structne_1_1EngineShaderNames_1_1MeshNode.html#a7e4678f9d327fad03899a73f55e21528", null ], + [ "getVertexShaderName", "structne_1_1EngineShaderNames_1_1MeshNode.html#a158ec016b970e63600a0aeea2c732b24", null ] +]; \ No newline at end of file diff --git a/structne_1_1EngineShaderNames_1_1PointLight-members.html b/structne_1_1EngineShaderNames_1_1PointLight-members.html new file mode 100644 index 000000000..a92db095b --- /dev/null +++ b/structne_1_1EngineShaderNames_1_1PointLight-members.html @@ -0,0 +1,111 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::EngineShaderNames::PointLight Member List
    +
    +
    + +

    This is the complete list of members for ne::EngineShaderNames::PointLight, including all inherited members.

    + + +
    getFragmentShaderName()ne::EngineShaderNames::PointLightinlinestatic
    +
    + + + + diff --git a/structne_1_1EngineShaderNames_1_1PointLight.html b/structne_1_1EngineShaderNames_1_1PointLight.html new file mode 100644 index 000000000..fca164319 --- /dev/null +++ b/structne_1_1EngineShaderNames_1_1PointLight.html @@ -0,0 +1,152 @@ + + + + + + + +Nameless Engine: ne::EngineShaderNames::PointLight Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::EngineShaderNames::PointLight Struct Reference
    +
    +
    + +

    #include <EngineShaderNames.hpp>

    + + + + +

    +Static Public Member Functions

    static std::string_view getFragmentShaderName ()
     
    +

    Detailed Description

    +

    Groups shader names used for point lights.

    +

    Member Function Documentation

    + +

    ◆ getFragmentShaderName()

    + +
    +
    + + + + + +
    + + + + + + + +
    static std::string_view ne::EngineShaderNames::PointLight::getFragmentShaderName ()
    +
    +inlinestatic
    +
    +

    Returns a globally unique name of the pixel/fragment shader used by point lights in shadow passes.

    +
    Returns
    Shader name.
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1EngineShaderNames_1_1PointLight.js b/structne_1_1EngineShaderNames_1_1PointLight.js new file mode 100644 index 000000000..27a034ee7 --- /dev/null +++ b/structne_1_1EngineShaderNames_1_1PointLight.js @@ -0,0 +1,4 @@ +var structne_1_1EngineShaderNames_1_1PointLight = +[ + [ "getFragmentShaderName", "structne_1_1EngineShaderNames_1_1PointLight.html#ac1ce2eeeeeba6c155f2b89f9bb5d5837", null ] +]; \ No newline at end of file diff --git a/structne_1_1EngineShaders_1_1ForwardPlus-members.html b/structne_1_1EngineShaders_1_1ForwardPlus-members.html new file mode 100644 index 000000000..0cb76acb0 --- /dev/null +++ b/structne_1_1EngineShaders_1_1ForwardPlus-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::EngineShaders::ForwardPlus Member List
    +
    +
    + +

    This is the complete list of members for ne::EngineShaders::ForwardPlus, including all inherited members.

    + + + + +
    getCalculateGridFrustumComputeShader(bool bIsHlsl)ne::EngineShaders::ForwardPlusinlinestatic
    getLightCullingComputeShader(bool bIsHlsl)ne::EngineShaders::ForwardPlusinlinestatic
    getPrepareLightCullingComputeShader(bool bIsHlsl)ne::EngineShaders::ForwardPlusinlinestatic
    +
    + + + + diff --git a/structne_1_1EngineShaders_1_1ForwardPlus.html b/structne_1_1EngineShaders_1_1ForwardPlus.html new file mode 100644 index 000000000..e3c5d85dc --- /dev/null +++ b/structne_1_1EngineShaders_1_1ForwardPlus.html @@ -0,0 +1,231 @@ + + + + + + + +Nameless Engine: ne::EngineShaders::ForwardPlus Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::EngineShaders::ForwardPlus Struct Reference
    +
    +
    + +

    #include <EngineShaders.hpp>

    + + + + + + + + +

    +Static Public Member Functions

    static ShaderDescription getCalculateGridFrustumComputeShader (bool bIsHlsl)
     
    static ShaderDescription getPrepareLightCullingComputeShader (bool bIsHlsl)
     
    static ShaderDescription getLightCullingComputeShader (bool bIsHlsl)
     
    +

    Detailed Description

    +

    Groups shaders used in light culling process.

    +

    Member Function Documentation

    + +

    ◆ getCalculateGridFrustumComputeShader()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static ShaderDescription ne::EngineShaders::ForwardPlus::getCalculateGridFrustumComputeShader (bool bIsHlsl)
    +
    +inlinestatic
    +
    +

    Returns a compute shader description for a shader that calculates a frustum for a light grid tile that will be used in light culling.

    +
    Parameters
    + + +
    bIsHlsltrue to construct a path to the HLSL file, false to GLSL.
    +
    +
    +
    Returns
    Shader description.
    + +
    +
    + +

    ◆ getLightCullingComputeShader()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static ShaderDescription ne::EngineShaders::ForwardPlus::getLightCullingComputeShader (bool bIsHlsl)
    +
    +inlinestatic
    +
    +

    Returns a compute shader description for a shader that does light culling.

    +
    Parameters
    + + +
    bIsHlsltrue to construct a path to the HLSL file, false to GLSL.
    +
    +
    +
    Returns
    Shader description.
    + +
    +
    + +

    ◆ getPrepareLightCullingComputeShader()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static ShaderDescription ne::EngineShaders::ForwardPlus::getPrepareLightCullingComputeShader (bool bIsHlsl)
    +
    +inlinestatic
    +
    +

    Returns a compute shader description for a shader that resets global counts for light culling shader.

    +
    Parameters
    + + +
    bIsHlsltrue to construct a path to the HLSL file, false to GLSL.
    +
    +
    +
    Returns
    Shader description.
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1EngineShaders_1_1ForwardPlus.js b/structne_1_1EngineShaders_1_1ForwardPlus.js new file mode 100644 index 000000000..68804ce6c --- /dev/null +++ b/structne_1_1EngineShaders_1_1ForwardPlus.js @@ -0,0 +1,6 @@ +var structne_1_1EngineShaders_1_1ForwardPlus = +[ + [ "getCalculateGridFrustumComputeShader", "structne_1_1EngineShaders_1_1ForwardPlus.html#a4268318f0948424a7f5e62fb2486d3fc", null ], + [ "getLightCullingComputeShader", "structne_1_1EngineShaders_1_1ForwardPlus.html#a9c42c346ee49b5e20d6fc0deedb0c85a", null ], + [ "getPrepareLightCullingComputeShader", "structne_1_1EngineShaders_1_1ForwardPlus.html#ab0990ca28d1ce804f698350af9bd0b2e", null ] +]; \ No newline at end of file diff --git a/structne_1_1EngineShaders_1_1MeshNode-members.html b/structne_1_1EngineShaders_1_1MeshNode-members.html new file mode 100644 index 000000000..e9dd3501f --- /dev/null +++ b/structne_1_1EngineShaders_1_1MeshNode-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::EngineShaders::MeshNode Member List
    +
    +
    + +

    This is the complete list of members for ne::EngineShaders::MeshNode, including all inherited members.

    + + + +
    getFragmentShader(bool bIsHlsl)ne::EngineShaders::MeshNodeinlinestatic
    getVertexShader(bool bIsHlsl)ne::EngineShaders::MeshNodeinlinestatic
    +
    + + + + diff --git a/structne_1_1EngineShaders_1_1MeshNode.html b/structne_1_1EngineShaders_1_1MeshNode.html new file mode 100644 index 000000000..30bb78598 --- /dev/null +++ b/structne_1_1EngineShaders_1_1MeshNode.html @@ -0,0 +1,195 @@ + + + + + + + +Nameless Engine: ne::EngineShaders::MeshNode Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::EngineShaders::MeshNode Struct Reference
    +
    +
    + +

    #include <EngineShaders.hpp>

    + + + + + + +

    +Static Public Member Functions

    static ShaderDescription getVertexShader (bool bIsHlsl)
     
    static ShaderDescription getFragmentShader (bool bIsHlsl)
     
    +

    Detailed Description

    +

    Groups MeshNode's shader descriptions.

    +

    Member Function Documentation

    + +

    ◆ getFragmentShader()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static ShaderDescription ne::EngineShaders::MeshNode::getFragmentShader (bool bIsHlsl)
    +
    +inlinestatic
    +
    +

    Returns MeshNode's fragment shader description.

    +
    Parameters
    + + +
    bIsHlsltrue to construct a path to the HLSL file, false to GLSL.
    +
    +
    +
    Returns
    Shader description.
    + +
    +
    + +

    ◆ getVertexShader()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static ShaderDescription ne::EngineShaders::MeshNode::getVertexShader (bool bIsHlsl)
    +
    +inlinestatic
    +
    +

    Returns MeshNode's vertex shader description.

    +
    Parameters
    + + +
    bIsHlsltrue to construct a path to the HLSL file, false to GLSL.
    +
    +
    +
    Returns
    Shader description.
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1EngineShaders_1_1MeshNode.js b/structne_1_1EngineShaders_1_1MeshNode.js new file mode 100644 index 000000000..81f8ef273 --- /dev/null +++ b/structne_1_1EngineShaders_1_1MeshNode.js @@ -0,0 +1,5 @@ +var structne_1_1EngineShaders_1_1MeshNode = +[ + [ "getFragmentShader", "structne_1_1EngineShaders_1_1MeshNode.html#a8c2153a65383aa49cf1671604d4e07ff", null ], + [ "getVertexShader", "structne_1_1EngineShaders_1_1MeshNode.html#ae56ec5ff16f84a5300e789466cc480cd", null ] +]; \ No newline at end of file diff --git a/structne_1_1EngineShaders_1_1PointLight-members.html b/structne_1_1EngineShaders_1_1PointLight-members.html new file mode 100644 index 000000000..92fcc4e7a --- /dev/null +++ b/structne_1_1EngineShaders_1_1PointLight-members.html @@ -0,0 +1,111 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::EngineShaders::PointLight Member List
    +
    +
    + +

    This is the complete list of members for ne::EngineShaders::PointLight, including all inherited members.

    + + +
    getFragmentShader(bool bIsHlsl)ne::EngineShaders::PointLightinlinestatic
    +
    + + + + diff --git a/structne_1_1EngineShaders_1_1PointLight.html b/structne_1_1EngineShaders_1_1PointLight.html new file mode 100644 index 000000000..0364a8e18 --- /dev/null +++ b/structne_1_1EngineShaders_1_1PointLight.html @@ -0,0 +1,159 @@ + + + + + + + +Nameless Engine: ne::EngineShaders::PointLight Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::EngineShaders::PointLight Struct Reference
    +
    +
    + +

    #include <EngineShaders.hpp>

    + + + + +

    +Static Public Member Functions

    static ShaderDescription getFragmentShader (bool bIsHlsl)
     
    +

    Detailed Description

    +

    Groups shaders used by point lights.

    +

    Member Function Documentation

    + +

    ◆ getFragmentShader()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static ShaderDescription ne::EngineShaders::PointLight::getFragmentShader (bool bIsHlsl)
    +
    +inlinestatic
    +
    +

    Returns fragment shader used in point light shadow passes.

    +
    Parameters
    + + +
    bIsHlsltrue to construct a path to the HLSL file, false to GLSL.
    +
    +
    +
    Returns
    Shader description.
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1EngineShaders_1_1PointLight.js b/structne_1_1EngineShaders_1_1PointLight.js new file mode 100644 index 000000000..79eeedede --- /dev/null +++ b/structne_1_1EngineShaders_1_1PointLight.js @@ -0,0 +1,4 @@ +var structne_1_1EngineShaders_1_1PointLight = +[ + [ "getFragmentShader", "structne_1_1EngineShaders_1_1PointLight.html#af008ea34fb0af60e5393c950d1ceb3b2", null ] +]; \ No newline at end of file diff --git a/structne_1_1FrameConstants-members.html b/structne_1_1FrameConstants-members.html new file mode 100644 index 000000000..87f144b4e --- /dev/null +++ b/structne_1_1FrameConstants-members.html @@ -0,0 +1,115 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::FrameConstants Member List
    +
    + +
    + + + + diff --git a/structne_1_1FrameConstants.html b/structne_1_1FrameConstants.html new file mode 100644 index 000000000..9e8c9f1fa --- /dev/null +++ b/structne_1_1FrameConstants.html @@ -0,0 +1,208 @@ + + + + + + + +Nameless Engine: ne::FrameConstants Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::FrameConstants Struct Reference
    +
    +
    + +

    #include <FrameResourceManager.h>

    + + + + + + + + + + + + +

    +Public Attributes

    glm::mat4x4 viewMatrix = glm::identity<glm::mat4x4>()
     
    glm::mat4x4 viewProjectionMatrix = glm::identity<glm::mat4x4>()
     
    glm::vec4 cameraPosition = glm::vec4(0.0F, 0.0F, 0.0F, 0.0F)
     
    float timeSincePrevFrameInSec = 0.0F
     
    float totalTimeInSec = 0.0F
     
    +

    Detailed Description

    +

    Stores frame-global constants. Used by shaders.

    +

    Member Data Documentation

    + +

    ◆ cameraPosition

    + +
    +
    + + + + +
    glm::vec4 ne::FrameConstants::cameraPosition = glm::vec4(0.0F, 0.0F, 0.0F, 0.0F)
    +
    +

    Camera's world location. 4th component is not used

    + +
    +
    + +

    ◆ timeSincePrevFrameInSec

    + +
    +
    + + + + +
    float ne::FrameConstants::timeSincePrevFrameInSec = 0.0F
    +
    +

    Time that has passed since the last frame in seconds (i.e. delta time).

    + +
    +
    + +

    ◆ totalTimeInSec

    + +
    +
    + + + + +
    float ne::FrameConstants::totalTimeInSec = 0.0F
    +
    +

    Time since the first window was created (in seconds).

    + +
    +
    + +

    ◆ viewMatrix

    + +
    +
    + + + + +
    glm::mat4x4 ne::FrameConstants::viewMatrix = glm::identity<glm::mat4x4>()
    +
    +

    Camera's view matrix.

    + +
    +
    + +

    ◆ viewProjectionMatrix

    + +
    +
    + + + + +
    glm::mat4x4 ne::FrameConstants::viewProjectionMatrix = glm::identity<glm::mat4x4>()
    +
    +

    Camera's view matrix multiplied by camera's projection matrix.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1FrameConstants.js b/structne_1_1FrameConstants.js new file mode 100644 index 000000000..9ba45b36f --- /dev/null +++ b/structne_1_1FrameConstants.js @@ -0,0 +1,8 @@ +var structne_1_1FrameConstants = +[ + [ "cameraPosition", "structne_1_1FrameConstants.html#a84d5a1e4e3e96e30e2eb69a2549a97ec", null ], + [ "timeSincePrevFrameInSec", "structne_1_1FrameConstants.html#a6d84ca58a8d99f92deb3e5088f8e04c4", null ], + [ "totalTimeInSec", "structne_1_1FrameConstants.html#aee60c136a4007b8132dbd22164fd7d69", null ], + [ "viewMatrix", "structne_1_1FrameConstants.html#acd8490fa6e54a52c9e1fd17ee35a541b", null ], + [ "viewProjectionMatrix", "structne_1_1FrameConstants.html#aac2f63f5d21e3bc9555b74cd6ddc78a2", null ] +]; \ No newline at end of file diff --git a/structne_1_1FrameResource-members.html b/structne_1_1FrameResource-members.html new file mode 100644 index 000000000..dd06b527f --- /dev/null +++ b/structne_1_1FrameResource-members.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::FrameResource Member List
    +
    +
    + +

    This is the complete list of members for ne::FrameResource, including all inherited members.

    + + + + + +
    FrameResourceManager (defined in ne::FrameResource)ne::FrameResourcefriend
    initialize(Renderer *pRenderer)=0ne::FrameResourceprivatepure virtual
    pFrameConstantBufferne::FrameResource
    ~FrameResource()=default (defined in ne::FrameResource)ne::FrameResourcevirtual
    +
    + + + + diff --git a/structne_1_1FrameResource.html b/structne_1_1FrameResource.html new file mode 100644 index 000000000..12bff6d4f --- /dev/null +++ b/structne_1_1FrameResource.html @@ -0,0 +1,200 @@ + + + + + + + +Nameless Engine: ne::FrameResource Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::FrameResource Struct Referenceabstract
    +
    +
    + +

    #include <FrameResource.h>

    +
    +Inheritance diagram for ne::FrameResource:
    +
    +
    + + +ne::DirectXFrameResource +ne::VulkanFrameResource + +
    + + + + +

    +Public Attributes

    std::unique_ptr< UploadBufferpFrameConstantBuffer
     
    + + + +

    +Private Member Functions

    virtual std::optional< Errorinitialize (Renderer *pRenderer)=0
     
    + + + +

    +Friends

    +class FrameResourceManager
     
    +

    Detailed Description

    +

    Stores objects used by one frame.

    +

    Member Function Documentation

    + +

    ◆ initialize()

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual std::optional< Error > ne::FrameResource::initialize (RendererpRenderer)
    +
    +privatepure virtual
    +
    +

    Called by frame resource manager after a frame resource was constructed to initialize its fields.

    +
    Parameters
    + + +
    pRendererUsed renderer.
    +
    +
    +
    Returns
    Error if something went wrong.
    + +

    Implemented in ne::DirectXFrameResource, and ne::VulkanFrameResource.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ pFrameConstantBuffer

    + +
    +
    + + + + +
    std::unique_ptr<UploadBuffer> ne::FrameResource::pFrameConstantBuffer
    +
    +

    Stores frame-global constants, such as camera position, time, various matrices, etc.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1FrameResource.js b/structne_1_1FrameResource.js new file mode 100644 index 000000000..7264235be --- /dev/null +++ b/structne_1_1FrameResource.js @@ -0,0 +1,5 @@ +var structne_1_1FrameResource = +[ + [ "initialize", "structne_1_1FrameResource.html#a565314ed03b38cafbf0994d60bfd24bc", null ], + [ "pFrameConstantBuffer", "structne_1_1FrameResource.html#a1897cd22604bbec9f221abca2a894c16", null ] +]; \ No newline at end of file diff --git a/structne_1_1FrameResource.png b/structne_1_1FrameResource.png new file mode 100644 index 0000000000000000000000000000000000000000..024a0e01ca9455d86f9fdc2f5527c1d138a340da GIT binary patch literal 966 zcmeAS@N?(olHy`uVBq!ia0y~yURUjoD;1lBd|Nnm=^TnI5rTvGN zTNr2-NK8NT;=q9eK=I&7msbGgI7@>3f*F8(FfeDDeT9L6IndL^F{Fa=?c9s&7F!9h zoX+L^`oI3;SvjE%yfQ`Q>O!8+I&P^RwD2|jwufm?Q;^qA8;18T8{c+M4$8HjF(vEv z!6hNL`P7!)Dl?GRFU>o?t@eztbI$KfyZBYP^FJ7?U3lg0sk?pF?(lnIuiid-e5z(w zU(Aww`8ny4k$LZ*ZGSuQ{3NU0yQ(AXw}_{k+q+vA{Xh0~|GRIScm3Pob=U68rg*!3 znq}2@xHqglRry4tbnYYTrQ2$k+s|CT=J=-*o$Wv=zQRth(C2-ngX=p=0kd}jv`SMIr zg-JjmKP^@cwWUlflYIg&$eF^;*QTsO;XScOQj$?y^`L0wgp;Cjl*;B;w;WbqUb@Dy*MZU-|U>{d1Q| zW_R|@)&FA|dCcpQoj=dSC9?CT?m8kV?3LAbz0G!VmCl#KrLL3e9;aA&S}8=WQknbV zd!qEpr{D74pH=kM0L@s?9|iC5H|KfO_{s`f@$ zmhb}K%SW=-uM=!5zs2{vvhD1Tx$1dEdHby$i#XgzGJLC*FE@K6>Tnt6{H}1<7~ap7T2Qtj_Bo zn-e?Te)?wJ513^!_ln-Z?8EQEUtOGMHDyKD6~j8q9Ob)Rw?xkWJN>`Z|8BNR^vcIV z(o5UgYtw#;domv{mVa(@e_5N{hw#(;bz79S9{)e_mw)2+pzHt4-r45%M~AtDpT64_ zbt}{SWukMf&$ho)g;&NtD6`Dlc4BKry!5t-TAtHW{a2~PPMM + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::FrameResourceManager::CurrentFrameResource Member List
    +
    + +
    + + + + diff --git a/structne_1_1FrameResourceManager_1_1CurrentFrameResource.html b/structne_1_1FrameResourceManager_1_1CurrentFrameResource.html new file mode 100644 index 000000000..f9f8f5cf5 --- /dev/null +++ b/structne_1_1FrameResourceManager_1_1CurrentFrameResource.html @@ -0,0 +1,157 @@ + + + + + + + +Nameless Engine: ne::FrameResourceManager::CurrentFrameResource Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::FrameResourceManager::CurrentFrameResource Struct Reference
    +
    +
    + +

    #include <FrameResourceManager.h>

    + + + + + + +

    +Public Attributes

    size_t iIndex = 0
     
    FrameResourcepResource = nullptr
     
    +

    Detailed Description

    +

    Stores index and pointer to the current item in vFrameResources.

    +

    Member Data Documentation

    + +

    ◆ iIndex

    + +
    +
    + + + + +
    size_t ne::FrameResourceManager::CurrentFrameResource::iIndex = 0
    +
    +

    Current index in frame resources array.

    + +
    +
    + +

    ◆ pResource

    + +
    +
    + + + + +
    FrameResource* ne::FrameResourceManager::CurrentFrameResource::pResource = nullptr
    +
    +

    Pointer to item at the iIndex.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1FrameResourceManager_1_1CurrentFrameResource.js b/structne_1_1FrameResourceManager_1_1CurrentFrameResource.js new file mode 100644 index 000000000..aab2626df --- /dev/null +++ b/structne_1_1FrameResourceManager_1_1CurrentFrameResource.js @@ -0,0 +1,5 @@ +var structne_1_1FrameResourceManager_1_1CurrentFrameResource = +[ + [ "iIndex", "structne_1_1FrameResourceManager_1_1CurrentFrameResource.html#aa1b20fda217696a90d13d53848472d8c", null ], + [ "pResource", "structne_1_1FrameResourceManager_1_1CurrentFrameResource.html#ae88656160613c7f8eeece7f12770c4eb", null ] +]; \ No newline at end of file diff --git a/structne_1_1Frustum-members.html b/structne_1_1Frustum-members.html new file mode 100644 index 000000000..b4ed082d5 --- /dev/null +++ b/structne_1_1Frustum-members.html @@ -0,0 +1,119 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::Frustum Member List
    +
    +
    + +

    This is the complete list of members for ne::Frustum, including all inherited members.

    + + + + + + + + + + +
    bottomFacene::Frustum
    farFacene::Frustum
    isAabbInFrustum(const AABB &aabbInModelSpace, const glm::mat4x4 &worldMatrix) constne::Frustum
    isConeInFrustum(const Cone &cone) constne::Frustum
    isSphereInFrustum(const Sphere &sphere) constne::Frustum
    leftFacene::Frustum
    nearFacene::Frustum
    rightFacene::Frustum
    topFacene::Frustum
    +
    + + + + diff --git a/structne_1_1Frustum.html b/structne_1_1Frustum.html new file mode 100644 index 000000000..17964da5e --- /dev/null +++ b/structne_1_1Frustum.html @@ -0,0 +1,329 @@ + + + + + + + +Nameless Engine: ne::Frustum Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::Frustum Struct Reference
    +
    +
    + +

    #include <Frustum.h>

    + + + + + + + + +

    +Public Member Functions

    bool isAabbInFrustum (const AABB &aabbInModelSpace, const glm::mat4x4 &worldMatrix) const
     
    bool isSphereInFrustum (const Sphere &sphere) const
     
    bool isConeInFrustum (const Cone &cone) const
     
    + + + + + + + + + + + + + +

    +Public Attributes

    Plane topFace
     
    Plane bottomFace
     
    Plane rightFace
     
    Plane leftFace
     
    Plane nearFace
     
    Plane farFace
     
    +

    Detailed Description

    +

    Frustum represented by 6 planes.

    +

    Member Function Documentation

    + +

    ◆ isAabbInFrustum()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool ne::Frustum::isAabbInFrustum (const AABBaabbInModelSpace,
    const glm::mat4x4 & worldMatrix 
    ) const
    +
    +

    Tests if the specified axis-aligned bounding box is inside of the frustum or intersects it.

    +
    Remarks
    Does frustum/AABB intersection in world space.
    +
    Parameters
    + + + +
    aabbInModelSpaceAxis-aligned bounding box in model space.
    worldMatrixMatrix that transforms the specified AABB from model space to world space.
    +
    +
    +
    Returns
    true if the AABB is inside of the frustum or intersects it, false if the AABB is outside of the frustum.
    + +
    +
    + +

    ◆ isConeInFrustum()

    + +
    +
    + + + + + + + + +
    bool ne::Frustum::isConeInFrustum (const Conecone) const
    +
    +

    Tests if the specified cone is inside of the frustum or intersects it.

    +
    Remarks
    Expects that both frustum and cone are in the same coordinate space.
    +
    Parameters
    + + +
    coneCone to test.
    +
    +
    +
    Returns
    true if the cone is inside of the frustum or intersects it, false if the cone is outside of the frustum.
    + +
    +
    + +

    ◆ isSphereInFrustum()

    + +
    +
    + + + + + + + + +
    bool ne::Frustum::isSphereInFrustum (const Spheresphere) const
    +
    +

    Tests if the specified sphere is inside of the frustum or intersects it.

    +
    Remarks
    Expects that both frustum and sphere are in the same coordinate space.
    +
    Parameters
    + + +
    sphereSphere to test.
    +
    +
    +
    Returns
    true if the sphere is inside of the frustum or intersects it, false if the sphere is outside of the frustum.
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ bottomFace

    + +
    +
    + + + + +
    Plane ne::Frustum::bottomFace
    +
    +

    Bottom face of the frustum that points inside of the frustum volume.

    + +
    +
    + +

    ◆ farFace

    + +
    +
    + + + + +
    Plane ne::Frustum::farFace
    +
    +

    Far face of the frustum that points inside of the frustum volume.

    + +
    +
    + +

    ◆ leftFace

    + +
    +
    + + + + +
    Plane ne::Frustum::leftFace
    +
    +

    Left face of the frustum that points inside of the frustum volume.

    + +
    +
    + +

    ◆ nearFace

    + +
    +
    + + + + +
    Plane ne::Frustum::nearFace
    +
    +

    Near face of the frustum that points inside of the frustum volume.

    + +
    +
    + +

    ◆ rightFace

    + +
    +
    + + + + +
    Plane ne::Frustum::rightFace
    +
    +

    Right face of the frustum that points inside of the frustum volume.

    + +
    +
    + +

    ◆ topFace

    + +
    +
    + + + + +
    Plane ne::Frustum::topFace
    +
    +

    Top face of the frustum that points inside of the frustum volume.

    + +
    +
    +
    The documentation for this struct was generated from the following files:
      +
    • src/engine_lib/public/misc/shapes/Frustum.h
    • +
    • src/engine_lib/private/misc/shapes/Frustum.cpp
    • +
    +
    +
    + + + + diff --git a/structne_1_1Frustum.js b/structne_1_1Frustum.js new file mode 100644 index 000000000..95f81a6ea --- /dev/null +++ b/structne_1_1Frustum.js @@ -0,0 +1,12 @@ +var structne_1_1Frustum = +[ + [ "isAabbInFrustum", "structne_1_1Frustum.html#a05de473bc183c2c2eae1454d24624ccd", null ], + [ "isConeInFrustum", "structne_1_1Frustum.html#a56961fa9a498c0329070c93b6694d58c", null ], + [ "isSphereInFrustum", "structne_1_1Frustum.html#abd4917883366761005bf6538fa775279", null ], + [ "bottomFace", "structne_1_1Frustum.html#abb8a96aaac20e9274e5f4aadd9e8b360", null ], + [ "farFace", "structne_1_1Frustum.html#aaacdb51c819422ec5a7d0260ee2c6724", null ], + [ "leftFace", "structne_1_1Frustum.html#adb80de7ffb1dec114d59c258f5225579", null ], + [ "nearFace", "structne_1_1Frustum.html#a4e9d9f6af438342db734b836561e42a9", null ], + [ "rightFace", "structne_1_1Frustum.html#abc89349b3bd54920b61302a5779a93b9", null ], + [ "topFace", "structne_1_1Frustum.html#a31ef100fbcbc0fca8beacf6c62fa8963", null ] +]; \ No newline at end of file diff --git a/structne_1_1Globals_1_1WorldDirection-members.html b/structne_1_1Globals_1_1WorldDirection-members.html new file mode 100644 index 000000000..874beba46 --- /dev/null +++ b/structne_1_1Globals_1_1WorldDirection-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::Globals::WorldDirection Member List
    +
    +
    + +

    This is the complete list of members for ne::Globals::WorldDirection, including all inherited members.

    + + + + +
    forwardne::Globals::WorldDirectioninlinestatic
    rightne::Globals::WorldDirectioninlinestatic
    upne::Globals::WorldDirectioninlinestatic
    +
    + + + + diff --git a/structne_1_1Globals_1_1WorldDirection.html b/structne_1_1Globals_1_1WorldDirection.html new file mode 100644 index 000000000..f91a9f2a5 --- /dev/null +++ b/structne_1_1Globals_1_1WorldDirection.html @@ -0,0 +1,198 @@ + + + + + + + +Nameless Engine: ne::Globals::WorldDirection Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::Globals::WorldDirection Struct Reference
    +
    +
    + +

    #include <Globals.h>

    + + + + + + + + +

    +Static Public Attributes

    static const glm::vec3 up = glm::vec3(0.0F, 0.0F, 1.0F)
     
    static const glm::vec3 right = glm::vec3(0.0F, 1.0F, 0.0F)
     
    static const glm::vec3 forward = glm::vec3(1.0F, 0.0F, 0.0F)
     
    +

    Detailed Description

    +

    Groups vectors that point along world axes X, Y and Z.

    +

    Member Data Documentation

    + +

    ◆ forward

    + +
    +
    + + + + + +
    + + + + +
    const glm::vec3 ne::Globals::WorldDirection::forward = glm::vec3(1.0F, 0.0F, 0.0F)
    +
    +inlinestatic
    +
    +

    Vector that points in world's forward direction.

    + +
    +
    + +

    ◆ right

    + +
    +
    + + + + + +
    + + + + +
    const glm::vec3 ne::Globals::WorldDirection::right = glm::vec3(0.0F, 1.0F, 0.0F)
    +
    +inlinestatic
    +
    +

    Vector that points in world's right direction.

    + +
    +
    + +

    ◆ up

    + +
    +
    + + + + + +
    + + + + +
    const glm::vec3 ne::Globals::WorldDirection::up = glm::vec3(0.0F, 0.0F, 1.0F)
    +
    +inlinestatic
    +
    +

    Vector that points in world's up direction.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1Globals_1_1WorldDirection.js b/structne_1_1Globals_1_1WorldDirection.js new file mode 100644 index 000000000..f45b62712 --- /dev/null +++ b/structne_1_1Globals_1_1WorldDirection.js @@ -0,0 +1,6 @@ +var structne_1_1Globals_1_1WorldDirection = +[ + [ "forward", "structne_1_1Globals_1_1WorldDirection.html#a3de4f601b366a8abc0751044efef8b12", null ], + [ "right", "structne_1_1Globals_1_1WorldDirection.html#af102b448787f543d6098fbe91fa6d8ab", null ], + [ "up", "structne_1_1Globals_1_1WorldDirection.html#a1ed1afad0c2de365aa2767a4a5b50366", null ] +]; \ No newline at end of file diff --git a/structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices-members.html b/structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices-members.html new file mode 100644 index 000000000..ff326c696 --- /dev/null +++ b/structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices-members.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::GlslShaderTextureResourceBinding::PushConstantIndices Member List
    +
    + +
    + + + + diff --git a/structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.html b/structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.html new file mode 100644 index 000000000..7a909e25e --- /dev/null +++ b/structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.html @@ -0,0 +1,294 @@ + + + + + + + +Nameless Engine: ne::GlslShaderTextureResourceBinding::PushConstantIndices Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::GlslShaderTextureResourceBinding::PushConstantIndices Struct Reference
    +
    +
    + + + + + + + + + + +

    +Public Member Functions

     PushConstantIndices ()=default
     
     PushConstantIndices (size_t iPushConstantIndex, std::unique_ptr< ShaderArrayIndex > pShaderArrayIndex)
     
     PushConstantIndices (PushConstantIndices &&)=default
     
    PushConstantIndicesoperator= (PushConstantIndices &&)=default
     
    + + + + + +

    +Public Attributes

    size_t iPushConstantIndex = 0
     
    std::unique_ptr< ShaderArrayIndexpShaderArrayIndex
     
    +

    Detailed Description

    +

    Groups information about a specific push constant.

    +

    Constructor & Destructor Documentation

    + +

    ◆ PushConstantIndices() [1/3]

    + +
    +
    + + + + + +
    + + + + + + + +
    ne::GlslShaderTextureResourceBinding::PushConstantIndices::PushConstantIndices ()
    +
    +default
    +
    +

    Creates uninitialized object.

    + +
    +
    + +

    ◆ PushConstantIndices() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    ne::GlslShaderTextureResourceBinding::PushConstantIndices::PushConstantIndices (size_t iPushConstantIndex,
    std::unique_ptr< ShaderArrayIndexpShaderArrayIndex 
    )
    +
    +inline
    +
    +

    Initializes object.

    +
    Parameters
    + + + +
    iPushConstantIndexIndex of the push constant to copy pShaderArrayIndex.
    pShaderArrayIndexIndex into shader array to copy to shaders.
    +
    +
    + +
    +
    + +

    ◆ PushConstantIndices() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    ne::GlslShaderTextureResourceBinding::PushConstantIndices::PushConstantIndices (PushConstantIndices && )
    +
    +default
    +
    +

    Move constructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ operator=()

    + +
    +
    + + + + + +
    + + + + + + + + +
    PushConstantIndices & ne::GlslShaderTextureResourceBinding::PushConstantIndices::operator= (PushConstantIndices && )
    +
    +default
    +
    +

    Move assignment operator.

    +
    Returns
    this
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ iPushConstantIndex

    + +
    +
    + + + + +
    size_t ne::GlslShaderTextureResourceBinding::PushConstantIndices::iPushConstantIndex = 0
    +
    +

    Index of the push constant to copy pShaderArrayIndex.

    + +
    +
    + +

    ◆ pShaderArrayIndex

    + +
    +
    + + + + +
    std::unique_ptr<ShaderArrayIndex> ne::GlslShaderTextureResourceBinding::PushConstantIndices::pShaderArrayIndex
    +
    +

    Index into shader array to copy to shaders.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.js b/structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.js new file mode 100644 index 000000000..170d44e87 --- /dev/null +++ b/structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.js @@ -0,0 +1,9 @@ +var structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices = +[ + [ "PushConstantIndices", "structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.html#ae5e51e0f28158d2fda3e890b79b52879", null ], + [ "PushConstantIndices", "structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.html#af822c9b567edb5e660729fc798fb157b", null ], + [ "PushConstantIndices", "structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.html#a5cd95151df6d8a464ffa7f5baf3611cd", null ], + [ "operator=", "structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.html#a782622b173c3a0c6f7814f4a6c9eac93", null ], + [ "iPushConstantIndex", "structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.html#a1e1cc195cfa93b926321b1a14e446015", null ], + [ "pShaderArrayIndex", "structne_1_1GlslShaderTextureResourceBinding_1_1PushConstantIndices.html#af67760f14fa0226d0572e3d98beae9f3", null ] +]; \ No newline at end of file diff --git a/structne_1_1GraphicsPipelineRegistry-members.html b/structne_1_1GraphicsPipelineRegistry-members.html new file mode 100644 index 000000000..86b30ed54 --- /dev/null +++ b/structne_1_1GraphicsPipelineRegistry-members.html @@ -0,0 +1,111 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::GraphicsPipelineRegistry Member List
    +
    +
    + +

    This is the complete list of members for ne::GraphicsPipelineRegistry, including all inherited members.

    + + +
    vPipelineTypesne::GraphicsPipelineRegistry
    +
    + + + + diff --git a/structne_1_1GraphicsPipelineRegistry.html b/structne_1_1GraphicsPipelineRegistry.html new file mode 100644 index 000000000..5cc628f1e --- /dev/null +++ b/structne_1_1GraphicsPipelineRegistry.html @@ -0,0 +1,140 @@ + + + + + + + +Nameless Engine: ne::GraphicsPipelineRegistry Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::GraphicsPipelineRegistry Struct Reference
    +
    +
    + +

    #include <PipelineRegistry.hpp>

    + + + + +

    +Public Attributes

    std::array< std::unordered_map< std::string, ShaderPipelines >, static_cast< size_t >(GraphicsPipelineType::SIZE)> vPipelineTypes
     
    +

    Detailed Description

    +

    Stores pipelines of different types.

    +

    Member Data Documentation

    + +

    ◆ vPipelineTypes

    + +
    +
    + + + + +
    std::array< std::unordered_map<std::string, ShaderPipelines>, static_cast<size_t>(GraphicsPipelineType::SIZE)> ne::GraphicsPipelineRegistry::vPipelineTypes
    +
    +

    Map key is vertex (and pixel if specified) shader name(s).

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1GraphicsPipelineRegistry.js b/structne_1_1GraphicsPipelineRegistry.js new file mode 100644 index 000000000..ae7ccc252 --- /dev/null +++ b/structne_1_1GraphicsPipelineRegistry.js @@ -0,0 +1,4 @@ +var structne_1_1GraphicsPipelineRegistry = +[ + [ "vPipelineTypes", "structne_1_1GraphicsPipelineRegistry.html#a2a6a2505f2a504fdab9300a932cf02c3", null ] +]; \ No newline at end of file diff --git a/structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames-members.html b/structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames-members.html new file mode 100644 index 000000000..542efee06 --- /dev/null +++ b/structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames-members.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::HlslShaderCacheManager::GlobalShaderCacheParameterNames Member List
    +
    + +
    + + + + diff --git a/structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames.html b/structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames.html new file mode 100644 index 000000000..86afcc337 --- /dev/null +++ b/structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames.html @@ -0,0 +1,221 @@ + + + + + + + +Nameless Engine: ne::HlslShaderCacheManager::GlobalShaderCacheParameterNames Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::HlslShaderCacheManager::GlobalShaderCacheParameterNames Struct Reference
    +
    +
    + + + + + + + + + + +

    +Static Public Attributes

    static constexpr std::string_view sVsModel = "vs"
     
    static constexpr std::string_view sPsModel = "ps"
     
    static constexpr std::string_view sCsModel = "cs"
     
    static constexpr std::string_view sCompilerVersion = "compiler_version"
     
    +

    Detailed Description

    +

    Groups names (keys in TOML file) of shader cache parameters.

    +

    Member Data Documentation

    + +

    ◆ sCompilerVersion

    + +
    +
    + + + + + +
    + + + + +
    constexpr std::string_view ne::HlslShaderCacheManager::GlobalShaderCacheParameterNames::sCompilerVersion = "compiler_version"
    +
    +staticconstexpr
    +
    +

    Compiler version.

    + +
    +
    + +

    ◆ sCsModel

    + +
    +
    + + + + + +
    + + + + +
    constexpr std::string_view ne::HlslShaderCacheManager::GlobalShaderCacheParameterNames::sCsModel = "cs"
    +
    +staticconstexpr
    +
    +

    Compute shader model.

    + +
    +
    + +

    ◆ sPsModel

    + +
    +
    + + + + + +
    + + + + +
    constexpr std::string_view ne::HlslShaderCacheManager::GlobalShaderCacheParameterNames::sPsModel = "ps"
    +
    +staticconstexpr
    +
    +

    Pixel shader model.

    + +
    +
    + +

    ◆ sVsModel

    + +
    +
    + + + + + +
    + + + + +
    constexpr std::string_view ne::HlslShaderCacheManager::GlobalShaderCacheParameterNames::sVsModel = "vs"
    +
    +staticconstexpr
    +
    +

    Vertex shader model.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames.js b/structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames.js new file mode 100644 index 000000000..b24fc962c --- /dev/null +++ b/structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames.js @@ -0,0 +1,7 @@ +var structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames = +[ + [ "sCompilerVersion", "structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames.html#a5e6754c97faadd8179489519cb3cb3c2", null ], + [ "sCsModel", "structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames.html#a15f0780b517e8abc7dfdb4c63ec4f17a", null ], + [ "sPsModel", "structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames.html#a778801411f848a492609081f70c7c3ed", null ], + [ "sVsModel", "structne_1_1HlslShaderCacheManager_1_1GlobalShaderCacheParameterNames.html#aa8d66fe4bd201281b60e98163d71a202", null ] +]; \ No newline at end of file diff --git a/structne_1_1KtxLoadingCallbackManager_1_1Data-members.html b/structne_1_1KtxLoadingCallbackManager_1_1Data-members.html new file mode 100644 index 000000000..02c64a67b --- /dev/null +++ b/structne_1_1KtxLoadingCallbackManager_1_1Data-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::KtxLoadingCallbackManager::Data Member List
    +
    +
    + +

    This is the complete list of members for ne::KtxLoadingCallbackManager::Data, including all inherited members.

    + + + +
    allocationsne::KtxLoadingCallbackManager::Data
    iAllocationIdne::KtxLoadingCallbackManager::Data
    +
    + + + + diff --git a/structne_1_1KtxLoadingCallbackManager_1_1Data.html b/structne_1_1KtxLoadingCallbackManager_1_1Data.html new file mode 100644 index 000000000..d07d6936d --- /dev/null +++ b/structne_1_1KtxLoadingCallbackManager_1_1Data.html @@ -0,0 +1,155 @@ + + + + + + + +Nameless Engine: ne::KtxLoadingCallbackManager::Data Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::KtxLoadingCallbackManager::Data Struct Reference
    +
    +
    + + + + + + +

    +Public Attributes

    std::unordered_map< uint64_t, std::pair< VmaAllocation, VkDeviceSize > > allocations
     
    uint64_t iAllocationId = 0
     
    +

    Detailed Description

    +

    Groups internal data.

    +

    Member Data Documentation

    + +

    ◆ allocations

    + +
    +
    + + + + +
    std::unordered_map<uint64_t, std::pair<VmaAllocation, VkDeviceSize> > ne::KtxLoadingCallbackManager::Data::allocations
    +
    +

    Stores pairs of "allocation ID" - "{allocation, map size}" of all currently active (not-freed) allocations.

    + +
    +
    + +

    ◆ iAllocationId

    + +
    +
    + + + + +
    uint64_t ne::KtxLoadingCallbackManager::Data::iAllocationId = 0
    +
    +

    Allocation ID that you can attempt to use on your new allocation for allocations.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1KtxLoadingCallbackManager_1_1Data.js b/structne_1_1KtxLoadingCallbackManager_1_1Data.js new file mode 100644 index 000000000..ac644a9d9 --- /dev/null +++ b/structne_1_1KtxLoadingCallbackManager_1_1Data.js @@ -0,0 +1,5 @@ +var structne_1_1KtxLoadingCallbackManager_1_1Data = +[ + [ "allocations", "structne_1_1KtxLoadingCallbackManager_1_1Data.html#af0af3387d57b40132fa371fcabddd406", null ], + [ "iAllocationId", "structne_1_1KtxLoadingCallbackManager_1_1Data.html#a6866107b8968db1cb12985c569883337", null ] +]; \ No newline at end of file diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData.html b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData.html new file mode 100644 index 000000000..7aaced538 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData.html @@ -0,0 +1,127 @@ + + + + + + + +Nameless Engine: ne::LightingShaderResourceManager::ComputeShaderData Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::LightingShaderResourceManager::ComputeShaderData Struct Reference
    +
    +
    + + + + + + + + + + +

    +Classes

    struct  Frustum
     
    struct  FrustumGridComputeShader
     
    struct  LightCullingComputeShader
     
    struct  Plane
     
    +

    Detailed Description

    +

    Groups shader data for compute shaders that operate on light-related data.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData.js b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData.js new file mode 100644 index 000000000..48c519ca0 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData.js @@ -0,0 +1,7 @@ +var structne_1_1LightingShaderResourceManager_1_1ComputeShaderData = +[ + [ "Frustum", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Frustum.html", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Frustum" ], + [ "FrustumGridComputeShader", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader.html", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader" ], + [ "LightCullingComputeShader", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader.html", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader" ], + [ "Plane", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Plane.html", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Plane" ] +]; \ No newline at end of file diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Frustum-members.html b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Frustum-members.html new file mode 100644 index 000000000..ea3908c40 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Frustum-members.html @@ -0,0 +1,111 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::LightingShaderResourceManager::ComputeShaderData::Frustum Member List
    +
    + +
    + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Frustum.html b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Frustum.html new file mode 100644 index 000000000..dda65c7e6 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Frustum.html @@ -0,0 +1,141 @@ + + + + + + + +Nameless Engine: ne::LightingShaderResourceManager::ComputeShaderData::Frustum Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::LightingShaderResourceManager::ComputeShaderData::Frustum Struct Reference
    +
    +
    + +

    #include <LightingShaderResourceManager.h>

    + + + + +

    +Public Attributes

    Plane planes [4]
     
    +

    Detailed Description

    +

    Frustum in view space.

    +
    Warning
    Exactly equal to the struct defined in shaders.
    +

    Member Data Documentation

    + +

    ◆ planes

    + +
    +
    + + + + +
    Plane ne::LightingShaderResourceManager::ComputeShaderData::Frustum::planes[4]
    +
    +

    Left, right, top and bottom faces of the frustum.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Frustum.js b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Frustum.js new file mode 100644 index 000000000..381fd99de --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Frustum.js @@ -0,0 +1,4 @@ +var structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Frustum = +[ + [ "planes", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Frustum.html#aa6514376259d1c7841746b48e41b7fc5", null ] +]; \ No newline at end of file diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader.html b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader.html new file mode 100644 index 000000000..a8fdb3984 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader.html @@ -0,0 +1,129 @@ + + + + + + + +Nameless Engine: ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader Struct Reference
    +
    +
    + +

    #include <LightingShaderResourceManager.h>

    + + + + + + + + + + +

    +Classes

    struct  ComputeInfo
     
    struct  ComputeShader
     
    struct  ScreenToViewData
     
    struct  ShaderResources
     
    +

    Detailed Description

    +

    Groups shader data for compute shader that recalculates light grid frustums.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader.js b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader.js new file mode 100644 index 000000000..88b9d3030 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader.js @@ -0,0 +1,7 @@ +var structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader = +[ + [ "ComputeInfo", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo.html", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo" ], + [ "ComputeShader", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader" ], + [ "ScreenToViewData", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ScreenToViewData.html", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ScreenToViewData" ], + [ "ShaderResources", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ShaderResources.html", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ShaderResources" ] +]; \ No newline at end of file diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo-members.html b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo-members.html new file mode 100644 index 000000000..3714debde --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo-members.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo.html b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo.html new file mode 100644 index 000000000..32a1b0ba2 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo.html @@ -0,0 +1,191 @@ + + + + + + + +Nameless Engine: ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeInfo Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeInfo Struct Reference
    +
    +
    + +

    #include <LightingShaderResourceManager.h>

    + + + + + + + + + + +

    +Public Attributes

    unsigned int iThreadGroupCountX = 0
     
    unsigned int iThreadGroupCountY = 0
     
    unsigned int iTileCountX = 0
     
    unsigned int iTileCountY = 0
     
    +

    Detailed Description

    +

    Stores some additional information (some information not available as built-in semantics).

    +

    Member Data Documentation

    + +

    ◆ iThreadGroupCountX

    + +
    +
    + + + + +
    unsigned int ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeInfo::iThreadGroupCountX = 0
    +
    +

    Total number of thread groups dispatched in the X direction.

    + +
    +
    + +

    ◆ iThreadGroupCountY

    + +
    +
    + + + + +
    unsigned int ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeInfo::iThreadGroupCountY = 0
    +
    +

    Total number of thread groups dispatched in the Y direction.

    + +
    +
    + +

    ◆ iTileCountX

    + +
    +
    + + + + +
    unsigned int ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeInfo::iTileCountX = 0
    +
    +

    Total number of tiles in the X direction.

    + +
    +
    + +

    ◆ iTileCountY

    + +
    +
    + + + + +
    unsigned int ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeInfo::iTileCountY = 0
    +
    +

    Total number of tiles in the Y direction.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo.js b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo.js new file mode 100644 index 000000000..59e1b7599 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo.js @@ -0,0 +1,7 @@ +var structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo = +[ + [ "iThreadGroupCountX", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo.html#ab308689d21b89bb2d959738cbd07db69", null ], + [ "iThreadGroupCountY", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo.html#a05cdc88b9ef5a580ee0edd3b0b818895", null ], + [ "iTileCountX", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo.html#a2a268ccaa59b26f42be4adaa12db4213", null ], + [ "iTileCountY", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeInfo.html#aba29ebf7c5fc7617c3d02d4997886c36", null ] +]; \ No newline at end of file diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader-members.html b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader-members.html new file mode 100644 index 000000000..9e61bbe7b --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader-members.html @@ -0,0 +1,120 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader Member List
    +
    +
    + +

    This is the complete list of members for ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader, including all inherited members.

    + + + + + + + + + + + +
    bIsInitializedne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader
    iLastUpdateTileCountXne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader
    iLastUpdateTileCountYne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader
    initialize(Renderer *pRenderer)ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader
    pComputeInterfacene::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader
    resourcesne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader
    sCalculatedFrustumsShaderResourceNamene::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShaderinlinestatic
    sComputeInfoShaderResourceNamene::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShaderinlinestatic
    sScreenToViewDataShaderResourceNamene::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShaderinlinestatic
    updateDataAndSubmitShader(Renderer *pRenderer, const std::pair< unsigned int, unsigned int > &renderTargetSize, const glm::mat4 &inverseProjectionMatrix)ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader
    +
    + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html new file mode 100644 index 000000000..21d64e0a5 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html @@ -0,0 +1,367 @@ + + + + + + + +Nameless Engine: ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader Struct Reference
    +
    +
    + +

    #include <LightingShaderResourceManager.h>

    + + + + + + +

    +Public Member Functions

    std::optional< Errorinitialize (Renderer *pRenderer)
     
    std::optional< ErrorupdateDataAndSubmitShader (Renderer *pRenderer, const std::pair< unsigned int, unsigned int > &renderTargetSize, const glm::mat4 &inverseProjectionMatrix)
     
    + + + + + + + + + + + +

    +Public Attributes

    std::unique_ptr< ComputeShaderInterfacepComputeInterface
     
    ShaderResources resources
     
    unsigned int iLastUpdateTileCountX = 0
     
    unsigned int iLastUpdateTileCountY = 0
     
    bool bIsInitialized = false
     
    + + + + + + + +

    +Static Public Attributes

    static const auto sComputeInfoShaderResourceName = "computeInfo"
     
    static const auto sScreenToViewDataShaderResourceName = "screenToViewData"
     
    static const auto sCalculatedFrustumsShaderResourceName = "calculatedFrustums"
     
    +

    Detailed Description

    +

    Groups compute interface and its resources.

    +

    Member Function Documentation

    + +

    ◆ initialize()

    + +
    +
    + + + + + + + + +
    std::optional< Error > ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader::initialize (RendererpRenderer)
    +
    +

    Creates compute interface and resources and binds them to the interface.

    +
    Parameters
    + + +
    pRendererRenderer.
    +
    +
    +
    Returns
    Error if something went wrong.
    + +
    +
    + +

    ◆ updateDataAndSubmitShader()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    std::optional< Error > ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader::updateDataAndSubmitShader (RendererpRenderer,
    const std::pair< unsigned int, unsigned int > & renderTargetSize,
    const glm::mat4 & inverseProjectionMatrix 
    )
    +
    +

    Updates data used by shaders.

    +
    Parameters
    + + + + +
    pRendererRenderer.
    renderTargetSizeSize of the underlying render image in pixels.
    inverseProjectionMatrixInverse projection matrix of the active camera.
    +
    +
    +
    Returns
    Error if something went wrong.
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ bIsInitialized

    + +
    +
    + + + + +
    bool ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader::bIsInitialized = false
    +
    +

    true if initialize was called, false otherwise.

    + +
    +
    + +

    ◆ iLastUpdateTileCountX

    + +
    +
    + + + + +
    unsigned int ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader::iLastUpdateTileCountX = 0
    +
    +

    Total number of tiles in the X direction that was used when updateDataAndSubmitShader was called the last time.

    + +
    +
    + +

    ◆ iLastUpdateTileCountY

    + +
    +
    + + + + +
    unsigned int ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader::iLastUpdateTileCountY = 0
    +
    +

    Total number of tiles in the X direction that was used when updateDataAndSubmitShader was called the last time.

    + +
    +
    + +

    ◆ pComputeInterface

    + +
    +
    + + + + +
    std::unique_ptr<ComputeShaderInterface> ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader::pComputeInterface
    +
    +

    Shader Compute.

    + +
    +
    + +

    ◆ resources

    + +
    +
    + + + + +
    ShaderResources ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader::resources
    +
    +

    Shader resources.

    + +
    +
    + +

    ◆ sCalculatedFrustumsShaderResourceName

    + +
    +
    + + + + + +
    + + + + +
    const auto ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader::sCalculatedFrustumsShaderResourceName = "calculatedFrustums"
    +
    +inlinestatic
    +
    +

    Name of the shader resource (name from shader code) that stores calculated frustums.

    + +
    +
    + +

    ◆ sComputeInfoShaderResourceName

    + +
    +
    + + + + + +
    + + + + +
    const auto ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader::sComputeInfoShaderResourceName = "computeInfo"
    +
    +inlinestatic
    +
    +

    Name of the shader resource (name from shader code) that stores additional data for compute shader.

    + +
    +
    + +

    ◆ sScreenToViewDataShaderResourceName

    + +
    +
    + + + + + +
    + + + + +
    const auto ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ComputeShader::sScreenToViewDataShaderResourceName = "screenToViewData"
    +
    +inlinestatic
    +
    +

    Name of the shader resource (name from shader code) that stores data to convert from screen space to view space.

    + +
    +
    +
    The documentation for this struct was generated from the following files:
      +
    • src/engine_lib/private/shader/general/resource/LightingShaderResourceManager.h
    • +
    • src/engine_lib/private/shader/general/resource/LightingShaderResourceManager.cpp
    • +
    +
    +
    + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.js b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.js new file mode 100644 index 000000000..79f7898d8 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.js @@ -0,0 +1,13 @@ +var structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader = +[ + [ "initialize", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html#a6e3d3463ca2331e68e1bcbd9d1fc22f1", null ], + [ "updateDataAndSubmitShader", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html#aeae65e9c819111f67d18377731b92ad3", null ], + [ "bIsInitialized", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html#af878e133b9cbb50968ef9d7aff3bd9e3", null ], + [ "iLastUpdateTileCountX", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html#ab1a80c49a32a2de49f8be148872bd93e", null ], + [ "iLastUpdateTileCountY", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html#a775d56b669496697c76be7fef9b069e1", null ], + [ "pComputeInterface", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html#a6e69ff87cfe1cf9fe018d97f7ab250ae", null ], + [ "resources", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html#a0775064f7bc1cb33b16f5f86d6d9bc91", null ], + [ "sCalculatedFrustumsShaderResourceName", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html#a3c5c6c7552949b49bbed96ec10c36c8f", null ], + [ "sComputeInfoShaderResourceName", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html#ae2e4f4851aefeb9bad8bba4304b2ab36", null ], + [ "sScreenToViewDataShaderResourceName", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ComputeShader.html#a65ea00788dfd5a1d4dc14ae8b2683e3f", null ] +]; \ No newline at end of file diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ScreenToViewData-members.html b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ScreenToViewData-members.html new file mode 100644 index 000000000..f5ea98206 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ScreenToViewData-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ScreenToViewData.html b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ScreenToViewData.html new file mode 100644 index 000000000..52415b174 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ScreenToViewData.html @@ -0,0 +1,174 @@ + + + + + + + +Nameless Engine: ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ScreenToViewData Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ScreenToViewData Struct Reference
    +
    +
    + +

    #include <LightingShaderResourceManager.h>

    + + + + + + + + +

    +Public Attributes

    glm::mat4 inverseProjectionMatrix = glm::identity<glm::mat4>()
     
    unsigned int iRenderTargetWidth = 0
     
    unsigned int iRenderTargetHeight = 0
     
    +

    Detailed Description

    +

    Data that is used to convert coordinates from screen space to view space.

    +

    Member Data Documentation

    + +

    ◆ inverseProjectionMatrix

    + +
    +
    + + + + +
    glm::mat4 ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ScreenToViewData::inverseProjectionMatrix = glm::identity<glm::mat4>()
    +
    +

    Inverse of the projection matrix.

    + +
    +
    + +

    ◆ iRenderTargetHeight

    + +
    +
    + + + + +
    unsigned int ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ScreenToViewData::iRenderTargetHeight = 0
    +
    +

    Height of the viewport (might be smaller that the actual screen size).

    + +
    +
    + +

    ◆ iRenderTargetWidth

    + +
    +
    + + + + +
    unsigned int ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ScreenToViewData::iRenderTargetWidth = 0
    +
    +

    Width of the viewport (might be smaller that the actual screen size).

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ScreenToViewData.js b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ScreenToViewData.js new file mode 100644 index 000000000..6a2860f28 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ScreenToViewData.js @@ -0,0 +1,6 @@ +var structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ScreenToViewData = +[ + [ "inverseProjectionMatrix", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ScreenToViewData.html#a88def20a7e59c121c0f7fdad58dce9e9", null ], + [ "iRenderTargetHeight", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ScreenToViewData.html#af52eb3cc02fcded33a0473dc03bd2f01", null ], + [ "iRenderTargetWidth", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ScreenToViewData.html#a2ffabdd059823afe05ef13e0c7794b82", null ] +]; \ No newline at end of file diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ShaderResources-members.html b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ShaderResources-members.html new file mode 100644 index 000000000..8fe97e20a --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ShaderResources-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ShaderResources.html b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ShaderResources.html new file mode 100644 index 000000000..23a8b4409 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ShaderResources.html @@ -0,0 +1,174 @@ + + + + + + + +Nameless Engine: ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ShaderResources Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ShaderResources Struct Reference
    +
    +
    + +

    #include <LightingShaderResourceManager.h>

    + + + + + + + + +

    +Public Attributes

    std::unique_ptr< UploadBufferpComputeInfo
     
    std::unique_ptr< UploadBufferpScreenToViewData
     
    std::unique_ptr< GpuResourcepCalculatedFrustums
     
    +

    Detailed Description

    +

    Groups buffers that we bind to a compute shader.

    +

    Member Data Documentation

    + +

    ◆ pCalculatedFrustums

    + +
    +
    + + + + +
    std::unique_ptr<GpuResource> ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ShaderResources::pCalculatedFrustums
    +
    +

    Buffer that stores calculated grid of frustums (results of a compute shader).

    + +
    +
    + +

    ◆ pComputeInfo

    + +
    +
    + + + + +
    std::unique_ptr<UploadBuffer> ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ShaderResources::pComputeInfo
    +
    +

    Buffer that stores additional information that might not be available as built-in semantics.

    + +
    +
    + +

    ◆ pScreenToViewData

    + +
    +
    + + + + +
    std::unique_ptr<UploadBuffer> ne::LightingShaderResourceManager::ComputeShaderData::FrustumGridComputeShader::ShaderResources::pScreenToViewData
    +
    +

    Buffer that stores data that is used to convert coordinates from screen space to view space.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ShaderResources.js b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ShaderResources.js new file mode 100644 index 000000000..23f78104b --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ShaderResources.js @@ -0,0 +1,6 @@ +var structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ShaderResources = +[ + [ "pCalculatedFrustums", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ShaderResources.html#a5536318e578d675cc9c73621204a098e", null ], + [ "pComputeInfo", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ShaderResources.html#a91d32e644202638395469ad82f644080", null ], + [ "pScreenToViewData", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1FrustumGridComputeShader_1_1ShaderResources.html#ae4b835c7074d35b4be05fc42835ad62b", null ] +]; \ No newline at end of file diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader.html b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader.html new file mode 100644 index 000000000..7bf7a7fd6 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader.html @@ -0,0 +1,129 @@ + + + + + + + +Nameless Engine: ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader Struct Reference
    +
    +
    + +

    #include <LightingShaderResourceManager.h>

    + + + + + + + + + + +

    +Classes

    struct  ComputeShader
     
    struct  GlobalCountersIntoLightIndexList
     
    struct  ShaderResources
     
    struct  ThreadGroupCount
     
    +

    Detailed Description

    +

    Groups shader data for compute shader that does light culling.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader.js b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader.js new file mode 100644 index 000000000..8fef88c7c --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader.js @@ -0,0 +1,7 @@ +var structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader = +[ + [ "ComputeShader", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader" ], + [ "GlobalCountersIntoLightIndexList", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1GlobalCountersIntoLightIndexList.html", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1GlobalCountersIntoLightIndexList" ], + [ "ShaderResources", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources" ], + [ "ThreadGroupCount", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ThreadGroupCount.html", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ThreadGroupCount" ] +]; \ No newline at end of file diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader-members.html b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader-members.html new file mode 100644 index 000000000..b24f7103e --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader-members.html @@ -0,0 +1,120 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader Member List
    +
    +
    + +

    This is the complete list of members for ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader, including all inherited members.

    + + + + + + + + + + + +
    bIsInitializedne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader
    createLightIndexListsAndLightGrid(Renderer *pRenderer, size_t iTileCountX, size_t iTileCountY)ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader
    initialize(Renderer *pRenderer, const FrustumGridComputeShader::ComputeShader &frustumGridShader)ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader
    pComputeInterfacene::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader
    queueExecutionForNextFrame(Renderer *pRenderer, FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, GpuResource *pGeneralLightingData, GpuResource *pPointLightArray, GpuResource *pSpotlightArray, GpuResource *pNonCulledPointLightsIndicesArray, GpuResource *pNonCulledSpotlightsIndicesArray) constne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader
    resourcesne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader
    sDepthTextureShaderResourceNamene::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShaderinlinestatic
    sGlobalCountersIntoLightIndexListShaderResourceNamene::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShaderinlinestatic
    sThreadGroupCountShaderResourceNamene::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShaderinlinestatic
    threadGroupCountne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader
    +
    + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html new file mode 100644 index 000000000..620c1fc74 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html @@ -0,0 +1,446 @@ + + + + + + + +Nameless Engine: ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader Struct Reference
    +
    +
    + +

    #include <LightingShaderResourceManager.h>

    + + + + + + + + +

    +Public Member Functions

    std::optional< Errorinitialize (Renderer *pRenderer, const FrustumGridComputeShader::ComputeShader &frustumGridShader)
     
    std::variant< bool, ErrorcreateLightIndexListsAndLightGrid (Renderer *pRenderer, size_t iTileCountX, size_t iTileCountY)
     
    std::optional< ErrorqueueExecutionForNextFrame (Renderer *pRenderer, FrameResource *pCurrentFrameResource, size_t iCurrentFrameResourceIndex, GpuResource *pGeneralLightingData, GpuResource *pPointLightArray, GpuResource *pSpotlightArray, GpuResource *pNonCulledPointLightsIndicesArray, GpuResource *pNonCulledSpotlightsIndicesArray) const
     
    + + + + + + + + + +

    +Public Attributes

    std::unique_ptr< ComputeShaderInterfacepComputeInterface
     
    ShaderResources resources
     
    ThreadGroupCount threadGroupCount
     
    bool bIsInitialized = false
     
    + + + + + + + +

    +Static Public Attributes

    static const auto sDepthTextureShaderResourceName = "depthTexture"
     
    static const auto sThreadGroupCountShaderResourceName = "threadGroupCount"
     
    static const auto sGlobalCountersIntoLightIndexListShaderResourceName
     
    +

    Detailed Description

    +

    Groups compute interface and its resources.

    +

    Member Function Documentation

    + +

    ◆ createLightIndexListsAndLightGrid()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    std::variant< bool, Error > ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader::createLightIndexListsAndLightGrid (RendererpRenderer,
    size_t iTileCountX,
    size_t iTileCountY 
    )
    +
    +

    (Re)creates light index lists and light grid if tile count was changed and binds them to the shader.

    +
    Remarks
    Does nothing if the tile count is the same as in the previous call to this function.
    +
    Parameters
    + + + + +
    pRendererRenderer.
    iTileCountXThe current number of light grid tiles in the X direction.
    iTileCountYThe current number of light grid tiles in the Y direction.
    +
    +
    +
    Returns
    true if resources were re-created, false if not, otherwise error if something went wrong.
    + +
    +
    + +

    ◆ initialize()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::optional< Error > ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader::initialize (RendererpRenderer,
    const FrustumGridComputeShader::ComputeShaderfrustumGridShader 
    )
    +
    +

    Creates compute interface and resources and binds them to the interface.

    +
    Parameters
    + + + +
    pRendererRenderer.
    frustumGridShaderCompute shader that calculates grid of frustums for light culling. Its resources will be used in light culling.
    +
    +
    +
    Returns
    Error if something went wrong.
    + +
    +
    + +

    ◆ queueExecutionForNextFrame()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::optional< Error > ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader::queueExecutionForNextFrame (RendererpRenderer,
    FrameResourcepCurrentFrameResource,
    size_t iCurrentFrameResourceIndex,
    GpuResourcepGeneralLightingData,
    GpuResourcepPointLightArray,
    GpuResourcepSpotlightArray,
    GpuResourcepNonCulledPointLightsIndicesArray,
    GpuResourcepNonCulledSpotlightsIndicesArray 
    ) const
    +
    +

    Called to queue compute shader to be executed on the next frame.

    +
    Warning
    Expected to be called somewhere inside of the drawNextFrame function so that renderer's depth texture without multisampling pointer will not change.
    +
    Parameters
    + + + + + + + + + +
    pRendererRenderer.
    pCurrentFrameResourceCurrent frame resource that will be used to submit the next frame.
    iCurrentFrameResourceIndexIndex of the frame resource that will be used to submit the next frame.
    pGeneralLightingDataGPU resource that stores general lighting information.
    pPointLightArrayArray that stores all spawned point lights.
    pSpotlightArrayArray that stores all spawned spotlights.
    pNonCulledPointLightsIndicesArrayArray that stores indices of point lights in camera's frustum.
    pNonCulledSpotlightsIndicesArrayArray that stores indices of spotlights in camera's frustum.
    +
    +
    +
    Returns
    Error if something went wrong.
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ bIsInitialized

    + +
    +
    + + + + +
    bool ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader::bIsInitialized = false
    +
    +

    true if initialize was called, false otherwise.

    + +
    +
    + +

    ◆ pComputeInterface

    + +
    +
    + + + + +
    std::unique_ptr<ComputeShaderInterface> ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader::pComputeInterface
    +
    +

    Compute interface.

    + +
    +
    + +

    ◆ resources

    + +
    +
    + + + + +
    ShaderResources ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader::resources
    +
    +

    Shader resources that this compute shader "owns".

    + +
    +
    + +

    ◆ sDepthTextureShaderResourceName

    + +
    +
    + + + + + +
    + + + + +
    const auto ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader::sDepthTextureShaderResourceName = "depthTexture"
    +
    +inlinestatic
    +
    +

    Name of the shader resource (name from shader code) that stores depth texture recorded on depth prepass.

    + +
    +
    + +

    ◆ sGlobalCountersIntoLightIndexListShaderResourceName

    + +
    +
    + + + + + +
    + + + + +
    const auto ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader::sGlobalCountersIntoLightIndexListShaderResourceName
    +
    +inlinestatic
    +
    +Initial value:
    =
    +
    "globalCountersIntoLightIndexList"
    +

    Name of the shader resource (name from shader code) that stores global counters into various light index lists.

    + +
    +
    + +

    ◆ sThreadGroupCountShaderResourceName

    + +
    +
    + + + + + +
    + + + + +
    const auto ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader::sThreadGroupCountShaderResourceName = "threadGroupCount"
    +
    +inlinestatic
    +
    +

    Name of the shader resource (name from shader code) that stores additional information that might not be available as built-in semantics.

    + +
    +
    + +

    ◆ threadGroupCount

    + +
    +
    + + + + +
    ThreadGroupCount ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ComputeShader::threadGroupCount
    +
    +

    Stores the number of thread groups that we need to dispatch.

    + +
    +
    +
    The documentation for this struct was generated from the following files:
      +
    • src/engine_lib/private/shader/general/resource/LightingShaderResourceManager.h
    • +
    • src/engine_lib/private/shader/general/resource/LightingShaderResourceManager.cpp
    • +
    +
    +
    + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.js b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.js new file mode 100644 index 000000000..cf17cd839 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.js @@ -0,0 +1,13 @@ +var structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader = +[ + [ "createLightIndexListsAndLightGrid", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html#a3c8b14d8953896b32447dead850a5cfe", null ], + [ "initialize", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html#a66c4556e603b32d7babe396e289a7669", null ], + [ "queueExecutionForNextFrame", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html#a8ec144ca0cd2b77c55111c65682ff341", null ], + [ "bIsInitialized", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html#a1020c9b22f7daed5145cec622b5a4a5f", null ], + [ "pComputeInterface", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html#aed6e81285588d562b3f8b959e5d34e09", null ], + [ "resources", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html#a55027b74248e48ff70446a5b06bf55b6", null ], + [ "sDepthTextureShaderResourceName", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html#ab0dff1c83136f810b8dec7c16d94c649", null ], + [ "sGlobalCountersIntoLightIndexListShaderResourceName", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html#a4dc6c808edca63db35d96fec2277e928", null ], + [ "sThreadGroupCountShaderResourceName", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html#aa2e8cc871ecf76056c9346df2bc7b1d6", null ], + [ "threadGroupCount", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ComputeShader.html#a5dc9a2a9d044138a5eecc357f04b3698", null ] +]; \ No newline at end of file diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1G0eb5a52f5b2e76a800149c80dc2ffffb.html b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1G0eb5a52f5b2e76a800149c80dc2ffffb.html new file mode 100644 index 000000000..7b404a4e6 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1G0eb5a52f5b2e76a800149c80dc2ffffb.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1GlobalCountersIntoLightIndexList.html b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1GlobalCountersIntoLightIndexList.html new file mode 100644 index 000000000..56800c6cd --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1GlobalCountersIntoLightIndexList.html @@ -0,0 +1,191 @@ + + + + + + + +Nameless Engine: ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::GlobalCountersIntoLightIndexList Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::GlobalCountersIntoLightIndexList Struct Reference
    +
    +
    + +

    #include <LightingShaderResourceManager.h>

    + + + + + + + + + + +

    +Public Attributes

    unsigned int iPointLightListOpaque = 0
     
    unsigned int iSpotlightListOpaque = 0
     
    unsigned int iPointLightListTransparent = 0
     
    unsigned int iSpotlightListTransparent = 0
     
    +

    Detailed Description

    +

    Global counters (indices) into the light lists.

    +

    Member Data Documentation

    + +

    ◆ iPointLightListOpaque

    + +
    +
    + + + + +
    unsigned int ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::GlobalCountersIntoLightIndexList::iPointLightListOpaque = 0
    +
    +

    Index into point light index light for opaque geometry.

    + +
    +
    + +

    ◆ iPointLightListTransparent

    + +
    +
    + + + + +
    unsigned int ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::GlobalCountersIntoLightIndexList::iPointLightListTransparent = 0
    +
    +

    Index into point light index light for transparent geometry.

    + +
    +
    + +

    ◆ iSpotlightListOpaque

    + +
    +
    + + + + +
    unsigned int ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::GlobalCountersIntoLightIndexList::iSpotlightListOpaque = 0
    +
    +

    Index into spotlight index light for opaque geometry.

    + +
    +
    + +

    ◆ iSpotlightListTransparent

    + +
    +
    + + + + +
    unsigned int ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::GlobalCountersIntoLightIndexList::iSpotlightListTransparent = 0
    +
    +

    Index into spotlight index light for transparent geometry.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1GlobalCountersIntoLightIndexList.js b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1GlobalCountersIntoLightIndexList.js new file mode 100644 index 000000000..7c750b6c8 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1GlobalCountersIntoLightIndexList.js @@ -0,0 +1,7 @@ +var structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1GlobalCountersIntoLightIndexList = +[ + [ "iPointLightListOpaque", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1GlobalCountersIntoLightIndexList.html#a3085cf9001ee4d35cb29510f3c893e43", null ], + [ "iPointLightListTransparent", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1GlobalCountersIntoLightIndexList.html#ae64ac29ce4429d934bfdbe02560b9830", null ], + [ "iSpotlightListOpaque", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1GlobalCountersIntoLightIndexList.html#ac7c1184551bbd5edd0919677fdc9fec6", null ], + [ "iSpotlightListTransparent", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1GlobalCountersIntoLightIndexList.html#a90cec22c32e27aac02c517fed7e3c303", null ] +]; \ No newline at end of file diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources-members.html b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources-members.html new file mode 100644 index 000000000..2188ba093 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources-members.html @@ -0,0 +1,122 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources Member List
    +
    +
    + +

    This is the complete list of members for ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources, including all inherited members.

    + + + + + + + + + + + + + +
    iLightGridTileCountXne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources
    iLightGridTileCountYne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources
    pGlobalCountersIntoLightIndexListne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources
    pOpaquePointLightGridne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources
    pOpaquePointLightIndexListne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources
    pOpaqueSpotLightGridne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources
    pOpaqueSpotLightIndexListne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources
    pThreadGroupCountne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources
    pTransparentPointLightGridne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources
    pTransparentPointLightIndexListne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources
    pTransparentSpotLightGridne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources
    pTransparentSpotLightIndexListne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources
    +
    + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html new file mode 100644 index 000000000..b43bde219 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html @@ -0,0 +1,327 @@ + + + + + + + +Nameless Engine: ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources Struct Reference
    +
    +
    + +

    #include <LightingShaderResourceManager.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    std::unique_ptr< UploadBufferpThreadGroupCount
     
    std::unique_ptr< GpuResourcepGlobalCountersIntoLightIndexList
     
    std::unique_ptr< GpuResourcepOpaquePointLightIndexList
     
    std::unique_ptr< GpuResourcepOpaqueSpotLightIndexList
     
    std::unique_ptr< GpuResourcepTransparentPointLightIndexList
     
    std::unique_ptr< GpuResourcepTransparentSpotLightIndexList
     
    std::unique_ptr< GpuResourcepOpaquePointLightGrid
     
    std::unique_ptr< GpuResourcepOpaqueSpotLightGrid
     
    std::unique_ptr< GpuResourcepTransparentPointLightGrid
     
    std::unique_ptr< GpuResourcepTransparentSpotLightGrid
     
    size_t iLightGridTileCountX = 0
     
    size_t iLightGridTileCountY = 0
     
    +

    Detailed Description

    +

    Groups buffers that we bind to a compute shader.

    +

    Member Data Documentation

    + +

    ◆ iLightGridTileCountX

    + +
    +
    + + + + +
    size_t ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources::iLightGridTileCountX = 0
    +
    +

    The number of tiles in the X direction of the light grid that were set the last time we (re)created light index lists or light grid resources.

    + +
    +
    + +

    ◆ iLightGridTileCountY

    + +
    +
    + + + + +
    size_t ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources::iLightGridTileCountY = 0
    +
    +

    The number of tiles in the Y direction of the light grid that were set the last time we (re)created light index lists or light grid resources.

    + +
    +
    + +

    ◆ pGlobalCountersIntoLightIndexList

    + +
    +
    + + + + +
    std::unique_ptr<GpuResource> ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources::pGlobalCountersIntoLightIndexList
    +
    +

    Stores global counters into various light index lists.

    + +
    +
    + +

    ◆ pOpaquePointLightGrid

    + +
    +
    + + + + +
    std::unique_ptr<GpuResource> ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources::pOpaquePointLightGrid
    +
    +

    2D texture where every pixel stores 2 values: offset into light index list and the number of elements to read from that offset.

    + +
    +
    + +

    ◆ pOpaquePointLightIndexList

    + +
    +
    + + + + +
    std::unique_ptr<GpuResource> ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources::pOpaquePointLightIndexList
    +
    +

    Stores indices into array of point lights for opaque geometry.

    + +
    +
    + +

    ◆ pOpaqueSpotLightGrid

    + +
    +
    + + + + +
    std::unique_ptr<GpuResource> ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources::pOpaqueSpotLightGrid
    +
    +

    2D texture where every pixel stores 2 values: offset into light index list and the number of elements to read from that offset.

    + +
    +
    + +

    ◆ pOpaqueSpotLightIndexList

    + +
    +
    + + + + +
    std::unique_ptr<GpuResource> ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources::pOpaqueSpotLightIndexList
    +
    +

    Stores indices into array of spotlights for opaque geometry.

    + +
    +
    + +

    ◆ pThreadGroupCount

    + +
    +
    + + + + +
    std::unique_ptr<UploadBuffer> ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources::pThreadGroupCount
    +
    +

    Buffer that stores additional information that might not be available as built-in semantics.

    + +
    +
    + +

    ◆ pTransparentPointLightGrid

    + +
    +
    + + + + +
    std::unique_ptr<GpuResource> ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources::pTransparentPointLightGrid
    +
    +

    2D texture where every pixel stores 2 values: offset into light index list and the number of elements to read from that offset.

    + +
    +
    + +

    ◆ pTransparentPointLightIndexList

    + +
    +
    + + + + +
    std::unique_ptr<GpuResource> ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources::pTransparentPointLightIndexList
    +
    +

    Stores indices into array of point lights for transparent geometry.

    + +
    +
    + +

    ◆ pTransparentSpotLightGrid

    + +
    +
    + + + + +
    std::unique_ptr<GpuResource> ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources::pTransparentSpotLightGrid
    +
    +

    2D texture where every pixel stores 2 values: offset into light index list and the number of elements to read from that offset.

    + +
    +
    + +

    ◆ pTransparentSpotLightIndexList

    + +
    +
    + + + + +
    std::unique_ptr<GpuResource> ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ShaderResources::pTransparentSpotLightIndexList
    +
    +

    Stores indices into array of spotlights for transparent geometry.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.js b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.js new file mode 100644 index 000000000..14cdae4c0 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.js @@ -0,0 +1,15 @@ +var structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources = +[ + [ "iLightGridTileCountX", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html#ab0b7c43cdb2ade335d3a6f6d0d4649d8", null ], + [ "iLightGridTileCountY", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html#a633f73694bea9c5141b5b8b525fe5460", null ], + [ "pGlobalCountersIntoLightIndexList", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html#ac7a710e025e855c734c06799224a8c35", null ], + [ "pOpaquePointLightGrid", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html#acfeefdfa12f93dfd7cfcdf68571fe621", null ], + [ "pOpaquePointLightIndexList", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html#ac6539fe62eb7dbbfd319e889f63672d2", null ], + [ "pOpaqueSpotLightGrid", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html#a38f00ed76b2947b21172bdd3a843ad2d", null ], + [ "pOpaqueSpotLightIndexList", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html#adae90bdb2505281a6b77e71c0bc8eef1", null ], + [ "pThreadGroupCount", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html#a6ed7dab02b4f1db9d3fa111a4f108e92", null ], + [ "pTransparentPointLightGrid", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html#a8c53bf6e23bb173f952f10696257dadb", null ], + [ "pTransparentPointLightIndexList", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html#ae8b1f8bce99eb6ade138ebd690324634", null ], + [ "pTransparentSpotLightGrid", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html#aff669d819f60149c8220385172a7f683", null ], + [ "pTransparentSpotLightIndexList", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ShaderResources.html#aac30f437f99473fbe57e99070d8fdfa2", null ] +]; \ No newline at end of file diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ThreadGroupCount-members.html b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ThreadGroupCount-members.html new file mode 100644 index 000000000..310e7dc76 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ThreadGroupCount-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ThreadGroupCount Member List
    +
    + +
    + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ThreadGroupCount.html b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ThreadGroupCount.html new file mode 100644 index 000000000..820a13693 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ThreadGroupCount.html @@ -0,0 +1,157 @@ + + + + + + + +Nameless Engine: ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ThreadGroupCount Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ThreadGroupCount Struct Reference
    +
    +
    + +

    #include <LightingShaderResourceManager.h>

    + + + + + + +

    +Public Attributes

    unsigned int iThreadGroupCountX = 0
     
    unsigned int iThreadGroupCountY = 0
     
    +

    Detailed Description

    +

    Stores some additional information (some information not available as built-in semantics).

    +

    Member Data Documentation

    + +

    ◆ iThreadGroupCountX

    + +
    +
    + + + + +
    unsigned int ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ThreadGroupCount::iThreadGroupCountX = 0
    +
    +

    Total number of thread groups dispatched in the X direction.

    + +
    +
    + +

    ◆ iThreadGroupCountY

    + +
    +
    + + + + +
    unsigned int ne::LightingShaderResourceManager::ComputeShaderData::LightCullingComputeShader::ThreadGroupCount::iThreadGroupCountY = 0
    +
    +

    Total number of thread groups dispatched in the Y direction.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ThreadGroupCount.js b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ThreadGroupCount.js new file mode 100644 index 000000000..4596a009d --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ThreadGroupCount.js @@ -0,0 +1,5 @@ +var structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ThreadGroupCount = +[ + [ "iThreadGroupCountX", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ThreadGroupCount.html#ae59b42d87754c9cd787badbf8074a0f7", null ], + [ "iThreadGroupCountY", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1LightCullingComputeShader_1_1ThreadGroupCount.html#a74ae3fce8beb05bbbce933fe3ce0092b", null ] +]; \ No newline at end of file diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Plane-members.html b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Plane-members.html new file mode 100644 index 000000000..58f85fbb2 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Plane-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::LightingShaderResourceManager::ComputeShaderData::Plane Member List
    +
    + +
    + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Plane.html b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Plane.html new file mode 100644 index 000000000..81696d954 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Plane.html @@ -0,0 +1,158 @@ + + + + + + + +Nameless Engine: ne::LightingShaderResourceManager::ComputeShaderData::Plane Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::LightingShaderResourceManager::ComputeShaderData::Plane Struct Reference
    +
    +
    + +

    #include <LightingShaderResourceManager.h>

    + + + + + + +

    +Public Attributes

    glm::vec3 normal
     
    float distanceFromOrigin
     
    +

    Detailed Description

    +

    Plane represented by a normal and a distance.

    +
    Warning
    Exactly equal to the struct defined in shaders.
    +

    Member Data Documentation

    + +

    ◆ distanceFromOrigin

    + +
    +
    + + + + +
    float ne::LightingShaderResourceManager::ComputeShaderData::Plane::distanceFromOrigin
    +
    +

    Distance from the origin to the nearest point on the plane.

    + +
    +
    + +

    ◆ normal

    + +
    +
    + + + + +
    glm::vec3 ne::LightingShaderResourceManager::ComputeShaderData::Plane::normal
    +
    +

    Plane's normal.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Plane.js b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Plane.js new file mode 100644 index 000000000..739802829 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Plane.js @@ -0,0 +1,5 @@ +var structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Plane = +[ + [ "distanceFromOrigin", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Plane.html#ae28b02eb2cc2c08d610b6734e4062e9b", null ], + [ "normal", "structne_1_1LightingShaderResourceManager_1_1ComputeShaderData_1_1Plane.html#ad0597c15418c0152a2d50c68be5f3b5f", null ] +]; \ No newline at end of file diff --git a/structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData-members.html b/structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData-members.html new file mode 100644 index 000000000..746a912c3 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData-members.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData.html b/structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData.html new file mode 100644 index 000000000..e9a65bec0 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData.html @@ -0,0 +1,191 @@ + + + + + + + +Nameless Engine: ne::LightingShaderResourceManager::GeneralLightingShaderData Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::LightingShaderResourceManager::GeneralLightingShaderData Struct Reference
    +
    +
    + +

    #include <LightingShaderResourceManager.h>

    + + + + + + + + + + +

    +Public Attributes

    glm::vec4 ambientLight = glm::vec4(0.0F, 0.0F, 0.0F, 1.0F)
     
    unsigned int iPointLightCountInCameraFrustum = 0
     
    unsigned int iDirectionalLightCount = 0
     
    unsigned int iSpotLightCountInCameraFrustum = 0
     
    +

    Detailed Description

    +

    Data that will be directly copied into shaders.

    +

    Member Data Documentation

    + +

    ◆ ambientLight

    + +
    +
    + + + + +
    glm::vec4 ne::LightingShaderResourceManager::GeneralLightingShaderData::ambientLight = glm::vec4(0.0F, 0.0F, 0.0F, 1.0F)
    +
    +

    Light color intensity of ambient lighting. 4th component is not used.

    + +
    +
    + +

    ◆ iDirectionalLightCount

    + +
    +
    + + + + +
    unsigned int ne::LightingShaderResourceManager::GeneralLightingShaderData::iDirectionalLightCount = 0
    +
    +

    Total number of spawned directional lights.

    + +
    +
    + +

    ◆ iPointLightCountInCameraFrustum

    + +
    +
    + + + + +
    unsigned int ne::LightingShaderResourceManager::GeneralLightingShaderData::iPointLightCountInCameraFrustum = 0
    +
    +

    Total number of spawned point lights in camera frustum.

    + +
    +
    + +

    ◆ iSpotLightCountInCameraFrustum

    + +
    +
    + + + + +
    unsigned int ne::LightingShaderResourceManager::GeneralLightingShaderData::iSpotLightCountInCameraFrustum = 0
    +
    +

    Total number of spawned spotlights in camera frustum.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData.js b/structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData.js new file mode 100644 index 000000000..4b4b39e8c --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData.js @@ -0,0 +1,7 @@ +var structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData = +[ + [ "ambientLight", "structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData.html#a685738116885536ebd61fa597659dcca", null ], + [ "iDirectionalLightCount", "structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData.html#ac0b4bbf6c89da2b0f8105e104b73c8ec", null ], + [ "iPointLightCountInCameraFrustum", "structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData.html#aa15659932635e4192b0977b78610e4c6", null ], + [ "iSpotLightCountInCameraFrustum", "structne_1_1LightingShaderResourceManager_1_1GeneralLightingShaderData.html#ab59835f523231d5e4e2f56a0ec715802", null ] +]; \ No newline at end of file diff --git a/structne_1_1LightingShaderResourceManager_1_1GpuData-members.html b/structne_1_1LightingShaderResourceManager_1_1GpuData-members.html new file mode 100644 index 000000000..a519a5ab4 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1GpuData-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::LightingShaderResourceManager::GpuData Member List
    +
    + +
    + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1GpuData.html b/structne_1_1LightingShaderResourceManager_1_1GpuData.html new file mode 100644 index 000000000..57602a96b --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1GpuData.html @@ -0,0 +1,158 @@ + + + + + + + +Nameless Engine: ne::LightingShaderResourceManager::GpuData Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::LightingShaderResourceManager::GpuData Struct Reference
    +
    +
    + +

    #include <LightingShaderResourceManager.h>

    + + + + + + +

    +Public Attributes

    std::array< std::unique_ptr< UploadBuffer >, FrameResourceManager::getFrameResourceCount()> vGeneralDataGpuResources
     
    GeneralLightingShaderData generalData
     
    +

    Detailed Description

    +

    Groups GPU related data.

    +

    Member Data Documentation

    + +

    ◆ generalData

    + +
    +
    + + + + +
    GeneralLightingShaderData ne::LightingShaderResourceManager::GpuData::generalData
    +
    +

    Stores general (not related to a specific light source type) lighting data.

    +
    Remarks
    Stores data that is copied in vGeneralDataGpuResources.
    + +
    +
    + +

    ◆ vGeneralDataGpuResources

    + +
    +
    + + + + +
    std::array<std::unique_ptr<UploadBuffer>, FrameResourceManager::getFrameResourceCount()> ne::LightingShaderResourceManager::GpuData::vGeneralDataGpuResources
    +
    +

    Stores data from generalData in the GPU memory.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1GpuData.js b/structne_1_1LightingShaderResourceManager_1_1GpuData.js new file mode 100644 index 000000000..23bd00474 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1GpuData.js @@ -0,0 +1,5 @@ +var structne_1_1LightingShaderResourceManager_1_1GpuData = +[ + [ "generalData", "structne_1_1LightingShaderResourceManager_1_1GpuData.html#ae9f5a30887c42546b704bff9c130d688", null ], + [ "vGeneralDataGpuResources", "structne_1_1LightingShaderResourceManager_1_1GpuData.html#ade12da1fc812ecdbcf2b610bf21365c3", null ] +]; \ No newline at end of file diff --git a/structne_1_1LightingShaderResourceManager_1_1LightArrays-members.html b/structne_1_1LightingShaderResourceManager_1_1LightArrays-members.html new file mode 100644 index 000000000..05cd96de2 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1LightArrays-members.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::LightingShaderResourceManager::LightArrays Member List
    +
    + +
    + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1LightArrays.html b/structne_1_1LightingShaderResourceManager_1_1LightArrays.html new file mode 100644 index 000000000..c74722a77 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1LightArrays.html @@ -0,0 +1,189 @@ + + + + + + + +Nameless Engine: ne::LightingShaderResourceManager::LightArrays Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::LightingShaderResourceManager::LightArrays Struct Reference
    +
    +
    + + + + + + + + + + +

    +Public Attributes

    std::unique_ptr< ShaderLightArraypPointLightDataArray
     
    std::unique_ptr< ShaderLightArraypDirectionalLightDataArray
     
    std::unique_ptr< ShaderLightArraypSpotlightDataArray
     
    std::unique_ptr< ShaderLightArraypShadowPassLightInfoArray
     
    +

    Detailed Description

    +

    Groups GPU resources that store arrays of light sources.

    +

    Member Data Documentation

    + +

    ◆ pDirectionalLightDataArray

    + +
    +
    + + + + +
    std::unique_ptr<ShaderLightArray> ne::LightingShaderResourceManager::LightArrays::pDirectionalLightDataArray
    +
    +

    Stores data of all spawned directional lights.

    + +
    +
    + +

    ◆ pPointLightDataArray

    + +
    +
    + + + + +
    std::unique_ptr<ShaderLightArray> ne::LightingShaderResourceManager::LightArrays::pPointLightDataArray
    +
    +

    Stores data of all spawned point lights.

    + +
    +
    + +

    ◆ pShadowPassLightInfoArray

    + +
    +
    + + + + +
    std::unique_ptr<ShaderLightArray> ne::LightingShaderResourceManager::LightArrays::pShadowPassLightInfoArray
    +
    +

    Light info for all spawned lights, used in shadow pass.

    + +
    +
    + +

    ◆ pSpotlightDataArray

    + +
    +
    + + + + +
    std::unique_ptr<ShaderLightArray> ne::LightingShaderResourceManager::LightArrays::pSpotlightDataArray
    +
    +

    Stores data of all spawned spotlights.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1LightingShaderResourceManager_1_1LightArrays.js b/structne_1_1LightingShaderResourceManager_1_1LightArrays.js new file mode 100644 index 000000000..b0186f642 --- /dev/null +++ b/structne_1_1LightingShaderResourceManager_1_1LightArrays.js @@ -0,0 +1,7 @@ +var structne_1_1LightingShaderResourceManager_1_1LightArrays = +[ + [ "pDirectionalLightDataArray", "structne_1_1LightingShaderResourceManager_1_1LightArrays.html#ab59765e591f9557ecfa94701f1dfb50f", null ], + [ "pPointLightDataArray", "structne_1_1LightingShaderResourceManager_1_1LightArrays.html#ad9c566eb8540d1489e0f2c236f617b7d", null ], + [ "pShadowPassLightInfoArray", "structne_1_1LightingShaderResourceManager_1_1LightArrays.html#a07ff64fd57ee2c85eb94cd4a2cbeb1b1", null ], + [ "pSpotlightDataArray", "structne_1_1LightingShaderResourceManager_1_1LightArrays.html#a5ac8e7e862b17f5e1ee8fb2470bdc8ed", null ] +]; \ No newline at end of file diff --git a/structne_1_1Material_1_1GpuResources-members.html b/structne_1_1Material_1_1GpuResources-members.html new file mode 100644 index 000000000..db8b4c6ce --- /dev/null +++ b/structne_1_1Material_1_1GpuResources-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::Material::GpuResources Member List
    +
    +
    + +

    This is the complete list of members for ne::Material::GpuResources, including all inherited members.

    + + + +
    GpuResources()=default (defined in ne::Material::GpuResources)ne::Material::GpuResources
    shaderResourcesne::Material::GpuResources
    +
    + + + + diff --git a/structne_1_1Material_1_1GpuResources.html b/structne_1_1Material_1_1GpuResources.html new file mode 100644 index 000000000..3d384d951 --- /dev/null +++ b/structne_1_1Material_1_1GpuResources.html @@ -0,0 +1,146 @@ + + + + + + + +Nameless Engine: ne::Material::GpuResources Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::Material::GpuResources Struct Reference
    +
    +
    + +

    #include <Material.h>

    + + + + +

    +Classes

    struct  ShaderResources
     
    + + + +

    +Public Attributes

    ShaderResources shaderResources
     
    +

    Detailed Description

    +

    Stores internal GPU resources.

    +

    Member Data Documentation

    + +

    ◆ shaderResources

    + +
    +
    + + + + +
    ShaderResources ne::Material::GpuResources::shaderResources
    +
    +

    Shader GPU resources.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1Material_1_1GpuResources.js b/structne_1_1Material_1_1GpuResources.js new file mode 100644 index 000000000..13ebbb1a8 --- /dev/null +++ b/structne_1_1Material_1_1GpuResources.js @@ -0,0 +1,5 @@ +var structne_1_1Material_1_1GpuResources = +[ + [ "ShaderResources", "structne_1_1Material_1_1GpuResources_1_1ShaderResources.html", "structne_1_1Material_1_1GpuResources_1_1ShaderResources" ], + [ "shaderResources", "structne_1_1Material_1_1GpuResources.html#add66a9d862031e8607fe72a25e0b5081", null ] +]; \ No newline at end of file diff --git a/structne_1_1Material_1_1GpuResources_1_1ShaderResources-members.html b/structne_1_1Material_1_1GpuResources_1_1ShaderResources-members.html new file mode 100644 index 000000000..40aaeebbb --- /dev/null +++ b/structne_1_1Material_1_1GpuResources_1_1ShaderResources-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::Material::GpuResources::ShaderResources Member List
    +
    + +
    + + + + diff --git a/structne_1_1Material_1_1GpuResources_1_1ShaderResources.html b/structne_1_1Material_1_1GpuResources_1_1ShaderResources.html new file mode 100644 index 000000000..f9230446c --- /dev/null +++ b/structne_1_1Material_1_1GpuResources_1_1ShaderResources.html @@ -0,0 +1,157 @@ + + + + + + + +Nameless Engine: ne::Material::GpuResources::ShaderResources Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::Material::GpuResources::ShaderResources Struct Reference
    +
    +
    + +

    #include <Material.h>

    + + + + + + +

    +Public Attributes

    std::unordered_map< std::string, ShaderCpuWriteResourceBindingUniquePtrshaderCpuWriteResources
     
    std::unordered_map< std::string, ShaderTextureResourceBindingUniquePtrshaderTextureResources
     
    +

    Detailed Description

    +

    Stores resources used by shaders.

    +

    Member Data Documentation

    + +

    ◆ shaderCpuWriteResources

    + +
    +
    + + + + +
    std::unordered_map<std::string, ShaderCpuWriteResourceBindingUniquePtr> ne::Material::GpuResources::ShaderResources::shaderCpuWriteResources
    +
    +

    Shader single (non-array) resources with CPU write access.

    + +
    +
    + +

    ◆ shaderTextureResources

    + +
    +
    + + + + +
    std::unordered_map<std::string, ShaderTextureResourceBindingUniquePtr> ne::Material::GpuResources::ShaderResources::shaderTextureResources
    +
    +

    Shader resources that reference textures.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1Material_1_1GpuResources_1_1ShaderResources.js b/structne_1_1Material_1_1GpuResources_1_1ShaderResources.js new file mode 100644 index 000000000..4acb90613 --- /dev/null +++ b/structne_1_1Material_1_1GpuResources_1_1ShaderResources.js @@ -0,0 +1,5 @@ +var structne_1_1Material_1_1GpuResources_1_1ShaderResources = +[ + [ "shaderCpuWriteResources", "structne_1_1Material_1_1GpuResources_1_1ShaderResources.html#a2316dad7d5e37fe53732722e83043275", null ], + [ "shaderTextureResources", "structne_1_1Material_1_1GpuResources_1_1ShaderResources.html#a684000eb8f977f3ea4e0d196c90699bd", null ] +]; \ No newline at end of file diff --git a/structne_1_1Material_1_1InternalResources-members.html b/structne_1_1Material_1_1InternalResources-members.html new file mode 100644 index 000000000..e300c7ce8 --- /dev/null +++ b/structne_1_1Material_1_1InternalResources-members.html @@ -0,0 +1,115 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::Material::InternalResources Member List
    +
    + +
    + + + + diff --git a/structne_1_1Material_1_1InternalResources.html b/structne_1_1Material_1_1InternalResources.html new file mode 100644 index 000000000..bce4aad77 --- /dev/null +++ b/structne_1_1Material_1_1InternalResources.html @@ -0,0 +1,201 @@ + + + + + + + +Nameless Engine: ne::Material::InternalResources Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::Material::InternalResources Struct Reference
    +
    +
    + + + + + + + + + + +

    +Public Attributes

    PipelineSharedPtr pColorPipeline
     
    PipelineSharedPtr pDepthOnlyPipeline
     
    PipelineSharedPtr pShadowMappingDirectionalSpotPipeline
     
    PipelineSharedPtr pShadowMappingPointPipeline
     
    +

    Detailed Description

    +

    Groups internal data.

    +

    Member Data Documentation

    + +

    ◆ pColorPipeline

    + +
    +
    + + + + +
    PipelineSharedPtr ne::Material::InternalResources::pColorPipeline
    +
    +

    Used pipeline with pixel/fragment shader enabled.

    +
    Remarks
    This pipeline is considered to be the main pipeline while others might be optional.
    +
    +Only valid when the mesh that is using this material is spawned.
    + +
    +
    + +

    ◆ pDepthOnlyPipeline

    + +
    +
    + + + + +
    PipelineSharedPtr ne::Material::InternalResources::pDepthOnlyPipeline
    +
    +

    pColorPipeline but with only vertex shader (used for depth only passes).

    +
    Remarks
    Only valid when the mesh that is using this material is spawned.
    +
    +Only valid when material does not use transparency.
    + +
    +
    + +

    ◆ pShadowMappingDirectionalSpotPipeline

    + +
    +
    + + + + +
    PipelineSharedPtr ne::Material::InternalResources::pShadowMappingDirectionalSpotPipeline
    +
    +

    pDepthOnlyPipeline but with depth bias enabled (used for shadow passes of directional and spot lights).

    +
    Remarks
    Only valid when the mesh that is using this material is spawned.
    +
    +Only valid when material does not use transparency.
    + +
    +
    + +

    ◆ pShadowMappingPointPipeline

    + +
    +
    + + + + +
    PipelineSharedPtr ne::Material::InternalResources::pShadowMappingPointPipeline
    +
    +

    pShadowMappingDirectionalSpotPipeline but with a special fragment shader.

    +
    Remarks
    Only valid when the mesh that is using this material is spawned.
    +
    +Only valid when material does not use transparency.
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1Material_1_1InternalResources.js b/structne_1_1Material_1_1InternalResources.js new file mode 100644 index 000000000..7659dfdad --- /dev/null +++ b/structne_1_1Material_1_1InternalResources.js @@ -0,0 +1,7 @@ +var structne_1_1Material_1_1InternalResources = +[ + [ "pColorPipeline", "structne_1_1Material_1_1InternalResources.html#a277cd86f6cf7e36be7d85f27536db544", null ], + [ "pDepthOnlyPipeline", "structne_1_1Material_1_1InternalResources.html#ae3e97b93c9651a7ea3f5c67f2cd0aa31", null ], + [ "pShadowMappingDirectionalSpotPipeline", "structne_1_1Material_1_1InternalResources.html#a38f4850e92c9237fc5b001b27119b6d2", null ], + [ "pShadowMappingPointPipeline", "structne_1_1Material_1_1InternalResources.html#a37516c968251a24ef96906e5f691ac3c", null ] +]; \ No newline at end of file diff --git a/structne_1_1Material_1_1MaterialShaderConstants-members.html b/structne_1_1Material_1_1MaterialShaderConstants-members.html new file mode 100644 index 000000000..7512a679d --- /dev/null +++ b/structne_1_1Material_1_1MaterialShaderConstants-members.html @@ -0,0 +1,115 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::Material::MaterialShaderConstants Member List
    +
    + +
    + + + + diff --git a/structne_1_1Material_1_1MaterialShaderConstants.html b/structne_1_1Material_1_1MaterialShaderConstants.html new file mode 100644 index 000000000..be029c0e2 --- /dev/null +++ b/structne_1_1Material_1_1MaterialShaderConstants.html @@ -0,0 +1,190 @@ + + + + + + + +Nameless Engine: ne::Material::MaterialShaderConstants Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::Material::MaterialShaderConstants Struct Reference
    +
    +
    + + + + + + + + + + +

    +Public Attributes

    glm::vec4 diffuseColor = glm::vec4(1.0F, 1.0F, 1.0F, 1.0F)
     
    glm::vec4 specularColor = glm::vec4(1.0F, 1.0F, 1.0F, 1.0F)
     
    float roughness = 0.0F
     
    float pad [3]
     
    +

    Detailed Description

    +

    Constants used by shaders.

    +
    Remarks
    Should be exactly the same as constant buffer in shaders.
    +

    Member Data Documentation

    + +

    ◆ diffuseColor

    + +
    +
    + + + + +
    glm::vec4 ne::Material::MaterialShaderConstants::diffuseColor = glm::vec4(1.0F, 1.0F, 1.0F, 1.0F)
    +
    +

    Fill color. 4th component stores opacity when transparency is used.

    + +
    +
    + +

    ◆ pad

    + +
    +
    + + + + +
    float ne::Material::MaterialShaderConstants::pad[3]
    +
    +

    Explicit padding for clarity.

    + +
    +
    + +

    ◆ roughness

    + +
    +
    + + + + +
    float ne::Material::MaterialShaderConstants::roughness = 0.0F
    +
    +

    Defines how much specular light will be reflected.

    + +
    +
    + +

    ◆ specularColor

    + +
    +
    + + + + +
    glm::vec4 ne::Material::MaterialShaderConstants::specularColor = glm::vec4(1.0F, 1.0F, 1.0F, 1.0F)
    +
    +

    Reflected color. 4th component is not used.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1Material_1_1MaterialShaderConstants.js b/structne_1_1Material_1_1MaterialShaderConstants.js new file mode 100644 index 000000000..14d9d8520 --- /dev/null +++ b/structne_1_1Material_1_1MaterialShaderConstants.js @@ -0,0 +1,7 @@ +var structne_1_1Material_1_1MaterialShaderConstants = +[ + [ "diffuseColor", "structne_1_1Material_1_1MaterialShaderConstants.html#a920737578056900bed0cef285579d920", null ], + [ "pad", "structne_1_1Material_1_1MaterialShaderConstants.html#a0098ad99c73d03d504a54f056d15173b", null ], + [ "roughness", "structne_1_1Material_1_1MaterialShaderConstants.html#ae9b72621475b491112619bc1f825397c", null ], + [ "specularColor", "structne_1_1Material_1_1MaterialShaderConstants.html#aa5e1d39957d5d915ced0cdc6045cb83c", null ] +]; \ No newline at end of file diff --git a/structne_1_1MeshIndexBufferInfo-members.html b/structne_1_1MeshIndexBufferInfo-members.html new file mode 100644 index 000000000..2c1acdaff --- /dev/null +++ b/structne_1_1MeshIndexBufferInfo-members.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::MeshIndexBufferInfo Member List
    +
    +
    + +

    This is the complete list of members for ne::MeshIndexBufferInfo, including all inherited members.

    + + + + + +
    iIndexCountne::MeshIndexBufferInfo
    MeshIndexBufferInfo()=defaultne::MeshIndexBufferInfo
    MeshIndexBufferInfo(GpuResource *pIndexBuffer, unsigned int iIndexCount)ne::MeshIndexBufferInfoinline
    pIndexBufferne::MeshIndexBufferInfo
    +
    + + + + diff --git a/structne_1_1MeshIndexBufferInfo.html b/structne_1_1MeshIndexBufferInfo.html new file mode 100644 index 000000000..d02be3ee5 --- /dev/null +++ b/structne_1_1MeshIndexBufferInfo.html @@ -0,0 +1,236 @@ + + + + + + + +Nameless Engine: ne::MeshIndexBufferInfo Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::MeshIndexBufferInfo Struct Reference
    +
    +
    + +

    #include <MeshData.h>

    + + + + + + +

    +Public Member Functions

     MeshIndexBufferInfo ()=default
     
     MeshIndexBufferInfo (GpuResource *pIndexBuffer, unsigned int iIndexCount)
     
    + + + + + +

    +Public Attributes

    GpuResourcepIndexBuffer = nullptr
     
    unsigned int iIndexCount = 0
     
    +

    Detailed Description

    +

    Groups information about an index buffer of a mesh.

    +

    Constructor & Destructor Documentation

    + +

    ◆ MeshIndexBufferInfo() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    ne::MeshIndexBufferInfo::MeshIndexBufferInfo ()
    +
    +default
    +
    +

    Creates uninitialized object.

    + +
    +
    + +

    ◆ MeshIndexBufferInfo() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    ne::MeshIndexBufferInfo::MeshIndexBufferInfo (GpuResourcepIndexBuffer,
    unsigned int iIndexCount 
    )
    +
    +inline
    +
    +

    Initializes the object.

    +
    Parameters
    + + + +
    pIndexBufferIndex buffer that this material should display.
    iIndexCountThe total number of indices stores in the specified index buffer.
    +
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ iIndexCount

    + +
    +
    + + + + +
    unsigned int ne::MeshIndexBufferInfo::iIndexCount = 0
    +
    +

    The total number of indices stores in pIndexBuffer.

    + +
    +
    + +

    ◆ pIndexBuffer

    + +
    +
    + + + + +
    GpuResource* ne::MeshIndexBufferInfo::pIndexBuffer = nullptr
    +
    +

    A non-owning pointer to mesh's index buffer.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • src/engine_lib/private/render/general/resource/MeshData.h
    • +
    +
    +
    + + + + diff --git a/structne_1_1MeshIndexBufferInfo.js b/structne_1_1MeshIndexBufferInfo.js new file mode 100644 index 000000000..965cfeabe --- /dev/null +++ b/structne_1_1MeshIndexBufferInfo.js @@ -0,0 +1,7 @@ +var structne_1_1MeshIndexBufferInfo = +[ + [ "MeshIndexBufferInfo", "structne_1_1MeshIndexBufferInfo.html#a1fcff22232579cd89333e6275e5cb81c", null ], + [ "MeshIndexBufferInfo", "structne_1_1MeshIndexBufferInfo.html#a79e3e38504242948f9c8d0de18715bb0", null ], + [ "iIndexCount", "structne_1_1MeshIndexBufferInfo.html#aa68e0d1f424c71f0af9d8be9df5c2646", null ], + [ "pIndexBuffer", "structne_1_1MeshIndexBufferInfo.html#a88661886eccb725722526d89d0c77418", null ] +]; \ No newline at end of file diff --git a/structne_1_1MeshNode_1_1GpuResources-members.html b/structne_1_1MeshNode_1_1GpuResources-members.html new file mode 100644 index 000000000..be6416275 --- /dev/null +++ b/structne_1_1MeshNode_1_1GpuResources-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::MeshNode::GpuResources Member List
    +
    +
    + +

    This is the complete list of members for ne::MeshNode::GpuResources, including all inherited members.

    + + + + +
    GpuResources()=default (defined in ne::MeshNode::GpuResources)ne::MeshNode::GpuResources
    meshne::MeshNode::GpuResources
    shaderResourcesne::MeshNode::GpuResources
    +
    + + + + diff --git a/structne_1_1MeshNode_1_1GpuResources.html b/structne_1_1MeshNode_1_1GpuResources.html new file mode 100644 index 000000000..783408765 --- /dev/null +++ b/structne_1_1MeshNode_1_1GpuResources.html @@ -0,0 +1,165 @@ + + + + + + + +Nameless Engine: ne::MeshNode::GpuResources Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::MeshNode::GpuResources Struct Reference
    +
    +
    + +

    #include <MeshNode.h>

    + + + + + + +

    +Classes

    struct  Mesh
     
    struct  ShaderResources
     
    + + + + + +

    +Public Attributes

    Mesh mesh
     
    ShaderResources shaderResources
     
    +

    Detailed Description

    +

    Stores internal GPU resources.

    +

    Member Data Documentation

    + +

    ◆ mesh

    + +
    +
    + + + + +
    Mesh ne::MeshNode::GpuResources::mesh
    +
    +

    Mesh GPU resources.

    + +
    +
    + +

    ◆ shaderResources

    + +
    +
    + + + + +
    ShaderResources ne::MeshNode::GpuResources::shaderResources
    +
    +

    Shader GPU resources.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1MeshNode_1_1GpuResources.js b/structne_1_1MeshNode_1_1GpuResources.js new file mode 100644 index 000000000..920e724a3 --- /dev/null +++ b/structne_1_1MeshNode_1_1GpuResources.js @@ -0,0 +1,7 @@ +var structne_1_1MeshNode_1_1GpuResources = +[ + [ "Mesh", "structne_1_1MeshNode_1_1GpuResources_1_1Mesh.html", "structne_1_1MeshNode_1_1GpuResources_1_1Mesh" ], + [ "ShaderResources", "structne_1_1MeshNode_1_1GpuResources_1_1ShaderResources.html", "structne_1_1MeshNode_1_1GpuResources_1_1ShaderResources" ], + [ "mesh", "structne_1_1MeshNode_1_1GpuResources.html#acc81b1bb266f1e7318dc387ae2a7b881", null ], + [ "shaderResources", "structne_1_1MeshNode_1_1GpuResources.html#ad66faf255758b1f237a039a2f8f63836", null ] +]; \ No newline at end of file diff --git a/structne_1_1MeshNode_1_1GpuResources_1_1Mesh-members.html b/structne_1_1MeshNode_1_1GpuResources_1_1Mesh-members.html new file mode 100644 index 000000000..15ff2adfa --- /dev/null +++ b/structne_1_1MeshNode_1_1GpuResources_1_1Mesh-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::MeshNode::GpuResources::Mesh Member List
    +
    + +
    + + + + diff --git a/structne_1_1MeshNode_1_1GpuResources_1_1Mesh.html b/structne_1_1MeshNode_1_1GpuResources_1_1Mesh.html new file mode 100644 index 000000000..398bc53e0 --- /dev/null +++ b/structne_1_1MeshNode_1_1GpuResources_1_1Mesh.html @@ -0,0 +1,157 @@ + + + + + + + +Nameless Engine: ne::MeshNode::GpuResources::Mesh Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::MeshNode::GpuResources::Mesh Struct Reference
    +
    +
    + +

    #include <MeshNode.h>

    + + + + + + +

    +Public Attributes

    std::unique_ptr< GpuResourcepVertexBuffer
     
    std::vector< std::unique_ptr< GpuResource > > vIndexBuffers
     
    +

    Detailed Description

    +

    Stores mesh GPU resources.

    +

    Member Data Documentation

    + +

    ◆ pVertexBuffer

    + +
    +
    + + + + +
    std::unique_ptr<GpuResource> ne::MeshNode::GpuResources::Mesh::pVertexBuffer
    +
    +

    Stores mesh vertices.

    + +
    +
    + +

    ◆ vIndexBuffers

    + +
    +
    + + + + +
    std::vector<std::unique_ptr<GpuResource> > ne::MeshNode::GpuResources::Mesh::vIndexBuffers
    +
    +

    Stores one index buffer per material slot.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1MeshNode_1_1GpuResources_1_1Mesh.js b/structne_1_1MeshNode_1_1GpuResources_1_1Mesh.js new file mode 100644 index 000000000..938b6b367 --- /dev/null +++ b/structne_1_1MeshNode_1_1GpuResources_1_1Mesh.js @@ -0,0 +1,5 @@ +var structne_1_1MeshNode_1_1GpuResources_1_1Mesh = +[ + [ "pVertexBuffer", "structne_1_1MeshNode_1_1GpuResources_1_1Mesh.html#a42b97502296e7fad55050ecef18ae7d3", null ], + [ "vIndexBuffers", "structne_1_1MeshNode_1_1GpuResources_1_1Mesh.html#af18854ea11eef5748addf73bd45a882d", null ] +]; \ No newline at end of file diff --git a/structne_1_1MeshNode_1_1GpuResources_1_1ShaderResources-members.html b/structne_1_1MeshNode_1_1GpuResources_1_1ShaderResources-members.html new file mode 100644 index 000000000..9b256f7c3 --- /dev/null +++ b/structne_1_1MeshNode_1_1GpuResources_1_1ShaderResources-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::MeshNode::GpuResources::ShaderResources Member List
    +
    + +
    + + + + diff --git a/structne_1_1MeshNode_1_1GpuResources_1_1ShaderResources.html b/structne_1_1MeshNode_1_1GpuResources_1_1ShaderResources.html new file mode 100644 index 000000000..1c1800336 --- /dev/null +++ b/structne_1_1MeshNode_1_1GpuResources_1_1ShaderResources.html @@ -0,0 +1,157 @@ + + + + + + + +Nameless Engine: ne::MeshNode::GpuResources::ShaderResources Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::MeshNode::GpuResources::ShaderResources Struct Reference
    +
    +
    + +

    #include <MeshNode.h>

    + + + + + + +

    +Public Attributes

    std::unordered_map< std::string, ShaderCpuWriteResourceBindingUniquePtrshaderCpuWriteResourceBindings
     
    std::unordered_map< std::string, ShaderTextureResourceBindingUniquePtrshaderTextureResources
     
    +

    Detailed Description

    +

    Stores resources used by shaders.

    +

    Member Data Documentation

    + +

    ◆ shaderCpuWriteResourceBindings

    + +
    +
    + + + + +
    std::unordered_map<std::string, ShaderCpuWriteResourceBindingUniquePtr> ne::MeshNode::GpuResources::ShaderResources::shaderCpuWriteResourceBindings
    +
    +

    Single (non-array) shader resource bindings with CPU write access.

    + +
    +
    + +

    ◆ shaderTextureResources

    + +
    +
    + + + + +
    std::unordered_map<std::string, ShaderTextureResourceBindingUniquePtr> ne::MeshNode::GpuResources::ShaderResources::shaderTextureResources
    +
    +

    Shader resource bindings that reference textures.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1MeshNode_1_1GpuResources_1_1ShaderResources.js b/structne_1_1MeshNode_1_1GpuResources_1_1ShaderResources.js new file mode 100644 index 000000000..4be0604d4 --- /dev/null +++ b/structne_1_1MeshNode_1_1GpuResources_1_1ShaderResources.js @@ -0,0 +1,5 @@ +var structne_1_1MeshNode_1_1GpuResources_1_1ShaderResources = +[ + [ "shaderCpuWriteResourceBindings", "structne_1_1MeshNode_1_1GpuResources_1_1ShaderResources.html#ab50423922bd9432b8acea0b41ac4cef9", null ], + [ "shaderTextureResources", "structne_1_1MeshNode_1_1GpuResources_1_1ShaderResources.html#a4811058857d732063d3e9fc42a54a82f", null ] +]; \ No newline at end of file diff --git a/structne_1_1MeshNode_1_1MeshShaderConstants-members.html b/structne_1_1MeshNode_1_1MeshShaderConstants-members.html new file mode 100644 index 000000000..c84dc8ed8 --- /dev/null +++ b/structne_1_1MeshNode_1_1MeshShaderConstants-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::MeshNode::MeshShaderConstants Member List
    +
    +
    + +

    This is the complete list of members for ne::MeshNode::MeshShaderConstants, including all inherited members.

    + + + + +
    MeshShaderConstants()=default (defined in ne::MeshNode::MeshShaderConstants)ne::MeshNode::MeshShaderConstants
    normalMatrixne::MeshNode::MeshShaderConstants
    worldMatrixne::MeshNode::MeshShaderConstants
    +
    + + + + diff --git a/structne_1_1MeshNode_1_1MeshShaderConstants.html b/structne_1_1MeshNode_1_1MeshShaderConstants.html new file mode 100644 index 000000000..7d6a28bda --- /dev/null +++ b/structne_1_1MeshNode_1_1MeshShaderConstants.html @@ -0,0 +1,159 @@ + + + + + + + +Nameless Engine: ne::MeshNode::MeshShaderConstants Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::MeshNode::MeshShaderConstants Struct Reference
    +
    +
    + +

    #include <MeshNode.h>

    + + + + + + +

    +Public Attributes

    glm::mat4x4 worldMatrix = glm::identity<glm::mat4x4>()
     
    glm::mat4x4 normalMatrix = glm::identity<glm::mat4x4>()
     
    +

    Detailed Description

    +

    Constants used by shaders.

    +
    Remarks
    Should be exactly the same as constant buffer in shaders.
    +

    Member Data Documentation

    + +

    ◆ normalMatrix

    + +
    +
    + + + + +
    glm::mat4x4 ne::MeshNode::MeshShaderConstants::normalMatrix = glm::identity<glm::mat4x4>()
    +
    +

    3x3 matrix for transforming normals from model space to world space.

    +
    Remarks
    Using 4x4 matrix for shader alignment/packing simplicity.
    + +
    +
    + +

    ◆ worldMatrix

    + +
    +
    + + + + +
    glm::mat4x4 ne::MeshNode::MeshShaderConstants::worldMatrix = glm::identity<glm::mat4x4>()
    +
    +

    Matrix to transform positions from model space to worldMatrix space.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1MeshNode_1_1MeshShaderConstants.js b/structne_1_1MeshNode_1_1MeshShaderConstants.js new file mode 100644 index 000000000..378112905 --- /dev/null +++ b/structne_1_1MeshNode_1_1MeshShaderConstants.js @@ -0,0 +1,5 @@ +var structne_1_1MeshNode_1_1MeshShaderConstants = +[ + [ "normalMatrix", "structne_1_1MeshNode_1_1MeshShaderConstants.html#af4f40275001b0c5eddbaa8a1f4b9416d", null ], + [ "worldMatrix", "structne_1_1MeshNode_1_1MeshShaderConstants.html#a102c41da3163c4d34f8d370345cd4424", null ] +]; \ No newline at end of file diff --git a/structne_1_1MeshNodesThatUseThisMaterial-members.html b/structne_1_1MeshNodesThatUseThisMaterial-members.html new file mode 100644 index 000000000..7a6c66c4a --- /dev/null +++ b/structne_1_1MeshNodesThatUseThisMaterial-members.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::MeshNodesThatUseThisMaterial Member List
    +
    + +
    + + + + diff --git a/structne_1_1MeshNodesThatUseThisMaterial.html b/structne_1_1MeshNodesThatUseThisMaterial.html new file mode 100644 index 000000000..82981337c --- /dev/null +++ b/structne_1_1MeshNodesThatUseThisMaterial.html @@ -0,0 +1,227 @@ + + + + + + + +Nameless Engine: ne::MeshNodesThatUseThisMaterial Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::MeshNodesThatUseThisMaterial Struct Reference
    +
    +
    + +

    #include <Material.h>

    + + + + + + +

    +Public Member Functions

    size_t getTotalSize () const
     
    bool isMeshNodeAdded (MeshNode *pMeshNode)
     
    + + + + + +

    +Public Attributes

    std::unordered_map< MeshNode *, std::vector< MeshIndexBufferInfo > > visibleMeshNodes
     
    std::unordered_map< MeshNode *, std::vector< MeshIndexBufferInfo > > invisibleMeshNodes
     
    +

    Detailed Description

    +

    Groups mesh nodes by visibility.

    +

    Member Function Documentation

    + +

    ◆ getTotalSize()

    + +
    +
    + + + + + +
    + + + + + + + +
    size_t ne::MeshNodesThatUseThisMaterial::getTotalSize () const
    +
    +inline
    +
    +

    Returns total number of visible and invisible mesh nodes that use this material.

    +
    Returns
    Total number of nodes that use this material.
    + +
    +
    + +

    ◆ isMeshNodeAdded()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool ne::MeshNodesThatUseThisMaterial::isMeshNodeAdded (MeshNodepMeshNode)
    +
    +inline
    +
    +

    Tells whether the specified node is already added to be considered.

    +
    Parameters
    + + +
    pMeshNodeMesh node to check.
    +
    +
    +
    Returns
    Whether the node is added or not.
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ invisibleMeshNodes

    + +
    +
    + + + + +
    std::unordered_map<MeshNode*, std::vector<MeshIndexBufferInfo> > ne::MeshNodesThatUseThisMaterial::invisibleMeshNodes
    +
    +

    Stores pairs of "invisible mesh node" - "index buffers of that mesh that use this material".

    + +
    +
    + +

    ◆ visibleMeshNodes

    + +
    +
    + + + + +
    std::unordered_map<MeshNode*, std::vector<MeshIndexBufferInfo> > ne::MeshNodesThatUseThisMaterial::visibleMeshNodes
    +
    +

    Stores pairs of "visible mesh node" - "index buffers of that mesh that use this material".

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1MeshNodesThatUseThisMaterial.js b/structne_1_1MeshNodesThatUseThisMaterial.js new file mode 100644 index 000000000..f6f1c66b3 --- /dev/null +++ b/structne_1_1MeshNodesThatUseThisMaterial.js @@ -0,0 +1,7 @@ +var structne_1_1MeshNodesThatUseThisMaterial = +[ + [ "getTotalSize", "structne_1_1MeshNodesThatUseThisMaterial.html#a4438de4195dde12a63c9f67b8f67d3fc", null ], + [ "isMeshNodeAdded", "structne_1_1MeshNodesThatUseThisMaterial.html#a07aa808e0d4a11b9cdcf541bbce3952d", null ], + [ "invisibleMeshNodes", "structne_1_1MeshNodesThatUseThisMaterial.html#add5c887811c2c85f3ad2be92276f1a9f", null ], + [ "visibleMeshNodes", "structne_1_1MeshNodesThatUseThisMaterial.html#a6053dd4f494b604703ed75084a721cc2", null ] +]; \ No newline at end of file diff --git a/structne_1_1MeshVertex-members.html b/structne_1_1MeshVertex-members.html new file mode 100644 index 000000000..99d90fd94 --- /dev/null +++ b/structne_1_1MeshVertex-members.html @@ -0,0 +1,120 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::MeshVertex Member List
    +
    +
    + +

    This is the complete list of members for ne::MeshVertex, including all inherited members.

    + + + + + + + + + + + +
    MeshVertex()=default (defined in ne::MeshVertex)ne::MeshVertex
    MeshVertex(const MeshVertex &)=defaultne::MeshVertex
    MeshVertex(MeshVertex &&) noexcept=defaultne::MeshVertex
    normalne::MeshVertex
    operator=(const MeshVertex &)=defaultne::MeshVertex
    operator=(MeshVertex &&) noexcept=defaultne::MeshVertex
    operator==(const MeshVertex &other) constne::MeshVertex
    positionne::MeshVertex
    uvne::MeshVertex
    ~MeshVertex()=default (defined in ne::MeshVertex)ne::MeshVertex
    +
    + + + + diff --git a/structne_1_1MeshVertex.html b/structne_1_1MeshVertex.html new file mode 100644 index 000000000..13c3d0302 --- /dev/null +++ b/structne_1_1MeshVertex.html @@ -0,0 +1,328 @@ + + + + + + + +Nameless Engine: ne::MeshVertex Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::MeshVertex Struct Reference
    +
    +
    + +

    #include <MeshData.h>

    + + + + + + + + + + + + +

    +Public Member Functions

     MeshVertex (const MeshVertex &)=default
     
    MeshVertexoperator= (const MeshVertex &)=default
     
     MeshVertex (MeshVertex &&) noexcept=default
     
    MeshVertexoperator= (MeshVertex &&) noexcept=default
     
    bool operator== (const MeshVertex &other) const
     
    + + + + + + + +

    +Public Attributes

    glm::vec3 position = glm::vec3(0.0f, 0.0f, 0.0f)
     
    glm::vec3 normal = glm::vec3(0.0f, 0.0f, 0.0f)
     
    glm::vec2 uv = glm::vec2(0.0f, 0.0f)
     
    +

    Detailed Description

    +

    Vertex of a mesh.

    +
    Remarks
    Equal to the vertex struct we use in shaders.
    +

    Constructor & Destructor Documentation

    + +

    ◆ MeshVertex() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    ne::MeshVertex::MeshVertex (const MeshVertex)
    +
    +default
    +
    +

    Copy constructor.

    + +
    +
    + +

    ◆ MeshVertex() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    ne::MeshVertex::MeshVertex (MeshVertex && )
    +
    +defaultnoexcept
    +
    +

    Move constructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ operator=() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    MeshVertex & ne::MeshVertex::operator= (const MeshVertex)
    +
    +default
    +
    +

    Copy assignment.

    +
    Returns
    This.
    + +
    +
    + +

    ◆ operator=() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    MeshVertex & ne::MeshVertex::operator= (MeshVertex && )
    +
    +defaultnoexcept
    +
    +

    Move assignment.

    +
    Returns
    This.
    + +
    +
    + +

    ◆ operator==()

    + +
    +
    + + + + + + + + +
    bool ne::MeshVertex::operator== (const MeshVertexother) const
    +
    +

    Equality operator.

    +
    Parameters
    + + +
    otherOther object.
    +
    +
    +
    Returns
    Whether objects are equal or not.
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ normal

    + +
    +
    + + + + +
    glm::vec3 ne::MeshVertex::normal = glm::vec3(0.0f, 0.0f, 0.0f)
    +
    +

    Normal vector of the vertex.

    + +
    +
    + +

    ◆ position

    + +
    +
    + + + + +
    glm::vec3 ne::MeshVertex::position = glm::vec3(0.0f, 0.0f, 0.0f)
    +
    +

    Position of the vertex in a 3D space.

    + +
    +
    + +

    ◆ uv

    + +
    +
    + + + + +
    glm::vec2 ne::MeshVertex::uv = glm::vec2(0.0f, 0.0f)
    +
    +

    UV coordinates of the vertex.

    + +
    +
    +
    The documentation for this struct was generated from the following files:
      +
    • src/engine_lib/private/render/general/resource/MeshData.h
    • +
    • src/engine_lib/private/game/nodes/MeshNode.cpp
    • +
    +
    +
    + + + + diff --git a/structne_1_1MeshVertex.js b/structne_1_1MeshVertex.js new file mode 100644 index 000000000..c6771f7d1 --- /dev/null +++ b/structne_1_1MeshVertex.js @@ -0,0 +1,11 @@ +var structne_1_1MeshVertex = +[ + [ "MeshVertex", "structne_1_1MeshVertex.html#af564b14fe07bd82d61d4c20057cf8bb7", null ], + [ "MeshVertex", "structne_1_1MeshVertex.html#abefb00d0d68519994453e8c082939712", null ], + [ "operator=", "structne_1_1MeshVertex.html#aebeda482bc16965a3e31d56721f009eb", null ], + [ "operator=", "structne_1_1MeshVertex.html#a9d31336ab8a0cb1c4f16e4dd2b2f418f", null ], + [ "operator==", "structne_1_1MeshVertex.html#ae2a97b7a3946b917de1df6ef8c68f9c0", null ], + [ "normal", "structne_1_1MeshVertex.html#a3cb4ef9b868401205f185f9bbaf56783", null ], + [ "position", "structne_1_1MeshVertex.html#af2d2908d2dbe52eea09963aecdd4e0d7", null ], + [ "uv", "structne_1_1MeshVertex.html#aa800c7557f4e88006613c2df43ef9fa4", null ] +]; \ No newline at end of file diff --git a/structne_1_1Node_1_1SerializableObjectInformationWithGcPointer-members.html b/structne_1_1Node_1_1SerializableObjectInformationWithGcPointer-members.html new file mode 100644 index 000000000..e026a6d4c --- /dev/null +++ b/structne_1_1Node_1_1SerializableObjectInformationWithGcPointer-members.html @@ -0,0 +1,118 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::Node::SerializableObjectInformationWithGcPointer Member List
    +
    +
    + +

    This is the complete list of members for ne::Node::SerializableObjectInformationWithGcPointer, including all inherited members.

    + + + + + + + + + +
    customAttributesne::SerializableObjectInformation
    pDeserializedOriginalObjectne::Node::SerializableObjectInformationWithGcPointer
    pObjectne::SerializableObjectInformation
    pOriginalObjectne::SerializableObjectInformation
    SerializableObjectInformation()=delete (defined in ne::SerializableObjectInformation)ne::SerializableObjectInformation
    SerializableObjectInformation(Serializable *pObject, const std::string &sObjectUniqueId, const std::unordered_map< std::string, std::string > &customAttributes={}, Serializable *pOriginalObject=nullptr)ne::SerializableObjectInformationinline
    SerializableObjectInformationWithGcPointer(Serializable *pObject, const std::string &sObjectUniqueId, const std::unordered_map< std::string, std::string > &customAttributes={}, Serializable *pOriginalObject=nullptr, sgc::GcPtr< Node > pDeserializedOriginalObject=nullptr)ne::Node::SerializableObjectInformationWithGcPointerinline
    sObjectUniqueIdne::SerializableObjectInformation
    +
    + + + + diff --git a/structne_1_1Node_1_1SerializableObjectInformationWithGcPointer.html b/structne_1_1Node_1_1SerializableObjectInformationWithGcPointer.html new file mode 100644 index 000000000..d997083ef --- /dev/null +++ b/structne_1_1Node_1_1SerializableObjectInformationWithGcPointer.html @@ -0,0 +1,231 @@ + + + + + + + +Nameless Engine: ne::Node::SerializableObjectInformationWithGcPointer Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::Node::SerializableObjectInformationWithGcPointer Struct Reference
    +
    +
    +
    +Inheritance diagram for ne::Node::SerializableObjectInformationWithGcPointer:
    +
    +
    + + +ne::SerializableObjectInformation + +
    + + + + + + + +

    +Public Member Functions

     SerializableObjectInformationWithGcPointer (Serializable *pObject, const std::string &sObjectUniqueId, const std::unordered_map< std::string, std::string > &customAttributes={}, Serializable *pOriginalObject=nullptr, sgc::GcPtr< Node > pDeserializedOriginalObject=nullptr)
     
    - Public Member Functions inherited from ne::SerializableObjectInformation
     SerializableObjectInformation (Serializable *pObject, const std::string &sObjectUniqueId, const std::unordered_map< std::string, std::string > &customAttributes={}, Serializable *pOriginalObject=nullptr)
     
    + + + + + + + + + + + + +

    +Public Attributes

    sgc::GcPtr< NodepDeserializedOriginalObject = nullptr
     
    - Public Attributes inherited from ne::SerializableObjectInformation
    SerializablepObject = nullptr
     
    SerializablepOriginalObject = nullptr
     
    std::string sObjectUniqueId
     
    std::unordered_map< std::string, std::string > customAttributes
     
    +

    Detailed Description

    +

    Small helper struct to temporary hold a GC pointer for serializeNodeTree.

    +

    Constructor & Destructor Documentation

    + +

    ◆ SerializableObjectInformationWithGcPointer()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ne::Node::SerializableObjectInformationWithGcPointer::SerializableObjectInformationWithGcPointer (SerializablepObject,
    const std::string & sObjectUniqueId,
    const std::unordered_map< std::string, std::string > & customAttributes = {},
    SerializablepOriginalObject = nullptr,
    sgc::GcPtr< NodepDeserializedOriginalObject = nullptr 
    )
    +
    +inline
    +
    +

    Initialized object information for serialization.

    +
    Parameters
    + + + + + + +
    pObjectObject to serialize.
    sObjectUniqueIdObject's unique ID. Don't use dots in IDs.
    customAttributesOptional. Pairs of values to serialize with this object.
    pOriginalObjectOptional. Use if the object was previously deserialized and you now want to only serialize changed fields of this object and additionally store the path to the original file (to deserialize unchanged fields).
    pDeserializedOriginalObjectOptional. GC pointer to original object.
    +
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ pDeserializedOriginalObject

    + +
    +
    + + + + +
    sgc::GcPtr<Node> ne::Node::SerializableObjectInformationWithGcPointer::pDeserializedOriginalObject = nullptr
    +
    +

    GC pointer to the deserialized original object.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • src/engine_lib/public/game/nodes/Node.h
    • +
    +
    +
    + + + + diff --git a/structne_1_1Node_1_1SerializableObjectInformationWithGcPointer.js b/structne_1_1Node_1_1SerializableObjectInformationWithGcPointer.js new file mode 100644 index 000000000..8402d0332 --- /dev/null +++ b/structne_1_1Node_1_1SerializableObjectInformationWithGcPointer.js @@ -0,0 +1,5 @@ +var structne_1_1Node_1_1SerializableObjectInformationWithGcPointer = +[ + [ "SerializableObjectInformationWithGcPointer", "structne_1_1Node_1_1SerializableObjectInformationWithGcPointer.html#a8f02d725d788ebfb96b0aa6b2374ec87", null ], + [ "pDeserializedOriginalObject", "structne_1_1Node_1_1SerializableObjectInformationWithGcPointer.html#a59b594e2949f9db073a22112b619e016", null ] +]; \ No newline at end of file diff --git a/structne_1_1Node_1_1SerializableObjectInformationWithGcPointer.png b/structne_1_1Node_1_1SerializableObjectInformationWithGcPointer.png new file mode 100644 index 0000000000000000000000000000000000000000..e42d14574502db330ab2260aca987a05a9f4f9ba GIT binary patch literal 1101 zcmeAS@N?(olHy`uVBq!ia0y~yV6+6X12~w0Wa#EkPl1$lfKQ0)|NsAi%olIImi8Z7 zZegHVATj;SivtG^0L6nRU0wl{<17jC3uXZF!N8np_7w&O<{O?ajv*C{Z|A-)dac0I zGCfso^ZWlt)WwsJoLzbKOONs5Yq!~!czlRlu>XYR^MG@f^F@q2+dMu^X_E1*5_#fr zX|aO)Bso^gNnc*9Ke6;Tzvu5OAOBuHl(F2qqcc+|)x-Ug&EzR6Ke_)3TJBDrlw)ex zQ}In;wE=HWd4yfhTjM8}zU|AM`gZ=eU6p^PJq)dFQ_T`u<~cbnXh> zNXG2Bw^LMJUROVntDrThs^Zl&b-S}y>|$%Xj-Ls6E*0$iZHcjkxuEBz_5D|3Hh+8e z=;hT(+V7OVpZk5_N~-y+3cYDwla_yVEOHJunEY(VR@0J4ue@uD zKB2y+(-U86e>w1_?@m&|&C6LQx6V#Xs?9n2%}4wCX`Au=+Ct_pCtrERDc;&w%UY!JQ~t~AwUeH(i-JOBy<)j(L3~KDN~J0&a5PR# zT;lH7r((-hr1J9O+?aEg?M3H)&S7}4X&0jd2ZNv13C0HJ?a>RE8$NRtF+8{+8v|rs z1~G#Rm>K$;WEd($o-iC(tia9y3~YuE8bI~#j(iL@ASHnlsHS9{uinxrPMS+gf;=XP zOj;7mRW#{I;DpI4{Y`UJDn*{CoLuZ&q#yj+V2Ay!9u>5xRzC@h>hqnxzm22+Zcf+x zrns`Q@8r$DI!Qh;eHQ0Gyip8Gl#+OV?!=kA6I&ndx~gwp?4l>?$M&ms-4Y!)>#XE= zrOCD1%=hqa1Eql9byk;O-+z2QZ|lNsDXlG~^Hf$_&Wq2ApBm}4{g>^^lQ$==PR+^M z#aGTT*Wc2n^mOtZGmqkwSHI(DzKTg+b#mTp>FN8T^5jpi+c#mh<*hlfXHCmC-@WO! zE88pR)s;!c%agZFl%Kil&EdPH8y-c?5iVYs{cfk`n|EH4CvIAAdh+HZukS&hS&y%! znFK!*SbxITC;#NlDfa5u8{ePGh`2QCPQ^yQ?7STz$CupQJuCVbm#x8G>}|_k^WL&rU;bY4eD(Cr=i>jL_s_m9ygKz#^lam#DF451E5k2G z&)ycs_g60IUUWO(1$ATduuSn~k$q3T6#@aVPgGti?Yh^cvN9YL6M7!+ vtPjL)dZzO77iR2O@0=3EwRFlQ%fHNzLm95A)^1$~%=iqRu6{1-oD!M<)dLl9 literal 0 HcmV?d00001 diff --git a/structne_1_1PipelineManager_1_1ComputePipelines-members.html b/structne_1_1PipelineManager_1_1ComputePipelines-members.html new file mode 100644 index 000000000..7efd0a76a --- /dev/null +++ b/structne_1_1PipelineManager_1_1ComputePipelines-members.html @@ -0,0 +1,120 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::PipelineManager::ComputePipelines Member List
    +
    +
    + +

    This is the complete list of members for ne::PipelineManager::ComputePipelines, including all inherited members.

    + + + + + + + + + + + +
    ComputePipelines()=default (defined in ne::PipelineManager::ComputePipelines)ne::PipelineManager::ComputePipelines
    ComputePipelines(const ComputePipelines &)=delete (defined in ne::PipelineManager::ComputePipelines)ne::PipelineManager::ComputePipelines
    getComputePipelineCount()ne::PipelineManager::ComputePipelines
    getComputePipelineForShader(PipelineManager *pPipelineManager, ComputeShaderInterface *pComputeShaderInterface)ne::PipelineManager::ComputePipelines
    getComputeShadersForGraphicsQueueExecution()ne::PipelineManager::ComputePipelinesinline
    mtxResourcesne::PipelineManager::ComputePipelinesprivate
    onPipelineNoLongerUsedByComputeShaderInterface(const std::string &sComputeShaderName, ComputeShaderInterface *pComputeShaderInterface)ne::PipelineManager::ComputePipelines
    operator=(const ComputePipelines &)=delete (defined in ne::PipelineManager::ComputePipelines)ne::PipelineManager::ComputePipelines
    queueComputeShaderInterfaceForExecution(std::unordered_map< Pipeline *, std::unordered_set< ComputeShaderInterface * > > &pipelineShaders, ComputeShaderInterface *pComputeShaderInterface)ne::PipelineManager::ComputePipelinesprivatestatic
    queueShaderExecutionOnGraphicsQueue(ComputeShaderInterface *pComputeShaderInterface)ne::PipelineManager::ComputePipelines
    +
    + + + + diff --git a/structne_1_1PipelineManager_1_1ComputePipelines.html b/structne_1_1PipelineManager_1_1ComputePipelines.html new file mode 100644 index 000000000..bbb0690eb --- /dev/null +++ b/structne_1_1PipelineManager_1_1ComputePipelines.html @@ -0,0 +1,376 @@ + + + + + + + +Nameless Engine: ne::PipelineManager::ComputePipelines Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::PipelineManager::ComputePipelines Struct Reference
    +
    +
    + + + + +

    +Classes

    struct  Resources
     
    + + + + + + + + + + + + + + + +

    +Public Member Functions

    ComputePipelines (const ComputePipelines &)=delete
     
    +ComputePipelinesoperator= (const ComputePipelines &)=delete
     
    std::variant< PipelineSharedPtr, ErrorgetComputePipelineForShader (PipelineManager *pPipelineManager, ComputeShaderInterface *pComputeShaderInterface)
     
    std::optional< ErroronPipelineNoLongerUsedByComputeShaderInterface (const std::string &sComputeShaderName, ComputeShaderInterface *pComputeShaderInterface)
     
    std::optional< ErrorqueueShaderExecutionOnGraphicsQueue (ComputeShaderInterface *pComputeShaderInterface)
     
    size_t getComputePipelineCount ()
     
    std::pair< std::recursive_mutex *, QueuedForExecutionComputeShaders * > getComputeShadersForGraphicsQueueExecution ()
     
    + + + +

    +Static Private Member Functions

    static std::optional< ErrorqueueComputeShaderInterfaceForExecution (std::unordered_map< Pipeline *, std::unordered_set< ComputeShaderInterface * > > &pipelineShaders, ComputeShaderInterface *pComputeShaderInterface)
     
    + + + +

    +Private Attributes

    std::pair< std::recursive_mutex, ResourcesmtxResources
     
    +

    Detailed Description

    +

    Groups information about compute pipelines.

    +

    Member Function Documentation

    + +

    ◆ getComputePipelineCount()

    + +
    +
    + + + + + + + +
    size_t ne::PipelineManager::ComputePipelines::getComputePipelineCount ()
    +
    +

    Returns the total number of existing compute pipelines.

    +
    Returns
    Number of compute pipelines.
    + +
    +
    + +

    ◆ getComputePipelineForShader()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::variant< PipelineSharedPtr, Error > ne::PipelineManager::ComputePipelines::getComputePipelineForShader (PipelineManagerpPipelineManager,
    ComputeShaderInterfacepComputeShaderInterface 
    )
    +
    +

    Look for already created pipeline that uses the specified shader and returns it, otherwise creates a new pipeline.

    +
    Remarks
    If creating a new pipeline, loads the specified shader from disk into the memory, it will be released from the memory once the pipeline object is destroyed (not the shared pointer) and no other object is using it.
    +
    Parameters
    + + + +
    pPipelineManagerPipeline manager.
    pComputeShaderInterfaceCompute shader interface to add.
    +
    +
    +
    Returns
    Error if something went wrong, otherwise compute pipeline.
    + +
    +
    + +

    ◆ getComputeShadersForGraphicsQueueExecution()

    + +
    +
    + + + + + +
    + + + + + + + +
    std::pair< std::recursive_mutex *, QueuedForExecutionComputeShaders * > ne::PipelineManager::ComputePipelines::getComputeShadersForGraphicsQueueExecution ()
    +
    +inline
    +
    +

    Returns all compute shaders and their pipelines to be executed on the graphics queue.

    +
    Warning
    Do not delete (free) returned pointers.
    +
    Returns
    Shaders and pipelines.
    + +
    +
    + +

    ◆ onPipelineNoLongerUsedByComputeShaderInterface()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::optional< Error > ne::PipelineManager::ComputePipelines::onPipelineNoLongerUsedByComputeShaderInterface (const std::string & sComputeShaderName,
    ComputeShaderInterfacepComputeShaderInterface 
    )
    +
    +

    Removes the specified compute shader interface and if no other interface references the compute pipeline (that the shader used) also destroys the pipeline.

    +
    Remarks
    If you used getComputePipelineForShader to get a compute pipeline for your shader you don't need to call this function as it will be automatically called by PipelineSharedPtr's destructor.
    +
    Parameters
    + + + +
    sComputeShaderNameName of the compute shader that compute pipeline uses.
    pComputeShaderInterfaceCompute shader interface to remove.
    +
    +
    +
    Returns
    Error if something went wrong.
    + +
    +
    + +

    ◆ queueComputeShaderInterfaceForExecution()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    std::optional< Error > ne::PipelineManager::ComputePipelines::queueComputeShaderInterfaceForExecution (std::unordered_map< Pipeline *, std::unordered_set< ComputeShaderInterface * > > & pipelineShaders,
    ComputeShaderInterfacepComputeShaderInterface 
    )
    +
    +staticprivate
    +
    +

    Adds a compute shader interface to the specified map to be executed.

    +
    Warning
    Expects that mtxResources is locked during the function call.
    +
    Parameters
    + + + +
    pipelineShadersMap to add the new interface to.
    pComputeShaderInterfaceInterface to add.
    +
    +
    +
    Returns
    Error if something went wrong.
    + +
    +
    + +

    ◆ queueShaderExecutionOnGraphicsQueue()

    + +
    +
    + + + + + + + + +
    std::optional< Error > ne::PipelineManager::ComputePipelines::queueShaderExecutionOnGraphicsQueue (ComputeShaderInterfacepComputeShaderInterface)
    +
    +

    Adds a compute shader interface to be executed on the graphics queue according to shader's execution stage and group.

    +
    Remarks
    Added shader will be executed only once, if you want your shader to be executed again you would need to call this function again but later after a frame was submitted (if you call it right now nothing will happen as it's already queued).
    +
    Parameters
    + + +
    pComputeShaderInterfaceCompute shader interface to queue for execution.
    +
    +
    +
    Returns
    Error if something went wrong.
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mtxResources

    + +
    +
    + + + + + +
    + + + + +
    std::pair<std::recursive_mutex, Resources> ne::PipelineManager::ComputePipelines::mtxResources
    +
    +private
    +
    +

    Pipeline data.

    + +
    +
    +
    The documentation for this struct was generated from the following files:
      +
    • src/engine_lib/private/render/general/pipeline/PipelineManager.h
    • +
    • src/engine_lib/private/render/general/pipeline/PipelineManager.cpp
    • +
    +
    +
    + + + + diff --git a/structne_1_1PipelineManager_1_1ComputePipelines.js b/structne_1_1PipelineManager_1_1ComputePipelines.js new file mode 100644 index 000000000..b418c4eef --- /dev/null +++ b/structne_1_1PipelineManager_1_1ComputePipelines.js @@ -0,0 +1,11 @@ +var structne_1_1PipelineManager_1_1ComputePipelines = +[ + [ "Resources", "structne_1_1PipelineManager_1_1ComputePipelines_1_1Resources.html", "structne_1_1PipelineManager_1_1ComputePipelines_1_1Resources" ], + [ "getComputePipelineCount", "structne_1_1PipelineManager_1_1ComputePipelines.html#a13470d46781385cb1fb755f56c8d3362", null ], + [ "getComputePipelineForShader", "structne_1_1PipelineManager_1_1ComputePipelines.html#a2597aab9c580a5596d131e6988d8b2b9", null ], + [ "getComputeShadersForGraphicsQueueExecution", "structne_1_1PipelineManager_1_1ComputePipelines.html#ae8f30fe009055207bca46d93bf124ae4", null ], + [ "onPipelineNoLongerUsedByComputeShaderInterface", "structne_1_1PipelineManager_1_1ComputePipelines.html#a2f9930204f6088be4d835502902924fb", null ], + [ "queueComputeShaderInterfaceForExecution", "structne_1_1PipelineManager_1_1ComputePipelines.html#a47b30ad3c21f330ec96bff388f125a0f", null ], + [ "queueShaderExecutionOnGraphicsQueue", "structne_1_1PipelineManager_1_1ComputePipelines.html#a48c2bea4e0194599be414e8050f08282", null ], + [ "mtxResources", "structne_1_1PipelineManager_1_1ComputePipelines.html#ad5cf2fef4ef51e069d473d7282917408", null ] +]; \ No newline at end of file diff --git a/structne_1_1PipelineManager_1_1ComputePipelines_1_1Resources-members.html b/structne_1_1PipelineManager_1_1ComputePipelines_1_1Resources-members.html new file mode 100644 index 000000000..d3c0ab7f0 --- /dev/null +++ b/structne_1_1PipelineManager_1_1ComputePipelines_1_1Resources-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::PipelineManager::ComputePipelines::Resources Member List
    +
    + +
    + + + + diff --git a/structne_1_1PipelineManager_1_1ComputePipelines_1_1Resources.html b/structne_1_1PipelineManager_1_1ComputePipelines_1_1Resources.html new file mode 100644 index 000000000..24b799929 --- /dev/null +++ b/structne_1_1PipelineManager_1_1ComputePipelines_1_1Resources.html @@ -0,0 +1,157 @@ + + + + + + + +Nameless Engine: ne::PipelineManager::ComputePipelines::Resources Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::PipelineManager::ComputePipelines::Resources Struct Reference
    +
    +
    + +

    #include <PipelineManager.h>

    + + + + + + +

    +Public Attributes

    std::unordered_map< std::string, std::shared_ptr< Pipeline > > pipelines
     
    QueuedForExecutionComputeShaders queuedComputeShaders
     
    +

    Detailed Description

    +

    Groups mutex guarded data.

    +

    Member Data Documentation

    + +

    ◆ pipelines

    + +
    +
    + + + + +
    std::unordered_map<std::string, std::shared_ptr<Pipeline> > ne::PipelineManager::ComputePipelines::Resources::pipelines
    +
    +

    Stores pairs of "compute shader name" - "compute pipeline".

    + +
    +
    + +

    ◆ queuedComputeShaders

    + +
    +
    + + + + +
    QueuedForExecutionComputeShaders ne::PipelineManager::ComputePipelines::Resources::queuedComputeShaders
    +
    +

    Compute shader interfaces that reference pipelines from pipelines.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1PipelineManager_1_1ComputePipelines_1_1Resources.js b/structne_1_1PipelineManager_1_1ComputePipelines_1_1Resources.js new file mode 100644 index 000000000..a3daaa08f --- /dev/null +++ b/structne_1_1PipelineManager_1_1ComputePipelines_1_1Resources.js @@ -0,0 +1,5 @@ +var structne_1_1PipelineManager_1_1ComputePipelines_1_1Resources = +[ + [ "pipelines", "structne_1_1PipelineManager_1_1ComputePipelines_1_1Resources.html#a9c285666831ac87049768eb2338e9347", null ], + [ "queuedComputeShaders", "structne_1_1PipelineManager_1_1ComputePipelines_1_1Resources.html#a3aa8123606a6c4611b2c1c60500aebd4", null ] +]; \ No newline at end of file diff --git a/structne_1_1PipelineShaderConstantsManager_1_1SpecialConstantsNames-members.html b/structne_1_1PipelineShaderConstantsManager_1_1SpecialConstantsNames-members.html new file mode 100644 index 000000000..394b26c3f --- /dev/null +++ b/structne_1_1PipelineShaderConstantsManager_1_1SpecialConstantsNames-members.html @@ -0,0 +1,111 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::PipelineShaderConstantsManager::SpecialConstantsNames Member List
    +
    + +
    + + + + diff --git a/structne_1_1PipelineShaderConstantsManager_1_1SpecialConstantsNames.html b/structne_1_1PipelineShaderConstantsManager_1_1SpecialConstantsNames.html new file mode 100644 index 000000000..4891fd0f8 --- /dev/null +++ b/structne_1_1PipelineShaderConstantsManager_1_1SpecialConstantsNames.html @@ -0,0 +1,148 @@ + + + + + + + +Nameless Engine: ne::PipelineShaderConstantsManager::SpecialConstantsNames Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::PipelineShaderConstantsManager::SpecialConstantsNames Struct Reference
    +
    +
    + +

    #include <PipelineShaderConstantsManager.hpp>

    + + + + +

    +Static Public Attributes

    static constexpr auto pShadowPassLightInfoIndex = "iShadowPassLightInfoIndex"
     
    +

    Detailed Description

    +

    Groups names of special (some non-user specified) push/root constants.

    +

    Member Data Documentation

    + +

    ◆ pShadowPassLightInfoIndex

    + +
    +
    + + + + + +
    + + + + +
    constexpr auto ne::PipelineShaderConstantsManager::SpecialConstantsNames::pShadowPassLightInfoIndex = "iShadowPassLightInfoIndex"
    +
    +staticconstexpr
    +
    +

    Index into array of shadow pass infos.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1PipelineShaderConstantsManager_1_1SpecialConstantsNames.js b/structne_1_1PipelineShaderConstantsManager_1_1SpecialConstantsNames.js new file mode 100644 index 000000000..eb84d6e7f --- /dev/null +++ b/structne_1_1PipelineShaderConstantsManager_1_1SpecialConstantsNames.js @@ -0,0 +1,4 @@ +var structne_1_1PipelineShaderConstantsManager_1_1SpecialConstantsNames = +[ + [ "pShadowPassLightInfoIndex", "structne_1_1PipelineShaderConstantsManager_1_1SpecialConstantsNames.html#a57992b289fa190fe5d429bace13bb854", null ] +]; \ No newline at end of file diff --git a/structne_1_1Pipeline_1_1ShaderConstantsData-members.html b/structne_1_1Pipeline_1_1ShaderConstantsData-members.html new file mode 100644 index 000000000..e3cb69417 --- /dev/null +++ b/structne_1_1Pipeline_1_1ShaderConstantsData-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::Pipeline::ShaderConstantsData Member List
    +
    +
    + +

    This is the complete list of members for ne::Pipeline::ShaderConstantsData, including all inherited members.

    + + + + +
    findOffsetAndCopySpecialValueToConstant(Pipeline *pPipeline, const char *pConstantName, unsigned int iValueToCopy)ne::Pipeline::ShaderConstantsData
    pConstantsManagerne::Pipeline::ShaderConstantsData
    uintConstantsOffsetsne::Pipeline::ShaderConstantsData
    +
    + + + + diff --git a/structne_1_1Pipeline_1_1ShaderConstantsData.html b/structne_1_1Pipeline_1_1ShaderConstantsData.html new file mode 100644 index 000000000..522b26c62 --- /dev/null +++ b/structne_1_1Pipeline_1_1ShaderConstantsData.html @@ -0,0 +1,210 @@ + + + + + + + +Nameless Engine: ne::Pipeline::ShaderConstantsData Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::Pipeline::ShaderConstantsData Struct Reference
    +
    +
    + +

    #include <Pipeline.h>

    + + + + +

    +Public Member Functions

    void findOffsetAndCopySpecialValueToConstant (Pipeline *pPipeline, const char *pConstantName, unsigned int iValueToCopy)
     
    + + + + + +

    +Public Attributes

    std::unique_ptr< PipelineShaderConstantsManagerpConstantsManager
     
    std::unordered_map< std::string, size_t > uintConstantsOffsets
     
    +

    Detailed Description

    +

    Groups information related to push/root constants.

    +

    Member Function Documentation

    + +

    ◆ findOffsetAndCopySpecialValueToConstant()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void ne::Pipeline::ShaderConstantsData::findOffsetAndCopySpecialValueToConstant (PipelinepPipeline,
    const char * pConstantName,
    unsigned int iValueToCopy 
    )
    +
    +

    Looks for and index of the specified shader constant in the specified pipeline and copies the specified value into the constant's slot.

    +
    Warning
    In debug builds shows an error and throws an exception if the specified constant is not used in the pipeline, otherwise in release builds does not check this and will probably crash if the specified constant is not used.
    +
    Remarks
    Named "special" because this function is generally used for special shader constants (not used-defined).
    +
    Parameters
    + + + + +
    pPipelinePipeline to look for offset of the constant.
    pConstantNameName of the constant from shader code.
    iValueToCopyValue to copy as constant.
    +
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ pConstantsManager

    + +
    +
    + + + + +
    std::unique_ptr<PipelineShaderConstantsManager> ne::Pipeline::ShaderConstantsData::pConstantsManager
    +
    +

    Stores root/push constants. nullptr if root/push constants are not used.

    + +
    +
    + +

    ◆ uintConstantsOffsets

    + +
    +
    + + + + +
    std::unordered_map<std::string, size_t> ne::Pipeline::ShaderConstantsData::uintConstantsOffsets
    +
    +

    Stores names of fields defined in GLSL as push constants or as root constants in HLSL (all with uint type) and offset of the constant from the beginning of the layout/struct.

    + +
    +
    +
    The documentation for this struct was generated from the following files:
      +
    • src/engine_lib/private/render/general/pipeline/Pipeline.h
    • +
    • src/engine_lib/private/render/general/pipeline/Pipeline.cpp
    • +
    +
    +
    + + + + diff --git a/structne_1_1Pipeline_1_1ShaderConstantsData.js b/structne_1_1Pipeline_1_1ShaderConstantsData.js new file mode 100644 index 000000000..0cf410cd1 --- /dev/null +++ b/structne_1_1Pipeline_1_1ShaderConstantsData.js @@ -0,0 +1,6 @@ +var structne_1_1Pipeline_1_1ShaderConstantsData = +[ + [ "findOffsetAndCopySpecialValueToConstant", "structne_1_1Pipeline_1_1ShaderConstantsData.html#a6406029473f3f6445b8ce750a829b900", null ], + [ "pConstantsManager", "structne_1_1Pipeline_1_1ShaderConstantsData.html#a8003f96d4f9c89bec91b5dc97e2904d3", null ], + [ "uintConstantsOffsets", "structne_1_1Pipeline_1_1ShaderConstantsData.html#a7fca4fe10ccc61b9220f73bf42e45b6c", null ] +]; \ No newline at end of file diff --git a/structne_1_1Plane-members.html b/structne_1_1Plane-members.html new file mode 100644 index 000000000..e1bc994f6 --- /dev/null +++ b/structne_1_1Plane-members.html @@ -0,0 +1,115 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::Plane Member List
    +
    +
    + +

    This is the complete list of members for ne::Plane, including all inherited members.

    + + + + + + +
    distanceFromOriginne::Plane
    isPointBehindPlane(const glm::vec3 &point) constne::Plane
    normalne::Plane
    Plane()=defaultne::Plane
    Plane(const glm::vec3 &normal, const glm::vec3 &location)ne::Plane
    +
    + + + + diff --git a/structne_1_1Plane.html b/structne_1_1Plane.html new file mode 100644 index 000000000..77ab050d2 --- /dev/null +++ b/structne_1_1Plane.html @@ -0,0 +1,258 @@ + + + + + + + +Nameless Engine: ne::Plane Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::Plane Struct Reference
    +
    +
    + +

    #include <Plane.h>

    + + + + + + + + +

    +Public Member Functions

     Plane ()=default
     
     Plane (const glm::vec3 &normal, const glm::vec3 &location)
     
    bool isPointBehindPlane (const glm::vec3 &point) const
     
    + + + + + +

    +Public Attributes

    glm::vec3 normal = glm::vec3(0.0F, 0.0F, 0.0F)
     
    float distanceFromOrigin = 0.0F
     
    +

    Detailed Description

    +

    Plane represented by a normal and a distance.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Plane() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    ne::Plane::Plane ()
    +
    +default
    +
    +

    Creates uninitialized plane.

    + +
    +
    + +

    ◆ Plane() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    ne::Plane::Plane (const glm::vec3 & normal,
    const glm::vec3 & location 
    )
    +
    +

    Initializes the plane.

    +
    Parameters
    + + + +
    normalPlane's normal (expected to be of unit length).
    locationLocation of a point that lies on the plane.
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ isPointBehindPlane()

    + +
    +
    + + + + + + + + +
    bool ne::Plane::isPointBehindPlane (const glm::vec3 & point) const
    +
    +

    Tells if the point is fully behind (inside the negative halfspace of) a plane.

    +
    Parameters
    + + +
    pointPoint to test.
    +
    +
    +
    Returns
    true if the point is fully behind the plane, false otherwise.
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ distanceFromOrigin

    + +
    +
    + + + + +
    float ne::Plane::distanceFromOrigin = 0.0F
    +
    +

    Distance from the origin to the nearest point on the plane.

    + +
    +
    + +

    ◆ normal

    + +
    +
    + + + + +
    glm::vec3 ne::Plane::normal = glm::vec3(0.0F, 0.0F, 0.0F)
    +
    +

    Plane's normal.

    + +
    +
    +
    The documentation for this struct was generated from the following files:
      +
    • src/engine_lib/public/misc/shapes/Plane.h
    • +
    • src/engine_lib/private/misc/shapes/Plane.cpp
    • +
    +
    +
    + + + + diff --git a/structne_1_1Plane.js b/structne_1_1Plane.js new file mode 100644 index 000000000..2f386449a --- /dev/null +++ b/structne_1_1Plane.js @@ -0,0 +1,8 @@ +var structne_1_1Plane = +[ + [ "Plane", "structne_1_1Plane.html#a881feb6e40da8448afc677727afca309", null ], + [ "Plane", "structne_1_1Plane.html#a236eff35739ac0fccf59cde96b950fa2", null ], + [ "isPointBehindPlane", "structne_1_1Plane.html#af85362ad4e9830f92d0557d56832f043", null ], + [ "distanceFromOrigin", "structne_1_1Plane.html#a0cfa91e4d0f79facf377a1d6e688e42d", null ], + [ "normal", "structne_1_1Plane.html#a9e3dae347c4cc72d2e14089bdad100a3", null ] +]; \ No newline at end of file diff --git a/structne_1_1PointLightNode_1_1PointLightShaderData-members.html b/structne_1_1PointLightNode_1_1PointLightShaderData-members.html new file mode 100644 index 000000000..43be6e87c --- /dev/null +++ b/structne_1_1PointLightNode_1_1PointLightShaderData-members.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::PointLightNode::PointLightShaderData Member List
    +
    + +
    + + + + diff --git a/structne_1_1PointLightNode_1_1PointLightShaderData.html b/structne_1_1PointLightNode_1_1PointLightShaderData.html new file mode 100644 index 000000000..4c5042173 --- /dev/null +++ b/structne_1_1PointLightNode_1_1PointLightShaderData.html @@ -0,0 +1,206 @@ + + + + + + + +Nameless Engine: ne::PointLightNode::PointLightShaderData Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::PointLightNode::PointLightShaderData Struct Reference
    +
    +
    + + + + + + + + + + + + +

    +Public Attributes

    glm::vec4 position = glm::vec4(0.0F, 0.0F, 0.0F, 1.0F)
     
    glm::vec4 color = glm::vec4(1.0F, 1.0F, 1.0F, 1.0F)
     
    float intensity = 1.0F
     
    float distance = 1.0F
     
    unsigned int iShadowMapIndex = 0
     
    +

    Detailed Description

    +

    Data that will be directly copied into shaders.

    +

    Member Data Documentation

    + +

    ◆ color

    + +
    +
    + + + + +
    glm::vec4 ne::PointLightNode::PointLightShaderData::color = glm::vec4(1.0F, 1.0F, 1.0F, 1.0F)
    +
    +

    Light color. 4th component is not used.

    + +
    +
    + +

    ◆ distance

    + +
    +
    + + + + +
    float ne::PointLightNode::PointLightShaderData::distance = 1.0F
    +
    +

    Lit distance.

    + +
    +
    + +

    ◆ intensity

    + +
    +
    + + + + +
    float ne::PointLightNode::PointLightShaderData::intensity = 1.0F
    +
    +

    Light intensity.

    + +
    +
    + +

    ◆ iShadowMapIndex

    + +
    +
    + + + + +
    unsigned int ne::PointLightNode::PointLightShaderData::iShadowMapIndex = 0
    +
    +

    Index in the point cube shadow map array where shadow map of this light source is stored.

    + +
    +
    + +

    ◆ position

    + +
    +
    + + + + +
    glm::vec4 ne::PointLightNode::PointLightShaderData::position = glm::vec4(0.0F, 0.0F, 0.0F, 1.0F)
    +
    +

    Light position in world space. 4th component is not used.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1PointLightNode_1_1PointLightShaderData.js b/structne_1_1PointLightNode_1_1PointLightShaderData.js new file mode 100644 index 000000000..dc81edd1c --- /dev/null +++ b/structne_1_1PointLightNode_1_1PointLightShaderData.js @@ -0,0 +1,8 @@ +var structne_1_1PointLightNode_1_1PointLightShaderData = +[ + [ "color", "structne_1_1PointLightNode_1_1PointLightShaderData.html#a2c50b649d9acadf6898ef9bce33c1887", null ], + [ "distance", "structne_1_1PointLightNode_1_1PointLightShaderData.html#a7ddce367b5e79959a46d1d9f31a1b434", null ], + [ "intensity", "structne_1_1PointLightNode_1_1PointLightShaderData.html#a36ccaab44247d78e99090ba09f41b09b", null ], + [ "iShadowMapIndex", "structne_1_1PointLightNode_1_1PointLightShaderData.html#ae8c15ccc100668afa0d36e4f0bdee2b4", null ], + [ "position", "structne_1_1PointLightNode_1_1PointLightShaderData.html#a79222d97190887a0eb61374b7e1c4e47", null ] +]; \ No newline at end of file diff --git a/structne_1_1PointLightNode_1_1ShaderData-members.html b/structne_1_1PointLightNode_1_1ShaderData-members.html new file mode 100644 index 000000000..579e35a20 --- /dev/null +++ b/structne_1_1PointLightNode_1_1ShaderData-members.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::PointLightNode::ShaderData Member List
    +
    + +
    + + + + diff --git a/structne_1_1PointLightNode_1_1ShaderData.html b/structne_1_1PointLightNode_1_1ShaderData.html new file mode 100644 index 000000000..8ab7c4fa4 --- /dev/null +++ b/structne_1_1PointLightNode_1_1ShaderData.html @@ -0,0 +1,178 @@ + + + + + + + +Nameless Engine: ne::PointLightNode::ShaderData Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::PointLightNode::ShaderData Struct Reference
    +
    +
    + + + + +

    +Classes

    struct  ShadowPassDataGroup
     
    + + + + + + + +

    +Public Attributes

    std::unique_ptr< ShaderLightArraySlotpPointLightArraySlot
     
    std::array< ShadowPassDataGroup, 6 > vShadowPassDataGroup
     
    PointLightShaderData shaderData
     
    +

    Detailed Description

    +

    Groups data related to shaders.

    +

    Member Data Documentation

    + +

    ◆ pPointLightArraySlot

    + +
    +
    + + + + +
    std::unique_ptr<ShaderLightArraySlot> ne::PointLightNode::ShaderData::pPointLightArraySlot
    +
    +

    Slot in the array with data of all spawned point lights.

    + +
    +
    + +

    ◆ shaderData

    + +
    +
    + + + + +
    PointLightShaderData ne::PointLightNode::ShaderData::shaderData
    +
    +

    Groups data that will be directly copied to the GPU resource.

    + +
    +
    + +

    ◆ vShadowPassDataGroup

    + +
    +
    + + + + +
    std::array<ShadowPassDataGroup, 6> ne::PointLightNode::ShaderData::vShadowPassDataGroup
    +
    +

    Data used in shadow pass.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1PointLightNode_1_1ShaderData.js b/structne_1_1PointLightNode_1_1ShaderData.js new file mode 100644 index 000000000..100102891 --- /dev/null +++ b/structne_1_1PointLightNode_1_1ShaderData.js @@ -0,0 +1,7 @@ +var structne_1_1PointLightNode_1_1ShaderData = +[ + [ "ShadowPassDataGroup", "structne_1_1PointLightNode_1_1ShaderData_1_1ShadowPassDataGroup.html", "structne_1_1PointLightNode_1_1ShaderData_1_1ShadowPassDataGroup" ], + [ "pPointLightArraySlot", "structne_1_1PointLightNode_1_1ShaderData.html#a3f447f80f22f1cc6176d3212afd80071", null ], + [ "shaderData", "structne_1_1PointLightNode_1_1ShaderData.html#a5b2e09e40420fd7e483b0b071d2e841a", null ], + [ "vShadowPassDataGroup", "structne_1_1PointLightNode_1_1ShaderData.html#a5d9ccdc57dff37dc131ac8a28f75385d", null ] +]; \ No newline at end of file diff --git a/structne_1_1PointLightNode_1_1ShaderData_1_1ShadowPassDataGroup-members.html b/structne_1_1PointLightNode_1_1ShaderData_1_1ShadowPassDataGroup-members.html new file mode 100644 index 000000000..85416ec84 --- /dev/null +++ b/structne_1_1PointLightNode_1_1ShaderData_1_1ShadowPassDataGroup-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::PointLightNode::ShaderData::ShadowPassDataGroup Member List
    +
    + +
    + + + + diff --git a/structne_1_1PointLightNode_1_1ShaderData_1_1ShadowPassDataGroup.html b/structne_1_1PointLightNode_1_1ShaderData_1_1ShadowPassDataGroup.html new file mode 100644 index 000000000..208de3722 --- /dev/null +++ b/structne_1_1PointLightNode_1_1ShaderData_1_1ShadowPassDataGroup.html @@ -0,0 +1,157 @@ + + + + + + + +Nameless Engine: ne::PointLightNode::ShaderData::ShadowPassDataGroup Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::PointLightNode::ShaderData::ShadowPassDataGroup Struct Reference
    +
    +
    + +

    #include <PointLightNode.h>

    + + + + + + +

    +Public Attributes

    std::unique_ptr< ShaderLightArraySlotpSlot
     
    ShadowPassLightShaderInfo shaderData
     
    +

    Detailed Description

    +

    Groups used in shadow pass.

    +

    Member Data Documentation

    + +

    ◆ pSlot

    + +
    +
    + + + + +
    std::unique_ptr<ShaderLightArraySlot> ne::PointLightNode::ShaderData::ShadowPassDataGroup::pSlot
    +
    +

    Slot to store shaderData.

    + +
    +
    + +

    ◆ shaderData

    + +
    +
    + + + + +
    ShadowPassLightShaderInfo ne::PointLightNode::ShaderData::ShadowPassDataGroup::shaderData
    +
    +

    Data to copy to shaders.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1PointLightNode_1_1ShaderData_1_1ShadowPassDataGroup.js b/structne_1_1PointLightNode_1_1ShaderData_1_1ShadowPassDataGroup.js new file mode 100644 index 000000000..218c78ef0 --- /dev/null +++ b/structne_1_1PointLightNode_1_1ShaderData_1_1ShadowPassDataGroup.js @@ -0,0 +1,5 @@ +var structne_1_1PointLightNode_1_1ShaderData_1_1ShadowPassDataGroup = +[ + [ "pSlot", "structne_1_1PointLightNode_1_1ShaderData_1_1ShadowPassDataGroup.html#afaf08c1117bc30da8681afe3813fa89a", null ], + [ "shaderData", "structne_1_1PointLightNode_1_1ShaderData_1_1ShadowPassDataGroup.html#a00edf2c22d0ebcfba28f34edafb2949b", null ] +]; \ No newline at end of file diff --git a/structne_1_1QueuedForExecutionComputeShaders-members.html b/structne_1_1QueuedForExecutionComputeShaders-members.html new file mode 100644 index 000000000..09c2590c5 --- /dev/null +++ b/structne_1_1QueuedForExecutionComputeShaders-members.html @@ -0,0 +1,111 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::QueuedForExecutionComputeShaders Member List
    +
    +
    + +

    This is the complete list of members for ne::QueuedForExecutionComputeShaders, including all inherited members.

    + + +
    vGraphicsQueueStagesGroupsne::QueuedForExecutionComputeShaders
    +
    + + + + diff --git a/structne_1_1QueuedForExecutionComputeShaders.html b/structne_1_1QueuedForExecutionComputeShaders.html new file mode 100644 index 000000000..74f7b247e --- /dev/null +++ b/structne_1_1QueuedForExecutionComputeShaders.html @@ -0,0 +1,144 @@ + + + + + + + +Nameless Engine: ne::QueuedForExecutionComputeShaders Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::QueuedForExecutionComputeShaders Struct Reference
    +
    +
    + +

    #include <PipelineManager.h>

    + + + + +

    +Public Attributes

    std::array< std::array< std::unordered_map< Pipeline *, std::unordered_set< ComputeShaderInterface * > >, static_cast< size_t >(ComputeExecutionGroup::SIZE)>, static_cast< size_t >(ComputeExecutionStage::SIZE)> vGraphicsQueueStagesGroups
     
    +

    Detailed Description

    +

    Groups pointers to compute shader interfaces that were queued for execution and pipelines that they use.

    +
    Remarks
    Only references compute shaders that use graphics queue to provide a fast access for the renderer to submit those shaders (the renderer does not submit compute shaders that use compute queue - they are submitted from compute shader interfaces directly).
    +

    Member Data Documentation

    + +

    ◆ vGraphicsQueueStagesGroups

    + +
    +
    + + + + +
    std::array< std::array< std::unordered_map<Pipeline*, std::unordered_set<ComputeShaderInterface*> >, static_cast<size_t>(ComputeExecutionGroup::SIZE)>, static_cast<size_t>(ComputeExecutionStage::SIZE)> ne::QueuedForExecutionComputeShaders::vGraphicsQueueStagesGroups
    +
    +

    Stores compute pipelines and compute shader interfaces that use these pipelines (one map per compute execution group).

    +
    Remarks
    When the renderer submits all compute shaders from this map it clears it.
    +
    +Using unordered_set to avoid executing a compute shader multiple times.
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1QueuedForExecutionComputeShaders.js b/structne_1_1QueuedForExecutionComputeShaders.js new file mode 100644 index 000000000..ec75f818d --- /dev/null +++ b/structne_1_1QueuedForExecutionComputeShaders.js @@ -0,0 +1,4 @@ +var structne_1_1QueuedForExecutionComputeShaders = +[ + [ "vGraphicsQueueStagesGroups", "structne_1_1QueuedForExecutionComputeShaders.html#ab3e107f722245372e1a5257c65cda9ba", null ] +]; \ No newline at end of file diff --git a/structne_1_1RenderStatistics_1_1Counters-members.html b/structne_1_1RenderStatistics_1_1Counters-members.html new file mode 100644 index 000000000..7f08ae697 --- /dev/null +++ b/structne_1_1RenderStatistics_1_1Counters-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::RenderStatistics::Counters Member List
    +
    + +
    + + + + diff --git a/structne_1_1RenderStatistics_1_1Counters.html b/structne_1_1RenderStatistics_1_1Counters.html new file mode 100644 index 000000000..36606f7e9 --- /dev/null +++ b/structne_1_1RenderStatistics_1_1Counters.html @@ -0,0 +1,174 @@ + + + + + + + +Nameless Engine: ne::RenderStatistics::Counters Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::RenderStatistics::Counters Struct Reference
    +
    +
    + + + + + + + + +

    +Public Attributes

    size_t iLastFrameCulledMeshesCount = 0
     
    size_t iLastFrameCulledLightsCount = 0
     
    size_t iLastFrameDrawCallCount = 0
     
    +

    Detailed Description

    +

    Groups counters for various tasks.

    +

    Member Data Documentation

    + +

    ◆ iLastFrameCulledLightsCount

    + +
    +
    + + + + +
    size_t ne::RenderStatistics::Counters::iLastFrameCulledLightsCount = 0
    +
    +

    Total number of lights discarded from submitting to the rendering due to frustum culling.

    +
    Remarks
    Updated only after a frame is submitted.
    + +
    +
    + +

    ◆ iLastFrameCulledMeshesCount

    + +
    +
    + + + + +
    size_t ne::RenderStatistics::Counters::iLastFrameCulledMeshesCount = 0
    +
    +

    Total number of meshes discarded from submitting to the rendering due to frustum culling.

    +
    Remarks
    Updated only after a frame is submitted.
    + +
    +
    + +

    ◆ iLastFrameDrawCallCount

    + +
    +
    + + + + +
    size_t ne::RenderStatistics::Counters::iLastFrameDrawCallCount = 0
    +
    +

    The total number of draw calls made during the last frame.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1RenderStatistics_1_1Counters.js b/structne_1_1RenderStatistics_1_1Counters.js new file mode 100644 index 000000000..a5272ca88 --- /dev/null +++ b/structne_1_1RenderStatistics_1_1Counters.js @@ -0,0 +1,6 @@ +var structne_1_1RenderStatistics_1_1Counters = +[ + [ "iLastFrameCulledLightsCount", "structne_1_1RenderStatistics_1_1Counters.html#a402832003ea6ab3646e87cb253788b15", null ], + [ "iLastFrameCulledMeshesCount", "structne_1_1RenderStatistics_1_1Counters.html#ac4b747970776fb9370a92de73be1db5b", null ], + [ "iLastFrameDrawCallCount", "structne_1_1RenderStatistics_1_1Counters.html#aa23fdc3f5311bca5cd9669e496194d7b", null ] +]; \ No newline at end of file diff --git a/structne_1_1RenderStatistics_1_1FpsLimitInfo-members.html b/structne_1_1RenderStatistics_1_1FpsLimitInfo-members.html new file mode 100644 index 000000000..835e77c48 --- /dev/null +++ b/structne_1_1RenderStatistics_1_1FpsLimitInfo-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::RenderStatistics::FpsLimitInfo Member List
    +
    + +
    + + + + diff --git a/structne_1_1RenderStatistics_1_1FpsLimitInfo.html b/structne_1_1RenderStatistics_1_1FpsLimitInfo.html new file mode 100644 index 000000000..06a03d3dd --- /dev/null +++ b/structne_1_1RenderStatistics_1_1FpsLimitInfo.html @@ -0,0 +1,155 @@ + + + + + + + +Nameless Engine: ne::RenderStatistics::FpsLimitInfo Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::RenderStatistics::FpsLimitInfo Struct Reference
    +
    +
    + + + + + + +

    +Public Attributes

    std::chrono::steady_clock::time_point frameStartTime
     
    std::optional< double > optionalTargetTimeToRenderFrameInNs = {}
     
    +

    Detailed Description

    +

    Groups info related to FPS limiting.

    +

    Member Data Documentation

    + +

    ◆ frameStartTime

    + +
    +
    + + + + +
    std::chrono::steady_clock::time_point ne::RenderStatistics::FpsLimitInfo::frameStartTime
    +
    +

    Time when last frame was started to be processed.

    + +
    +
    + +

    ◆ optionalTargetTimeToRenderFrameInNs

    + +
    +
    + + + + +
    std::optional<double> ne::RenderStatistics::FpsLimitInfo::optionalTargetTimeToRenderFrameInNs = {}
    +
    +

    Not empty if FPS limit is set, defines time in nanoseconds that one frame should take.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1RenderStatistics_1_1FpsLimitInfo.js b/structne_1_1RenderStatistics_1_1FpsLimitInfo.js new file mode 100644 index 000000000..7c4fa0345 --- /dev/null +++ b/structne_1_1RenderStatistics_1_1FpsLimitInfo.js @@ -0,0 +1,5 @@ +var structne_1_1RenderStatistics_1_1FpsLimitInfo = +[ + [ "frameStartTime", "structne_1_1RenderStatistics_1_1FpsLimitInfo.html#a70e408db5e9789704b3fd1dd5d79891e", null ], + [ "optionalTargetTimeToRenderFrameInNs", "structne_1_1RenderStatistics_1_1FpsLimitInfo.html#accf7ee9c37661472207b71038c1b7853", null ] +]; \ No newline at end of file diff --git a/structne_1_1RenderStatistics_1_1FrameTemporaryStatistics-members.html b/structne_1_1RenderStatistics_1_1FrameTemporaryStatistics-members.html new file mode 100644 index 000000000..b87c919c1 --- /dev/null +++ b/structne_1_1RenderStatistics_1_1FrameTemporaryStatistics-members.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structne_1_1RenderStatistics_1_1FrameTemporaryStatistics.html b/structne_1_1RenderStatistics_1_1FrameTemporaryStatistics.html new file mode 100644 index 000000000..2cd19b023 --- /dev/null +++ b/structne_1_1RenderStatistics_1_1FrameTemporaryStatistics.html @@ -0,0 +1,209 @@ + + + + + + + +Nameless Engine: ne::RenderStatistics::FrameTemporaryStatistics Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::RenderStatistics::FrameTemporaryStatistics Struct Reference
    +
    +
    + + + + + + + + + + + + +

    +Public Attributes

    std::pair< std::mutex, float > mtxFrustumCullingMeshesTimeInMs
     
    std::pair< std::mutex, float > mtxFrustumCullingLightsTimeInMs
     
    std::atomic< size_t > iCulledMeshCount {0}
     
    std::atomic< size_t > iCulledLightCount {0}
     
    std::atomic< size_t > iDrawCallCount {0}
     
    +

    Detailed Description

    +

    Groups variables to continuously modify in the process of submitting a new frame. Variables here will be reset and saved to other struct as resulting values after a frame was submitted.

    +

    Member Data Documentation

    + +

    ◆ iCulledLightCount

    + +
    +
    + + + + +
    std::atomic<size_t> ne::RenderStatistics::FrameTemporaryStatistics::iCulledLightCount {0}
    +
    +

    Total number of lights discarded from submitting due to frustum culling.

    + +
    +
    + +

    ◆ iCulledMeshCount

    + +
    +
    + + + + +
    std::atomic<size_t> ne::RenderStatistics::FrameTemporaryStatistics::iCulledMeshCount {0}
    +
    +

    Total number of meshes discarded from submitting due to frustum culling.

    + +
    +
    + +

    ◆ iDrawCallCount

    + +
    +
    + + + + +
    std::atomic<size_t> ne::RenderStatistics::FrameTemporaryStatistics::iDrawCallCount {0}
    +
    +

    Stores the total number of draw calls made last frame.

    + +
    +
    + +

    ◆ mtxFrustumCullingLightsTimeInMs

    + +
    +
    + + + + +
    std::pair<std::mutex, float> ne::RenderStatistics::FrameTemporaryStatistics::mtxFrustumCullingLightsTimeInMs
    +
    +

    Time in milliseconds spent last frame on frustum culling lights.

    +
    Remarks
    Use mutex to update/read the value.
    + +
    +
    + +

    ◆ mtxFrustumCullingMeshesTimeInMs

    + +
    +
    + + + + +
    std::pair<std::mutex, float> ne::RenderStatistics::FrameTemporaryStatistics::mtxFrustumCullingMeshesTimeInMs
    +
    +

    Time in milliseconds spent last frame on frustum culling meshes.

    +
    Remarks
    Use mutex to update/read the value.
    + +
    +
    +
    The documentation for this struct was generated from the following files:
      +
    • src/engine_lib/public/render/RenderStatistics.h
    • +
    • src/engine_lib/private/render/general/RenderStatistics.cpp
    • +
    +
    +
    + + + + diff --git a/structne_1_1RenderStatistics_1_1FrameTemporaryStatistics.js b/structne_1_1RenderStatistics_1_1FrameTemporaryStatistics.js new file mode 100644 index 000000000..e899a64b1 --- /dev/null +++ b/structne_1_1RenderStatistics_1_1FrameTemporaryStatistics.js @@ -0,0 +1,8 @@ +var structne_1_1RenderStatistics_1_1FrameTemporaryStatistics = +[ + [ "iCulledLightCount", "structne_1_1RenderStatistics_1_1FrameTemporaryStatistics.html#af77243d789939aac616dfe88e38c90a9", null ], + [ "iCulledMeshCount", "structne_1_1RenderStatistics_1_1FrameTemporaryStatistics.html#a1cb09579bc34d6a4d106c0522b5012e9", null ], + [ "iDrawCallCount", "structne_1_1RenderStatistics_1_1FrameTemporaryStatistics.html#ae9880c8c0ffeaaf1662af5982e322179", null ], + [ "mtxFrustumCullingLightsTimeInMs", "structne_1_1RenderStatistics_1_1FrameTemporaryStatistics.html#a4a8cbbada6cd75ec67c6b462d2666fed", null ], + [ "mtxFrustumCullingMeshesTimeInMs", "structne_1_1RenderStatistics_1_1FrameTemporaryStatistics.html#ae8e8f123d886cf61167513c0948c975e", null ] +]; \ No newline at end of file diff --git a/structne_1_1RenderStatistics_1_1FramesPerSecondInfo-members.html b/structne_1_1RenderStatistics_1_1FramesPerSecondInfo-members.html new file mode 100644 index 000000000..74f9b008b --- /dev/null +++ b/structne_1_1RenderStatistics_1_1FramesPerSecondInfo-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::RenderStatistics::FramesPerSecondInfo Member List
    +
    + +
    + + + + diff --git a/structne_1_1RenderStatistics_1_1FramesPerSecondInfo.html b/structne_1_1RenderStatistics_1_1FramesPerSecondInfo.html new file mode 100644 index 000000000..15afec329 --- /dev/null +++ b/structne_1_1RenderStatistics_1_1FramesPerSecondInfo.html @@ -0,0 +1,172 @@ + + + + + + + +Nameless Engine: ne::RenderStatistics::FramesPerSecondInfo Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::RenderStatistics::FramesPerSecondInfo Struct Reference
    +
    +
    + + + + + + + + +

    +Public Attributes

    std::chrono::steady_clock::time_point timeAtLastFpsUpdate
     
    size_t iPresentCountSinceFpsUpdate = 0
     
    size_t iFramesPerSecond = 0
     
    +

    Detailed Description

    +

    Groups info related to measuring frame count per second.

    +

    Member Data Documentation

    + +

    ◆ iFramesPerSecond

    + +
    +
    + + + + +
    size_t ne::RenderStatistics::FramesPerSecondInfo::iFramesPerSecond = 0
    +
    +

    The number of frames that the renderer produced in the last second.

    + +
    +
    + +

    ◆ iPresentCountSinceFpsUpdate

    + +
    +
    + + + + +
    size_t ne::RenderStatistics::FramesPerSecondInfo::iPresentCountSinceFpsUpdate = 0
    +
    +

    The number of times the renderer presented a new image since the last time we updated iFramesPerSecond.

    + +
    +
    + +

    ◆ timeAtLastFpsUpdate

    + +
    +
    + + + + +
    std::chrono::steady_clock::time_point ne::RenderStatistics::FramesPerSecondInfo::timeAtLastFpsUpdate
    +
    +

    Time when the renderer has finished initializing or when iFramesPerSecond was updated.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1RenderStatistics_1_1FramesPerSecondInfo.js b/structne_1_1RenderStatistics_1_1FramesPerSecondInfo.js new file mode 100644 index 000000000..d3b4eaaf4 --- /dev/null +++ b/structne_1_1RenderStatistics_1_1FramesPerSecondInfo.js @@ -0,0 +1,6 @@ +var structne_1_1RenderStatistics_1_1FramesPerSecondInfo = +[ + [ "iFramesPerSecond", "structne_1_1RenderStatistics_1_1FramesPerSecondInfo.html#a7818baef34f9efe44bac2f4d9a29eb5d", null ], + [ "iPresentCountSinceFpsUpdate", "structne_1_1RenderStatistics_1_1FramesPerSecondInfo.html#aa48ccd541f368001eea7856ea486c62d", null ], + [ "timeAtLastFpsUpdate", "structne_1_1RenderStatistics_1_1FramesPerSecondInfo.html#ae93ac08ef4bdd9c1a29e852f89f2741b", null ] +]; \ No newline at end of file diff --git a/structne_1_1RenderStatistics_1_1TaskTimeInfo-members.html b/structne_1_1RenderStatistics_1_1TaskTimeInfo-members.html new file mode 100644 index 000000000..5117cc769 --- /dev/null +++ b/structne_1_1RenderStatistics_1_1TaskTimeInfo-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::RenderStatistics::TaskTimeInfo Member List
    +
    + +
    + + + + diff --git a/structne_1_1RenderStatistics_1_1TaskTimeInfo.html b/structne_1_1RenderStatistics_1_1TaskTimeInfo.html new file mode 100644 index 000000000..cb4185587 --- /dev/null +++ b/structne_1_1RenderStatistics_1_1TaskTimeInfo.html @@ -0,0 +1,175 @@ + + + + + + + +Nameless Engine: ne::RenderStatistics::TaskTimeInfo Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::RenderStatistics::TaskTimeInfo Struct Reference
    +
    +
    + + + + + + + + +

    +Public Attributes

    float timeSpentLastFrameWaitingForGpuInMs = 0.0F
     
    float timeSpentLastFrameOnFrustumCullingMeshesInMs = 0.0F
     
    float timeSpentLastFrameOnFrustumCullingLightsInMs = 0.0F
     
    +

    Detailed Description

    +

    Groups info related to measuring time for specific tasks.

    +

    Member Data Documentation

    + +

    ◆ timeSpentLastFrameOnFrustumCullingLightsInMs

    + +
    +
    + + + + +
    float ne::RenderStatistics::TaskTimeInfo::timeSpentLastFrameOnFrustumCullingLightsInMs = 0.0F
    +
    +

    Total time that was spent last frame doing frustum culling for lights.

    +
    Remarks
    Updated only after a frame is submitted.
    + +
    +
    + +

    ◆ timeSpentLastFrameOnFrustumCullingMeshesInMs

    + +
    +
    + + + + +
    float ne::RenderStatistics::TaskTimeInfo::timeSpentLastFrameOnFrustumCullingMeshesInMs = 0.0F
    +
    +

    Total time that was spent last frame doing frustum culling for meshes.

    +
    Remarks
    Updated only after a frame is submitted.
    + +
    +
    + +

    ◆ timeSpentLastFrameWaitingForGpuInMs

    + +
    +
    + + + + +
    float ne::RenderStatistics::TaskTimeInfo::timeSpentLastFrameWaitingForGpuInMs = 0.0F
    +
    +

    Time (in milliseconds) that was spent last frame waiting for the GPU to finish using the new frame resource.

    +
    Remarks
    If constantly bigger than zero then this might mean that you are GPU bound, if constantly zero then this might mean that you are CPU bound.
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1RenderStatistics_1_1TaskTimeInfo.js b/structne_1_1RenderStatistics_1_1TaskTimeInfo.js new file mode 100644 index 000000000..d462cbbea --- /dev/null +++ b/structne_1_1RenderStatistics_1_1TaskTimeInfo.js @@ -0,0 +1,6 @@ +var structne_1_1RenderStatistics_1_1TaskTimeInfo = +[ + [ "timeSpentLastFrameOnFrustumCullingLightsInMs", "structne_1_1RenderStatistics_1_1TaskTimeInfo.html#adb91644b4ac6d37658252afeeb7058ed", null ], + [ "timeSpentLastFrameOnFrustumCullingMeshesInMs", "structne_1_1RenderStatistics_1_1TaskTimeInfo.html#a54be5c53ebcfffb43d21934d80f366a2", null ], + [ "timeSpentLastFrameWaitingForGpuInMs", "structne_1_1RenderStatistics_1_1TaskTimeInfo.html#a9ff526cbb2453c22f468b9a4e4acef35", null ] +]; \ No newline at end of file diff --git a/structne_1_1Renderer_1_1LightsInFrustum-members.html b/structne_1_1Renderer_1_1LightsInFrustum-members.html new file mode 100644 index 000000000..9490689b2 --- /dev/null +++ b/structne_1_1Renderer_1_1LightsInFrustum-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::Renderer::LightsInFrustum Member List
    +
    + +
    + + + + diff --git a/structne_1_1Renderer_1_1LightsInFrustum.html b/structne_1_1Renderer_1_1LightsInFrustum.html new file mode 100644 index 000000000..139885ee9 --- /dev/null +++ b/structne_1_1Renderer_1_1LightsInFrustum.html @@ -0,0 +1,157 @@ + + + + + + + +Nameless Engine: ne::Renderer::LightsInFrustum Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::Renderer::LightsInFrustum Struct Reference
    +
    +
    + +

    #include <Renderer.h>

    + + + + + + +

    +Public Attributes

    std::pair< std::recursive_mutex *, ShaderLightsInFrustumSingleType * > mtxPointLightsInFrustum
     
    std::pair< std::recursive_mutex *, ShaderLightsInFrustumSingleType * > mtxSpotlightsInFrustum
     
    +

    Detailed Description

    +

    Groups pointers to information about light sources in frustum.

    +

    Member Data Documentation

    + +

    ◆ mtxPointLightsInFrustum

    + +
    +
    + + + + +
    std::pair<std::recursive_mutex*, ShaderLightsInFrustumSingleType*> ne::Renderer::LightsInFrustum::mtxPointLightsInFrustum
    +
    +

    Point lights in frustum of the camera.

    + +
    +
    + +

    ◆ mtxSpotlightsInFrustum

    + +
    +
    + + + + +
    std::pair<std::recursive_mutex*, ShaderLightsInFrustumSingleType*> ne::Renderer::LightsInFrustum::mtxSpotlightsInFrustum
    +
    +

    Spotlights in frustum of the camera.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1Renderer_1_1LightsInFrustum.js b/structne_1_1Renderer_1_1LightsInFrustum.js new file mode 100644 index 000000000..4a7bd650c --- /dev/null +++ b/structne_1_1Renderer_1_1LightsInFrustum.js @@ -0,0 +1,5 @@ +var structne_1_1Renderer_1_1LightsInFrustum = +[ + [ "mtxPointLightsInFrustum", "structne_1_1Renderer_1_1LightsInFrustum.html#a68a90f23d6cb60e1536dcd381ce92445", null ], + [ "mtxSpotlightsInFrustum", "structne_1_1Renderer_1_1LightsInFrustum.html#a759a0d5ceaafd9723aff2b3c135dac30", null ] +]; \ No newline at end of file diff --git a/structne_1_1Renderer_1_1MeshesInFrustum-members.html b/structne_1_1Renderer_1_1MeshesInFrustum-members.html new file mode 100644 index 000000000..9521193d7 --- /dev/null +++ b/structne_1_1Renderer_1_1MeshesInFrustum-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::Renderer::MeshesInFrustum Member List
    +
    +
    + +

    This is the complete list of members for ne::Renderer::MeshesInFrustum, including all inherited members.

    + + + +
    vOpaquePipelinesne::Renderer::MeshesInFrustum
    vTransparentPipelinesne::Renderer::MeshesInFrustum
    +
    + + + + diff --git a/structne_1_1Renderer_1_1MeshesInFrustum.html b/structne_1_1Renderer_1_1MeshesInFrustum.html new file mode 100644 index 000000000..64b6f14f5 --- /dev/null +++ b/structne_1_1Renderer_1_1MeshesInFrustum.html @@ -0,0 +1,167 @@ + + + + + + + +Nameless Engine: ne::Renderer::MeshesInFrustum Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::Renderer::MeshesInFrustum Struct Reference
    +
    +
    + +

    #include <Renderer.h>

    + + + + + + + + +

    +Classes

    struct  MaterialInFrustumInfo
     
    struct  MeshInFrustumInfo
     
    struct  PipelineInFrustumInfo
     
    + + + + + +

    +Public Attributes

    std::vector< PipelineInFrustumInfovOpaquePipelines
     
    std::vector< PipelineInFrustumInfovTransparentPipelines
     
    +

    Detailed Description

    +

    Groups information about meshes in active camera's frustum.

    +

    Member Data Documentation

    + +

    ◆ vOpaquePipelines

    + +
    +
    + + + + +
    std::vector<PipelineInFrustumInfo> ne::Renderer::MeshesInFrustum::vOpaquePipelines
    +
    +

    Meshes in frustum that use opaque pipeline.

    + +
    +
    + +

    ◆ vTransparentPipelines

    + +
    +
    + + + + +
    std::vector<PipelineInFrustumInfo> ne::Renderer::MeshesInFrustum::vTransparentPipelines
    +
    +

    Meshes in frustum that use pipeline with pixel blending.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1Renderer_1_1MeshesInFrustum.js b/structne_1_1Renderer_1_1MeshesInFrustum.js new file mode 100644 index 000000000..1f121ae66 --- /dev/null +++ b/structne_1_1Renderer_1_1MeshesInFrustum.js @@ -0,0 +1,8 @@ +var structne_1_1Renderer_1_1MeshesInFrustum = +[ + [ "MaterialInFrustumInfo", "structne_1_1Renderer_1_1MeshesInFrustum_1_1MaterialInFrustumInfo.html", "structne_1_1Renderer_1_1MeshesInFrustum_1_1MaterialInFrustumInfo" ], + [ "MeshInFrustumInfo", "structne_1_1Renderer_1_1MeshesInFrustum_1_1MeshInFrustumInfo.html", "structne_1_1Renderer_1_1MeshesInFrustum_1_1MeshInFrustumInfo" ], + [ "PipelineInFrustumInfo", "structne_1_1Renderer_1_1MeshesInFrustum_1_1PipelineInFrustumInfo.html", "structne_1_1Renderer_1_1MeshesInFrustum_1_1PipelineInFrustumInfo" ], + [ "vOpaquePipelines", "structne_1_1Renderer_1_1MeshesInFrustum.html#a82123c1d9f724900ebc3a998624fc5bb", null ], + [ "vTransparentPipelines", "structne_1_1Renderer_1_1MeshesInFrustum.html#acbc8465af7cd6f39a2dc2e9f767a050a", null ] +]; \ No newline at end of file diff --git a/structne_1_1Renderer_1_1MeshesInFrustum_1_1MaterialInFrustumInfo-members.html b/structne_1_1Renderer_1_1MeshesInFrustum_1_1MaterialInFrustumInfo-members.html new file mode 100644 index 000000000..385fa53ea --- /dev/null +++ b/structne_1_1Renderer_1_1MeshesInFrustum_1_1MaterialInFrustumInfo-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::Renderer::MeshesInFrustum::MaterialInFrustumInfo Member List
    +
    + +
    + + + + diff --git a/structne_1_1Renderer_1_1MeshesInFrustum_1_1MaterialInFrustumInfo.html b/structne_1_1Renderer_1_1MeshesInFrustum_1_1MaterialInFrustumInfo.html new file mode 100644 index 000000000..33424fefc --- /dev/null +++ b/structne_1_1Renderer_1_1MeshesInFrustum_1_1MaterialInFrustumInfo.html @@ -0,0 +1,157 @@ + + + + + + + +Nameless Engine: ne::Renderer::MeshesInFrustum::MaterialInFrustumInfo Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::Renderer::MeshesInFrustum::MaterialInFrustumInfo Struct Reference
    +
    +
    + +

    #include <Renderer.h>

    + + + + + + +

    +Public Attributes

    MaterialpMaterial = nullptr
     
    std::vector< MeshInFrustumInfovMeshes
     
    +

    Detailed Description

    +

    Groups information about meshes that use the same material.

    +

    Member Data Documentation

    + +

    ◆ pMaterial

    + +
    +
    + + + + +
    Material* ne::Renderer::MeshesInFrustum::MaterialInFrustumInfo::pMaterial = nullptr
    +
    +

    Material.

    + +
    +
    + +

    ◆ vMeshes

    + +
    +
    + + + + +
    std::vector<MeshInFrustumInfo> ne::Renderer::MeshesInFrustum::MaterialInFrustumInfo::vMeshes
    +
    +

    Meshes that use pMaterial.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1Renderer_1_1MeshesInFrustum_1_1MaterialInFrustumInfo.js b/structne_1_1Renderer_1_1MeshesInFrustum_1_1MaterialInFrustumInfo.js new file mode 100644 index 000000000..153f52319 --- /dev/null +++ b/structne_1_1Renderer_1_1MeshesInFrustum_1_1MaterialInFrustumInfo.js @@ -0,0 +1,5 @@ +var structne_1_1Renderer_1_1MeshesInFrustum_1_1MaterialInFrustumInfo = +[ + [ "pMaterial", "structne_1_1Renderer_1_1MeshesInFrustum_1_1MaterialInFrustumInfo.html#a5e0b2532dd826010cf094ccda5dfb5cd", null ], + [ "vMeshes", "structne_1_1Renderer_1_1MeshesInFrustum_1_1MaterialInFrustumInfo.html#a7784f6ab58458368a8c1c22f3f8d3698", null ] +]; \ No newline at end of file diff --git a/structne_1_1Renderer_1_1MeshesInFrustum_1_1MeshInFrustumInfo-members.html b/structne_1_1Renderer_1_1MeshesInFrustum_1_1MeshInFrustumInfo-members.html new file mode 100644 index 000000000..8f38aa103 --- /dev/null +++ b/structne_1_1Renderer_1_1MeshesInFrustum_1_1MeshInFrustumInfo-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::Renderer::MeshesInFrustum::MeshInFrustumInfo Member List
    +
    + +
    + + + + diff --git a/structne_1_1Renderer_1_1MeshesInFrustum_1_1MeshInFrustumInfo.html b/structne_1_1Renderer_1_1MeshesInFrustum_1_1MeshInFrustumInfo.html new file mode 100644 index 000000000..3ebcc35b5 --- /dev/null +++ b/structne_1_1Renderer_1_1MeshesInFrustum_1_1MeshInFrustumInfo.html @@ -0,0 +1,157 @@ + + + + + + + +Nameless Engine: ne::Renderer::MeshesInFrustum::MeshInFrustumInfo Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::Renderer::MeshesInFrustum::MeshInFrustumInfo Struct Reference
    +
    +
    + +

    #include <Renderer.h>

    + + + + + + +

    +Public Attributes

    MeshNodepMeshNode = nullptr
     
    std::vector< MeshIndexBufferInfovIndexBuffers
     
    +

    Detailed Description

    +

    Groups information about index buffers of some mesh that use the same material.

    +

    Member Data Documentation

    + +

    ◆ pMeshNode

    + +
    +
    + + + + +
    MeshNode* ne::Renderer::MeshesInFrustum::MeshInFrustumInfo::pMeshNode = nullptr
    +
    +

    Mesh node.

    + +
    +
    + +

    ◆ vIndexBuffers

    + +
    +
    + + + + +
    std::vector<MeshIndexBufferInfo> ne::Renderer::MeshesInFrustum::MeshInFrustumInfo::vIndexBuffers
    +
    +

    Index buffers of pMeshNode that use the same material.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1Renderer_1_1MeshesInFrustum_1_1MeshInFrustumInfo.js b/structne_1_1Renderer_1_1MeshesInFrustum_1_1MeshInFrustumInfo.js new file mode 100644 index 000000000..2fcc7006b --- /dev/null +++ b/structne_1_1Renderer_1_1MeshesInFrustum_1_1MeshInFrustumInfo.js @@ -0,0 +1,5 @@ +var structne_1_1Renderer_1_1MeshesInFrustum_1_1MeshInFrustumInfo = +[ + [ "pMeshNode", "structne_1_1Renderer_1_1MeshesInFrustum_1_1MeshInFrustumInfo.html#a318875ab73c37d6f08eb156609ec9ac2", null ], + [ "vIndexBuffers", "structne_1_1Renderer_1_1MeshesInFrustum_1_1MeshInFrustumInfo.html#a06c6161b5c284adfc6f7f1cb29d98f58", null ] +]; \ No newline at end of file diff --git a/structne_1_1Renderer_1_1MeshesInFrustum_1_1PipelineInFrustumInfo-members.html b/structne_1_1Renderer_1_1MeshesInFrustum_1_1PipelineInFrustumInfo-members.html new file mode 100644 index 000000000..58f876bdb --- /dev/null +++ b/structne_1_1Renderer_1_1MeshesInFrustum_1_1PipelineInFrustumInfo-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::Renderer::MeshesInFrustum::PipelineInFrustumInfo Member List
    +
    + +
    + + + + diff --git a/structne_1_1Renderer_1_1MeshesInFrustum_1_1PipelineInFrustumInfo.html b/structne_1_1Renderer_1_1MeshesInFrustum_1_1PipelineInFrustumInfo.html new file mode 100644 index 000000000..1f0832a36 --- /dev/null +++ b/structne_1_1Renderer_1_1MeshesInFrustum_1_1PipelineInFrustumInfo.html @@ -0,0 +1,157 @@ + + + + + + + +Nameless Engine: ne::Renderer::MeshesInFrustum::PipelineInFrustumInfo Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::Renderer::MeshesInFrustum::PipelineInFrustumInfo Struct Reference
    +
    +
    + +

    #include <Renderer.h>

    + + + + + + +

    +Public Attributes

    PipelinepPipeline = nullptr
     
    std::vector< MaterialInFrustumInfovMaterials
     
    +

    Detailed Description

    +

    Stores information about materials that use a specific pipeline.

    +

    Member Data Documentation

    + +

    ◆ pPipeline

    + +
    +
    + + + + +
    Pipeline* ne::Renderer::MeshesInFrustum::PipelineInFrustumInfo::pPipeline = nullptr
    +
    +

    Pipeline.

    + +
    +
    + +

    ◆ vMaterials

    + +
    +
    + + + + +
    std::vector<MaterialInFrustumInfo> ne::Renderer::MeshesInFrustum::PipelineInFrustumInfo::vMaterials
    +
    +

    Materials that use pPipeline.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1Renderer_1_1MeshesInFrustum_1_1PipelineInFrustumInfo.js b/structne_1_1Renderer_1_1MeshesInFrustum_1_1PipelineInFrustumInfo.js new file mode 100644 index 000000000..db391bfd9 --- /dev/null +++ b/structne_1_1Renderer_1_1MeshesInFrustum_1_1PipelineInFrustumInfo.js @@ -0,0 +1,5 @@ +var structne_1_1Renderer_1_1MeshesInFrustum_1_1PipelineInFrustumInfo = +[ + [ "pPipeline", "structne_1_1Renderer_1_1MeshesInFrustum_1_1PipelineInFrustumInfo.html#a3728e9f7ee6fd8dedef7bf3ac8f6a462", null ], + [ "vMaterials", "structne_1_1Renderer_1_1MeshesInFrustum_1_1PipelineInFrustumInfo.html#a3e2d6a6407f884cb408349617d8305bc", null ] +]; \ No newline at end of file diff --git a/structne_1_1RootSignatureGenerator_1_1CollectedInfo-members.html b/structne_1_1RootSignatureGenerator_1_1CollectedInfo-members.html new file mode 100644 index 000000000..7a7dafa94 --- /dev/null +++ b/structne_1_1RootSignatureGenerator_1_1CollectedInfo-members.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::RootSignatureGenerator::CollectedInfo Member List
    +
    + +
    + + + + diff --git a/structne_1_1RootSignatureGenerator_1_1CollectedInfo.html b/structne_1_1RootSignatureGenerator_1_1CollectedInfo.html new file mode 100644 index 000000000..f8eee8dff --- /dev/null +++ b/structne_1_1RootSignatureGenerator_1_1CollectedInfo.html @@ -0,0 +1,194 @@ + + + + + + + +Nameless Engine: ne::RootSignatureGenerator::CollectedInfo Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::RootSignatureGenerator::CollectedInfo Struct Reference
    +
    +
    + +

    #include <RootSignatureGenerator.h>

    + + + + + + + + + + +

    +Public Attributes

    std::set< SamplerType > staticSamplers
     
    std::vector< RootParametervRootParameters
     
    std::unordered_map< std::string, std::pair< UINT, RootParameter > > rootParameterIndices
     
    std::unordered_map< std::string, size_t > rootConstantOffsets
     
    +

    Detailed Description

    +

    Contains collected root signature info.

    +

    Member Data Documentation

    + +

    ◆ rootConstantOffsets

    + +
    +
    + + + + +
    std::unordered_map<std::string, size_t> ne::RootSignatureGenerator::CollectedInfo::rootConstantOffsets
    +
    +

    Stores pairs of "name of field defined in HLSL in RootConstants cbuffer" (all with uint type) and "offset from the beginning of the struct (in `uint`s not bytes)".

    +
    Remarks
    May be empty if constants are not used.
    +
    +If a non uint fields is found an error is returned instead.
    + +
    +
    + +

    ◆ rootParameterIndices

    + +
    +
    + + + + +
    std::unordered_map<std::string, std::pair<UINT, RootParameter> > ne::RootSignatureGenerator::CollectedInfo::rootParameterIndices
    +
    +

    Stores pairs of shader resource name - root parameter index / root parameter, allows determining what resource is binded to what root parameter index (by using resource name taken from shader file).

    + +
    +
    + +

    ◆ staticSamplers

    + +
    +
    + + + + +
    std::set<SamplerType> ne::RootSignatureGenerator::CollectedInfo::staticSamplers
    +
    +

    Static samplers of root signature.

    + +
    +
    + +

    ◆ vRootParameters

    + +
    +
    + + + + +
    std::vector<RootParameter> ne::RootSignatureGenerator::CollectedInfo::vRootParameters
    +
    +

    Root parameters that were used in creation of the root signature.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1RootSignatureGenerator_1_1CollectedInfo.js b/structne_1_1RootSignatureGenerator_1_1CollectedInfo.js new file mode 100644 index 000000000..7ff8e7676 --- /dev/null +++ b/structne_1_1RootSignatureGenerator_1_1CollectedInfo.js @@ -0,0 +1,7 @@ +var structne_1_1RootSignatureGenerator_1_1CollectedInfo = +[ + [ "rootConstantOffsets", "structne_1_1RootSignatureGenerator_1_1CollectedInfo.html#af942b9cb74a1ff4e735ee589602e3b93", null ], + [ "rootParameterIndices", "structne_1_1RootSignatureGenerator_1_1CollectedInfo.html#a53b201af963f5063b33004aa13f09cc6", null ], + [ "staticSamplers", "structne_1_1RootSignatureGenerator_1_1CollectedInfo.html#a1c432c061a0223f842085c16ebda8249", null ], + [ "vRootParameters", "structne_1_1RootSignatureGenerator_1_1CollectedInfo.html#a19515830c26d731507862fca233c461e", null ] +]; \ No newline at end of file diff --git a/structne_1_1RootSignatureGenerator_1_1Generated-members.html b/structne_1_1RootSignatureGenerator_1_1Generated-members.html new file mode 100644 index 000000000..1bbe859f2 --- /dev/null +++ b/structne_1_1RootSignatureGenerator_1_1Generated-members.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::RootSignatureGenerator::Generated Member List
    +
    + +
    + + + + diff --git a/structne_1_1RootSignatureGenerator_1_1Generated.html b/structne_1_1RootSignatureGenerator_1_1Generated.html new file mode 100644 index 000000000..beaaa5dde --- /dev/null +++ b/structne_1_1RootSignatureGenerator_1_1Generated.html @@ -0,0 +1,198 @@ + + + + + + + +Nameless Engine: ne::RootSignatureGenerator::Generated Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::RootSignatureGenerator::Generated Struct Reference
    +
    +
    + +

    #include <RootSignatureGenerator.h>

    + + + + + + + + + + +

    +Public Attributes

    ComPtr< ID3D12RootSignature > pRootSignature
     
    std::unordered_map< std::string, UINT > rootParameterIndices
     
    std::array< UINT, static_cast< unsigned int >(SpecialRootParameterSlot::SIZE)> vSpecialRootParameterIndices
     
    std::unordered_map< std::string, size_t > rootConstantOffsets
     
    +

    Detailed Description

    +

    Contains data that was generated during the process of merging two root signatures.

    +

    Member Data Documentation

    + +

    ◆ pRootSignature

    + +
    +
    + + + + +
    ComPtr<ID3D12RootSignature> ne::RootSignatureGenerator::Generated::pRootSignature
    +
    +

    Merged (new) root signature.

    + +
    +
    + +

    ◆ rootConstantOffsets

    + +
    +
    + + + + +
    std::unordered_map<std::string, size_t> ne::RootSignatureGenerator::Generated::rootConstantOffsets
    +
    +

    Stores pairs of "name of field defined in HLSL in RootConstants cbuffer" (all with uint type) and "offset from the beginning of the struct (in `uint`s not bytes)".

    +
    Remarks
    May be empty if constants are not used.
    +
    +If a non uint fields is found an error is returned instead.
    + +
    +
    + +

    ◆ rootParameterIndices

    + +
    +
    + + + + +
    std::unordered_map<std::string, UINT> ne::RootSignatureGenerator::Generated::rootParameterIndices
    +
    +

    New root parameters map of pRootSignature.

    +

    Stores pairs of shader resource name - root parameter index, allows determining what resource is binded to what root parameter index (by using resource name taken from shader file).

    + +
    +
    + +

    ◆ vSpecialRootParameterIndices

    + +
    +
    + + + + +
    std::array<UINT, static_cast<unsigned int>(SpecialRootParameterSlot::SIZE)> ne::RootSignatureGenerator::Generated::vSpecialRootParameterIndices
    +
    +

    Stores indices of some non-user specified root parameters. Duplicates some root parameters and their indices from rootParameterIndices but only stored some special non-user specified root parameter indices.

    +
    Remarks
    Generally used for fast access (without doing a find in the map) to some root parameter indices.
    +
    +Example usage: iRootParameterIndex = vIndices[Slot::FRAME_DATA].
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1RootSignatureGenerator_1_1Generated.js b/structne_1_1RootSignatureGenerator_1_1Generated.js new file mode 100644 index 000000000..08d47597f --- /dev/null +++ b/structne_1_1RootSignatureGenerator_1_1Generated.js @@ -0,0 +1,7 @@ +var structne_1_1RootSignatureGenerator_1_1Generated = +[ + [ "pRootSignature", "structne_1_1RootSignatureGenerator_1_1Generated.html#a5cd04d90f905758ae3598b1f870f9107", null ], + [ "rootConstantOffsets", "structne_1_1RootSignatureGenerator_1_1Generated.html#acf5733979669337d47c7f6f162b10c86", null ], + [ "rootParameterIndices", "structne_1_1RootSignatureGenerator_1_1Generated.html#af63b8a223b8da37cc52c3a6827f744c9", null ], + [ "vSpecialRootParameterIndices", "structne_1_1RootSignatureGenerator_1_1Generated.html#a56185d71ba24dce3019c9b636d696c1c", null ] +]; \ No newline at end of file diff --git a/structne_1_1SerializableObjectInformation-members.html b/structne_1_1SerializableObjectInformation-members.html new file mode 100644 index 000000000..eade6b794 --- /dev/null +++ b/structne_1_1SerializableObjectInformation-members.html @@ -0,0 +1,116 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::SerializableObjectInformation Member List
    +
    +
    + +

    This is the complete list of members for ne::SerializableObjectInformation, including all inherited members.

    + + + + + + + +
    customAttributesne::SerializableObjectInformation
    pObjectne::SerializableObjectInformation
    pOriginalObjectne::SerializableObjectInformation
    SerializableObjectInformation()=delete (defined in ne::SerializableObjectInformation)ne::SerializableObjectInformation
    SerializableObjectInformation(Serializable *pObject, const std::string &sObjectUniqueId, const std::unordered_map< std::string, std::string > &customAttributes={}, Serializable *pOriginalObject=nullptr)ne::SerializableObjectInformationinline
    sObjectUniqueIdne::SerializableObjectInformation
    +
    + + + + diff --git a/structne_1_1SerializableObjectInformation.html b/structne_1_1SerializableObjectInformation.html new file mode 100644 index 000000000..002104ba5 --- /dev/null +++ b/structne_1_1SerializableObjectInformation.html @@ -0,0 +1,265 @@ + + + + + + + +Nameless Engine: ne::SerializableObjectInformation Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::SerializableObjectInformation Struct Reference
    +
    +
    + +

    #include <Serializable.h>

    +
    +Inheritance diagram for ne::SerializableObjectInformation:
    +
    +
    + + +ne::Node::SerializableObjectInformationWithGcPointer + +
    + + + + +

    +Public Member Functions

     SerializableObjectInformation (Serializable *pObject, const std::string &sObjectUniqueId, const std::unordered_map< std::string, std::string > &customAttributes={}, Serializable *pOriginalObject=nullptr)
     
    + + + + + + + + + +

    +Public Attributes

    SerializablepObject = nullptr
     
    SerializablepOriginalObject = nullptr
     
    std::string sObjectUniqueId
     
    std::unordered_map< std::string, std::string > customAttributes
     
    +

    Detailed Description

    +

    Information about an object to be serialized.

    +

    Constructor & Destructor Documentation

    + +

    ◆ SerializableObjectInformation()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ne::SerializableObjectInformation::SerializableObjectInformation (SerializablepObject,
    const std::string & sObjectUniqueId,
    const std::unordered_map< std::string, std::string > & customAttributes = {},
    SerializablepOriginalObject = nullptr 
    )
    +
    +inline
    +
    +

    Initialized object information for serialization.

    +
    Parameters
    + + + + + +
    pObjectObject to serialize.
    sObjectUniqueIdObject's unique ID. Don't use dots in IDs.
    customAttributesOptional. Pairs of values to serialize with this object.
    pOriginalObjectOptional. Use if the object was previously deserialized and you now want to only serialize changed fields of this object and additionally store the path to the original file (to deserialize unchanged fields).
    +
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ customAttributes

    + +
    +
    + + + + +
    std::unordered_map<std::string, std::string> ne::SerializableObjectInformation::customAttributes
    +
    +

    Map of object attributes (custom information) that will be also serialized/deserialized.

    + +
    +
    + +

    ◆ pObject

    + +
    +
    + + + + +
    Serializable* ne::SerializableObjectInformation::pObject = nullptr
    +
    +

    Object to serialize.

    + +
    +
    + +

    ◆ pOriginalObject

    + +
    +
    + + + + +
    Serializable* ne::SerializableObjectInformation::pOriginalObject = nullptr
    +
    +

    Use if pObject was previously deserialized and you now want to only serialize changed fields of this object and additionally store the path to the original file (to deserialize unchanged fields).

    + +
    +
    + +

    ◆ sObjectUniqueId

    + +
    +
    + + + + +
    std::string ne::SerializableObjectInformation::sObjectUniqueId
    +
    +

    Unique object ID. Don't use dots in it.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1SerializableObjectInformation.js b/structne_1_1SerializableObjectInformation.js new file mode 100644 index 000000000..0d788496b --- /dev/null +++ b/structne_1_1SerializableObjectInformation.js @@ -0,0 +1,8 @@ +var structne_1_1SerializableObjectInformation = +[ + [ "SerializableObjectInformation", "structne_1_1SerializableObjectInformation.html#aedc442ac8943e01ebe484ef561323c7a", null ], + [ "customAttributes", "structne_1_1SerializableObjectInformation.html#a98df142c3804175ea2388b143cd44fcb", null ], + [ "pObject", "structne_1_1SerializableObjectInformation.html#a17b0331fa19ed855cb25a806288f3a41", null ], + [ "pOriginalObject", "structne_1_1SerializableObjectInformation.html#a9060266f5da40f01cc05af2358698b77", null ], + [ "sObjectUniqueId", "structne_1_1SerializableObjectInformation.html#a843a31c2abe2fb41b9e711fdee6df157", null ] +]; \ No newline at end of file diff --git a/structne_1_1SerializableObjectInformation.png b/structne_1_1SerializableObjectInformation.png new file mode 100644 index 0000000000000000000000000000000000000000..c42f2731125c77902bfe483cb90da0029b26e566 GIT binary patch literal 1099 zcmeAS@N?(olHy`uVBq!ia0y~yV6+6X12~w0Wa#EkPl1$lfKQ0)|NsAi%olIImi8Z7 zZegHVATj;SivtG^0L6nRU0wl{<17jC3uXZF!N8np_7w&O=4+lVjv*C{Z|A6J;&(@O9b56O%5@5c(hFrMWW5t1?)`)64Txv{%t2k-$ll zmvl^;qvAT{iHhc;`%2~cc9Z^GKDIrd-OWDMS;wbaBiPFGUF4D}OX@G^Py8G`ZAl#W z;huEbh$ob5~7!w)wH7&;9y$^1H9L zSE;Q|*jqf`XVRlzEIZXZ+Lp-9+xE28-+ZgT`TSQKjkfMQcV&|83!ihbE}mVll})d& z-MhQO?dy|Ozt7ZuuruVnIah2RyZ6*3+rK&%1qT;Qez)VR>7!+L6z!C@8|+ni9vnC2 z&MM~}tD>fzZ%kctLHM$E5qtCLd13zR?)P-vdaPZRa%;!D`^EM1W3HQLKhAl(?&p>6 z+h4C8e}BOtx}!9IuGN7VYt}xocDcWOy@TJRf9$cjb3OegDg82jqPP9b{@~(CC90~H zo?RLzJ%e085};ta*c+p{bcvVdQ(MNEuy_W|2J@*;7?^(j@+x6?uYHn{rG$C<3x<1P zlbAa+cQU$6dBOnH#UQ9^+0Zdb#=*stPhpV?yFegNTH_?8(j~b?x3}enU%kF9_jc&f zw6tkP#?{`Q=g#OXQb|t}3!G$Z+^unP=1kWTuXQ`l*PZjfQ+MW!eQwR~vV<>}O^+Pf z(qXjJ*!a6nke%ARTl25JdarD6bMLEmQJp=zp_pF!obZZo0`7@c63_2kD|27RZ@%VV zfpPj1ucuEI+<%sJD(lN)yJvCc_n!Z3o8SCAWUI;iTKndgzt8_o-u^4#e9F|8@;H@j zOS%77_G@jQlK8bcX!>UL>!)s9Es=gFz&5|C;?}h17PS-Jo!IidJ|(Mo?n>3_oV>VS z7mJQZ)P0?L=hVgLGFj_3?|!?^%qS)}EsX8!lRGaXa-X;_Q~X_0K6lLy(dUO^Uhb;S zJ^^LB+iUvhYN zRP-?}Tf@Cd80|@%`FL=AM&xdP8rwW=}KT`S;GbwG}yA|CMf^ zBWr2AxqHQa=d)+ltpLTwMb?vlc?+hm0Sdp?21Ux0Cuhz8lSWz^Fl`ub?#O!rjKm;d dbiRLS-~N%k)L + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::ShaderArrayIndexManager::InternalData Member List
    +
    + +
    + + + + diff --git a/structne_1_1ShaderArrayIndexManager_1_1InternalData.html b/structne_1_1ShaderArrayIndexManager_1_1InternalData.html new file mode 100644 index 000000000..3881b848a --- /dev/null +++ b/structne_1_1ShaderArrayIndexManager_1_1InternalData.html @@ -0,0 +1,172 @@ + + + + + + + +Nameless Engine: ne::ShaderArrayIndexManager::InternalData Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::ShaderArrayIndexManager::InternalData Struct Reference
    +
    +
    + + + + + + + + +

    +Public Attributes

    std::queue< unsigned int > noLongerUsedIndices
     
    unsigned int iNextFreeIndex = 0
     
    size_t iActiveIndexCount = 0
     
    +

    Detailed Description

    +

    Groups mutex guarded data.

    +

    Member Data Documentation

    + +

    ◆ iActiveIndexCount

    + +
    +
    + + + + +
    size_t ne::ShaderArrayIndexManager::InternalData::iActiveIndexCount = 0
    +
    +

    The number of currently existing (active, not destroyed) index objects that still reference this manager.

    + +
    +
    + +

    ◆ iNextFreeIndex

    + +
    +
    + + + + +
    unsigned int ne::ShaderArrayIndexManager::InternalData::iNextFreeIndex = 0
    +
    +

    Index that can be used.

    + +
    +
    + +

    ◆ noLongerUsedIndices

    + +
    +
    + + + + +
    std::queue<unsigned int> ne::ShaderArrayIndexManager::InternalData::noLongerUsedIndices
    +
    +

    Stores indices that were used some time and no longer being used.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1ShaderArrayIndexManager_1_1InternalData.js b/structne_1_1ShaderArrayIndexManager_1_1InternalData.js new file mode 100644 index 000000000..9c11e67a1 --- /dev/null +++ b/structne_1_1ShaderArrayIndexManager_1_1InternalData.js @@ -0,0 +1,6 @@ +var structne_1_1ShaderArrayIndexManager_1_1InternalData = +[ + [ "iActiveIndexCount", "structne_1_1ShaderArrayIndexManager_1_1InternalData.html#ac4543922a5899450368aed2f839a348b", null ], + [ "iNextFreeIndex", "structne_1_1ShaderArrayIndexManager_1_1InternalData.html#a74dfb5dcba6aadecd499dac9fa07f146", null ], + [ "noLongerUsedIndices", "structne_1_1ShaderArrayIndexManager_1_1InternalData.html#a1519589d2b693c484268701737964b2b", null ] +]; \ No newline at end of file diff --git a/structne_1_1ShaderCacheInvalidationReasonDescription-members.html b/structne_1_1ShaderCacheInvalidationReasonDescription-members.html new file mode 100644 index 000000000..9e558ac86 --- /dev/null +++ b/structne_1_1ShaderCacheInvalidationReasonDescription-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::ShaderCacheInvalidationReasonDescription Member List
    +
    +
    + +

    This is the complete list of members for ne::ShaderCacheInvalidationReasonDescription, including all inherited members.

    + + + +
    cacheInvalidationReasonsne::ShaderCacheInvalidationReasonDescriptioninlinestatic
    getDescription(ShaderCacheInvalidationReason reason)ne::ShaderCacheInvalidationReasonDescriptioninlinestatic
    +
    + + + + diff --git a/structne_1_1ShaderCacheInvalidationReasonDescription.html b/structne_1_1ShaderCacheInvalidationReasonDescription.html new file mode 100644 index 000000000..087dd796e --- /dev/null +++ b/structne_1_1ShaderCacheInvalidationReasonDescription.html @@ -0,0 +1,200 @@ + + + + + + + +Nameless Engine: ne::ShaderCacheInvalidationReasonDescription Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::ShaderCacheInvalidationReasonDescription Struct Reference
    +
    +
    + +

    #include <ShaderDescription.h>

    + + + + +

    +Static Public Member Functions

    static const char * getDescription (ShaderCacheInvalidationReason reason)
     
    + + + +

    +Static Public Attributes

    static const std::unordered_map< ShaderCacheInvalidationReason, const char * > cacheInvalidationReasons
     
    +

    Detailed Description

    +

    Maps ShaderCacheInvalidationReason to text description.

    +

    Member Function Documentation

    + +

    ◆ getDescription()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static const char * ne::ShaderCacheInvalidationReasonDescription::getDescription (ShaderCacheInvalidationReason reason)
    +
    +inlinestatic
    +
    +

    Returns description in form of text for the specified reason.

    +
    Parameters
    + + +
    reasonShader cache invalidation reason.
    +
    +
    +
    Returns
    Reason description.
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ cacheInvalidationReasons

    + +
    +
    + + + + + +
    + + + + +
    const std::unordered_map<ShaderCacheInvalidationReason, const char*> ne::ShaderCacheInvalidationReasonDescription::cacheInvalidationReasons
    +
    +inlinestatic
    +
    +Initial value:
    = {
    +
    {ShaderCacheInvalidationReason::ENTRY_FUNCTION_NAME_CHANGED,
    +
    "shader entry function name changed"},
    +
    {ShaderCacheInvalidationReason::SHADER_TYPE_CHANGED, "shader type changed"},
    +
    {ShaderCacheInvalidationReason::DEFINED_SHADER_MACROS_CHANGED,
    +
    "defined shader macros changed"},
    +
    {ShaderCacheInvalidationReason::SHADER_SOURCE_FILE_CHANGED, "shader source file changed"},
    +
    {ShaderCacheInvalidationReason::SHADER_INCLUDE_TREE_CONTENT_CHANGED,
    +
    "shader include tree content changed"},
    +
    {ShaderCacheInvalidationReason::COMPILED_BINARY_CHANGED,
    +
    "previously compiled binary file(s) changed"}}
    +

    Map between ShaderCacheInvalidationReason and text description.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1ShaderCacheInvalidationReasonDescription.js b/structne_1_1ShaderCacheInvalidationReasonDescription.js new file mode 100644 index 000000000..02cf6e46f --- /dev/null +++ b/structne_1_1ShaderCacheInvalidationReasonDescription.js @@ -0,0 +1,5 @@ +var structne_1_1ShaderCacheInvalidationReasonDescription = +[ + [ "getDescription", "structne_1_1ShaderCacheInvalidationReasonDescription.html#a7157d8971a6e12a9bf09264ac20a9ffb", null ], + [ "cacheInvalidationReasons", "structne_1_1ShaderCacheInvalidationReasonDescription.html#a300c8dbf4348ff61b07d83da04191055", null ] +]; \ No newline at end of file diff --git a/structne_1_1ShaderCacheManager_1_1GlobalShaderCacheParameterNames-members.html b/structne_1_1ShaderCacheManager_1_1GlobalShaderCacheParameterNames-members.html new file mode 100644 index 000000000..6407f2fdb --- /dev/null +++ b/structne_1_1ShaderCacheManager_1_1GlobalShaderCacheParameterNames-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::ShaderCacheManager::GlobalShaderCacheParameterNames Member List
    +
    + +
    + + + + diff --git a/structne_1_1ShaderCacheManager_1_1GlobalShaderCacheParameterNames.html b/structne_1_1ShaderCacheManager_1_1GlobalShaderCacheParameterNames.html new file mode 100644 index 000000000..a4b66fd5c --- /dev/null +++ b/structne_1_1ShaderCacheManager_1_1GlobalShaderCacheParameterNames.html @@ -0,0 +1,196 @@ + + + + + + + +Nameless Engine: ne::ShaderCacheManager::GlobalShaderCacheParameterNames Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::ShaderCacheManager::GlobalShaderCacheParameterNames Struct Reference
    +
    +
    + + + + + + + + +

    +Static Public Attributes

    static constexpr std::string_view sIsReleaseBuild = "is_release_build"
     
    static constexpr std::string_view sRenderer = "renderer"
     
    static constexpr std::string_view sShaderParserVersion = "shader_parser_version"
     
    +

    Detailed Description

    +

    Groups names (keys in TOML file) of shader cache parameters.

    +

    Member Data Documentation

    + +

    ◆ sIsReleaseBuild

    + +
    +
    + + + + + +
    + + + + +
    constexpr std::string_view ne::ShaderCacheManager::GlobalShaderCacheParameterNames::sIsReleaseBuild = "is_release_build"
    +
    +staticconstexpr
    +
    +

    Build mode.

    + +
    +
    + +

    ◆ sRenderer

    + +
    +
    + + + + + +
    + + + + +
    constexpr std::string_view ne::ShaderCacheManager::GlobalShaderCacheParameterNames::sRenderer = "renderer"
    +
    +staticconstexpr
    +
    +

    Renderer type.

    + +
    +
    + +

    ◆ sShaderParserVersion

    + +
    +
    + + + + + +
    + + + + +
    constexpr std::string_view ne::ShaderCacheManager::GlobalShaderCacheParameterNames::sShaderParserVersion = "shader_parser_version"
    +
    +staticconstexpr
    +
    +

    Version of the used shader parser that we use before compiling the shader.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1ShaderCacheManager_1_1GlobalShaderCacheParameterNames.js b/structne_1_1ShaderCacheManager_1_1GlobalShaderCacheParameterNames.js new file mode 100644 index 000000000..463c16413 --- /dev/null +++ b/structne_1_1ShaderCacheManager_1_1GlobalShaderCacheParameterNames.js @@ -0,0 +1,6 @@ +var structne_1_1ShaderCacheManager_1_1GlobalShaderCacheParameterNames = +[ + [ "sIsReleaseBuild", "structne_1_1ShaderCacheManager_1_1GlobalShaderCacheParameterNames.html#ab220de1e22f76adaf312b4db2476dbca", null ], + [ "sRenderer", "structne_1_1ShaderCacheManager_1_1GlobalShaderCacheParameterNames.html#a3036229e5d825b07a19204d549cceea9", null ], + [ "sShaderParserVersion", "structne_1_1ShaderCacheManager_1_1GlobalShaderCacheParameterNames.html#aa061f2965fbedabe62c27c95f015bbbf", null ] +]; \ No newline at end of file diff --git a/structne_1_1ShaderCpuWriteResourceBindingManager_1_1Resources-members.html b/structne_1_1ShaderCpuWriteResourceBindingManager_1_1Resources-members.html new file mode 100644 index 000000000..4985a7eb4 --- /dev/null +++ b/structne_1_1ShaderCpuWriteResourceBindingManager_1_1Resources-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::ShaderCpuWriteResourceBindingManager::Resources Member List
    +
    + +
    + + + + diff --git a/structne_1_1ShaderCpuWriteResourceBindingManager_1_1Resources.html b/structne_1_1ShaderCpuWriteResourceBindingManager_1_1Resources.html new file mode 100644 index 000000000..cf1e17686 --- /dev/null +++ b/structne_1_1ShaderCpuWriteResourceBindingManager_1_1Resources.html @@ -0,0 +1,158 @@ + + + + + + + +Nameless Engine: ne::ShaderCpuWriteResourceBindingManager::Resources Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::ShaderCpuWriteResourceBindingManager::Resources Struct Reference
    +
    +
    + +

    #include <ShaderCpuWriteResourceBindingManager.h>

    + + + + + + +

    +Public Attributes

    std::unordered_map< ShaderCpuWriteResourceBinding *, std::unique_ptr< ShaderCpuWriteResourceBinding > > all
     
    std::array< std::unordered_set< ShaderCpuWriteResourceBinding * >, FrameResourceManager::getFrameResourceCount()> vToBeUpdated
     
    +

    Detailed Description

    +

    Groups shader CPU write resources.

    +

    Member Data Documentation

    + +

    ◆ all

    + +
    +
    + + + + +
    std::unordered_map<ShaderCpuWriteResourceBinding*, std::unique_ptr<ShaderCpuWriteResourceBinding> > ne::ShaderCpuWriteResourceBindingManager::Resources::all
    +
    +

    All shader CPU write resources.

    +
    Remarks
    Storing pairs of "raw pointer" - "unique pointer" to quickly find needed resources when need to destroy some resource given a raw pointer.
    + +
    +
    + +

    ◆ vToBeUpdated

    + +
    +
    + + + + +
    std::array< std::unordered_set<ShaderCpuWriteResourceBinding*>, FrameResourceManager::getFrameResourceCount()> ne::ShaderCpuWriteResourceBindingManager::Resources::vToBeUpdated
    +
    +

    Shader CPU write resources that needs to be updated.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1ShaderCpuWriteResourceBindingManager_1_1Resources.js b/structne_1_1ShaderCpuWriteResourceBindingManager_1_1Resources.js new file mode 100644 index 000000000..6d861476c --- /dev/null +++ b/structne_1_1ShaderCpuWriteResourceBindingManager_1_1Resources.js @@ -0,0 +1,5 @@ +var structne_1_1ShaderCpuWriteResourceBindingManager_1_1Resources = +[ + [ "all", "structne_1_1ShaderCpuWriteResourceBindingManager_1_1Resources.html#a8d13c23b8d7843b4a23faa34404f5e8c", null ], + [ "vToBeUpdated", "structne_1_1ShaderCpuWriteResourceBindingManager_1_1Resources.html#a0618141a6a0853f1f6f4c1e4bdd45944", null ] +]; \ No newline at end of file diff --git a/structne_1_1ShaderDescription-members.html b/structne_1_1ShaderDescription-members.html new file mode 100644 index 000000000..182c5f652 --- /dev/null +++ b/structne_1_1ShaderDescription-members.html @@ -0,0 +1,134 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::ShaderDescription Member List
    +
    +
    + +

    This is the complete list of members for ne::ShaderDescription, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    calculateShaderIncludeTreeHashes()ne::ShaderDescriptionprivate
    definedShaderMacrosne::ShaderDescription
    deserializeShaderIncludeTreeHashes(const toml::value &data)ne::ShaderDescriptionprivatestatic
    from_toml(const toml::value &data)ne::ShaderDescription
    getConfigurationFileSectionName()ne::ShaderDescriptioninlinestatic
    getFileHash(const std::filesystem::path &pathToFile, const std::string &sShaderName)ne::ShaderDescriptionstatic
    into_toml() constne::ShaderDescription
    isSerializableDataEqual(ShaderDescription &other)ne::ShaderDescription
    operator=(const ShaderDescription &other) noexcept=defaultne::ShaderDescription
    operator=(ShaderDescription &&other) noexcept=defaultne::ShaderDescription
    pathToShaderFilene::ShaderDescription
    sConfigurationFileSectionNamene::ShaderDescriptioninlineprivatestatic
    serializeShaderIncludeTree(const std::filesystem::path &pathToShaderFile, std::string &sCurrentIncludeChain, toml::value &data)ne::ShaderDescriptionprivatestatic
    ShaderDescription()=default (defined in ne::ShaderDescription)ne::ShaderDescription
    ShaderDescription(std::string_view sShaderName, const std::filesystem::path &pathToShaderFile, ShaderType shaderType, std::optional< VertexFormat > vertexFormat, const std::string &sShaderEntryFunctionName, const std::unordered_map< std::string, std::string > &definedShaderMacros)ne::ShaderDescription
    ShaderDescription(const ShaderDescription &other) noexcept=defaultne::ShaderDescription
    ShaderDescription(ShaderDescription &&other) noexcept=defaultne::ShaderDescription
    shaderIncludeTreeHashesne::ShaderDescriptionprivate
    shaderTypene::ShaderDescription
    sInitialIncludeChainTextne::ShaderDescriptioninlineprivatestatic
    sShaderEntryFunctionNamene::ShaderDescription
    sShaderNamene::ShaderDescription
    sSourceFileHashne::ShaderDescriptionprivate
    vertexFormatne::ShaderDescription
    +
    + + + + diff --git a/structne_1_1ShaderDescription.html b/structne_1_1ShaderDescription.html new file mode 100644 index 000000000..70e8b226d --- /dev/null +++ b/structne_1_1ShaderDescription.html @@ -0,0 +1,835 @@ + + + + + + + +Nameless Engine: ne::ShaderDescription Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    + +

    #include <ShaderDescription.h>

    + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     ShaderDescription (std::string_view sShaderName, const std::filesystem::path &pathToShaderFile, ShaderType shaderType, std::optional< VertexFormat > vertexFormat, const std::string &sShaderEntryFunctionName, const std::unordered_map< std::string, std::string > &definedShaderMacros)
     
     ShaderDescription (const ShaderDescription &other) noexcept=default
     
    ShaderDescriptionoperator= (const ShaderDescription &other) noexcept=default
     
     ShaderDescription (ShaderDescription &&other) noexcept=default
     
    ShaderDescriptionoperator= (ShaderDescription &&other) noexcept=default
     
    std::optional< ShaderCacheInvalidationReason > isSerializableDataEqual (ShaderDescription &other)
     
    void from_toml (const toml::value &data)
     
    toml::value into_toml () const
     
    + + + + + +

    +Static Public Member Functions

    static const char * getConfigurationFileSectionName ()
     
    static std::string getFileHash (const std::filesystem::path &pathToFile, const std::string &sShaderName)
     
    + + + + + + + + + + + + + +

    +Public Attributes

    std::unordered_map< std::string, std::string > definedShaderMacros
     
    std::string sShaderName
     
    std::filesystem::path pathToShaderFile
     
    ShaderType shaderType = ShaderType::VERTEX_SHADER
     
    std::optional< VertexFormat > vertexFormat
     
    std::string sShaderEntryFunctionName
     
    + + + +

    +Private Member Functions

    void calculateShaderIncludeTreeHashes ()
     
    + + + + + +

    +Static Private Member Functions

    static std::unordered_map< std::string, std::unordered_map< std::string, std::string > > deserializeShaderIncludeTreeHashes (const toml::value &data)
     
    static void serializeShaderIncludeTree (const std::filesystem::path &pathToShaderFile, std::string &sCurrentIncludeChain, toml::value &data)
     
    + + + + + +

    +Private Attributes

    std::string sSourceFileHash
     
    std::unordered_map< std::string, std::unordered_map< std::string, std::string > > shaderIncludeTreeHashes
     
    + + + + + +

    +Static Private Attributes

    static std::string_view sInitialIncludeChainText = "includes"
     
    static auto sConfigurationFileSectionName = "shader_description"
     
    +

    Detailed Description

    +

    Describes a shader.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ShaderDescription() [1/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ne::ShaderDescription::ShaderDescription (std::string_view sShaderName,
    const std::filesystem::path & pathToShaderFile,
    ShaderType shaderType,
    std::optional< VertexFormat > vertexFormat,
    const std::string & sShaderEntryFunctionName,
    const std::unordered_map< std::string, std::string > & definedShaderMacros 
    )
    +
    +

    Constructor.

    +
    Parameters
    + + + + + + + +
    sShaderNameGlobally unique shader name.
    pathToShaderFilePath to the shader file.
    shaderTypeType of the shader.
    vertexFormatVertex format that the shader uses (can be empty if not applicable, for example if this shader is a compute shader).
    sShaderEntryFunctionNameName of the shader's entry function name. For example: if the shader type is vertex shader, then this value should contain name of the function used for vertex processing (from shader's file, "VS" for example).
    definedShaderMacrosMap of defined macros for shader, stores pairs of "macro name" - "value" (no value if empty).
    +
    +
    + +
    +
    + +

    ◆ ShaderDescription() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    ne::ShaderDescription::ShaderDescription (const ShaderDescriptionother)
    +
    +defaultnoexcept
    +
    +

    Copy constructor.

    +
    Parameters
    + + +
    otherOther object.
    +
    +
    + +
    +
    + +

    ◆ ShaderDescription() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    ne::ShaderDescription::ShaderDescription (ShaderDescription && other)
    +
    +defaultnoexcept
    +
    +

    Move constructor.

    +
    Parameters
    + + +
    otherOther object.
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ calculateShaderIncludeTreeHashes()

    + +
    +
    + + + + + +
    + + + + + + + +
    void ne::ShaderDescription::calculateShaderIncludeTreeHashes ()
    +
    +private
    +
    +

    Uses pathToShaderFile to recursively calculate hashes of all include files to fill shaderIncludeTreeHashes.

    + +
    +
    + +

    ◆ deserializeShaderIncludeTreeHashes()

    + +
    +
    + + + + + +
    + + + + + + + + +
    std::unordered_map< std::string, std::unordered_map< std::string, std::string > > ne::ShaderDescription::deserializeShaderIncludeTreeHashes (const toml::value & data)
    +
    +staticprivate
    +
    +

    Converts TOML table into shader include tree hash map.

    +
    Parameters
    + + +
    dataTOML data formatted as table.
    +
    +
    +
    Returns
    Map [include chain (i.e. current shader), [relative include path, include file hash]].
    + +
    +
    + +

    ◆ from_toml()

    + +
    +
    + + + + + + + + +
    void ne::ShaderDescription::from_toml (const toml::value & data)
    +
    +

    Used to deserialize struct from .toml file.

    +
    Parameters
    + + +
    dataToml value.
    +
    +
    + +
    +
    + +

    ◆ getConfigurationFileSectionName()

    + +
    +
    + + + + + +
    + + + + + + + +
    static const char * ne::ShaderDescription::getConfigurationFileSectionName ()
    +
    +inlinestatic
    +
    +

    Returns name of the section that is used to store ShaderDescription in configuration (on disk).

    +
    Returns
    Section name.
    + +
    +
    + +

    ◆ getFileHash()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    std::string ne::ShaderDescription::getFileHash (const std::filesystem::path & pathToFile,
    const std::string & sShaderName 
    )
    +
    +static
    +
    +

    Calculates hash of a file and returns it.

    +
    Parameters
    + + + +
    pathToFilePath to a file. Assumes that this path exists.
    sShaderNameUnique name of this shader (used for logging).
    +
    +
    +
    Returns
    Empty string if something went wrong, source file hash otherwise.
    + +
    +
    + +

    ◆ into_toml()

    + +
    +
    + + + + + + + +
    toml::value ne::ShaderDescription::into_toml () const
    +
    +

    Used to serialize struct to .toml file.

    +
    Returns
    Toml value.
    + +
    +
    + +

    ◆ isSerializableDataEqual()

    + +
    +
    + + + + + + + + +
    std::optional< ShaderCacheInvalidationReason > ne::ShaderDescription::isSerializableDataEqual (ShaderDescriptionother)
    +
    +

    Compares this shader description with other to see if the serializable fields are equal. This is usually done to check if shader cache is valid or not (needs to be recompiled or not).

    +
    Parameters
    + + +
    otherOther shader description to compare with. If this "other" shader description was retrieved from the cache it will not be changed, otherwise if it has path to the shader source file specified it will be updated with hashes of the source shader file and its includes.
    +
    +
    +
    Returns
    Whether the data is equal or not. If the data is not equal, has a value that contains a reason.
    + +
    +
    + +

    ◆ operator=() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    ShaderDescription & ne::ShaderDescription::operator= (const ShaderDescriptionother)
    +
    +defaultnoexcept
    +
    +

    Copy assignment.

    +
    Parameters
    + + +
    otherother object.
    +
    +
    +
    Returns
    Result of copy assignment.
    + +
    +
    + +

    ◆ operator=() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    ShaderDescription & ne::ShaderDescription::operator= (ShaderDescription && other)
    +
    +defaultnoexcept
    +
    +

    Move assignment.

    +
    Parameters
    + + +
    otherOther object.
    +
    +
    +
    Returns
    Result of move assignment.
    + +
    +
    + +

    ◆ serializeShaderIncludeTree()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void ne::ShaderDescription::serializeShaderIncludeTree (const std::filesystem::path & pathToShaderFile,
    std::string & sCurrentIncludeChain,
    toml::value & data 
    )
    +
    +staticprivate
    +
    +

    Scans shader file for "#include" entries and recursively adds included files hashes.

    +
    Parameters
    + + + + +
    pathToShaderFilePath to shader source file.
    sCurrentIncludeChainCurrent section (in TOML) text.
    dataTOML structure to write to.
    +
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ definedShaderMacros

    + +
    +
    + + + + +
    std::unordered_map<std::string, std::string> ne::ShaderDescription::definedShaderMacros
    +
    +

    Map of defined macros for shader, stores pairs of "macro name" - "value" (no value if empty).

    + +
    +
    + +

    ◆ pathToShaderFile

    + +
    +
    + + + + +
    std::filesystem::path ne::ShaderDescription::pathToShaderFile
    +
    +

    Path to the shader file.

    + +
    +
    + +

    ◆ sConfigurationFileSectionName

    + +
    +
    + + + + + +
    + + + + +
    auto ne::ShaderDescription::sConfigurationFileSectionName = "shader_description"
    +
    +inlinestaticprivate
    +
    +

    Name of the section that is used to store ShaderDescription in configuration (on disk).

    + +
    +
    + +

    ◆ shaderIncludeTreeHashes

    + +
    +
    + + + + + +
    + + + + +
    std::unordered_map< std::string , std:: unordered_map<std::string , std::string > > ne::ShaderDescription::shaderIncludeTreeHashes
    +
    +private
    +
    +

    Shader include tree hashes, contains relative include paths for each "#include" entry in shader with included source file hash. May be empty (not calculated yet).

    + +
    +
    + +

    ◆ shaderType

    + +
    +
    + + + + +
    ShaderType ne::ShaderDescription::shaderType = ShaderType::VERTEX_SHADER
    +
    +

    Type of the shader.

    + +
    +
    + +

    ◆ sInitialIncludeChainText

    + +
    +
    + + + + + +
    + + + + +
    std::string_view ne::ShaderDescription::sInitialIncludeChainText = "includes"
    +
    +inlinestaticprivate
    +
    +

    Used as the initial text for "include chain" string (starting text in serialized form). After serializing data in the TOML file, it might look like this:

    +
    "includes.default.post_process"
    +
    ^------ [includes] initial text (this variable)
    +
    ^------ [default] shader file name from ShaderDescription (say shader A)
    +
    ^------ [post_process] shader file name B that shader A includes
    +
    Definition: ShaderDescription.h:74
    +
    +
    +
    + +

    ◆ sShaderEntryFunctionName

    + +
    +
    + + + + +
    std::string ne::ShaderDescription::sShaderEntryFunctionName
    +
    +

    Name of the shader's entry function name.

    + +
    +
    + +

    ◆ sShaderName

    + +
    +
    + + + + +
    std::string ne::ShaderDescription::sShaderName
    +
    +

    Globally unique shader name.

    + +
    +
    + +

    ◆ sSourceFileHash

    + +
    +
    + + + + + +
    + + + + +
    std::string ne::ShaderDescription::sSourceFileHash
    +
    +private
    +
    +

    Shader source file hash, may be empty (not calculated yet).

    + +
    +
    + +

    ◆ vertexFormat

    + +
    +
    + + + + +
    std::optional<VertexFormat> ne::ShaderDescription::vertexFormat
    +
    +

    Used vertex format.

    +
    Remarks
    Can be empty if not applicable (for example if this is a compute shader).
    + +
    +
    +
    The documentation for this struct was generated from the following files:
      +
    • src/engine_lib/public/shader/ShaderDescription.h
    • +
    • src/engine_lib/private/shader/general/ShaderDescription.cpp
    • +
    +
    +
    + + + + diff --git a/structne_1_1ShaderDescription.js b/structne_1_1ShaderDescription.js new file mode 100644 index 000000000..3351733fc --- /dev/null +++ b/structne_1_1ShaderDescription.js @@ -0,0 +1,26 @@ +var structne_1_1ShaderDescription = +[ + [ "ShaderDescription", "structne_1_1ShaderDescription.html#a97a6839e98880d6e3f3644534de1d3f6", null ], + [ "ShaderDescription", "structne_1_1ShaderDescription.html#ab5bfedd7ce317fd80e304006ad5e4a67", null ], + [ "ShaderDescription", "structne_1_1ShaderDescription.html#a2c70945fe59e6a3284dd2aa7dd1defab", null ], + [ "calculateShaderIncludeTreeHashes", "structne_1_1ShaderDescription.html#a4a8d2d724407d111e95b481e7e325192", null ], + [ "deserializeShaderIncludeTreeHashes", "structne_1_1ShaderDescription.html#a0a93d7f6ab9d7c5351b3412c805438f0", null ], + [ "from_toml", "structne_1_1ShaderDescription.html#abde82750728f62e7ac5b51d406631139", null ], + [ "getConfigurationFileSectionName", "structne_1_1ShaderDescription.html#ab4507d18c32a93428852bd5ca24b3e3b", null ], + [ "getFileHash", "structne_1_1ShaderDescription.html#a433fa17772019933ab544502b309d19d", null ], + [ "into_toml", "structne_1_1ShaderDescription.html#a7aed6ce709ce5e2c55cc9c19c3367698", null ], + [ "isSerializableDataEqual", "structne_1_1ShaderDescription.html#a9fcf588499ec4ad6be72988185806320", null ], + [ "operator=", "structne_1_1ShaderDescription.html#a4c6b3dc0063e415cf7e87892dc3af060", null ], + [ "operator=", "structne_1_1ShaderDescription.html#a88c0dc416c3fc67b6d71d4885ac07b56", null ], + [ "serializeShaderIncludeTree", "structne_1_1ShaderDescription.html#a9e41b60f477834ce5e4d88223f8ee75b", null ], + [ "definedShaderMacros", "structne_1_1ShaderDescription.html#a8fc83f42bb8cb32fa56c9e08bb2d008e", null ], + [ "pathToShaderFile", "structne_1_1ShaderDescription.html#ad7a2d136379794834a600b577fe95e34", null ], + [ "sConfigurationFileSectionName", "structne_1_1ShaderDescription.html#ac55c02d9a99456781052c57dcc4629c7", null ], + [ "shaderIncludeTreeHashes", "structne_1_1ShaderDescription.html#abe7847a8b8a84e8f9b064a97f34569e7", null ], + [ "shaderType", "structne_1_1ShaderDescription.html#ab160a0865d201195b9532da859af493c", null ], + [ "sInitialIncludeChainText", "structne_1_1ShaderDescription.html#aad82581cf18695066d1c57b65a3376f2", null ], + [ "sShaderEntryFunctionName", "structne_1_1ShaderDescription.html#a6ea46c4fe661cfe52fb0c638e7894acd", null ], + [ "sShaderName", "structne_1_1ShaderDescription.html#aff6b5495bae40362c1fceed70296c5b5", null ], + [ "sSourceFileHash", "structne_1_1ShaderDescription.html#a3eef28fee52b03a265ddf45bdd1e4bb0", null ], + [ "vertexFormat", "structne_1_1ShaderDescription.html#ae99b83380da6f1d179191928e4f2fb32", null ] +]; \ No newline at end of file diff --git a/structne_1_1ShaderLightArray_1_1Resources-members.html b/structne_1_1ShaderLightArray_1_1Resources-members.html new file mode 100644 index 000000000..a0d612cec --- /dev/null +++ b/structne_1_1ShaderLightArray_1_1Resources-members.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::ShaderLightArray::Resources Member List
    +
    + +
    + + + + diff --git a/structne_1_1ShaderLightArray_1_1Resources.html b/structne_1_1ShaderLightArray_1_1Resources.html new file mode 100644 index 000000000..c8d9a1f60 --- /dev/null +++ b/structne_1_1ShaderLightArray_1_1Resources.html @@ -0,0 +1,196 @@ + + + + + + + +Nameless Engine: ne::ShaderLightArray::Resources Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::ShaderLightArray::Resources Struct Reference
    +
    +
    + +

    #include <ShaderLightArray.h>

    + + + + + + + + + + +

    +Public Attributes

    std::array< std::unique_ptr< UploadBuffer >, FrameResourceManager::getFrameResourceCount()> vGpuArrayLightDataResources
     
    ShaderLightsInFrustumSingleType lightsInFrustum
     
    std::array< std::unordered_set< ShaderLightArraySlot * >, FrameResourceManager::getFrameResourceCount()> vSlotsToBeUpdated
     
    std::unordered_set< ShaderLightArraySlot * > activeSlots
     
    +

    Detailed Description

    +

    Groups used resources.

    +

    Member Data Documentation

    + +

    ◆ activeSlots

    + +
    +
    + + + + +
    std::unordered_set<ShaderLightArraySlot*> ne::ShaderLightArray::Resources::activeSlots
    +
    +

    All currently active (existing) slots.

    + +
    +
    + +

    ◆ lightsInFrustum

    + +
    +
    + + + + +
    ShaderLightsInFrustumSingleType ne::ShaderLightArray::Resources::lightsInFrustum
    +
    +

    Stores information about light sources in active camera's frustum.

    + +
    +
    + +

    ◆ vGpuArrayLightDataResources

    + +
    +
    + + + + +
    std::array<std::unique_ptr<UploadBuffer>, FrameResourceManager::getFrameResourceCount()> ne::ShaderLightArray::Resources::vGpuArrayLightDataResources
    +
    +

    GPU resource per frame "in-flight" that stores array of light data.

    +
    Remarks
    Resources in this array have equal sizes.
    +
    +Resources in this array are always valid and always have space for at least one slot (even if there are no slots active) to avoid hitting nullptr or have branching when binding resources (when there are no active slots these resources will not be used since counter for light sources will be zero but we will have a valid binding).
    +
    +Storing a resource per frame "in-flight" because we should not update a resource that is currently being used by the GPU but we also don't want to stop the rendering when we need an update.
    + +
    +
    + +

    ◆ vSlotsToBeUpdated

    + +
    +
    + + + + +
    std::array< std::unordered_set<ShaderLightArraySlot*>, FrameResourceManager::getFrameResourceCount()> ne::ShaderLightArray::Resources::vSlotsToBeUpdated
    +
    +

    Slots (elements) in arrays from vGpuArrayLightDataResources that needs to be updated.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1ShaderLightArray_1_1Resources.js b/structne_1_1ShaderLightArray_1_1Resources.js new file mode 100644 index 000000000..d99b6346e --- /dev/null +++ b/structne_1_1ShaderLightArray_1_1Resources.js @@ -0,0 +1,7 @@ +var structne_1_1ShaderLightArray_1_1Resources = +[ + [ "activeSlots", "structne_1_1ShaderLightArray_1_1Resources.html#a7d0fa06997c399beb912e5ca693dedc0", null ], + [ "lightsInFrustum", "structne_1_1ShaderLightArray_1_1Resources.html#a9b6e286352f97221b5162cf3b28e1df4", null ], + [ "vGpuArrayLightDataResources", "structne_1_1ShaderLightArray_1_1Resources.html#af847f9596fb0742cb31b2e468ba4e428", null ], + [ "vSlotsToBeUpdated", "structne_1_1ShaderLightArray_1_1Resources.html#afc3c1a738bb35eb1de38d21ca5b727f6", null ] +]; \ No newline at end of file diff --git a/structne_1_1ShaderLightsInFrustumSingleType-members.html b/structne_1_1ShaderLightsInFrustumSingleType-members.html new file mode 100644 index 000000000..0290d1cd0 --- /dev/null +++ b/structne_1_1ShaderLightsInFrustumSingleType-members.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::ShaderLightsInFrustumSingleType Member List
    +
    + +
    + + + + diff --git a/structne_1_1ShaderLightsInFrustumSingleType.html b/structne_1_1ShaderLightsInFrustumSingleType.html new file mode 100644 index 000000000..a7a9b486f --- /dev/null +++ b/structne_1_1ShaderLightsInFrustumSingleType.html @@ -0,0 +1,194 @@ + + + + + + + +Nameless Engine: ne::ShaderLightsInFrustumSingleType Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::ShaderLightsInFrustumSingleType Struct Reference
    +
    +
    + +

    #include <ShaderLightsInFrustumSingleType.hpp>

    + + + + + + + + + + +

    +Public Attributes

    std::vector< Node * > vShaderLightNodeArray
     
    std::vector< unsigned int > vLightIndicesInFrustum
     
    std::array< std::unique_ptr< UploadBuffer >, FrameResourceManager::getFrameResourceCount()> vGpuResources
     
    std::string sShaderResourceName
     
    +

    Detailed Description

    +

    Groups resources related to light sources of the same type (point/spot/directional) in active camera's frustum and has info about which shader resource is used for these light sources.

    +

    Member Data Documentation

    + +

    ◆ sShaderResourceName

    + +
    +
    + + + + +
    std::string ne::ShaderLightsInFrustumSingleType::sShaderResourceName
    +
    +

    Name of the shader resource that stores indices to lights in camera's frustum.

    +
    Remarks
    Empty if array of indices is not used (empty for directional lights).
    + +
    +
    + +

    ◆ vGpuResources

    + +
    +
    + + + + +
    std::array<std::unique_ptr<UploadBuffer>, FrameResourceManager::getFrameResourceCount()> ne::ShaderLightsInFrustumSingleType::vGpuResources
    +
    +

    GPU resources that store vLightIndicesInFrustum.

    +
    Remarks
    Resources in this array are always valid if you specified that you need an index array for this light array (when creating shader light array object) and always have space for at least one item (even if there are no lights spawned) to avoid hitting nullptr or have branching when binding resources (when there are no active lights these resources will not be used since counter for light sources will be zero but we will have a valid binding).
    + +
    +
    + +

    ◆ vLightIndicesInFrustum

    + +
    +
    + + + + +
    std::vector<unsigned int> ne::ShaderLightsInFrustumSingleType::vLightIndicesInFrustum
    +
    +

    Stores indices to elements from vLightIndicesInFrustum that are located inside of active camera's frustum.

    + +
    +
    + +

    ◆ vShaderLightNodeArray

    + +
    +
    + + + + +
    std::vector<Node*> ne::ShaderLightsInFrustumSingleType::vShaderLightNodeArray
    +
    +

    Array of light nodes of the same type (if this shader light array object is used only for directional lights then only directional light nodes are stored in this array) where positions of light nodes in this array correspond to positions of their light data from vGpuResources. So light data at index 0 in the array used in shaders is taken from the light node stored in this array at index 0.

    +
    Remarks
    For example, you can use indices of light nodes in this array to tell the shaders which lights to process in shaders and which to ignore.
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1ShaderLightsInFrustumSingleType.js b/structne_1_1ShaderLightsInFrustumSingleType.js new file mode 100644 index 000000000..16f30400e --- /dev/null +++ b/structne_1_1ShaderLightsInFrustumSingleType.js @@ -0,0 +1,7 @@ +var structne_1_1ShaderLightsInFrustumSingleType = +[ + [ "sShaderResourceName", "structne_1_1ShaderLightsInFrustumSingleType.html#ade10618bf07c10fd845605b50565667c", null ], + [ "vGpuResources", "structne_1_1ShaderLightsInFrustumSingleType.html#a025c719b17b2d14dac110ead2fe1ac08", null ], + [ "vLightIndicesInFrustum", "structne_1_1ShaderLightsInFrustumSingleType.html#a3c123179c5a16c87969f7aa580175dca", null ], + [ "vShaderLightNodeArray", "structne_1_1ShaderLightsInFrustumSingleType.html#a749756d7bb2be846c749be862ae49c15", null ] +]; \ No newline at end of file diff --git a/structne_1_1ShaderMacroConfigurations-members.html b/structne_1_1ShaderMacroConfigurations-members.html new file mode 100644 index 000000000..7bbab8b62 --- /dev/null +++ b/structne_1_1ShaderMacroConfigurations-members.html @@ -0,0 +1,119 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::ShaderMacroConfigurations Member List
    +
    +
    + +

    This is the complete list of members for ne::ShaderMacroConfigurations, including all inherited members.

    + + + + + + + + + + +
    combineConfigurations(const std::set< std::set< ShaderMacro > > &constantSets, const std::set< std::set< ShaderMacro > > &macroSets, const std::set< ShaderMacro > &appendToEachSet, bool bIncludeEmptyConfiguration)ne::ShaderMacroConfigurationsprivatestatic
    convertConfigurationToHash(const std::set< ShaderMacro > &configuration)ne::ShaderMacroConfigurationsstatic
    convertConfigurationToText(const std::set< ShaderMacro > &configuration)ne::ShaderMacroConfigurationsstatic
    dependentMacrosne::ShaderMacroConfigurationsinlineprivatestatic
    duplicateAndAppendConfiguration(const std::set< std::set< ShaderMacro > > &toDuplicateSets, const std::set< ShaderMacro > &toAppendToDuplicated)ne::ShaderMacroConfigurationsprivatestatic
    isMacroShouldBeConsideredInConfiguration(ShaderMacro macro, const std::set< ShaderMacro > &configuration)ne::ShaderMacroConfigurationsstatic
    validComputeShaderMacroConfigurationsne::ShaderMacroConfigurationsinlinestatic
    validPixelShaderMacroConfigurationsne::ShaderMacroConfigurationsinlinestatic
    validVertexShaderMacroConfigurationsne::ShaderMacroConfigurationsinlinestatic
    +
    + + + + diff --git a/structne_1_1ShaderMacroConfigurations.html b/structne_1_1ShaderMacroConfigurations.html new file mode 100644 index 000000000..e9cddee74 --- /dev/null +++ b/structne_1_1ShaderMacroConfigurations.html @@ -0,0 +1,508 @@ + + + + + + + +Nameless Engine: ne::ShaderMacroConfigurations Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    + +

    #include <ShaderMacro.h>

    + + + + + + + + +

    +Static Public Member Functions

    static unsigned long long convertConfigurationToHash (const std::set< ShaderMacro > &configuration)
     
    static std::string convertConfigurationToText (const std::set< ShaderMacro > &configuration)
     
    static bool isMacroShouldBeConsideredInConfiguration (ShaderMacro macro, const std::set< ShaderMacro > &configuration)
     
    + + + + + + + +

    +Static Public Attributes

    static const std::set< std::set< ShaderMacro > > validVertexShaderMacroConfigurations
     
    static const std::set< std::set< ShaderMacro > > validPixelShaderMacroConfigurations
     
    static const std::set< std::set< ShaderMacro > > validComputeShaderMacroConfigurations = {{}}
     
    + + + + + +

    +Static Private Member Functions

    static std::set< std::set< ShaderMacro > > combineConfigurations (const std::set< std::set< ShaderMacro > > &constantSets, const std::set< std::set< ShaderMacro > > &macroSets, const std::set< ShaderMacro > &appendToEachSet, bool bIncludeEmptyConfiguration)
     
    static std::set< std::set< ShaderMacro > > duplicateAndAppendConfiguration (const std::set< std::set< ShaderMacro > > &toDuplicateSets, const std::set< ShaderMacro > &toAppendToDuplicated)
     
    + + + +

    +Static Private Attributes

    static const std::unordered_map< ShaderMacro, ShaderMacro > dependentMacros = {}
     
    +

    Detailed Description

    +

    Defines valid shader macro combinations (configurations), plus some helper functions.

    +

    Member Function Documentation

    + +

    ◆ combineConfigurations()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::set< std::set< ShaderMacro > > ne::ShaderMacroConfigurations::combineConfigurations (const std::set< std::set< ShaderMacro > > & constantSets,
    const std::set< std::set< ShaderMacro > > & macroSets,
    const std::set< ShaderMacro > & appendToEachSet,
    bool bIncludeEmptyConfiguration 
    )
    +
    +staticprivate
    +
    +

    Combines the specified macro sets with macros to append.

    +

    Example:

    // The following code:
    + +
    {
    +
    {NORMAL_TEXTURE}
    +
    },
    +
    {
    +
    {DIFFUSE_TEXTURE},
    +
    {FOO}
    +
    },
    +
    {
    +
    TEXTURE_FILTERING_POINT,
    +
    TEXTURE_FILTERING_LINEAR,
    +
    TEXTURE_FILTERING_ANISOTROPIC
    +
    },
    +
    true);
    +
    +
    // Produces the following sets:
    +
    // 1. {} - empty set
    +
    // 2. {TEXTURE_FILTERING_POINT, DIFFUSE_TEXTURE}
    +
    // 3. {TEXTURE_FILTERING_POINT, FOO}
    +
    // 4. {TEXTURE_FILTERING_LINEAR, DIFFUSE_TEXTURE}
    +
    // 5. {TEXTURE_FILTERING_LINEAR, FOO}
    +
    // 5. {TEXTURE_FILTERING_ANISOTROPIC, DIFFUSE_TEXTURE}
    +
    // 6. {TEXTURE_FILTERING_ANISOTROPIC, FOO}
    +
    // 7. {NORMAL_TEXTURE}
    +
    static std::set< std::set< ShaderMacro > > combineConfigurations(const std::set< std::set< ShaderMacro > > &constantSets, const std::set< std::set< ShaderMacro > > &macroSets, const std::set< ShaderMacro > &appendToEachSet, bool bIncludeEmptyConfiguration)
    Definition: ShaderMacro.cpp:32
    +
    Parameters
    + + + + + +
    constantSetsSets that will be in the resulting set.
    macroSetsSets to append macros to.
    appendToEachSetEach macro from this set will be added to each set of the second argument.
    bIncludeEmptyConfigurationWhether to add empty configuration to resulting sets or not.
    +
    +
    +
    Returns
    Resulting sets (modified macroSets argument).
    + +
    +
    + +

    ◆ convertConfigurationToHash()

    + +
    +
    + + + + + +
    + + + + + + + + +
    unsigned long long ne::ShaderMacroConfigurations::convertConfigurationToHash (const std::set< ShaderMacro > & configuration)
    +
    +static
    +
    +

    Converts configuration to hash.

    +
    Parameters
    + + +
    configurationUsed shader configuration.
    +
    +
    +
    Returns
    Configuration in hash form.
    + +
    +
    + +

    ◆ convertConfigurationToText()

    + +
    +
    + + + + + +
    + + + + + + + + +
    std::string ne::ShaderMacroConfigurations::convertConfigurationToText (const std::set< ShaderMacro > & configuration)
    +
    +static
    +
    +

    Converts configuration to text.

    +
    Parameters
    + + +
    configurationUsed shader configuration.
    +
    +
    +
    Returns
    Configuration in text form. Usually looks like this: "1838281907459330133" (hash of the specified configuration).
    + +
    +
    + +

    ◆ duplicateAndAppendConfiguration()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    std::set< std::set< ShaderMacro > > ne::ShaderMacroConfigurations::duplicateAndAppendConfiguration (const std::set< std::set< ShaderMacro > > & toDuplicateSets,
    const std::set< ShaderMacro > & toAppendToDuplicated 
    )
    +
    +staticprivate
    +
    +

    Takes an array of shader configurations, duplicates it and appends additional macros to the duplicated set.

    +
    Parameters
    + + + +
    toDuplicateSetsOriginal sets to duplicate.
    toAppendToDuplicatedMacros to add to each set of the duplicated sets.
    +
    +
    +
    Returns
    Two sets: the original sets and the original sets with the specified macros appended to each set.
    + +
    +
    + +

    ◆ isMacroShouldBeConsideredInConfiguration()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool ne::ShaderMacroConfigurations::isMacroShouldBeConsideredInConfiguration (ShaderMacro macro,
    const std::set< ShaderMacro > & configuration 
    )
    +
    +static
    +
    +

    Tells if the specified macro is valid (should be considered) in the specified configuration. Some macros depend on other which creates a situation where some macros should not be considered.

    +
    Parameters
    + + + +
    macroMacro to test.
    configurationConfiguration that the specified macro is going to be used.
    +
    +
    +
    Returns
    true if the specified macro should be used in the specified configuration, false if some dependent macro does not exist in the specified configuration and thus makes the use of the specified macro useless.
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ dependentMacros

    + +
    +
    + + + + + +
    + + + + +
    const std::unordered_map<ShaderMacro, ShaderMacro> ne::ShaderMacroConfigurations::dependentMacros = {}
    +
    +inlinestaticprivate
    +
    +

    Defines dependent macros that should be considered only when a specific macro is defined. Stores pairs of "dependent macro" - "macro it depends on".

    +

    Example:

    +
    {TEXTURE_FILTERING_POINT, USE_DIFFUSE_TEXTURE},
    +
    {TEXTURE_FILTERING_LINEAR, USE_DIFFUSE_TEXTURE}, // texture filtering depends on texture
    +
    {TEXTURE_FILTERING_ANISOTROPIC, USE_DIFFUSE_TEXTURE}
    +
    };
    +
    static const std::unordered_map< ShaderMacro, ShaderMacro > dependentMacros
    Definition: ShaderMacro.h:135
    +
    +
    +
    + +

    ◆ validComputeShaderMacroConfigurations

    + +
    +
    + + + + + +
    + + + + +
    const std::set<std::set<ShaderMacro> > ne::ShaderMacroConfigurations::validComputeShaderMacroConfigurations = {{}}
    +
    +inlinestatic
    +
    +

    Valid combinations of compute shader macros.

    + +
    +
    + +

    ◆ validPixelShaderMacroConfigurations

    + +
    +
    + + + + + +
    + + + + +
    const std::set<std::set<ShaderMacro> > ne::ShaderMacroConfigurations::validPixelShaderMacroConfigurations
    +
    +inlinestatic
    +
    +Initial value:
    =
    + +
    {{ShaderMacro::PS_USE_DIFFUSE_TEXTURE},
    +
    {ShaderMacro::PS_USE_MATERIAL_TRANSPARENCY},
    +
    {ShaderMacro::PS_USE_DIFFUSE_TEXTURE, ShaderMacro::PS_USE_MATERIAL_TRANSPARENCY}},
    +
    {},
    +
    {},
    +
    true)
    +

    Valid combinations of pixel shader macros.

    +
    Remarks
    Also consider dependentMacros.
    + +
    +
    + +

    ◆ validVertexShaderMacroConfigurations

    + +
    +
    + + + + + +
    + + + + +
    const std::set<std::set<ShaderMacro> > ne::ShaderMacroConfigurations::validVertexShaderMacroConfigurations
    +
    +inlinestatic
    +
    +Initial value:
    = {
    +
    {}, {ShaderMacro::VS_SHADOW_MAPPING_PASS}}
    +

    Valid combinations of vertex shader macros.

    +
    Remarks
    Also consider dependentMacros.
    + +
    +
    +
    The documentation for this struct was generated from the following files:
      +
    • src/engine_lib/private/shader/general/ShaderMacro.h
    • +
    • src/engine_lib/private/shader/general/ShaderMacro.cpp
    • +
    +
    +
    + + + + diff --git a/structne_1_1ShaderMacroConfigurations.js b/structne_1_1ShaderMacroConfigurations.js new file mode 100644 index 000000000..e9305940f --- /dev/null +++ b/structne_1_1ShaderMacroConfigurations.js @@ -0,0 +1,12 @@ +var structne_1_1ShaderMacroConfigurations = +[ + [ "combineConfigurations", "structne_1_1ShaderMacroConfigurations.html#a0256da50fbf77ce275e6d000ffbfe8e7", null ], + [ "convertConfigurationToHash", "structne_1_1ShaderMacroConfigurations.html#aab969c8a507ad54a058aaaf105367880", null ], + [ "convertConfigurationToText", "structne_1_1ShaderMacroConfigurations.html#ac437b9daf4d8174af6beaeea845d2265", null ], + [ "duplicateAndAppendConfiguration", "structne_1_1ShaderMacroConfigurations.html#a0fea3a25214cf5d9f6f3a200fe6fb7e1", null ], + [ "isMacroShouldBeConsideredInConfiguration", "structne_1_1ShaderMacroConfigurations.html#aabf70371234d33cdf72268ab39ac1621", null ], + [ "dependentMacros", "structne_1_1ShaderMacroConfigurations.html#a39eaa20a6e766e5cb75d9242daeaef2b", null ], + [ "validComputeShaderMacroConfigurations", "structne_1_1ShaderMacroConfigurations.html#a2366a43dc3ce6f5430f1116a4826e4ce", null ], + [ "validPixelShaderMacroConfigurations", "structne_1_1ShaderMacroConfigurations.html#ad111d8b96e6831bddea5d891ac731411", null ], + [ "validVertexShaderMacroConfigurations", "structne_1_1ShaderMacroConfigurations.html#ab60decaef95af9508060ee82e73b6e25", null ] +]; \ No newline at end of file diff --git a/structne_1_1ShaderMacroSetHash-members.html b/structne_1_1ShaderMacroSetHash-members.html new file mode 100644 index 000000000..a8ca3e691 --- /dev/null +++ b/structne_1_1ShaderMacroSetHash-members.html @@ -0,0 +1,111 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::ShaderMacroSetHash Member List
    +
    +
    + +

    This is the complete list of members for ne::ShaderMacroSetHash, including all inherited members.

    + + +
    operator()(std::set< ShaderMacro > const &item) constne::ShaderMacroSetHashinline
    +
    + + + + diff --git a/structne_1_1ShaderMacroSetHash.html b/structne_1_1ShaderMacroSetHash.html new file mode 100644 index 000000000..d69a8e904 --- /dev/null +++ b/structne_1_1ShaderMacroSetHash.html @@ -0,0 +1,159 @@ + + + + + + + +Nameless Engine: ne::ShaderMacroSetHash Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::ShaderMacroSetHash Struct Reference
    +
    +
    + +

    #include <ShaderMacro.h>

    + + + + +

    +Public Member Functions

    size_t operator() (std::set< ShaderMacro > const &item) const
     
    +

    Detailed Description

    +

    Provides hash operator() for std::set<ShaderMacro>.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    + + + + + +
    + + + + + + + + +
    size_t ne::ShaderMacroSetHash::operator() (std::set< ShaderMacro > const & item) const
    +
    +inline
    +
    +

    operator() that calculates hash from std::set<ShaderMacro>,

    +
    Parameters
    + + +
    itemSet of shader macros.
    +
    +
    +
    Returns
    Hash.
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1ShaderMacroSetHash.js b/structne_1_1ShaderMacroSetHash.js new file mode 100644 index 000000000..1d309b4ce --- /dev/null +++ b/structne_1_1ShaderMacroSetHash.js @@ -0,0 +1,4 @@ +var structne_1_1ShaderMacroSetHash = +[ + [ "operator()", "structne_1_1ShaderMacroSetHash.html#a4815a726b90ee095a39c2a94a81abf25", null ] +]; \ No newline at end of file diff --git a/structne_1_1ShaderManager_1_1ShaderData-members.html b/structne_1_1ShaderManager_1_1ShaderData-members.html new file mode 100644 index 000000000..b37fa2452 --- /dev/null +++ b/structne_1_1ShaderManager_1_1ShaderData-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::ShaderManager::ShaderData Member List
    +
    +
    + +

    This is the complete list of members for ne::ShaderManager::ShaderData, including all inherited members.

    + + + +
    compiledShadersne::ShaderManager::ShaderData
    vShadersToBeRemovedne::ShaderManager::ShaderData
    +
    + + + + diff --git a/structne_1_1ShaderManager_1_1ShaderData.html b/structne_1_1ShaderManager_1_1ShaderData.html new file mode 100644 index 000000000..dd95b02ef --- /dev/null +++ b/structne_1_1ShaderManager_1_1ShaderData.html @@ -0,0 +1,156 @@ + + + + + + + +Nameless Engine: ne::ShaderManager::ShaderData Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::ShaderManager::ShaderData Struct Reference
    +
    +
    + + + + + + +

    +Public Attributes

    std::unordered_map< std::string, std::shared_ptr< ShaderPack > > compiledShaders
     
    std::vector< std::string > vShadersToBeRemoved
     
    +

    Detailed Description

    +

    Internal shader data.

    +

    Member Data Documentation

    + +

    ◆ compiledShaders

    + +
    +
    + + + + +
    std::unordered_map<std::string, std::shared_ptr<ShaderPack> > ne::ShaderManager::ShaderData::compiledShaders
    +
    +

    Map of compiled (added) shaders.

    +

    Storing shared pointer for each pack here instead of just reading from disk, creating a new shared pointer, giving shared pointer and forgetting about it to make sure there's not going to be multiple copies of one shader.

    + +
    +
    + +

    ◆ vShadersToBeRemoved

    + +
    +
    + + + + +
    std::vector<std::string> ne::ShaderManager::ShaderData::vShadersToBeRemoved
    +
    +

    Array of shader names marked to be removed from compiledShaders when they are no longer used.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1ShaderManager_1_1ShaderData.js b/structne_1_1ShaderManager_1_1ShaderData.js new file mode 100644 index 000000000..6bef8b65b --- /dev/null +++ b/structne_1_1ShaderManager_1_1ShaderData.js @@ -0,0 +1,5 @@ +var structne_1_1ShaderManager_1_1ShaderData = +[ + [ "compiledShaders", "structne_1_1ShaderManager_1_1ShaderData.html#aa1bad153fff0e711424986625e390ee0", null ], + [ "vShadersToBeRemoved", "structne_1_1ShaderManager_1_1ShaderData.html#af163bcab4533aa8f02b76c2db0d3d9f0", null ] +]; \ No newline at end of file diff --git a/structne_1_1ShaderPack_1_1InternalResources-members.html b/structne_1_1ShaderPack_1_1InternalResources-members.html new file mode 100644 index 000000000..f62bffc6b --- /dev/null +++ b/structne_1_1ShaderPack_1_1InternalResources-members.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::ShaderPack::InternalResources Member List
    +
    + +
    + + + + diff --git a/structne_1_1ShaderPack_1_1InternalResources.html b/structne_1_1ShaderPack_1_1InternalResources.html new file mode 100644 index 000000000..154f0c210 --- /dev/null +++ b/structne_1_1ShaderPack_1_1InternalResources.html @@ -0,0 +1,174 @@ + + + + + + + +Nameless Engine: ne::ShaderPack::InternalResources Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::ShaderPack::InternalResources Struct Reference
    +
    +
    + +

    #include <ShaderPack.h>

    + + + + + + + + +

    +Public Attributes

    bool bIsRenderConfigurationSet = false
     
    std::set< ShaderMacro > renderConfiguration
     
    std::unordered_map< std::set< ShaderMacro >, std::shared_ptr< Shader >, ShaderMacroSetHashshadersInPack
     
    +

    Detailed Description

    +

    Groups used data.

    +

    Member Data Documentation

    + +

    ◆ bIsRenderConfigurationSet

    + +
    +
    + + + + +
    bool ne::ShaderPack::InternalResources::bIsRenderConfigurationSet = false
    +
    +

    Whether renderConfiguration was set or not.

    + +
    +
    + +

    ◆ renderConfiguration

    + +
    +
    + + + + +
    std::set<ShaderMacro> ne::ShaderPack::InternalResources::renderConfiguration
    +
    +

    Last set renderer's configuration.

    + +
    +
    + +

    ◆ shadersInPack

    + +
    +
    + + + + +
    std::unordered_map<std::set<ShaderMacro>, std::shared_ptr<Shader>, ShaderMacroSetHash> ne::ShaderPack::InternalResources::shadersInPack
    +
    +

    Stores shaders of this pack (pairs of "shader configuration" - "shader").

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1ShaderPack_1_1InternalResources.js b/structne_1_1ShaderPack_1_1InternalResources.js new file mode 100644 index 000000000..98c6c519b --- /dev/null +++ b/structne_1_1ShaderPack_1_1InternalResources.js @@ -0,0 +1,6 @@ +var structne_1_1ShaderPack_1_1InternalResources = +[ + [ "bIsRenderConfigurationSet", "structne_1_1ShaderPack_1_1InternalResources.html#abefd4612d8fd317596cd22f22f180888", null ], + [ "renderConfiguration", "structne_1_1ShaderPack_1_1InternalResources.html#a1d80db0ef92b349bcfc228d5bf295bd7", null ], + [ "shadersInPack", "structne_1_1ShaderPack_1_1InternalResources.html#a2b1a92569e696388fc39951354869d14", null ] +]; \ No newline at end of file diff --git a/structne_1_1ShaderPipelines-members.html b/structne_1_1ShaderPipelines-members.html new file mode 100644 index 000000000..d98ae4b6c --- /dev/null +++ b/structne_1_1ShaderPipelines-members.html @@ -0,0 +1,111 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::ShaderPipelines Member List
    +
    +
    + +

    This is the complete list of members for ne::ShaderPipelines, including all inherited members.

    + + +
    shaderPipelinesne::ShaderPipelines
    +
    + + + + diff --git a/structne_1_1ShaderPipelines.html b/structne_1_1ShaderPipelines.html new file mode 100644 index 000000000..bea1ef20f --- /dev/null +++ b/structne_1_1ShaderPipelines.html @@ -0,0 +1,143 @@ + + + + + + + +Nameless Engine: ne::ShaderPipelines Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::ShaderPipelines Struct Reference
    +
    +
    + +

    #include <PipelineRegistry.hpp>

    + + + + +

    +Public Attributes

    std::unordered_map< std::set< ShaderMacro >, std::shared_ptr< Pipeline >, ShaderMacroSetHashshaderPipelines
     
    +

    Detailed Description

    +

    Groups information about pipelines that use the same shaders.

    +

    Member Data Documentation

    + +

    ◆ shaderPipelines

    + +
    +
    + + + + +
    std::unordered_map<std::set<ShaderMacro>, std::shared_ptr<Pipeline>, ShaderMacroSetHash> ne::ShaderPipelines::shaderPipelines
    +
    +

    Map of pairs "material defined macros" and "pipelines that were created from the same shader to use these different macros".

      +
    • Remarks
      Since shader macros have prefixes that define which shader stage they are valid for we won't have problems with same macros on different shader stages (because of combining and storing all macros in just one std::set).
      +
    • +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1ShaderPipelines.js b/structne_1_1ShaderPipelines.js new file mode 100644 index 000000000..2e74282ee --- /dev/null +++ b/structne_1_1ShaderPipelines.js @@ -0,0 +1,4 @@ +var structne_1_1ShaderPipelines = +[ + [ "shaderPipelines", "structne_1_1ShaderPipelines.html#ac0c157dd3f1722b618dbb90c8bd0948f", null ] +]; \ No newline at end of file diff --git a/structne_1_1ShadowMapHandle_1_1InternalResources-members.html b/structne_1_1ShadowMapHandle_1_1InternalResources-members.html new file mode 100644 index 000000000..a99113e82 --- /dev/null +++ b/structne_1_1ShadowMapHandle_1_1InternalResources-members.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::ShadowMapHandle::InternalResources Member List
    +
    + +
    + + + + diff --git a/structne_1_1ShadowMapHandle_1_1InternalResources.html b/structne_1_1ShadowMapHandle_1_1InternalResources.html new file mode 100644 index 000000000..1ff079980 --- /dev/null +++ b/structne_1_1ShadowMapHandle_1_1InternalResources.html @@ -0,0 +1,175 @@ + + + + + + + +Nameless Engine: ne::ShadowMapHandle::InternalResources Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::ShadowMapHandle::InternalResources Struct Reference
    +
    +
    + +

    #include <ShadowMapHandle.h>

    + + + + + + + + +

    +Public Attributes

    GpuResourcepDepthTexture = nullptr
     
    GpuResourcepColorTexture = nullptr
     
    std::vector< VkFramebuffer > vShadowMappingFramebuffers
     
    +

    Detailed Description

    +

    Groups GPU resources that a shadow map handle references.

    +

    Member Data Documentation

    + +

    ◆ pColorTexture

    + +
    +
    + + + + +
    GpuResource* ne::ShadowMapHandle::InternalResources::pColorTexture = nullptr
    +
    +

    Optional (may be nullptr) "color" target, used for point lights to store additional information.

    + +
    +
    + +

    ◆ pDepthTexture

    + +
    +
    + + + + +
    GpuResource* ne::ShadowMapHandle::InternalResources::pDepthTexture = nullptr
    +
    +

    Depth image.

    + +
    +
    + +

    ◆ vShadowMappingFramebuffers

    + +
    +
    + + + + +
    std::vector<VkFramebuffer> ne::ShadowMapHandle::InternalResources::vShadowMappingFramebuffers
    +
    +

    Framebuffers that reference pDepthTexture and pColorTexture (if it's valid), these framebuffers are used by the Vulkan renderer during the shadow pass.

    +
    Remarks
    Stores only 1 framebuffer if pColorTexture is nullptr otherwise 6 framebuffers (because pColorTexture is a cubemap for point lights).
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1ShadowMapHandle_1_1InternalResources.js b/structne_1_1ShadowMapHandle_1_1InternalResources.js new file mode 100644 index 000000000..770bf7868 --- /dev/null +++ b/structne_1_1ShadowMapHandle_1_1InternalResources.js @@ -0,0 +1,6 @@ +var structne_1_1ShadowMapHandle_1_1InternalResources = +[ + [ "pColorTexture", "structne_1_1ShadowMapHandle_1_1InternalResources.html#a44d60afbcd0f16429fda579d1bf115bb", null ], + [ "pDepthTexture", "structne_1_1ShadowMapHandle_1_1InternalResources.html#ae819447ca5923b9a2389442b4f1079b9", null ], + [ "vShadowMappingFramebuffers", "structne_1_1ShadowMapHandle_1_1InternalResources.html#a70494031d36d20e2b67f6f29b60c34f3", null ] +]; \ No newline at end of file diff --git a/structne_1_1ShadowMapManager_1_1InternalResources-members.html b/structne_1_1ShadowMapManager_1_1InternalResources-members.html new file mode 100644 index 000000000..e9eff5c46 --- /dev/null +++ b/structne_1_1ShadowMapManager_1_1InternalResources-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::ShadowMapManager::InternalResources Member List
    +
    + +
    + + + + diff --git a/structne_1_1ShadowMapManager_1_1InternalResources.html b/structne_1_1ShadowMapManager_1_1InternalResources.html new file mode 100644 index 000000000..8ab1be0ca --- /dev/null +++ b/structne_1_1ShadowMapManager_1_1InternalResources.html @@ -0,0 +1,158 @@ + + + + + + + +Nameless Engine: ne::ShadowMapManager::InternalResources Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::ShadowMapManager::InternalResources Struct Reference
    +
    +
    + +

    #include <ShadowMapManager.h>

    + + + + + + +

    +Public Attributes

    std::unordered_map< ShadowMapHandle *, ShadowMapHandleResourcesshadowMaps
     
    std::array< std::unique_ptr< ShadowMapArrayIndexManager >, static_cast< size_t >(ShadowMapType::SIZE)> vShadowMapArrayIndexManagers
     
    +

    Detailed Description

    +

    Groups mutex guarded data.

    +

    Member Data Documentation

    + +

    ◆ shadowMaps

    + +
    +
    + + + + +
    std::unordered_map<ShadowMapHandle*, ShadowMapHandleResources> ne::ShadowMapManager::InternalResources::shadowMaps
    +
    +

    All allocated shadow maps.

    + +
    +
    + +

    ◆ vShadowMapArrayIndexManagers

    + +
    +
    + + + + +
    std::array<std::unique_ptr<ShadowMapArrayIndexManager>, static_cast<size_t>(ShadowMapType::SIZE)> ne::ShadowMapManager::InternalResources::vShadowMapArrayIndexManagers
    +
    +

    Array index managers for various light source types.

    +
    Remarks
    Access using enum: vManagers[ShadowMapType::DIRECTIONAL].
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1ShadowMapManager_1_1InternalResources.js b/structne_1_1ShadowMapManager_1_1InternalResources.js new file mode 100644 index 000000000..6b3c9731f --- /dev/null +++ b/structne_1_1ShadowMapManager_1_1InternalResources.js @@ -0,0 +1,5 @@ +var structne_1_1ShadowMapManager_1_1InternalResources = +[ + [ "shadowMaps", "structne_1_1ShadowMapManager_1_1InternalResources.html#afa746a1d5243ac4f55e4251d1fd4a5d3", null ], + [ "vShadowMapArrayIndexManagers", "structne_1_1ShadowMapManager_1_1InternalResources.html#a97c82194fea4e089f9f3e01999c25450", null ] +]; \ No newline at end of file diff --git a/structne_1_1ShadowMapManager_1_1ShadowMapHandleResources-members.html b/structne_1_1ShadowMapManager_1_1ShadowMapHandleResources-members.html new file mode 100644 index 000000000..113618cb7 --- /dev/null +++ b/structne_1_1ShadowMapManager_1_1ShadowMapHandleResources-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::ShadowMapManager::ShadowMapHandleResources Member List
    +
    + +
    + + + + diff --git a/structne_1_1ShadowMapManager_1_1ShadowMapHandleResources.html b/structne_1_1ShadowMapManager_1_1ShadowMapHandleResources.html new file mode 100644 index 000000000..6bd4cf18a --- /dev/null +++ b/structne_1_1ShadowMapManager_1_1ShadowMapHandleResources.html @@ -0,0 +1,157 @@ + + + + + + + +Nameless Engine: ne::ShadowMapManager::ShadowMapHandleResources Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::ShadowMapManager::ShadowMapHandleResources Struct Reference
    +
    +
    + +

    #include <ShadowMapManager.h>

    + + + + + + +

    +Public Attributes

    std::unique_ptr< GpuResourcepDepthTexture
     
    std::unique_ptr< GpuResourcepColorTexture
     
    +

    Detailed Description

    +

    Groups resources that a shadow map handle references.

    +

    Member Data Documentation

    + +

    ◆ pColorTexture

    + +
    +
    + + + + +
    std::unique_ptr<GpuResource> ne::ShadowMapManager::ShadowMapHandleResources::pColorTexture
    +
    +

    Optional (may be nullptr) "color" target, used for point lights to store additional information.

    + +
    +
    + +

    ◆ pDepthTexture

    + +
    +
    + + + + +
    std::unique_ptr<GpuResource> ne::ShadowMapManager::ShadowMapHandleResources::pDepthTexture
    +
    +

    Depth image.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1ShadowMapManager_1_1ShadowMapHandleResources.js b/structne_1_1ShadowMapManager_1_1ShadowMapHandleResources.js new file mode 100644 index 000000000..89a4be824 --- /dev/null +++ b/structne_1_1ShadowMapManager_1_1ShadowMapHandleResources.js @@ -0,0 +1,5 @@ +var structne_1_1ShadowMapManager_1_1ShadowMapHandleResources = +[ + [ "pColorTexture", "structne_1_1ShadowMapManager_1_1ShadowMapHandleResources.html#ae75774a326f7897f085c8b7373298ea0", null ], + [ "pDepthTexture", "structne_1_1ShadowMapManager_1_1ShadowMapHandleResources.html#a15da9e3138922d35b562a16d58e75f4a", null ] +]; \ No newline at end of file diff --git a/structne_1_1ShadowPassLightShaderInfo-members.html b/structne_1_1ShadowPassLightShaderInfo-members.html new file mode 100644 index 000000000..a4a3f3cdc --- /dev/null +++ b/structne_1_1ShadowPassLightShaderInfo-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::ShadowPassLightShaderInfo Member List
    +
    +
    + +

    This is the complete list of members for ne::ShadowPassLightShaderInfo, including all inherited members.

    + + + +
    positionne::ShadowPassLightShaderInfo
    viewProjectionMatrixne::ShadowPassLightShaderInfo
    +
    + + + + diff --git a/structne_1_1ShadowPassLightShaderInfo.html b/structne_1_1ShadowPassLightShaderInfo.html new file mode 100644 index 000000000..0631bb0d6 --- /dev/null +++ b/structne_1_1ShadowPassLightShaderInfo.html @@ -0,0 +1,157 @@ + + + + + + + +Nameless Engine: ne::ShadowPassLightShaderInfo Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::ShadowPassLightShaderInfo Struct Reference
    +
    +
    + +

    #include <LightingShaderResourceManager.h>

    + + + + + + +

    +Public Attributes

    glm::mat4 viewProjectionMatrix = glm::identity<glm::mat4>()
     
    glm::vec4 position = glm::vec4(0.0F, 0.0F, 0.0F, 1.0F)
     
    +

    Detailed Description

    +

    Data that will be directly copied into shaders.

    +

    Member Data Documentation

    + +

    ◆ position

    + +
    +
    + + + + +
    glm::vec4 ne::ShadowPassLightShaderInfo::position = glm::vec4(0.0F, 0.0F, 0.0F, 1.0F)
    +
    +

    World location of the light source. 4th component is not used.

    + +
    +
    + +

    ◆ viewProjectionMatrix

    + +
    +
    + + + + +
    glm::mat4 ne::ShadowPassLightShaderInfo::viewProjectionMatrix = glm::identity<glm::mat4>()
    +
    +

    Matrix that transforms data from world space to projection space light.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1ShadowPassLightShaderInfo.js b/structne_1_1ShadowPassLightShaderInfo.js new file mode 100644 index 000000000..92be7913c --- /dev/null +++ b/structne_1_1ShadowPassLightShaderInfo.js @@ -0,0 +1,5 @@ +var structne_1_1ShadowPassLightShaderInfo = +[ + [ "position", "structne_1_1ShadowPassLightShaderInfo.html#a70b76cc0a57c54a9316574a1d45d8bd4", null ], + [ "viewProjectionMatrix", "structne_1_1ShadowPassLightShaderInfo.html#ae4930474830a3a3b4312b9a9e056b9b3", null ] +]; \ No newline at end of file diff --git a/structne_1_1SourceLocationInfo-members.html b/structne_1_1SourceLocationInfo-members.html new file mode 100644 index 000000000..ef3150a8f --- /dev/null +++ b/structne_1_1SourceLocationInfo-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::SourceLocationInfo Member List
    +
    +
    + +

    This is the complete list of members for ne::SourceLocationInfo, including all inherited members.

    + + + +
    sFilenamene::SourceLocationInfo
    sLinene::SourceLocationInfo
    +
    + + + + diff --git a/structne_1_1SourceLocationInfo.html b/structne_1_1SourceLocationInfo.html new file mode 100644 index 000000000..b316438ed --- /dev/null +++ b/structne_1_1SourceLocationInfo.html @@ -0,0 +1,157 @@ + + + + + + + +Nameless Engine: ne::SourceLocationInfo Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::SourceLocationInfo Struct Reference
    +
    +
    + +

    #include <Error.h>

    + + + + + + +

    +Public Attributes

    std::string sFilename
     
    std::string sLine
     
    +

    Detailed Description

    +

    Information of a specific source code location.

    +

    Member Data Documentation

    + +

    ◆ sFilename

    + +
    +
    + + + + +
    std::string ne::SourceLocationInfo::sFilename
    +
    +

    File name.

    + +
    +
    + +

    ◆ sLine

    + +
    +
    + + + + +
    std::string ne::SourceLocationInfo::sLine
    +
    +

    Line number.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • src/engine_lib/public/misc/Error.h
    • +
    +
    +
    + + + + diff --git a/structne_1_1SourceLocationInfo.js b/structne_1_1SourceLocationInfo.js new file mode 100644 index 000000000..f6fb8e293 --- /dev/null +++ b/structne_1_1SourceLocationInfo.js @@ -0,0 +1,5 @@ +var structne_1_1SourceLocationInfo = +[ + [ "sFilename", "structne_1_1SourceLocationInfo.html#ab660f1593c1ec62aeb5e3bda363c21c0", null ], + [ "sLine", "structne_1_1SourceLocationInfo.html#a77e068228b4281f7176d4168ae9bd187", null ] +]; \ No newline at end of file diff --git a/structne_1_1SpatialNode_1_1LocalSpaceInformation-members.html b/structne_1_1SpatialNode_1_1LocalSpaceInformation-members.html new file mode 100644 index 000000000..c23c90651 --- /dev/null +++ b/structne_1_1SpatialNode_1_1LocalSpaceInformation-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::SpatialNode::LocalSpaceInformation Member List
    +
    + +
    + + + + diff --git a/structne_1_1SpatialNode_1_1LocalSpaceInformation.html b/structne_1_1SpatialNode_1_1LocalSpaceInformation.html new file mode 100644 index 000000000..98ad62a57 --- /dev/null +++ b/structne_1_1SpatialNode_1_1LocalSpaceInformation.html @@ -0,0 +1,155 @@ + + + + + + + +Nameless Engine: ne::SpatialNode::LocalSpaceInformation Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::SpatialNode::LocalSpaceInformation Struct Reference
    +
    +
    + + + + + + +

    +Public Attributes

    glm::mat4x4 relativeRotationMatrix = glm::identity<glm::mat4x4>()
     
    glm::quat relativeRotationQuaternion = glm::identity<glm::quat>()
     
    +

    Detailed Description

    +

    Small helper struct to keep all local space related information in one place.

    +

    Member Data Documentation

    + +

    ◆ relativeRotationMatrix

    + +
    +
    + + + + +
    glm::mat4x4 ne::SpatialNode::LocalSpaceInformation::relativeRotationMatrix = glm::identity<glm::mat4x4>()
    +
    +

    Matrix that describes basis vectors that define node's local space.

    + +
    +
    + +

    ◆ relativeRotationQuaternion

    + +
    +
    + + + + +
    glm::quat ne::SpatialNode::LocalSpaceInformation::relativeRotationQuaternion = glm::identity<glm::quat>()
    +
    +

    Node's relative rotation in quaternion form.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1SpatialNode_1_1LocalSpaceInformation.js b/structne_1_1SpatialNode_1_1LocalSpaceInformation.js new file mode 100644 index 000000000..c72f95fa3 --- /dev/null +++ b/structne_1_1SpatialNode_1_1LocalSpaceInformation.js @@ -0,0 +1,5 @@ +var structne_1_1SpatialNode_1_1LocalSpaceInformation = +[ + [ "relativeRotationMatrix", "structne_1_1SpatialNode_1_1LocalSpaceInformation.html#affb3771db01d1879f9f11dfb9a22e5f2", null ], + [ "relativeRotationQuaternion", "structne_1_1SpatialNode_1_1LocalSpaceInformation.html#ac0fe11bde13bc3d18272c475530e445f", null ] +]; \ No newline at end of file diff --git a/structne_1_1SpatialNode_1_1WorldMatrixInformation-members.html b/structne_1_1SpatialNode_1_1WorldMatrixInformation-members.html new file mode 100644 index 000000000..19d86cbfb --- /dev/null +++ b/structne_1_1SpatialNode_1_1WorldMatrixInformation-members.html @@ -0,0 +1,120 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structne_1_1SpatialNode_1_1WorldMatrixInformation.html b/structne_1_1SpatialNode_1_1WorldMatrixInformation.html new file mode 100644 index 000000000..e6d676c02 --- /dev/null +++ b/structne_1_1SpatialNode_1_1WorldMatrixInformation.html @@ -0,0 +1,274 @@ + + + + + + + +Nameless Engine: ne::SpatialNode::WorldMatrixInformation Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::SpatialNode::WorldMatrixInformation Struct Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    glm::vec3 worldLocation = glm::vec3(0.0F, 0.0F, 0.0F)
     
    glm::vec3 worldRotation = glm::vec3(0.0F, 0.0F, 0.0F)
     
    glm::vec3 worldScale = glm::vec3(1.0F, 1.0F, 1.0F)
     
    glm::vec3 worldForward = Globals::WorldDirection::forward
     
    glm::vec3 worldRight = Globals::WorldDirection::right
     
    glm::vec3 worldUp = Globals::WorldDirection::up
     
    glm::quat worldRotationQuaternion = glm::identity<glm::quat>()
     
    glm::mat4x4 worldMatrix = glm::identity<glm::mat4x4>()
     
    bool bInOnWorldLocationRotationScaleChanged = false
     
    +

    Detailed Description

    +

    Small helper struct to keep all world space related information in one place.

    +

    Member Data Documentation

    + +

    ◆ bInOnWorldLocationRotationScaleChanged

    + +
    +
    + + + + +
    bool ne::SpatialNode::WorldMatrixInformation::bInOnWorldLocationRotationScaleChanged = false
    +
    +

    Whether we are in the notification callback or not.

    + +
    +
    + +

    ◆ worldForward

    + +
    +
    + + + + +
    glm::vec3 ne::SpatialNode::WorldMatrixInformation::worldForward = Globals::WorldDirection::forward
    +
    +

    Forward direction of this node in world space.

    + +
    +
    + +

    ◆ worldLocation

    + +
    +
    + + + + +
    glm::vec3 ne::SpatialNode::WorldMatrixInformation::worldLocation = glm::vec3(0.0F, 0.0F, 0.0F)
    +
    +

    World location of this node. This value contains the location component of worldMatrix.

    + +
    +
    + +

    ◆ worldMatrix

    + +
    +
    + + + + +
    glm::mat4x4 ne::SpatialNode::WorldMatrixInformation::worldMatrix = glm::identity<glm::mat4x4>()
    +
    +

    Matrix that combines worldLocation, worldRotation and worldScale. Allows transforming data from node's local space directly into the world space.

    + +
    +
    + +

    ◆ worldRight

    + +
    +
    + + + + +
    glm::vec3 ne::SpatialNode::WorldMatrixInformation::worldRight = Globals::WorldDirection::right
    +
    +

    Right direction of this node in world space.

    + +
    +
    + +

    ◆ worldRotation

    + +
    +
    + + + + +
    glm::vec3 ne::SpatialNode::WorldMatrixInformation::worldRotation = glm::vec3(0.0F, 0.0F, 0.0F)
    +
    +

    World rotation (roll, pitch, yaw in degrees) of this node. This value contains the rotation component of worldMatrix.

    + +
    +
    + +

    ◆ worldRotationQuaternion

    + +
    +
    + + + + +
    glm::quat ne::SpatialNode::WorldMatrixInformation::worldRotationQuaternion = glm::identity<glm::quat>()
    +
    +

    Rotation from worldMatrix in the quaternion form.

    + +
    +
    + +

    ◆ worldScale

    + +
    +
    + + + + +
    glm::vec3 ne::SpatialNode::WorldMatrixInformation::worldScale = glm::vec3(1.0F, 1.0F, 1.0F)
    +
    +

    World space of this node. This value contains the scale component of worldMatrix.

    + +
    +
    + +

    ◆ worldUp

    + +
    +
    + + + + +
    glm::vec3 ne::SpatialNode::WorldMatrixInformation::worldUp = Globals::WorldDirection::up
    +
    +

    Up direction of this node in world space.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1SpatialNode_1_1WorldMatrixInformation.js b/structne_1_1SpatialNode_1_1WorldMatrixInformation.js new file mode 100644 index 000000000..9008da4b3 --- /dev/null +++ b/structne_1_1SpatialNode_1_1WorldMatrixInformation.js @@ -0,0 +1,12 @@ +var structne_1_1SpatialNode_1_1WorldMatrixInformation = +[ + [ "bInOnWorldLocationRotationScaleChanged", "structne_1_1SpatialNode_1_1WorldMatrixInformation.html#a5173c8666883dd487bb0a041cde1d175", null ], + [ "worldForward", "structne_1_1SpatialNode_1_1WorldMatrixInformation.html#aa35e4d187db28373360fb4963d446418", null ], + [ "worldLocation", "structne_1_1SpatialNode_1_1WorldMatrixInformation.html#a29044d5803d2015569c96602deddfdcb", null ], + [ "worldMatrix", "structne_1_1SpatialNode_1_1WorldMatrixInformation.html#a3b8d6cb2254d74c18fa6f2f0778a4064", null ], + [ "worldRight", "structne_1_1SpatialNode_1_1WorldMatrixInformation.html#ac02eb7912b309ecc01437c03da89d56e", null ], + [ "worldRotation", "structne_1_1SpatialNode_1_1WorldMatrixInformation.html#a9a94da8f4d199b8ea1f8d0b91f342166", null ], + [ "worldRotationQuaternion", "structne_1_1SpatialNode_1_1WorldMatrixInformation.html#ae4891bfd2a720716d932e4ceb6eb6558", null ], + [ "worldScale", "structne_1_1SpatialNode_1_1WorldMatrixInformation.html#ae35ae97fae3f1d83a234119e33fad29a", null ], + [ "worldUp", "structne_1_1SpatialNode_1_1WorldMatrixInformation.html#aa94277fce124b9acff3e4db3b1e50ebc", null ] +]; \ No newline at end of file diff --git a/structne_1_1Sphere-members.html b/structne_1_1Sphere-members.html new file mode 100644 index 000000000..38740429d --- /dev/null +++ b/structne_1_1Sphere-members.html @@ -0,0 +1,115 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::Sphere Member List
    +
    +
    + +

    This is the complete list of members for ne::Sphere, including all inherited members.

    + + + + + + +
    centerne::Sphere
    isBehindPlane(const Plane &plane) constne::Sphere
    radiusne::Sphere
    Sphere()=defaultne::Sphere
    Sphere(const glm::vec3 &center, float radius)ne::Sphere
    +
    + + + + diff --git a/structne_1_1Sphere.html b/structne_1_1Sphere.html new file mode 100644 index 000000000..b1812088b --- /dev/null +++ b/structne_1_1Sphere.html @@ -0,0 +1,258 @@ + + + + + + + +Nameless Engine: ne::Sphere Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::Sphere Struct Reference
    +
    +
    + +

    #include <Sphere.h>

    + + + + + + + + +

    +Public Member Functions

     Sphere ()=default
     
     Sphere (const glm::vec3 &center, float radius)
     
    bool isBehindPlane (const Plane &plane) const
     
    + + + + + +

    +Public Attributes

    glm::vec3 center = glm::vec3(0.0F, 0.0F, 0.0F)
     
    float radius = 1.0F
     
    +

    Detailed Description

    +

    Sphere shape.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Sphere() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    ne::Sphere::Sphere ()
    +
    +default
    +
    +

    Creates uninitialized sphere.

    + +
    +
    + +

    ◆ Sphere() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    ne::Sphere::Sphere (const glm::vec3 & center,
    float radius 
    )
    +
    +

    Initializes the sphere.

    +
    Parameters
    + + + +
    centerLocation of the sphere's center point.
    radiusSphere's radius.
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ isBehindPlane()

    + +
    +
    + + + + + + + + +
    bool ne::Sphere::isBehindPlane (const Planeplane) const
    +
    +

    Tells if the sphere is fully behind (inside the negative halfspace of) a plane.

    +
    Parameters
    + + +
    planePlane to test.
    +
    +
    +
    Returns
    true if the sphere is fully behind the plane, false if intersects or in front of it.
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ center

    + +
    +
    + + + + +
    glm::vec3 ne::Sphere::center = glm::vec3(0.0F, 0.0F, 0.0F)
    +
    +

    Location of the sphere's center point.

    + +
    +
    + +

    ◆ radius

    + +
    +
    + + + + +
    float ne::Sphere::radius = 1.0F
    +
    +

    Sphere's radius.

    + +
    +
    +
    The documentation for this struct was generated from the following files:
      +
    • src/engine_lib/public/misc/shapes/Sphere.h
    • +
    • src/engine_lib/private/misc/shapes/Sphere.cpp
    • +
    +
    +
    + + + + diff --git a/structne_1_1Sphere.js b/structne_1_1Sphere.js new file mode 100644 index 000000000..53f305f8d --- /dev/null +++ b/structne_1_1Sphere.js @@ -0,0 +1,8 @@ +var structne_1_1Sphere = +[ + [ "Sphere", "structne_1_1Sphere.html#add0f174b3583a3acb6cb4eedbf02b747", null ], + [ "Sphere", "structne_1_1Sphere.html#a7d17f66b91d761f31a51de2052521771", null ], + [ "isBehindPlane", "structne_1_1Sphere.html#a4ea39373654a68322d77eaff724c892c", null ], + [ "center", "structne_1_1Sphere.html#a0db673295b7bb07feb72db6fc08830ca", null ], + [ "radius", "structne_1_1Sphere.html#a383eecbfb0414c5f3fc014134b6e254b", null ] +]; \ No newline at end of file diff --git a/structne_1_1SpotlightNode_1_1ShaderData-members.html b/structne_1_1SpotlightNode_1_1ShaderData-members.html new file mode 100644 index 000000000..468660647 --- /dev/null +++ b/structne_1_1SpotlightNode_1_1ShaderData-members.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::SpotlightNode::ShaderData Member List
    +
    + +
    + + + + diff --git a/structne_1_1SpotlightNode_1_1ShaderData.html b/structne_1_1SpotlightNode_1_1ShaderData.html new file mode 100644 index 000000000..bbc17aed4 --- /dev/null +++ b/structne_1_1SpotlightNode_1_1ShaderData.html @@ -0,0 +1,178 @@ + + + + + + + +Nameless Engine: ne::SpotlightNode::ShaderData Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::SpotlightNode::ShaderData Struct Reference
    +
    +
    + + + + +

    +Classes

    struct  ShadowPassDataGroup
     
    + + + + + + + +

    +Public Attributes

    std::unique_ptr< ShaderLightArraySlotpSpotlightArraySlot
     
    ShadowPassDataGroup shadowPassData
     
    SpotlightShaderData shaderData
     
    +

    Detailed Description

    +

    Groups data related to shaders.

    +

    Member Data Documentation

    + +

    ◆ pSpotlightArraySlot

    + +
    +
    + + + + +
    std::unique_ptr<ShaderLightArraySlot> ne::SpotlightNode::ShaderData::pSpotlightArraySlot
    +
    +

    Slot in the array with data of all spawned spotlights.

    + +
    +
    + +

    ◆ shaderData

    + +
    +
    + + + + +
    SpotlightShaderData ne::SpotlightNode::ShaderData::shaderData
    +
    +

    Groups data that will be directly copied to the GPU resource.

    + +
    +
    + +

    ◆ shadowPassData

    + +
    +
    + + + + +
    ShadowPassDataGroup ne::SpotlightNode::ShaderData::shadowPassData
    +
    +

    Groups data used in shadow pass.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1SpotlightNode_1_1ShaderData.js b/structne_1_1SpotlightNode_1_1ShaderData.js new file mode 100644 index 000000000..0c47e2acb --- /dev/null +++ b/structne_1_1SpotlightNode_1_1ShaderData.js @@ -0,0 +1,7 @@ +var structne_1_1SpotlightNode_1_1ShaderData = +[ + [ "ShadowPassDataGroup", "structne_1_1SpotlightNode_1_1ShaderData_1_1ShadowPassDataGroup.html", "structne_1_1SpotlightNode_1_1ShaderData_1_1ShadowPassDataGroup" ], + [ "pSpotlightArraySlot", "structne_1_1SpotlightNode_1_1ShaderData.html#a98bee944ae1f5ec796242dbeec7101ae", null ], + [ "shaderData", "structne_1_1SpotlightNode_1_1ShaderData.html#aa51b094af8c0f8bc1e87f3c691816d0f", null ], + [ "shadowPassData", "structne_1_1SpotlightNode_1_1ShaderData.html#a866d4d1a7e6dffe3a1f2e9b0ce6049b0", null ] +]; \ No newline at end of file diff --git a/structne_1_1SpotlightNode_1_1ShaderData_1_1ShadowPassDataGroup-members.html b/structne_1_1SpotlightNode_1_1ShaderData_1_1ShadowPassDataGroup-members.html new file mode 100644 index 000000000..08f1809fe --- /dev/null +++ b/structne_1_1SpotlightNode_1_1ShaderData_1_1ShadowPassDataGroup-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::SpotlightNode::ShaderData::ShadowPassDataGroup Member List
    +
    + +
    + + + + diff --git a/structne_1_1SpotlightNode_1_1ShaderData_1_1ShadowPassDataGroup.html b/structne_1_1SpotlightNode_1_1ShaderData_1_1ShadowPassDataGroup.html new file mode 100644 index 000000000..9224df2f7 --- /dev/null +++ b/structne_1_1SpotlightNode_1_1ShaderData_1_1ShadowPassDataGroup.html @@ -0,0 +1,157 @@ + + + + + + + +Nameless Engine: ne::SpotlightNode::ShaderData::ShadowPassDataGroup Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::SpotlightNode::ShaderData::ShadowPassDataGroup Struct Reference
    +
    +
    + +

    #include <SpotlightNode.h>

    + + + + + + +

    +Public Attributes

    std::unique_ptr< ShaderLightArraySlotpSlot
     
    ShadowPassLightShaderInfo shaderData
     
    +

    Detailed Description

    +

    Groups used in shadow pass.

    +

    Member Data Documentation

    + +

    ◆ pSlot

    + +
    +
    + + + + +
    std::unique_ptr<ShaderLightArraySlot> ne::SpotlightNode::ShaderData::ShadowPassDataGroup::pSlot
    +
    +

    Slot to store shaderData.

    + +
    +
    + +

    ◆ shaderData

    + +
    +
    + + + + +
    ShadowPassLightShaderInfo ne::SpotlightNode::ShaderData::ShadowPassDataGroup::shaderData
    +
    +

    Data to copy to shaders.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1SpotlightNode_1_1ShaderData_1_1ShadowPassDataGroup.js b/structne_1_1SpotlightNode_1_1ShaderData_1_1ShadowPassDataGroup.js new file mode 100644 index 000000000..bafbb7210 --- /dev/null +++ b/structne_1_1SpotlightNode_1_1ShaderData_1_1ShadowPassDataGroup.js @@ -0,0 +1,5 @@ +var structne_1_1SpotlightNode_1_1ShaderData_1_1ShadowPassDataGroup = +[ + [ "pSlot", "structne_1_1SpotlightNode_1_1ShaderData_1_1ShadowPassDataGroup.html#aa525a25a8ef1c078b042c7d163af3c40", null ], + [ "shaderData", "structne_1_1SpotlightNode_1_1ShaderData_1_1ShadowPassDataGroup.html#a8f73611a9b651f99a3a91d92c309e344", null ] +]; \ No newline at end of file diff --git a/structne_1_1SpotlightNode_1_1SpotlightShaderData-members.html b/structne_1_1SpotlightNode_1_1SpotlightShaderData-members.html new file mode 100644 index 000000000..de5e16695 --- /dev/null +++ b/structne_1_1SpotlightNode_1_1SpotlightShaderData-members.html @@ -0,0 +1,121 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structne_1_1SpotlightNode_1_1SpotlightShaderData.html b/structne_1_1SpotlightNode_1_1SpotlightShaderData.html new file mode 100644 index 000000000..ccef19e54 --- /dev/null +++ b/structne_1_1SpotlightNode_1_1SpotlightShaderData.html @@ -0,0 +1,293 @@ + + + + + + + +Nameless Engine: ne::SpotlightNode::SpotlightShaderData Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::SpotlightNode::SpotlightShaderData Struct Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    glm::mat4 viewProjectionMatrix = glm::identity<glm::mat4>()
     
    glm::vec4 position = glm::vec4(0.0F, 0.0F, 0.0F, 1.0F)
     
    glm::vec4 direction = glm::vec4(0.0F, 0.0F, 0.0F, 0.0F)
     
    glm::vec4 color = glm::vec4(1.0F, 1.0F, 1.0F, 1.0F)
     
    float intensity = 1.0F
     
    float distance = 1.0F
     
    float cosInnerConeAngle = 0.0F
     
    float cosOuterConeAngle = 0.0F
     
    float coneBottomRadius = 0.0F
     
    unsigned int iShadowMapIndex = 0
     
    +

    Detailed Description

    +

    Data that will be directly copied into shaders.

    +

    Member Data Documentation

    + +

    ◆ color

    + +
    +
    + + + + +
    glm::vec4 ne::SpotlightNode::SpotlightShaderData::color = glm::vec4(1.0F, 1.0F, 1.0F, 1.0F)
    +
    +

    Light color. 4th component is not used.

    + +
    +
    + +

    ◆ coneBottomRadius

    + +
    +
    + + + + +
    float ne::SpotlightNode::SpotlightShaderData::coneBottomRadius = 0.0F
    +
    +

    Radius of cone's bottom part.

    + +
    +
    + +

    ◆ cosInnerConeAngle

    + +
    +
    + + + + +
    float ne::SpotlightNode::SpotlightShaderData::cosInnerConeAngle = 0.0F
    +
    +

    Cosine of the spotlight's inner cone angle (cutoff).

    +
    Remarks
    Represents cosine of the cutoff angle on one side from the light direction (not both sides), i.e. this is a cosine of value [0-90] degrees.
    + +
    +
    + +

    ◆ cosOuterConeAngle

    + +
    +
    + + + + +
    float ne::SpotlightNode::SpotlightShaderData::cosOuterConeAngle = 0.0F
    +
    +

    Cosine of the spotlight's outer cone angle (cutoff).

    +
    Remarks
    Represents cosine of the cutoff angle on one side from the light direction (not both sides), i.e. this is a cosine of value [0-90] degrees.
    + +
    +
    + +

    ◆ direction

    + +
    +
    + + + + +
    glm::vec4 ne::SpotlightNode::SpotlightShaderData::direction = glm::vec4(0.0F, 0.0F, 0.0F, 0.0F)
    +
    +

    Light forward unit vector (direction). 4th component is not used.

    + +
    +
    + +

    ◆ distance

    + +
    +
    + + + + +
    float ne::SpotlightNode::SpotlightShaderData::distance = 1.0F
    +
    +

    Lit distance.

    + +
    +
    + +

    ◆ intensity

    + +
    +
    + + + + +
    float ne::SpotlightNode::SpotlightShaderData::intensity = 1.0F
    +
    +

    Light intensity.

    + +
    +
    + +

    ◆ iShadowMapIndex

    + +
    +
    + + + + +
    unsigned int ne::SpotlightNode::SpotlightShaderData::iShadowMapIndex = 0
    +
    +

    Index in the spot shadow map array where shadow map of this light source is stored.

    + +
    +
    + +

    ◆ position

    + +
    +
    + + + + +
    glm::vec4 ne::SpotlightNode::SpotlightShaderData::position = glm::vec4(0.0F, 0.0F, 0.0F, 1.0F)
    +
    +

    Light position in world space. 4th component is not used.

    + +
    +
    + +

    ◆ viewProjectionMatrix

    + +
    +
    + + + + +
    glm::mat4 ne::SpotlightNode::SpotlightShaderData::viewProjectionMatrix = glm::identity<glm::mat4>()
    +
    +

    Matrix that transforms data (such as positions) to clip (projection) space of the light source (used for shadow mapping).

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1SpotlightNode_1_1SpotlightShaderData.js b/structne_1_1SpotlightNode_1_1SpotlightShaderData.js new file mode 100644 index 000000000..f9427dd9d --- /dev/null +++ b/structne_1_1SpotlightNode_1_1SpotlightShaderData.js @@ -0,0 +1,13 @@ +var structne_1_1SpotlightNode_1_1SpotlightShaderData = +[ + [ "color", "structne_1_1SpotlightNode_1_1SpotlightShaderData.html#ad2ae69cd6b1b9f0913bab3bee7a798d4", null ], + [ "coneBottomRadius", "structne_1_1SpotlightNode_1_1SpotlightShaderData.html#a34e77790dfd97adf3a21d2f7ab79c0ba", null ], + [ "cosInnerConeAngle", "structne_1_1SpotlightNode_1_1SpotlightShaderData.html#aebdbe96e5f78ebdda143bc1b27eee1e0", null ], + [ "cosOuterConeAngle", "structne_1_1SpotlightNode_1_1SpotlightShaderData.html#a640f432897c6ca109d103d27b0a9ccff", null ], + [ "direction", "structne_1_1SpotlightNode_1_1SpotlightShaderData.html#a41724cfd271178bc9391d6b128d27e9f", null ], + [ "distance", "structne_1_1SpotlightNode_1_1SpotlightShaderData.html#a6d4487eb56554207b3a343f56f253c88", null ], + [ "intensity", "structne_1_1SpotlightNode_1_1SpotlightShaderData.html#acdca544a41fab7c01411ec75b24f816a", null ], + [ "iShadowMapIndex", "structne_1_1SpotlightNode_1_1SpotlightShaderData.html#a3d34db8731ea7665b3984cab515312df", null ], + [ "position", "structne_1_1SpotlightNode_1_1SpotlightShaderData.html#a1ac7fb1ef7b68ac9b8d7a048976af632", null ], + [ "viewProjectionMatrix", "structne_1_1SpotlightNode_1_1SpotlightShaderData.html#a0eece30392cf51a8dc9eea275f4ba284", null ] +]; \ No newline at end of file diff --git a/structne_1_1StdStringHash-members.html b/structne_1_1StdStringHash-members.html new file mode 100644 index 000000000..431c75dc6 --- /dev/null +++ b/structne_1_1StdStringHash-members.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::StdStringHash Member List
    +
    +
    + +

    This is the complete list of members for ne::StdStringHash, including all inherited members.

    + + + + + +
    is_transparent typedefne::StdStringHash
    operator()(const char *pText) constne::StdStringHashinline
    operator()(std::string_view text) constne::StdStringHashinline
    operator()(std::string const &text) constne::StdStringHashinline
    +
    + + + + diff --git a/structne_1_1StdStringHash.html b/structne_1_1StdStringHash.html new file mode 100644 index 000000000..b3627ca64 --- /dev/null +++ b/structne_1_1StdStringHash.html @@ -0,0 +1,250 @@ + + + + + + + +Nameless Engine: ne::StdStringHash Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::StdStringHash Struct Reference
    +
    +
    + +

    #include <StdHashes.hpp>

    + + + + +

    +Public Types

    using is_transparent = void
     
    + + + + + + + +

    +Public Member Functions

    std::size_t operator() (const char *pText) const
     
    std::size_t operator() (std::string_view text) const
     
    std::size_t operator() (std::string const &text) const
     
    +

    Detailed Description

    +

    Used for find in map to work with std::string_view while the key is std::string.

    +

    Member Typedef Documentation

    + +

    ◆ is_transparent

    + +
    +
    + + + + +
    using ne::StdStringHash::is_transparent = void
    +
    +

    Tag.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ operator()() [1/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    std::size_t ne::StdStringHash::operator() (const char * pText) const
    +
    +inline
    +
    +

    Calculates hash.

    Parameters
    + + +
    pTextText to hash.
    +
    +
    +
    Returns
    Hash.
    + +
    +
    + +

    ◆ operator()() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    std::size_t ne::StdStringHash::operator() (std::string const & text) const
    +
    +inline
    +
    +

    Calculates hash.

    Parameters
    + + +
    textText to hash.
    +
    +
    +
    Returns
    Hash.
    + +
    +
    + +

    ◆ operator()() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    std::size_t ne::StdStringHash::operator() (std::string_view text) const
    +
    +inline
    +
    +

    Calculates hash.

    Parameters
    + + +
    textText to hash.
    +
    +
    +
    Returns
    Hash.
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1StdStringHash.js b/structne_1_1StdStringHash.js new file mode 100644 index 000000000..4eaf4aa02 --- /dev/null +++ b/structne_1_1StdStringHash.js @@ -0,0 +1,7 @@ +var structne_1_1StdStringHash = +[ + [ "is_transparent", "structne_1_1StdStringHash.html#acaa12c39f92217a86fbe8e5ed6a4fea5", null ], + [ "operator()", "structne_1_1StdStringHash.html#aa60fb6f2c93bd3a3a017aae599085f7b", null ], + [ "operator()", "structne_1_1StdStringHash.html#ab51ae54295e6977de46ffccb58e83b46", null ], + [ "operator()", "structne_1_1StdStringHash.html#a5a854cc2fd1b60a0049cda104f8a6176", null ] +]; \ No newline at end of file diff --git a/structne_1_1TextureManager_1_1TextureResource-members.html b/structne_1_1TextureManager_1_1TextureResource-members.html new file mode 100644 index 000000000..c843df24a --- /dev/null +++ b/structne_1_1TextureManager_1_1TextureResource-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::TextureManager::TextureResource Member List
    +
    + +
    + + + + diff --git a/structne_1_1TextureManager_1_1TextureResource.html b/structne_1_1TextureManager_1_1TextureResource.html new file mode 100644 index 000000000..7b2625f90 --- /dev/null +++ b/structne_1_1TextureManager_1_1TextureResource.html @@ -0,0 +1,155 @@ + + + + + + + +Nameless Engine: ne::TextureManager::TextureResource Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::TextureManager::TextureResource Struct Reference
    +
    +
    + + + + + + +

    +Public Attributes

    std::unique_ptr< GpuResourcepTexture
     
    size_t iActiveTextureHandleCount = 0
     
    +

    Detailed Description

    +

    Groups information about a GPU resource that stores a texture.

    +

    Member Data Documentation

    + +

    ◆ iActiveTextureHandleCount

    + +
    +
    + + + + +
    size_t ne::TextureManager::TextureResource::iActiveTextureHandleCount = 0
    +
    +

    Describes how much active texture handles there are that point to pTexture.

    + +
    +
    + +

    ◆ pTexture

    + +
    +
    + + + + +
    std::unique_ptr<GpuResource> ne::TextureManager::TextureResource::pTexture
    +
    +

    Texture stored in GPU memory.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1TextureManager_1_1TextureResource.js b/structne_1_1TextureManager_1_1TextureResource.js new file mode 100644 index 000000000..577f2b710 --- /dev/null +++ b/structne_1_1TextureManager_1_1TextureResource.js @@ -0,0 +1,5 @@ +var structne_1_1TextureManager_1_1TextureResource = +[ + [ "iActiveTextureHandleCount", "structne_1_1TextureManager_1_1TextureResource.html#ac4681d9855d66034e08ff75058fb4eb9", null ], + [ "pTexture", "structne_1_1TextureManager_1_1TextureResource.html#a52185ca860f11301b0d67e357b0c191a", null ] +]; \ No newline at end of file diff --git a/structne_1_1VulkanFrameResource-members.html b/structne_1_1VulkanFrameResource-members.html new file mode 100644 index 000000000..619e3b182 --- /dev/null +++ b/structne_1_1VulkanFrameResource-members.html @@ -0,0 +1,117 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::VulkanFrameResource Member List
    +
    +
    + +

    This is the complete list of members for ne::VulkanFrameResource, including all inherited members.

    + + + + + + + + +
    initialize(Renderer *pRenderer) overridene::VulkanFrameResourceprivatevirtual
    pCommandBufferne::VulkanFrameResource
    pFencene::VulkanFrameResource
    pFrameConstantBufferne::FrameResource
    pRendererne::VulkanFrameResourceprivate
    ~FrameResource()=default (defined in ne::FrameResource)ne::FrameResourcevirtual
    ~VulkanFrameResource() override (defined in ne::VulkanFrameResource)ne::VulkanFrameResourcevirtual
    +
    + + + + diff --git a/structne_1_1VulkanFrameResource.html b/structne_1_1VulkanFrameResource.html new file mode 100644 index 000000000..bc149904b --- /dev/null +++ b/structne_1_1VulkanFrameResource.html @@ -0,0 +1,242 @@ + + + + + + + +Nameless Engine: ne::VulkanFrameResource Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::VulkanFrameResource Struct Reference
    +
    +
    + +

    #include <VulkanFrameResource.h>

    +
    +Inheritance diagram for ne::VulkanFrameResource:
    +
    +
    + + +ne::FrameResource + +
    + + + + + + + + + +

    +Public Attributes

    VkCommandBuffer pCommandBuffer = nullptr
     
    VkFence pFence = nullptr
     
    - Public Attributes inherited from ne::FrameResource
    std::unique_ptr< UploadBufferpFrameConstantBuffer
     
    + + + +

    +Private Member Functions

    virtual std::optional< Errorinitialize (Renderer *pRenderer) override
     
    + + + +

    +Private Attributes

    RendererpRenderer = nullptr
     
    +

    Detailed Description

    +

    Stores objects used by one frame.

    +

    Member Function Documentation

    + +

    ◆ initialize()

    + +
    +
    + + + + + +
    + + + + + + + + +
    std::optional< Error > ne::VulkanFrameResource::initialize (RendererpRenderer)
    +
    +overrideprivatevirtual
    +
    +

    Called by frame resource manager after a frame resource was constructed to initialize its fields.

    +
    Parameters
    + + +
    pRendererUsed renderer.
    +
    +
    +
    Returns
    Error if something went wrong.
    + +

    Implements ne::FrameResource.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ pCommandBuffer

    + +
    +
    + + + + +
    VkCommandBuffer ne::VulkanFrameResource::pCommandBuffer = nullptr
    +
    +

    Stores recorded commands.

    + +
    +
    + +

    ◆ pFence

    + +
    +
    + + + + +
    VkFence ne::VulkanFrameResource::pFence = nullptr
    +
    +

    Signaled when submitted commands were finished executing.

    + +
    +
    + +

    ◆ pRenderer

    + +
    +
    + + + + + +
    + + + + +
    Renderer* ne::VulkanFrameResource::pRenderer = nullptr
    +
    +private
    +
    +

    Renderer that was passed to initialize.

    + +
    +
    +
    The documentation for this struct was generated from the following files:
      +
    • src/engine_lib/private/render/vulkan/resource/VulkanFrameResource.h
    • +
    • src/engine_lib/private/render/vulkan/resource/VulkanFrameResource.cpp
    • +
    +
    +
    + + + + diff --git a/structne_1_1VulkanFrameResource.js b/structne_1_1VulkanFrameResource.js new file mode 100644 index 000000000..fcb7274c4 --- /dev/null +++ b/structne_1_1VulkanFrameResource.js @@ -0,0 +1,7 @@ +var structne_1_1VulkanFrameResource = +[ + [ "initialize", "structne_1_1VulkanFrameResource.html#a2543cc63f995ab8e6e30ca4252983c34", null ], + [ "pCommandBuffer", "structne_1_1VulkanFrameResource.html#a053fec88b3598fb3b8492f4f23abeed2", null ], + [ "pFence", "structne_1_1VulkanFrameResource.html#a098ad12698b8ef1010615d6c557f30e7", null ], + [ "pRenderer", "structne_1_1VulkanFrameResource.html#a02dbf9cc5aaee5d49825c369d57d9877", null ] +]; \ No newline at end of file diff --git a/structne_1_1VulkanFrameResource.png b/structne_1_1VulkanFrameResource.png new file mode 100644 index 0000000000000000000000000000000000000000..d2cc37e07f15c35ec2570486f44c22c341c310a1 GIT binary patch literal 677 zcmeAS@N?(olHy`uVBq!ia0vp^3xPO*gBeJ=IX<-jQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#NrgJY5_^Dj46+y_okzfyY(f z{L+hm|Hbpm6cU`(j5qg%tXg_1aB|WdVd?LZx3}d6H}|Tjr%6sq=}GmNWVp}N=e+!+ znzQVRDnAwDr6)a+o@cmSGfr~ZUa6&Oiy!W*So7qzSS0Uhx7kYrx9|R=@^Yui8GSv^ z+s(0O^sC~`KGh`ue!49_{Liko>G`%k8pU46dz zKOpd|8^s=;_+-7aR{2knW z>n!#^oR!MZv5ALK;g}IigT!e8h9n(lhK`MR1^)E6X)ZM}^_XO0csgJbP=jYzVdjkK zQ3vYE#pb&EO^W;M*r77FpnIXp-iMN({kyIjyqzCuckQ|9mDMg&ZA%aT%bCWvR_t=w zuIZ+)$`)VbIs5wU-Gq$!(M!$-PWu;E_Ik$sHK{)z`tNJ|J88)i&7gHpe{MeAzFRdv zFlo()gp4hEJbydSsY>$}PpOX0eY&wEXT!p?ps<>KERy#w<9puSv-sL-rG2aB|6g)? zU)$p)b4qS*IV}Fn`tbMX8)nZ~t+)MS(f_PhEA!hIPAz^>G&g1Xho?Hz-;{khpB6c3 uS&F1rP*19cr{T1PDo1~af;?(m&+uhdtHdO+dA7g=#o+1c=d#Wzp$Py!bv_3G literal 0 HcmV?d00001 diff --git a/structne_1_1VulkanPipeline_1_1InternalResources-members.html b/structne_1_1VulkanPipeline_1_1InternalResources-members.html new file mode 100644 index 000000000..3a373900e --- /dev/null +++ b/structne_1_1VulkanPipeline_1_1InternalResources-members.html @@ -0,0 +1,119 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structne_1_1VulkanPipeline_1_1InternalResources.html b/structne_1_1VulkanPipeline_1_1InternalResources.html new file mode 100644 index 000000000..7e43bbd75 --- /dev/null +++ b/structne_1_1VulkanPipeline_1_1InternalResources.html @@ -0,0 +1,267 @@ + + + + + + + +Nameless Engine: ne::VulkanPipeline::InternalResources Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::VulkanPipeline::InternalResources Struct Reference
    +
    +
    + +

    #include <VulkanPipeline.h>

    + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    VkPipelineLayout pPipelineLayout = nullptr
     
    VkPipeline pPipeline = nullptr
     
    VkDescriptorSetLayout pDescriptorSetLayout = nullptr
     
    VkDescriptorPool pDescriptorPool = nullptr
     
    std::array< VkDescriptorSet, FrameResourceManager::getFrameResourceCount()> vDescriptorSets
     
    std::unordered_map< std::string, uint32_t, StdStringHash, std::equal_to<> > resourceBindings
     
    std::unordered_map< std::string, std::unique_ptr< ShaderArrayIndexManager > > shaderArrayIndexManagers
     
    bool bIsReadyForUsage = false
     
    +

    Detailed Description

    +

    Stores internal resources.

    +

    Member Data Documentation

    + +

    ◆ bIsReadyForUsage

    + +
    +
    + + + + +
    bool ne::VulkanPipeline::InternalResources::bIsReadyForUsage = false
    +
    +

    Whether resources were created or not.

    + +
    +
    + +

    ◆ pDescriptorPool

    + +
    +
    + + + + +
    VkDescriptorPool ne::VulkanPipeline::InternalResources::pDescriptorPool = nullptr
    +
    +

    Created descriptor pool.

    + +
    +
    + +

    ◆ pDescriptorSetLayout

    + +
    +
    + + + + +
    VkDescriptorSetLayout ne::VulkanPipeline::InternalResources::pDescriptorSetLayout = nullptr
    +
    +

    Created descriptor set layout.

    + +
    +
    + +

    ◆ pPipeline

    + +
    +
    + + + + +
    VkPipeline ne::VulkanPipeline::InternalResources::pPipeline = nullptr
    +
    +

    Created pipeline.

    + +
    +
    + +

    ◆ pPipelineLayout

    + +
    +
    + + + + +
    VkPipelineLayout ne::VulkanPipeline::InternalResources::pPipelineLayout = nullptr
    +
    +

    Created pipeline layout.

    + +
    +
    + +

    ◆ resourceBindings

    + +
    +
    + + + + +
    std::unordered_map<std::string, uint32_t, StdStringHash, std::equal_to<> > ne::VulkanPipeline::InternalResources::resourceBindings
    +
    +

    Map of pairs "shader resource name" (from GLSL code) - "layout binding index".

    +
    Remarks
    Binding index in the map reference descriptor sets from vDescriptorSets.
    +
    +Generally used to bind/update data of some GLSL resource to a specific descriptor in a descriptor set.
    + +
    +
    + +

    ◆ shaderArrayIndexManagers

    + +
    +
    + + + + +
    std::unordered_map<std::string, std::unique_ptr<ShaderArrayIndexManager> > ne::VulkanPipeline::InternalResources::shaderArrayIndexManagers
    +
    +

    Stores pairs of "shader resource name" - "shader array index manager".

    +
    Warning
    Do not clear this map (and thus destroy index managers) when releasing internal resources to restore them later because there might be shader resources that reference indices of some index manager and if the index manager will be destroyed it will show an error that there are some active (used) indices that reference the index manager.
    +
    Remarks
    Refers to shader arrays from GLSL.
    +
    +Since pipeline does not care which resources are shader arrays and which are not, shader resources that reference shader arrays must create new entries in this map when no index manager for a requested shader resource is found. All descriptors for a shader array are allocated per pipeline so shader resources that reference a shader array in some pipeline can have just one index manager per shader array.
    + +
    +
    + +

    ◆ vDescriptorSets

    + +
    +
    + + + + +
    std::array<VkDescriptorSet, FrameResourceManager::getFrameResourceCount()> ne::VulkanPipeline::InternalResources::vDescriptorSets
    +
    +

    Created descriptor set per each frame resource.

    +
    Remarks
    Initial motivation for 1 set per frame resource is for shader resources with CPU write access. For example we have 1 uniform buffer with frame constant data per frame resource, so if we have 3 frame resources we have 3 buffers with frame data and each descriptor set will point to a different buffer. Just like with other CPU write shader resources when we want to update such a resource we mark it as "needs update" but we don't update it immediately because it may be currently used by the GPU and so in order to not wait for the GPU and not halt the rendering we update all shader resources with CPU access marked as "needs update" in the beginning of the draw function and we only update shader resources of the current (next) frame resource (that is no longer being used). This way we don't need to halt the rendering when we want to update some shader resource with CPU write access, thus we have 1 descriptor set per frame resource.
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1VulkanPipeline_1_1InternalResources.js b/structne_1_1VulkanPipeline_1_1InternalResources.js new file mode 100644 index 000000000..0db7d59d9 --- /dev/null +++ b/structne_1_1VulkanPipeline_1_1InternalResources.js @@ -0,0 +1,11 @@ +var structne_1_1VulkanPipeline_1_1InternalResources = +[ + [ "bIsReadyForUsage", "structne_1_1VulkanPipeline_1_1InternalResources.html#a162d861ac24ab5dedf0b3edb117343ce", null ], + [ "pDescriptorPool", "structne_1_1VulkanPipeline_1_1InternalResources.html#a701e0756d6b92ddbf703e4d56afa4cb8", null ], + [ "pDescriptorSetLayout", "structne_1_1VulkanPipeline_1_1InternalResources.html#a78d1b0352eb91654c6fcf1699f129eb1", null ], + [ "pPipeline", "structne_1_1VulkanPipeline_1_1InternalResources.html#aa2becfc19cef78a7545a9176999a8f8c", null ], + [ "pPipelineLayout", "structne_1_1VulkanPipeline_1_1InternalResources.html#a61a191e7526bc94fb29abf33a511d484", null ], + [ "resourceBindings", "structne_1_1VulkanPipeline_1_1InternalResources.html#a91fcec65ace4ec83602d091f43905424", null ], + [ "shaderArrayIndexManagers", "structne_1_1VulkanPipeline_1_1InternalResources.html#aa192c6e145a905cc4cb3e0d955cda7ca", null ], + [ "vDescriptorSets", "structne_1_1VulkanPipeline_1_1InternalResources.html#a04e4d7892998da5f810318be412ea080", null ] +]; \ No newline at end of file diff --git a/structne_1_1VulkanRenderer_1_1QueueFamilyIndices-members.html b/structne_1_1VulkanRenderer_1_1QueueFamilyIndices-members.html new file mode 100644 index 000000000..f5effe728 --- /dev/null +++ b/structne_1_1VulkanRenderer_1_1QueueFamilyIndices-members.html @@ -0,0 +1,114 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::VulkanRenderer::QueueFamilyIndices Member List
    +
    + +
    + + + + diff --git a/structne_1_1VulkanRenderer_1_1QueueFamilyIndices.html b/structne_1_1VulkanRenderer_1_1QueueFamilyIndices.html new file mode 100644 index 000000000..2662c869c --- /dev/null +++ b/structne_1_1VulkanRenderer_1_1QueueFamilyIndices.html @@ -0,0 +1,189 @@ + + + + + + + +Nameless Engine: ne::VulkanRenderer::QueueFamilyIndices Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::VulkanRenderer::QueueFamilyIndices Struct Reference
    +
    +
    + + + + +

    +Public Member Functions

    bool isComplete () const
     
    + + + + + +

    +Public Attributes

    std::optional< uint32_t > iGraphicsFamilyIndex
     
    std::optional< uint32_t > iPresentFamilyIndex
     
    +

    Detailed Description

    +

    Stores indices of various types of queue families in the array returned by vkGetPhysicalDeviceQueueFamilyProperties.

    +

    Member Function Documentation

    + +

    ◆ isComplete()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool ne::VulkanRenderer::QueueFamilyIndices::isComplete () const
    +
    +inline
    +
    +

    Tells if all graphics family indices are set or not.

    +
    Returns
    true if all set, false otherwise.
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ iGraphicsFamilyIndex

    + +
    +
    + + + + +
    std::optional<uint32_t> ne::VulkanRenderer::QueueFamilyIndices::iGraphicsFamilyIndex
    +
    +

    Index of the graphics queue family, empty if not available.

    + +
    +
    + +

    ◆ iPresentFamilyIndex

    + +
    +
    + + + + +
    std::optional<uint32_t> ne::VulkanRenderer::QueueFamilyIndices::iPresentFamilyIndex
    +
    +

    Index of the queue family that supports window surface presentation, empty if not available.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1VulkanRenderer_1_1QueueFamilyIndices.js b/structne_1_1VulkanRenderer_1_1QueueFamilyIndices.js new file mode 100644 index 000000000..17e1a8b14 --- /dev/null +++ b/structne_1_1VulkanRenderer_1_1QueueFamilyIndices.js @@ -0,0 +1,6 @@ +var structne_1_1VulkanRenderer_1_1QueueFamilyIndices = +[ + [ "isComplete", "structne_1_1VulkanRenderer_1_1QueueFamilyIndices.html#ab46d1ea43a48074394171f6e2385d4a1", null ], + [ "iGraphicsFamilyIndex", "structne_1_1VulkanRenderer_1_1QueueFamilyIndices.html#affc2afc694d338023ae98c8e2371b2c3", null ], + [ "iPresentFamilyIndex", "structne_1_1VulkanRenderer_1_1QueueFamilyIndices.html#a4bccb26bb18481a332a2aa8ceab2f0e9", null ] +]; \ No newline at end of file diff --git a/structne_1_1VulkanRenderer_1_1SwapChainImageSemaphores-members.html b/structne_1_1VulkanRenderer_1_1SwapChainImageSemaphores-members.html new file mode 100644 index 000000000..2e46bc8e1 --- /dev/null +++ b/structne_1_1VulkanRenderer_1_1SwapChainImageSemaphores-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::VulkanRenderer::SwapChainImageSemaphores Member List
    +
    + +
    + + + + diff --git a/structne_1_1VulkanRenderer_1_1SwapChainImageSemaphores.html b/structne_1_1VulkanRenderer_1_1SwapChainImageSemaphores.html new file mode 100644 index 000000000..58506a5bd --- /dev/null +++ b/structne_1_1VulkanRenderer_1_1SwapChainImageSemaphores.html @@ -0,0 +1,174 @@ + + + + + + + +Nameless Engine: ne::VulkanRenderer::SwapChainImageSemaphores Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::VulkanRenderer::SwapChainImageSemaphores Struct Reference
    +
    +
    + + + + + + + + +

    +Public Attributes

    VkSemaphore pAcquireImageSemaphore = nullptr
     
    VkSemaphore pQueueSubmitSemaphore = nullptr
     
    size_t iUsedFrameResourceIndex = 0
     
    +

    Detailed Description

    +

    Groups semaphores related to swap chain images.

    +

    Member Data Documentation

    + +

    ◆ iUsedFrameResourceIndex

    + +
    +
    + + + + +
    size_t ne::VulkanRenderer::SwapChainImageSemaphores::iUsedFrameResourceIndex = 0
    +
    +

    Index of the frame resource to wait for its fence before using vkAcquireNextImageKHR to guarantee that pAcquireImageSemaphore is in the unsignaled state.

    + +
    +
    + +

    ◆ pAcquireImageSemaphore

    + +
    +
    + + + + +
    VkSemaphore ne::VulkanRenderer::SwapChainImageSemaphores::pAcquireImageSemaphore = nullptr
    +
    +

    Array of semaphores that are passed to vkAcquireNextImageKHR.

    +
    Remarks
    Size of this array is equal to the number of swap chain images.
    + +
    +
    + +

    ◆ pQueueSubmitSemaphore

    + +
    +
    + + + + +
    VkSemaphore ne::VulkanRenderer::SwapChainImageSemaphores::pQueueSubmitSemaphore = nullptr
    +
    +

    Array of semaphores that are passed to vkQueueSubmit.

    +
    Remarks
    Size of this array is equal to the number of swap chain images.
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1VulkanRenderer_1_1SwapChainImageSemaphores.js b/structne_1_1VulkanRenderer_1_1SwapChainImageSemaphores.js new file mode 100644 index 000000000..c7fc06cb4 --- /dev/null +++ b/structne_1_1VulkanRenderer_1_1SwapChainImageSemaphores.js @@ -0,0 +1,6 @@ +var structne_1_1VulkanRenderer_1_1SwapChainImageSemaphores = +[ + [ "iUsedFrameResourceIndex", "structne_1_1VulkanRenderer_1_1SwapChainImageSemaphores.html#a4e9bc205927d11f458f3a47b7c2a2b8a", null ], + [ "pAcquireImageSemaphore", "structne_1_1VulkanRenderer_1_1SwapChainImageSemaphores.html#aaa3b3fee4fdd58a5c7dc3c9f2ddfe6f3", null ], + [ "pQueueSubmitSemaphore", "structne_1_1VulkanRenderer_1_1SwapChainImageSemaphores.html#a3c0607fdeef1d41ddab66e46271b5f14", null ] +]; \ No newline at end of file diff --git a/structne_1_1VulkanRenderer_1_1SwapChainSupportDetails-members.html b/structne_1_1VulkanRenderer_1_1SwapChainSupportDetails-members.html new file mode 100644 index 000000000..c52fb0671 --- /dev/null +++ b/structne_1_1VulkanRenderer_1_1SwapChainSupportDetails-members.html @@ -0,0 +1,113 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::VulkanRenderer::SwapChainSupportDetails Member List
    +
    + +
    + + + + diff --git a/structne_1_1VulkanRenderer_1_1SwapChainSupportDetails.html b/structne_1_1VulkanRenderer_1_1SwapChainSupportDetails.html new file mode 100644 index 000000000..3a0e029f9 --- /dev/null +++ b/structne_1_1VulkanRenderer_1_1SwapChainSupportDetails.html @@ -0,0 +1,172 @@ + + + + + + + +Nameless Engine: ne::VulkanRenderer::SwapChainSupportDetails Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::VulkanRenderer::SwapChainSupportDetails Struct Reference
    +
    +
    + + + + + + + + +

    +Public Attributes

    VkSurfaceCapabilitiesKHR capabilities
     
    std::vector< VkSurfaceFormatKHR > vSupportedFormats
     
    std::vector< VkPresentModeKHR > vSupportedPresentModes
     
    +

    Detailed Description

    +

    Groups information about swap chain capabilities.

    +

    Member Data Documentation

    + +

    ◆ capabilities

    + +
    +
    + + + + +
    VkSurfaceCapabilitiesKHR ne::VulkanRenderer::SwapChainSupportDetails::capabilities
    +
    +

    Capabilities.

    + +
    +
    + +

    ◆ vSupportedFormats

    + +
    +
    + + + + +
    std::vector<VkSurfaceFormatKHR> ne::VulkanRenderer::SwapChainSupportDetails::vSupportedFormats
    +
    +

    Supported surface formats.

    + +
    +
    + +

    ◆ vSupportedPresentModes

    + +
    +
    + + + + +
    std::vector<VkPresentModeKHR> ne::VulkanRenderer::SwapChainSupportDetails::vSupportedPresentModes
    +
    +

    Supported presentation modes.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1VulkanRenderer_1_1SwapChainSupportDetails.js b/structne_1_1VulkanRenderer_1_1SwapChainSupportDetails.js new file mode 100644 index 000000000..93528591a --- /dev/null +++ b/structne_1_1VulkanRenderer_1_1SwapChainSupportDetails.js @@ -0,0 +1,6 @@ +var structne_1_1VulkanRenderer_1_1SwapChainSupportDetails = +[ + [ "capabilities", "structne_1_1VulkanRenderer_1_1SwapChainSupportDetails.html#a8c31857275b81bfed4e7a43d8fdec7d5", null ], + [ "vSupportedFormats", "structne_1_1VulkanRenderer_1_1SwapChainSupportDetails.html#a298c26912cb0a9f8c6450157db2df820", null ], + [ "vSupportedPresentModes", "structne_1_1VulkanRenderer_1_1SwapChainSupportDetails.html#a01534ea489313997fdb3aa7150469bd0", null ] +]; \ No newline at end of file diff --git a/structne_1_1VulkanShadowMapArrayIndexManager_1_1InternalData-members.html b/structne_1_1VulkanShadowMapArrayIndexManager_1_1InternalData-members.html new file mode 100644 index 000000000..64687e1db --- /dev/null +++ b/structne_1_1VulkanShadowMapArrayIndexManager_1_1InternalData-members.html @@ -0,0 +1,112 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ne::VulkanShadowMapArrayIndexManager::InternalData Member List
    +
    + +
    + + + + diff --git a/structne_1_1VulkanShadowMapArrayIndexManager_1_1InternalData.html b/structne_1_1VulkanShadowMapArrayIndexManager_1_1InternalData.html new file mode 100644 index 000000000..16b282dbe --- /dev/null +++ b/structne_1_1VulkanShadowMapArrayIndexManager_1_1InternalData.html @@ -0,0 +1,156 @@ + + + + + + + +Nameless Engine: ne::VulkanShadowMapArrayIndexManager::InternalData Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::VulkanShadowMapArrayIndexManager::InternalData Struct Reference
    +
    +
    + + + + + + +

    +Public Attributes

    std::unique_ptr< ShaderArrayIndexManagerpIndexManager
     
    std::unordered_map< ShadowMapHandle *, std::unique_ptr< ShaderArrayIndex > > registeredShadowMaps
     
    +

    Detailed Description

    +

    Groups mutex guarded data.

    +

    Member Data Documentation

    + +

    ◆ pIndexManager

    + +
    +
    + + + + +
    std::unique_ptr<ShaderArrayIndexManager> ne::VulkanShadowMapArrayIndexManager::InternalData::pIndexManager
    +
    +

    Actual index manager.

    +
    Remarks
    We don't use index managers from specific pipelines because in the case of shadow maps all index managers related to shadow map shader resources will (and should) store the same indices, so in order to not duplicate this work (and in order to not store N unique ptr array index objects where N is the number of pipelines for just one shadow map) we just use one index manager located here.
    + +
    +
    + +

    ◆ registeredShadowMaps

    + +
    +
    + + + + +
    std::unordered_map<ShadowMapHandle*, std::unique_ptr<ShaderArrayIndex> > ne::VulkanShadowMapArrayIndexManager::InternalData::registeredShadowMaps
    +
    +

    Pairs of "shadow map" - "index that this shadow map takes".

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1VulkanShadowMapArrayIndexManager_1_1InternalData.js b/structne_1_1VulkanShadowMapArrayIndexManager_1_1InternalData.js new file mode 100644 index 000000000..cca17e6cf --- /dev/null +++ b/structne_1_1VulkanShadowMapArrayIndexManager_1_1InternalData.js @@ -0,0 +1,5 @@ +var structne_1_1VulkanShadowMapArrayIndexManager_1_1InternalData = +[ + [ "pIndexManager", "structne_1_1VulkanShadowMapArrayIndexManager_1_1InternalData.html#a38bc16f1e597d302c6d5abd47736d4e0", null ], + [ "registeredShadowMaps", "structne_1_1VulkanShadowMapArrayIndexManager_1_1InternalData.html#acbc74b327ae4de3da30f0942404292bf", null ] +]; \ No newline at end of file diff --git a/structne_1_1WindowBuilderParameters-members.html b/structne_1_1WindowBuilderParameters-members.html new file mode 100644 index 000000000..e4f0a6d34 --- /dev/null +++ b/structne_1_1WindowBuilderParameters-members.html @@ -0,0 +1,118 @@ + + + + + + + +Nameless Engine: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structne_1_1WindowBuilderParameters.html b/structne_1_1WindowBuilderParameters.html new file mode 100644 index 000000000..cc89e1ed7 --- /dev/null +++ b/structne_1_1WindowBuilderParameters.html @@ -0,0 +1,259 @@ + + + + + + + +Nameless Engine: ne::WindowBuilderParameters Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Nameless Engine +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ne::WindowBuilderParameters Struct Reference
    +
    +
    + +

    #include <Window.h>

    + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    int iWindowWidth = 800
     
    int iWindowHeight = 600
     
    std::string_view sWindowTitle
     
    std::filesystem::path pathToWindowIcon
     
    bool bShowWindow = true
     
    bool bMaximized = false
     
    bool bFullscreen = false
     
    bool bIsSplashScreen = false
     
    +

    Detailed Description

    +

    Parameters needed to build a window.

    +

    Member Data Documentation

    + +

    ◆ bFullscreen

    + +
    +
    + + + + +
    bool ne::WindowBuilderParameters::bFullscreen = false
    +
    +

    Whether to show window in fullscreen mode.

    + +
    +
    + +

    ◆ bIsSplashScreen

    + +
    +
    + + + + +
    bool ne::WindowBuilderParameters::bIsSplashScreen = false
    +
    +

    Whether the window should have window decorations.

    + +
    +
    + +

    ◆ bMaximized

    + +
    +
    + + + + +
    bool ne::WindowBuilderParameters::bMaximized = false
    +
    +

    Whether the window should be maximized after creation or not.

    + +
    +
    + +

    ◆ bShowWindow

    + +
    +
    + + + + +
    bool ne::WindowBuilderParameters::bShowWindow = true
    +
    +

    Whether to show window after it was created or not.

    + +
    +
    + +

    ◆ iWindowHeight

    + +
    +
    + + + + +
    int ne::WindowBuilderParameters::iWindowHeight = 600
    +
    +

    Height of a window.

    + +
    +
    + +

    ◆ iWindowWidth

    + +
    +
    + + + + +
    int ne::WindowBuilderParameters::iWindowWidth = 800
    +
    +

    Width of a window.

    + +
    +
    + +

    ◆ pathToWindowIcon

    + +
    +
    + + + + +
    std::filesystem::path ne::WindowBuilderParameters::pathToWindowIcon
    +
    +

    Icon of a window.

    + +
    +
    + +

    ◆ sWindowTitle

    + +
    +
    + + + + +
    std::string_view ne::WindowBuilderParameters::sWindowTitle
    +
    +

    Title of a window.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structne_1_1WindowBuilderParameters.js b/structne_1_1WindowBuilderParameters.js new file mode 100644 index 000000000..7507d71fc --- /dev/null +++ b/structne_1_1WindowBuilderParameters.js @@ -0,0 +1,11 @@ +var structne_1_1WindowBuilderParameters = +[ + [ "bFullscreen", "structne_1_1WindowBuilderParameters.html#aef372fd512ca2d0c1add2b56c6d344a9", null ], + [ "bIsSplashScreen", "structne_1_1WindowBuilderParameters.html#a8a10d3198327008b9fdceec2d438c834", null ], + [ "bMaximized", "structne_1_1WindowBuilderParameters.html#ad5f3cb2d73804c1b420d1e165e11f914", null ], + [ "bShowWindow", "structne_1_1WindowBuilderParameters.html#a146feb91568f5df0d2e1b5f1396a0ec9", null ], + [ "iWindowHeight", "structne_1_1WindowBuilderParameters.html#a9d00cd85cb9bc7efc459b53ab514deba", null ], + [ "iWindowWidth", "structne_1_1WindowBuilderParameters.html#a6944bee601f7f3e31ddd5eb1edecf232", null ], + [ "pathToWindowIcon", "structne_1_1WindowBuilderParameters.html#a55f21e01c3ce4569fcc765190b90d76d", null ], + [ "sWindowTitle", "structne_1_1WindowBuilderParameters.html#a9487249ac3e59dc7f02c5456d17495d4", null ] +]; \ No newline at end of file diff --git a/sync_off.png b/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/sync_on.png b/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/tab_a.png b/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/tab_ad.png b/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/tab_s.png b/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/tab_sd.png b/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/tabs.css b/tabs.css new file mode 100644 index 000000000..71c8a4704 --- /dev/null +++ b/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file