← All ideas
  • Published 16 Mar 2018

OpenGL / Playblast options panel

OpenGL renders are a simple way to get an ultra fast rendered image from Blender. It can be used for anything. From a cool wireframe or clay showcase with ultra resolution to quick animation previews (also called playblast or boom smash ).

I think (I have not stats about that :P) that OpenGL render is used a lot in Blender. But doing a good OpenGL render requires to do several things depending what we want, like :

  • OpenGL render settings
    • anti-aliasing
    • transparency
  • scene render settings
    • framerate
    • frame start/end
    • frame step
    • output format / location
  • viewport settings
    • wireframe
    • only render
    • world background
    • Ambient Occlision
  • Extra settings
    • autoplay animation
    • stamp output (like render time, frame number, ...)
    • turn off simplify

If you know how to do this stuff, you probably noticed one thing : Blender doesn't have any unified and user-friendly place for OpenGL render. All the things I quoted above are needed at some point, but they are all over the place. It requires going to a lot of different places in Blender. It's a big travel with a lot of repetition just to do one thing: OpenGL render. And some of them need to be undo/redo all the time because they interfere with our "working" viewport and usual render settings.

For now the OpenGL render settings are accessible only via drop-down menus under Render > OpenGL Render Options. The problem is that it requires a lot of clicks and back&forth to set 2-3 parameters.

There is the addon Advanced Boomsmash by Luciano Muñoz & Cristian Hasbun which provides some cool settings, but mainly animation playblast oriented.

And on top of that, I think that some of the settings quoted above should be able to be changed for the OpenGL render independently from the scene and viewport settings. Meaning that if I want to do a beautiful wire rendering to demonstrate that I'm not a savage modeler, I should be able to go in one place, toggle wireframe render, maybe anti-aliasing, transparency, output png and a specific location, click render and instantly have my beautiful wireframe render without damaging my viewport and scene settings. It's really neat because we usually don't use the same setting for usual renders or "working" viewport than OpenGL render, and being able to separate them remove the need to move settings back and forth all the time. (And for some people, this bottleneck removal will even convince them to use OpenGL render.)

Hence my proposal of a new panel located in the Render Tab.

I did a mockup, or mostly a mitch-match from Boomsmash addon and the different Blender's options.

OpenGL mockup

The idea is really to bring OpenGL's options somewhere user-friendly and to provide some basic options for the specific preview & showcase usage that we have with OpenGL.

Now some explanations about the options I put in my mockup.

Render buttons . They are already available in different editors and in Render drop-down sub-menus, but I think that it's a great idea to have them on a panel specifically made for that purpose.

Frames options , which are specific to animation: start & end, fps, step. They are independent of the scene, changing something here doesn't affect the scene, as the scene doesn't affect this panel either. But if we want to use the scene's settings, a simple click on the clock icon on the left would kind of copy-paste the scenes settings into the OpenGL panel.

Resolution percentage . No matter if it's for an animation or a snapshot, we may want a lower or a higher resolution from the scene.

Outputs . We may want to do every OpenGL render in a separate folder rather than the "usual" renders, with a separate name and file format. The format settings used are those in the Output panel and can be set while browsing the output folder as usual. Same for encoding settings.
The reason for using other panels settings for this is because I think the panel should be as clear as possible, and as most of the time we don't need to change anything besides the file format for an OpenGL render, there's no need to add those settings. Plus it's just a few panels near.

Anti-Aliasing : A simple set of boxes, from none to 16. I think it's the simplest form it can take in Blender's UI. And, correct me if I'm wrong but "save buffer" option isn't useful in OpenGL render, being not sure I put it in the "extra" options below but if it's useless we shouldn't use it here.

Stamp , enables stamp output specifically for the OpenGL render, uses the stamp panel's parameters. Again, I don't think it's worth it duplicating stamp's settings here. It's just a few panels near.

Only Render simply turns on only render, but only for the OpenGL render, doesn't affect the viewport (is that possible ?).

Wireframe set all object's wireframe display on. So you can render a nice Wire without a headache. With or without subsurf optimize, as you wish. Nobody judges you.

Autoplay will, in case of OpenGL animation render, will automatically play the rendered animation with Blender's default player or user-defined player. Like we usually do with Ctrl F11, but automatic.

Active Camera forces the OpenGL render to render from the active camera. If unchecked, renders from the 3D viewport (is that possible even in animation render ?).

Unsimplify turn's off all the Simplify options during the OpenGL render only.

** Render Border** forces the render to use only the render border, even when rendering from the viewport. I think it would be a really straight forward way to work: you have a model, you turn around without caring about a camera, you render-border it and you render in one click. Simple, efficient.

Full sample , for those who need it, not sure...

Thanks for reading.

qLo3BQ5[1].png

33.3%

Development Status: Open

Upvote 1 Downvote 2
Lauloque
16 Mar 2018

12 Comments

julian_eisel

Like others have noted it before, this proposal will become pretty much obsolete in 2.80. In there, OpenGL or preview rendering will use a regular render engine, like Eevee or the Workbench engine. All you'd have to do is activate these as your scene render engine. Although I don't recall anybody explicitly saying this, I assume the OpenGL render stuff will be removed then. Users will be able to setup render settings for the F12 render in the Properties Editor as usual (even for Eevee/Worbench), and for the viewports via the workspace settings.

2
luciano

I agree and feel it would be a nice improvement on what we have done so far, the reason to have it, @jason, is because most of the time you want to setup your playblast to be very fast, and the options for that usually differ from when you want to render your scene, when working on high iteration projects once you render your animation and start doing retakes you dont want to touch any of the final render setting for doing your quick opengl render, hence having them as a separate allouws you to work freely without having to remember them. Also having a separate output will help you not overwrite your renders by mistake These are some of the reasons why we created the advanced boomsmash addon.

1
jason

@Luciano Muñoz: And I get that. I really do. But that's why I often set up a separate 3D View as my "preview" editor and I dedicate that one to have all of the relevant and pertinent settings for a boomsmash.

I see the value in having a different output path, but I'm not sold on having different framerates, resolutions, or stamp settings.

1
Lauloque Author

@jason I do that too, but that means having two viewports to render (my PC already struggles with one 🥲 ). Or I close it once I'm done, but then I'll have to set it up again when I will need it again. Or I missed a super magic trick again?
Changing frame rate is a simple way to see your animation slower/faster.

Resolution scale for performance: you can crank down the % to get your preview faster. Or crank it up if you want something big which will be longer to render, but you can zoom in to polish details.

Stamp settings, I just thought about checkbox to enable/disable stamp, but since I also thought about being in a panel in the Render tab, it means being near the Stamp panel too so it may be less important. But again : it's supposed to be enabling/disabling the stamp for the preview render only.

But @luciano has an idea which might be nicer, see above.

1
luciano

@Jason van Gumster: for stamp you never want stamp on your final render, but always on your open gl ones, resolution because you want your final render to be final, and your open gl render to be quick, framerate might make less sense...

jason

Speaking just for myself, I don't want this at all. While I agree that in some cases it might be nice to have faster access to some options, I don't think that this is the way I'd want to do it. It duplicates a lot of settings that already exist for regular rendering without providing a clear benefit as to why they should be separated.

1
Quargzon

@Jason van Gumster: Not to mention, Eevee/Clay will invalidate a lot of these requests since they aim for 1:1 equivalence with Cycles, but render at near-realtime rates and have their own render settings. That's probably going to end up being an even better gift than anything this post is requesting.

1
Lauloque Author

@Jason van Gumster:
The first goal is to have them at one place in a user-friendly form. The second goal is to not distort the viewport nor the scene's render settings.

The way it is on blender now, it's messy, it can take several minutes just to do a simple setup, and you have to undo everything once you're done because you need to get back to your viewport & scene setting like they were before. And this is only for one render, imagine how it is when you have to make several renders at any time of your work.

The way it could be with such kind of UI : open a panel, do your setup within seconds, hit render and that's all. No time consuming & repetitive software manipulating.

The biggest example I can think of is animation previews. when you need to see your animation at full speed without lag, no distractive shaders & textures, you have multiple animations with different frame ranges, names, ... As I said, for now it takes time to create the setup and you have to undo it (or force yourself to not to change anything) just to re-do it a few minutes later again when you moved a few keyframes. It's a huge time wasted.

I understand it's not usually good to repeat things in a software, but what makes it worth it then ? To me, simplifying and user-friendlying a task (which should be by itself anyway) is a good reason.

@quargzon:
2.8 is not out yet and the previews are not feature-full now so to me, it seems hard to say if it will be invalidated. But I guess a big part of what I'm talking about would still be valid. At least the principles :

  • we should not have to travel everywhere in Blender in order to do something supposed to be simple and fast
  • we should not have to undo/redo the same setup all the time for something supposed to be simple and fast

OpenGL renders, playblasts, and so on, are literally meant to be a one-cilck preview from the viewport.

And, I might be wrong about this, but even if eevee and clay will be able to do the same things or more, there will still need a one click preview for animators at least. Having to switch to another engine is a workaround in my eyes.

Quargzon

@loic.dautry: On the contrary, even in its current state, 2.8 already satisfies the requests in this proposal for the most part.

Clay is being added for this very reason -- to give you exactly what you're wanting from a "preview render". It provides a basic, textureless render at "OpenGL speeds", and has its own isolated settings. Eevee is a step up from that, allowing renders that approach Cycles quality, but again at realtime or near-realtime render speeds. And, as with the Clay renderer, it has its own separate settings that are retained separately when switching renderers.

I guess I fail to see what's so time-consuming and unbearable about moving your mouse to the renderer dropdown and selecting Eevee or Clay Render when you want a preview render. The results will also be an even better representation of the final product than a typical Maya-style playblast with similar render times. If you're using Cycles for your final render, you won't care about changing Eevee's settings.

On the other hand, if you're using Eevee as your main renderer, it's already pretty much as fast as it's going to be.

Honestly, I think it would be best to rename the existing "OpenGL Render" option to "Preview Render", and have it render using Eevee/Clay, automatically using the viewport settings instead of the final render settings. For example, it would use the viewport sample count instead of the render sample count. It might be beneficial to add a few other performance-related things like a special resolution setting for preview renders only (like how there's a separate frame range for OpenGL renders).

But, beyond that, I can't see any reason there should need to be specialized settings and dialogs for this one case considering what will already be at your disposal in 2.8.

Lauloque Author

@quargzon: I'm not convinced.
Clay provides a matcap view with a curvature on it, not good for everything IMO. Some matcaps are ok, but most of them are gimmicks. I understand what you say for eevee.

Let's go further and consider that eevee + clay will be able to do whatever needed for a preview and in a good way for whoever's taste. That would be very good and will basically mean no need for OpenGL like we used to.

But it's still all over the place, for now, settings needed are everywhere. And again, for a preview, I think we should not have to change the viewport nor the scene settings. I still consider interesting do have a separated set for preview in order to not damage the viewport nor the scene nor already rendered scene files. If you look at my mockup and consider we're using eevee/clay just removes a few items, mostly Anti Aliasing related I think. But the rest would remain valid in my eyes.

I think we both agree about "something for preview-ing" with some basic settings, I just consider more important to have specific yet simple parameters and outputs. Maybe a "Preview Render" panel no matter which engine currently used, with separated display options and outputs.

Now it's bed time ♥

Quargzon

@loic.dautry: I agree that Clay doesn't fully encompass what a user might want for quick test renders.

Eevee, however, will be able to do everything Cycles can do at a basic level, so really all that's necessary is a few preview-specific controls like disabling textures or overriding all materials with a specific one.

In any case, I still think the current proposal needs to be rewritten in Eevee terms for devs to consider it. I'd say it's very likely that the entire concept of an "OpenGL Render" will no longer exist by 2019. If this idea gets implemented, it will probably have to be part of the 2.8 release due to the massive changes being made to the inner workings of the rendering engines. After all, there's no sense in adding a feature that's going to have to be redesigned immediately for 2.8.

To be clear, I'm not trying to shoot down your proposal; I just think it needs work if you want it to be considered by devs. I personally would like to see something like this in 2.8, but I also think we're all a bit wary of render settings potentially being muddled further to the point where there are duplicates of many options coexisting in the same area. Imagine how annoying (or confusing to beginners) it would be to accidentally adjust the wrong settings and wonder why there's no change.

Thinking about it, the best way to handle this might be to have a single toggle button at the top of the render settings that switches it to preview render settings. The entire settings panel could even change color as a visual cue of which is currently active. That way, you won't have the same settings twice in the same place.

Lauloque Author

@quargzon: I start the quoting row, otherwise I will lose myself. x)

To be clear, I'm not trying to shoot down your proposal; I just think it needs work [...]

Very clear! And I'm glad you give me arguments and thoughts which I can work from them.

we're all a bit wary of render settings potentially being muddled further to the point where there are duplicates of many options coexisting in the same area

I do. Hence a "preview render" pannel, with a few parameters.

Thinking about it, the best way to handle this might be to have a single toggle button at the top of the render settings that switches it to preview render settings. The entire settings panel could even change color as a visual cue of which is currently active. That way, you won't have the same settings twice in the same place.

Sounds nice too. And maybe a pop-up with a "don't show me again" checkbox to quickly warn & explain the preview mode.

Anyway I will re-think my mockup for a 2.8 environment. Thanks for the feedback.

2