ani is our lord and saviour)
This commit is contained in:
@@ -14,7 +14,7 @@ struct Vert
|
||||
{
|
||||
glm::vec3 Position;
|
||||
glm::vec3 Normal;
|
||||
// glm::vec2 UV;
|
||||
glm::vec2 UV;
|
||||
};
|
||||
|
||||
class Mesh
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
layout (location = 0) in vec3 position;
|
||||
layout (location = 1) in vec3 normal;
|
||||
layout (location = 2) in vec2 uv;
|
||||
|
||||
uniform mat4 model;
|
||||
uniform mat4 view;
|
||||
@@ -42,5 +43,5 @@ void main() {
|
||||
|
||||
vec3 result = (ambient + diffuse) * objectColour;
|
||||
|
||||
outColour = vec4(result, 1.0);
|
||||
outColour = vec4((vNormal + 1.0) /2.0, 1.0);
|
||||
}
|
||||
|
||||
@@ -132,6 +132,7 @@ int Inferno::run()
|
||||
ImGui::Image((ImTextureID)mRasterRenderer->getRenderedTexture(),
|
||||
{ mRasterRenderer->getTargetSize().x, mRasterRenderer->getTargetSize().y },
|
||||
ImVec2(0,1), ImVec2(1,0));
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
|
||||
ImGui::End();
|
||||
|
||||
|
||||
@@ -16,17 +16,26 @@ RasterizeRenderer::RasterizeRenderer()
|
||||
glGenFramebuffers(1, &mRenderTarget);
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, mRenderTarget);
|
||||
|
||||
|
||||
glGenTextures(1, &mRenderTargetTexture);
|
||||
glBindTexture(GL_TEXTURE_2D, mRenderTargetTexture);
|
||||
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
glDisable(GL_CULL_FACE);
|
||||
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 800, 600, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
|
||||
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
|
||||
|
||||
glGenTextures(1, &mRenderTargetDepthTexture );
|
||||
glBindTexture(GL_TEXTURE_2D, mRenderTargetDepthTexture );
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH24_STENCIL8, 800, 600, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL);
|
||||
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
|
||||
// Attach the texture to the framebuffer.
|
||||
glFramebufferTexture2D( GL_DRAW_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, mRenderTargetDepthTexture, 0 );
|
||||
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, mRenderTargetTexture, 0);
|
||||
|
||||
assert(glCheckFramebufferStatus(GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE);
|
||||
@@ -46,15 +55,21 @@ void RasterizeRenderer::setScene(Scene* scene)
|
||||
void RasterizeRenderer::setTargetSize(glm::vec2 size)
|
||||
{
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, mRenderTarget);
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, mRenderTargetTexture);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, size.x, size.y, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, mRenderTargetDepthTexture);
|
||||
glTexImage2D( GL_TEXTURE_2D, 0, GL_DEPTH24_STENCIL8, size.x, size.y, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL );
|
||||
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
mRenderTargetSize = size;
|
||||
}
|
||||
|
||||
GLuint RasterizeRenderer::getRenderedTexture()
|
||||
{
|
||||
return mRenderTarget;
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, mRenderTarget);
|
||||
return mRenderTargetTexture;
|
||||
}
|
||||
|
||||
glm::vec2 RasterizeRenderer::getTargetSize()
|
||||
@@ -75,6 +90,11 @@ void RasterizeRenderer::draw()
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, mRenderTarget);
|
||||
glViewport(0, 0, mRenderTargetSize.x, mRenderTargetSize.y);
|
||||
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
// glDepthFunc(GL_GREATER);
|
||||
|
||||
// glDisable(GL_CULL_FACE);
|
||||
|
||||
for (Mesh* m : mCurrentScene->getRenderables())
|
||||
{
|
||||
m->getMaterial()->getGlShader()->use();
|
||||
|
||||
@@ -24,6 +24,7 @@ public:
|
||||
private:
|
||||
GLuint mRenderTarget = 0;
|
||||
GLuint mRenderTargetTexture = 0;
|
||||
GLuint mRenderTargetDepthTexture = 0;
|
||||
glm::vec2 mRenderTargetSize = {1920, 1080};
|
||||
|
||||
Scene* mCurrentScene;
|
||||
|
||||
@@ -37,6 +37,7 @@ void Mesh::loadOBJ(std::filesystem::path file)
|
||||
mObjLoader->getNormals()[i+1],
|
||||
mObjLoader->getNormals()[i+2],
|
||||
};
|
||||
|
||||
mVerticies.push_back(vert);
|
||||
}
|
||||
}
|
||||
@@ -64,6 +65,9 @@ void Mesh::ready()
|
||||
// vertex normals
|
||||
glEnableVertexAttribArray(1);
|
||||
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(Vert), (void*)offsetof(Vert, Normal));
|
||||
// vertex UV
|
||||
glEnableVertexAttribArray(2);
|
||||
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, sizeof(Vert), (void*)offsetof(Vert, UV));
|
||||
|
||||
glBindVertexArray(0);
|
||||
|
||||
|
||||
@@ -140,9 +140,6 @@ void Window::setupGLFW(std::string title)
|
||||
glfwMakeContextCurrent(window);
|
||||
gladLoadGLLoader((GLADloadproc)glfwGetProcAddress);
|
||||
glfwSwapInterval(1); // Enable vsync
|
||||
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
glDisable(GL_CULL_FACE);
|
||||
}
|
||||
|
||||
void Window::setupImGui()
|
||||
|
||||
Reference in New Issue
Block a user