New Renderer (OpenGL 3.3)
-
Thanks! Yeah, I know that it is way more work and thus decided that more lights are not worth the hassle. With the shader power of modern hardware it should be possible to render more than the old 8 lights maximum anyway (FL only uses 2 in space!). Plus only newer graphics cards have enough memory and memory bandwidth to not take a large performance hit.
Geometry shader etc only would be for optimizations, I have seen some techniques using them for further speedup. So this again would be optional (on some older cards they even make it slower…).
Thanks also for separating the posts into two threads, with the number growing it really was necessary.
-
-
-
this looks good would like to play this mod and see it up close.
-
Nice video, but wrong topic Unless you magically switched to OpenGL
-
-
I know it has been some time (quite a lot actually), but I had some other stuff to do plus I put it aside for some time to get new ideas (which I got plenty of now).
Here are the newest screens where I tested the new automatically upscaled + filtered textures. I also changed the normalmaps so that it doesn’t look too much like plastic.
There is still some testing, bug fixing and optimization to do, but at least I got some ideas how to get around some problems. For now it runs on my AMD graphics chips and on my Intel hd4000 (which has one more bug I need to find).
-
Looks great Schmackbolzen. +1 Sizer, you guys continue to always impress. +1
-
-
Just to keep you guys updated: I am still working from time to time on this. Thanks to FF and the FTOW guys I now know what is being rendered (well, besides which lod level) and thus could include some basic shadow rending (although there are still some bugs).
And here a short video:
LinkKeep in mind that there is still work to be done. Ideally I don’t use simple filtered shadow maps so that the edges of the shadows don’t get so blurry. But before I use more complicated algorithms the rest has to work well enough
Edit:
I got a request for a video with a larger player ship:
Link -
You can actually fairly easily work around the LOD issue by giving Freelancer the wrong render information and adding a correction matrix to all SetTransform calls involving the world transform. The correction matrix would simply move the view from the player ship to the light.
The downside to this technique is that FL’s occlusion culling will prevent stuff behind the camera from rendering, so you have to render twice with rotated views and a ~180 deg FOV. This can get a bit expensive with cascaded shadow maps like Freeworlds uses.
-
Well, my approach does not involve letting FL render for now. I keep a list on what is being rendered and update the positions before I render the list for shadows. Everything which is too far away is not added, so at least I will not get the lower LOD levels added. I also filter vertex and index data which is streamed. I hooked the function which is called when a CObject is destroyed to remove it from my list. And of course when index and vertex buffers get deleted these entries also get removed. There are still some glitches though, so for now it is not working 100%. And I will have to think about the streamed data, because planets etc. are missing for now. With this approach asteroids etc. also don’t cast any shadows (because I don’t get the CObjects from them). But at least the shadow rendering is very fast.
The problem regarding the matrices I asked you about was, that I had to multiply the modelview matrix from FL with a
1 0 0 0 0 1 0 0 0 0 -1 0 0 0 0 1 ```matrix. After that I could get it to work.
-
So I got most of the glitches fixes, looking good so far. Here is a short video: Link
The short stutters come from running FL and the server on the same machine. The shadow flickering is due to a state change I did not find yet, but will be fixed at some point.
I think I am nearly ready to test some of the advanced shadow rendering techniques.
-
Super! Even with turret animation
Now it is more atmospheric with shadows, etc.! -
very well done
-
Great job! Do you use cascaded shadow maps or only one shadow map?
-
Thanks all!
@HeIIoween: The turret shadows actually were a bit tricky since FL renders them as part of the stations. But I guess since you noticed them the effort was worth it Currently the only problem is, that their shadows vanish when the turrets are out of sight.
@w0dk4: For now it is one PCF filtered shadow map. But since most of it works now the next step is exchanging it with a better technique. If I get PSSM shadows to work nicely I plan to use them.
Also planets still don’t cast shadows. I am not sure if this is so bad that I should invest time trying to solve it.
-
Personally I find planet shadows to be extremely important, but I don’t rasterize them because sharp edges look bad on them. Instead, I raytrace the shadows as a final step to the shadow buffer (I buffer the shadows so I can use temporal shadow filtering), which allows me to smooth them out at the edges. No flickering, no aliasing, they look great and honestly run very quickly.
-
Yes, spheres are easy to ray trace and the shadows will look great then, that is for sure.
For now I just generate a polygonal sphere which I scale for each planet so I don’t have to generate more than one. If I subdivide it enough it should not look to bad. In my tests it does work on the player ship for all of the planets. I have yet to find a system where a planet actually casts a shadow on a station, as this seems to be very rare in FL.
Long story short: Shadows for planets now work, too
-
-
Looking great!
-
Thanks!
It was actually surprisingly easy to enable shadows for the second light source FL uses. So I replaced three of the screenshots with new ones in my post above (the ones without statistics in the upper left corner). I was expecting it to be unstable, since FL switches between the light sources rather often, but so far it seems to work very well and looks really good for my taste. -
So how far away would you say you are from release, or is this going to be kept under wraps with the excuse of ‘polish’ until Freelancer really has kicked the bucket?
I’m not a coder and I take a lot of flak for that, apparently not understanding the hard work that people put into this sort of thing and how its their decision to do what they like with it.
Buuuut as an artist, it pains me to see technology like this which could extend Freelancer’s life expectancy and make my work look ten thousand times better kept behind lock and key because nobody wants to help anyone out.
Post 56 of 349