diff --git a/res/models/box.blend b/res/models/box.blend index 54eba0e..607800b 100644 Binary files a/res/models/box.blend and b/res/models/box.blend differ diff --git a/res/models/box.blend1 b/res/models/box.blend1 index 0a08022..54eba0e 100644 Binary files a/res/models/box.blend1 and b/res/models/box.blend1 differ diff --git a/res/models/box.fbx b/res/models/box.fbx new file mode 100644 index 0000000..55eb57d Binary files /dev/null and b/res/models/box.fbx differ diff --git a/src/main.cpp b/src/main.cpp index c227fc5..ff74771 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -9,8 +9,9 @@ int main() Renderer scene; Window window(1920, 1080); Camera camera = Camera{ - .position = glm::vec3(20, 5, 5), + .position = glm::vec3(-30, 5, 5), .target = glm::vec3(0, 0, 0), + .S_O = 40, }; RenderParameter render = RenderParameter{ .width = 1920, diff --git a/src/scene/Renderer.cpp b/src/scene/Renderer.cpp index 59e13b0..fe510c1 100644 --- a/src/scene/Renderer.cpp +++ b/src/scene/Renderer.cpp @@ -10,7 +10,7 @@ Renderer::Renderer() .direction = glm::normalize(glm::vec3(-0.4f, -0.3f, -0.2f)), .color = glm::vec3(1, 1, 1), }); - bvh.addModels(ModelLoader::loadModel("../res/models/cube.fbx"), + bvh.addModels(ModelLoader::loadModel("../res/models/stanford-bunny.obj"), glm::mat4(glm::vec4(1.0f, 0.0f, 0.0f, 0.0f), glm::vec4(0.0f, 1.0f, 0.0f, 0.0f), glm::vec4(0.0f, 0.0f, 1.0f, 0.0f), glm::vec4(0.0f, 0.0f, 0.0f, 1.0f))); bvh.generate(); diff --git a/src/scene/Renderer.h b/src/scene/Renderer.h index aee5f82..a0d57be 100644 --- a/src/scene/Renderer.h +++ b/src/scene/Renderer.h @@ -20,7 +20,7 @@ public: void startRender(Camera cam, RenderParameter params); constexpr const std::vector& getImage() const { return image; } constexpr const std::vector& getSampleTimes() const { return sampleTimes; } - constexpr const float getLastSampleTime() const { return sampleTimes.back(); } + constexpr const float getLastSampleTime() const { return sampleTimes.empty() ? 0 : sampleTimes.back(); } constexpr const float getAverageSampleTime() const { return std::accumulate(sampleTimes.begin(), sampleTimes.end(), 0.0f) / sampleTimes.size(); diff --git a/src/scene/Scene.cpp b/src/scene/Scene.cpp index 4cff284..fc68f18 100644 --- a/src/scene/Scene.cpp +++ b/src/scene/Scene.cpp @@ -159,7 +159,7 @@ IntersectionInfo Scene::generateIntersections(const PNode& currentNode, const Ra { if (!currentNode->aabb.intersects(ray, tmin, tmax)) { - return {}; + // return {}; } if (currentNode->model.numIndices > 0) { diff --git a/src/util/ModelLoader.cpp b/src/util/ModelLoader.cpp index 119a430..02ffc1a 100644 --- a/src/util/ModelLoader.cpp +++ b/src/util/ModelLoader.cpp @@ -20,7 +20,14 @@ std::vector ModelLoader::loadModel(std::string_view filename) { auto aiVert = mesh->mVertices[v]; model->positions.push_back(glm::vec3(aiVert.x, aiVert.y, aiVert.z)); - model->texCoords.push_back(glm::vec2(mesh->mTextureCoords[0][v].x, mesh->mTextureCoords[0][v].y)); + if (mesh->HasTextureCoords(0)) + { + model->texCoords.push_back(glm::vec2(mesh->mTextureCoords[0][v].x, mesh->mTextureCoords[0][v].y)); + } + else + { + model->texCoords.push_back(glm::vec2(0, 0)); + } aabb.adjust(model->positions.back()); } for (int i = 0; i < mesh->mNumFaces; ++i)