Wednesday, February 17, 2010

Spacescape - Now With Billboards

spacescape image with billboard sprites
(click to enlarge)

Just a minor update - I've added billboard sprites to the mix where as before I was just using point sprites. I also added an extra line to the noise shader like this:

noiseSum = pow(noiseSum / powerAmount);


This allows me to control the slope of the noise gradient so it is more steep or more gradual, which is something I needed for masks.

The image above really taxes my system (3-4 fps). It has 12 layers: one ridged noise mask for the brightest stars, then another for the middle level of stars and then two more ridged noise haze layers and the rest are mixes of billboard and point stars.

For kicks I threw the generated skybox into the planet app and it's definitely a bit over the top and low-res/blurry. Still it is "fun"

(click images to enlarge)
planet with generated skybox

planet with generated skybox 2

As usual, I uploaded these images and more to the My First Planet gallery.

I re-implemented writeToFile() in the plugin so I can save to files. I also added a writeToMaterial() function to the plugin so I can preview the skybox in ogre.

One thing I've noticed is that the resolution of skybox really affects the brightness of small stars. When I save a 2048x2048 skybox out the single pixel point stars are crisp, but get lost when imported into a program with a low screen resolution. So you kinda have to take that into account when making the skyboxes. It might look great at the resolution on your monitor, but not at the resolution on someone else's monitor. This is where the writeToMaterial() function will be useful so you can preview the skybox at different resolutions to see if it works OK at low resolutions.

I might mess with the mipmap generation for lower levels so that stars don't loose their brightness as quickly when the high resolution image is scaled down.

Here's a sample generated skybox (click for 1024x1024 version - open in new window):
right
right
left
left
top
top
bottom
bottom
front
front
back
back

And here's a funny little screenshot of what a skybox layered sphere looks like from the outside (not the same as the one above):
outside skybox layer sphere

5 comments:

Anonymous said...

Hey,

I'm playing around with Spacescape and I noticed that the exported images seem to lose a lot of detail that's in the rendered scene. For example, most of the stars in purple-nebula-complex seem too dim to see when exported.

Any idea why this is?

alex peterson said...

Hrm, I'm not certain what it could be - have you tried exporting at a higher resolution? If so and youre looking at the image in, say, image viewer - make sure you aren't viewing the image zoomed out - which could make a lot of the small stars "dissappear"

Anonymous said...

Indeed, the image viewer is displaying it far dimmer than it should be.

I also tried rendering the cubemap in a game engine to see how it looked and rule out the issue with my image viewer:

http://img52.imageshack.us/img52/8137/spacegx.png

If you look at them side by side carefully, you can see small stars in the Spacescape screenshot which aren't in the other, or are far dimmer in the other so you can hardly see them. Yet the brightness of the bigger stars seems to be the same.

If I look really close at the cubemap image (4096x4096) in photoshop the small stars are indeed dim or not visible there.

Perhaps it's some kind of compression artifact in the image?

alex peterson said...

Hadn't thought about compression. Did you try png and jpg? PNG should be less compression. Also, maybe try increasing the size of the small stars?

Anonymous said...

Yeah, I'm trying with png, jpg is worse again.

Is it possible to save the image uncompressed to see if compression is the issue?

Increasing the point size does help - however as you can only increase in integers the next value up is a bit big.