New Renderer (OpenGL 3.3)
-
Thanks!
So here is a video of the current state: http://www.flnu.net/downloads/fl0906.mp4This is a graphical level of which I think it is ready for release (minus the shadows! I definitely need to change the technique!). Lighting is about two third PBR plus a few tricks I used to make it work with the old FL lighting and materials including textures.
I recalculated all the normals and don’t weight in the original ones yet so the geometry is less round at some places. But all the wrong lighting is gone now.
What’s left is fixing more bugs, a material system, some optimizations and different shadows. If there is time I’ll try to render better planet atmospheres, but maybe that comes for later versions.
Also I have been working with .Nx from this thread to create better models and textures, but this will take some time.
At this point feedback would be helpful, negative and positive. Things you like and you don’t etc.
-
Id be interested in how it renders the more “exotic” textures.
e.g. Nomads, effects, semi-transparent stuff, nebulas, etc. -
Besides for models this is untouched for now. It basically uses the old fixed function pipeline from d3d8 wrapped to OpenGL. I plan to use shader for effects etc. in later versions to to neat stuff.
Here is a nomad BS spawned at the station:
Edit:
And here a station in a nebula:
P.S.: The lightning flashes do cast shadows!
Here is the same scene in Vanilla FL:
-
cool
Id be willing to jump in with texture work.
Eventhough I have only little time due to a large mod update I still believe I can afford a bit time on that. -
Sounds good! .Nx has contacted you regarding the texturing work.
No one really has commented on the video. I would like to know whether you noticed a change compared to the video before. Is it better, worse or the same? What did you notice? I realize it is a matter of taste and I had to make a choice regarding the look. If the video is too blurry I can encode it with a better quality.
Edit: .Nx noticed me that some browsers (like chrome) have buggy video players and in that case mine look way better if you download them and watch them with a normal video player.
-
The result of your modification is really good!
I have a question. Will we be able to use a modifier for each texture, because of the fact if I do a wrong height map optimisation via photoshop or any other software, it would be nice to change the values through a modifier.
-
Hi Schmackbolzen, Ive been following this thread for a year now and decided to register yesterday, so I can ask some questions.
1.) Will this renderer work for other Freelancer mods? I am coming from DiscoveryGC.
2.) How far along is the renderer from finishing? It looks absolutely amazing so far, I love the shadows and the bumpmaps.
3.) On the technical side, what modifications are you making to the vanilla models? Besides editing the MAT files and adding bumpmaps, what else needs doing for the renderer to have impact? Any specular maps and stuff like this?
I really hope you get to finish it and I hope even more that it will be available to work with other mods. It will really help to keep old Freelancer running for a bit longer!
-
Glad you guys like it!
@Freestalker.fr:
My goal is to have a file where you can change each value per texture so that there is a material system. The only bad thing about this is, that you have to change everything manually. I would rather have some automated process when the model gets exported from Max or smth. But for now I focus on a version which can get expanded later after release.@eigos:
I plan to create a mod on ModDB so everyone can incorporate it into their mod. The goal is to keep FL alive after all. Though I am thinking about first testing it on the mod I am maintaining because it is easier to get feedback and deliver updates.I can’t say when it is going to be finished. Currently I am working on polishing stuff and you never know when all the problematic bugs are gone. At least I can say it is working on AMD, Nvidia and Intel graphic cards. Hopefully I can finish it this summer.
Regarding the modifications: I only scaled up the vanilla textures and applied some filtering to make them look less blurry. Besides of that .mat files are not changed. The models need some more informations (TBN data, like the Max .cmp exporter writes) and that’s all. I have a batch process which adds the data to original models. Additional textures (height and normal maps with baked in self shadowing) are loaded from separate folders depending on the diffuse texture name. But I am currently working with .Nx to test more additional maps. We will see with what we’ll come up with.
-
So for those who enjoy my videos here are two with the current state:
http://www.flnu.net/downloads/fl0807.mp4
http://www.flnu.net/downloads/fl0807li.mp4Lots of internal fixes, fixed pipeline is gone (all shader now), optimizations and real post processing. I also added ambient occlusion maps. Plus I decided to scale down the ambient light intensity, since it is quite high in standard FL.
Still some work left, though. Feedback is welcome!
As always the stutters come from running FL server and FL on the same machine.
-
Ow! Details and specualrity of textures are gorgeous. It’s perfect! I love it!
I have and idea, for heightmaps, it should be nice to compil them to vectorial format to make them raw material for future improvements and also to be edited with ease.
-
Yeah I really like to look, too At certain places I am even surprised how good it looks now. I am still working on improving it, though. I decided to ignore point lights since it is really expensive to cast shadows for those (and I have not implemented them). Here is a video from NY without the point light at the planet: http://www.flnu.net/downloads/fl1007.mp4
Skotty and I think it is still ok. Other places look even better, because the missing shadows made it look strange.
I plan to automatically do some stuff for planets anyway so it should not be needed and also look better later on.
Regarding the heightmaps: You’re right, vector format is always better. I’ll see what I can do.
Also two nice screenshot I took while testing:
-
Wow nice! It would be an awesome thing to make vector format be readable by FL. Like that it would be saved as the graphics would never be outdated and there should be only diffuse maps to change. I’m waiting your mod so hard!
And did you changed specularity for each texture or for each model and what does it make if you totally remove specularity from the texture or model? Just to see if Nomad ships and stations and also asteroid could use heightmaps without having a metallic look.
-
Hehe, I know I am teasing you, but here are two more videos where I really liked the look:
http://www.flnu.net/downloads/fl12072.mp4
Here this model is not modified, meaning only diffuse maps:
http://www.flnu.net/downloads/fl1207.mp4Regarding the specularity: Since this is partially a PBR renderer, you have a BRDF and thus a roughness and metalness parameter for each material (also there will be some more like specular intensity for the environment maps). Currently I only know which model and texture is being rendered, so until we reverse more there will be a file where you can set all these values for each texture name (the names are taken from the .mat etc. utf nodes). I will try to make it not a pain to edit and preview those values
-
Nice renders! They are really beautiful. Shadows? Are you kidding? No? Or I don’t remember well? @_@
Thanks for the explanations . It’s nice to see that things become nicer and nicer over the time.
How did you implement these “sliders” to change metallic look, will it be editable ingame, via utfeditor or with a third party software.
Roughness map?… =_= I thought I knew every thing about rendering maps but here, it’s totally new! Thanks to have allowed us to have a better knowledge in computer rendering.
-
There is quite a lot material out there e.g. https://learnopengl.com/#!PBR/Theory in the end there are some maps mentioned (I don’t have implemented all of them and there are a lot more possible maps). Currently I calculate the roughness from the luminance of the diffuse map in the shader, if there is no existing roughness map. You’re probably not interested in the math part, but there is also other interesting stuff in the article.
Keep in mind that there is not “the” rendering technique. My solution is also a variation of different techniques combined, which is not unusual.
Regarding the material values: I think that I can create a program with a preview ( I already have a renderer which can load the cmp and mat files etc.). But its possible that I postpone that for after the release of the wrapper.
Btw. shadows have been there quite early and it is also one of the last things on my list: I want to exchange them for a better shadow rendering technique.
-
Ok! I have take a short look at your link, that was exactly what I thought about PBR. I already watched a podcast on Youtube about this were they said that each real life material has its virtual clone made by technicians, engineers and artists. Nice to see that finally asteroid, planets and Nomad structures will benefit of all modern techniques and carry some consistency, the game would become really photorealistic.
As for maths, give me a link, please? I could understand it.
I know that there is not only ONE technique. you have not to use every maps because if you already use height maps to make the relief what is the need to use bump and normal maps? Height maps are far more powerful than bump and nrm maps! Are height maps more resource demanding than bump or nrm maps?
Thanks for creating the material viewer, it will be very useful for us.
I was talking about model shadows where you can see the shadow of your [ship] at Kusari Battleship hull, it’s quite nice, I like it!
Edit : Is there a way to have emissive maps, it could improve lighting.
= edition -
Ah I see, but it’s just from the normal shadow rendering. So nothing new here The new technique should only create sharper edges and a larger shadowed area (it’s quite limited right now).
I was referring to the math in the same article, but if you are familiar with all those expressions here is a nice article which goes into more detail: http://renderwonk.com/publications/s2010-shading-course/hoffman/s2010_physically_based_shading_hoffman_a_notes.pdf
Regarding the maps: The names are a little bit problematic because often e.g. the name bump map is used for a normal map but there are also the old dot3 bump maps (which are greyscale). So to prevent misunderstandings you always have to make sure what map the author exactly is meaning with the name. Glossiness and roughness map can also be the same because 1-roughness is usually glossiness. But there also is specularity, which can be converted to glossiness etc., which again depends on your lighting formula. So you really have to pay attention.
It makes sense to mix height and normal maps because then you can put all the fine details onto the normal map and the real visible height difference go into the height map. (This is how I do it plus the normal maps are a variation of valve’s ssbump maps so that they have self shadowing baked in using the appropriate height map). I will explain all the maps I use when the wrapper gets released (there might still be changes until then).
Usually I test the specific map and if the benefit is not high enough I don’t use it. But I am open for suggestions, even after the release.
-
Edited last post.
It’s more physic than maths. It looks like my CPGE cours (Cours Préparatoire aux Grandes Ecoles to become an engineer via an engineer school not via a master, if I had 1 or 2 years more to learn what I had to learn it should have been better but I can’t redo the past…:( ) but here it’s optic and I like this so it shouldn’t be too hard to read.
I know the difference between bump and nrm, I already noticed that there is some misconception about these terms.
I walked around textures in games DS1 and Nexus TJI and every time alpha channel was used for a specific map and I tried to extract those alpha channel and that was not so difficult to do via Paint.net and its channel mixer.
So we can use every maps for a different task that they were intended to be used. e.g. in DS1 they use the “normal map” to make alter color appearance.I’ve an idea! Mix nrm and height maps in one file and use the alpha channel to mix them, like this it should drastically reduce the files number and also reduce the amount of space used by the wrapper.
-
Actually, I already compress the normal maps with ATI2N format and the height maps have ATI1N. So it is the smallest it can get. But you’re right you could use maps for different purpose, as long as the texture compression doesn’t stand in the way.
I see that you have some knowledge about the topic and especially the mathematic background (which is good). Of course it is more physics, but the used tool is mathematics Maybe once it is released you can try to experiment with the shader code of the wrapper to test different lighting models out, if you are into that stuff. There might be even a better looking one than I use now.
Also there are emissive maps: FL uses them, so they are availlable.
-
I’ve begun to read the cours about light.
To summary the more homogeneous in refraction a medium is, the less it scatter. Also the more complex light transmission is, the more absorption is. (a+jb : 0+100j = 100 (cos90° + j sin90°) = 100 (cos(pi/2) + j sin(pi/2)) = full absorbtion of a wavlenght?) There is also integrals to do with an interval from 400 to 700 nm I think.
The less rough a surface is, the more it’s reflective and the more rough a surface is, the less it’s reflective and it become as dull as diffuse map.[Edited grammar and translation mistakes]