Add reflective and refractive models
This commit is contained in:
@@ -53,7 +53,7 @@ vec3 calc_spot_light(SpotLight light, vec3 normal, vec3 frag_position, vec3 view
|
||||
|
||||
void main() {
|
||||
vec3 normal = normalize(vert_normal);
|
||||
vec3 view_direction = normalize(camera_position - frag_position);
|
||||
vec3 view_direction = normalize(frag_position - camera_position);
|
||||
|
||||
vec3 result = calc_dir_light(directional_light, normal, view_direction);
|
||||
|
||||
|
||||
16
shaders/reflective_frag.glsl
Normal file
16
shaders/reflective_frag.glsl
Normal file
@@ -0,0 +1,16 @@
|
||||
#version 330 core
|
||||
|
||||
in vec3 vert_normal;
|
||||
in vec3 frag_position;
|
||||
|
||||
uniform vec3 camera_position;
|
||||
uniform samplerCube cubemap;
|
||||
|
||||
out vec4 color;
|
||||
|
||||
void main() {
|
||||
vec3 view_direction = normalize(frag_position - camera_position);
|
||||
vec3 reflect_direction = reflect(view_direction, normalize(vert_normal));
|
||||
|
||||
color = vec4(texture(cubemap, reflect_direction).rgb, 1.0);
|
||||
}
|
||||
19
shaders/refractive_frag.glsl
Normal file
19
shaders/refractive_frag.glsl
Normal file
@@ -0,0 +1,19 @@
|
||||
#version 330 core
|
||||
|
||||
#define AIR_IOR 1.0
|
||||
#define GLASS_IOR 1.52
|
||||
|
||||
in vec3 vert_normal;
|
||||
in vec3 frag_position;
|
||||
|
||||
uniform vec3 camera_position;
|
||||
uniform samplerCube cubemap;
|
||||
|
||||
out vec4 color;
|
||||
|
||||
void main() {
|
||||
vec3 view_direction = normalize(frag_position - camera_position);
|
||||
vec3 refract_direction = refract(view_direction, normalize(vert_normal), AIR_IOR / GLASS_IOR);
|
||||
|
||||
color = vec4(texture(cubemap, refract_direction).rgb, 1.0);
|
||||
}
|
||||
Reference in New Issue
Block a user