OpenMW
MGEXE
Water shaders, OpenMW vs MGEXE
Re: Water shaders, OpenMW vs MGEXE
And? What kind of conclusion should we do?
As for me, shaders looks pretty similar on these screenshots.
Only differences I see:
1. MGE has a bloom.
2. Water color is different a bit because of sky reflection.
As for me, shaders looks pretty similar on these screenshots.
Only differences I see:
1. MGE has a bloom.
2. Water color is different a bit because of sky reflection.
Re: Water shaders, OpenMW vs MGEXE
They're comparing the more-transparency-near-shores that MGEXE has. It's a nice feature. OpenMW doesn't have it right now.
- AnyOldName3
- Posts: 2674
- Joined: 26 Nov 2015, 03:25
Re: Water shaders, OpenMW vs MGEXE
I'm pretty sure the depth of the water is used for something already (as at the very least it's something that needs to be known to get refraction right. If the effect isn't there, we do already have all the data we need to implement it.
- drummyfish
- Posts: 154
- Joined: 22 Oct 2017, 10:13
- Contact:
Re: Water shaders, OpenMW vs MGEXE
Yep, we already have the depth data. We're currently discussing the water shader improvements at GitLab, will add this feature.AnyOldName3 wrote: ↑12 Jul 2018, 12:15 I'm pretty sure the depth of the water is used for something already (as at the very least it's something that needs to be known to get refraction right. If the effect isn't there, we do already have all the data we need to implement it.
- drummyfish
- Posts: 154
- Joined: 22 Oct 2017, 10:13
- Contact:
Re: Water shaders, OpenMW vs MGEXE
quick test:
Code: Select all
diff --git a/files/shaders/water_fragment.glsl b/files/shaders/water_fragment.glsl
index 7511375..4025c1c 100644
--- a/files/shaders/water_fragment.glsl
+++ b/files/shaders/water_fragment.glsl
@@ -253,10 +253,10 @@ void main(void)
// refraction
#if REFRACTION
- vec3 refraction = texture2D(refractionMap, screenCoords - screenCoordsOffset).rgb;
+ vec3 underwater = texture2D(refractionMap, screenCoords - screenCoordsOffset).rgb;
// brighten up the refraction underwater
- refraction = (cameraPos.z < 0.0) ? clamp(refraction * 1.5, 0.0, 1.0) : refraction;
+ vec3 refraction = (cameraPos.z < 0.0) ? clamp(underwater * 1.5, 0.0, 1.0) : underwater;
#endif
// specular
vec3 R = reflect(vVec, normal);
@@ -269,7 +269,11 @@ void main(void)
if (cameraPos.z > 0.0)
refraction = mix(refraction, waterColor, clamp(depthSampleDistorted/VISIBILITY, 0.0, 1.0));
- gl_FragData[0].xyz = mix( mix(refraction, scatterColour, lightScatter), reflection, fresnel) + specular * gl_LightSource[0].specular.xyz;
+ vec3 output = mix( mix(refraction, scatterColour, lightScatter), reflection, fresnel) + specular * gl_LightSource[0].specular.xyz;
+ output = mix( underwater, output, pow(shore,10));
+
+ gl_FragData[0].xyz = output;
+
#else
gl_FragData[0].xyz = mix(reflection, waterColor, (1.0-fresnel)*0.5) + specular * gl_LightSource[0].specular.xyz;
#endif
- psi29a
- Posts: 5361
- Joined: 29 Sep 2011, 10:13
- Location: Belgium
- Gitlab profile: https://gitlab.com/psi29a/
- Contact:
Re: Water shaders, OpenMW vs MGEXE
Nice work!
I also noticed something where water can look 'wavey' when it gets close to the shore... pulling back and coming ashore. I'm assuming this is a trick of the shader where parts goes invisible when coming into contact with a low-grade sloop. Maybe I got that wrong and there is in fact 'volume' to the shader or water plane where it ungulates.
I also noticed something where water can look 'wavey' when it gets close to the shore... pulling back and coming ashore. I'm assuming this is a trick of the shader where parts goes invisible when coming into contact with a low-grade sloop. Maybe I got that wrong and there is in fact 'volume' to the shader or water plane where it ungulates.
- AnyOldName3
- Posts: 2674
- Joined: 26 Nov 2015, 03:25
Re: Water shaders, OpenMW vs MGEXE
I think the transparency effect there is way too strong. IRL, it's easy to see where the water starts and the ground stops, but in those screenshots, it isn't.
- drummyfish
- Posts: 154
- Joined: 22 Oct 2017, 10:13
- Contact:
Re: Water shaders, OpenMW vs MGEXE
I agree, however I noticed that this is how it's usually done in games, e.g. 0 A. D.:AnyOldName3 wrote: ↑12 Jul 2018, 15:48 I think the transparency effect there is way too strong. IRL, it's easy to see where the water starts and the ground stops, but in those screenshots, it isn't.
It's probably considered looking nicer than the sharp edges, even if not % 100 realistic. It could be made less prominent though (by changing the pow parameter).
Also this effect is only possible with refractions enabled. Without refractions the water is rendered differently, there is no depth information, it's just a plane with alpha blending.
- MiroslavXO
- Posts: 107
- Joined: 13 Feb 2016, 01:07
Re: Water shaders, OpenMW vs MGEXE
I really dislike normal map for OpenMW version, waves look better in MGEXE.