Page MenuHome

Eevee Offscreen rendering
Closed, ResolvedPublic

Description

System Information
Operating system: Windows 10
Graphics card: 2 x GTX 1070

Blender Version
Broken:
2.80, 1af810b4ff17, blender2.8, 2019-02-20, as found on the splash screen

Short description of error

I'm trying to render the 3D View as a Texture in 2.8.
Everything seems a bit glitchy
When I'm in solid mode, it looks alright, but the background is black and the colors are a bit different.


In Wireframe mode the objects just appear black.

And when set to Eevee it only renders the outlines and overlays.

Here's a blend with the code:

I hope this bug gets fixed.
Thanks in advance,
Jonas

Event Timeline

Sebastian Parborg (zeddb) triaged this task as Needs Information from User priority.

I do not have the drawing glitches. Only the color difference. I guess that the color difference is because of no color management. If you set the color managment display device to None it nearly matches the colors. So I'm guessing this is the reason for it.

Do you still get glitches if you download this dll and copying it so its located in the same directory as 'blender.exe' and run Blender normally?

Thank you, now it actually renders Eevee.
But now its very very slow and laggy. The background is also still black and the blender instance crashes after a while.
This happens even without the offscreen render

That .dll forces blender to use software rendering. So the issue is with your GPU drivers it seems.
Are you running in SLI? If so, does it help if you turn off SLI? (Remove the .dll before testing again of course).

I dont have SLI enabled but it could be an issue with my GPUs.
Could there be something else besides SLI that causes this issue?

Sebastian Parborg (zeddb) raised the priority of this task from Needs Information from User to Normal.

Hi

I have been observing this behavior on two other window 10 machines with either one GTX 1080 Ti and a dual RTX 2080 Ti (no SLI). The way to reproduce:

https://docs.blender.org/api/blender2.8/gpu.html#rendering-the-3d-view-into-a-texture and execute it from the default project. set the viewport render method to ‘lookdev’ or ‘rendered’. It looks as if the buffer is not cleared for the next frame and only the overlays are drawn over the previous frame.

With my MacBook Pro (with AMD Radeon R9 M370X 2048 MB) it works as advertised and it seems even faster and responsive than on Windows with the much more powerfull GFX cards.

Blender version: blender-2.80 / 0ba143a1d675 / win64

Clément Foucault (fclem) raised the priority of this task from Normal to Confirmed, High.May 14 2019, 12:08 PM

The latest blender beta 06c4139a6833 has an api change and the script from https://docs.blender.org/api/blender2.8/gpu.html#rendering-the-3d-view-into-a-texture throws now an error: Line 19 context.depsgraph : 'Context' object has no attribute:'depsgraph'.

The color management issue seems to have been fixed by @Jeroen Bakker (jbakker) .

@Jonas Dichelle (JonasDichelle) do you still have the glitches?

I no longer have the color management issues (Thank you! :) ) but the Eevee and Wireframe issues unfortunately are still happening. :( @Clément Foucault (fclem)

Ok, I got the script from https://docs.blender.org/api/blender2.8/gpu.html#rendering-the-3d-view-into-a-texture fixed:

replace

projection_matrix = scene.camera.calc_matrix_camera(
    context.depsgraph, x=WIDTH, y=HEIGHT)

with

projection_matrix = object.calc_matrix_camera(
    context.evaluated_depsgraph_get(), x=dWIDTH, y=dHEIGHT)

also the Docs for https://docs.blender.org/api/blender2.8/bpy.context.html need to be updated.

And I observe the same issue as @Jonas Dichelle (JonasDichelle) in regards to eevee and wireframe..

Hi just checking and the issue that is left (to my knowing) is that eevee background is black. There is also the case that the World Space Cavity pattern in workbench uses only a single pattern, but this is also the case for final rendering.... The TAA samples are fine

Jeroen Bakker (jbakker) closed this task as Resolved.Thu, Jun 6, 8:39 AM

Sorry to disagree, but the issue is not resolved. I just tested the latest blender 2.80 (june 6th) with windows 10 and a NVidia GTX 1080 Ti and I still have the effect Jonas described. ( when set to Eevee it only renders the outlines and overlays.)

Brecht Van Lommel (brecht) closed this task as Resolved.

The latest build does not include the fix yet, tomorrow's build will.

As far as I can tell this issue is not resolved. Still the same effect with Windows 10 and blender build 749d53.. from the 7th june.

Tested with

Windows 10 pro
Version 1709

GeFroce GTX 1080 Ti
Driver 391.25

Then we are not able to reproduce

Please provide us with more information how we can reproduce the issue, so we can help. Let's start with your system info Can you upload the system info from Blender help menu? Also make sure you test with the latest graphical drivers.

here are my system infos:

Have you tried with the latest drivers? It is interested to know on which configurations this issue happens and which one not.

After I uploaded my system-info, I installed the latest nvidia drivers (430.86) for my hardware, and I still see the same effect.

Jeroen Bakker (jbakker) raised the priority of this task from Confirmed, High to Waiting for Developer to Reproduce.Sun, Jun 9, 8:52 AM
Clément Foucault (fclem) lowered the priority of this task from Waiting for Developer to Reproduce to Confirmed, High.

I can repro on nvidia+linux.

Hi, I have same problem as martin(rendering/LookDev with offscreen rendering is not working).

I checked this problem with different machine and it had same problem.

Those machines only one condition was same.

They are has nvidia GTX graphic cards(1080ti, 980ti, 1060m).

Is this a problem only on the nvidia gtx graphics card?

Ok I finally found the issue. The issue is caused by the GPUOffscreen not being created in the same GL context as the one in which it is used for drawing. Framebuffers are not shared between contexts. So appart from creating it in the right context (which, if i'm not mistaken, is not possible with the current API) we can only do a subsystem under the hood with one framebuffer per context and use the right one depending on active context. This is the only flexible way of doing it that won't complicate the pyGPU API usage.

Nice. I am looking forward to your fix. Though its my ignorance of the problem you are facing and knowing your expertise that lets me trust your judgment.

Aware this is not the place to do support, I do have a request for the documentation (https://docs.blender.org/api/blender2.8/gpu.htm):

With the script we are testing this issue we need to toggle to the camera view if we want to render all the nice postprocessing goodies of EEVEE to texture. I assume it has something to do with the

offscreen.draw_view3d(

function, where the script passes the current context info to the function. I just couldn't figure out how to define my own context to render-to-texture independently of the viewport settings.

my request would be to add another example that shows how to do this.

I can confirm the fix on a RTX 2080 Ti and a GTX 1080 Ti.

Very much appreciated.