Appearance
RenderingPlugin
Thin plugin-facing wrapper around RenderingService and the optional PostProcessingService. Use it to drive renders, change quality, manage effects and post-process passes, and take screenshots.
Usage
RenderingService is registered by ViewerCore. Load the plugin to expose the same API through pluginManager.
ts
import { ViewerCore, RenderingPlugin } from "@optellix/xviewr-sdk";
const viewer = new ViewerCore(container, config);
await viewer.ready();
await viewer.loadPlugin(new RenderingPlugin());
const rendering = viewer.pluginManager.getPlugin("rendering") as RenderingPlugin;
rendering.setQuality("high");
rendering.renderFrame();Service dependencies: rendering (required), postprocessing (optional). Post-processing methods no-op if the service is not registered.
Public API
| Method | Description |
|---|---|
updateConfig(config) | Partial update of RenderingConfig on the service. |
renderFrame() | Render the current scene/camera once. |
addEffect(id, effect) | Register a RenderEffect by id. |
removeEffect(id) | Remove a previously registered effect. |
setPostProcessingEnabled(enabled) | Toggle post-processing globally. |
updatePostProcessingConfig(config) | Partial update of PostProcessingConfig. |
addPostProcessPass(pass) | Add a PostProcessPass to the chain. |
removePostProcessPass(id) | Remove a pass by id. Returns boolean. |
takeScreenshot(width?, height?) | Returns a data URL of the current frame. |
createRenderTarget(width, height, options?) | Create a THREE.WebGLRenderTarget. |
renderToTarget(target, scene, camera, clear?) | Render an arbitrary scene/camera into a target. |
getStats() | Returns RenderingStats (draw calls, triangles, FPS, etc.). |
setWireframe(enabled) | Toggle global wireframe mode. |
setQuality(quality) | Switch RenderQuality preset. |
Events
The plugin does not emit events of its own. See RenderingService events on the bus for render-state changes.
Example
ts
const rendering = viewer.pluginManager.getPlugin("rendering") as RenderingPlugin;
rendering.updateConfig({ shadowMapEnabled: true });
rendering.setQuality("high");
const dataUrl = rendering.takeScreenshot(2048, 1536);
const stats = rendering.getStats();
console.log(stats.fps, stats.triangles);