Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/binaries/data/mods/public/shaders/glsl/water_high.fs
Show First 20 Lines • Show All 265 Lines • ▼ Show 20 Lines | #if USE_FANCY_EFFECTS | ||||
return vec4(sunColor * shadow + ambient, clamp(alpha, 0.0, 1.0)); | return vec4(sunColor * shadow + ambient, clamp(alpha, 0.0, 1.0)); | ||||
#else | #else | ||||
return vec4(0.0); | return vec4(0.0); | ||||
#endif | #endif | ||||
} | } | ||||
void main() | void main() | ||||
{ | { | ||||
float los = getLOS(); | |||||
// We don't need to render a water fragment if it's invisible. | |||||
if (los < 0.001) | |||||
{ | |||||
gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); | |||||
return; | |||||
} | |||||
#if USE_FANCY_EFFECTS | #if USE_FANCY_EFFECTS | ||||
vec4 fancyeffects = texture2D(waterEffectsTex, gl_FragCoord.xy / screenSize); | vec4 fancyeffects = texture2D(waterEffectsTex, gl_FragCoord.xy / screenSize); | ||||
#else | #else | ||||
vec4 fancyeffects = vec4(0.0); | vec4 fancyeffects = vec4(0.0); | ||||
#endif | #endif | ||||
vec3 eyeVec = normalize(v_eyeVec); | vec3 eyeVec = normalize(v_eyeVec); | ||||
vec3 normal = getNormal(fancyeffects); | vec3 normal = getNormal(fancyeffects); | ||||
Show All 19 Lines | #endif | ||||
vec3 color = mix(refrColor.rgb, reflColor.rgb, fresnel * reflColor.a); | vec3 color = mix(refrColor.rgb, reflColor.rgb, fresnel * reflColor.a); | ||||
color += shadow * specular; | color += shadow * specular; | ||||
vec4 foam = getFoam(fancyeffects, shadow); | vec4 foam = getFoam(fancyeffects, shadow); | ||||
color = clamp(mix(color, foam.rgb, foam.a), 0.0, 1.0); | color = clamp(mix(color, foam.rgb, foam.a), 0.0, 1.0); | ||||
color = applyFog(color); | color = applyFog(color); | ||||
gl_FragColor = vec4(applyDebugColor(color * getLOS(), 1.0, refrColor.a, 0.0), refrColor.a); | gl_FragColor = vec4(applyDebugColor(color * los, 1.0, refrColor.a, 0.0), refrColor.a); | ||||
} | } |
Wildfire Games · Phabricator