.PHONY: clean
clean:
rm -f $(obj) $(bin) $(dep)
+
+cmpath = data/cubemap
+.PHONY: irradiance_map
+irradiance_map:
+ cmft --inputFacePosX $(cmpath)/cubemap_px.hdr \
+ --inputFacePosY $(cmpath)/cubemap_py.hdr \
+ --inputFacePosZ $(cmpath)/cubemap_pz.hdr \
+ --inputFaceNegX $(cmpath)/cubemap_nx.hdr \
+ --inputFaceNegY $(cmpath)/cubemap_ny.hdr \
+ --inputFaceNegZ $(cmpath)/cubemap_nz.hdr \
+ --filter irradiance \
+ --output0 $(cmpath)/irradiance_px.hdr \
+ --output0params hdr,rgbe,facelist
// const float fog_density = 0.005;
uniform float fog_density;
-const vec4 sky_color = vec4(0.35, 0.5, 0.65, 1.0);
+const vec3 sky_color = vec3(0.35, 0.5, 0.65);
out vec4 color;
vec4 texel = texture2D(tex, tex_coord);
- vec4 object_color;
- object_color.xyz = diffuse.xyz * cdiff * texel.xyz + specular.xyz * cspec;
- object_color.w = 1.0;
+ vec3 object_color = diffuse.xyz * cdiff * texel.xyz + specular.xyz * cspec;
- color = mix(sky_color, object_color, fog);
+ color.xyz = mix(sky_color, object_color, fog);
+ color.w = 1.0;
}
uniform vec4 specular;
uniform float shininess;
+uniform float fog_density;
+const vec3 sky_color = vec3(0.35, 0.5, 0.65);
+
varying vec3 pos;
varying vec3 normal;
varying vec3 ldir;
float cspec = pow(max(dot(r, vdir), 0.0), shininess);
vec4 texel = texture2D(tex, tex_coord);
- color.xyz = diffuse.xyz * cdiff * texel.xyz + specular.xyz * cspec;
+ vec3 object_color = diffuse.xyz * cdiff * texel.xyz + specular.xyz * cspec;
+
+ float dist = -pos.z;
+ float fog = clamp(exp(-fog_density * dist), 0.0, 1.0);
+
+ color.xyz = mix(sky_color, object_color, fog);
color.w = 1.0;
}
skybox_tex = gfx_create_texture();
skybox_tex->load("data/cubemap/cubemap.hdr");
+ // skybox_tex->load("data/cubemap/irradiance.hdr");
terrain_rend->set_sky_tex(skybox_tex);
if(!terrain_rend->create()) {
cow_pos.y = terrain.get_height(cow_pos);
cow_object->transform.translation(cow_pos);
+ cow_rend->fog_density = fog_density;
cow_rend->draw();
}
\ No newline at end of file
spec_loc = sprog->get_uniform_location("specular");
shin_loc = sprog->get_uniform_location("shininess");
t_loc = sprog->get_uniform_location("t");
+ fog_loc = sprog->get_uniform_location("fog_density");
/* uniform locations for matrices */