Viewport Project – Plan of Action

December, the time of the year for hot chocolate mugs, bright decoration lights and, of course, development roadmap. In the spirit of the season, the following document is the plan of action for the viewport project in Blender 2.8. Throughout 2017 we are expecting to tackle:

  • Final design of engines and passes
  • Clay engine
  • Implement remaining edit modes as passes
  • Workbench engine
  • Eevee engine
  • Port Cycles materials to the Eevee engine
  • Implement missing engines

Final design of engines and passes

Let’s start by defining the terms here used, mainly engines and passes.

A pass is the “black box” code responsible for filling a buffer. For example, the “object mode” pass includes:

  • Relationship lines
  • Object center
  • Outline (selected/active)
  • Widgets (?)
  • Non-geometry objects (lamps, empties, …)

An engine then compose multiple passes together. How the compositing happens is up to the engine. Finally the engine delivers the final image to the viewport.

For example, a very basic Clay engine can be described as:

viewport_engines_diagram

The clay engine will take the “Wire Pass”, the “Solid Pass” and the “Object Mode Pass” and combine them together.

At the end of this, the core design will be finalized including a final proposal for a material re-design with corresponding PyNode changes.

Clay engine

Clay Render Engine

Assets courtesy of the Agent 327 – Barbershop scene.

The clay engine will use matcap and allow per-object matcaps (so we can override them per collection). Also it will support depth of field and ambient occlusion.

This engine is a quick way to start drawing objects in the new viewport, as well as to validate the engines compositing design. The Clay engine will initially only support the “Object Mode”. It will be up to the engines to decide which modes will be supported.

Implement remaining edit modes as passes

Bring back all the edit modes (edit mesh, sculpt, …). The edit modes will be brought back ONLY when they are already conforming to the new design (layers, depsgraph api, engines, …).

Workbench engine

A complete engine for modeling. A beautiful white canvas with floor shadows for modelers to work on. It should sell the idea that 2.8 viewport is not only PBR, but about the right visualization for the task at hand.

The workbench engine will support:

  • Auto-generated colors
  • Beautiful diffuse shading
  • Sharp specular highlights
  • Shadows

The engine will have an option to either auto-generate colors per material or per objects. The objects and materials will have override options. This can be overridden by collections.

Eevee engine

To avoid the confusing and too much hyped name “PBR”, we propose to call this engine the EEVEE, or Extra Easy Virtual Environment Engine!

Finally, we will get a nice photo realistic engine. Realtime reflections? Check. Soft shadows? Check. Fast, responsive and eye-candy? Check, check, and check!

clement-foucault-mech5

Mech Prototype by Clément Foucault – made in Blender, rendered in UE4, long-term goal for Eeevee.

  • Uber shaders for PBR materials
  • Support for features current in the PBR branch
  • Backward compatibility (BI conversion – 80% compliance)

Port Cycles materials to the Eevee engine

  • Port Cycles GLSL code to PyNode
  • Make new realtime shaders for Cycles bsdfs nodes

Implement missing engines

Evaluate if we still need a better replacement for wire, solid, … draw modes. If we need it, design and implement new engines accordingly, or as extra passes for the existing engines.

60 comments
  1. Blender EEVEE is great so far. My only concern is the lack of a material mode for cycles. Also for blender internal. I would use clay engine more but I am forced to switch to EEVEE for setting up EEVEE materials and also I am forced to switch to Cycles to make Cycles materials and also edit the world material. It would be nice if I could use any nodes in any mode because it would increase productivity a lot. I do really appreciate the work being done here however and I am very excited to see where it will go in the future!

  2. Will the new viewport work on an ancient Radeon HD 4850 with 512MB VRAM? I know this is already at minimum requirements for memory. But I have an old 27″ iMac that still gets regular use. The chipset claims to support OpenGL 3.3. But that doesn’t mean the forthcoming Blender release will actually work properly on this thing. And if so, any idea when Blender will require a 1GB framebuffer minimum?

  3. I need an extra easy Python for Blender interface to Blender ( per release # ) such that I may simply code an add-on to blender wherein the EEPyCodeer asks what I want it to make and tries to suggest modules that I can modify to fit.
    I Am NOT A Robot.

  4. Super excited about eevee, currently using Clement’s 2.77 build to get that “Star Wars Rebels” look for my project Daisy, realtime viewport combined with some additional passes out of cycles…

    https://www.youtube.com/watch?v=UsQ8_nVXAsk
    https://www.youtube.com/watch?v=W08BxREiI-o

  5. Thank you for all your hard work on this beautiful tool, guys! Really looking forward to see all those news in Blender :)

  6. Here’s a question… what are the Blender Foundation’s plans for the Eevee engine to sit alongside third-party projects like Armory? Could be a little fragmenting to have two high-quality PBR engines for blender duking it out. (http://armory3d.org/)

  7. hm just looking at the picture of this post agent 327 asset.
    would be nice to have a simple way of showing mesh data on the object to edit, but have a no mesh view for parts that are not edited, and maybe have an option to have those then non actives materials be 50% transparant, (handy for retopo)

  8. Excuse me, maybe this question sounds a bit stupid,
    but I think I’m not getting the exact purpose of the Eevee engine.

    I mean, it’s clearly stated the clay engine will be used for quick way of drawing objects, and the workbench engine for the 3d viewport when modeling.

    But, what about the purpose of eevee?
    Since it’s stated it will have realtime shadows, is it realtime or it’s going to replace the BGE’s render engine?
    Since it has 80% compliance of BI (backward compability it says), it’s going to be a replacement for BI?
    Since it has very powerfull features, it’s going to be a newer engine to use instead cycles for high quality rendering?

    What is going to be its purpose? I’m lost. Sorry in advance.

    • Hi,

      I think Eevee is going to be ideal for animation, and for previs. Want to quickly render a previs of a shot, with lighting and all, to get a good feel of what the final render will look like ? That would be a job for an opengl render with Eevee, I think.

    • Not a stupid question at all, I was also not completely clear on the purpose of the Eevee engine.

  9. Permanently associating FOSS Blender with a commercial product like Pokemon isn’t really a good idea. How about: Blender Realtime Renderer (BRR)

  10. Will the Game Engine exist in the new release as an other named, better engine?

    • BGE was not mentioned in this post ;) Its future as well as Cycles’ depends on their development team effort. That said, the BGE developers (or rather, the developers ahead of the UPBGE project) have already showed clear intention on aligning the BGE with the 2.8 development design and goals.

  11. Hosently I like the sound of EVE engine makes it sound all science fictionee!

  12. didn’t see anything regarding the way viewport drawing code can be manipulated for addon developers, or will it be strictly c, c+,C++11 etc..

    • At some point we may see a way to have a pure python defined engine. (if there is a solid case for that). For now, however, we will settle for the OpenGL refactoring project (upgrading to OpenGL3.3., and eventually to Vulkan). We will get a new API for Python which is equivalent to what BGL currently provides.

      • The whole thing seems to me that you are reinventing the wheel. Why not start by creating a viewport output node for the compositor nodes. Then implement the passes as input nodes. That will give you a compositor nodes engine. I bet that would be more than customisable enough for everybody’s needs. Depsgraph is trivial to calculate since it’s a node tree. (probably already implemented?) Then see if there is still a case for writing the other engines separately in C/C++. They may as well be pre-defined node groups.

        Excuse my probable ignorance here since I am not familiar with the latest blender development news or concepts anymore and just happened to be passing.

        Seriously, am I missing something here? If it’s something about speed or doing the processing on the graphics card, aren’t these actually things which the compositor itself could benefit from?

  13. A really useful feature in 2.8 for Cycles would be an option for separating away ‘caustics’ into it’s own pass, so that users can apply a despeckle/blur filter to it.

  14. If you want to find out if a name is useful, use Google. (Just saying this because being able to actually find docs easily is important)

    If the search results are buried under a dozen different uses of the same word as used by others, then it’s maybe not a good idea to use that name.

    Any names for new tech should be weighed this way.

    Compare the search results for “Eevee” against the word “Spark”. The Eevee results are clean and easy to sort through, anything about Blender will show up nicely without a mess.
    The people who named their movie “Spark” choose badly. It’s buried under a wide variety of common uses.

    (“Curflexialzemifyer” comes up even nicer, no other results at all :)

  15. Well i admire the work, i would prefer a plug-able program design.
    So that render engines, could have releases not bound to blender releases.
    2.8 should not become dependent on engines to be included, it better be a framework to allow for engines. So for example Eeve and cycles and clay, can have a independent development cycle (ea run blender v2.8 with cycles v2.8.x )

    So that also people could study coding cycles as independent program part as a core c++ library.

    The main thought might seam that render engines have a fast develop cycle, but on the contrary also other parts do evolve (ea cloth sim, smoke sim, water sim, etc etc), and should not wait till some non related bug got solved.

    That though might be a big change in how blender is released.
    And perhaps besides program releases, its versioning and code management as by per interest groups, that might spur development.

    • I like this, but I am not a developer (yet) so I don’t know of any possible issues with the code, version control or development. The more features Blender gets, the more source code there is to manage. Separating it into large chunks like Core, Cycles and Viewport Renderers might make the development cycle a lot faster as long as changes piece do not break the other.

    • To add to my previous comment, came across this New Developer intro:
      “Blender source code is large enough that some IDE’s are unusably slow.”

      Might be another reason for splitting up the engines..

  16. I’ve been usingng Max since years ago but changed to Blender this last year and I think is a very powerful software. The only concerns about it are:

    – It would be great to be able to draw splines in a way similar to Illustrator or 3DS Max, specially for technical modelling such as industrial design. Having a straight line command directly would be great also.

    – I would love to see a way to have a material library included in the UI to quickly see different options.

    – Possibility to change the number of faces of objects after creation.

    – A simpler way to array objects for technical modelling.

    Other than that I think I’m happy with Blender. Congrats for your amazing work!

    PD: I really like the EEVEE name! ; )

  17. I don’t know what’s up with people critiquing the name (Eevee) that developers have given their PRB engine. You get to pick the names for your own project mascots. It’s part of your right as a person that bothered to build something new and interesting.

    On another note, I’m just curious why BI didn’t think that with all these structural changes, Blender’s version count should get a full integer bump. This is all massively exciting stuff, and I can’t wait to get my hands on it (literally twitching every time I get some more dev news here). I would frankly expect this to be Blender 3.0.

    It seems like blender workflow/usage strategies are about to see their greatest revision since before 2.49. Is BI just being modest or is there a reason that a normal user wouldn’t understand?

  18. I really can’t stress enough that I am currently employed by a company that has no concern about what software I use, only what results I achieve. I was able to convince them that I can achieve the results they want with Blender.

    If wireframe mode is removed, I can’t just say, ‘I can’t give you wireframe images anymore’, I just have to find another way of delivering what they want. If that means using different software, it’ll mean I’ll have to use different software.. and I really don’t want to do that, but I have to give them what they want. Surely it’s not that hard with the new system to do wireframe rendering? Surely it’d be just purely a design decision on whether to include it or not? If so, please please please do include a pure wireframe mode, I really need it.

    (sorry to whine like this but yeah, this has me very worried :x)

    • @Grady,
      if you saw mike erwin’s presentation in bcon16, you should know there is no reason to panick. wireframe is not going anywhere. it is to be enhanced, not taken out.

    • It is not going anywhere, but even if it did you can always use the previous versions of Blender…

  19. Hey there! I really need to know, will there still be a pure wireframe mode in Blender 2.8? I seriously need to know, you don’t know how much I’m really still concerned about what Ton said about removing it. I’m not kidding when I say I think it’s essential, if it’s removed I’m going to be really up the creek.

    I use Blender commercially and my boss regularly asks for wireframe images of products I’ve modelled, and I too use it all the time for handy purposes. But not least of all the fact that it allows me to ‘see through’ a model and select the right vertex hidden deep inside of a model sometimes through several thin walls, and other stuff.

    Seriously, what’s happening with wireframe mode? I really need to know, I’m kinda panicking at this point.

  20. I’m also interested how Verex Paint and Texture Paint modes will be upgraded. They are core of my worklfow in Blender.

  21. I need AO and Matcaps in Workbench engine also :<<<<

  22. Awesome to see these plans!
    I use the OpenGl render for fast commercial projects and 2D feel.
    Will there be better openGL render support?
    I use wireframe mode as a layer pass because Cycles doesn’t support quad wire yet, Depth of field makes everything in the viewport pixelated, and if there’s a UV set on an object the seams are visible.
    See this movie we created and used wireframe as a layer pass for example:
    From 01:25 https://vimeo.com/195612737
    I had to render it at a doubled size to make it a bit smoother and to use lots of blur.

    • Serj, you can use freestyle to render wireframes. It’s really easy and produces neat results.

      • Not really – it can’t handle complex scenes, and of course – It’s not real time.
        Freestyle is nice an all, but every time I tried to embed it into production projects – it choked.

  23. Hi, I work with the UPBGE team. What about BGE? and Why my previous comment was deleted?

    • For me it looks like the BGE could use this architecture just fine, but better talk with Dalai and Mike about this via IRC. These things should be communicated well (and to my knowledge there’s already some communication going on).
      Re your comment being deleted – I just checked the comments, but I didn’t find any from you. Neither in the unapproved ones, nor in spam, nor in trash. Could it be that you just didn’t submit it correctly? (E.g. forgot to press the “I’m not a robot” checkbox).

  24. What will the lighting model be?

    forward+ ?

    Deferred?

    is computer shader availible in GL – 3.2?

  25. i just made an eevee picture using hair and the pokken tournament eevee model, you can see it here: https://c1.staticflickr.com/1/365/31312681770_598544371b_o.png

  26. Really excited about this project.
    I have some ideas which I think will really enhance the 3d tracking workflow.
    Where do we propose more ideas?
    I am ready to a good detailed document explaining how a good viewport can help the tracking workflow to the next level.

  27. I think we should simply call it VEE (Virtual Environment Engine). The ‘extra easy’ part will be known once users get the hang of it . . . and it sounds a little more professional (IMO) without the ‘extra easy’ before it.

    That being said, these are truly EXCITING times for Blender 3D! So looking forward to seeing these ideas take shape. I cannot wait to start incorporating them into my workflow. (*Two thumbs up!)

  28. What about BGE?

  29. Hi Dalai,

    It is great to know that Clay Engine will support per-object matcaps. It is one of the two reasons why I do not use Blender matcaps in production.

    And another reason is: lack for custom matcaps support. Can we also expect that in 2.8?

    • Per-object and custom matcaps can be achieved with material nodes already. Search blender.stackexchange, blenderartists, etc for examples.

      • I know that. Now I wish to know if Blender’s matcap system could actually be useful for me in 2.8 release, or I’ll be forced to use shadeless materials again.

  30. Awesome, just don’t forget to make UI eye-candy too ;) at least as gimp 2.9

  31. In the workbench engine you mention shadows. Remembering the BCON video on wire development by Mike Erwin, would it be possible to achieve a graphical mode like this in the viewport?

    http://images.adsttc.com/media/images/5771/d22e/e58e/ceaf/5b00/019f/slideshow/GPL_AXO.jpg?1467077155

    http://images.adsttc.com/media/images/57d9/da98/e58e/cee9/d300/0064/slideshow/Courtyardhouse-Diagram-2.jpg?1473895058

    It would be very helpful for the CAD template mentioned in the Blender 101 article, as well as architectural workflows…

    • Indeed please don’t forget ‘technical’ users in your planning and I don’t want to hear any ‘Blender is for artists’ dismissive from Ton about it.

  32. Excellent stuff! But what about the fluid simulator? For example, up to now we cannot make a fluid emitter follow a path ie a curve :(

  33. ARZHAN SINGH: I believe the move to OpenGL 4 as a minimum has already started. (Though I can’t remember the exact spec version)

  34. What will be the minimum OpenGL version required for all this awesomeness?

    • Minimum OpenGL version will be 3.3 core profile. This is a good baseline to build upon, features from new versions can still be used through extensions (if GPU driver supports them).
      More info: https://wiki.blender.org/index.php/Dev:2.8/Source/OpenGL (note, this page is slightly outdated and still talks about moving to 3.2 core, will update the page later)

  35. Will we have the long-discussed option to drop our own GLSL into the new viewport for truly custom shaders? Being able to snap in user-generated things like screen space SSS would go a long way towards allowing for real time as final rendering.

  36. note: these images are displaying distorted in Microsoft edge

    otherwise, I can’t wait!

  37. “EEVEE” sounds like a Pokemon monster. Why not just retain “Blender Internal” (BI) or “Blender Realtime Engine” (BRE)?

  38. Why not just Eve engine? The last ‘e’ stands for engine already, so saying eevee engine contains redundancy.
    Anyway, I’m loving these sneakpeaks, keep’em coming…

  39. This is all very interesting and exciting, and I wonder if there is more to read on this here? I like the new targets, and this is all really taking shape.

    I am wondering if you have already looked at the paint workflow, or if this is something that will come later on?

    Thanks for sharing!

In order to prevent spam, comments are closed 15 days after the post is published.
Feel free to continue the conversation on the forums.