Red debug bounding boxes boilerplate
This commit is contained in:
@@ -131,10 +131,19 @@ void Renderer::Draw(double dt)
|
|||||||
glEnable(GL_BLEND);
|
glEnable(GL_BLEND);
|
||||||
glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ZERO);
|
glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ZERO);
|
||||||
m_ShaderProgramDebugAABB.Bind();
|
m_ShaderProgramDebugAABB.Bind();
|
||||||
for (auto aabbModelMatrix : AABBsToRender) {
|
for (auto tuple : AABBsToRender) {
|
||||||
|
glm::mat4 modelMatrix;
|
||||||
|
bool colliding;
|
||||||
|
std::tie(modelMatrix, colliding) = tuple;
|
||||||
|
// Model matrix
|
||||||
glm::mat4 cameraMatrix = m_Camera->ProjectionMatrix() * m_Camera->ViewMatrix();
|
glm::mat4 cameraMatrix = m_Camera->ProjectionMatrix() * m_Camera->ViewMatrix();
|
||||||
glm::mat4 MVP = cameraMatrix * aabbModelMatrix;
|
glm::mat4 MVP = cameraMatrix * modelMatrix;
|
||||||
glUniformMatrix4fv(glGetUniformLocation(m_ShaderProgramDebugAABB.GetHandle(), "MVP"), 1, GL_FALSE, glm::value_ptr(MVP));
|
glUniformMatrix4fv(glGetUniformLocation(m_ShaderProgramDebugAABB.GetHandle(), "MVP"), 1, GL_FALSE, glm::value_ptr(MVP));
|
||||||
|
// Color
|
||||||
|
glm::vec4 color(1.f, 1.f, 1.f, 0.f);
|
||||||
|
if (colliding)
|
||||||
|
color = glm::vec4(1.f, 0.f, 0.f, 0.f);
|
||||||
|
glUniform4fv(glGetUniformLocation(m_ShaderProgramDebugAABB.GetHandle(), "Color"), 1, glm::value_ptr(color));
|
||||||
glBindVertexArray(m_DebugAABB);
|
glBindVertexArray(m_DebugAABB);
|
||||||
glDrawArrays(GL_LINES, 0, 24);
|
glDrawArrays(GL_LINES, 0, 24);
|
||||||
}
|
}
|
||||||
@@ -318,6 +327,14 @@ void Renderer::AddPointLightToDraw(
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Renderer::AddAABBToDraw(glm::vec3 origin, glm::vec3 volumeVector, bool colliding)
|
||||||
|
{
|
||||||
|
glm::mat4 model;
|
||||||
|
model *= glm::translate(origin);
|
||||||
|
model *= glm::scale(volumeVector);
|
||||||
|
AABBsToRender.push_back(std::make_tuple(model, colliding));
|
||||||
|
}
|
||||||
|
|
||||||
GLuint Renderer::CreateQuad()
|
GLuint Renderer::CreateQuad()
|
||||||
{
|
{
|
||||||
float quadVertices[] = {
|
float quadVertices[] = {
|
||||||
@@ -409,11 +426,3 @@ GLuint Renderer::CreateAABB()
|
|||||||
|
|
||||||
return vao;
|
return vao;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::AddAABBToDraw(glm::vec3 origin, glm::vec3 volumeVector)
|
|
||||||
{
|
|
||||||
glm::mat4 model;
|
|
||||||
model *= glm::translate(origin);
|
|
||||||
model *= glm::scale(volumeVector);
|
|
||||||
AABBsToRender.push_back(model);
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ public:
|
|||||||
std::vector<float> Light_linearAttenuation;
|
std::vector<float> Light_linearAttenuation;
|
||||||
std::vector<float> Light_quadraticAttenuation;
|
std::vector<float> Light_quadraticAttenuation;
|
||||||
std::vector<float> Light_spotExponent;
|
std::vector<float> Light_spotExponent;
|
||||||
std::vector<glm::mat4> AABBsToRender;
|
std::vector<std::tuple<glm::mat4, bool>> AABBsToRender;
|
||||||
|
|
||||||
Renderer();
|
Renderer();
|
||||||
|
|
||||||
@@ -65,7 +65,7 @@ public:
|
|||||||
float _quadraticAttenuation,
|
float _quadraticAttenuation,
|
||||||
float _spotExponent
|
float _spotExponent
|
||||||
);
|
);
|
||||||
void AddAABBToDraw(glm::vec3 origin, glm::vec3 volumeVector);
|
void AddAABBToDraw(glm::vec3 origin, glm::vec3 volumeVector, bool colliding);
|
||||||
|
|
||||||
void LoadContent();
|
void LoadContent();
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
#version 430
|
#version 430
|
||||||
|
|
||||||
|
uniform vec4 Color;
|
||||||
|
|
||||||
in VertexData {
|
in VertexData {
|
||||||
vec3 Position;
|
vec3 Position;
|
||||||
vec3 Normal;
|
vec3 Normal;
|
||||||
@@ -11,5 +13,5 @@ out vec4 FragmentColor;
|
|||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
//FragmentColor = vec4(1.0 - gl_Color.r, 1.0 - gl_Color.g, 1.0 - gl_Color.b, 0.0);
|
//FragmentColor = vec4(1.0 - gl_Color.r, 1.0 - gl_Color.g, 1.0 - gl_Color.b, 0.0);
|
||||||
FragmentColor = vec4(1.0, 1.0, 1.0, 1.0);
|
FragmentColor = Color;
|
||||||
}
|
}
|
||||||
@@ -32,9 +32,9 @@ void Systems::RenderSystem::UpdateEntity( double dt, EntityID entity, EntityID p
|
|||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
auto bounds = m_World->GetComponent<Components::Bounds>(entity, "Bounds");
|
auto bounds = m_World->GetComponent<Components::Bounds>(entity, "Bounds");
|
||||||
if (bounds != nullptr) {
|
if (bounds != nullptr) {
|
||||||
glm::vec3 origin = transformComponent->Scale * (transformComponent->Position + bounds->Origin);
|
glm::vec3 origin = transformComponent->Position + (transformComponent->Scale * bounds->Origin);
|
||||||
glm::vec3 volumeVector = transformComponent->Scale * bounds->VolumeVector;
|
glm::vec3 volumeVector = transformComponent->Scale * bounds->VolumeVector;
|
||||||
m_Renderer->AddAABBToDraw(origin, volumeVector);
|
m_Renderer->AddAABBToDraw(origin, volumeVector, true);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user