Add diffuse map

This commit is contained in:
2024-12-07 23:24:40 +00:00
parent 621204abe5
commit cc1f6afb26
4 changed files with 87 additions and 46 deletions

View File

@@ -1,8 +1,7 @@
#version 330 core
struct Material {
vec3 ambient;
vec3 diffuse;
sampler2D diffuse;
vec3 specular;
float shininess;
};
@@ -16,6 +15,7 @@ struct Light {
in vec3 vert_normal;
in vec3 frag_position;
in vec2 uv_coords;
out vec4 color;
@@ -32,8 +32,9 @@ void main() {
vec3 reflect_direction = reflect(-light_direction, normal);
float diff = max(dot(normal, light_direction), 0.0);
float spec = pow(max(dot(reflect_direction, view_direction), 0.0), material.shininess);
vec3 ambient = light.ambient * material.ambient;
vec3 diffuse = light.diffuse * (diff * material.diffuse);
vec3 diff_tex = vec3(texture(material.diffuse, uv_coords));
vec3 ambient = light.ambient * diff_tex;
vec3 diffuse = light.diffuse * (diff * diff_tex);
vec3 specular = light.specular * (spec * material.specular);
color = vec4(ambient + diffuse + specular, 1.0);

View File

@@ -2,9 +2,11 @@
layout(location=0) in vec3 position;
layout(location=1) in vec3 normal;
layout(location=2) in vec2 uv;
out vec3 vert_normal;
out vec3 frag_position;
out vec2 uv_coords;
uniform mat3 normal_mat;
uniform mat4 model;
@@ -14,5 +16,6 @@ uniform mat4 projection;
void main() {
vert_normal = normal_mat * normal;
frag_position = vec3(model * vec4(position, 1.0));
uv_coords = uv;
gl_Position = projection * view * model * vec4(position, 1.0);
};