Public R&D record / 2026

Roji Research.
Render-oriented
joint interface.
Technical validation.

Roji Research is personal technical R&D by Rabia Rahou into a render-oriented joint interface: a technically connected workflow for large-scale USD scene computation, native rendering, web review and AI-assisted render operations. Private technical validation discussions are now open for DCC providers, render farms, R&D teams and pipeline groups; Roji is not a public release, product beta or download.

Request private validation discussion
Research status and availability

Research status.

Roji Research is personal technical R&D documentation by Rabia Rahou. The work shown here documents technical R&D in USD scene assembly, viewport systems, rendering, look development and image review.

This page is a personal research record and is not presented on behalf of any employer, client, studio or third party. The work was created before current employment and developed independently on personal time.

Roji is not currently offered for public sale, download or public use. Private technical validation discussions are now open with artists, TDs, DCC providers, render farms, R&D teams and pipeline groups evaluating large USD scenes, render memory pressure, lighting workflows, material transfer, AI integration, review loops and image-quality tradeoffs.

Benchmark datasets and outputs are shown only for research and technical validation purposes. No endorsement, sponsorship or affiliation is implied.

Please do not send confidential production files, client material or private datasets in first contact. Contact details sent by email are used only to respond about Roji production-validation research participation and related follow-up; deletion can be requested by email.

Roji Graph research module

Scene assembly & lighting

USD authoring prototype. Manipulator-driven, full per-node provenance, and a compact node model for testing scene-flow ideas.

Research notes →
Shaderverse research module

Audited lookdev

Lookdev graph prototype. OpenPBR-oriented, rendered through the research renderer, exported as MaterialX-style graphs with assignments.

Research notes →
Roji 3D Viewer research module

Hydra viewport, multi-instance

Native C++ Hydra viewport research for heavy USDs. Lazy loading, BBox-on-demand, and one viewer per graph branch.

Research notes →
Roji Render research module

Research path tracer

Research oriented toward native USD rendering at scale: massive scenes, OpenPBR / MaterialX-oriented shading, volumes, AOVs, deep EXR and parity-audited CPU/GPU output.

Research notes →
Roji AI research module

AI-assisted production operator

AI research over readable graph, Shaderverse, USD, render, log and review files: inspect, debug, launch, monitor, optimize, fix and restart work from anywhere.

Research notes ->
Research architecture

The same workflow, on a local machine, a host, a cloud or any device.

The research question is whether scene assembly, manipulation, lookdev, viewport inspection, rendering and AI-assisted operation can share one USD-oriented, human-readable state model while improving measurable outcomes: fewer data conversions, lower memory churn, faster inspection loops and clearer validation records.

The shell is built on JavaScript and TypeScript (Electron + Vite + React) across the UI, the backend and the native scripting runtime, Python for the USD scene-graph layer (Pixar's USD/pxr API, with an in-memory stage cache), native C++ engines for the heavy lifting, and an AI operator layer that reads graph, Shaderverse, USD, render, log and review data.

The shell is split in two on purpose. The human-readable interface can run as an ordinary web surface or as a standalone workstation shell, while the heavy engines (USD, the viewport and the renderer) run separately. The interface holds no engine of its own and never assumes it is on the same machine as them, so the two only need a thin connection between them.

That split sets up the research question: can a full, production-sized workflow be operated remotely? Because the interface and the engines are separate, the engines can run on a local machine, a remote host or a cloud, the interface can be driven from any device, and the same setup can be deployed across all of them. The heavy work stays wherever the engines run; the device only sends commands and receives results. This is studied as a research configuration, not offered as a hosted product or a cloud-render service.

UI / Frontend

Electron + Vite + React, JavaScript & TypeScript

Renderer Core

Native C++, Embree 4 + OptiX 8

Hydra Viewport

UsdImaging + Hydra Storm, native C++

AI Operator Layer

Readable graph, USD, shader, render, log and review context

Interface Link

Thin connection between interface and engines, local or over a network

MULTIPLE USD SCENES Layers - References - Variants - Payloads NATIVE C++ ENGINES UsdImaging - Hydra - Embree - OptiX - OpenEXR Graph Shaders 3D View Render AI JOINT INTERFACE Portable web surface - Electron or browser - any device Engines run on a local machine, a host or a cloud. The interface runs on any device.
Roji Graph research module

USD authoring and provenance research.

This study tests whether assembly, lighting and per-node timeline keys can stay in one live, human-readable USD graph while preserving provenance, reducing state rebuilds and keeping the node model compact enough to evaluate clearly. The graph itself saves to a human-readable JSON format, keeping the scene authoring inspectable on disk.

USD Manipulator provenance study.

The Manipulator experiment combines outliner state, viewport context, attribute editing, timeline context and edit history inside a graph node. It is used to test broad USD attribute editing across geometry, lights, materials, primvars, custom data and authored overrides.

Optimization target: traceable edits. Every override stays traceable to the manipulator that wrote it, making provenance a measurable property of the scene graph.

  • CEL-based selection, from one prim to large scene sets
  • Edits transforms, authored USD attributes, primvars, materials and overrides
  • Per-knob expressions only where procedural control is needed
  • Related edits can be collected, stacked from history, and recovered from the node bin
Manipulator node with outliner, attributes, timeline, and graph canvas Manipulator workspace Outliner, attributes, timeline, viewer controls and graph canvas

Live USD propagation study.

The live-USD experiment measures whether downstream graph state, 3D Viewer inspection and render previews can update from the same USD composition without a required bake step, rebuild button or proprietary cache.

  • All open 3D Viewers refresh together, no manual sync
  • Render previews update when interaction settles
  • References, materials and manipulator edits propagate through the graph

Per-node history across the graph.

Every node keeps its own authoring log: overrides, transforms and attribute changes are recorded against the node that wrote them. The outcome being tested is deterministic recovery of the graph source behind any USD opinion.

Large-USD lazy loading study.

The goal of this research is to open the app and load Moana Island Scene-scale USD in near-real-time inspection mode, without waiting for the whole stage to expand before useful scene data appears.

Lazy-by-default payload streaming opens large USD shots without expanding the whole stage. Scenes over 500 MB switch to streaming mode, anonymous session layers keep roots pristine, and outliner/tree loads can be cancelled while prim-load progress stays visible.

The research target here is interactive stage-opening behavior: inspect the composition, reveal useful renderable prims, and load only the branches needed for review before any render bake/cache path is used.

  • Near-real-time Load Renderables experiment: expose renderable prims quickly on 100k+ prim scenes for inspection without full expansion
  • UsdStage::LoadNone by default, then load only what the shot needs
  • Streaming mode for heavy scenes and multi-GB USDs
  • Cancellable outliner/tree loading for massive hierarchies
  • Prim-load progress bar while payloads, references and branches stream in
  • Force-reload on re-open picks up on-disk edits

Roji never collapses USD. Layers stay layers.

Manipulator overrides and graph operations are authored as USD layers or layer overrides, so the scene stays inspectable and composable. Flattening is optional with USDLive Bake when a delivery needs it.

Pipeline TDs can inspect the whole chain. Composition arcs, layer order and override sources stay visible; no proprietary scene blob hides the actual USD.

  • Trace any opinion to its node, layer and manipulator
  • Preserve composition arcs through the graph
  • Bake a flattened USD layer only on demand
  • Downstream tools receive plain USD
Roji Outliner capture showing a large Moana Island Scene USD hierarchy opened for lazy-loading inspection Large-USD outliner capture Renderable hierarchy inspection without full scene expansion

Render-node placement study.

The Render node experiment tests whether multiple render checkpoints can evaluate different graph states in parallel. Each checkpoint carries per-layer quality settings, its own outliner and its own 2D EXR Viewer so branch-level render behavior can be compared without rewriting the upstream scene.

  • Attach a Render node at any point of the graph, not just the end
  • Run multiple Render nodes in parallel across the same graph
  • Per-layer quality settings (spp, bounces, sampler...) on every Render node
  • Each Render node has its own outliner and attached 2D EXR Viewer
  • Per-layer denoising control (in progress in research builds)
  • Hero + tech + animatic + utility passes, all from one graph
Roji graph showing render nodes placed anywhere in the stream

USD lighting workflow study.

The lighting research tests USD Lux light authoring as structured graph data: create a light with the Creator node, edit it with the Manipulator, key it on the timeline and preserve standard USD attributes.

Lights transform in the 3D Viewer like other scene objects while carrying their USD attributes with them. The outcome being tested is portable, inspectable lighting state that remains plain USD.

Multi-light edits are authored per prim, so grouped changes can remain inspectable and USD-native instead of becoming opaque batch operations.

Optimization target: coherent lighting data. IES, cookies, light filters, emissive meshes, portals and lightgroups are tested inside the same USD lighting path, with labeled/selectable lights in the 3D Viewer and Manipulator-based inspection.

  • Audited USD Lux types: Distant, Dome, Sphere, Disk, Rect, Cylinder, Spot, Portal
  • IES profiles, parsed natively (IESNA LM-63)
  • Cookies and gobos: texture-projected light shaping on any light
  • Barn doors via standard light:filters USD relationships
  • Color temperature (Kelvin) with accurate blackbody conversion
  • Lightgroups baked in: for downstream relight in the 2D Viewer and HTML stats
  • Emissive meshes auto-promoted to importance-sampled lights, no manual conversion
  • Roji-native object light multiplier: CEL-targeted receiver and refraction exposure controls for lifting selected objects without relighting the whole shot
  • Portal lights for efficient dome / interior sampling
Roji lighting workflow with created USD lights and manipulator controls

Light filters: viewport guide, render, delta

Viewport guide shapes, final renders and delta proofs are compared as technical validation captures.

Runs on any workstation, in any browser.

The graph runs on an ordinary workstation with minimal configuration, and the same interface opens in any standards-compliant browser. The native engines (assembly, the path tracers, the USD runtime) stay on the workstation, while the interface is served locally or, over a network, to another machine or device. Nothing about the workflow is bound to the screen it happens to be drawn on.

The same study also asks where that workstation can sit. Because the interface and the compute are decoupled, the machine doing the work can be a desk under the artist, a shared host, or a rented instance, and the device reviewing it can be a laptop, a tablet or a phone on a different network entirely.

Question under test: location independence. Whether one full, production-sized USD workflow can be authored, rendered and reviewed remotely without a separate, cut-down "remote" mode running alongside the real one.

  • One interface, whether it is opened on the workstation or a networked device
  • Native engines stay local, so only the interface is transported, not the scene
  • A single workflow, rather than a desktop build and a reduced remote build
  • Deployment surface ranges from a single local machine to a shared host or cloud instance
Roji running in a browser tab The whole workflow in a standard browser, native engines stay on the workstation

Compact node-model study.

The graph research tests whether a small set of focused node types can represent the main scene-computation stages while keeping behavior auditable and easier to validate.

Assembler

Composes USD prims, references, payloads and variants into the working scene graph.

Render

Final-pixel output to Roji Render. CPU/GPU backend, AOVs, frame ranges, lightgroups.

Manipulator

Interactive USD attribute editor. Per-instance edit history with full provenance.

TypeScript

Pass-through script node for graph-level transforms. It carries TypeScript text, declared USD override layers and outliner masks downstream.

Outliner

Per-node, not per-app. Each Outliner shows the live composed USD at its position in the graph. Filter by type, kind, purpose, activation.

Creator

Spawns USD prims directly: meshes, primitives, lights, cameras, xforms...

Merge

Combines two USD streams into one composition with explicit override semantics.

Group

Collapses a sub-graph into a reusable node, with exposed input/output sockets.

Super Group

Loads a complete graph as a live sub-graph. Reuse shot templates, keep the source graph connected, and override either side when the shot needs it.

Shaderverse Read

Live-links a Shaderverse lookdev result into the graph. Edit material → see in viewport.

USDLive Bake

Bakes the live composed state to a flattened USD layer when needed. For deliverables, pipeline requests and freezing trees.

Wannabe

Custom-node experiment for testing additional graph logic without changing the core node set.

Shaderverse research module

Lookdev graph and material-transfer research.

The Shaderverse study evaluates material graph authoring, OpenPBR-oriented parameter mapping, rendered preview behavior and USD/MaterialX-style package transfer. The research is oriented toward readable material data, repeatable quality checks and fewer shader-conversion steps.

OpenPBR-oriented closure validation.

Shaderverse targets the OpenPBR surface model and the audited Roji Render closure set: layered base, specular, coat, fuzz, transmission, subsurface, hair, volume and displacement outputs, exposed as structured material parameters inside the node graph.

  • OpenPBR base + specular + coat + fuzz + transmission lobes
  • Subsurface scattering with Burley & random-walk profiles
  • Marschner hair / fur with melanin-driven colour
  • Anisotropic micro-facets with full tangent control
  • Transmission, IOR and attenuation controls for glass, water and clear materials
Shaderverse OpenPBR lookdev render Shaderverse hero render OpenPBR sphere on lookdev rig

Material graph inspection.

The material-graph prototype combines outliner, timeline, previews, graph canvas and parameters to test whether material edits can be inspected through visible rendered feedback instead of only through node plumbing.

Image nodes support PNG, JPG, EXR, HDR, TIFF, Pixar/RenderMan .tex/.tx, UDIMs and frame sequences. RTEX is Roji's sidecar texture cache: it can be built ahead of time, and the renderer can regenerate missing or stale caches while materials stay linked to the source textures.

  • Texture & UV utilities: triplanar, hex-tiled, procedural
  • Timeline-driven texture sequences with realtime scrub/playback, frame range, offset and loop controls
  • Visual node feedback for image, utility, material, displacement and output stages
  • Roji Texture (RTEX): .rtex sidecar cache with pre-baked mips, reused when fresh
  • Ptex .ptex/.ptx and Pixar/RenderMan .tex/.tx texture input support
  • Procedurals: noise, fractal, cellular, worley, flakes, curvature
  • Math & logic: vectors, ramps, masks, channel ops
  • Layering: material blend, displacement, coat-over-base
  • Live material thumbnails rendered through Roji Render
  • CPU/GPU preview swap and quality presets for material QC
  • Per-material displacement subdivision settings travel with the package
  • Output: surface, displacement, volume
Shaderverse material graph with timeline, live material thumbnail, node previews, graph canvas and parameter panel Shaderverse material editor Timeline, live material thumbnail, visual node previews and parameter editing in one workspace

MaterialX wrapped in USD. Assignments travel with it.

Shaderverse authors real MaterialX/OpenPBR shader nodes as USD Shade prims inside USD look layers, so the material graph, prim-binding assignments, texture references and primvar requirements travel through the pipeline as USD. Roji keeps the package manifest, preview metadata and binding data readable so MaterialX-aware USD tools can inspect the result without a proprietary blob.

  • MaterialX node identifiers authored on USD Shader prims
  • USD material and binding layers carry prim-binding assignments
  • Texture references resolved relative or absolute
  • Material-authored Shaderverse AOV outputs travel with the package; Roji Render scans connected upstream materials and writes them as EXR AOV layers or sidecars
  • Designed for handoff to MaterialX-aware USD/DCC pipelines
  • Import and export standard MaterialX (.mtlx) files
  • Live-link to Roji Graph via Shaderverse Read node
  • Standalone package export for material-transfer validation
Shaderverse package export graph with six materials connected to Material Assign and Shaderverse Out Shaderverse package export Six materials connected to Material Assign and Shaderverse Out
Roji 3D Viewer research module

Hydra viewport research: multi-instance, capped, live.

The viewport research measures how multiple native C++ USD/Hydra viewers behave when attached to different graph branches. The focus is on heavy-USD inspection, memory caps, BBox proxy behavior and hot-reload updates without rebuilding the full scene.

Roji WebHydra keeps USD/Hydra on the workstation and streams the native viewport into Vite/HTML, not the scene data. The current path sends GPU H.264 over WebSocket from the Hydra backbuffer using CUDA/OpenGL interop and NVENC; browser controls send camera, frame, draw-mode, selection and overlay deltas back to the same session. Current tests reach around 40 fps.

Viewport budget behavior.

The budget study tests whether heavy USD branches can be inspected cautiously. Geometry above the active budget stays as a BBox proxy until promoted, allowing large scene branches to be evaluated without pulling the whole scene into full detail at once.

  • Open heavy nodes without forcing full-detail expansion
  • Control instance density in the viewport for better layout-aware decisions
  • Above-budget geometry stays as BBox proxy until promoted
  • Promote selected proxies to real geometry on demand
  • Works alongside the viewer's RAM and VRAM caps
Moana Island Scene loaded live in Roji's 3D Viewer with labeled USD lights and palms 3D Viewer technical benchmark capture Technical benchmark only: Moana Island Scene capture, 71 GB USD, live on Ryzen 7 7700 (8 cores / 16 threads, 3.8 GHz base), 32 GB RAM, NVIDIA GeForce RTX 4060 (8 GB VRAM). See the Render section license notice.

Shader-aware, texture-aware, capped.

The viewer can run as a scene-aware viewport, not a blind wireframe preview. It keeps USD materials and textures visible when needed, while draw modes and memory caps keep heavy shots bounded.

  • Solid, texture and wire draw modes for inspection comparisons
  • Shader-aware viewport feedback for material and lighting context
  • Texture-aware loading so heavy assets stay readable in the shot
  • RAM and VRAM caps visible in the viewer, with flush controls for long sessions
Roji 3D Viewer showing shader-aware textured viewport mode with RAM and VRAM caps Shader-aware 3D Viewer Texture mode with capped RAM and VRAM usage visible in the viewport

Multi-viewer branch comparison.

The multi-viewer study tests whether different graph branches can maintain separate 3D Viewer instances showing the live composed scene state at that point in the graph. Because timeline state is per node, detached USD flows can be compared without forcing one global viewer state.

  • Compare multiple graph branches side-by-side
  • Each node has its own timeline, so one USD flow can play while another branch stays editable
  • Each branch can keep its own camera, shading mode, selection and memory behavior
  • Peer viewer model constrained by hardware budget rather than one global viewport state
Multiple live 3D viewers Play one USD flow while working on another branch
Roji Render research module

Render computation study: USD render computation, memory budgets and backend parity.

Moana Island Scene environment denoised from Roji Render multilayer EXR with Web EXR sunlight and ocean-light beautification mix baked into the beauty preview

Technical benchmark only. This public scene dataset is shown for research benchmarking; it is not promotional use, and no endorsement, sponsorship or affiliation is implied.

License and non-endorsement notice

License for Moana Island Scene. Copyright 2017-2022 Disney Enterprises, Inc. All rights reserved.

The Moana Island Scene is shown here only as a research and technical benchmark dataset. The scene and its rendered output are identified only as the Moana Island Scene. No endorsement, sponsorship, affiliation or approval by the rights holders or contributors is implied.

Redistribution and use of this scene description, with or without modification, are permitted provided that the following conditions are met:

  1. The scene description or any part of it may only be used for research or software development (including benchmarking) purposes.
  2. Redistributions of this scene description or any part of it must include the above copyright notice, this list of conditions and the following disclaimer.
  3. The names "Disney", "Walt Disney Pictures", "Walt Disney Animation Studios" or the names of its contributors may NOT be used to promote or imply endorsement, sponsorship or affiliation with products developed or tested using this scene description or benchmarking results from it, without prior written permission from Walt Disney Pictures.
  4. The name "Moana" may NOT be used except as required to identify the scene description, and the scene description and its output may only be referred to as the "Moana Island Scene".

Disclaimer. THIS SCENE DESCRIPTION IS PROVIDED BY WALT DISNEY PICTURES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL WALT DISNEY PICTURES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES, INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION, HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT, INCLUDING NEGLIGENCE OR OTHERWISE, ARISING IN ANY WAY OUT OF THE USE OF THIS SCENE DESCRIPTION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Workstation and render run

Denoised beauty preview from a one-take Roji Render run on Ryzen 7 7700, 8 cores / 16 threads, 3.8 GHz base; 64 GB RAM; NVIDIA GeForce RTX 4060, 8 GB VRAM; 55 GB render memory budget; 11h 6m 51s render time; 5m 22s Roji H.U.G.E. bake time.

Caustics, denoise and sampling

Roji Render caustics / caustics AOV enabled, with caustic computation through transmission rays intersecting the RenderMan PxrVolume path. Denoise blend strength 0.5. Adaptive sampling used 8 min spp, 192 max spp, 0.005 variance threshold, 4-sample adaptive checks, low-discrepancy sampler, tent pixel filter and progressive preview.

Path settings

1 direct light sample, 2 emissive light samples, 5 global bounces, opacity depth 80, Russian roulette from bounce 4 with 0.05 minimum probability, firefly clamp 0, roughen-after bounce 2 at 0.15 minimum roughness and 16 px tiles.

Relight note

Differing from the Disney original USD: sunlight /island/lights/sun_quad_llc exposure 9.8 -> 10.65; ocean-linked light /island/lights/en_SUN_refract mix 1.0x -> 2.0x.

EXR and AOV payload

The original 32-bit float multilayer EXR was inspected at 2048 x 858 with 196 float channels across 67 named AOV layers: 43 non-light layers plus 24 lightgroup RGB AOV layers.

Roji Render validates a native USD render path that keeps scene structure, shader inputs, lights, volumes, AOV policy and render settings readable through final EXR. The Moana Island Scene tests the hard case: Roji H.U.G.E., short for Hyper-Scale USD Geometry Engine, bakes the large USD payload into a granular cache, then Roji Render runs it under a fixed workstation memory budget with sample-quality, AOV and Roji Web EXR review checks. These notes are validation records, not product availability claims.

Large-scene benchmark methodology.

The Roji H.U.G.E. benchmark evaluates a granular bake/cache format for large USD compositions under a fixed workstation memory budget. For this test, the Moana Island Scene is used as a public research benchmark dataset. The scene was baked into the Roji H.U.G.E. granular format in 5m 22s on a single workstation, then rendered in one take through Roji Render without manually splitting or simplifying the dataset before the render. The test records bake time, render memory behavior, shader-input transfer, scene-structure preservation, AOV payload size and final 2K output behavior.

  • Scene structure under test: references, layered overrides, instancing, procedural payloads, purpose and visibility
  • Large-scale USD bake under test: Moana Island Scene to Roji H.U.G.E. granular format in 5m 22s on a single workstation
  • Sampling quality under test: adaptive 8 min spp / 192 max spp, average 156.429 spp, 0.005 variance threshold, adaptive check interval 4, low-discrepancy sampler and tent antialiasing pixel filter
  • Path quality under test: 1 direct light sample, 2 emissive light samples, 5 global bounces, opacity depth 80, Russian roulette from bounce 4 at 0.05 minimum probability, firefly clamp 0 and roughen-after bounce 2 at 0.15 minimum roughness
  • Data containers under test: Roji Clusters, Roji Blocks (.rblk) and Roji Objects (.robj)
  • Shader-input transfer under test: RenderMan PxrSurface, PxrVolume, UsdPreviewSurface, MaterialX standard_surface and OpenPBR inputs
  • Caustic computation check: transmission-ray contribution in large scale scene
  • Texture-input transfer under test: image textures, UDIMs, frame sequences, .tex/.tx and separate native Ptex support for .ptex/.ptx
  • Closure coverage under test: OpenPBR / MaterialX-oriented surface, anisotropic GGX, Walter BTDF, dispersion, dielectric coat, SSS, hair, fuzz and thin film
  • AOV coverage under test: 196 EXR channels across 67 named layers in the benchmark; 43 non-light layers and 24 lightgroup RGB AOV layers, made from 23 numbered lightgroup buckets plus the renderer Other bucket
  • Benchmark AOV layers include beauty, alpha, albedo, normal, depth, object-id, caustics, diffuse/specular direct and indirect, transmission, emission, 30 custom material/geometry layers and lightgroup01-15, lightgroup17-24 plus Other
  • Backend validation target: Embree 4 CPU path and OptiX 8 GPU path compared through parity tests; the Moana Island Scene benchmark render shown here was rendered on the CPU path only.
  • Operation under test: AI-assisted launch of headless renders, render-spec tweaks, light linking, light and shader tweaking, and quality settings, with progress monitoring, review images and render logs exposed through a Cloudflare Tunnel review path. All operations were performed from an iPhone.
CPU/GPU parity validation record: 99.01% in a strict stress-test environment

The parity study compares two explicit render backends: CPU layers through Embree 4 and GPU layers through OptiX 8. The test keeps the paths separate inside each layer so differences can be attributed to backend behavior rather than a mixed execution path.

The validation target is not a commercial performance claim. It is a repeatable comparison of scene, shader, lighting and AOV tests so the CPU and GPU paths can be inspected under the same input conditions, and so the broader research can test whether Roji's graph, render, farm, review and log surfaces can remain coherent in a mixed CPU/GPU farm environment.

The parity gallery records test passes across lights, OpenPBR shaders, camera FX, AOV/LPE, volumes and materials; one material is marked CHECK by the stricter public gate.

Open CPU/GPU parity validation gallery ->

Per-CEL sample-budget experiment.

The per-object/CEL sampling experiment tests whether local sample ceilings, minimum samples, adaptive noise targets and path-bounce depth can be assigned to selected surfaces without raising the global ray budget for the whole frame. The research goal is to measure image-quality distribution and render-cost behavior across priority and background surfaces.

  • Object or CEL selection can receive a local render-quality budget
  • Shader categories under test include diffuse, glass, metal, SSS, hair, volume and custom materials
  • Budget variables include max samples, minimum samples, pixel-variance target and bounce depth
  • Object-id sidecar verifies which camera-visible surfaces received each budget assignment
  • Measured outcome: whether priority surfaces improve without raising global samples for all surfaces
Roji per-CEL render quality proof card showing low-sample and high-sample diffuse objects with an object-hit budget map

Guided denoise validation.

Roji Render tests Intel Open Image Denoise on HDR beauty and AOV output, guided by albedo and normal buffers. The research measures post-render denoise behavior while collecting required guide buffers, even if they were not requested as visible AOVs.

Denoise can be evaluated at full strength or blended back toward the raw render, so fine grain and texture can be compared against over-smoothed output. The benchmark preview shown above uses denoise blend strength 0.5. Post-render denoise also writes denoised EXR siblings for review while leaving the original render untouched.

If a guide is missing or mismatched, Roji falls back to color-only denoise. If denoise itself fails, the render keeps the raw noisy image rather than failing the frame.

Roji Web EXR: the same 2D Viewer contract, local and online.

The workstation app still includes the local Roji 2D Viewer for direct EXR review. Roji Web EXR is the Vite and HTML version of that same review contract: catalog, OCIO display/view, exposure, alpha, AOV inspection, deep comp and light mixer are meant to behave identically whether a supervisor opens the workstation 2D Viewer or reviews through a browser link.

Roji Web EXR is not a streamed Windows viewer or a remote desktop window. The workstation reads the OpenEXR, applies the selected OCIO display/view, extracts the requested AOV or light layer, and serves a browser-native preview image so the same render can be inspected through a normal web link.

The browser receives color-managed review frames derived from EXR data, so very large renders remain practical online while the source multilayer EXR stays beside the native review path. A catalog can hold many heavy EXRs while the web UI asks for the active render, active AOV, exposure, alpha state, deep view and light-mix result it needs.

  • OpenEXR stays on the workstation; the web viewer requests OCIO-transformed 16-bit PNG previews per render, AOV, alpha mode and exposure
  • Catalog review keeps large EXR histories usable online through active review state, controls and browser-ready frames
  • AOV inspection exposes beauty, utility, lighting, custom material outputs, deep/meta views and lightgroup review from the same render
  • Lightgroup relight can mix embedded light AOVs in preview space without starting a new render
  • Deep comp research keeps deep layers comped inside the render review path, so final shot checks can happen without leaving Roji for a third-party comp app or rerendering just to inspect the built shot
Roji Web EXR 2D Viewer with render catalog, denoised Moana Island Scene beauty preview, alpha control, and per-lightgroup relight sliders Roji Web EXR 2D Viewer Browser review surface for EXR catalog, AOV inspection, alpha state and lightgroup relight.

Portable HTML stats and relight validation.

Each test render can write a self-contained *_render_stats.html file. The light mixer works because Roji embeds the rendered lightgroup AOVs straight into that HTML: each lightgroup is stored as compact encoded RGB, the browser decodes it in JavaScript, adds the groups together in a canvas, and redraws the result live as values change.

The validation target is portability: the file runs on standard browser tech alone.

  • HTML for the report and card layout
  • JavaScript decodes the embedded lightgroup buffers
  • Canvas 2D draws the mixed image
  • Base64-embedded AOV payloads so the file travels alone
  • Linear-light math so lightgroups add correctly
  • Embedded OCIO display/view LUT for the same ACES/sRGB view on iPad, phone or desktop

The relight round-trip is also under test: Export Mix writes a small JSON of lightgroup values that can be loaded back into the graph as a new Manipulator, leaving upstream and downstream graph state untouched.

Roji Render Diagnostics stats HTML: render settings, interactive Light Mix Preview of the Moana Island Scene render, and per-lightgroup sliders Render diagnostics: lightgroup mix validation Per-lightgroup values re-composite the frame in the browser for portability testing.
Roji AI - Human-readable workflow layer

Researching AI agency over a readable workflow. End to end.

The AI research focus is whether an agent can operate the same documented workflow an artist or TD can inspect: graph state, Shaderverse packages, USD layers, MaterialX looks, renderer commands, farm logs, render stats and review notes without hidden binary project containers. The goal is to help artists move through technical blockers that interrupt their best work, so they spend less time repairing broken pipeline pieces and more time making artistic choices.

Generative AI position. The research treats generative AI as part of the editable 3D scene-building process, not as a final image that replaces the scene. The target is AI agency over human-readable workflow data: Roji graph and Shaderverse JSON (.rj/.sv), USD ASCII layers (.usda), MaterialX (.mtlx), shader source (.osl, .glsl, .glslfx, .mdl), manifests, logs and review notes, so generated help stays connected to renderable structure and reviewable decisions.

Roji Graph workflow with AI Assist selecting a render node from a live node graph Context evaluation Readable graph context becomes AI working context
Roji central log with AI Log Analyst explaining a render displacement issue Log triage evaluation Render logs stay visible while AI explains and routes fixes

Scene TD Research

Inspect live USD and .usda layers, broken references, prim paths, payloads, variants and graph provenance, then propose readable patches instead of opaque scene edits.

Research evaluation

Render TD Research

Research focus: test whether Codex can run a scene from a phone, make scene and render adjustments, submit the job, monitor progress, flag stalls, and tell the artist when the render is ready for review.

Research evaluation

Shader TD Research

Research focus: help artists bypass technical issues, building Shaderverse, MaterialX and OpenPBR-oriented looks from prompts or image references while keeping node graphs, shader source, AOVs and assignments inspectable.

Research evaluation

Lighting TD Research

Research focus: turn artist conversation into USD Lux rigs, lightgroups, relight controls and render comparisons while keeping every parameter and layer visible for approval.

Concept evaluation

Pipeline TD Research

Research focus: diff graph versions, validate manifests, path maps, render stats and farm submit files, then produce reviewable fixes or TypeScript node scripts with traceable intent.

Research evaluation

Review TD Research

Research focus: use the 2D Viewer and render stats to compare frames, flag fireflies, missing textures, color-space issues, camera mismatches and failed AOV or lightgroup output.

Concept evaluation
Army-of-TDs research framing. The research asks what agency is practical when task-specific AI TDs can debug loads, build shaders from image references, assemble lighting rigs through conversation, launch renders, monitor farm jobs, optimize failures, fix files, restart work and notify artists when output is ready for review. AI output is treated as a reviewable operator hypothesis over readable Roji data, not an authority over the shot; every file, command, log and review record must stay inspectable. These notes do not describe public availability, release scope or a shipping commitment. Current experiments run against the OpenAI API.
Questions

FAQ

What's the "joint interface"?

One Electron shell hosts five core research modules: Roji Graph, Shaderverse, the 3D Viewer, Roji Render's setup surfaces, and Roji AI as the operator layer over readable graph, USD, shader, render and log data. The experiment tests whether all of this can share UI conventions, scene state and technical context without turning each step into a separate handoff.

What's the stack?

JavaScript & TypeScript across the UI, the backend and the native scripting runtime (Electron + Vite + React), Python for the USD scene-graph layer (Pixar's USD/pxr API: composing stages, reading and authoring prims and attributes, with an in-memory stage cache), and native C++ for the rendering core (Embree + OptiX), the Hydra viewport (USD + Hydra Storm), and the EXR viewer (OpenEXR + OCIO 2). JS and TypeScript drive the interaction and scripting, Python composes and authors the USD scene, and C++ handles the pixels.

Can the workflow run remotely or on different devices?

It is a research question. The interface is a web layer kept separate from the native engines, so the same interface can run in an ordinary browser on any device while the engines run on a local machine, a remote host or a cloud. The heavy compute stays wherever the engines run; the device sends commands and receives results. Roji Web EXR and Roji WebHydra are the implementation studies for heavy workflow data transfer online: full EXR, USD, texture and render data stay close to the native engines, while the browser receives viewer frames, controls, summaries and review state. Roji Render can also run fully headless from the command line, and AI-accessible control of the same pipeline is under test. This is studied as a research configuration, not offered as a hosted product or a cloud-render service.

What is being researched in per-node history?

USD has layers, sublayers and session layers. They track authorship at the layer level. Roji's provenance experiment records which graph node wrote an authored opinion, so an overridden attribute can be traced back to the node that produced it. The goal is deterministic technical lineage stored with the scene, not just held in the app.

Why put the relight in an HTML stats file?

The research started as a review function for a running render: a supervisor could receive the validation file through email or Teams, open it on an authenticated device, and inspect the render without needing access to the render workstation. From there, the stats file developed into a richer single-file dashboard. Per-lightgroup AOVs are embedded as image data, sliders re-composite the frame in the browser, and additional diagnostics can travel with the same file. No plugin, install or server upload is required for the validation file.

Is Roji a replacement for existing DCC tools?

No. Roji is presented here as public R&D documentation, not as a commercial replacement for Houdini Solaris, Katana, Maya, Blender or any other DCC tool, and not a replacement for RenderMan, Arnold, Karma or any other rendering engine. The research explores a different integration model: USD scene authoring, lookdev, viewport inspection, rendering and review sharing one technical workspace.

What is Roji Render validating?

Roji Render is being tested against production-scale USD scenes, including public benchmark datasets, on ordinary artist workstations where many pipelines would split, cache or stage data before final rendering.

The research also tests whether graph authoring, CELs, previews, AOVs and final frames can run through one render path rather than a separate host integration.

It also studies CPU/GPU parity validation and the granularity and range of rendering complexity, so a simple scene and a large-scale scene converge on the same render process. The larger research goal is whether the whole system can live in a CPU/GPU farm environment end to end: readable graph inputs, headless render commands, farm logs, final EXRs, Roji Web EXR review and traceable fixes.

What is Shaderverse validating?

Shaderverse tests shader authoring and material-transfer behavior: BSDF graphs, OpenPBR-oriented parameters, MaterialX-style exports, package manifests and assignment metadata that can be inspected by USD-aware tools in a human-readable environment.

Does the research include real-time or game-style material work?

Yes, as a research direction. Shaderverse includes early tests around game-style shader graphs, and Roji Render is used to compare CPU and GPU paths against the same scene, shader, lighting and AOV tests.

Is AI rendering or video generation part of the research?

Yes, as a research question. The position behind Roji is that generative AI should belong inside the 3D scene-building and validation process, not only at the end as a final generated image. Current tests evaluate whether control passes, depth, motion guides and structured scene data can be compared against generation workflows while keeping renderer context explicit, and whether generative AI can be integrated into a spatial render through the path tracer.

What about render farm support?

Farm support is a research and validation area. Roji Render can run headless in research tests, and the work is exploring command-line rendering plus submitter concepts for Deadline, Tractor and OpenCue-style environments, with AI-assisted data monitoring and wrangling. The CPU/GPU parity research is tied to this: the target is an end-to-end farm workflow where CPU and GPU jobs can be compared, reviewed and debugged without losing the human-readable source of the shot.

Is Roji available or priced?

Roji is not currently offered for public sale, download or public use, and no pricing or release commitment is being announced on this site. Private technical validation discussions are now open for DCC providers, render farms, R&D teams and pipeline groups evaluating the research direction.

What interoperability is being explored?

The research uses plain USD scene data, MaterialX-oriented shader graphs, standard EXR outputs and standard AOV naming where possible. Round-trip behavior with Houdini, Maya USD, Blender USD and Omniverse-style workflows remains a technical validation area.

About me

Lighting and rendering is the craft I keep coming back to.

Lighting and rendering is the part of the craft I fell in love with: the moment a shot stops being geometry and becomes an image with feeling. I have spent my career chasing that across film, games and animation, supervising lighting, rendering and compositing at studios including MPC and Square-Enix, across industry-recognized work in feature animation, games and visual effects.

I am building Roji as research into computational visual workflows: how scene data, lighting, materials, renders and review images can stay technically connected for better outcomes, clearer validation and more efficient optimization loops. The AI layer explores whether technical blockers can be surfaced, explained and routed faster, so artists are not forced to spend their focus fixing broken parts instead of making artistic choices.

Rabia Rahou, personal technical R&D

LinkedIn profile

Acknowledgements

Standing on the shoulders of giants.

This research builds on decades of open-source and freely shared work from the film and graphics industry. My thanks to the studios, foundations and teams who keep advancing that work in the open, so research prototypes like this can exist at all.

Pixar

OpenUSD, Hydra and Hydra Storm, OpenSubdiv

Industrial Light & Magic / Lucasfilm

OpenEXR, Imath, MaterialX

Public scene datasets

Moana Island Scene used as a research and technical benchmark; see the license note above.

Sony Pictures Imageworks

OpenColorIO (OCIO)

DreamWorks Animation

OpenVDB

Academy Software Foundation

OpenEXR, OCIO, OpenVDB, MaterialX, OpenPBR and more

Alliance for OpenUSD

OpenUSD standardization and interoperability

Academy of Motion Picture Arts & Sciences

ACES color system

Intel

Embree, oneTBB

NVIDIA

NanoVDB, plus OptiX and CUDA for the GPU render path (free SDKs)

Adobe & Autodesk

Joint OpenPBR shading model

Khronos Group

OpenGL

Meta

React, Zstandard

OpenJS Foundation & the JS community

Electron, Node.js, Vite, React Flow, CodeMirror

Microsoft

TypeScript

Python Software Foundation

Python

Roji has been developed over multiple years as independent technical R&D. I am grateful to colleagues and peers who gave feedback on workflows, validation cases and production constraints. AI coding assistants, including Codex and Claude Code, were used during development as implementation and debugging tools under human direction.

Source-code footprint: about 316,485 physical source lines across the app, renderer, viewers and tools. Main language breakdown: JavaScript 144,439; C++ 78,864; TypeScript 55,516; C/C++ headers 15,342; Python 13,433; CUDA 7,391; Electron HTML windows 1,044; CSS 209; C# 160.

...and the many open-source libraries (zlib, libtiff, GLFW, yaml-cpp, libdeflate and more) that quietly make it all work. Names and trademarks belong to their respective owners; credits are factual acknowledgements only and do not imply endorsement, sponsorship or affiliation.

Under the hood

Research specs.

Focused implementation notes for Roji Render and Shaderverse shader experiments.

Research questions ->

Scene format

USD 24.05

Pixar OpenUSD, full composition stack

Shading

OpenPBR

MaterialX 1.39-oriented, parity-audited subset

UI / shell

React + Vite

Web interface, runs in any browser. Electron is the desktop host. JavaScript & TypeScript

Render core

Native C++

Embree 4 (CPU) / OptiX 8 (GPU)

Hydra viewport

Native C++ / Roji WebHydra

UsdImaging + Hydra Storm. GPU H.264 WebSocket stream from native backbuffer.

Color

OCIO 2

ACES 2.0 ready, custom configs. Color-managed previews transfer online for Roji Web EXR and review links.

Output

EXR / Roji Web EXR

OpenEXR with ZIPS compression. Per-light AOVs, deep, cryptomatte; online review through Roji Web EXR.

Stats

Portable HTML

Single-file render stats, preview and relight, any browser

Research targets

Win / Linux

macOS remains a future research target

Farm validation

Headless

Deadline, Tractor and OpenCue-style submitter concepts under test