we ran into a very weird problem, which we can’t solve so far. Hopefully someone knows what could cause it and give us some information about it. We’d really appreciate it.
OK, so, we’re working on a 3D game, in which you can run around in a 3rd person view, examine some objects, etc. Now, in one of the scenes, when you go to some certain area, the whole view gets messed up like this:
The thing is that nothing special happens there (no objects are activated, nothing new is triggered), so it’s very difficult to say what’s causing it. Also, the scene seems to keep running (you can walk around, even though you can’t see it, you can hear the music and the sounds, etc.), but you just can’t see anything (well, the view stays like the photo). The interesting thing is that if you go to another scene (e.g. tap on the main menu button, which you can’t see but know where it is ), the view stays the same, even though you can hear that the new scene has been loaded. Also, it only happens on a second generation iPod. It works fine on iPhone 3GS and iPhone 4.
Speaking about the scene itself, it has lightmaps, a couple of directional lights, some normal mapped characters, etc. But other scenes have those, too (and the problem doesn’t seem to occur in them). So, maybe anyone knows what could cause this behavior? Any help would be really nice.
the sencond gen device represents a totally different level of hardware, a massively weaker and more limited one (22mb of VRAM, 30mb of RAM, no programmable shader pipeline, significantly weaker cpu, massively weaker gpu …), as such its very well possible that you have somewhere a shader that would rely on something thats just not possible with fixedfunction pipeline as per OpenGL ES 1.1
normal mapping only works on fixed function if you code it yourself, and use world space lighting with one directional light. its a hack at best. So its pretty sure that alone won’t work never mind the rest. Just dump the 2nd gen ipod and compile for arm7
Thank you for the replies.
Well, I know that the second gen devices are weaker, don’t support various shaders or features. Also, I know that the normal map doesn’t work (it just falls back to a non-bumped shader). Just wanted to give you as much info as possible. And we tried using both, mobile and regular shaders, and the problem still persists. There is also a custom unlit shader for the GUI elements.
So, anyway, as far as I understand, you suggest that the problem is within the shaders? However, basically the same scene (the same environment, same characters, just a different setup) is used later in the game and it doesn’t mess up like this.
Speaking about dumping the old devices. Well, many people have requested it to work on second gen devices, so we’ve tried to make it work and it runs considerably well. Except for this strange problem.
The shaders that don’t work just fall back to the ones that work on this device. So, how can this cause such a weird problem? Again, it only happens when you’re at some particular area in the scene. And it doesn’t happen in a very similar scene (with basically the same objects, using the same shaders).
Firstly, the scene doesn’t reach this limit. Secondly, if it did, the app would just crash, wouldn’t it?
Hehe, updating the system helped (it doesn’t mess up anymore). The issue is still weird, though. But, anyway, thank you very much for all the ideas and everything