Glowstick

Glowstick

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.

Glowstick runs on Lightning. Zeus (GPU) contains Lightning (PT core).

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

Option

Description

Default Value

-i, --input arg

Input scene

 

-o, --output arg

Output name

 

-b, --backend arg

Render Backend

./libbolt_fpga_backend.so

-w, --width arg

Frame width

640

-h, --height arg

Frame height

480

-n, --normals arg

Normal select

1

-x, --texture arg

Textures on

1

--camera arg

Select camera [asset path]

 

--override arg

Override camera position and center

0

-p, --position arg

Camera position

3,3,0

-c, --center arg

Camera world-space center of attention

0,0,0

-u, --up arg

Camera up direction

0,1,0

-f, --fov arg

Camera FOV

0

--aperture arg

Camera horizontal and vertical aperture

0,0

--distance arg

Camera Focus Distance

-1

--stops arg

Camera fStop

-1

--hdri arg

HDRI image

 

--bgrotation arg

HDRI rotation (in degrees)

0

--iters arg

Number of iterations

30

--bounces arg

Number of bounces

6

-t, --threads arg

Number of threads

12

--ev arg

HDRi Exposure in stops (range: -6.0 to +17.0)

0

--autoev arg

Automatic HDRi Exposure

0

--lightmul arg

Multiplier value for lights power

1

--debug arg

Write out every frame

0

--aovs arg

Write out every frame

0

--sky arg

Sky color RGB values (0 to 255)

131,200,228

--loadonly arg

Only load the USD file

0

-v, --viewport arg

Viewport tuple

0,0,-1,-1

--maketx arg

Convert textures into TX files

0

--inspect arg

Print camera paths and variant paths

0

--help

Print usage

 

--verbosity arg

Verbosity: info, debug, warning, or error

 

--minsamples arg

Minimum iterations for adaptive sampling statistics collection

10

-e, --error arg

Adaptive sampling deviation threshold (disabled if < 0)

-1

--devi arg

Device for Intersections (FPGA only) (Same device now used for AS)

1

--transmit arg

Stream output instead of writing images to file, specify name of AOV

 

--server arg

Server mode

0

--alphacolor arg

Final image tailored for compositing by removing the background

0

--lpe arg

Specify one or more LPEs to render

 

-m, --tripermesh arg

Specify maxtripermesh for U50 render

4096

--progress arg

Silence ray progress by zeroing this

1

--dest arg

Output destination path

""

--version arg

Show current SW/HW version.

0

--cycles arg

Show cycle count data. Set to 2 for more verbose info.

0

--asic arg

Show ASIC estimation data. Set to 2 for more verbose info.

0

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.

https://bolt-graphics.atlassian.net/wiki/spaces/EAP/pages/311361537/Blender+to+Glowstick?atlOrigin=eyJpIjoiY2UwMTkyYWRkNjNjNDFmODliOTA1MTBkYWUzMzJlNTkiLCJwIjoiYyJ9

https://bolt-graphics.atlassian.net/wiki/spaces/EAP/pages/329711646/Houdini+to+Glowstick?atlOrigin=eyJpIjoiNDI4NmY1ODcyYTY4NDI5ZWExZTc2ZDdmNWZhN2U1YTciLCJwIjoiYyJ9

https://bolt-graphics.atlassian.net/wiki/spaces/EAP/pages/310181889/3ds+Max+to+Glowstick?atlOrigin=eyJpIjoiMDM0NzJiN2ZmNDFhNDY0OGIxNTBlYjMyNTAwNGMwMjQiLCJwIjoiYyJ9

https://bolt-graphics.atlassian.net/wiki/spaces/EAP/pages/310378497/USD+Composer+to+Glowstick?atlOrigin=eyJpIjoiZDkyZjJlMWFkN2NhNGU5YWI1NmQ3NDc5MGFkZjE5NzciLCJwIjoiYyJ9