I get condescending because people hand wave over real world technical limitations of these devices like these limits are nothing, when I can give hard numbers to back what I say. Let me give an actual, in the real world example of how limiting VR can be - the VR application we are making right now for gear VR - we are using a note 4 currently. In stress tests, outside of a VR application, we were able to push about 500k polygons in about 400 draw calls a second at an acceptable frame rate. Trying to stress test inside of VR, however? For one, we had to eliminate environmental shadowing and reflections entirely, because those post effects were too latent. All of our texture sizes needed to be extremely reduced - we wound up using 128 x 128 8-bit textures. We had to constantly micromanage unity's garbage collector just to get the thing to run without running out of memory.
In the end, how much did we have to work with? We had about 20k polygons a second and about 40 draw calls to work with.
Extrapolate that performance difference to other hardware, because it's applicable. Virtual reality isn't a simple task to achieve at all, it's not merely "dialing things down," it's not something trivial to pull off. Every demo sony has shown off has been extremely well designed to hide all the very real, very obvious short comings. This isn't simply the PS4, either, it affects all VR devices. A Vive headset on a titan X SLI setup isn't going to look like modern-gen gaming. I see people left and right saying "I'll be fine with PS4 games running at PS3 specs." What does that even mean? There are numerous things the PS3 did which will not be feasible in VR without a massive increase in power behind the hardware that the PS4 has. They point to things like the shark demo:
And you look at it and start asking "what exactly is going on in this scene"? There is nearly no lighting, there is maybe 10k polygons going on screen at once. The entire thing takes place in a blue foggy void. So people push the luge demo - a demo which is built in a world where they can very aggressively cull everything around you to make it run faster because it goes down linear paths. No real lighting, no advanced shader calls. It's all primitive stuff.
What's left, people ask. Well, stuff like Luckey's Tale? The Mario 64-esq platformer for the rift? I don't expect the PS4 to be able to pull it off, for all the reasons I put forth above. I don't doubt there will eventually be a PS4 VR platformer, probably from MM, but it won't be anything like Mario 64. Anything with a true sense of freedom - a complex world to interact with more than a room at a time - these kind of experiences will not be possible. And it's not just sour grapes.
I'll take it back even further - Half Life 2 VR? The game we work on? It stresses my PC like hell. Our lead modeler, Jazz, is constantly redesigning things like the gun models to remove additional polygons to get it running acceptably. This is a game from 11 years ago, and it can barely run in VR with a ton of reworking. VR is so hard to work with that people honestly would be surprised what little power you actually have left over once you begin designing your game.
But let's keep going. So with the limited amount of calls I'm making, just how much script execution time do I have? VR development feels almost like retro console development in that you must carefully manage your remaining execution time down to the milisecond in order to keep things running at an acceptable framerate. With everything I said I did to reduce complexity, I still only had about 1.5 ms of script execution time to work with. Thats 1.5 ms to do everything I could possibly need to do to actually run my game. All my AI pathfinding execution, all my hardware polling. Things like audio mixing, logic updates... everything in 1.5 ms of execution time.
Again, this is extremely limiting.
And before people jump in with "but but but optimization!" This is already AFTER batching had been done, to a ridiculous level. This was AFTER we were already using multithreaded rendering. This was AFTER we were already disabling android performance throttling. In other words, we were already optimizing.