I will integrate this into the expression code soon, but until then, here are a few screenshots. I think it turned out pretty alright for 2 days work.
UPDATE: Here is a link to the full source code in C++, and here is the test code with the UI you see in the screenshots. Some details on the implementation follows:
- It uses 2 separate sources of 3D simplex noise, one for the streaks and one for radial perturbation of the streaks.
- It uses 20 random float parameters plus 2 colors to tweak the parameters of the simplexes (3 parameters each) plus tweak the scaling and offset and other "funky hard-coded equations" to to produce irises that kind of looks real, interesting and diverse without carefully selected boundaries.
- Rendering is done in a scale invariant way so that the eye can be scaled up "infinitely" wihtout changing its character.
- Rendering is done in floating point and produces results that go slightly into high dynamic range.
- It uses filmic2 tone mapping to convert HDR back to normal 8-bit ranges.
- The code should be fairly portable, both the Simplex implementation and the rendrer itself should only depend on Qt, and porting it away from Qt should be easy.