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) { }
/// <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; }
public abstract bool Save(String pathToFile, RenderContent rc, CreatePreviewEventArgs ss);
public RenderEngine(Guid pluginId, CreatePreviewEventArgs previewEventArgs, bool interactive) { PreviewEventArgs = previewEventArgs; Database = new ChangeDatabase(pluginId, this, PreviewEventArgs); RegisterEventHandler(); }
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> /// 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); }