Strata Nova

Started by iWasAdam, April 08, 2019, 07:52:20

Previous topic - Next topic

Derron

THIS. LOOKS. GREAT.

Ok, minor things:
sun "pulsates" too fast in my opinion. If you wrote some interpolation stuff then the scale could be done "non linear" - eg use "bounce" or "quad" or so ... just to make it more interesting.

Why slower? if it is too fast then it attracts too much attention of the viewer.


Next the texture of the planets is not "smooth" (filtered) this way the rotation looks more pixelated then it should. Dunno if you can improve that.



Side note for interested tinker-boys: if you added a second layer to some planets containing only some clouds you could move them at a custom speed (slow) to make it even look cooler and more "lively".

Depending on performance issues I would set them up as "optional" (you can disable it).


@ rings
I mentioned planet rings already. Will look cool too. Hope it all in all does not become "too much" on screen then.


bye
Ron

3DzForMe

#76
Quote.   Side note for interested tinker-boys: if you added a second layer to some planets containing only some clouds you could move them at a custom speed (slow) to make it even look cooler and more "lively".   

This does sound like a great effect. I really like where this is going  ;)

I
Quote. Here it is in motion with me changing the visuals as it plays:   

Oh yes, verrry impressive! 8)
BLitz3D, IDEal, AGK Studio, BMax, Java Code, Cerberus
Recent Hardware: Dell Laptop
Oldest Hardware: Commodore Amiga 1200 with 1084S Monitor & Blitz Basic 2.1

iWasAdam

#77
all above sorted:


includes better pulsing of sun, additional clouds and rings. added in orbit lines and it is starting to make sense again :)

QuoteDepending on performance issues
virtually no performance hit for all the visual trickery - it's all on the GPU

and remember... NO 3d!!
Here showing orbit lines and selected planet:

Derron

Looks pleasing to the eyes.

With your 2D aproach the only way for anti-aliased outlines of the planets is to render them at 2x the size on a new texture (render to texture) and then to scale them down to 0.5, 0.5 so it utilized the texture filtering through the GPU.
Or there is an even simpler solution with shaders - I am not experienced in this regards.

bye
Ron

Steve Elliott

Quote
With your 2D aproach the only way for anti-aliased outlines of the planets is to render them at 2x the size on a new texture (render to texture) and then to scale them down to 0.5, 0.5 so it utilized the texture filtering through the GPU.

...or just soften the png edges a little in a Photoshop-type Program.   ;D
Win11 64Gb 12th Gen Intel i9 12900K 3.2Ghz Nvidia RTX 3070Ti 8Gb
Win11 16Gb 12th Gen Intel i5 12450H 2Ghz Nvidia RTX 2050 8Gb
Win11  Pro 8Gb Celeron Intel UHD Graphics 600
Win10/Linux Mint 16Gb 4th Gen Intel i5 4570 3.2GHz, Nvidia GeForce GTX 1050 2Gb
macOS 32Gb Apple M2Max
pi5 8Gb
Spectrum Next 2Mb

Derron

Which png edges?

IWasAdam is drawing the circles "live" (so maybe some kind of textured poly). The rotation is simulated by moving the texture over this poly.


bye
Ron

Steve Elliott

Ah ok, then a shader could be used to anti-alias.
Win11 64Gb 12th Gen Intel i9 12900K 3.2Ghz Nvidia RTX 3070Ti 8Gb
Win11 16Gb 12th Gen Intel i5 12450H 2Ghz Nvidia RTX 2050 8Gb
Win11  Pro 8Gb Celeron Intel UHD Graphics 600
Win10/Linux Mint 16Gb 4th Gen Intel i5 4570 3.2GHz, Nvidia GeForce GTX 1050 2Gb
macOS 32Gb Apple M2Max
pi5 8Gb
Spectrum Next 2Mb

Qube

Looking good ;D Make sure you test your shader goodness on other hardware / OS's though :)

QuoteOr there is an even simpler solution with shaders - I am not experienced in this regards.
Just had a very quick look at a FXAA shader for openGL. Doesn't look too crazy but I'm not experienced with them either. I know there are other AA methods which produce better results but are more GPU / memory costly so I doubt you'd need to go crazy on the AA side for things beyond something light and simple.
Mac Studio M1 Max ( 10 core CPU - 24 core GPU ), 32GB LPDDR5, 512GB SSD,
Beelink SER7 Mini Gaming PC, Ryzen 7 7840HS 8-Core 16-Thread 5.1GHz Processor, 32G DDR5 RAM 1T PCIe 4.0 SSD
MSI MEG 342C 34" QD-OLED Monitor

Until the next time.

Derron

Thanks for the link..but it seems as if fxaa is pretty costly.
There is no need for a full screen AA as the background image etc already look good.

It just needs the planets / overlays to be AA'd. Which is why I suggested to render each planet at 2x on an individual texture. Then render these textures at a scale of 50% ...it should then automatically be smoothed out.

If texts are already smooth (ttf and freetype) then you might render it afterwards to avoid "oversmoothing".

Utilizing render2texture can even speed up rendering for composite images with an animation speed lower than a pixel per frame.

Bye
Ron

Qube

QuoteThanks for the link..but it seems as if fxaa is pretty costly.
No it's not costly. The clue's in the name "Fast approximate anti-aliasing". It can be applied to a texture and does not have to be full screen. It is also virtually cost free on a modest GPU
Mac Studio M1 Max ( 10 core CPU - 24 core GPU ), 32GB LPDDR5, 512GB SSD,
Beelink SER7 Mini Gaming PC, Ryzen 7 7840HS 8-Core 16-Thread 5.1GHz Processor, 32G DDR5 RAM 1T PCIe 4.0 SSD
MSI MEG 342C 34" QD-OLED Monitor

Until the next time.

Derron

Was just judging on the framerates in your link.

If it works on textures than...this might be worth a try (if possible).


Bye
Ron

iWasAdam

planet edges now have alpha blending:


I needed to tinker and play with the shader until it sorta seemed right

Derron

If you want - feel free to drop 2-3 sentences to describe how you eg. approached the anti-aliasing.

Think visually it is 'nough done for now (we will talk about the planet-HUD/info display once you settled for the information to display there). Back to the actual game development.


bye
Ron

iWasAdam

ok, the alpha in the shader is not quite as simple as you'd think it was
you have the alpha. and the color must also be multiplied by the alpha to give the correct result

here is the code:

if (radius < innerline){
//inside the planet so alpha is 1
alpha = 1.0;
}else{
//edge of planet, modify the color and alpha
alpha = 1.0 - ((radius-innerline)*30.0);
col *= alpha;
}


so find the edge - move in a bit, and fade this 'bit'

iWasAdam

Lighting corrected, shadow rotation errors sorted, alpha sorted, clouds and highlights corrected. Nailed it. I'm (on the visual side) done  8)