Notifications
Clear all

Procedural planets : part IV


NevilClavain
(@krakoukass)
Warrant Officer Registered
Joined: 8 years ago
Posts: 203
Topic starter  

Hi,

 

Those last days, adding some shaders for Rayleigh and Mie atmospheric scattering. As do all those interested about this topic, I based my work on related awesome Sam O'Neil's work

 

Adapt S.O'Neil shaders to my framework was not so easy; I got scared and I thought I would never make it, all this because of some stupid pitfalls I finally resolved,   and now I'm happy with the result, even if the FPS took a hit once again  🙁

 

Views from space :

 

Image10.png

 

Image11.png

 

Image16.png

 

Image22.png

 

Image19.png

 

Views from surface:

 

Image24.png

 

Image25.png

 

Image27.png

 

Image28.png


Quote
XenonS
(@xenons)
Warrant Officer Registered
Joined: 8 years ago
Posts: 399
 

That's looking awesome 😎

I like the clouds especially.

Planetside: roundish mountains are very old, young mountains should have sharp edges as stones on the ground, but I guess this goes at the limit of PC ressources...

 

Greets,

XenonS


ReplyQuote
NevilClavain
(@krakoukass)
Warrant Officer Registered
Joined: 8 years ago
Posts: 203
Topic starter  

young mountains should have sharp edges as stones on the ground, but I guess this goes at the limit of PC ressources...

 

Yeah I'd like to get more sharp edges, my mountains are a bit to smooth; I struggle to set fractal functions to do this.

 

One possible solution should be ridged noise : http://www.decarpentier.nl/scape-procedural-basics

 

Nev.


ReplyQuote
NevilClavain
(@krakoukass)
Warrant Officer Registered
Joined: 8 years ago
Posts: 203
Topic starter  

Sky dome rendering from planet's surface is much better with simple HDR Formula : 

 

color_hdr = 1.0 - exp( -k * color );

 

with k = 0.91 for my personal case

 

this avoids the huge white saturation stripe at horizon 

 

What I cannot figure out is why S O'Neil wants the result of it to be stored in a separate float buffer, as it works fine directly implemented in the pixel shader   ???

 

Image29.png

 

Image32.png

 

Image31.png


ReplyQuote
XenonS
(@xenons)
Warrant Officer Registered
Joined: 8 years ago
Posts: 399
 

50-60 FPS is very good, you are on a good way

(But that's all I can comment, else I am a total noob in this area, I can only admire...)

 

XenonS


ReplyQuote
fluffyfreak
(@fluffyfreak)
Captain Registered
Joined: 8 years ago
Posts: 1306
 

Remember that a lot of the Seam O'Neil stuff was very early days of shaders. Including those GPU gems ones.

So many decisions about where stuff could be stored was based on the limitations back then, a lot of those have no gone away and you can be much more flexible about it all.

 

Also, nice work.


ReplyQuote
DarkOne
(@sscadmin)
Supreme Dark Emperor Admin
Joined: 8 years ago
Posts: 7883
 

Leaps and bounds over your last engine post, great work on tweaking the engine to get it to this point Nevil.


ReplyQuote
NevilClavain
(@krakoukass)
Warrant Officer Registered
Joined: 8 years ago
Posts: 203
Topic starter  

Leaps and bounds over your last engine post, great work on tweaking the engine to get it to this point Nevil. 

Thanks and yes this is funy to see this thing growing and progressing, even if significants issues and default remain

 

Remember that a lot of the Seam O'Neil stuff was very early days of shaders. Including those GPU gems ones.

So many decisions about where stuff could be stored was based on the limitations back then, a lot of those have no gone away and you can be much more flexible about it all.

You're certainly right. 

Confused because I should have realize it by myself


ReplyQuote
NevilClavain
(@krakoukass)
Warrant Officer Registered
Joined: 8 years ago
Posts: 203
Topic starter  
Randomized fbm and iq turbulence are nice, but I also need a way to control planet's topography and continent's shape. 

 

I therefore added some specialized code to do it; submitting the following bitmap, containing an example of continent map, to the new shaders  :

 

 

Image43.png

 

Black pixels (0,0,0) simply represents oceans and rivers; green channel is dedicated for plains and continents coasts altitude, and blue channel is reserved for areas where mountains are authorized; I get the following results:

 

Image39.png

 

Image37.png

 

Image38.png

 

Image34.png

 

Image35.png

 

Image40.png

 

Image42.png

 

Vertex shader texture filtering activation is essential to avoid a "staircase" effect on the landscape, due to the huge size of the planet. 


ReplyQuote
Geraldine
(@geraldine)
Rear Admiral Registered
Joined: 8 years ago
Posts: 3459
 

Only one word for this Nevil, beautiful, simply beautiful!


ReplyQuote