gles3.0 vs gles2.0 for mx23d

About Monkey 2 Forums Monkey 2 Development gles3.0 vs gles2.0 for mx23d

This topic contains 31 replies, has 23 voices, and was last updated by  nobuyuki 2 years, 4 months ago.

Viewing 15 posts - 1 through 15 (of 32 total)
  • Author
    Posts
  • #7038

    Mark Sibly
    Keymaster

    Hi,

    Ok, I’ve been looking a bit more closely at supporting gles3 (aka d3d11) vs gles2 in mx23d, and I think going gles3 is probably the way to go.

    First, here’s the steam hardware survey for Jan:

    http://store.steampowered.com/hwsurvey

    If I’m reading that correctly, approx 86.74 of steam users have d3d11 compatible cards.

    Next up, the ios situation:

    https://developer.apple.com/library/content/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/HardwareGPUInformation/HardwareGPUInformation.html#//apple_ref/doc/uid/TP40013599-CH106-SW1

    …which looks very healthy to me.

    Android may be a bit of a problem though. All I can find is this:

    https://developer.android.com/about/dashboards/index.html#OpenGL

    Which suggests 59.6% gles3 support? Not bad I guess, but not great. I assume this reflects google’s inability to get people to upgrade!

    And what do you get from gles3? For starters, it means a bunch of very useful features are guaranteed, such as multiple render targets, depth textures for shadow maps, 32 bit index buffer indices, texture support in vertex shaders and much more. These are all things you can sometimes/sort of work around in gles2, but it’s not pretty/nice/fast.

    Then there are new features such as geometry shaders (which I *really* want to play with!), transform feedback (eg: render to ‘vertex buffer’), and a bunch of other features that just plain make stuff ‘go faster’ such as uniform buffers, geometry instancing (draw a bunch of models in one hit), vertex arrays and so on.

    And this is just the stuff I know about – I haven’t actually done in anything in gles3 as yet, just read the specs, so there’s bound to be lots of other juicy stuff in there too.

    There’s no denying we *are* limiting mx23d’s potential user base by going with gles3, but IMO it’s worth it. It’ll make my life a ton easier, and the new features are likely to allow entirely new approaches to terrains, sprites, environmental effects and a bunch of other stuff.

    I also believe the vast majority of mx2 users are and will always be desktop users, and I think the compatbility situation there is OK – probably not disimilar to the d3d7 situation when b3d came out? In fact, it’s only android I have reservations about, but I can’t justify holding back things purely for android’s sake. And of course, things will get better android-wise as time goes on…

    Any other thoughts?

    #7039

    nobuyuki
    Participant

    I’m all for it.  The legacy bmax users may not like it so much if some game portals still require xp support (which only officially does d3d9), or have a large android install base without gles3 support, but since this is strictly a 3d module, I don’t see the problem, because as a modern graphics target, it will be one less reason for newcomers to “shy away” from mx23d as a viable engine for their future projects.

    GLES3 support’s adoption rate on android may not be so high because a lot of the more affordable tiers of no-name phones coming out of china and the older smartphones issued as freebies by budget carriers tend to use more established chipsets to 1. reduce the handset’s BoM, and 2.  increase the shelf life their devices without having to dedicate any money to updating driver firmware/software/etc. since less-well-established SoCs could potentially mean that the drivers for it aren’t as well-written or well-tested.

    One thing I’ll be slightly sad to see is that this means mx23d won’t support the current generation of hobbyist computers.  They usually don’t support more than gles2.0 — I know the Pi 3 still runs aging Videocore IV graphics architecture, which has required emulation authors to backport some of their more recent efforts to support it.  That’s hobbyist-level stuff, though, and not a big concern for commercial stuff.

     

    Edit:  Also note that over half of android users as of this writing are running android 5.1 (lollipop) or below, which is now 2 versions behind the current and correlates with the gles2.0 only support.  It’s also a 2-year old version of android.  Within the next 6 months you’ll probably see a large shift as people come off their contracts and “refresh” their phone.  Don’t know if that’s common in most countries, but in the US many phones are subsidized and tied to 1-2 year contracts.  So bear that in mind!

    #7041

    secondgear
    Participant

    For what it’s worth, as long as I can still make 2d Android apps compatible with gles2 devices, this decision doesn’t affect me. Sorry for the selfish point of view: I don’t have the expertise to look at the bigger picture.

    #7042

    nullterm
    Participant

    GLES2.

    3 doesn’t buy much unless you are really pushing the gfx hardware, and you lose half the market in the process.

    Thats not to say you couldn’t have a GLES3 target later, but always target the lowest common denominator that gives you the widest market.  Imagine half the developers on the site hitting a point where they can’t run their own game on their own (older) device. That’s not just customers but also fellow developers, which might be more vocal when it comes to saying “hey! use this” or “hey! don’t use this!”

    i already had a frustrating time with a mobile game that was coming out. When it finally came out, my iPhone 5 couldn’t run it because he had used GLES3.  But his low poly game had no CPU or GPU intensive reason why my iPhone couldn’t run it. It was just laziness on his part as a developer

    #7043

    Mark Sibly
    Keymaster

    One thing I’ll be slightly sad to see is that this means mx23d won’t support the current generation of hobbyist computers.

    Yeah, didn’t think about this, and it is kind of sad, but I never really felt like I got mx2 working properly on Pi anyway, and when I did manage to get a shader-fied demo running, performance was pretty terrible. But still, point taken. Pi4 perhaps?

    android 5.1 (lollipop) or below, which is now 2 versions behind the current and correlates with the gles2.0 only support

     

    gles3.0 only requires 4.3 (and HW support of course), although 3.1 requires 5.0. I have no idea what the difference is between 3.0 and 3.1 though, and it could well be important so who knows.

    I can still make 2d Android apps compatible with gles2 devices

    For sure.

    #7044

    impixi
    Participant

    There’s no denying we *are* limiting mx23d’s potential user base by going with gles3, but IMO it’s worth it. It’ll make my life a ton easier, and the new features are likely to allow entirely new approaches to terrains, sprites, environmental effects and a bunch of other stuff.

    I agree. An emphatic vote for GLES3 from me…

    Then there are new features such as geometry shaders (which I *really* want to play with!), transform feedback (eg: render to ‘vertex buffer’), and a bunch of other features that just plain make stuff ‘go faster’ such as uniform buffers, geometry instancing (draw a bunch of models in one hit), vertex arrays and so on.

    ..Though geometry shaders are a capability of GLES3.2 (released 2015), so support for that particular feature might be very limited?

    https://en.wikipedia.org/wiki/OpenGL_ES

    #7045

    Mark Sibly
    Keymaster

    Though geometry shaders are a capability of GLES3.2

    That I did not know…more research required!

    #7047

    AdamStrange
    Participant

    you want to future proof things then go for 3.

    the only way you get people to upgrade is to show them what they are missing.

    #7049

    Xaron
    Participant

    Yes, go for gles3. I mean it will take probably a year or so to create that 3d module and in a year those numbers will improve even more into the direction of gles3 support.

    #7050

    peterigz
    Participant

    Xaron has made the point I was going to make – those numbers are going to keep going up. If it’s possible to have some user control to turn certain features on or off depending on how compatible people need it then that would help but otherwise v3 sounds a bit more future proof.

    #7051

    TomToad
    Participant

    Please excuse my ignorance here as I’m new to MX2 programming and don’t know anything about gles, but isn’t gles3 just a superset of gles2? IOW, gles3 contains the gles2 api plus a bunch of extra features? If so, then couldn’t you write the module to be gles2 compatible as long as no gles3 function calls are made, but then compile a glse3 version when the extra features are needed? Sort of similar to BMax SetGraphicsDriver command, maybe SetGLESVersion (2|3) command.

    #7052

    Diffrenzy
    Keymaster

    I also believe the vast majority of mx2 users are and will always be desktop users,

    I’ll let you guys argue pro/con gles 2-3, but I really hope that you (Mark) don’t see MX2 as a desktop centric solution

    I’m investing heavily in developing our next and future apps for iOS and Android in MX2, and I expect MX2 to actively support these targets in the future.

    If not I’m out of here, so please confirm that iOS and Android are still first class targets in the future development of MX2

    #7053

    EdzUp
    Participant

    I would have both one as a throw back should the primary (GLes3) fail. I first would code the primary and see where it goes from there the main upshot is your coding for the latest hardware meaning more time for coders to get going than coding for granny’s old phone which is pointless.

    Heck as most here will know I’m an advocate for old hardware but even I don’t support 32bit now and to be honest I’m moving on from older system in favour of newer tech mainly as older GL versions have flaky driver support.

     

    Thinking about it just whack in a GLES3 system and if someone wants lower maybe another patreon drive? I have Dx10 gpus here but to be honest I can see supporting outdated hardware as any good and certainly not good for future proofing MonkeyX2.

     

    @difference I can see that GLES3 will be a contentious issue but if you want the best then Android 5.x+ is not a bad thing is it. If you jump to Unity it’s still a requirement over there if yoy want to do some of the decent stuff so it’s down to your preference to be honest.

    #7054

    Diffrenzy
    Keymaster

    @edzup: Android 5.x+ is honky dory with me, I just want to make sure Android X.x+ and iOS stay in focus.

    #7055

    abakobo
    Participant

    I’m mainly using monkey2 for mobile targets too.
    But as a cross platform productivity tool also.

Viewing 15 posts - 1 through 15 (of 32 total)

You must be logged in to reply to this topic.