Download

Strange (but good) behavior of 3D Widgets in PostProcessInput3

I’ve been working on GazeInput menus in VR using 3D widgets. I ran into the same problem many before have, the widgets are being affected by post-process effects. On a dark background my menus appear too bright, and on a bright one too dark. Autoshutter, dof, etc were all causing problems.

I found some posts promising that there would be an option to disable post processing on widgets in the future, but these posts are nearly a year and a half old.

I figure my only shot to solve this was through a post process blendable compositing with a custom depth matte. To facilitate that I created a static mesh that matched the shape of the parabola distorted menu because although there is a tickbox for rendering custom depth on widgets, it doesn’t work. So I added the static mesh, turned on customdepth, and turned off the main pass:

CustomDepth.PNG

I tried out different SceneTexture inputs, unable to get any of them to work. I had pretty much given up, but then I started trying the different PostProcessInput channels. Here are the results:

PostProcessInput0: Full render, already affected by post process effects.
PostProcessInput1: Widget rendered in original color on black background
PostProcessInput2: Widget rendered black
PostProcessInput3: Widget rendered on background, unaffected by post process effects.
PostProcessInput4: Widget rendered on background, unaffected by post process effects.
PostProcessInput5: Widget rendered on background, unaffected by post process effects.
PostProcessInput6: Widget rendered on background, unaffected by post process effects.

This really confuses me, because I thought PostProcessInput channels were reserved for custom use, and I didn’t expect them to be any different from eachother. Is it the case that because 3DWidgets are an experimental class, this was just implemented a bit hackishly? Or am I completely misunderstanding the purpose of PostProcessInputs?

I’m glad this works, I just don’t understand why or how. Can anyone elaborate?