added mesh rendering
This commit is contained in:
@@ -11,6 +11,15 @@
|
||||
|
||||
VkSampler g_invalidTextureSampler;
|
||||
|
||||
vk_buffer_t g_cameraProperties;
|
||||
CameraProjection *g_cameraDataMap;
|
||||
|
||||
IMaterial *g_pDefaultMaterial;
|
||||
IMaterial *g_pCurrentMaterial;
|
||||
|
||||
vk_image2d_t g_meshdepth;
|
||||
vk_image2d_t g_meshcolor;
|
||||
|
||||
void IVulkan::Init()
|
||||
{
|
||||
char invalidTexture[1024] = {};
|
||||
@@ -43,13 +52,33 @@ void IVulkan::Init()
|
||||
samplerInfo.minLod = 0.0f;
|
||||
samplerInfo.maxLod = 0.0f;
|
||||
vkCreateSampler(g_vkDevice, &samplerInfo, nullptr, &g_invalidTextureSampler);
|
||||
IBrushRenderer::Init();
|
||||
|
||||
g_cameraProperties.Create(sizeof(CameraProjection), VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT);
|
||||
g_cameraDataMap = (CameraProjection*)g_cameraProperties.Map(0, 64);
|
||||
|
||||
g_meshdepth.Create(1280, 720, VK_FORMAT_D32_SFLOAT, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT);
|
||||
g_meshcolor.Create(1280, 720, VK_FORMAT_R8G8B8A8_UNORM, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT);
|
||||
|
||||
IBrushRenderer::Init();
|
||||
IMeshRenderer::Init();
|
||||
};
|
||||
|
||||
void IVulkan::Frame()
|
||||
{
|
||||
glm_mat4_identity(g_cameraDataMap->viewprojection);
|
||||
glm_perspective(glm_rad(90),(float)g_nWindowWidth/g_nWindowHeight, 0.01, 100, g_cameraDataMap->viewprojection);
|
||||
glm_rotate(g_cameraDataMap->viewprojection, glm_rad(90), (vec4){1,0,0,0});
|
||||
glm_scale(g_cameraDataMap->viewprojection, (vec4){1,-1,1,1});
|
||||
glm_rotate(g_cameraDataMap->viewprojection, glm_rad(90), (vec4){0,0,1,0});
|
||||
|
||||
if (g_bConfigNotify)
|
||||
{
|
||||
g_meshdepth.Destroy();
|
||||
g_meshdepth.Create(g_nWindowWidth, g_nWindowHeight, VK_FORMAT_D32_SFLOAT, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT);
|
||||
}
|
||||
|
||||
IBrushRenderer::Frame(0);
|
||||
IMeshRenderer::Frame(0);
|
||||
};
|
||||
|
||||
void vk_shader_t::Create( const char *szPath, VkShaderStageFlagBits shaderStage )
|
||||
@@ -472,3 +501,35 @@ ITexture *ITextureManager::LoadTexture( const char *szName )
|
||||
pTexture->szName = szName;
|
||||
return pTexture;
|
||||
};
|
||||
|
||||
IMaterial *IRenderer::LoadMaterial( const char *szMaterial )
|
||||
{
|
||||
FileHandle_t file = IFileSystem::Open(szMaterial, IFILE_READ);
|
||||
IMaterial *pMaterial = new IMaterial;
|
||||
if (!file)
|
||||
{
|
||||
return g_pDefaultMaterial;
|
||||
}
|
||||
|
||||
IFileSystem::Close(file);
|
||||
}
|
||||
|
||||
void IRenderer::SetMaterial( IMaterial *pMaterial )
|
||||
{
|
||||
g_pCurrentMaterial = pMaterial;
|
||||
}
|
||||
|
||||
IVertexBuffer *IRenderer::CreateVertexBuffer( uint32_t uSize )
|
||||
{
|
||||
CVertexBuffer *pBuffer = new CVertexBuffer();
|
||||
pBuffer->m_buffer.Create(uSize, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT);
|
||||
return pBuffer;
|
||||
}
|
||||
|
||||
IIndexBuffer *IRenderer::CreateIndexBuffer( uint32_t uSize )
|
||||
{
|
||||
CIndexBuffer *pBuffer = new CIndexBuffer();
|
||||
pBuffer->m_buffer.Create(uSize, VK_BUFFER_USAGE_INDEX_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT);
|
||||
return pBuffer;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user