08-25-2012, 06:56 AM
So there's this open-source project I'm interested in called GRIT. It's planned to be an engine for games like GTA (you play as various characters, drive cars, etc) and uses OGRE for rendering. A few days ago there were some updates to materials and the lighting system, so I updated SVN and checked them out. I saw some highly impressive graphics which I haven't seen in any open-source engine so far, but have in most modern games (3 years or more recent). I decided to make a comparison with it, about two render features I'd love to see in Xonotic and wish to know if they are possible.
The biggest feature that impressed me is how GRIT handles lighting on normal mapped surfaces. Light is culled by the texture's norm-map to a very visible extent, whereas in Xonotic this is only noticeable if you look very close at some surfaces (regardless of the angle of the light). What Xonotic might need is a cvar to adjust how much the deform of normal maps culls angled lighting, but this should also affect lightmaps.
IMO that looks amazing, do want! I already looked for a cvar, but the only one I know of is a setting to adjust the intensity of parallax maps, not how they affect light.
Second effect I noticed in GRIT (and a lot of nice games) is metallic cubemap reflections. Xonotic has an issue here: It does support cubemaps (as well as the _reflect texture to mask them) but not a way to adjust their deformation so they give that bent metal feel. Yes, the normal map deform of a surface does affect cubemap reflections as well, but such cubemaps also need a separate deformation. In those engines, rotating the camera causes cubemaps to deform to a very large extent, giving the feeling that the surface is crushed / undulated metal, although the norm-map only deforms a few details on the surface (and does not necessarily contribute to that). In my opinion, Xonotic needs a way to optionally deform cubemaps using a different texture. Or maybe it can be done with the texture's normal map, but it needs to be much more visible.
That's a screenshot from GRIT of the cubemap testing. If you look close at the leftmost two spheres, you can see the reflection gives an oil like feeling, because it's deformed despite the round surface. The second ball also uses a better blending technique... while in Xonotic they're usually additive which is rather unrealistic (might change that myself if possible). Also note that I already created cubemap reflections for the exX set, but the branch is awaiting merge for many months (as usual lol).
So... any way to achieve such graphics in Xonotic? That lighting at least would be killer, but I also keep my aim to cubemap all metal surfaces to look similar to the balls in that screenshot. Where would an engine change be needed, and would the lights on maps need to be changed as well?
The biggest feature that impressed me is how GRIT handles lighting on normal mapped surfaces. Light is culled by the texture's norm-map to a very visible extent, whereas in Xonotic this is only noticeable if you look very close at some surfaces (regardless of the angle of the light). What Xonotic might need is a cvar to adjust how much the deform of normal maps culls angled lighting, but this should also affect lightmaps.
IMO that looks amazing, do want! I already looked for a cvar, but the only one I know of is a setting to adjust the intensity of parallax maps, not how they affect light.
Second effect I noticed in GRIT (and a lot of nice games) is metallic cubemap reflections. Xonotic has an issue here: It does support cubemaps (as well as the _reflect texture to mask them) but not a way to adjust their deformation so they give that bent metal feel. Yes, the normal map deform of a surface does affect cubemap reflections as well, but such cubemaps also need a separate deformation. In those engines, rotating the camera causes cubemaps to deform to a very large extent, giving the feeling that the surface is crushed / undulated metal, although the norm-map only deforms a few details on the surface (and does not necessarily contribute to that). In my opinion, Xonotic needs a way to optionally deform cubemaps using a different texture. Or maybe it can be done with the texture's normal map, but it needs to be much more visible.
That's a screenshot from GRIT of the cubemap testing. If you look close at the leftmost two spheres, you can see the reflection gives an oil like feeling, because it's deformed despite the round surface. The second ball also uses a better blending technique... while in Xonotic they're usually additive which is rather unrealistic (might change that myself if possible). Also note that I already created cubemap reflections for the exX set, but the branch is awaiting merge for many months (as usual lol).
So... any way to achieve such graphics in Xonotic? That lighting at least would be killer, but I also keep my aim to cubemap all metal surfaces to look similar to the balls in that screenshot. Where would an engine change be needed, and would the lights on maps need to be changed as well?