From 8286d052b34801763295e6ab487100c1f9606a2d Mon Sep 17 00:00:00 2001 From: antc13 Date: Sun, 24 Jan 2016 14:18:04 +0100 Subject: [PATCH] Changed color values from floats to glm::vec4 --- include/Engine/Rendering/ModelJob.h | 8 ++++++++ include/Engine/Rendering/RawModelCustom.h | 6 +++--- resources/Shaders/ForwardPlus.frag.glsl | 3 ++- src/Engine/Rendering/DrawFinalPass.cpp | 1 + src/Engine/Rendering/RawModelCustom.cpp | 6 +++--- src/Engine/Rendering/Skeleton.cpp | 2 +- 6 files changed, 18 insertions(+), 8 deletions(-) diff --git a/include/Engine/Rendering/ModelJob.h b/include/Engine/Rendering/ModelJob.h index a88530e7..01f4cca4 100644 --- a/include/Engine/Rendering/ModelJob.h +++ b/include/Engine/Rendering/ModelJob.h @@ -24,6 +24,10 @@ struct ModelJob : RenderJob DiffuseTexture = matGroup.Texture.get(); NormalTexture = matGroup.NormalMap.get(); SpecularTexture = matGroup.SpecularMap.get(); + IncandescenceTexture = matGroup.IncandescenceMap.get(); + DiffuseColor = matGroup.DiffuseColor; + SpecularColor = matGroup.SpecularColor; + IncandescenceColor = matGroup.IncandescenceColor; StartIndex = matGroup.StartIndex; EndIndex = matGroup.EndIndex; Matrix = matrix; @@ -43,9 +47,13 @@ struct ModelJob : RenderJob const Texture* DiffuseTexture; const Texture* NormalTexture; const Texture* SpecularTexture; + const Texture* IncandescenceTexture; float Shininess = 0.f; glm::vec4 Color; const ::Model* Model = nullptr; + glm::vec4 DiffuseColor; + glm::vec4 SpecularColor; + glm::vec4 IncandescenceColor; unsigned int StartIndex = 0; unsigned int EndIndex = 0; World* World; diff --git a/include/Engine/Rendering/RawModelCustom.h b/include/Engine/Rendering/RawModelCustom.h index a1a2f1f6..f1bc0e24 100644 --- a/include/Engine/Rendering/RawModelCustom.h +++ b/include/Engine/Rendering/RawModelCustom.h @@ -48,9 +48,9 @@ public: { float SpecularExponent; float ReflectionFactor; - float DiffuseColor[3]; - float SpecularColor[3]; - float IncandescenceColor[3]; + glm::vec4 DiffuseColor{ 1.0f, 1.0f, 1.0f, 1.0f }; + glm::vec4 SpecularColor{ 1.0f, 1.0f, 1.0f, 1.0f }; + glm::vec4 IncandescenceColor{ 1.0f, 1.0f, 1.0f, 1.0f }; unsigned int StartIndex; unsigned int EndIndex; //float Transparency; diff --git a/resources/Shaders/ForwardPlus.frag.glsl b/resources/Shaders/ForwardPlus.frag.glsl index b9db56d3..2a524096 100644 --- a/resources/Shaders/ForwardPlus.frag.glsl +++ b/resources/Shaders/ForwardPlus.frag.glsl @@ -4,6 +4,7 @@ uniform mat4 M; uniform mat4 V; uniform mat4 P; uniform vec4 Color; +uniform vec4 DiffuseColor; uniform vec2 ScreenDimensions; uniform sampler2D texture0; @@ -129,7 +130,7 @@ void main() totalLighting.Specular += result.Specular; } - fragmentColor += (totalLighting.Diffuse + totalLighting.Specular) * texel * Color; + fragmentColor += DiffuseColor * (totalLighting.Diffuse + totalLighting.Specular) * texel * Color; //fragmentColor += Input.DiffuseColor; //fragmentColor += Input.DiffuseColor * (totalLighting.Diffuse) * texel * Color; //fragmentColor += Input.DiffuseColor + vec4(0.0, LightGrids.Data[currentTile].Amount/3, 0, 1); diff --git a/src/Engine/Rendering/DrawFinalPass.cpp b/src/Engine/Rendering/DrawFinalPass.cpp index 7be1223a..2b126951 100644 --- a/src/Engine/Rendering/DrawFinalPass.cpp +++ b/src/Engine/Rendering/DrawFinalPass.cpp @@ -45,6 +45,7 @@ void DrawFinalPass::Draw(RenderScene& scene) //TODO: Kolla upp "header/include/common" shader saken så man slipper skicka in asmycket uniforms glUniformMatrix4fv(glGetUniformLocation(shaderHandle, "M"), 1, GL_FALSE, glm::value_ptr(modelJob->Matrix)); glUniform4fv(glGetUniformLocation(shaderHandle, "Color"), 1, glm::value_ptr(modelJob->Color)); + glUniform4fv(glGetUniformLocation(shaderHandle, "DiffuseColor"), 1, glm::value_ptr(modelJob->DiffuseColor)); if(modelJob->DiffuseTexture != nullptr) { glActiveTexture(GL_TEXTURE0); diff --git a/src/Engine/Rendering/RawModelCustom.cpp b/src/Engine/Rendering/RawModelCustom.cpp index de87d5fc..fca796ac 100644 --- a/src/Engine/Rendering/RawModelCustom.cpp +++ b/src/Engine/Rendering/RawModelCustom.cpp @@ -138,11 +138,11 @@ void RawModelCustom::ReadMaterialSingle(unsigned int &offset, char* fileData, un newMaterial.ReflectionFactor = *(float*)(fileData + offset); offset += sizeof(float); - memcpy(newMaterial.DiffuseColor, fileData + offset, sizeof(float) * 3); + memcpy(&newMaterial.DiffuseColor[0], fileData + offset, sizeof(float) * 3); offset += sizeof(float) * 3; - memcpy(newMaterial.SpecularColor, fileData + offset, sizeof(float) * 3); + memcpy(&newMaterial.SpecularColor[0], fileData + offset, sizeof(float) * 3); offset += sizeof(float) * 3; - memcpy(newMaterial.IncandescenceColor, fileData + offset, sizeof(float) * 3); + memcpy(&newMaterial.IncandescenceColor[0], fileData + offset, sizeof(float) * 3); offset += sizeof(float) * 3; newMaterial.StartIndex = *(unsigned int*)(fileData + offset); diff --git a/src/Engine/Rendering/Skeleton.cpp b/src/Engine/Rendering/Skeleton.cpp index 986e634c..1f150b00 100644 --- a/src/Engine/Rendering/Skeleton.cpp +++ b/src/Engine/Rendering/Skeleton.cpp @@ -90,7 +90,7 @@ void Skeleton::AccumulateBoneTransforms(bool noRootMotion, const Animation::Keyf int k = 0; } else { if (bone->Parent) { - boneMatrix = parentMatrix * bone->Parent->OffsetMatrix * glm::translate(glm::vec3(1.718, 0, 0)); // * glm::inverse(bone->OffsetMatrix); + boneMatrix = parentMatrix; // * glm::inverse(bone->OffsetMatrix); } boneMatrices[bone->ID] = boneMatrix; // * bone->OffsetMatrix; }