depth, normals i guess
This commit is contained in:
@@ -125,7 +125,6 @@ void CCompiledShaderManager::ReadFromFile( CCompiledShader *pShader, const char
|
||||
}
|
||||
pFile = filesystem->Open(szFile, FILEMODE_READ);
|
||||
uint32_t u = filesystem->Read(pFile, &stHeader, sizeof(ShaderHeader_t));
|
||||
V_printf("Read %s %s\n", szFile, Plat_GetWorkingDir());
|
||||
|
||||
objects.Resize(stHeader.m_nNumShaders);
|
||||
lumps.Resize(stHeader.m_nNumLumps);
|
||||
|
||||
@@ -324,9 +324,18 @@ void CVkCommandBuffer::TryBarrier( int iCurrent, int iCurrentBuffer )
|
||||
imageMemoryBarrier.dstAccessMask = VulkanGetAccessFlags(barrier.m_eNewDependency);
|
||||
if (barrier.m_eOldDependency == DEPENDENCY_MODE_NEXT_STAGE)
|
||||
{
|
||||
imageMemoryBarrier.oldLayout = pImage->m_ePreferredLayout;
|
||||
imageMemoryBarrier.srcStageMask = VulkanGetStageFlags(DEPENDENCY_MODE_NEXT_STAGE);
|
||||
imageMemoryBarrier.srcAccessMask = VulkanGetAccessFlags(DEPENDENCY_MODE_NEXT_STAGE);
|
||||
if (pImage->m_eLastUsage == DEPENDENCY_MODE_JUST_CREATED)
|
||||
{
|
||||
imageMemoryBarrier.oldLayout = VulkanGetImageLayout(DEPENDENCY_MODE_JUST_CREATED);
|
||||
imageMemoryBarrier.srcStageMask = VulkanGetStageFlags(DEPENDENCY_MODE_JUST_CREATED);
|
||||
imageMemoryBarrier.srcAccessMask = VulkanGetAccessFlags(DEPENDENCY_MODE_JUST_CREATED);
|
||||
}
|
||||
else
|
||||
{
|
||||
imageMemoryBarrier.oldLayout = pImage->m_ePreferredLayout;
|
||||
imageMemoryBarrier.srcStageMask = VulkanGetStageFlags(DEPENDENCY_MODE_NEXT_STAGE);
|
||||
imageMemoryBarrier.srcAccessMask = VulkanGetAccessFlags(DEPENDENCY_MODE_NEXT_STAGE);
|
||||
}
|
||||
} else {
|
||||
imageMemoryBarrier.oldLayout = VulkanGetImageLayout(barrier.m_eOldDependency);
|
||||
imageMemoryBarrier.srcStageMask = VulkanGetStageFlags(barrier.m_eOldDependency);
|
||||
|
||||
@@ -120,6 +120,21 @@ VkFormat CVkImage::GetImageFormat( enum EImageFormat eImageFormat )
|
||||
}
|
||||
}
|
||||
|
||||
VkSampleCountFlagBits CVkImage::GetMultisampling( enum EMultisampleType eImageFormat )
|
||||
{
|
||||
switch ( eImageFormat )
|
||||
{
|
||||
case MULTISAMPLE_TYPE_1_SAMPLES:
|
||||
return VK_SAMPLE_COUNT_1_BIT;
|
||||
case MULTISAMPLE_TYPE_2_SAMPLES:
|
||||
return VK_SAMPLE_COUNT_2_BIT;
|
||||
case MULTISAMPLE_TYPE_4_SAMPLES:
|
||||
return VK_SAMPLE_COUNT_4_BIT;
|
||||
case MULTISAMPLE_TYPE_8_SAMPLES:
|
||||
return VK_SAMPLE_COUNT_8_BIT;
|
||||
}
|
||||
}
|
||||
|
||||
void CVkImage::CreateImage( uint32_t nWidth, uint32_t nHeight, EImageFormat eFormat, EMultisampleType eMultisampleType, VkImageUsageFlagBits eUsage )
|
||||
{
|
||||
VkImageCreateInfo stCreateInfo = {};
|
||||
@@ -135,7 +150,7 @@ void CVkImage::CreateImage( uint32_t nWidth, uint32_t nHeight, EImageFormat eFor
|
||||
stCreateInfo.tiling = VK_IMAGE_TILING_OPTIMAL;
|
||||
stCreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
||||
stCreateInfo.format = GetImageFormat(eFormat);
|
||||
stCreateInfo.samples = VK_SAMPLE_COUNT_1_BIT;
|
||||
stCreateInfo.samples = GetMultisampling(eMultisampleType);
|
||||
|
||||
stAlloc.usage = VMA_MEMORY_USAGE_AUTO;
|
||||
|
||||
|
||||
@@ -39,6 +39,10 @@ void CVkShader::SetDepthImage( EImageFormat eFormat )
|
||||
{
|
||||
m_eDepthFormat = CVkImage::GetImageFormat(eFormat);
|
||||
}
|
||||
void CVkShader::SetMultisampling( EMultisampleType eFormat )
|
||||
{
|
||||
m_eMultiSampling = eFormat;
|
||||
}
|
||||
void CVkShader::DisablePixelShader( bool bDisable )
|
||||
{
|
||||
|
||||
@@ -143,7 +147,8 @@ void CVkShader::Build()
|
||||
viewportState.sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO;
|
||||
|
||||
msaa.sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO;
|
||||
msaa.rasterizationSamples = VK_SAMPLE_COUNT_1_BIT;
|
||||
msaa.rasterizationSamples = CVkImage::GetMultisampling(m_eMultiSampling);
|
||||
|
||||
|
||||
render.sType = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO;
|
||||
render.colorAttachmentCount = m_eFormats.GetSize();
|
||||
|
||||
@@ -183,6 +183,7 @@ public:
|
||||
|
||||
static VkImageViewType GetImageViewType( enum EImageType eImageType );
|
||||
static VkFormat GetImageFormat( enum EImageFormat eImageFormat );
|
||||
static VkSampleCountFlagBits GetMultisampling( enum EMultisampleType eImageFormat );
|
||||
|
||||
uint32_t m_nWidth;
|
||||
uint32_t m_nHeight;
|
||||
@@ -265,6 +266,7 @@ public:
|
||||
virtual void SetTopology( ETopologyMode eTopology ) override;
|
||||
virtual void AddOutputImage( int iImageIndex, EImageFormat eFormat ) override;
|
||||
virtual void SetDepthImage( EImageFormat eFormat ) override;
|
||||
virtual void SetMultisampling( EMultisampleType eFormat ) override;
|
||||
virtual void DisablePixelShader( bool bDisable) override;
|
||||
virtual void Build() override;
|
||||
|
||||
@@ -279,6 +281,7 @@ private:
|
||||
CUtlVector<VkVertexInputBindingDescription> m_layouts;
|
||||
CUtlVector<VkVertexInputAttributeDescription> m_attributes;
|
||||
CUtlVector<VkFormat> m_eFormats;
|
||||
EMultisampleType m_eMultiSampling;
|
||||
VkFormat m_eDepthFormat;
|
||||
bool m_bIsFragmentEnabled;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user