Glowstick
- 1 Introduction to Glowstick
- 2 Supported Features
- 3 Setting up Glowstick
- 4 Using Glowstick
- 5 Supported Flows
Introduction to Glowstick
Industry Leading Path Tracing Performance Without Compromises
Glowstick is designed for maximum performance on Zeus GPUs. The CPU backend enables users to test the functionality of Glowstick without access to Zeus GPU silicon, and is about as fast as other production CPU-based renderers.
In order to achieve leading path tracing performance, we co-designed the path tracing core (Lightning) with the path tracing software (Glowstick). This enabled us to work around limitations presented by ray tracing cores integrated in legacy GPUs.
To learn more about how we designed and optimized Glowstick and Lightning, read https://bolt-graphics.atlassian.net/wiki/spaces/EAP/pages/325124119/Developer+Guide+Path+Tracing?atlOrigin=eyJpIjoiMmVhYmQxZmUzNDE0NDFkMDg2OWYyYTIyOTQ2MTM2MmEiLCJwIjoiYyJ9.
Supported Features
OpenUSD (Universal Scene Description)
Direct interchange with content creation apps
The OpenUSD standard is a very expressive format for managing scene complexity, allowing collaboration and providing the utmost freedom for expressing composition of scene elements and assets. Compatibility with industry pipeline practices and content creation tools provides flexibility to meet workflow needs. https://bolt-graphics.atlassian.net/wiki/spaces/EAP/pages/324632637/Glowstick#Supported-Flows
Glowstick supports the following Open USD scene file formats:
.usd - binary USD scene file
.usda - ascii readable text USD scene file
.usdz - binary USD ZIP compressed archive format
.usdc - binary USD compressed or crate
Fully composable scene hierarchy, cameras, lighting
Glowstick supports variants, payloads and hierarchical instancing. However be aware that some DCC apps have options that may flatten the scene hierarchy on USD export.
Typical default camera settings:
def Camera "Camera"
{
token projection = "perspective"
float focalLength = 50
float horizontalAperture = 20.955
float verticalAperture = 15.29
float2 clippingRange = (1, 1000000)
}Glowstick uses physical area lights. Be sure to convert point or spot lights to a SphereLight, DistantLight or similar RectLight. Use real world length units and avoid very small high power sources, they take more processing to detect and converge. Textured area sources support exr and hdr HDRI image formats.
Supported usdLux light types:
CylinderLight
DiscLight
DistantLight
DomeLight
GeometryLight
RectLight
RectLight example:
def Scope "Lights"
{
def RectLight "Light1"
{
float inputs:width = 5
float inputs:height = 5
asset inputs:texture:file = @checkerboard.png@
color3f inputs:color = (1, 1, 1)
float inputs:intensity = 5.0
float3 xformOp:rotateXYZ = (0, 90, 0)
double3 xformOp:translate = (3.5, 0, -1)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ"]
}
}( VolumeLights not yet supported )
Hardware Texture Mapping
Supports OpenImageIO standard
Glowstick texture mapping supports the ASWF OIIO image formats. For best caching, tiling and filtering it is recommended to use OpenEXR .exr textures.
Additionally supported image formats:
.png, .jpg, .tif, .bmp, .dds, .hdr, .tga
UDIM textures supported
Glowstick takes advantage of advanced UV organization, supporting UDIM texture workflows.
Open Shading Language textures
Scene texture inputs can reference the image output of OSL shaders. This provides an expressive environment to author procedural textures, programmed patterns and powerful render time imaging calculations.
Fully Programmable Shading Pipeline
USD integrated ASWF MaterialX for material exchange and lookdev
MaterialX provides a platform agnostic shader graph network and XML serialization format
Glowstick is a hydra delegate that supports rendering with high level USD scene elements:
USDPeviewSurface
USDOpenPBRSurface
USDUvTexture
These high level USD scene elements are material node types exported from DCC applications. Glowstick compiles MaterialX and Open Shading Language to rendering code to apply these materials. MaterialX can also convert a subset of shaders into glsl, HLSL, WebGPU or Metal to accelerate preview renders on supporting GPUs.
Flexible Rendering API
Allows hardware and software emulation on multiple platforms and architectures
Glowstick has multiple back end implementations so that software functionality can be equivalently developed to run in hardware emulation. This allows the same functionality to be developed in software and emulated on FPGAs to gather run time statistics and hardware timings for ASIC development.
The Glowstick codebase is developed to be cross platform and to support multiple architectures. Linux is the preferred platform for deployment, but a subset of the codebase is being made portable for client usage on Windows in future releases. These executables can be built for x86, AMD and Arm architectures.
Glowstick can be run as a networked service
Coming soon!
Glowstick supports standard render Job Description Formats and can interact with Render Farm Queue Management services
Glowstick can be integrated into DCC applications as a Hydra rendering delegate. More info coming soon!
Extensible Post Render Pipeline
Intel AI Noise Reduction
Coming soon!
Multiple AOV outputs
Denoised Beauty
Raw Beauty
Albedo
Normals
Object ID
Triangle ID
Light Path Expressions
Setting up Glowstick
Coming Soon!
Using Glowstick
Glowstick is a command line renderer that can be called by running the glowstick executable. It has two backends, one for CPU emulation (built on Embree), and one for FPGA acceleration (using our custom RTL and driver/SDK stack). The following are the command line options for running glowstick:
Option | Description | Default Value |
|---|---|---|
| Input scene |
|
| Output name |
|
| Render Backend |
|
| Frame width |
|
| Frame height |
|
| Normal select |
|
| Textures on |
|
| Select camera [asset path] |
|
| Override camera position and center |
|
| Camera position |
|
| Camera world-space center of attention |
|
| Camera up direction |
|
| Camera FOV |
|
| Camera horizontal and vertical aperture |
|
| Camera Focus Distance |
|
| Camera fStop |
|
| HDRI image |
|
| HDRI rotation (in degrees) |
|
| Number of iterations |
|
| Number of bounces |
|
| Number of threads |
|
| HDRi Exposure in stops (range: -6.0 to +17.0) |
|
| Automatic HDRi Exposure |
|
| Multiplier value for lights power |
|
| Write out every frame |
|
| Write out every frame |
|
| Sky color RGB values (0 to 255) |
|
| Only load the USD file |
|
| Viewport tuple |
|
| Convert textures into TX files |
|
| Print camera paths and variant paths |
|
| Print usage |
|
| Verbosity: info, debug, warning, or error |
|
| Minimum iterations for adaptive sampling statistics collection |
|
| Adaptive sampling deviation threshold (disabled if |
|
| Device for Intersections (FPGA only) (Same device now used for AS) |
|
| Stream output instead of writing images to file, specify name of AOV |
|
| Server mode |
|
| Final image tailored for compositing by removing the background |
|
| Specify one or more LPEs to render |
|
| Specify maxtripermesh for U50 render |
|
| Silence ray progress by zeroing this |
|
| Output destination path |
|
| Show current SW/HW version. |
|
| Show cycle count data. Set to 2 for more verbose info. |
|
| Show ASIC estimation data. Set to 2 for more verbose info. |
|
Supported Flows
You can easily render scenes created in the following DCCs using the docs below. As Glowstick is in development, there are certain features which are not yet present.