New Renderer (OpenGL 3.3)
-
It surely looks good enough to be worthy of “better than fine”!
What (in a nutshell, and in layman’s terms) does you project entail? Will you be ‘releasing’ a graphically revamped version of FL? Do you, apart from the graphics rendering, still use all the files that make up the game? Or are you writing a whole new engine? (BTW I apologize if I bore / bother you with these questions; feel free to ignore!)
-
The look is great.
It is more than old FL players could dream of.
But I assume you suffer the same disease most of us have… the wish to make it perfect. The problem with that is, once you get a step closer to perfection you run across many new ideas which would make it even better. Am I correct? -
I agree with OP, looks great, how Freelancer should have looked like in the beginning . But trying to reach perfection, imo, you might get burnt out. I believe you have other projects that you have started that I’m sure you would like to work on again. You can always take a break from it, work on other things then come back with more ideas for this. But its your baby, you do what you want to. Really impressive work though
-
I know what you guys mean. You are talking about the well known “feature creep”. While it might look that way, there is actually a goal I had (and still have) for the first release:
- Good looking shadows
- Good rendering quality so it does not look artificial
- A (somewhat acceptable) material system
- Acceptable performance
- No problematic bugs and enough polish for release
For the current state only the last one is open now. So as you can see there is quite a large progress already made.
Stuff I have on my list for after release:
- More lights, especially make running lights real lights
- Add bloom support (currently there is only exposure control)
- Automatic exposure control (from Valve HL2 paper)
- More baked in reflections so that e.g. nebula not in the starspheres are also reflected
- More performance optimizations
- … (here you can add literally endless stuff which you could do)
I intend to make it a mod so in the end everyone can use it. I am thinking about to exclude mods who stole stuff from others, so that they can learn the hard way why stealing is not good. Why should I respect their work if they don’t respect the work of others. I am still open for feedback on this, though.
At first I will release it for our mod only, so problems can be found more quickly. After a while I plan to create a standalone mod on Moddb with only the graphics enhancements for others to use. Hopefully FL will live a bit longer that way.
As for the files: The models in the videos are from vanilla FL. They just use height and normal maps. I upscaled the textures using a self build and trained neural net plus some automatic post processing. Regarding the engine: Basically I replaced the end of the rendering pipeline from FL with my stuff. So maybe its half a new rendering engine. Some stuff still gets just passed through.
I did some tests with eigos and it looks like we have a usable workflow for exporting stuff and use it with my new rendering system. Here is a video from an asteroid eigos created: http://www.flnu.net/downloads/flroid02_4.mp4 . It uses height, normal, roughness and metalness maps.
It seems like everyone is happy with the way the rendering looks now (me included), so I won’t touch that anymore as far as I am able to.
Edit: Replaced the video with a one where the shadows aren’t bugged due to wrong bias.
Edit2: After some map and parameter tuning: http://www.flnu.net/downloads/flroid02_8.mp4 -
I haven’t read the 20+ pages but I’ve seen some pictures and they are absolutely beautiful
-
Thanks!
I was able to reverse the list of asteroids which are about to be rendered and integrate it into the shadow rendering. Also I now automatically generate the necessary TBN data for normal maps etc. on asteroids, because FL does not support saving them into the models.
The result can be seen in this video: http://www.flnu.net/downloads/fl1011.mp4
Costs a lot of FPS currently despite of instancing, so improving it is the next step.
-
TBN data could be put and spread across uv mapping vectors in VMeshData. FL materials don’t use more than two uv maps, so six more channels as defined by FVF are free for the taking. Some quantization techniques could be employed to compress into fewer bits. Though if the cost of generating them on the fly isn’t hitting performance it might not be as useful.
-
Thank you, I really like the look, too!
@Treewyrm: Thanks for the hints, but I know that. The problem is, that FL does not support more than two texture coordinates when rendering asteroids. So the only other option would be to load the model yourself instead of letting FL do it. This is an option for the future, since you also only can use one material, so it would be an improvement. For normal models, the TBN data already is stored into additional texture coordinates.
-
While I did some internal progress, here are the latest results of my texture upscaling attempts:
As you can see this takes the game to a whole new level. Some example videos are here:
http://www.flnu.net/downloads/FL2411.mp4
http://www.flnu.net/downloads/FL2411_2.mp4Keep in mind that the material settings are not tweaked yet, so there is still room for improvement. Currently there is only one different one for glass. The rest uses the same one where I quickly tested some values and chose the best looking. If you have a different taste you could make all reflections super smooth etc.
-
Is it ESRGAN, PPON, or your own model ?
I tried Misc x4 pretrained model for ESRGAN and the result was kinda good. Then I tried PPON and for some details it’s better than Misc x4. PPON can’t support alpha channel so I need to extract alpha channel with GIMP.
On the one hand edit is better than upscale but on the other hand upscale helps a lot if you want the best accuracy as possible.
Here is a sample of liberty AI upscale I did. I warn you that I had to do 128x128 parts from 256x256 textures cause my computer isn’t using CUDA cores and, as always, has outdated components… The window part has been done with PPON. liberty_256 is the original and 1024 is the Misc 4x one.
-
You first need to undo the dds compression. The textures above are done with ESRGAN and pretrained models (two steps, undo dds first and then upscaling). There are quite extensive lists of models you can find on the net. I will try other networks next (e.g. the one you suggested), but the current results are quite impressive. There are tools for ESRGAN which allow alpha upscaling, although the one I tested (IEU) only worked for one texture, not for mass conversion. I did not have time yet to debug that.
Here is the texture upscaled with the same method used in the videos: http://www.flnu.net/downloads/liberty2_1024.png
I did not have any problems with cuda, everything worked fine. But the chip in my laptop is not that old (maxwell). You also could use cpu only, although that sadly is quite slow.
If you get better results, let me know!
-
Schmackbolzen wrote:
You first need to undo the dds compression. The textures above are done with ESRGAN and pretrained models (two steps, undo dds first and then upscaling). There are quite extensive lists of models you can find on the net. I will try other networks next (e.g. the one you suggested), but the current results are quite impressive. There are tools for ESRGAN which allow alpha upscaling, although the one I tested (IEU) only worked for one texture, not for mass conversion. I did not have time yet to debug that.Here is the texture upscaled with the same method used in the videos: http://www.flnu.net/downloads/liberty2_1024.png
I did not have any problems with cuda, everything worked fine. But the chip in my laptop is not that old (maxwell). You also could use cpu only, although that sadly is quite slow.
If you get better results, let me know!
I already used BC1_Smooth2 but the 1024 lost his tag while renaming. (Always disliked these artifacts…)
I just saw the alpha model option while I recovered IEU due to Windows update fail 2 weeks ago. I put the Skyrim one.
I added the PPON one to the Mediafire shared folder. I think edges sharpness are great but details are weird compared to ESRGAN 4xMisc. *_PPON is the right one.
What pretrained models did you use ?
-
The one I found best and used on all the images is the ground one. I also tested the misc one and the box one, but they either looked weird or too clean. For removing the dds artefacts I also found the one you use the best one yet. I will try different models/networks as soon I have time for it.
-
I have a fun fact about BC1 compression artifact removal.
When you use BC1_smooth2 and use misc the result is not that detailed, but when you use another BC1 removal then misc, it’s over detailed.
It’s rather strange.
Edit : Mixed BC1_smooth opacity 128 + BC1_take2 Background
Edit 2 : Fixed URL of “Edit”
-
I noticed that you can mix models, so I ended up using a hybrid between the fallout weapons and ground textures models (you have to stay above 0.7, otherwise you will get colour shifts).
Also I developed an algorithm to automatically create roughness maps. The result can be seen in this video:
http://www.flnu.net/downloads/Fl1501.mp4There are still some small issues left. One of them is, that somehow most of the time I find it too dark. Will be one of the next things I try to fix.
-
I have an idea too. Removing all bevel and shading.
Here is the principle :
Take a 3D model creator.
Create a plane.
Put a random normal map on the plane where some shapes are put, squares, triangles, etc.
Put a camera above the plane.
Add a light source.
Animate the light source to discribe a circle around the plane at different light elevation for exemple light elevation 0° then 10° and so on.
Take an uncompressed video of each light elevation.
After decompose the video(s) in PNG pictures.
Then with the same camera take a video of the same length without the normal map and decompose it in series of PNG pictures.
Put all normal map pics in lowres folder of AI upscale and put the not normal map pics in reference images of AI upscaler.
Finally, train and see the result on real images.If it works, it would be nice. Because it could be applied to every game textures that has prerendered texture effects.
-
(Sorry for the long delay, was busy plus got a bad cold.)
Yeah, I see what you want to do, and I was hoping there was a way. I would use it for automatic height map creation. But for my understanding, you would need different neural network layouts for that. Btw. there is a network which creates normal maps in the wiki. I tested it, but it creates weird results (probably not good training data).
I already tried training my network with height map data, but the cnns I used seemed not to work with it. When I have the time I will try some more stuff, probably using ESRGAN.
Regarding the wrapper:
I was able to change the rendering pipeline to be nearly like: https://learnopengl.com/PBR/Theory
I don’t use any AO maps, since the bent normal maps already create a nice effect. I also changed the lights to be sphere lights and not point lights, since the suns are quite large. The latter is from UE4 engine presentation notes plus some annoying testing, since the general implementations I found seem to be incorrect and the notes are not clear on the equations.In general I noticed most of the stuff I use now is from UE4 (if they still use the stuff).
Here is a video from a few days later back in January: http://www.flnu.net/downloads/Fl1901.mp4 In the end I disable the environment maps so that one can compare. It looks really good now in my opinion.
Basically I am now hunting the last bugs, which sadly are not that easy to find. Plus I don’t have that much time currently.
-
I found this.
I tried but I don’t know how to make it work. I think it can help to seperate heights and normals (not normal maps).
I tried to remove shadows and highlights with GIMP but the result was never good, as in the original shadow details are missed as you can see in Defender’s texture. I had a converstation with somebody on GameUpscale Discord and he gave me some Imagemagicks .sh delight and deshadow scripts. It worked but there is a sort of bloom after applying them…