From 8abaf8f77191e1c660def0832d8036a8b4639ba8 Mon Sep 17 00:00:00 2001 From: Luke Lau Date: Thu, 8 Nov 2018 02:57:01 +0000 Subject: [PATCH] Reflection --- .gitignore | 1 + main.cpp | 48 +++----- material.cpp | 28 ++--- material.hpp | 2 +- model.cpp | 25 +++-- model.hpp | 6 +- models/mirrorCube.blend | Bin 0 -> 485640 bytes models/mirrorCube.dae | 235 ++++++++++++++++++++++++++++++++++++++++ program.cpp | 14 +++ program.hpp | 1 + reflectfrag.glsl | 15 +++ reflectvert.glsl | 15 +++ skybox.cpp | 28 ++--- skybox.hpp | 6 + skyboxvert.glsl | 3 +- texturefrag.glsl | 47 ++++---- texturevertex.glsl | 28 +++-- 17 files changed, 395 insertions(+), 107 deletions(-) create mode 100644 models/mirrorCube.blend create mode 100644 models/mirrorCube.dae create mode 100644 reflectfrag.glsl create mode 100644 reflectvert.glsl diff --git a/.gitignore b/.gitignore index bc1c2f2..de0f0b8 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ bin *.log _minted-report .vim +*.blend1 diff --git a/main.cpp b/main.cpp index 613d679..4dd4e60 100644 --- a/main.cpp +++ b/main.cpp @@ -23,7 +23,7 @@ using namespace std; GLuint lightVao; -Program *textureProg, *plainProg; +Program *textureProg, *plainProg, *reflectProg; Skybox *skybox; glm::vec3 camPos = glm::vec3(0.0f, 0.0f, 0.0f); @@ -31,8 +31,8 @@ glm::vec3 camFront = glm::vec3(0.0f, 0.0f, 1.0f); glm::vec3 camUp = glm::vec3(0.0f, 1.0f, 0.0f); float yaw = 1.57, pitch = 0; bool doScale, doRotate, doTranslate; -Model *chest; -glm::vec3 lightPos(0); +Model *chest, *mirrorCube; +glm::vec3 lightPos(3); const int WIDTH = 800, HEIGHT = 600; const float ASPECT = (float)WIDTH / (float)HEIGHT; @@ -88,8 +88,6 @@ void display() { glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); float d = (float)glutGet(GLUT_ELAPSED_TIME) * 0.001f; - skybox->draw(projMat(), viewMat()); - glm::vec4 lightColor(1, 1, 1, 1); drawLight(d, lightPos, lightColor); @@ -98,10 +96,10 @@ void display() { setProjectionAndViewUniforms(textureProg->progId); setLightColorAndPos(textureProg->progId, lightPos, lightColor); - Model::Node *top = chest->find("top"); - top->model = glm::translate(glm::mat4(1), glm::vec3(0, 1, -1)); - top->model = glm::rotate(top->model, sin(d / 2.5f) * 0.5f, glm::vec3(1, 0, 0)); - top->model = glm::translate(top->model, glm::vec3(0, -1, 1)); + /* Model::Node *top = chest->find("top"); */ + /* top->model = glm::translate(glm::mat4(1), glm::vec3(0, 1, -1)); */ + /* top->model = glm::rotate(top->model, sin(d / 2.5f) * 0.5f, glm::vec3(1, 0, 0)); */ + /* top->model = glm::translate(top->model, glm::vec3(0, -1, 1)); */ /* Model::Node *jewels = chest->find("jewels"); */ /* jewels->model = glm::scale(glm::mat4(1), glm::vec3((sin(d) + 1.2f) / 2.f)); */ @@ -114,8 +112,11 @@ void display() { /* Model::Node *key = chest->find("key"); */ /* key->model = glm::translate(glm::mat4(1), glm::vec3(0, 0, sin(d))); */ - /* chest->getRoot()->model = glm::translate(glm::mat4(1), lightPos); */ - chest->draw(); + /* chest->draw(); */ + + mirrorCube->draw(); + + skybox->draw(projMat(), viewMat()); glutSwapBuffers(); } @@ -136,29 +137,11 @@ void setupLightBuffers(GLuint progId) { glVertexAttribPointer(posLoc, 3, GL_FLOAT, GL_FALSE, 0, 0); } -void validateProgram(GLuint progId) { - glValidateProgram(progId); - - GLint success; - glGetProgramiv(progId, GL_VALIDATE_STATUS, &success); - if (!success) { - GLchar log[1024]; - glGetProgramInfoLog(progId, sizeof(log), NULL, log); - fprintf(stderr, "error: %s\n", log); - exit(1); - } -} - void init() { plainProg = new Program("plainvertex.glsl", "plainfrag.glsl"); glUseProgram(plainProg->progId); setupLightBuffers(plainProg->progId); - validateProgram(plainProg->progId); - - textureProg = new Program("texturevertex.glsl", "texturefrag.glsl"); - glUseProgram(textureProg->progId); - - chest = new Model("models/chest.dae", *textureProg); + plainProg->validate(); std::vector faces = { "models/skybox/right.jpg", @@ -170,6 +153,11 @@ void init() { }; skybox = new Skybox(faces); + textureProg = new Program("texturevertex.glsl", "texturefrag.glsl"); + /* chest = new Model("models/chest.dae", *textureProg, *skybox); */ + + mirrorCube = new Model("models/mirrorCube.dae", *textureProg, *skybox); + glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); } diff --git a/material.cpp b/material.cpp index 0e655a1..49af1d4 100644 --- a/material.cpp +++ b/material.cpp @@ -7,17 +7,20 @@ Material::Material(const aiMaterial &ai, GLuint progId): progId(progId) { ai.GetTexture(aiTextureType_DIFFUSE, 0, &path); diffuseMap = new Texture(std::string(path.C_Str())); } + if (ai.GetTextureCount(aiTextureType_SPECULAR) > 0) { aiString path; ai.GetTexture(aiTextureType_SPECULAR, 0, &path); specularMap = new Texture(std::string(path.C_Str())); } + if (ai.GetTextureCount(aiTextureType_NORMALS) > 0) { aiString path; ai.GetTexture(aiTextureType_NORMALS, 0, &path); normalMap = new Texture(std::string(path.C_Str())); } ai.Get(AI_MATKEY_SHININESS, shininess); + ai.Get(AI_MATKEY_REFLECTIVITY, reflectivity); ai.Get(AI_MATKEY_COLOR_AMBIENT, ambient); ai.Get(AI_MATKEY_COLOR_DIFFUSE, diffuse); ai.Get(AI_MATKEY_COLOR_SPECULAR, specular); @@ -36,23 +39,20 @@ void Material::bind() const { glUniform4f(glGetUniformLocation(progId, "material.diffuse"), diffuse.r, diffuse.g, diffuse.b, diffuse.a); glUniform4f(glGetUniformLocation(progId, "material.specular"), specular.r, specular.g, specular.b, specular.a); glUniform1f(glGetUniformLocation(progId, "material.shininess"), shininess); + glUniform1f(glGetUniformLocation(progId, "material.reflectivity"), reflectivity); glUniform1i(glGetUniformLocation(progId, "material.hasTexture"), diffuseMap != nullptr); glUniform1i(glGetUniformLocation(progId, "material.hasSpecularMap"), specularMap != nullptr); glUniform1i(glGetUniformLocation(progId, "material.hasNormalMap"), normalMap != nullptr); - if (diffuseMap) { - glUniform1i(glGetUniformLocation(progId, "material.diffuseMap"), 0); - glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_2D, diffuseMap->texId); - } - if (specularMap) { - glUniform1i(glGetUniformLocation(progId, "material.specularMap"), 1); - glActiveTexture(GL_TEXTURE1); - glBindTexture(GL_TEXTURE_2D, specularMap->texId); - } - if (normalMap) { - glUniform1i(glGetUniformLocation(progId, "material.normalMap"), 2); + glUniform1i(glGetUniformLocation(progId, "material.diffuseMap"), 2); glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, normalMap->texId); - } + if (diffuseMap) glBindTexture(GL_TEXTURE_2D, diffuseMap->texId); + + glUniform1i(glGetUniformLocation(progId, "material.specularMap"), 3); + glActiveTexture(GL_TEXTURE3); + if (specularMap) glBindTexture(GL_TEXTURE_2D, specularMap->texId); + + glUniform1i(glGetUniformLocation(progId, "material.normalMap"), 4); + glActiveTexture(GL_TEXTURE4); + if (normalMap) glBindTexture(GL_TEXTURE_2D, normalMap->texId); } diff --git a/material.hpp b/material.hpp index 06cd2d0..0fb6f5d 100644 --- a/material.hpp +++ b/material.hpp @@ -13,7 +13,7 @@ class Material { private: GLuint progId; aiColor4D ambient, diffuse, specular; - ai_real shininess; + ai_real shininess, reflectivity; struct Texture { Texture(const std::string &file); diff --git a/model.cpp b/model.cpp index 524b913..c9ecdc1 100644 --- a/model.cpp +++ b/model.cpp @@ -1,4 +1,5 @@ #include "model.hpp" +#include "error.hpp" #include #include #include @@ -25,8 +26,8 @@ Model::Mesh::Mesh(const aiMesh *aiMesh, GLuint progId) { aiVector3D b = aiMesh->mBitangents[i]; bitangents.push_back(glm::vec3(b.x, b.y, b.z)); } else { - tangents.push_back(glm::vec3(0)); - bitangents.push_back(glm::vec3(0)); + std::cerr << "Missing tangents: make sure blender has UV maps" << std::endl; + exit(1); } // check for texture coord set 0 if (aiMesh->HasTextureCoords(0)) { @@ -59,13 +60,13 @@ Model::Mesh::Mesh(const aiMesh *aiMesh, GLuint progId) { GLuint vertexVbo = vbos[0], normalVbo = vbos[1], texCoordVbo = vbos[2], indicesVbo = vbos[3]; GLuint tangentVbo = vbos[4], bitangentVbo = vbos[5]; - GLuint posLoc = glGetAttribLocation(progId, "vPosition"); + GLuint posLoc = glGetAttribLocation(progId, "pos"); glBindBuffer(GL_ARRAY_BUFFER, vertexVbo); glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(glm::vec3), &vertices[0], GL_STATIC_DRAW); glEnableVertexAttribArray(posLoc); glVertexAttribPointer(posLoc, 3, GL_FLOAT, GL_FALSE, 0, 0); - GLuint normalLoc = glGetAttribLocation(progId, "vNormal"); + GLuint normalLoc = glGetAttribLocation(progId, "unscaledNormal"); glBindBuffer(GL_ARRAY_BUFFER, normalVbo); glBufferData(GL_ARRAY_BUFFER, normals.size() * sizeof(glm::vec3), &normals[0], GL_STATIC_DRAW); glEnableVertexAttribArray(normalLoc); @@ -91,7 +92,7 @@ Model::Mesh::Mesh(const aiMesh *aiMesh, GLuint progId) { glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indicesVbo); glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices.size() * sizeof(GLuint), &indices[0], GL_STATIC_DRAW); -}; +} Model::Node::Node(const aiNode &node, GLuint progId): ai(node), progId(progId) { for (int i = 0; i < node.mNumMeshes; i++) { @@ -113,6 +114,7 @@ glm::mat4 aiMatrixToMat4(aiMatrix4x4 from) { void Model::Node::draw( const std::vector &meshes, const std::vector &materials, + const Skybox skybox, glm::mat4 parentTrans = glm::mat4(1)) const { GLuint modelLoc = glGetUniformLocation(progId, "model"); @@ -125,14 +127,20 @@ void Model::Node::draw( const std::vector &meshes, Material material = materials[mesh.materialIndex]; material.bind(); + glUniform1i(glGetUniformLocation(progId, "skybox"), 5); + glActiveTexture(GL_TEXTURE5); + glBindTexture(GL_TEXTURE_CUBE_MAP, skybox.getTexture()); + glUniformMatrix4fv(modelLoc, 1, GL_FALSE, glm::value_ptr(m)); glDrawElements(GL_TRIANGLES, mesh.numIndices, GL_UNSIGNED_INT, 0); } - for (Node *child: children) child->draw(meshes, materials, m); + for (Node *child: children) child->draw(meshes, materials, skybox, m); } -Model::Model(const std::string &path, Program p): program(p) { +Model::Model(const std::string &path, Program p, Skybox s): program(p), skybox(s) { + glUseProgram(p.progId); + const aiScene *scene = importer.ReadFile(path, aiProcess_Triangulate | aiProcess_CalcTangentSpace | aiProcess_GenNormals); if (!scene) { @@ -155,7 +163,8 @@ Model::Model(const std::string &path, Program p): program(p) { void Model::draw() const { glUseProgram(program.progId); - root->draw(meshes, materials); + root->draw(meshes, materials, skybox); + program.validate(); } Model::Node* Model::find(const std::string &name) { diff --git a/model.hpp b/model.hpp index de8e27f..e0c8a2d 100644 --- a/model.hpp +++ b/model.hpp @@ -9,6 +9,7 @@ #include #include "material.hpp" #include "program.hpp" +#include "skybox.hpp" class Model { @@ -19,13 +20,13 @@ class Model { }; public: - Model(const std::string &path, Program p); + Model(const std::string &path, Program p, Skybox s); void draw() const; class Node { public: Node(const aiNode &aiNode, GLuint progId); - void draw(const std::vector &meshes, const std::vector &materials, glm::mat4 parentModel) const; + void draw(const std::vector &meshes, const std::vector &materials, const Skybox s, glm::mat4 parentModel) const; const std::vector &getChildren() const { return children; } Node* findNode(const aiNode &aiNode); glm::mat4 model = glm::mat4(1); @@ -42,6 +43,7 @@ class Model { private: const Program program; + const Skybox skybox; std::vector meshes; Node *root; diff --git a/models/mirrorCube.blend b/models/mirrorCube.blend new file mode 100644 index 0000000000000000000000000000000000000000..77d1d4e7342bc4e8f9fa43a366d9ce248bcb2365 GIT binary patch literal 485640 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ã%CERj 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 literal 0 HcmV?d00001 diff --git a/models/mirrorCube.dae b/models/mirrorCube.dae new file mode 100644 index 0000000..d84bd4b --- /dev/null +++ b/models/mirrorCube.dae @@ -0,0 +1,235 @@ + + + + + Blender User + Blender 2.79.0 commit date:2018-03-22, commit time:14:10, hash:f4dc9f9 + + 2018-11-08T02:49:10 + 2018-11-08T02:49:10 + + Z_UP + + + + + + + 49.13434 + 1.777778 + 0.1 + 100 + + + + + + 0 + 0 + 0 + + + + + + + + + 1 1 1 + 1 + 0 + 0.00111109 + + + + + 0 + 0 + 8192 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 29.99998 + 75 + 0.15 + 1 + 0 + 1 + 2 + 1.000799 + 30.002 + 1 + 3 + 0.04999995 + 2880 + 3 + 1 + 0 + 0 + 2 + 1 + 1 + 1 + 0 + 1 + 0.1 + 0.1 + 1 + 0.000999987 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 2 + 1 + 1 + 1 + 1 + 0 + + + + + + + brickwall_normal.jpg + + + + + + + + brickwall_normal_jpg + + + + + brickwall_normal_jpg-surface + + + + + + 0 0 0 1 + + + 0 0 0 1 + + + 0.64 0.005287599 0.4252137 1 + + + 0.5 0.5 0.5 1 + + + 50 + + + 1 1 1 1 + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + 1 1 -1 1 -1 -1 -1 -0.9999998 -1 -0.9999997 1 -1 1 0.9999995 1 0.9999994 -1.000001 1 -1 -0.9999997 1 -1 1 1 + + + + + + + + + + 0 0 -1 0 0 1 1 0 -2.38419e-7 0 -1 -4.76837e-7 -1 2.38419e-7 -1.49012e-7 2.68221e-7 1 2.38419e-7 0 0 -1 0 0 1 1 -5.96046e-7 3.27825e-7 -4.76837e-7 -1 0 -1 2.38419e-7 -1.19209e-7 2.08616e-7 1 0 + + + + + + + + + + 0 0 1 1 0 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 1 0 1 1 0 0 1 0 0 0 0 1 0 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 0 0 1 0 1 1 1 0 1 1 0 1 + + + + + + + + + + + + + + +

0 0 0 2 0 1 3 0 2 7 1 3 5 1 4 4 1 5 4 2 6 1 2 7 0 2 8 5 3 9 2 3 10 1 3 11 2 4 12 7 4 13 3 4 14 0 5 15 7 5 16 4 5 17 0 6 18 1 6 19 2 6 20 7 7 21 6 7 22 5 7 23 4 8 24 5 8 25 1 8 26 5 9 27 6 9 28 2 9 29 2 10 30 6 10 31 7 10 32 0 11 33 3 11 34 7 11 35

+
+
+
+
+ + + + + 0.6859207 -0.3240135 0.6515582 7.481132 0.7276763 0.3054208 -0.6141704 -6.50764 0 0.8953956 0.4452714 5.343665 0 0 0 1 + + + + -0.2908646 -0.7711008 0.5663932 4.076245 0.9551712 -0.1998834 0.2183912 1.005454 -0.05518906 0.6045247 0.7946723 5.903862 0 0 0 1 + + + + 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/program.cpp b/program.cpp index b1f2ede..d6adf06 100644 --- a/program.cpp +++ b/program.cpp @@ -48,3 +48,17 @@ Program::Program(const string vertexShader, const string fragmentShader) { exit(1); } } + +void Program::validate() const { + glValidateProgram(progId); + + GLint success; + glGetProgramiv(progId, GL_VALIDATE_STATUS, &success); + if (!success) { + GLchar log[1024]; + glGetProgramInfoLog(progId, sizeof(log), NULL, log); + fprintf(stderr, "error: %s\n", log); + exit(1); + } +} + diff --git a/program.hpp b/program.hpp index 0436338..3fa8879 100644 --- a/program.hpp +++ b/program.hpp @@ -5,6 +5,7 @@ class Program { public: Program(const std::string vert, const std::string frag); + void validate() const; GLuint progId; }; #endif diff --git a/reflectfrag.glsl b/reflectfrag.glsl new file mode 100644 index 0000000..9506153 --- /dev/null +++ b/reflectfrag.glsl @@ -0,0 +1,15 @@ +#version 330 + +in vec3 fragPos; +in vec3 normal; + +uniform vec3 viewPos; +uniform samplerCube skybox; + +out vec4 fragColor; + +void main() { + vec3 I = normalize(fragPos - viewPos); + vec3 R = reflect(I, normalize(normal)); + fragColor = vec4(texture(skybox, R).rgb, 1); +} diff --git a/reflectvert.glsl b/reflectvert.glsl new file mode 100644 index 0000000..43a4d3d --- /dev/null +++ b/reflectvert.glsl @@ -0,0 +1,15 @@ +#version 330 + +in vec3 pos; +in vec3 unscaledNormal; + +out vec3 fragPos; +out vec3 normal; + +uniform mat4 model, view, projection; + +void main() { + normal = mat3(inverse(transpose(model))) * unscaledNormal; + fragPos = vec3(model * vec4(pos, 1)); + gl_Position = projection * view * vec4(fragPos, 1); +} diff --git a/skybox.cpp b/skybox.cpp index bd097cb..79ce9d0 100644 --- a/skybox.cpp +++ b/skybox.cpp @@ -1,13 +1,12 @@ #include "shapes.hpp" #include "skybox.hpp" #include "image.hpp" -#include #include Skybox::Skybox(const std::vector faces): program("skyboxvert.glsl", "skyboxfrag.glsl") { - glUseProgram(program.progId); glGenTextures(1, &texId); glBindTexture(GL_TEXTURE_CUBE_MAP, texId); + glDepthFunc(GL_LEQUAL); int width, height, numChans; for (int i = 0; i < faces.size(); i++) { @@ -30,6 +29,9 @@ Skybox::Skybox(const std::vector faces): program("skyboxvert.glsl", auto vertices = cube(); + //reverse so facing inside out + std::reverse(vertices.begin(), vertices.end()); + glBindBuffer(GL_ARRAY_BUFFER, vbo); glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(glm::vec3), &vertices[0], GL_STATIC_DRAW); @@ -37,26 +39,11 @@ Skybox::Skybox(const std::vector faces): program("skyboxvert.glsl", glEnableVertexAttribArray(posLoc); glVertexAttribPointer(posLoc, 3, GL_FLOAT, GL_FALSE, 0, 0); } -void validatePrograms(GLuint progId) { - glValidateProgram(progId); - - GLint success; - glGetProgramiv(progId, GL_VALIDATE_STATUS, &success); - if (!success) { - GLchar log[1024]; - glGetProgramInfoLog(progId, sizeof(log), NULL, log); - fprintf(stderr, "error: %s\n", log); - exit(1); - } -} void Skybox::draw(glm::mat4 proj, glm::mat4 view) const { glUseProgram(program.progId); - glDepthMask(GL_FALSE); - glDisable(GL_CULL_FACE); glBindVertexArray(vao); - validatePrograms(program.progId); GLuint projLoc = glGetUniformLocation(program.progId, "projection"); glUniformMatrix4fv(projLoc, 1, GL_FALSE, glm::value_ptr(proj)); @@ -65,8 +52,11 @@ void Skybox::draw(glm::mat4 proj, glm::mat4 view) const { view = glm::mat4(glm::mat3(view)); glUniformMatrix4fv(viewLoc, 1, GL_FALSE, glm::value_ptr(view)); + glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_CUBE_MAP, texId); glDrawArrays(GL_TRIANGLES, 0, 36); - glEnable(GL_CULL_FACE); - glDepthMask(GL_TRUE); +} + +GLuint Skybox::getTexture() const { + return texId; } diff --git a/skybox.hpp b/skybox.hpp index f1ac4ee..759ce7a 100644 --- a/skybox.hpp +++ b/skybox.hpp @@ -1,3 +1,6 @@ +#ifndef SKYBOX_HPP +#define SKYBOX_HPP + #include #include #include @@ -7,7 +10,10 @@ class Skybox { public: Skybox(const std::vector faces); void draw(glm::mat4 proj, glm::mat4 view) const; + GLuint getTexture() const; private: GLuint texId, vao; const Program program; }; + +#endif diff --git a/skyboxvert.glsl b/skyboxvert.glsl index f1ba729..4946c73 100644 --- a/skyboxvert.glsl +++ b/skyboxvert.glsl @@ -8,5 +8,6 @@ uniform mat4 view; void main() { texCoords = pos; - gl_Position = projection * view * vec4(pos, 1); + vec4 fragPos = projection * view * vec4(pos, 1); + gl_Position = fragPos.xyww; } diff --git a/texturefrag.glsl b/texturefrag.glsl index 94bda7f..2a3de55 100644 --- a/texturefrag.glsl +++ b/texturefrag.glsl @@ -8,6 +8,8 @@ struct Material { sampler2D specularMap; float shininess; + float reflectivity; + bool hasTexture; bool hasSpecularMap; @@ -15,7 +17,7 @@ struct Material { bool hasNormalMap; }; -in vec3 defNormal; +in vec3 defNormal, worldNormal; in vec2 texCoord; // These are all in tangent space @@ -23,47 +25,50 @@ in vec3 lightPos; in vec3 viewPos; in vec3 fragPos; +in vec3 worldViewPos, worldFragPos; + uniform vec4 lightColor; uniform Material material; +uniform samplerCube skybox; + out vec4 FragColor; -void main() { +vec4 reflection(vec3 normal) { + vec3 I = normalize(worldFragPos - worldViewPos); + vec3 R = reflect(I, normalize(normal)); + return vec4(texture(skybox, R).rgb, 1); +} - vec3 normal; - if (material.hasNormalMap) { - normal = texture(material.normalMap, texCoord).rgb; +void main() { + vec3 normal = texture(material.normalMap, texCoord).rgb; normal = normalize(normal * 2 - 1); - } else { + if (!material.hasNormalMap) normal = defNormal; - } vec3 lightDir = normalize(lightPos - fragPos); - vec4 diffTex; - if (material.hasTexture) - diffTex = texture(material.diffuseMap, texCoord); - else - diffTex = vec4(1); + vec4 diffTex = texture(material.diffuseMap, texCoord); + if (!material.hasTexture) + diffTex = material.diffuse; + + diffTex = mix(diffTex, reflection(worldNormal), material.reflectivity); vec4 ambient = material.ambient * diffTex; - vec4 diffuse = max(0, dot(lightDir, normal)) * material.diffuse * diffTex; + vec4 diffuse = max(0, dot(lightDir, normal)) * diffTex; vec3 viewDir = normalize(viewPos - fragPos); vec3 reflectDir = reflect(-lightDir, normal); - vec4 specTex; - if (material.hasSpecularMap) - specTex = texture(material.specularMap, texCoord); - else - specTex = vec4(1); + vec4 specTex = texture(material.specularMap, texCoord); + if (!material.hasSpecularMap) + specTex = material.specular; - vec4 specular = pow(max(0, dot(viewDir, reflectDir)), material.shininess) * material.specular * specTex; + vec4 specular = pow(max(0, dot(viewDir, reflectDir)), material.shininess) * specTex; - vec4 lighting = (ambient + diffuse + specular) * lightColor; + FragColor = (ambient + diffuse + specular) * lightColor; - FragColor = lighting; } diff --git a/texturevertex.glsl b/texturevertex.glsl index 684b9b9..06535cf 100644 --- a/texturevertex.glsl +++ b/texturevertex.glsl @@ -1,7 +1,7 @@ #version 330 -in vec3 vPosition; +in vec3 pos; in vec4 vColor; -in vec3 vNormal; +in vec3 unscaledNormal; in vec3 tangent; in vec3 bitangent; in vec2 vTexCoord; @@ -10,31 +10,37 @@ uniform mat4 model; uniform mat4 view; uniform mat4 projection; -out vec3 defNormal; +out vec3 defNormal, worldNormal; out vec2 texCoord; uniform vec3 vLightPos; uniform vec3 vViewPos; -out vec3 lightPos; -out vec3 viewPos; -out vec3 fragPos; +out vec3 lightPos, viewPos, fragPos; +out vec3 worldViewPos, worldFragPos; void main() { - vec4 pos = model * vec4(vPosition, 1.f); + vec4 worldPos = model * vec4(pos, 1.f); texCoord = vTexCoord; //tangent space stuff vec3 T = normalize(vec3(model * vec4(tangent, 0.0))); vec3 B = normalize(vec3(model * vec4(bitangent, 0.0))); - vec3 N = normalize(vec3(model * vec4(vNormal, 0.0))); + vec3 N = normalize(vec3(model * vec4(unscaledNormal, 0.0))); // convert TBN to world->tangent space mat3 TBN = transpose(mat3(T, B, N)); lightPos = TBN * vLightPos; viewPos = TBN * vViewPos; - fragPos = TBN * vec3(pos); - defNormal = TBN * mat3(transpose(inverse(model))) * vNormal; + fragPos = TBN * vec3(worldPos); - gl_Position = projection * view * pos; + worldViewPos = vViewPos; + worldFragPos = vec3(worldPos); + + vec3 normal = mat3(transpose(inverse(model))) * unscaledNormal; + + defNormal = TBN * normal; + worldNormal = normal; + + gl_Position = projection * view * worldPos; } -- 2.30.2