I feel pretty bad. For two weeks I have been trying to get reflective floors working in Gamebryo. At first I tried just rendering from a different camera angle. It never really worked. So I next looked into portals. But after a couple of days where I actually figured them out, I emailed support to clarify some questions and they said that portals were just for culling, and were not true portals. So then I found a sample where they have reflection. But the code was split among 3 files. So I extracted the part I wanted out but it didn’t work. It took me a couple of days to get a pink texture floor. Then a week to get a texture that moved with the camera, but was distorted and totally wrong. Then I updated the code after not looking at reflection for a couple of days and I couldn’t even get the texture to update anymore.
So I threw in the towel and told the boss to give it to someone else with more graphics experience.
* EDIT * Gamebryo support was helpful through this process. This shouldn’t be taken as a knock against Gamebryo, just my own lack of graphics knowledge. * END EDIT *
While the world doesn’t need another graphics engine, these experiences motivate me to continue work on Rak3D. There’s two features I want to have that I haven’t seen before:
1. Rather than letting users program most features themselves via low-level constructs, Rak3D would include every feature I can imagine, in modular classes. So reflection would be one line of code, the shader would be a multi-part super-shader that does normal, parallax, light mapping, etc. This would be organized into a two-level system, low and high. The low level system is typical of what you see in 3D engines right now. The high level system is like RakNet’s plugins, where they expose direct features. What I like about this is stuff just works, there is no debugging needed.
2. A big problem I have is stuff just doesn’t show up and I have absolutely no idea why (as above). I want to include an interactive on-screen debugger where I can look at my scene heirachy as a tree, which will indicate with colors what is visible. And I can select any object and get full details on it, esp. why it is not visible on screen, or why it is using a default or missing texture.