Godot: CubeMap support for environment sky

Created on 9 Apr 2019  路  22Comments  路  Source: godotengine/godot

Godot version:
3.1 Stable

Issue description:
Considering there is already a cubemap resource (used for reflections) it would be handy if there was the option to use a cubemap resource for a WorldEnvironment's background_sky value.

archived feature proposal rendering

Most helpful comment

(not self promotion)
super simple javascript cube to panorama convert online link (single html+shader) (can save up to 4k resolution panorama)

All 22 comments

Removed in Godot 3.0 (was there in 2.1).

Hm, I wonder why that was done

@GammaGames I can think of two reasons:

  • Reflections use a dual parabolid system, so a conversion has to be done if using a skybox.
  • Cubemaps are difficult to get right due to how they are mapped/rotated across different software. Moreover, it's quite tedious having to load 6 textures instead of just one.

However, it would be nice to make CubeMaps more usable, especially as they could be used for projector textures in OmniLights (which use cubemap projection by default).

Reflections use a dual parabolid system, so a conversion has to be done if using a skybox.

I expected that it would have to be converted before runtime to make it work better. I guess that would potentially cause warping or something, which is understandable.

Cubemaps are difficult to get right due to how they are mapped/rotated across different software.

That was actually the reason I was looking for the feature. Some users were looking to use some textures exported from spacescape and convert it with an online program but it was all messed up. It's current really tedious to convert and test, but if we had the option to easily use the separate textures it would allow users to rotate and the images to get the expected result.

Aren't HDR images rendered as cubemaps in GLES2? I think Godot should be capable to do this the other direction: Convert a cubemap to HDR for GLES3.

@GammaGames It is possible to texture a cube in Blender with cubemap textures and then render it by using cycles to a HDR image.

Probably, I used cube2sphere which uses blender and python but it was really blurry

@GammaGames Use the standard blender cube and assign a material to each face with a seperate texture. Using cycles you can define the quality yourself (how much time it takes to render the image). You don't need an addon for that. https://youtu.be/a48PBPRO8O8

Yeah cube2sphere is not a solution for me. Please bring cube maps back.

@Galaxy613 There are plenty of resources to convert cubemaps to equirectangular.

You can even do it yourself in GDScript. See reddit comment here
https://www.reddit.com/r/godot/comments/baw27a/how_to_use_spacescape_skybox_in_godot/ekfvrwo?utm_medium=android_app&utm_source=share

(not self promotion)
super simple javascript cube to panorama convert online link (single html+shader) (can save up to 4k resolution panorama)

Any progress on the actual request, workarounds notwithstanding?

@Zireael07 Not that I know of. I don't know if this is planned for 4.0, but I doubt it as dual parabolid skies are considered the standard nowadays.

yeah the thing is people give out a lot of technical explanations, but some of us where working happily with assets and using this method (and i was waiting thinking it'd come back)

i particularly like how you could edit a planet into the middle of the image, and it would not require any more processing or editing (i could just use gimp).... i would suffer no corner distortion on re-editing this as long as i stayed away from the corner

making the method very flexible (i'd also have different planets to plop in the one of the 6 faces, and reuse the stars from other angles)

there is no mention of "dual parabolid skies" being standard, i don't even think most CG artists know about this (they use panoramic mostly)

so this was a technique i am fond of, and all the competition still has the option

there is no mention of "dual parabolid skies" being standard, i don't even think most CG artists know about this (they use panoramic mostly)

I think these are the same thing :slightly_smiling_face:

HDRI panoramas you can find on HDRI Haven and similar are supported out of the box in Godot.

"I think these are the same thing 馃檪"

nah, the "dual parabolid skies", they have two circles as their image:

http://cdn.imgtec.com/sdk-documentation/Dual+Paraboloid+Environment+Mapping.Whitepaper.pdf

so the word "dual"

Godot uses dual paraboloid internally, but it expects an equirectangular (AKA panorama) map from users. Most HDRIs come in equirectangular format nowadays. Plus they are way simpler to import. Finally, it is not a lot of work to just convert your cubemap to an equirectangular before import, there are plenty of tools out there to do it (see danilw's post above https://danilw.github.io/GLSL-howto/cubemap_to_panorama_js/cubemap_to_panorama.html)

For quick equirectangular rendering in Blender (or conversion from cubemap) there is also https://github.com/EternalTrail/eeVR which uses Eevee instead of Cycles (mentioned in https://blenderartists.org/t/will-eevee-support-vr-equirectangular-rendering/699631/37 )

Closing as per the discussion above. Thanks for taking the time to open the issue. :)

look like you guys have added my "not best" converter to your docs...
il add more info about the method with link to Godot-example project with same code, to that page then...

@mhilbrunner please reopen this space backgrounds are a pain in the ass due to there not being a skybox option available and there are no good tutorials on how to work around it

@Shadowblitz16 Feature proposals should now be made on the Godot proposals repository.

Also, you can very much have space backgrounds with panorama skies. There will be some more distortion, but it's nothing you can't hide by intelligently placing details in your sky.

@Calinou
thats the issue though I don't want distortion and I don't want to have to hide anything
thats just bad design on godot's end

Was this page helpful?
0 / 5 - 0 ratings