Advertisement

You're blocking ads, which pay for BlenderNation. Read about other ways to support us.

Blender Developer Notes: November 22, 2015

17

Here are the notes from today's meeting in irc.freenode.net #blendercoders.

Ton Roosendaal writes:

Hi all,

Here are the notes from today's meeting in irc.freenode.net #blendercoders

1) Blender 2.77 targets

  • Meeting agrees on Mike Erwin's proposal to upgrade Blender to OpenGL 2.1 minimal. This is an OpenGL release from 2006 and widely in use nowadays. Benefits are: having cleaner code (less exception handling), getting ready for more OpenGL upgrades, and allowing to default use newer and much faster OpenGL methods. Blender 2.77 will get a function to notify users if their system is not supporting OpenGL 2.1. For hardware it means: the
    • NVidia Geforce FX, Geforce 6xxxx and newer (released in 2003)
    • AMD Radeon R600+, Radeon HD, and newer (released in 2006)
    • Intel HD graphics or newer (released in 2010), some older cards might still work on OS X and Linux.
  • Blender Institute will make systems available for devs to test remotely.
  • Work will happen in git master - for as much as possible. The bigger commits will be reviewed first on developer.blender.org
  • Mike Erwin will be in the lead for this project, a lot of people offered help to be standby.
    Main coordination will be here and in our IRC channel.

2) Other projects

  • Julian Eisel proposed to add an official 2.8 branch with C99 support. Meeting agreed on moving to C99 for master instead. Brecht van Lommel will make a patch for review.
  • Meeting agrees to not make official 2.8 branch(es) until we're done with the OpenGL migration, and until we have a clear plan for what will happen in the branch(es) and who will work on it.

Laters,

-Ton-

About the Author

Avatar image for Bart Veldhuizen
Bart Veldhuizen

I have a LONG history with Blender - I wrote some of the earliest Blender tutorials, worked for Not a Number and helped run the crowdfunding campaign that open sourced Blender (the first one on the internet!). I founded BlenderNation in 2006 and have been editing it every single day since then ;-) I also run the Blender Artists forum and I'm Head of Community at Sketchfab.

17 Comments

    • @FERHAT
      Because:

      A) Last I checked, the Vulkan API spec has not even been finalised/released yet.

      B) There is currently very little/no support for Vulkan on consumer hardware. Most Blender users would no longer be able to use Blender anymore.

      C) It would require a complete rewrite of Blender's entire rendering system, even just drawing the user interface would have to be recoded.

      D) OpenGL is not being discontinued, it will be developed along side Vulkan. Vulkan is going to become a 'low level high performance' API, OpenGL is going to be still developed but will become a 'high level' API.

      E) OpenGL may be old but so are a lot of things in computers. HTTP is old. ASCII is old. Blender is old. But OpenGL is constantly evolving, with updates coming out regularly. The latest version for example is 4.5, released last year.

      On a side note, it's great than Blender is raising the minimum version of OpenGL required but seriously, OpenGL 2.1? That will be 10 years old by the time 2.77 comes out. Can't we move to OpenGL 3.0, the very next version after 2.1?

      OpenGL 3.0 came out in 2008, by the time 2.77 comes out, it will be 2016, OpenGL 3.0 will be 8 years old! (Does anyone still have working computers from 2008?)

      The difference between 2.1 and 3.0 is stark however, a massive leap. 3.0 began the process of deprecating the old fixed functionality pipeline, it was a major change in the API, if not the most major change to ever occur in OpenGL history. The old fixed functionality pipeline now only still exists in the form of emulation and compatibility modes, all modern GPUs (basically anything released since 2010) are designed for programmable graphics pipeline. As a result, using fixed functionality pipeline features often makes applications run slower on modern hardware than they have to be.

      (Granted I don't know if Blender is coded to detect newer versions of OpenGL and avoid the fixed functionality pipeline altogether if newer versions exist, hopefully it is but that would have to make coding Blender a real pain right?)

      I think it's safe to say that 2.1 can be dropped, if not now at least sometime next year. If it was me I'd moved Blender's minimum to OpenGL 3.2, even that is 6 years old, definitely older than the average lifespan of a computer. For my own personal programming projects I'm targeting 4.2, which is 4 years old and will be 5 years old in about another month's time, because I'm aiming for fairly modern real time graphics which wouldn't run at a smoothly on hardware more than 5 years old anyway.

      • I totaly agree with you. I don't know if the OpenGL changes will come wiht 2.8 or 2.77, but didn't they say, that they will make radical changes. I think changing to an nearly 10 year old API is not very radical. If it brings a lot of improvment and easier coding for the developers (and speed by using a better API) then they should move to 3.2 or 4.0. You can get a compatible GPU for 50 € if you want. That shouldn't be the bottleneck.

        Don't wast time and effort, just to satisfy 1% of users just to intigrate a new API some time later!!!

        • Part of it is the desire to support older GPUs. You're right about low cost -- for development/testing I just got a Radeon HD 2400 on eBay for $13 -- older budget card but supports GL 3.3 and should run Blender 2.77 & 2.8 as well.

          The other part is the amount of developer work needed to move from 2.1 to 3.2 *core profile*. Getting to there is hard but *being* there is going be paradise. We're doing that for Blender 2.8. Some of that work is trickling into earlier releases -- like the GL bump and optimizations in 2.77.

      • Wouldn't this hurt use in education? I can imagine classrooms with older PCs, with Intel on board graphics. Very usable to learn about Blender and 3D.

        Then again they could keep using an older version - which should at least be still available for download somewhere then - and maybe even receive the occasional required update.

        Take note that new PC sales are really slow. PCs are older than they used to be. In education, even more so.

    • There has been a lot of talk about using Vulkan however developers don't know what OS's are going to support it yet. The second thing is it will leave a lot of people not being able to use Blender because Vulkan will only work on newer GPU's. This will probably be considered in the next couple of year though.

  1. I thought 2.76 was last then a year of silence to go to 2.8
    Well its great you go on, it makes me wonder ... will it now go like
    2.76,
    2.77,
    2,78,
    2.79,
    2.80.
    By slowly fading out old code, and replace it with new ?.
    (so one stays with proven to work code as much as possible).

  2. To all egoists calling for newer OpenGL versions: Blender is not a videogame. Videogames add complexity to support the latest and greatest API, along with older ones, in order to offer marginally improved graphical quality or performance to enthusiast players who want to take advantage of expensive video cards. Blender, on the other hand, needs to run equally well on any decent computer with minimum complexity; minimum complexity means using only one, widely supported OpenGL version. Migrating to OpenGL 2.1 offers enough code quality benefits to justify imposing an hardware upgrade to a few fringe users. OpenGL 3 or 4 will be considered in a few years, when most *obsolete* hardware is good enough.

    Meanwhile, in one or two years new OpenGL drivers (or MesaGL) will be presumably layered over new Vulkan drivers, and higher quality as a result. No need for direct Vulkan support in Blender.

    • I agree.
      Blender is gaining more and more sophisticated features, and as such is coming to a crossroad, about how much backwards compatibility it should support for legacy systems, both as hardware and OS, and features (files created with older versions), I guess.

      Blender is "a free and open source complete 3D creation pipeline for artists and small teams."

      Now, if it aims to be industry-level, it must use the newest technologies, of course. But what about the oldest? Why should one need to still support them? And how?

      Upgrading to latest technology could mean that people with lower budgets will not be able to use their older hardware to run latest Blender versions (eg: poor/developing countries, schools, non profits), but if their OS is still supported, they could be able to still use 2.76b at least...

      Yes, if their hardware is so old they would not be able to get state-of-the-art "artistic" results anyway, but Blender is used worldwide as it is the only affordable advanced 3D package in the world, to design things, but also to teach basic 3D.

      But also, maintain older and newer incompatible technologies is tough and expensive, if ever possible. Maybe the ideal solution woudl be a "pluggable" graphics backend, able to use the latest tech on newest hardware, to get the best results and performances, but also the older hardware, even if getting lesser results and performance.

      Would this be possible and needed? I don't know.

      I know that my home Thinkpad R60e from around 2006 is now in the need to be replaced with something new, probably, or to get stuck with 2.76b, since its integrated Intel card 945G is not supporting opengl beyond 1.4... My work pc is a much newer Fujitsu basic desktop and still has an Intel Card, but it supports 2.1. Next one will have a discrete card, I hope...

      Marco

    • "To all egoists calling for newer OpenGL versions: Blender is not a videogame."

      No one is saying it is. And there's no need for name calling.

      "Videogames add complexity to support the latest and greatest API, along with older ones, in order to offer marginally improved graphical quality or performance to enthusiast players who want to take advantage of expensive video cards."

      Isn't that exactly what Blender devs did when they Cycles implemented GPU rendering with CUDA? A feature so new and specific in it's limited hardware support that even AMD card owners with cards less than 6 months old supporting the latest graphics APIs couldn't enjoy said performance improvement because OpenCL wasn't supported yet? Even for NVIDIA card owners, there was limited support for only the newest cards with the best CUDA support.

      Or the new subsurf modifer options for using hardware acceleration for faster speed.

      Blender is for everyone but it is also attempting to be a state of the art 3D modelling and animation package that can compete with the likes of 3D Max and Maya. That means when new features are available in graphics APIs that allow for increased performance, Blender is coded to detect those features and use them if possible. The fact is, modern 3D graphics applications have to support multiple versions of graphics APIs anyway, support the latest and greatest but also support backwards far enough to not limit the number potential users.

      "Blender, on the other hand, needs to run equally well on any decent computer with minimum complexity; minimum complexity means using only one, widely supported OpenGL version."

      I'm sorry but I have to disagree, in fact I say you're incorrect about this, see this question on stackoverflow for more details: http://blender.stackexchange.com/questions/451/what-version-of-opengl-does-blender-use

      Yes Blender has support for older versions of OpenGL but it doesn't support ONLY OpenGL 2.1, it includes OpenGL 2.1+ features and checks for compatibility before using them. Items such as Frame Buffer Objects, newer versions of GLSL, etc. When Blender devs talk about raising support to OpenGL 2.1, they mean raising their minimum, but they definitely support OpenGL 2.1+ features. This means there is already inherent complexity in supporting OpenGL 2.1, because it means supporting a vastly different style of rendering operation as a fallback in addition to supporting the more modern features for high performance on new machines.

      Blender doesn't need to run equally well on a computer made 10 years ago with OpenGL 2.1 to a computer made in 2015 with OpenGL 4.5, of course a new computer with faster hardware and better API support should run better. That's on purpose by design of OpenGL's updates.

      Lots of the functionality from 2.1 and back was deprecated in OpenGL 3.0 or altered significantly for one reason: performance. The entire pipeline for drawing graphics was restructured to reduce the amount of communication between the CPU and GPU for vast performance increases. Blender would run much slower if it was forced to draw graphics in the manner of OpenGL 2.1 on newer graphics cards.

      "OpenGL 2.1 offers enough code quality benefits to justify imposing an hardware upgrade to a few fringe users. OpenGL 3 or 4 will be considered in a few years, when most *obsolete* hardware is good enough."

      I'd argue we're already at the point where OpenGL 3.0 can be switched to. 3.0 was released in 2008, by the time the next update for Blender comes out it will be probably 2016. I think 8 years is fair enough amount of time for users to upgrade their computers. Most Blender users would be lucky to still have a computer from 2008 that runs. It's not asking too much for people interested in 3D graphics and animation to buy a mid range computer made after the year 2010 in 2016.

      Each increase in minimum version of OpenGL reduces the workload of Blender devs. OpenGL 3.0 was the first version to do a clean sweep of the API deprecated many features, it would remove huge amounts of legacy code just by moving one extra version up past 2.1.

      OpenGL 3.0 minimum would make the lives of Blender much devs easier.

  3. For all of those wondering there was a a survey on Blender artists and I wrote a post on Blendernation with a link to blender artist see http://www.blendernation.com/2015/01/12/whats-your-opengl-version/ If Blender does go to OpenGL 4.0 They will leave 25% of users behind. However for 2.77 with OpenGL 2.1 will only leave about 1.2% of users. For 2.8 when Blender uses 3.1 it will leave about 8.5% users without Blender. I think any thing above the 3.1 mark would make to many people not be able use Blender. FYI many changes have already been made to the Blender master you can check it out on the daily builds. https://builder.blender.org/download/

  4. I totally agree with other guys here, if theres real advantages to move straight into 4.0 or 3.1 please do it. Nobody is making anything worth making with GPUs older than 5 years anyway.

  5. Hi all, I'm late to this conversation but can explain a few things.

    Why not Vulkan?
    As other posters have said, Vulkan isn't out yet! It sounds awesome but we don't know if Apple will ever support it. (I doubt they will but have no inside info). Without Apple's support Blender would require *two* rendering paths: one for Vulkan and one for OpenGL or Metal. Or stick with *one* modernized OpenGL path that works everywhere. Easy choice. Might change in the future.

    Why not the latest OpenGL?
    4.x capable GPUs are in a different class than 3.x, which is in a different class than 2.x. You can't just update your driver; you have to get a new GPU. It would alienate a decent percentage of Blenderheads with no real benefit. When we *really* need to use tessellation shaders or something else from the newer GL we can discuss raising the minimum.

    Why 2.1 instead of 3.0?
    Apple. Moving to 2.1 let us remove some old crap without disrupting anyone. The switch took about a week! 3.0 is the next version, which adds a few features and has a much nicer GLSL. But the way Apple implemented GL makes us choose between 2.1 legacy and 3.2 core profile. 3.0 or 3.1 aren't available. 3.2+ completely drops compatibility with legacy code. Choosing 2.1 for Blender 2.77+ lets us do some small to moderate improvements and get ready for the much larger task of migrating to a modern core profile. It's a stepping stone toward greater things.

    In short, don't worry! Supporting GL 2.1 doesn't make your GPU run in some low gear, it just means we have to check at runtime before using advanced features. It's the "you must drive at least this fast" kind of speed limit. Setting GL 2.1 as the new minimum means we no longer have to check for basic things like VBOs or GLSL shaders. Setting GL 3.2 as Blender 2.8's minimum will let us remove even more checks and enable some awesome new features.

  6. Would it be possible to add an optional feature to the next Blender release to automatically report the user's OpenGL capabilities back to the Blender Foundation? It could be a one-time question and I'm sure it would help massively in collecting reliable data for future development. Just my two cents.

Leave A Reply

To add a profile picture to your message, register your email address with Gravatar.com. To protect your email address, create an account on BlenderNation and log in when posting a message.

Advertisement

×