I have here attached a screenshot of a shadertoy shader running on Firefox (left) and Chrome (right).
I actually have a list of shaders I tested on both, that have Chrome working at less than 5fps but work 2-4 times faster on Firefox.
I was wondering why this is happening, and I did some research about Firefox. The only think I came to think is that Firefox’s WebRenderer is making the glsl run faster. But I checked if it was enabled, and it was not. So I’m stuck…anyone have any suggestions?
Interestingly enough, although it shows that it is enabled in the settings window, when I type “chrome://gpu/” in the URL box, the result shows that it’s using software and not GPU. This is a Chrome bug then:
Gpu compositing has been disabled, either via blocklist, about:flags or the command line. The browser will fall back to software compositing and hardware acceleration will be unavailable. Disabled Features: gpu_compositing
You respect is noted The low-end devices are test cases, unfortunately I can only afford these low-end devices in large quantity to distribute with the web app.
I built and launched the same PC project I’ve described in this thread, for iOS 9, on my iPhone 4S phone and still I get a fps of 3-4 I’m safari.
Why?
Do I need to link binaries to any ios library in the build phase of the Xcode project? I would assume it would’ve been handled.by withe Cordova or PC.
I’m stuck, any help would be appreciated because I can’t move forward in the project I am working on without having a good fps to play the game on iPhone 4S
Please note: I am producing this game for iPhone 4S because it is cheap enough to purchase myself and distribute to my customers/target audience
Is the game playable in the 4S browser? If not, you are not going to get more performance using an app wrapper because it is still use a web view?
I’m not aware of a way to natively render WebGL apps without using the webview or another webview implementation.
Edit: is the issue that hardware acceleration is disabled on iOS Safari? If so, could you add extra options in the webview in the xcode or Cordova app to force enable it?
You’ve asked the critical question that I don’t have an answer to. But I can tell you that using Xcode I am able to see the GPU usage on my iphone4s as it plays my pc app and it shows zero for the GPU usage, so I now know for sure it is not using GPU.
I’ve tried to research about Cordova “hardware accelerated” plug-ins for ios platform, but haven’t been able to find any. I havn’t been able to find anyone who has a solution to this iPhone4S problem, of running WebGL hardware accelerated.
G3D and GCanvas seem to be tailored to solving this issue i’ve mentioned of hardware acceleration WebGL games. But I don’t want to redo all i’ve created in PlayCanvas yet, especially if I run into this lack of hardware acceleration for WebGL on Safari ios issue.
If these guys, G3D and GCanvas claim they can do it, I’m sure you guys would be able to do it too.
Can anyone give me an example of a playcanvas game that I can use and test on XCode, if it is using GPU? XCode has the Tools to measure GPU usage on my iPhone4S ios9…
Both of these are native C++ engines so they can produce a native iOS app. They both have the option to compile out to WebGL (like Unity) and GCanvas also has a JS runtime. They aren’t native JS WebGL engine like PlayCanvas and three.js.
I would be surprised if their WebGL output managed to force the use of hardware acceleration in the browser.
Ah ok, thank you for the clarification.So I think the answer to this problem I have is that it is not possible to use PC coded WebGL output alongside another framework (like Cordova or React Native) that will also produce hardware accelerated. Do you agree?
Basically I would like an answer to this question because the game I make using PC is uplayable at 3-4fps for the iPhone4S device I am distributing to the children who will play the game.
Do you suggest I use something like Unreal Engine or any other software, so that I can make a game playable on iPhone4S?
It’s frustrating that I cannot use the PC editor/engine, but if I have to I will have to make two versions of the game…one with PC and one with another software so that it can be played on iPhone4S
Not quite. It’s more that PlayCanvas doesn’t have control on whether hardware acceleration can be used in the WebView. I believe the WebView can be hardware accelerated, but so far it doesn’t seem to be an option in XCode or Cordova to manually set it. I honestly don’t know enough about native app development with XCode or Cordova to answer this question.
You may be better off asking on StackOverflow/Cordova forums about this specifically.
My guess is on that newer devices, the WebView would be hardware accelerated.
If it must be on iPhone 4S, then yes I would suggest using building a native app. Unity, etc.
I don’t have access to an iPhone 4S to really investigate this otherwise I would have ask to have a quick look at a build of your game.
Would you like to share a build with me (DM or here and I can take a quick look to see if there are any bottle necks on performance)?
Out of interest, how does this perform on the iPhone 4S? BMW i8
If you would like to, I can purchase an iPhone4s for you via Ebay so see what’s going on.
if so, just send a mailing address, via my e-mail: a.gunaratnam@gmail.com
Below, I’ve added the original game I made a couple of years ago when PC had the ‘export ios’ button. On the iPhone4S, this runs at 3-4fps. Here it is:
Alternatively, I do have a public version of this game that is more optimized and is faster. I had to reduce vertex count of 3d assets, take away all textures, materials, text. It helped increase the gameplay to 5-12fps but there is no artistic attraction to this version of the game that I think a child would be interested in to play it:
Also, a note to mention, both versions of the game does not use the PC physics engine because it was too large and it crashed the Safari browser. I replaced it with a lighterweight JS physics engine.
This game is to help protection of minors in the Catholic Churches, so the ability for me to purchase LOTS of old phones to give it with the game installed to groups of children is important. Also I expect parents to only allow their children to use low-end phones and not expensive ones. Also, I expect people will be more willing to donate their old low-end phones for free to their communities for this purpose, to protect the children from pedophilia.
The BMW i8 link you sent me stays on the loading screen and doesn’t actually load, even when it goes to 100% of the loading.
Having a quick at it and it does look like you are bottleneck on the GPU. Unless you can force WebGL hardware acceleration on the WebView, I’m afraid that you may have to use a native engine like Unity (if it still builds for iPhone 4S)
Thank you very much for sharing this information with us. This is really helpful. Compatibility issues with ShaderToy are quite common since it sometimes look broken or blank. There is a major problem with ShaderToy as it works on one machine but also does not work on the other which is really troublemaking.