Polynomial optics to Arnold. Camera shader with high-order aberrations
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
extra_descriptions
include
maya/ae
releases
src
tests
.gitignore
LICENSE
Makefile
README.md
compile.txt
subdiv_atmosphere_bug.ass

README.md

POTA is an implementation of Sparse high-degree polynomials for wide-angle lenses [2016] for the Arnold renderer. It renders images with high-order aberrations, at a fraction of the cost of tracing rays through lens elements. It is done by pre-calculating fitted polynomials, which serve as a black-box to transform the rays on the sensor to rays on the outer pupil. All credit goes out to the authors of the paper, I only wrote the implementation for Arnold.

Read the full documentation here.

pota_comparison_thinlens_polynomial_optics_zeiss_biotar


Compile instructions:

Base requirement: Arnold >5.0.2.0

OSX:

open makefile     ### change arnold sdk path
mkdir bin
make

Windows

###   using the "x64 native tools command prompt for VS 2017"

cl /LD /I ...\Arnold-5.0.2.0-windows\include /EHsc /O2 pota.cpp /link /LIBPATH:...\Arnold-5.0.2.0-windows\lib ai.lib

Roadmap:

1.4:

  • Calculate accurate infinity focus before lens generation (lentil)
  • Compute focal length before lens generation so I can properly match the lenses (lentil)
  • Fix clipping, not sure why but pota's is closer than the perspective camera by a factor of 10

2.0:

  • add energy-redistribution bidirectional sampling (aov shader)
  • fix nans of double gauss angenieux (energy redistribution)

2.x:

  • bidirectional energy redistribution: check for intersections along P->Lens path
  • bidirectional energy redistribution: come up with better triggering of backtracing, based on sample intensity, distance from focal point, fstop, ..?
  • add support for x and y cylinders for newer anamorphic lenses (lentil)

3.0:

  • remove arnold library dependency to make pota renderer agnostic