Beispiel #1
0
        static bool OnSave(int serial_number, IntPtr filename, IntPtr content_ptr, IntPtr scene_server_ptr)
        {
            try
            {
                RenderContentSerializer io      = RenderContentSerializer.FromSerialNumber(serial_number) as RenderContentSerializer;
                RenderContent           content = RenderContent.FromPointer(content_ptr);

                CreatePreviewEventArgs pc = null;

                if (scene_server_ptr != IntPtr.Zero)
                {
                    pc = new CreatePreviewEventArgs(scene_server_ptr, new System.Drawing.Size(100, 100), PreviewSceneQuality.RefineThirdPass);
                }

                if (io != null && content != null)
                {
                    string _filename = Marshal.PtrToStringUni(filename);
                    return(io.Write(_filename, content, pc));
                }
            }
            catch
            {
            }
            return(false);
        }
        /// <summary>
        /// Construct a render engine for preview rendering
        /// </summary>
        /// <param name="createPreviewEventArgs"></param>
        /// <param name="pluginId">Id of the plugin for which the render engine is created</param>
        public PreviewRenderEngine(CreatePreviewEventArgs createPreviewEventArgs, Guid pluginId)
            : base(pluginId, createPreviewEventArgs, false)
        {
            Client = new Client();
            State = State.Rendering;

            #region create callbacks for Cycles
            m_update_callback = UpdateCallback;
            m_update_render_tile_callback = PreviewRendererUpdateRenderTileCallback;
            m_write_render_tile_callback = PreviewRendererWriteRenderTileCallback;
            m_test_cancel_callback = TestCancel;

            CSycles.log_to_stdout(false);
            #endregion
        }
    private static IntPtr OnCreatePreview(int plugin_serial_number, int x, int y, int iQuality, IntPtr pPreviewScene)
    {
      RenderPlugIn p = LookUpBySerialNumber(plugin_serial_number) as RenderPlugIn;
      if (p == null || pPreviewScene == IntPtr.Zero || x < 1 || y < 1)
      {
        HostUtils.DebugString("ERROR: Invalid input for OnCreatePreview");
        return IntPtr.Zero;
      }

      var size = new System.Drawing.Size(x, y);
      var args = new CreatePreviewEventArgs(pPreviewScene, size, (PreviewSceneQuality)iQuality);

      IntPtr pBitmap = IntPtr.Zero;
      try
      {
        p.ActivePreviewArgs.Add(args);
        p.CreatePreview(args);
        if (args.PreviewImage != null)
          pBitmap = args.PreviewImage.GetHbitmap();
      }
      catch (Exception ex)
      {
        HostUtils.ExceptionReport("OnCreatePreview", ex);
        pBitmap = IntPtr.Zero;
      }
      finally
      {
        p.ActivePreviewArgs.Remove(args);
      }

      return pBitmap;
    }
 /// <summary>
 /// Creates the preview bitmap that will appear in the content editor's
 /// thumbnail display when previewing materials and environments. If this
 /// function is not overridden or the PreviewImage is not set on the
 /// args, then the internal OpenGL renderer will generate a simulation of
 /// the content.
 /// 
 /// This function is called with four different preview quality settings.
 /// The first quality level of RealtimeQuick is called on the main thread
 /// and needs to be drawn as fast as possible.  This function is called
 /// with the other three quality settings on a separate thread and are
 /// meant for generating progressively refined preview.
 /// </summary>
 /// <param name="args">Event argument with several preview option state properties.</param>
 protected virtual void CreatePreview(CreatePreviewEventArgs args) { }
Beispiel #5
0
 /// <summary>
 /// Called to save a custom RenderContent object as an external file.
 /// </summary>
 /// <param name="pathToFile">
 /// Full path of file to write
 /// </param>
 /// <param name="renderContent">
 /// Render content to save
 /// </param>
 /// <param name="previewArgs">
 /// Parameters used to generate a preview image which may be embedded in
 /// the exported file.
 /// </param>
 /// <returns></returns>
 public abstract bool Write(String pathToFile, RenderContent renderContent, CreatePreviewEventArgs previewArgs);
    private static IntPtr OnCreatePreview(int plugin_serial_number, int x, int y, int iQuality, IntPtr pPreviewScene)
    {
      RenderPlugIn p = LookUpBySerialNumber(plugin_serial_number) as RenderPlugIn;
      if (p == null || pPreviewScene == IntPtr.Zero || x < 1 || y < 1)
      {
        HostUtils.DebugString("ERROR: Invalid input for OnCreatePreview");
        return IntPtr.Zero;
      }

      var size = new System.Drawing.Size(x, y);
      var args = new CreatePreviewEventArgs(pPreviewScene, size, (PreviewSceneQuality)iQuality);

      IntPtr pBitmap = IntPtr.Zero;
      try
      {
        p.ActivePreviewArgs.Add(args);
        p.CreatePreview(args);
        if (args.PreviewImage != null)
          pBitmap = args.PreviewImage.GetHbitmap();
      }
      catch (Exception ex)
      {
        HostUtils.ExceptionReport("OnCreatePreview", ex);
        pBitmap = IntPtr.Zero;
      }
      finally
      {
        // 3 March 2014, John Morse
        // Fixed crash report: http://mcneel.myjetbrains.com/youtrack/issue/RH-24622
        if (p.ActivePreviewArgs.Contains(args))
          p.ActivePreviewArgs.Remove(args);
      }

      return pBitmap;
    }
Beispiel #7
0
 public abstract bool Save(String pathToFile, RenderContent rc, CreatePreviewEventArgs ss);
Beispiel #8
0
        public RenderEngine(Guid pluginId, CreatePreviewEventArgs previewEventArgs, bool interactive)
        {
            PreviewEventArgs = previewEventArgs;
            Database = new ChangeDatabase(pluginId, this, PreviewEventArgs);

            RegisterEventHandler();
        }
Beispiel #9
0
 public abstract bool Save(String pathToFile, RenderContent rc, CreatePreviewEventArgs ss);
Beispiel #10
0
    static bool OnSave(int serial_number, IntPtr filename, IntPtr content_ptr, IntPtr scene_server_ptr)
    {
      try
      {
        IOPlugIn io = IOPlugIn.FromSerialNumber(serial_number) as IOPlugIn;
        RenderContent content = RenderContent.FromPointer(content_ptr);

        CreatePreviewEventArgs pc = null;
        
        if (scene_server_ptr != IntPtr.Zero)
          pc = new CreatePreviewEventArgs(scene_server_ptr, new System.Drawing.Size(100, 100), PreviewSceneQuality.RefineThirdPass);
        
        if (io != null && content != null)
        {
          string _filename = Marshal.PtrToStringUni(filename);
          return io.Save(_filename, content, pc);
        }
      }
      catch
      {
      }
      return false;
    }
    static bool OnSave(int serial_number, IntPtr filename, IntPtr content_ptr, IntPtr scene_server_ptr)
    {
      try
      {
        RenderContentSerializer io = RenderContentSerializer.FromSerialNumber(serial_number) as RenderContentSerializer;
        RenderContent content = RenderContent.FromPointer(content_ptr);

        CreatePreviewEventArgs pc = null;
        
        if (scene_server_ptr != IntPtr.Zero)
          pc = new CreatePreviewEventArgs(scene_server_ptr, new System.Drawing.Size(100, 100), PreviewSceneQuality.RefineThirdPass, UnsafeNativeMethods.CRhRdkPlugInQuickPreviewReason.Other);
        
        if (io != null && content != null)
        {
          string _filename = Marshal.PtrToStringUni(filename);
          return io.Write(_filename, content, pc);
        }
      }
      catch
      {
      }
      return false;
    }
 /// <summary>
 /// Called to save a custom RenderContent object as an external file.
 /// </summary>
 /// <param name="pathToFile">
 /// Full path of file to write
 /// </param>
 /// <param name="renderContent">
 /// Render content to save
 /// </param>
 /// <param name="previewArgs">
 /// Parameters used to generate a preview image which may be embedded in
 /// the exported file.
 /// </param>
 /// <returns></returns>
 public abstract bool Write(String pathToFile, RenderContent renderContent, CreatePreviewEventArgs previewArgs);
Beispiel #13
0
 /// <summary>
 /// Constructor for our changequeue implementation
 /// </summary>
 /// <param name="pluginId">Id of the plugin instantiating the render change queue</param>
 /// <param name="engine">Reference to our render engine</param>
 /// <param name="createPreviewEventArgs">preview event arguments</param>
 internal ChangeDatabase(Guid pluginId, RenderEngine engine, CreatePreviewEventArgs createPreviewEventArgs)
     : base(pluginId, createPreviewEventArgs)
 {
     _renderEngine = engine;
     _modalRenderer = true;
     _objectShaderDatabase = new ObjectShaderDatabase(_objectDatabase);
     _shaderConverter = new ShaderConverter(engine.Settings);
 }