improved font rendering

This commit is contained in:
2026-05-26 01:29:26 +03:00
parent f127ac3801
commit 5fdb17b773
21 changed files with 217 additions and 158 deletions

View File

@@ -49,6 +49,8 @@ enum EDependencyMode
DEPENDENCY_MODE_SHADER_BUFFER_READ,
DEPENDENCY_MODE_SHADER_IMAGE_WRITE,
DEPENDENCY_MODE_SHADER_BUFFER_WRITE,
DEPENDENCY_MODE_SHADER_BUFFER_READ_WRITE,
DEPENDENCY_MODE_SHADER_IMAGE_READ_WRITE,
DEPENDENCY_MODE_SHADER_ACCELERATION_STRUCTURE,
DEPENDENCY_MODE_DRAWCALL_VERTEX_BUFFER,
@@ -63,6 +65,9 @@ enum EDependencyMode
DEPENDENCY_MODE_IMAGE_DESTINATION,
DEPENDENCY_MODE_BUFFER_DESTINATION,
DEPENDENCY_MODE_IMAGE_RESOLVE_SOURCE,
DEPENDENCY_MODE_IMAGE_RESOLVE_DESTINATION,
DEPENDENCY_MODE_BLIT_IMAGE_SOURCE,
DEPENDENCY_MODE_BLIT_IMAGE_DESTINATION,
@@ -97,7 +102,7 @@ struct VulkanCommandParameter_t
};
};
abstract_class CVkCommand
class CVkCommand
{
public:
virtual void Execute( VkCommandBuffer hCommandBuffer, int iCurrentFrame ) = 0;
@@ -266,6 +271,12 @@ void CVk##name##PipelineLibrary::Build() \
vkCreateGraphicsPipelines(m_hDevice, NULL, 1, &pipeline, NULL, &m_hPipeline); \
}
struct VkOutputImageConfig_t
{
VkFormat m_eFormat;
bool m_bIsBlendingEnabled;
};
class CVkShader : public IShader
{
public:
@@ -273,7 +284,7 @@ public:
virtual void AddLayout( int iIndex, int iStride ) override;
virtual void AddAttribute( int iBufferIndex, int iLocation, EVertexFormat eFormat, int iOffset ) override;
virtual void SetTopology( ETopologyMode eTopology ) override;
virtual void AddOutputImage( int iImageIndex, EImageFormat eFormat ) override;
virtual void AddOutputImage( int iImageIndex, EImageFormat eFormat, bool bBlendingEnabled ) override;
virtual void SetDepthImage( EImageFormat eFormat ) override;
virtual void SetMultisampling( EMultisampleType eFormat ) override;
virtual void DisablePixelShader( bool bDisable ) override;
@@ -289,7 +300,7 @@ public:
private:
CUtlVector<VkVertexInputBindingDescription> m_layouts;
CUtlVector<VkVertexInputAttributeDescription> m_attributes;
CUtlVector<VkFormat> m_eFormats;
CUtlVector<VkOutputImageConfig_t> m_formats;
EMultisampleType m_eMultiSampling;
VkFormat m_eDepthFormat;
bool m_bIsFragmentEnabled;
@@ -389,7 +400,6 @@ public:
CVkShader *m_pVkShader;
CUtlVector<VkDescriptorSet> m_hSets;
ITextureArray *m_pTextureArray;
private:
VkDescriptorPool m_hPool;
CUtlVector<VkWriteDescriptorSet> m_writes = {};
@@ -442,6 +452,13 @@ struct VulkanRenderOutput_t {
EStoreMode m_eStoreMode;
};
struct VkRenderBarrier_t
{
IRenderingObject *pObject;
bool m_bIsRead;
bool m_bIsWrite;
};
class CVkRenderCommandList: public IRenderCommandList
{
public:
@@ -472,6 +489,8 @@ public:
virtual void StartRecording() override;
virtual void EndRecording() override;
virtual void Barrier( IRenderingObject *pObject, bool bIsRead, bool bIsWrite ) override;
void Submit();
IVkCommandBufferManager *m_pCommandBufferManager;
@@ -494,6 +513,7 @@ private:
uint32_t m_uHeight;
CUtlVector<IVkCommandBuffer*> m_pCommandBuffers = {};
CUtlVector<IVkCommandBuffer*> m_pScheduledDestroyPostRaster = {};
CUtlVector<VkRenderBarrier_t> m_barriers = {};
};