From 3ffed086b1486e7da506dc01d39c4fe30f01f8ae Mon Sep 17 00:00:00 2001 From: Claire Schwarzer Date: Thu, 9 Jul 2026 18:38:46 +0200 Subject: [PATCH] stuff --- assets/DefaultTexture.jpg | 4 ++-- assets/shaders/basicFragment.frag | 3 +-- engine/Backend/Backend.cpp | 5 ++++ engine/Backend/Backend.h | 2 ++ engine/Backend/Model.cpp | 8 +++---- engine/Backend/Texture.cpp | 1 - game/game.cpp | 40 +++++++++++++++++++++++++++++++ 7 files changed, 54 insertions(+), 9 deletions(-) diff --git a/assets/DefaultTexture.jpg b/assets/DefaultTexture.jpg index 3c34617..094fc48 100644 --- a/assets/DefaultTexture.jpg +++ b/assets/DefaultTexture.jpg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ba383843605e81f46167b933283497dd4ac2ec5c326b6a33d7603703ff5b5ae -size 629 +oid sha256:3948c302246a8763da8840137f1e203c5049076b1a0542a58ea7abab90dd348b +size 628 diff --git a/assets/shaders/basicFragment.frag b/assets/shaders/basicFragment.frag index f33c7ae..6fbdf9a 100644 --- a/assets/shaders/basicFragment.frag +++ b/assets/shaders/basicFragment.frag @@ -90,9 +90,8 @@ void main() vec3 viewDir = normalize(viewPos - FragPos); vec3 albedo = calcTextures(); - albedo = vec3(1,1,1); - //result += calcDirectLight(dirLight, norm, viewDir, albedo); + result += calcDirectLight(dirLight, norm, viewDir, albedo); for(int i = 0; i < numberOfPointLights; i++){ if (pointLights[i].disabled) continue; diff --git a/engine/Backend/Backend.cpp b/engine/Backend/Backend.cpp index 38b1495..d9655ba 100644 --- a/engine/Backend/Backend.cpp +++ b/engine/Backend/Backend.cpp @@ -96,4 +96,9 @@ namespace engine::Backend void scroll_callback(GLFWwindow* window2, double xoffset, double yoffset) { } + + GLFWwindow* getWindow() + { + return window; + } } \ No newline at end of file diff --git a/engine/Backend/Backend.h b/engine/Backend/Backend.h index 9f15425..7298c08 100644 --- a/engine/Backend/Backend.h +++ b/engine/Backend/Backend.h @@ -18,4 +18,6 @@ namespace engine::Backend bool Init(const char* title, int width, int height); void Cleanup(); + + GLFWwindow* getWindow(); } \ No newline at end of file diff --git a/engine/Backend/Model.cpp b/engine/Backend/Model.cpp index 8b908f2..8e14040 100644 --- a/engine/Backend/Model.cpp +++ b/engine/Backend/Model.cpp @@ -187,7 +187,7 @@ vector Model::loadMaterialTextures(aiMaterial *mat, aiTextureType type, string defaultPath = "DefaultTexture.jpg"; Texture texture; - texture.id = TextureFromFile(defaultPath.c_str(), "assets/"); + texture.id = TextureFromFile(defaultPath.c_str(), "assets"); texture.type = typeName; texture.path = defaultPath; textures.push_back(texture); @@ -201,8 +201,7 @@ vector Model::loadMaterialTextures(aiMaterial *mat, aiTextureType type, unsigned inline int TextureFromFile(const char *path, const string &directory, bool gamma) { - string filename = string(path); - filename = directory + '/' + filename; + string filename = directory + '/' + path; unsigned int textureID; glGenTextures(1, &textureID); @@ -232,7 +231,8 @@ unsigned inline int TextureFromFile(const char *path, const string &directory, b } else { - std::cout << "Texture failed to load at path: " << path << std::endl; + std::cout << "Texture failed to load at path: " << filename << std::endl; + std::cerr << "STB Reason: " << stbi_failure_reason() << "\n"; stbi_image_free(data); } diff --git a/engine/Backend/Texture.cpp b/engine/Backend/Texture.cpp index 50fd112..096bb01 100644 --- a/engine/Backend/Texture.cpp +++ b/engine/Backend/Texture.cpp @@ -3,7 +3,6 @@ #include #include -#define STB_IMAGE_IMPLEMENTATION #include Texture::Texture(const char* texturePath, bool flip) diff --git a/game/game.cpp b/game/game.cpp index d4078c4..0eac39e 100644 --- a/game/game.cpp +++ b/game/game.cpp @@ -4,10 +4,14 @@ #include #include +#include #include +#include #include +#include "engine/Backend/Backend.h" + namespace game { const int SCREEN_WIDTH = 1366; @@ -26,9 +30,19 @@ namespace game shader.emplace("assets/shaders/basicVertex.vert", "assets/shaders/basicFragment.frag"); shader->Use(); + shader->setInt("ourTexture", 0); + shader->setInt("material.diffuse", 0); + shader->setInt("material.specular", 1); + + shader->setInt("numberOfPointLights", 1); + shader->setInt("numberOfSpotLights", 1); + camera.emplace(glm::vec3(0.0f, 0.0f, 0.0f)); model.emplace("assets/models/sponza/Sponza.gltf"); + glfwSetInputMode(engine::Backend::getWindow(), GLFW_CURSOR, GLFW_CURSOR_DISABLED); + glfwSetInputMode(engine::Backend::getWindow(), GLFW_RAW_MOUSE_MOTION, GLFW_TRUE); + return true; } @@ -40,6 +54,32 @@ namespace game shader->Use(); camera->Update(shader.value(), SCREEN_WIDTH, SCREEN_HEIGHT); + + shader->setFloat("material.shininess", 32.0f); + + shader->setVec3("dirLight.direction", -0.2f, -1.0f, -0.3f); + shader->setVec3("dirLight.ambient", 0.05f, 0.05f, 0.05f); + shader->setVec3("dirLight.diffuse", 0.8f, 0.8f, 0.8f); + shader->setVec3("dirLight.specular", 0.8f, 0.8f, 0.8f); + + shader->setVec3("pointLights[0].position", -1.88f, 8.45f, -0.98f); + shader->setVec3("pointLights[0].ambient", 0.05f, 0.05f, 0.05f); + shader->setVec3("pointLights[0].diffuse", 1.0f, 0.7f, 0.4f); + shader->setVec3("pointLights[0].specular", 1.0f, 1.0f, 1.0f); + shader->setFloat("pointLights[0].constant", 1.0f); + shader->setFloat("pointLights[0].linear", 0.09f); + shader->setFloat("pointLights[0].quadratic", 0.032f); + + shader->setVec3("spotLights[0].position", camera->position); + shader->setVec3("spotLights[0].direction", camera->front); + shader->setVec3("spotLights[0].ambient", 0.0f, 0.0f, 0.0f); + shader->setVec3("spotLights[0].diffuse", 1.0f, 1.0f, 1.0f); + shader->setVec3("spotLights[0].specular", 1.0f, 1.0f, 1.0f); + shader->setFloat("spotLights[0].constant", 1.0f); + shader->setFloat("spotLights[0].linear", 0.09f); + shader->setFloat("spotLights[0].quadratic", 0.032f); + shader->setFloat("spotLights[0].cutOff", glm::cos(glm::radians(12.5f))); + shader->setFloat("spotLights[0].outerCutOff", glm::cos(glm::radians(15.0f))); } void Render()