/////////////////////////////////////////////////////////////////////////////////
 public void Update(double timeInSeconds, Noesis.AntialiasingMode aaMode,
                    Noesis.TessellationMode tessMode, Noesis.TessellationQuality tessQuality,
                    Noesis.RendererFlags flags, bool enableMouse, bool enableTouch, bool emulateTouch,
                    bool enablePostProcess, bool flipVertically)
 {
     UpdateSettings(aaMode, tessMode, tessQuality, flags, enablePostProcess, flipVertically);
     UpdateInputs(enableMouse, enableTouch, emulateTouch);
     Noesis_UpdateRenderer(_rendererId, timeInSeconds);
 }
        /////////////////////////////////////////////////////////////////////////////////
        private void UpdateSettings(Noesis.AntialiasingMode aaMode,
                                    Noesis.TessellationMode tessMode, Noesis.TessellationQuality tessQuality,
                                    Noesis.RendererFlags flags, bool enablePostProcess, bool flipVertically)
        {
            // update renderer size
            if (!IsRenderToTexture)
            {
                Noesis_RendererSurfaceSize(_rendererId,
                                           UnityEngine.Screen.width, UnityEngine.Screen.height,
                                           _offscreenSize.x, _offscreenSize.y,
                                           UnityEngine.QualitySettings.antiAliasing);

                if (_isGraphicsDeviceDirectX)
                {
                    UnityEngine.Camera camera = _targetCamera ?? UnityEngine.Camera.main;

                    if (enablePostProcess && camera != null && (
                            camera.actualRenderingPath == UnityEngine.RenderingPath.DeferredLighting ||
                            camera.actualRenderingPath == UnityEngine.RenderingPath.DeferredShading))
                    {
                        flags |= RendererFlags.FlipY;
                    }
                }
            }
            else // Render to Texture
            {
                System.Diagnostics.Debug.Assert(_texture.width > 0);
                System.Diagnostics.Debug.Assert(_texture.height > 0);

                Noesis_RendererSurfaceSize(_rendererId,
                                           _texture.width, _texture.height,
                                           _offscreenSize.x, _offscreenSize.y,
                                           UnityEngine.QualitySettings.antiAliasing);

                if (_isGraphicsDeviceDirectX)
                {
                    flags |= RendererFlags.FlipY;
                }
            }

            if (flipVertically)
            {
                flags ^= RendererFlags.FlipY;
            }

            // update renderer settings
            Noesis_RendererAntialiasingMode(_rendererId, (int)aaMode);
            Noesis_RendererTessMode(_rendererId, (int)tessMode);
            Noesis_RendererTessQuality(_rendererId, (int)tessQuality);
            Noesis_RendererFlags(_rendererId, (int)flags);
        }