Viewport Render Image low dynamic range

Blender (Export script developed by yoyoz; Integrated Plugin developed by JimStar)
Post Reply
knurling
Licensed Customer
Posts: 4
Joined: Thu Jun 16, 2016 5:01 am

For my work, I tend to make heavy use of Blender Compositor nodes and various post-processing plugins and need to see the results real-time in the viewport. I've noticed that Octane Render seems to send an LDR/SDR depth image to the viewport which basically makes these tools useless. For final renders, a full HDR image is sent to Blender and these tools work as expected, but it's annoying to have to do a final render to see, for example, basic color correction. Is this a bug or design decision for performance or some other reason? Would it be possible to add a toggle to UI so we can work in a more native fashion? Or am I just missing an existing feature?

FWIW.. I was able to create a Python shim that requests the full HDR image be sent to the viewport it seems to work (N=1 of course), and my quality of Octane Blender life has improved immensely. I don't want to post any unofficial code however and would prefer a supported workflow to get this done if it exists or can be implemented.

Here's an example of what I mean using the default Path Tracing scene (31.12) and an HDRI background...
A.png
B.png
C.png
What do you think?
linograndiotoy
OctaneRender Team
Posts: 1560
Joined: Thu Feb 01, 2018 7:10 pm

Out of curiosity, did you try the Octane Compositor instead?
Also, it would be great if you could send me your test scene, so I can take a look at the settings.

Thanks!
knurling
Licensed Customer
Posts: 4
Joined: Thu Jun 16, 2016 5:01 am

Thanks for getting back to me!

Yes, I use the Octane Compositor, and it's great for what lives inside Octane (denoising, AOV work, etc). The issue is everything downstream on the Blender side: Blender's own compositor, AgX / OCIO view transforms, and add-ons like Render Raw. Those all need scene-linear data above 1.0 to work, and in the viewport they're getting a clipped LDR/sRGB buffer, so pulling exposure down just reveals flat white (2nd screenshot). F12 with Final Render Image Type = HDR gets the full float image and everything behaves (3rd screenshot). So the Octane Compositor doesn't really substitute here. My goal/hope is for the viewport to match F12 so the Blender-side compositing work can be judged live. To me, it's just a matter of being able to stay inside and use additional Blender tools, versus punting things over to like Davinci or Premiere.

In case it's useful, here's what I found poking around: in core/session.py start_render(), viewport sessions always request TONEMAP_BUFFER_TYPE_LDR / NAMED_COLOR_SPACE_SRGB, and prefer_image_type is only read when not is_viewport. Requesting HDR_FLOAT / LINEAR_SRGB for the viewport is basically what my shim does, and the viewport draw path seems to handle it fine. I also noticed A_USE_HDR_VIEWPORT (412) in octaneid.py isn't referenced anywhere in the plugin. Is that intended for this?

A "Viewport Image Type" option (or letting the viewport honour Final Render Image Type) would cover it for me. I can send a file if helpful but I don' think it's like a one-time/file based issue.

Thanks!
Post Reply

Return to “Blender”