Our old OpenGL library, PLIB, being 10 years old and no longer supported by its authors, we studied the possibility of migrating the whole graphic part to a more modern library. After several debates within the team, the OpenSceneGraph library (OSG for the friends) was chosen. This OpenGL 2.0/3.0 compatible library will allow us to have increased performances on the graphic part and especially will allow us to have effects which it was not possible to have with PLIB (at least without adding the missing OpenGL 2.0 functions ourselves).
We have already created the loader for scenes and cars (ReaderWriterACC), for the moment there are some error messages in the console related to the handling of multitexturing in the import. We hope to fix this in the near future.
In the effects we can already manage, there is the dynamic shadow (shadow generated at each frame) with a possibility to generate this shadow just for the cars or for the whole scene. In the future I would like to generate this shadow for only a part of the scene, this will avoid graphical artefacts and improve the graphical performance. I would also like to be able to apply this shadow on the cars, currently because of the shaders used, it is not the case.
For this we will certainly have to implement our own OSG function for the dynamic shadow, this one using directly coded shaders.
In the shaders implemented by Gaëtan, there is the cube environment mapping (reflection on the six faces applied in real time on the car). This brings even more to the OpenSceneGraph graphics compared to PLIB, but this shader is applied to every car in the race, this reduces performance considerably, especially on small configurations. The idea would be to use this shader only on the current car, to copy this cubemapping on the nearby cars and to disable it for the distant or non-displayed cars. With this system we could gain a lot in performance. Currently this shader is the biggest resource consumer on all new effects.
This shader also increases the specular reflection of the sunlight, this again increases the graphical quality of Speed Dreams. Currently we can enable/disable the cubemapping reflection on the shader, the ideal would be to be able to implement the function explained above and also to be able to disable all the shaders. With Julien we have some ideas about shaders (normalmap, specularmap, etc …) this would bring us to the level of current commercial simulators.
Below are some screenshots of the possibilities implemented on the sky.
The implementation of rain has also started. Optimisations are to be expected, but it is already functional.