Hacker News new | past | comments | ask | show | jobs | submit login

Something I've been meaning to do for a while is to write an analytic renderer that evaluates the light equation. Basically, it would be a program that takes in analytic geometric data and spits out an equation (or a system of equations) that can be evaluated in Mathematica / Maxima. The runtime complexity would be horrible, but at least it would give mathematically perfect, noiseless results. Or a hybrid approach could work, too (get the equations, do a series approximation, sample the polynomial or whatever else you end up with).

To anyone looking to get into graphics - I strongly recommend writing a toy scanline raytracer - it's a great learning experience.




Unfortunately, ray tracing of general scenes is undecidable: http://www.cs.duke.edu/~reif/paper/tygar/raytracing.pdf


The stochastic raytracing algorithms are "exact" if they're run long enough, right? (I know I've spoken to you and Edward about this stuff at length)

Semirelatedly, do you think the Haskell Diagrams lib with its normals tricks would be a good pedagogical substrate for raytracing for general shapes? Seems like it would allow punting on how surfaces are represented Mebe.


I have a feeling that this is one of those ideas that is going to be far far harder than you think it will be.


So far I've tried doing it on paper for a infinite plane with a single step and uniform lighting. I ended up with a scaled atan(x) as the function of light depending on the distance from the step. I haven't figured out how to handle complex occluding geometry in a nice way.


That's exactly what I mean; the simple sanity check case is easy, but once you start layering on things like complex geometry and surface models and volume data, the problem grows in difficulty absurdly quickly.


I have been working on one and it's not that hard actually.

The most difficult part has been creating the right data model.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: