From 2160dfca34cdad9bd4dd5a5400340fca89ceaa0c Mon Sep 17 00:00:00 2001 From: IlyaShurupov Date: Sat, 13 Apr 2024 12:28:46 +0300 Subject: [PATCH] tmp --- {GeometryEditor2D => 3DEditor}/CMakeLists.txt | 8 +- .../applications/Entry.cpp | 9 +- 3DEditor/applications/SceneLoad.cpp | 41 +++++++ 3DEditor/private/Render.cpp | 110 +++++++++++++++++ .../public/EditorWidget.hpp | 12 +- .../public/Render.hpp | 4 +- 3DEditor/public/Scene.hpp | 34 ++++++ {GeometryEditor2D => 3DEditor}/rsc/Font.ttf | Bin 3DEditor/rsc/scene.obj | 112 ++++++++++++++++++ 3DEditor/rsc/shaders/default.frag | 7 ++ 3DEditor/rsc/shaders/default.vert | 11 ++ CMakeLists.txt | 2 +- .../obj}/OBJ_LOADER_LICENSE.txt | 0 .../obj}/OBJ_Loader.h | 0 GeometryEditor2D/private/Geometry.cpp | 0 GeometryEditor2D/private/Render.cpp | 100 ---------------- GeometryEditor2D/public/Geometry.hpp | 8 -- GeometryEditor2D/rsc/shaders/default.frag | 9 -- GeometryEditor2D/rsc/shaders/default.vert | 22 ---- Math/public/Topology.hpp | 2 +- RayTracer/CMakeLists.txt | 2 +- RayTracer/applications/SceneLoad.cpp | 3 +- 22 files changed, 339 insertions(+), 157 deletions(-) rename {GeometryEditor2D => 3DEditor}/CMakeLists.txt (79%) rename {GeometryEditor2D => 3DEditor}/applications/Entry.cpp (79%) create mode 100644 3DEditor/applications/SceneLoad.cpp create mode 100644 3DEditor/private/Render.cpp rename {GeometryEditor2D => 3DEditor}/public/EditorWidget.hpp (84%) rename {GeometryEditor2D => 3DEditor}/public/Render.hpp (80%) create mode 100644 3DEditor/public/Scene.hpp rename {GeometryEditor2D => 3DEditor}/rsc/Font.ttf (100%) create mode 100644 3DEditor/rsc/scene.obj create mode 100644 3DEditor/rsc/shaders/default.frag create mode 100644 3DEditor/rsc/shaders/default.vert rename {RayTracer/applications => Externals/obj}/OBJ_LOADER_LICENSE.txt (100%) rename {RayTracer/applications => Externals/obj}/OBJ_Loader.h (100%) delete mode 100644 GeometryEditor2D/private/Geometry.cpp delete mode 100644 GeometryEditor2D/private/Render.cpp delete mode 100644 GeometryEditor2D/public/Geometry.hpp delete mode 100644 GeometryEditor2D/rsc/shaders/default.frag delete mode 100644 GeometryEditor2D/rsc/shaders/default.vert diff --git a/GeometryEditor2D/CMakeLists.txt b/3DEditor/CMakeLists.txt similarity index 79% rename from GeometryEditor2D/CMakeLists.txt rename to 3DEditor/CMakeLists.txt index 1cc6125..4ade195 100644 --- a/GeometryEditor2D/CMakeLists.txt +++ b/3DEditor/CMakeLists.txt @@ -1,7 +1,7 @@ -project(GeometryEditor2D) +project(3DEditor) ### ---------------------- Externals --------------------- ### -set(BINDINGS_INCLUDE ../Externals/glfw/include) +set(BINDINGS_INCLUDE ../Externals/glfw/include ../Externals) set(BINDINGS_LIBS glfw Imgui) ### ---------------------- Static Library --------------------- ### @@ -15,8 +15,8 @@ target_link_libraries(${PROJECT_NAME} PUBLIC Graphics Connection Widgets Math Ra target_link_libraries(${PROJECT_NAME} PUBLIC ${BINDINGS_LIBS}) ### -------------------------- Applications -------------------------- ### -add_executable(geomEdit2d ./applications/Entry.cpp) -target_link_libraries(geomEdit2d ${PROJECT_NAME}) +add_executable(edit3d ./applications/Entry.cpp ./applications/SceneLoad.cpp) +target_link_libraries(edit3d ${PROJECT_NAME} Lua ImageIO) file(COPY "rsc" DESTINATION "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/") file(COPY "rsc/Font.ttf" DESTINATION "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/") diff --git a/GeometryEditor2D/applications/Entry.cpp b/3DEditor/applications/Entry.cpp similarity index 79% rename from GeometryEditor2D/applications/Entry.cpp rename to 3DEditor/applications/Entry.cpp index 6062084..db5cfbf 100644 --- a/GeometryEditor2D/applications/Entry.cpp +++ b/3DEditor/applications/Entry.cpp @@ -5,13 +5,18 @@ using namespace tp; +bool loadMeshes(tp::Scene& scene, const std::string& objetsPath); + class EditorGUI : public Application { public: EditorGUI() { Vec2F renderResolution = { 1000, 1000 }; auto canvas = this->mGraphics->getCanvas(); mGui = new EditorWidget(canvas, &geometry, renderResolution); - // + + loadMeshes(geometry, "rsc/scene.obj"); + + geometry.mCamera.lookAtPoint({ 0, 0, 0 }, { 3, 3, 2 }, { 0, 0, 1 }); } ~EditorGUI() override { delete mGui; } @@ -24,7 +29,7 @@ public: void drawFrame(Canvas* canvas) override { mGui->draw(*canvas); } private: - Geometry geometry; + Scene geometry; EditorWidget* mGui; }; diff --git a/3DEditor/applications/SceneLoad.cpp b/3DEditor/applications/SceneLoad.cpp new file mode 100644 index 0000000..bc03e0c --- /dev/null +++ b/3DEditor/applications/SceneLoad.cpp @@ -0,0 +1,41 @@ +#include "Scene.hpp" + +#include "obj/OBJ_Loader.h" +#include + +bool loadMeshes(tp::Scene& scene, const std::string& objetsPath) { + using namespace tp; + + objl::Loader Loader; + + if (!Loader.LoadFile(objetsPath.c_str())) { + std::cout << "Failed to Load File. May have failed to find it or it was not an .obj file.\n"; + return false; + } + + for (auto& curMesh : Loader.LoadedMeshes) { + scene.mObjects.append(Object()); + + auto object = &scene.mObjects.last(); + + for (auto& vertex : curMesh.Vertices) { + // printf("{ %f, %f, %f }, \n", vertex.Position.X, vertex.Position.Y, vertex.Position.Z); + object->mTopology.Points.append(Vec3F{ vertex.Position.X, vertex.Position.Y, vertex.Position.Z }); + object->mTopology.Normals.append(Vec3F{ vertex.Normal.X, vertex.Normal.Y, vertex.Normal.Z }); + } + + for (int j = 0; j < curMesh.Indices.size(); j += 3) { + uint idx1 = (int) curMesh.Indices[j]; + uint idx2 = (int) curMesh.Indices[j + 1]; + uint idx3 = (int) curMesh.Indices[j + 2]; + // printf("{ %i, %i, %i },\n", idx1, idx2, idx3); + object->mTopology.Indexes.append({ idx1, idx2, idx3 }); + } + + if (object->mTopology.Normals.size() != object->mTopology.Points.size()) { + printf("Logic error loading normals\n"); + } + } + + return scene.mObjects.size(); +} diff --git a/3DEditor/private/Render.cpp b/3DEditor/private/Render.cpp new file mode 100644 index 0000000..ec98be5 --- /dev/null +++ b/3DEditor/private/Render.cpp @@ -0,0 +1,110 @@ +#include "Render.hpp" + +#include "GraphicsApi.hpp" + +using namespace tp; + +class ObjectBuffers { +public: + ObjectBuffers(Object* object) { + mObject = (object); + + auto& buff = mObject->mTopology.Points; + auto& indices = mObject->mTopology.Indexes; + + glGenVertexArrays(1, &VAO); + glGenBuffers(1, &VBO); + glGenBuffers(1, &EBO); + + glBindVertexArray(VAO); + + glBindBuffer(GL_ARRAY_BUFFER, VBO); + glBufferData(GL_ARRAY_BUFFER, sizeof(Vec3F) * buff.size(), buff.getBuff(), GL_STATIC_DRAW); + + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(Vec3) * indices.size(), indices.getBuff(), GL_STATIC_DRAW); + + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), nullptr); + glEnableVertexAttribArray(0); + + // glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindVertexArray(0); + } + + Object* mObject = nullptr; + + GLuint VAO = 0; + GLuint VBO = 0; + GLuint EBO = 0; + + void drawCall() { + auto& indices = mObject->mTopology.Indexes; + + glBindVertexArray(VAO); + + // glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); + glDrawElements(GL_TRIANGLES, indices.size() * 3, GL_UNSIGNED_INT, nullptr); + + // glDrawArrays(GL_TRIANGLES, 0, sizeof(buffer) / (2 * sizeof(float))); + + // glBindVertexArray(0); + } + + ~ObjectBuffers() { + glDeleteBuffers(1, &VBO); + glDeleteVertexArrays(1, &VAO); + } +}; + +Render::Render(Vec2F renderResolution) : + mRenderBuffer(renderResolution) { + + mDefaultShader.load("rsc/shaders/default.vert", nullptr, "rsc/shaders/default.frag", true); +} + +Render::~Render() {} + +uint4 Render::getRenderBuffer() { return mRenderBuffer.texId(); } + +Vec2F Render::getBufferSize() { return mRenderBuffer.getSize(); } + +void Render::render(const Scene& geometry, Vec2F size) { + + for (auto object : geometry.mObjects) { + if (!object->mBuffers) { + object->mBuffers = std::make_shared(&object.data()); + } + } + + mRenderBuffer.mClearCol = { 0.0f, 0.0f, 0.0f, 0.f }; + + mRenderBuffer.beginDraw(); + mRenderBuffer.clear(); + + mDefaultShader.bind(); + + Mat4F cameraMat = geometry.mCamera.calculateTransformationMatrix(); + + glEnable(GL_DEPTH_TEST); + + for (auto object : geometry.mObjects) { + + static auto origin = (GLint) mDefaultShader.getu("Origin"); + static auto basis = (GLint) mDefaultShader.getu("Basis"); + static auto camera = (GLint) mDefaultShader.getu("Camera"); + + Mat4F basisMat; + Vec4F originPoint; + + glUniform4fv(origin, 1, &originPoint[0]); + glUniformMatrix4fv(basis, 1, false, &basisMat[0][0]); + glUniformMatrix4fv(camera, 1, true, &cameraMat[0][0]); + + object->mBuffers->drawCall(); + } + + mDefaultShader.unbind(); + + mRenderBuffer.endDraw(); +} diff --git a/GeometryEditor2D/public/EditorWidget.hpp b/3DEditor/public/EditorWidget.hpp similarity index 84% rename from GeometryEditor2D/public/EditorWidget.hpp rename to 3DEditor/public/EditorWidget.hpp index 1288b32..76650d2 100644 --- a/GeometryEditor2D/public/EditorWidget.hpp +++ b/3DEditor/public/EditorWidget.hpp @@ -5,8 +5,9 @@ namespace tp { template class ViewportWidget : public Widget { public: - explicit ViewportWidget(Canvas* canvas, Geometry* geometry, Vec2F renderResolution) : + explicit ViewportWidget(Canvas* canvas, Scene* geometry, Vec2F renderResolution) : mRender(renderResolution) { + mGeometry = geometry; this->createConfig("ViewportWidget"); mImage = canvas->createImageFromTextId(mRender.getRenderBuffer(), mRender.getBufferSize()); mCanvas = canvas; @@ -19,18 +20,19 @@ namespace tp { this->mVisible = areaParent.isOverlap(aArea); if (!this->mVisible) return; - mRender.render(*mGeometry, this->mArea.size); + mGeometry->mCamera.rotate(0.01f, 0.0); } void draw(Canvas& canvas) override { if (!this->mVisible) return; - canvas.drawImage(this->mArea, &mImage); + mRender.render(*mGeometry, this->mArea.size); + canvas.drawImage(this->mArea, &mImage, PI); } public: Render mRender; - Geometry* mGeometry = nullptr; + Scene* mGeometry = nullptr; Canvas* mCanvas = nullptr; Canvas::ImageHandle mImage; }; @@ -38,7 +40,7 @@ namespace tp { template class EditorWidget : public Widget { public: - EditorWidget(Canvas* canvas, Geometry* geometry, Vec2F renderResolution) : + EditorWidget(Canvas* canvas, Scene* geometry, Vec2F renderResolution) : mViewport(canvas, geometry, renderResolution) { this->createConfig("EditorWidget"); this->addColor("Base", "Base"); diff --git a/GeometryEditor2D/public/Render.hpp b/3DEditor/public/Render.hpp similarity index 80% rename from GeometryEditor2D/public/Render.hpp rename to 3DEditor/public/Render.hpp index 310e9ed..818ffe8 100644 --- a/GeometryEditor2D/public/Render.hpp +++ b/3DEditor/public/Render.hpp @@ -1,6 +1,6 @@ #pragma once -#include "Geometry.hpp" +#include "Scene.hpp" #include "Rect.hpp" #include "FrameBuffer.hpp" @@ -12,7 +12,7 @@ namespace tp { explicit Render(Vec2F renderResolution); ~Render(); - void render(const Geometry& geometry, Vec2F size); + void render(const Scene& geometry, Vec2F size); uint4 getRenderBuffer(); Vec2F getBufferSize(); diff --git a/3DEditor/public/Scene.hpp b/3DEditor/public/Scene.hpp new file mode 100644 index 0000000..9b995ba --- /dev/null +++ b/3DEditor/public/Scene.hpp @@ -0,0 +1,34 @@ +#pragma once + +#include "Topology.hpp" +#include + +class ObjectBuffers; + +namespace tp { + + class Object { + public: + Object() = default; + + public: + Topology mTopology; + std::shared_ptr mBuffers; + }; + + struct PointLight { + Vec3F pos; + halnf fallOut = 1.f; + halnf intensity = 1.f; + }; + + class Scene { + public: + Scene() = default; + + public: + Buffer mObjects; + Buffer mLights; + Camera mCamera; + }; +} \ No newline at end of file diff --git a/GeometryEditor2D/rsc/Font.ttf b/3DEditor/rsc/Font.ttf similarity index 100% rename from GeometryEditor2D/rsc/Font.ttf rename to 3DEditor/rsc/Font.ttf diff --git a/3DEditor/rsc/scene.obj b/3DEditor/rsc/scene.obj new file mode 100644 index 0000000..4368e9e --- /dev/null +++ b/3DEditor/rsc/scene.obj @@ -0,0 +1,112 @@ +# Blender v3.0.1 OBJ File: 'scene.blend' +# www.blender.org +mtllib meshes.mtl +o Cube +v -1.039076 1.039076 1.792917 +v -1.039076 1.039076 -1.285234 +v 1.039076 1.039076 1.792917 +v 1.039076 1.039076 -1.285234 +v -1.039076 -1.039076 1.792917 +v -1.039076 -1.039076 -1.285234 +v 1.039076 -1.039076 1.792917 +v 1.039076 -1.039076 -1.285234 +vt 0.625000 0.500000 +vt 0.625000 0.750000 +vt 0.875000 0.750000 +vt 0.875000 0.500000 +vt 0.375000 0.750000 +vt 0.375000 1.000000 +vt 0.625000 1.000000 +vt 0.375000 0.000000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.625000 0.000000 +vt 0.125000 0.500000 +vt 0.125000 0.750000 +vt 0.375000 0.500000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +usemtl Material +s off +f 1/1/1 3/2/1 7/3/1 5/4/1 +f 4/5/2 8/6/2 7/7/2 3/2/2 +f 8/8/3 6/9/3 5/10/3 7/11/3 +f 6/12/4 8/13/4 4/5/4 2/14/4 +f 6/9/5 2/14/5 1/1/5 5/10/5 +o Cube.001 +v 0.411013 -0.208216 -1.264212 +v 0.411013 -0.208216 -0.612621 +v -0.208216 -0.411013 -1.264212 +v -0.208216 -0.411013 -0.612621 +v 0.208216 0.411013 -1.264212 +v 0.208216 0.411013 -0.612621 +v -0.411013 0.208216 -1.264212 +v -0.411013 0.208216 -0.612621 +vt 0.375000 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.250000 +vt 0.375000 0.250000 +vt 0.625000 0.500000 +vt 0.375000 0.500000 +vt 0.625000 0.750000 +vt 0.375000 0.750000 +vt 0.625000 1.000000 +vt 0.375000 1.000000 +vt 0.125000 0.500000 +vt 0.125000 0.750000 +vt 0.875000 0.500000 +vt 0.875000 0.750000 +vn 0.3112 -0.9503 0.0000 +vn -0.9503 -0.3112 0.0000 +vn -0.3112 0.9503 0.0000 +vn 0.9503 0.3112 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +usemtl None +s off +f 9/15/6 10/16/6 12/17/6 11/18/6 +f 11/18/7 12/17/7 16/19/7 15/20/7 +f 15/20/8 16/19/8 14/21/8 13/22/8 +f 13/22/9 14/21/9 10/23/9 9/24/9 +f 11/25/10 15/20/10 13/22/10 9/26/10 +f 16/19/11 12/27/11 10/28/11 14/21/11 +o Cube.002 +v -0.351718 -0.467100 -0.602050 +v -0.351718 -0.467100 0.049542 +v -0.800825 0.004996 -0.602050 +v -0.800825 0.004996 0.049542 +v 0.120377 -0.017993 -0.602050 +v 0.120377 -0.017993 0.049542 +v -0.328730 0.454103 -0.602050 +v -0.328730 0.454103 0.049542 +vt 0.375000 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.250000 +vt 0.375000 0.250000 +vt 0.625000 0.500000 +vt 0.375000 0.500000 +vt 0.625000 0.750000 +vt 0.375000 0.750000 +vt 0.625000 1.000000 +vt 0.375000 1.000000 +vt 0.125000 0.500000 +vt 0.125000 0.750000 +vt 0.875000 0.500000 +vt 0.875000 0.750000 +vn -0.7245 -0.6892 0.0000 +vn -0.6892 0.7245 0.0000 +vn 0.7245 0.6892 0.0000 +vn 0.6892 -0.7245 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +usemtl None +s off +f 17/29/12 18/30/12 20/31/12 19/32/12 +f 19/32/13 20/31/13 24/33/13 23/34/13 +f 23/34/14 24/33/14 22/35/14 21/36/14 +f 21/36/15 22/35/15 18/37/15 17/38/15 +f 19/39/16 23/34/16 21/36/16 17/40/16 +f 24/33/17 20/41/17 18/42/17 22/35/17 diff --git a/3DEditor/rsc/shaders/default.frag b/3DEditor/rsc/shaders/default.frag new file mode 100644 index 0000000..e142a37 --- /dev/null +++ b/3DEditor/rsc/shaders/default.frag @@ -0,0 +1,7 @@ +#version 330 core + +out vec4 FragColor; + +void main() { + FragColor = vec4(gl_FragCoord.z, gl_FragCoord.z, gl_FragCoord.z, 1.f); +} \ No newline at end of file diff --git a/3DEditor/rsc/shaders/default.vert b/3DEditor/rsc/shaders/default.vert new file mode 100644 index 0000000..7d1fd94 --- /dev/null +++ b/3DEditor/rsc/shaders/default.vert @@ -0,0 +1,11 @@ +#version 330 core + +layout(location = 0) in vec3 Point; + +uniform vec4 Origin; +uniform mat4 Basis; +uniform mat4 Camera; + +void main() { + gl_Position = Camera * vec4(Point.xyz, 1.0); +} \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 18cea82..85f36c2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,4 +24,4 @@ add_subdirectory(Widgets) add_subdirectory(LibraryViewer) add_subdirectory(RasterRender) add_subdirectory(Sketch3D) -add_subdirectory(GeometryEditor2D) \ No newline at end of file +add_subdirectory(3DEditor) \ No newline at end of file diff --git a/RayTracer/applications/OBJ_LOADER_LICENSE.txt b/Externals/obj/OBJ_LOADER_LICENSE.txt similarity index 100% rename from RayTracer/applications/OBJ_LOADER_LICENSE.txt rename to Externals/obj/OBJ_LOADER_LICENSE.txt diff --git a/RayTracer/applications/OBJ_Loader.h b/Externals/obj/OBJ_Loader.h similarity index 100% rename from RayTracer/applications/OBJ_Loader.h rename to Externals/obj/OBJ_Loader.h diff --git a/GeometryEditor2D/private/Geometry.cpp b/GeometryEditor2D/private/Geometry.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/GeometryEditor2D/private/Render.cpp b/GeometryEditor2D/private/Render.cpp deleted file mode 100644 index b1aee47..0000000 --- a/GeometryEditor2D/private/Render.cpp +++ /dev/null @@ -1,100 +0,0 @@ -#include "Render.hpp" - -#include "GraphicsApi.hpp" - -using namespace tp; - -struct Shape { - float buffer[8] = { - 1, 1, 1, 0, 0, 0, // - 0, 1, // 1, 1, 0, 0, - }; - - unsigned int indices[6] = { 0, 1, 3, 1, 2, 3 }; - - GLuint VAO = 0; - GLuint VBO = 0; - GLuint EBO = 0; - - Shape() { - glGenVertexArrays(1, &VAO); - glGenBuffers(1, &VBO); - glGenBuffers(1, &EBO); - - glBindVertexArray(VAO); - - glBindBuffer(GL_ARRAY_BUFFER, VBO); - glBufferData(GL_ARRAY_BUFFER, sizeof(buffer), buffer, GL_STATIC_DRAW); - - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); - glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW); - - glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(float), nullptr); - glEnableVertexAttribArray(0); - - // glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - glBindBuffer(GL_ARRAY_BUFFER, 0); - glBindVertexArray(0); - } - - void drawCall() { - const auto numPoints = sizeof(buffer) / (2 * sizeof(float)); - - glBindVertexArray(VAO); - - // glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); - auto num = sizeof(indices) / sizeof(indices[0]); - glDrawElements(GL_TRIANGLES, num, GL_UNSIGNED_INT, nullptr); - - // glDrawArrays(GL_TRIANGLES, 0, sizeof(buffer) / (2 * sizeof(float))); - - // glBindVertexArray(0); - } - - ~Shape() { - glDeleteBuffers(1, &VBO); - glDeleteVertexArrays(1, &VAO); - } -}; - -Render::Render(Vec2F renderResolution) : - mRenderBuffer(renderResolution) { - - mDefaultShader.load("rsc/shaders/default.vert", nullptr, "rsc/shaders/default.frag", true); -} - -Render::~Render() {} - -uint4 Render::getRenderBuffer() { return mRenderBuffer.texId(); } - -Vec2F Render::getBufferSize() { return mRenderBuffer.getSize(); } - -void Render::render(const Geometry& geometry, Vec2F size) { - - static Shape shape; - - mRenderBuffer.mClearCol = { 0.1f, 0.1f, 0.1f, 1.f }; - - mRenderBuffer.beginDraw(); - mRenderBuffer.clear(); - - { - mDefaultShader.bind(); - - static auto uniform_color = mDefaultShader.getu("Color"); - static auto uniform_scale = mDefaultShader.getu("Viewport"); - - RGBA col = { 0, 0, 1.f, 1.f }; - RectF viewport = { -1.0f, -1.0f, 3.f, 3.f }; - viewport.w = viewport.z * (size.y / size.x); - - glUniform4fv(uniform_color, 1, &col.r); - glUniform4fv(uniform_scale, 1, &viewport.x); - - shape.drawCall(); - - mDefaultShader.unbind(); - } - - mRenderBuffer.endDraw(); -} diff --git a/GeometryEditor2D/public/Geometry.hpp b/GeometryEditor2D/public/Geometry.hpp deleted file mode 100644 index 13f4571..0000000 --- a/GeometryEditor2D/public/Geometry.hpp +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once - -namespace tp { - class Geometry { - public: - Geometry() = default; - }; -} \ No newline at end of file diff --git a/GeometryEditor2D/rsc/shaders/default.frag b/GeometryEditor2D/rsc/shaders/default.frag deleted file mode 100644 index 0850bdc..0000000 --- a/GeometryEditor2D/rsc/shaders/default.frag +++ /dev/null @@ -1,9 +0,0 @@ -#version 330 core - -uniform vec4 Color; - -out vec4 FragColor; - -void main() { - FragColor = vec4(1.f); -} \ No newline at end of file diff --git a/GeometryEditor2D/rsc/shaders/default.vert b/GeometryEditor2D/rsc/shaders/default.vert deleted file mode 100644 index 2ba27d7..0000000 --- a/GeometryEditor2D/rsc/shaders/default.vert +++ /dev/null @@ -1,22 +0,0 @@ -#version 330 core - -layout(location = 0) in vec2 point; - -uniform vec4 Viewport; - -void main() { - vec2 transformedPoint = point; - - transformedPoint.x = transformedPoint.x - Viewport.x; - transformedPoint.y = transformedPoint.y - Viewport.y; - - transformedPoint.x = transformedPoint.x / Viewport.z; - transformedPoint.y = transformedPoint.y / Viewport.w; - - transformedPoint.y = -transformedPoint.y; - - transformedPoint.y = transformedPoint.y * 2; - transformedPoint.x = transformedPoint.x * 2; - - gl_Position = vec4(transformedPoint.x - 1, transformedPoint.y + 1, 1.0, 1.0); -} \ No newline at end of file diff --git a/Math/public/Topology.hpp b/Math/public/Topology.hpp index f29fb36..92cb1a0 100644 --- a/Math/public/Topology.hpp +++ b/Math/public/Topology.hpp @@ -34,7 +34,7 @@ namespace tp { Buffer Points; Buffer Normals; - Buffer Indexes; + Buffer> Indexes; }; struct TopologyCache { diff --git a/RayTracer/CMakeLists.txt b/RayTracer/CMakeLists.txt index d40c663..ae8c52b 100644 --- a/RayTracer/CMakeLists.txt +++ b/RayTracer/CMakeLists.txt @@ -4,7 +4,7 @@ project(RayTracer) file(GLOB SOURCES "./private/*.cpp" "./private/*/*.cpp") file(GLOB HEADERS "./public/*.hpp" "./public/*/*.hpp" "./applications/*.hpp") add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) -target_include_directories(${PROJECT_NAME} PUBLIC ./public/) +target_include_directories(${PROJECT_NAME} PUBLIC ./public/ ../Externals/) target_link_libraries(${PROJECT_NAME} PUBLIC Math Connection) ### -------------------------- Applications -------------------------- ### diff --git a/RayTracer/applications/SceneLoad.cpp b/RayTracer/applications/SceneLoad.cpp index 724e62b..a1f53da 100644 --- a/RayTracer/applications/SceneLoad.cpp +++ b/RayTracer/applications/SceneLoad.cpp @@ -6,7 +6,7 @@ extern "C" { #include "lualib.h" } -#include "OBJ_Loader.h" +#include "obj/OBJ_Loader.h" #include @@ -139,7 +139,6 @@ void loadScene(tp::Scene& scene, const std::string& scenePath, tp::RayTracer::Re // Remove the filename from the path fs::path directoryPath = fullPath.remove_filename(); - if (luaL_dofile(L, scenePath.c_str()) != 0) { lua_close(L); printf("Cant open scene script.\n");