parent
4d52269b68
commit
80a1f36bbd
@ -1,41 +1,41 @@ |
|||||||
struct Fog |
struct Fog |
||||||
{ |
{ |
||||||
int fogMode; |
int mode; |
||||||
float density; |
float density; |
||||||
float start; |
float start_dist; |
||||||
float max; |
float max_dist; |
||||||
vec4 color; |
vec3 color; |
||||||
}; |
}; |
||||||
|
|
||||||
uniform Fog fog; |
uniform Fog fog; |
||||||
|
|
||||||
const int FOG_NONE = 0; |
const int FM_NONE = 0; |
||||||
const int FOG_LINEAR = 1; |
const int FM_LINEAR = 1; |
||||||
const int FOG_EXPONENTIAL = 2; |
const int FM_EXPONENTIAL = 2; |
||||||
const int FOG_EXPONENTIAL_SQRD = 3; |
const int FM_EXPONENTIAL_SQRD = 3; |
||||||
|
|
||||||
vec4 applyFog(vec4 color) |
vec4 apply_fog(vec4 color) |
||||||
{ |
{ |
||||||
vec4 finalColor = color; |
vec4 final_color = color; |
||||||
if(fog.fogMode != FOG_NONE) |
if(fog.mode != FM_NONE) |
||||||
{ |
{ |
||||||
float fogFactor; |
float fog_factor; |
||||||
float distFromEye = abs(length(vertex - eyePos)); |
float dist_from_eye = abs(length(vertex - camera_pos)); |
||||||
if(fog.fogMode == FOG_LINEAR) |
if(fog.mode == FM_LINEAR) |
||||||
{ |
{ |
||||||
fogFactor = (fog.max - distFromEye) / (fog.max - fog.start); |
fog_factor = (fog.max_dist - dist_from_eye) / (fog.max_dist - fog.start_dist); |
||||||
} |
} |
||||||
else if(fog.fogMode == FOG_EXPONENTIAL) |
else if(fog.mode == FM_EXPONENTIAL) |
||||||
{ |
{ |
||||||
fogFactor = exp(fog.density * -distFromEye); |
fog_factor = exp(fog.density * -dist_from_eye); |
||||||
} |
} |
||||||
else if(fog.fogMode == FOG_EXPONENTIAL_SQRD) |
else if(fog.mode == FM_EXPONENTIAL_SQRD) |
||||||
{ |
{ |
||||||
fogFactor = exp(-pow(fog.density * distFromEye, 2)); |
fog_factor = exp(-pow(fog.density * dist_from_eye, 2)); |
||||||
} |
} |
||||||
fogFactor = clamp(fogFactor, 0.0, 1.0); |
fog_factor = clamp(fog_factor, 0.0, 1.0); |
||||||
finalColor = mix(fog.color, color, fogFactor); |
final_color = mix(vec4(fog.color, 1.0), color, fog_factor); |
||||||
} |
} |
||||||
return finalColor; |
return final_color; |
||||||
} |
} |
||||||
|
|
||||||
|
@ -1,23 +1,10 @@ |
|||||||
//include common.glsl commonFrag.glsl version.glsl |
//include fog.glsl common.glsl commonFrag.glsl version.glsl |
||||||
|
|
||||||
uniform sampler2D diffuse_texture; |
uniform sampler2D diffuse_texture; |
||||||
|
|
||||||
out vec4 gbuffer[4]; |
out vec4 frag_color; |
||||||
|
|
||||||
void main() |
void main() |
||||||
{ |
{ |
||||||
// gl_FragData[0] = diffuse_color * texture(diffuse_texture, uv); |
frag_color = apply_fog(diffuse_color * texture(diffuse_texture, uv)); |
||||||
// gl_FragData[1] = vec4(vertex.xyz, 1.0); |
|
||||||
// gl_FragData[2] = vec4(normal.xyz, 1.0); |
|
||||||
// gl_FragData[3] = vec4(uv, 0.0, 1.0); |
|
||||||
|
|
||||||
gbuffer[0] = diffuse_color * texture(diffuse_texture, uv); |
|
||||||
gbuffer[1] = vec4(vertex.xyz, 1.0); |
|
||||||
gbuffer[2] = vec4(normalize(normal.xyz), 1.0); |
|
||||||
gbuffer[3] = vec4(uv, 0.0, 1.0); |
|
||||||
|
|
||||||
// gbuffer[0] = (diffuse_color * texture(diffuse_texture, uv)).xyz; |
|
||||||
// gbuffer[1] = vertex.xyz; |
|
||||||
// gbuffer[2] = normal.xyz; |
|
||||||
// gbuffer[3] = vec3(uv, 0.0); |
|
||||||
} |
} |
||||||
|
Loading…
Reference in new issue