not correct way of using normal maps but gives me some preliminary info.
This commit is contained in:
parent
2eabd78ed5
commit
532382b1f9
3 changed files with 22 additions and 6 deletions
|
|
@ -4,6 +4,7 @@ out vec4 FragColor;
|
||||||
in vec2 ourTexCoord;
|
in vec2 ourTexCoord;
|
||||||
in vec3 ourNormCoord;
|
in vec3 ourNormCoord;
|
||||||
in vec3 WorldPos;
|
in vec3 WorldPos;
|
||||||
|
in mat4 TBN;
|
||||||
|
|
||||||
// TODO: make temporary hard coded world/camera pos dynamic
|
// TODO: make temporary hard coded world/camera pos dynamic
|
||||||
//uniform vec3 WorldPos ;
|
//uniform vec3 WorldPos ;
|
||||||
|
|
@ -70,15 +71,31 @@ float GeometrySmith(vec3 N, vec3 V, vec3 L, float roughness)
|
||||||
return ggx1 * ggx2;
|
return ggx1 * ggx2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vec3 normal(){
|
||||||
|
// load and invert normal
|
||||||
|
vec3 normal = normalize(texture(texture_normal1, ourTexCoord).rgb * 2.0 - 1.0);
|
||||||
|
|
||||||
|
normal = (TBN * vec4(normal, 1.0)).xyz;
|
||||||
|
|
||||||
|
//TODO: Make the normal vector match the matrix of the rest of the model by
|
||||||
|
//actually calculating the TBN
|
||||||
|
|
||||||
|
return normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
vec3 PBR(vec3 albedo, float roughness, float metallic, float ao)
|
vec3 PBR(vec3 albedo, float roughness, float metallic, float ao)
|
||||||
{
|
{
|
||||||
// Establish a temporary hard coded light position
|
// Establish a temporary hard coded light position
|
||||||
vec3 lightPosition = vec3( (sin(tick / 1000.0)*2), 1 + sin(tick / 600.0)*2, 2.0);
|
vec3 lightPosition = vec3( 1, 1, 2);
|
||||||
|
//vec3 lightPosition = vec3( (sin(tick / 1000.0)*2), 1 + sin(tick / 600.0)*2, 2.0);
|
||||||
//vec3 lightColor = vec3(1.0, 1.0, 1.0) - sin(tick / 90);
|
//vec3 lightColor = vec3(1.0, 1.0, 1.0) - sin(tick / 90);
|
||||||
vec3 lightColor = vec3(13.47, 11.31, 10.79);
|
vec3 lightColor = vec3(13.47, 11.31, 10.79);
|
||||||
|
|
||||||
vec3 N = normalize(ourNormCoord);
|
vec3 N = normalize(ourNormCoord);
|
||||||
vec3 V = normalize(CameraPos - WorldPos);
|
vec3 V = normalize(CameraPos - WorldPos);
|
||||||
|
N = (N + normal()) / 2;
|
||||||
|
//N = normal(); For seeing if normal map tracks with light.
|
||||||
|
|
||||||
vec3 F0 = vec3(0.04);
|
vec3 F0 = vec3(0.04);
|
||||||
F0 = mix(F0, albedo, metallic);
|
F0 = mix(F0, albedo, metallic);
|
||||||
|
|
@ -126,9 +143,5 @@ void main()
|
||||||
float metallic = texture(texture_rma1, ourTexCoord).g;
|
float metallic = texture(texture_rma1, ourTexCoord).g;
|
||||||
float ao = texture(texture_rma1, ourTexCoord).b;
|
float ao = texture(texture_rma1, ourTexCoord).b;
|
||||||
|
|
||||||
// Normals
|
|
||||||
// load and invert normal
|
|
||||||
vec3 normal = normalize(texture(texture_normal1, ourTexCoord).rgb * 2.0 - 1.0);
|
|
||||||
|
|
||||||
FragColor = vec4(PBR(albedo, roughness, metallic, ao), 1.0);
|
FragColor = vec4(PBR(albedo, roughness, metallic, ao), 1.0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ out vec3 ourNormCoord;
|
||||||
out vec3 WorldPos;
|
out vec3 WorldPos;
|
||||||
|
|
||||||
//Normals
|
//Normals
|
||||||
out mat3 TBN;
|
out mat4 TBN;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
|
|
@ -21,6 +21,8 @@ void main()
|
||||||
ourNormCoord = aNormal;
|
ourNormCoord = aNormal;
|
||||||
ourTexCoord = aTexCoord;
|
ourTexCoord = aTexCoord;
|
||||||
|
|
||||||
|
TBN = Model;
|
||||||
|
|
||||||
// Calculate position of fragment
|
// Calculate position of fragment
|
||||||
WorldPos = vec3(Model * vec4(aPos, 1.0));
|
WorldPos = vec3(Model * vec4(aPos, 1.0));
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -126,6 +126,7 @@ int main(int argc, char **argv) {
|
||||||
shader.setMat4("MVP", camera.getMVP());
|
shader.setMat4("MVP", camera.getMVP());
|
||||||
shader.setVec3("CameraPos", camera.getCameraPosition());
|
shader.setVec3("CameraPos", camera.getCameraPosition());
|
||||||
shader.setInt("tick", SDL_GetTicks());
|
shader.setInt("tick", SDL_GetTicks());
|
||||||
|
boxbarrel.rotate(0.001, glm::vec3(0, 1, 0));
|
||||||
|
|
||||||
// Draw Meshes
|
// Draw Meshes
|
||||||
// cube.draw(shader);
|
// cube.draw(shader);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue