Ocean rendering - current state


first of all wanna say the the tutorials in the wiki are really great!!

I am currently developing a 2D naval game (Kotlin and JavaFx) and I am evaluating if it makes sense to have a 3D view for some aspects via JMonkey (cost/benefit). Most important for me is to render a nice looking ocean obviously.

I had a look also at the possibilities in this area (e.g. engine/src/test/jme3test/water/TestPostWater.java - platform/external/jmonkeyengine - Git at Google) but if I am comparing it to some works with Unity (e.g. https://github.com/huwb/crest-oceanrender) there seems to be room for improvement.

So is my assumption correct that there is currently no possibility to improve ocean rendering in jMoneky if you are not an expert in this area ? Do not get me wrong…it is not a criticism by any means, I just want to get a feeling for the effort (and I am not proficient in 3D in general)


To get really REALLY nice looking oceans you’re going to have to wade into the field of shaders. Don’t panic! There are a lot of resources.

Shader - Shadertoy BETA Might be a good one to look at for instance.

As for your game though… Are you trying to compare jME with Unity? There have been numerous threads in this forum on that topic.

I think you might be looking at this a bit backwards. jME isn’t an ocean simulator, it’s a game engine. The Simple Water tutorial covers how to do water… that is simple. It’s not the only way that water could be done, it’s just “a” way water could be done. For many games that level of water detail is probably enough.

Keep in mind that there are two ways to do water in JME… There’s the “simple” one that just does a small body of water (fountains, ponds, small lakes, etc), and then there’s the full-blown ocean filter that does waves, shorebreak, etc. I don’t recall the names (and I’m not at my computer to check), but there are examples of both in the test suite.

That shader looks indeed awesome, so I guess, yes I would have to learn shaders and how to apply them into JME. No, it is clear that jME is not an ocean simulator :slight_smile: and I am not comparing it to Unity…my goal is just to understand the learning effort to implement a better looking ocean (like that one shared on shadertoy…)

Would https://wiki.jmonkeyengine.org/jme3/advanced/jme3_shaders.html be the right starting point and would that example @shadertoys in principle be portable to JME since I have read in the jME Wiki that there are some limitations with respect to shaders in jME.

That’s a good starting point, yes. The shader will be portable to jME, but it may need some significant tweaking (but at least you can keep the math/logic). It’s not so much that shaders are limited in jME specifically as it is that shaders are difficult to make portable and every rendering platform (Unreal, Unity, jME) has its own ways to connect the engine to the shader and thus its own caveats, quirks, and limits. There are even major differences between shaders for OpenGL 2, 3, & 4. Shaders can be tricky to learn, but it’s well worth it and will pay off very well for you.

@ceiphren did this years ago

Source: OceanMonkey download | SourceForge.net

This might be a good starting point.


ok, thx for the links and details…will check it out