StarSphere - Parameterized skybox material for space environments

StarSphere
Parameterized skybox material for space environments.

Version 1.2.2

Marketplace: https://www.unrealengine.com/marketplace/starsphere
Video: StarSphereDemo - YouTube
Video (planet shader): StarSphereDemo2 - planet shader - YouTube
Documentation: http://unreal.loomman.com/starsphere/

StarSphere is a collection of assets for creating beautiful space skybox backdrops within Unreal Engine 4. It consists of 2 blueprints, 2 parameterized master materials and accompanying instance materials, 3 master textures and 4 sample decal textures. Also provided are materials and textures optimized for mobile applications as well as three additional bonus features: planet shader, physics based 6 DoF camera actor and space dust effect blueprint.

Features:
Static StarSphere:

  • Number of adjustable layers: 8
  • Number of decal positions: 6
  • Maximum number of decals: 4
  • Lock sphere translation to actor
  • Align sphere rotation to directional light source

Dynamic StarSphere

  • Number of adjustable layers: 8
  • Number of decal positions: 6
  • Maximum number of decals: 2
  • Lock sphere translation to actor
  • Randomize on begin play

Planet shader uses 2 meshes and material instances to define planet surface and atmosphere. Planet surface uses 3 texture levels for surface, clouds and night lights. Atmosphere level fakes Rayleigh scattering effect and also provides eclipse effect.
6 DoF camera actor is physics based and provides parameter controls for maximum linear/angular velocity and linear/angular acceleration.
Space dust effect blueprint repositions emitter sphere in the path of player pawn and spawns space dust particles. Update rate, minimum actor velocity and emitter position offset can be controlled.

Technical Details:

  • Platforms: Windows, Mobile
  • Number of Blueprints: 5
  • Number of Master Materials: 7
  • Number of Material Instances: 12
  • Number of Material Functions: 2
  • Number of Base Textures: 6
  • Number of Decal Texture Samples: 8
  • Number of Planet Shader Textures: 8
  • Number of Meshes: 2
  • Number of Particle Systems: 1

Changelog

Version 1.2.2 (04/14/22)
Supported engine versions: 5.0

  • 6DoFCamera blueprint: changed deprecated AddTorque nodes to AddTorqueInRadians
  • Converted space dust particle system from Cascade to Niagara
  • Changed dynamic starsphere mobility to movable to avoid run-time warning
  • Changed lights to be fully dynamic

Version 1.2.1 (06/01/17)
Supported engine versions: 4.16 - 4.27

  • Fixed issue in eclipse effect caused by the change in Power node introduced with UE4 version 4.16

Version 1.2.0 (02/23/17)
Supported engine versions: 4.15

  • Added planet shader
  • Bloom settings are set to UE 4.14 defaults to be consistent with documentation and screenshots

Version 1.1.0 (07/28/16)
Supported engine versions: 4.12 - 4.14

  • Initial release

Since only “Add to Project” action is available for StarSphere on marketplace, DefaultInput.ini is not get copied into your project (since it may overwrite any existing input settings that you might have).
In order for 6DoF Camera actor to operate you need to setup the following input bindings in your project settings: image
Alternatively, if you don’t have any input bindings already setup, you can also download DefaultInput.ini file and copy it over into your project Config folder.

Amazing work!!!

Important note regarding UE 4.15 release.
With UE 4.15 release Epic has changed default bloom settings.
RNs has a note “Bloom settings have been updated to provide a more physically correct result by default.”

To get the previous version behavior, select PostProcessVolume and change the bloom settings. Those can be now found under Lens - Bloom rollout:

In the future update all maps in StarSphere will get their post process volumes updated with 4.14 settings in order to be consistent with documentation and screenshots.

Version 1.2.0 has been released.

This version adds a planet shader. Planet shader uses 2 meshes and material instances to define planet surface and atmosphere. Planet surface uses 3 texture levels for surface, clouds and night lights. Atmosphere level fakes Rayleigh scattering effect and also provides eclipse effect.
Note that it is not possible to “enter” atmosphere. Moreover, planet shader is not suitable for extreme close-up views. 4K textures are used which may require downscaling for mobile applications.
Requires UE version 4.15

Video: [video]https://youtu.be/hwFApClWUCY[/video]

Other changes:
Bloom settings are set to UE 4.14 defaults to be consistent with documentation and screenshots

I bought this and its missing half the content !!!

Issue was resolved with customer via email. Posting belated reply here as an info for anyone who might stumble into the same issue.
Planet shader feature requires UE4 version 4.15. If your project is saved in previous version (4.14), when “add to project” is used, Unreal launcher checks the version of the project and adds latest compatible asset version to it. To resolve the issue, project must be re-saved in 4.15 before adding StarSphere.

UE4 4.16 update: with this update Epic introduced some changes that greatly exacerbate eclipse effect. 4.16 compatibility will be added once I will figure the root cause of the issue and provide new settings to replicate 4.15 effect behavior. At the meantime please avoid converting your 4.15 projects with StarSphere in-place to the 4.16 version.

The issue is due to Power node behavior change.
4.16 compatibility will be up once StarSphere update will hit the marketplace.

Version 1.2.1 has been released.
This is a 4.16 compatibility release.
It contains a fix to the issue in eclipse effect caused by the change in Power node introduced with UE4 version 4.16

Thanks a lot for this pack, enjoying it so far.
One question though: How far away can a planet be rendered? I’m only using your Mars, a static StarSphere and a directional light. Today I flew away from the planet and at some point it disappeared. I can only see its eclipse effect, no surface. Increasing the diameter of the StarSphere doesn’t help.

Hi. Thanks a lot for your purchase!
The computations in the pack materials have no distance limitations and I can’t think of any engine limitations that can manifest themselves in the issue you are experiencing. I did a quick test using PlanetMars level. After ticking off “Enable World Bounds Checks” in “World Settings” and flying away with the 6DoFCamera, planet was still rendering fine at 50km distance.

50km.jpg

Can you please email me ([EMAIL=“unreal@loomman.com”]unreal@loomman.com) with the specifics of your setup so I could replicate the issue you are experiencing?

Update
After debugging the issue with the customer we found that there is indeed a distance limitation. It is caused by the finite precision of the g-buffer. When distance between camera and the planet is more than ~400 million units, star sphere starts to clip into the planet. The actual size of the planet and starsphere is not relevant, only the distance to the camera.

Great work, and very clear instructions. Thank you.
One question though, There are some very large and bright stars in the starsphere. How do I reduce the size/brightness of these or turn them off?
Thank you, again. Really nice work.

Thank you for your purchase and the kind words.
Unfortunately, there are no controls to turn off the big stars layer or change its tiling that are exposed in material instance. I might add an off switch in the next update.
For the time being, you can alter the M_StarSphere material to switch off the layer. You need to remove one connection wire and set “Const B” to 0 on “Add” node. Please see the attached screens.

That did it. Thank you and for the quick reply.

I’m especially interested in the planet feature - is it made with mobile in mind (like the StarSphere _mobile materials)?

Hi Roi, thanks for your interest. Unfortunately, planet shader is not suited for mobile applications. It uses several high resolution textures so this will be a major limiting factor.

Thanks for the fast answer - if I would replace the textures with lower resolution ones (I don’t need that high fidelity you are providing out of the box), would you think the complexity of your planet material(s) would be ok for mobile (a subjective feeling would be enough for me as answer, I’d have to do performance tests nevertheless :wink: )?

Well, it all really depends on what kind of limitations you will set in your game. It’s all about smoke and mirrors, right? If you won’t need any close-up approaches to the planet and it will always be far away, then you can get away with fewer and lower resolution textures. But obviously, you will have to significantly change the planet material setup. Rayleigh effect is faked, pretty light and I believe is ok to run on mobile. Surface, clouds and lights are simple textures with simple compositing so you just need to fit in your texture budget. Still, 3 texture lookups might be too expensive for mobile, so you will have to drop night-light effect for example, or bake clouds layer into surface texture.