+ | texture

This commit is contained in:
RedShip
2025-01-28 19:19:46 +01:00
parent ff9ab9251f
commit 8466e672f6
10 changed files with 43 additions and 17 deletions

View File

@ -6,7 +6,7 @@
/* By: ycontre <ycontre@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/09/27 14:51:49 by TheRed #+# #+# */
/* Updated: 2025/01/28 18:34:10 by ycontre ### ########.fr */
/* Updated: 2025/01/28 19:01:09 by ycontre ### ########.fr */
/* */
/* ************************************************************************** */
@ -20,9 +20,9 @@ int main(int argc, char **argv)
return (1);
Window window(&scene, WIDTH, HEIGHT, "RT_GPU", 0);
// Shader shader("shaders/vertex.vert", "shaders/frag.frag", "shaders/compute.glsl");
Shader shader("shaders/vertex.vert", "shaders/frag.frag", "shaders/compute.glsl");
Shader shader("shaders/vertex.vert", "shaders/frag.frag", "shaders/debug.glsl");
// Shader shader("shaders/vertex.vert", "shaders/frag.frag", "shaders/debug.glsl");
GLint max_gpu_size;
glGetIntegerv(GL_MAX_SHADER_STORAGE_BLOCK_SIZE, &max_gpu_size);

View File

@ -6,7 +6,7 @@
/* By: ycontre <ycontre@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/01/16 15:00:33 by tomoron #+# #+# */
/* Updated: 2025/01/28 18:30:33 by ycontre ### ########.fr */
/* Updated: 2025/01/28 19:18:37 by ycontre ### ########.fr */
/* */
/* ************************************************************************** */
@ -122,7 +122,7 @@ bool ObjParser::addTriangleFromPolygon(std::vector<glm::vec3> &vertices, int inv
if(pointInTriangle(triangleVertices, vertices, i))
continue;
vertices.erase(vertices.begin() + i);
addTriangle(v1, v2, v3, glm::vec2(0.), glm::vec2(0.), glm::vec2(0.));
addTriangle(v1, v2, v3, std::vector<glm::vec2>(0));
return(1);
}
return(0);
@ -153,7 +153,9 @@ void ObjParser::getFaceVertices(std::vector<glm::vec3> &faceVertices, std::vecto
std::runtime_error("OBJ : too many values in an element of a face");
if(sp.size() == 0)
std::runtime_error("OBJ : wtf ?");
textureVertices.push_back(_textureVertices[checkVertexIndex(std::stoi(sp[1]), _textureVertices.size())]);
if (sp.size() > 1 && sp[1].length())
textureVertices.push_back(_textureVertices[checkVertexIndex(std::stoi(sp[1]), _textureVertices.size())]);
faceVertices.push_back(_vertices[checkVertexIndex(std::stoi(sp[0]), _vertices.size())]);
}
}
@ -176,11 +178,22 @@ void ObjParser::addFace(std::stringstream &line)
if(!line.eof())
throw std::runtime_error("OBJ: an error occured while parsing face");
addTriangle(faceVertices[0], faceVertices[1], faceVertices[2], textureVertices[0], textureVertices[1], textureVertices[2]);
addTriangle(faceVertices[0], faceVertices[1], faceVertices[2], textureVertices);
}
void ObjParser::addTriangle(glm::vec3 v1, glm::vec3 v2, glm::vec3 v3, glm::vec2 vt1, glm::vec2 vt2, glm::vec2 vt3)
void ObjParser::addTriangle(glm::vec3 v1, glm::vec3 v2, glm::vec3 v3, std::vector<glm::vec2> texture_vertices)
{
glm::vec2 vt1 = glm::vec2(0.);
glm::vec2 vt2 = glm::vec2(0.);
glm::vec2 vt3 = glm::vec2(0.);
if (texture_vertices.size() == 3)
{
vt1 = texture_vertices[0];
vt2 = texture_vertices[1];
vt3 = texture_vertices[2];
}
_triangles.push_back(Triangle(v1, v2, v3, vt1, vt2, vt3, _mat));
}

View File

@ -6,7 +6,7 @@
/* By: ycontre <ycontre@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/12/23 18:29:41 by ycontre #+# #+# */
/* Updated: 2025/01/27 18:55:18 by ycontre ### ########.fr */
/* Updated: 2025/01/28 19:17:39 by ycontre ### ########.fr */
/* */
/* ************************************************************************** */
@ -116,6 +116,10 @@ void Scene::addObject(Object *obj)
gpu_triangle.vertex2 = triangle->getVertex3();
gpu_triangle.normal = triangle->getNormal();
gpu_triangle.texture_vertex1 = triangle->getTextureVertex1();
gpu_triangle.texture_vertex2 = triangle->getTextureVertex1();
gpu_triangle.texture_vertex3 = triangle->getTextureVertex1();
_gpu_triangles.push_back(gpu_triangle);
gpu_obj.vertex1 = triangle->getVertex2();
@ -185,7 +189,6 @@ void Scene::addBvh(std::vector<Triangle> &triangles, glm::vec3 offset, float sc
gpu_triangle.texture_vertex2 = triangles[i].getTextureVertex2();
gpu_triangle.texture_vertex3 = triangles[i].getTextureVertex3();
_gpu_triangles.push_back(gpu_triangle);
}