To all SSC Station occupants
Thank you for the donations over the past year (2024), it is much appreciated. I am still trying to figure out how to migrate the forums to another community software (probably phpbb) but in the meantime I have updated the forum software to the latest version. SSC has been around a while so their is some very long time members here still using the site, thanks for making SSC home and sorry I haven't been as vocal as I should be in the forums I will try to improve my posting frequency.
Thank you again to all of the members that do take the time to donate a little, it helps keep this station functioning on the outer reaches of space.
-D1-
The graphics of Pioneer are awesome and i love the terrain system, otherwise i see that the speed at wich the terrain becomes detailed when you approach it is a bit slow... something like Google maps, when the program is downloading the data for the high detail view you are watching at the moment. In fact if i want to experience the real detailed look of the planet in wich i'm landing, i have to wait some time before the view gets satisfying, and if i travel at high speed in the atmosphere, the landscape is always low quality until i stop mysfelf to let the engine stream the data of the heightmap.
Also the planet texture when watched from orbit can be very blocky and low res... i hope this will get fixed in the future 😀 (maybe with some extra detail texture passes)
Finally an even worse problem is the absence of an ambient light that makes the darksides of planets visible, but i think it is a very basic thing that will surely be added inthe future releases 🙂
I know what you mean Vlastan, unfortunately my tests with increasing the speeds and distances of rendering the planets was not particularly successful.
You see the computer has to work out a lot of stuff for planet rendering, running dozens of equations on every spot of the planet to work out what it should look like on the next level of quality, but that all must be done in real-time.
If someone can think of a fast alternative to perlin noise...
Its a necesary evil. What would be nice though is to keep those parts that have been calculated in memory a bit longer. I tried this myself, but was unable to do that without also increasing the distance at which the planets were loaded at, which caused some other issues. Does that make sense? 😉
I think you're looking at the problem the wrong way. Increasing the view distance is always going to hammer the CPU.
What you need to consider is ways of working out detail at a greater distance for lower cost, so that the update when you get close is barely noticeable, if at all.
Ideas:
- rendering detail direct to textures
- working out polygon detail on only the most visible features (sharp edges, ridges)
A brute force approach is obviously never going to work.
There needs to be a slider in the options menu to control view distance, so that slower PCs can keep it as it is, and faster PCs can set the level of detail higher.
Question: does Pioneer take advantage of multicore processors?
Now i understand that all the data is generated in real time... maybe there could be used a blend beetween procedural and preloaded textures to speed up the loading process ^^
What about the blocky textures of far planets ?
Simplex noise is faster than the standard Perlin noise: simplexnoise.pdf. If I remember correctly, Perlin noise interpolates between the vertices of a hypercube, while simplex noise does the same for simplexes (hyper-tetrahedrons). Fewer vertices allows for less overhead.
Pioneer uses simplex.
Ideas:
- rendering detail direct to textures
- working out polygon detail on only the most visible features (sharp edges, ridges)
Neither of these help significantly because perlin is strongly limited by the detail generation cost, not by translating to triangles. Almost all the colour detail is dependent on height in Pioneer.
You're not going to get much of a speed boost without reducing the count of simplex noise calls, either through algorithm reduction (maybe 2x at best) or by replacing with MPD or GPU-generated noise. The latter two are huge projects on their own.
Adjusting view distance independent of detail isn't usually worthwhile because it's the close stuff that changes frequently. If the patches are too large there can be cases where distant terrain is overdetailed, but I haven't checked whether Pioneer is vulnerable to this.
Simplex noise is faster than the standard Perlin noise: simplexnoise.pdf. If I remember correctly, Perlin noise interpolates between the vertices of a hypercube, while simplex noise does the same for simplexes (hyper-tetrahedrons). Fewer vertices allows for less overhead.
Yup, I should have said Perlin Simplex noise. We use 3D perlin simplex noise.
Pioneer does take advantage of multi-core CPUs, although it only runs 1 terrain generation thread so the utilization is not near to total. (So we have 1 terrain generation thread, one sound thread and 1 'everything else' thread)
Is it possible to have a hybrid system... one where you perhaps use tiled textures for mid or fine level detail... so these textures are applied to the first level of geometry that's generated with the noise, you'd have less overhead as it doesn't have to be generated on the fly, increased memory usage shouldn't be huge either.... should look pretty good also - if the underlying terrain is interesting, the tiling won't be noticeable, you can have more patterns, actually derived from photos and colour variations... If possible it would really be great to be able to integrate textures at some level anyway.
I was thinking about that 😉
you guys should check out some dev journals that explicitly cover terrain generation for Infinity MMO.
it's a very similar game in concept and it's been in development since 2005 or so.
lotsa good info. for ppl who understand programming...
I remember writing on the Egosoft forums ages ago about why their X games don't take advantage of multi-core processors. I was told that it's very tricky to do, and only a small percentage of gamers have that setup anyway. I asked whether their next game would support it and don't remember getting a satisfactory answer.
My point is congratulations on achieving what a large professional studio couldn't! 🙂
Another consideration might be offloading computation to the GPU i.e. via shaders.