Update model.cpp

This commit is contained in:
2026-03-05 14:37:52 +03:00
parent 65cf326f25
commit 70c3459703

View File

@@ -609,14 +609,60 @@ void Model::Draw(const glm::mat4& model, SkeletonInstance* instance /*= nullptr*
g_renderDevice->SetCullFace(true);
g_renderDevice->SetDepthTest(true);
{
g_renderDevice->SetDepthWrite(true);
bool isTransparent = false;
if (isTransparent)
{
// Enable blending
g_renderDevice->SetBlending(true);
g_renderDevice->SetBlendingFunction(BF_SRC_ALPHA, BF_ONE_MINUS_SRC_ALPHA);
glm::vec4 color = glm::vec4(1.f, 1.f, 1.f, .5f);
g_shaderSystem->SetUniformFloat4(shader, UNIFORM_CUSTOM_COLOR, glm::value_ptr(color));
}
else
{
g_renderDevice->SetBlending(false);
//glm::vec4 color = glm::vec4(1.f, 1.f, 1.f, 1.f);
//g_shaderSystem->SetUniformFloat4(shader, UNIFORM_CUSTOM_COLOR, glm::value_ptr(color));
}
g_renderDevice->SetVerticesBuffer(m_data.vb);
if (m_data.ib)
g_renderDevice->SetIndicesBuffer(m_data.ib);
g_shaderSystem->SetShader(shader);
g_shaderSystem->SetUniformMatrix(shader, UNIFORM_MODEL_MATRIX, &model[0]);
g_shaderSystem->SetUniformMatrix(shader, UNIFORM_PROJ_MATRIX, &g_render->GetProjectionMatrix()[0]);
g_shaderSystem->SetUniformMatrix(shader, UNIFORM_VIEW_MATRIX, &g_render->GetViewMatrix()[0]);
glm::mat4 mvp = glm::identity<glm::mat4>();
mvp = g_render->GetProjectionMatrix() * g_render->GetViewMatrix() * model;
g_shaderSystem->SetUniformMatrix(shader, UNIFORM_MVP_MATRIX, &mvp[0]);
if (!m_AlbedoTexture)
m_AlbedoTexture = g_texturesManager->LoadTexture2D("asdfasdf");
g_texturesManager->SetTexture(0, m_AlbedoTexture);
g_shaderSystem->SetUniformSampler(shader, SAMPLER_ALBEDO, 0);
if (instance)
g_shaderSystem->SetUniformMatrix(shader, UNIFORM_BONE_MATRICES, instance->m_finalMatrices.data(), instance->m_finalMatrices.size());
if (m_data.ib)
g_renderDevice->DrawElements(PT_TRIANGLES, m_data.ibcount, 0, NULL);
else
g_renderDevice->DrawArrays(PT_TRIANGLES, 0, m_data.vbcount);
}
// debug draw
if (instance)
{
glm::mat4 worldMat;
glm::mat4 worldMatParent;
for (int i = 0; i < instance->m_jointMatrices.size(); i++)