Getting Started

You can program Visionary Render to optimise your workflow or improve your user experience. The pages in this section introduce two ways this can be achieved: scripts and plugins.


Shaders are covered in the Advanced Topics section.


Visionary Render permits you to script behaviour using Lua, which is a high-level programming language that is easy to learn. Visionary Render supports Lua 5.1 (with some extension support for Lua 5.2). For an introduction to the language itself, see the book Programming in Lua, 2nd Edition by Roberto Ierusalimschy. There are also plenty of free tutorials available online. The following pages cover scripting:


Plugins permit you to extend the functionality of Visionary Render in a way that persists across different scenes. The Plugin API is an extension to the core Visionary Render scripting capabilities. It provides documentation and helper libraries for the purpose of interacting natively with the C API. The SDK examples and helpers are written with C++ in mind, but the C API can be used by any language that is capable of invoking dynamic library functions. The one condition is that you must be able to create a binary that exports the required Plugin API functions. There are two kinds of plugin: Lua and Native.

Lua Plugins

A Lua plugin is a script that defines a module and a few simple identifying functions. Lua plugins are loaded into the Visionary Render scripting environment. This means that any scripts running on Event nodes or in the Console can use the functions defined by the plugin. Lua plugins can be developed with a standard installation of Visionary Render - there are no external libraries required. The following pages cover Lua plugins:

Native Plugins

A native plugin runs compiled code natively as part of the execution of the host application (i.e. Visionary Render). By contrast, a Lua script runs inside the Lua script engine. Native plugins benefit from faster execution so should be used for more intensive tasks. The executable code is compiled into a dynamic link library (DLL) and loaded at runtime by the plugin manager. A native plugin must export various entry points to allow the host to identify it and permit it to access the VRTree API. The following pages cover native plugins:


See the Virtalis GitHub repository for further examples of plugins.

No Results.

Getting StartedArchitectureBest PracticesHow ToAdvanced TopicsChangelogvrtree_cppCoreForeign Function InterfaceMetanodesMigrationsObserversPropertiesTreeUtilitiesAPI DefinitionsVR ExchangePluginsLua API