Hi,
We are currently doing our render on the MonoBehavior.PostRender() function, that gets called after Unity's Render.TransparentGeometry layer, but before Camera.ImageEffects.
I've been investigating and I think we can move our Render to the end of frame by using a corutine that waits until then. We will probably change it for 1.2 version, but if you want to try it now, you will have to modify a pair of scripts:
- In
Assets/Plugins/NoesisGUI/Scripts/NoesisGUIPanel.cs, change the
PostRender() function to:
void OnPostRender()
{
if (_uiRenderer != null)
{
StartCoroutine(EndOfFrameRender());
}
}
IEnumerator EndOfFrameRender()
{
yield return new WaitForEndOfFrame();
_uiRenderer.PostRender();
}
- In
Assets/Plugins/NoesisGUI/Scripts/Core/NoesisUIRenderer.cs, in the function
UpdateSettings(), comment the line that flips render vertically for deferred lighting:
private void UpdateSettings(Noesis.AntialiasingMode aaMode,
Noesis.TessellationMode tessMode, Noesis.TessellationQuality tessQuality,
Noesis.RendererFlags flags)
{
// update renderer size
if (_texture == null)
{
// ...
if (_isGraphicsDeviceDirectX)
{
// ...
if (camera != null &&
camera.actualRenderingPath == UnityEngine.RenderingPath.DeferredLighting)
{
// vvv H E R E vvv
//flags |= RendererFlags.FlipY;
}
}
}
else // Render to Texture
{
// ...
}
// ...
}