New SkyControl releases

I just finished uploading two new releases of SkyControl, my sky simulator for jME3:

Major features added since 0.9.0:

  • SkyControl is now serializable.
  • SkyControl no longer restricts the moon to the ecliptic.
  • TestSkyControl now includes a hotkey editor.
  • TestSkyControl no longer disables flyCam.

Other notable changes:

  • SkyControl puts moving stars on quads instead of domes - fewer triangles!

Since jME 3.1 is now “stable”, 0.9.1for30 will probably be my last release targeting jME 3.0.

Related forum posts:

Related videos:


Hi, do you have a more recent video showing the features?


Nothing recent, sorry. However, the features haven’t changed much since 2014, so the old videos will give you a good idea what to expect.

1 Like

Thanks for updating anyway. Although I don’t use it anymore anywhere, for now, it was one of the things I first tried and got hooked on JME because I could seemingly accomplish all kinds of cool stuff fast :slight_smile: Important library!


I downloaded and am running the TestSkyControl from github.

it seems quite heavy, I am trying to disable somethings here and there like bloom etc (I disabled all least the sky btw), but it is still quite heavy. Any tip on tihs?

can the cloudiness be customized for different cloud layers?

each individual real life cloud have a darker side that is not direcly hit by the sun, do you believe we could do some trick directly on the skybox texture? or may be some shader?

EDIT: oh btw,
our end work, the final work, will require to be CC-By-SA as I read on the textures licenses.
this basically means, if we want to release the project in other license, we have to use other textures right?

1 Like

Thank you for your interest in my work.

If by “heavy” you mean the load SkyControl puts on the cpu/gpu, yes, there are many ways to reduce that. TestSkyControl exists to show off all the features of the software, so disabling features you don’t need (like bloom or night sky or multiple cloud layers) is a good place to start. Perhaps for your application it’s not necessary to update the sky materials on every frame. (I imagine most apps don’t need sky updates at all. In that case, one could simply apply SkyMaterial to a DomeMesh and never modify it.)

The opacity of each cloud layer can be adjusted independently. That’s one feature of SkyControl that TestSkyControl doesn’t demonstrate.

I’d love to make the clouds darken realistically in response to the direction of the main light. However I don’t see any practical way to do this. If you have ideas, I’d like to discuss them.

Most of the textures are procedurally generated and can be reused freely. The t0neg0d textures come with a BSD license; I can’t help you there. The moon textures and the cyclone texture are CC-By-SA; if you want to distribute them under a different license, I’m open to discussing it.


Nice to know. I hope you’re accomplishing plenty of cool stuff these days.

1 Like

A quick research on gave me these three papers. Maybe they help you:


Initially I thought about volumetric (geometry) clouds, but I am quite sure some fast cool trick can be used directly on textures, even by painting them dinamically in some way, but these are my wild guesses. @shamanDevel 's tips may sound more interesting :slight_smile:

Have you heard about OGA-By?
It is CC-By but a bit less restrictive, just enough to make it more free, but vanilla CC-By is quite good too.

Mainly GPL and CC-By-SA are viral: Viral license - Wikipedia
So, indie devs that have no other option (to break free from employment) than create their projects from zero, are pushed away (EDIT: I mean self push away) from many free cool projects and media assets out there.
On the other hand, if we succeed, we are not forced to contribute back (neither with code, neither with improved assets, neither with money), so I guess that is the main reason ppl opt to use viral free licenses what is quite cool too (being viral) IMO.

So I am not saying you should change it at all! I am just superficially explaining why many ppl will not be able to use it.
And, also OpenGameArt has a quite interesting multi-license mode:

1 Like

@shamanDevel these docs sound quite interesting, they have rendering results too! realistic precision looks higly cool!

@sgold but, I just thought…
a cheap trick would be to have the cloud texture (only grey levels, so the other colors could be dynamic),
repainted like 12 times (or the many hours the sun is lighting them),
and for each sun position, a different clould texture would be loaded representing the current sun/cloud-self-shadow,
but to not look messy, it would only be loaded when the player is not looking at them ha! :smiley:

1 Like

With respect to CC-By-SA… this is the critical clause:
"ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original. "

The key here is “build upon the material”. It can be interpreted many ways but it’s unclear if “including it in my game” counts as “build upon” in a legal sense. Say, versus adding your own brush strokes to the image, for example. A lot of times the author using such a license will make it clear which they mean. “You can only use this bundled in CC-By-SA licensed anything” or “If you make changes to my image then they must also be released CC-By-SA.”

1 Like

I’ve opened this as an issue on GitHub:

about CC-By-SA

I dont think that is so unclear when they say:
“performance” (in a sense of performed work) and “synched in timed relation”, that is quite broad.

basically, the legal code makes me think we apparently cant even create a CGI cutscene exclusive to the project, neither upload it on youtube under other licence than CC-By-SA, if I use on it a single CC-By-SA texture…
Creative Commons — Attribution-ShareAlike 4.0 International — CC BY-SA 4.0

So, based on this, I understand that if I include it on my game, every video I create, or the end user create using it, whenever it is made publically available, it will have to be under CC-By-SA.

Anyway, I limit myself on downloading only CC-0 and at most CC-By/OGA-By assets to be more tranquil, as after all, to be tranquil is what really matters :slight_smile:

1 Like

yes! thats it for sure!
I am browsing the code trying to determine where it is updated so I could make it update only like 10 times per second or less (I would have to test to see what frequency will keep it cool), but as you said, if such update is required at all, may be just b4 a storm would show more of the clouds and so on, and this weather changing would actually fit on that good looking frequency I would have to test.

I saw you put quite accuracy on the angular position of the sun, moon etc (I dont even knew these stuff), thx for that too!

1 Like

The update logic is in a number of places:

  • SkyControl.updateAll() updates the light intensities and colors, which change gradually except around twilight or if a cloud passes in front of the sun/moon
  • SkyControl.updateAll() updates the positions of the sun, moon, and stars, which should change very gradually
  • SkyControlCore.controlUpdate() updates the dome positions/sizes to compensate for camera motion and frustrum changes, which might occur rapidly in some games
  • SkyControlCore.updateClouds() updates the cloud positions, which should change gradually
  • GlobeRenderer.update() updates the shape of the moon, which should change very gradually if at all

Once we figure out what update rates it makes sense to control, I can add APIs to throttle them. I imagine one or two rate parameters will be sufficient.

I was once passionate about astronomy, so I pay attention to details few people care about (like constellations, seasons, and the appearance of the moon) and perhaps not enough attention to things that many care about (like realistic clouds).


I wasn’t aware of OGA.

I realize the viral licensing of those seven (7) texture files may be awkward for some people. It isn’t because the files are special or precious, nor have I put great effort into them. Here’s the story: when I created SkyControl, it was GPL’d. In December 2013, I was talked into changing the license to BSD (see Seeking alpha testers for SkyControl - #6 by abies ) a decision I occasionally regret . I’ve stuck with BSD licensing for code, but for new non-procedural assets I prefer CC-BY-SA.

I include my name and e-mail in every source file for a reason: so users can contact me if they need to. If a developer seeks a less restrictive license and they play nice, they won’t be “pushed away”.


Pursuing my idea of less frequent updates, I created a speed test app, with SkyControl in an otherwise empty scene, using static moon textures and a separate cloud dome and star cube. At 800x600 resolution with 16x AA, that test ran about 240 fps on my 2012-vintage gaming desktop. 4 ms per frame doesn’t seem heavy to me, so I’d like to understand what you saw that gave you that impression.

1 Like

I put this fps limiter to test

public void simpleUpdate(float tpf) {
	try {Thread.sleep(33);} catch (InterruptedException e) {}

but it remained quite heavy:
my mouse gets slowed/sluggish,
my cpu is used a lot (the fps limiter should have prevented that, I am a bit puzzled now),

I am on linux,
using GeForce GTS 250, 500MB
and I can run many 3D applications and games without these problems,
does it do something special that could be a gfx card minimum requirement, therefore a limitation? or something else?


I’m not sure what’s hogging your CPU. If you press F5 you should get various statistics displayed including FPS.

1 Like

Are you using OpenJDK or Oracle’s?. I had a problem some time ago where if I activated something (I don’t remember what), it went from any-good-fps to 7fps (and it stuck there). I can’t remember what was the problem but maybe it was because of the jre eversion.

1 Like