Page MenuHomePhabricator

Groundwork: How to transform on Curve with Eigen
Closed, CompletedPublic4 Energy Points (d+f*r)



You will need to figure out how to perform matrix transformations on Curves (from anari/geometry.hpp) using Eigen. You can use the existing Anari Renderer to verify your work.

This attempt will ultimately be discarded, not landed! The Differential will exist for reference, but you won't be landing this code to master. Instead, you'll take what you learn here to implement transformations in production code in Anari very soon.

Aim to only take about 2-3 weeks on this task.

Dependencies and Tools

All of the following libraries are already linked to rA, either via rLIB or as system-wide dependencies (see the link "Guide: Building Code" below). Use them as needed, and ensure your implementation is compatible as necessary.

  • Cairo: Vector drawing
  • Eigen: Linear algebra library
  • eventpp: Signals and callbacks
  • PawLIB: Testing, Utilities
  • SDL2: Rendering, hardware layer access
NOTE: Eigen matrices cannot presently be output by IOChannel. This will be addressed later by me in T1270: Channel: Support Eigen Matrices. In the meantime, you can use std::cout if you need to print out an Eigen matrix.


You should work on a fresh branch of Anari (git checkout -B transform to create a branch called transform). While you should still upload your work each day to Differential (arc diff), you'll ultimately be abandoning that revision and reimplementing the production code on another fresh branch.

You do not have to add reviewers to your Differential. We might still provide feedback, but the Differential is not intended to be landed, so it doesn't need formal review.

Add #nobuild and #notest to the Subscribers: section of your Differential when you first create it with arc diff. This will ensure the build system (CI) doesn't try to build your code.

You should get into the habit now of marking your Differential with Plan Changes through the web interface, to indicate that you're still working on it. The only time that you wouldn't mark a Differential as Plan Changes is when you're ready for it to be reviewed for landing.

You may consider asking @imirzali for help getting the rendering working with your code.


D277: Geometry.hpp

Guide: Building Code — Anari

3.13 Matrix Transform on Static Layers


Task Type
Proposed Urgency
g4: Significant
f3: Off-Road
Triage Relativity
Target Completion Date
Apr 19 2020, 12:00 AM
Volatility (Caught At)
Not a Bug
Not a Bug/Unknown

Revisions and Commits

Event Timeline

jcmcdonald triaged this task as p4: Now priority.Apr 7 2020, 11:29 AM
jcmcdonald created this task.
mahussain moved this task from Backlog to Restricted Project Column on the Anari [Project] board.Apr 10 2020, 12:47 PM
mahussain edited projects, added Unknown Object (Project); removed Anari [Project].
jcmcdonald set the point value for this task to 4.Apr 10 2020, 12:51 PM

You need to put No Build [Control] and No Test [Control] as the subscribers for the Differential, not the task, for them to work.

jcmcdonald edited projects, added Anari [Project]; removed Unknown Object (Project).Jun 19 2021, 9:36 AM