Programming
“Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves.”
(Alan Kay)

PROGRAMMING

I would like to share here some of my code and informations in the hope they can help someone. Knowledge disclosure is important in every field and I admit that without freely available help I would have never been a programmer. Lukily, Internet is a great source of inspiration for every programmer in dire need of help with a problem: tutorials, papers, forums and free books are everywhere and though I don't have much to add, I'm gonna offer what I can.
QuarkLight
Ever wanted to know how Hollywood does those amazing special effects? I do since I saw Jurassic Park. I have spent part of my spare time looking for answers by learning about Raytracing and CG in general. My efforts ended up in this raytracer. It is (and most probably will be forever) a Work In Progress project. Currently the code is far from being in a state suitable for distribution, and this is the only reason why I don't release it. Should this project ever reach an aceptable quality level, I will most certainly open source it.

Currently Implemented Features:
-Support for triangle meshes, spheres and planes.
-Bounding Interval Hierarchy Acceleration structure
-Multiple texture types: images, constant color, checkboard, binary operator, scale. Textures can be made by scalars, vectors or colors
-Reflection, Transmission (Beer and Fresnel supported), and Lambert BRDFs. Phong no longer supported due to the new material system (I still have to implement it for the new system)
-Pinhole and Thin Lens (with Depth of Field) camera types.
-Support for multiple 3D and images formats, thanks to Assimp and FreeImage libraries.
-Multithreaded rendering.
-Post rendering image filters: Tone mapping operators, sRGB gamma correction, Bloom.
-Realistic Skylight illumination source.

QuarkLight Blog

Tutorials
Sometimes having someone that explains, step by step, how to do things is of great help for beginners. I wrote a couple of tutorials in the hope to help someone, as online tutorials always helped me (and still do) .

 FractalGenerator
I'm sure you have already seen fractals before. They are today used not only for scientific and engineering pourposes, but also in art, thanks to their beatiful look. Despite the fact that fractals feature unlimited details, they are sometimes generated by embarassingly trivial algorithms. In my opinion that makes them best candidates as a topic for a tutorial.
Go To The Fractals Generation Tutorial


Open Source Projects

Not much, really. I left most of my projects without finish them (very bad practice), so they never reached an usable state. A couple of them are perhaps worth a look though, and I have to put something on this site, after all :-).

License
There is no specific licence applied to the following programs. Unless otherwise stated, the software on this site is provided "as-is," without any express or implied warranty. In no event shall I be held liable for any damages arising from the use of the software.

3DS Loader
A very simple 3DS format loader, with basic functionalities. I usually recomend to avoid 3ds, and there are several better libraries anyway, but it could be a straightforward starting point for someone willing to create its own loader. In addtions, it is composed by just a couple of files, easy to add to any project.

Download

Massa Critica
Small board game written in Java for a university class. A Min Max Tree will handle AI for opponents impersonated by the program, and both local and network multiplayers modes are supported. Documentation is in italian though, but I could write an english version, should someone be interested. The steps required to start a match against the AI are a bit contrived (I strictly followed the assignment) but, again, I could add an easier way if required.



Download

FractalGenerator
Simple Fractals generator. It can generate Mandelbrot, Julia, Newton and the Biforcation Diagram of the Logistic function. You can zoom, and save the generated images. The files are provided as a C# Visual Studio Solution.



Download

MoneyFlow
That application is a small personal financial tool. It has been never finished, but its still on my hard drive so why not?
Download

Useful Free Resources
There are a lot of  Free Resources on the Net: whatever is the specific problem you are facing, you can find a solution or at least a good help. Here are some of the best sources I've found.

Libraries
Boost
FreeImage
AssImp
OpenGL
FFTW
OpenAl
SDL

Tutorials and Free Books

Raytracing Tutorial on Devmaster
Raytracing tutorial on CoderMind
Thinking in C++ 2nd Ed.
Thinking in Java 3rd Ed.
Numerical Recipes
Practical PHP
Graphics Programming Black Book
Data Structures and Algorithms with Object-Oriented Design Patterns in C++
Data Structures and Algorithms with Object-Oriented Design Patterns in C#

More free books at e-booksdirectory.com

Programming Sites
Gamedev.net
Devmaster.net
Ompf.org
CodeProject
SourceForge (for free software)

CG Papers
Heuristic Ray Shooting Algorithms
Realtime Ray Tracing and Interactive Global Illumination
Instant Ray Tracing: the Bounding Interval Hierachy
Global Illumination Compendium
Fast, Minimum Storage Ray/Triangle Intersection
A practical Analytic Model for Daylight
Arbitrarily Layered Micro-Facet Surfaces