4 ms·
Smallpt: Global Illumination in 99 lines of C++ (with no external deps)
- lutorm 17y agoNice. Though all of the 99 lines are >75 characters. With a more readable formatting it would be twice as long... ;-)
- miratom 17y agoYes, this would be tons more philanthropic and if it were just readable. Just some simple line breaks and variable names that meant something. It's not impressive that you can just cram stuff into 99 lines.
- yason 17y agoActually, the code seemed to be a mess but was quite readable. I read it through. You could almost see all the code in once glance which is when you pretty much don't need formatting anymore, just some time to initially absorb the code.
- benhoyt 17y agoActually, all of the lines are <75 characters. But yeah, it'd be at least twice that long with a normal coding standard.
- coliveira 17y agoActually, I think that this style is readable. The problem, though, it that it is hard to modify. Which would be a real trouble for code that needs to be maintained.
- adamtj 17y agoIt could be 1 line. sloc doesn't mean much for C++ unless the code is sanely formatted. E.g. an if/else should be at least 2 lines, usually 4. Edit: That said, I'm still impressed.
- houseabsolute 17y agoThis is a sight more readable than some much more sanely formatted C++ programs I've read. What I've learned from this that it's often the simplicity of the program that's more important than the formatting. (Although formatting is of course still important and anyone who inflicts code like this on their coworkers doesn't reach my standard of "decent human being.")
- Luc 17y agoThe listing is contrained to 72 columns width, so it really couldn't be one line.
- profquail 17y agoGPU Version: http://davibu.interfree.it/opencl/smallptgpu/smallptGPU.html http://davibu.interfree.it/opencl/smallptgpu/smallptGPU.html
- palish 17y agoI wish the source code was cross-platform. It doesn't build in Visual Studio. 'erand48': identifier not found 'M_PI' : undeclared identifier Obviously #define M_PI 3.1415926 should do the trick, but I need to track down an erand48 replacement.
- romland 17y agoMight want to check out: http://gnuwin32.sourceforge.net/packages/libgw32c.htm http://gnuwin32.sourceforge.net/packages/libgw32c.htm Or the FreeBSD source: http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/gen/erand48.c?rev=1.2 http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/gen/erand...
- jey 17y agoerand48 returns random doubles from [0.0, 1.0). The argument to erand48() is just a state vector (instead of the usual unsafe convention of having the RNG store its state internally). You can replace it with a call to any other equivalent random number generator. http://www.opengroup.org/onlinepubs/000095399/functions/erand48.html http://www.opengroup.org/onlinepubs/000095399/functions/eran...
- jrockway 17y agoReadable!
- jcl 17y agoI love that they modeled the walls of the room with giant spheres... a wonderful hack to avoid having to support plane primitives while still producing something that looks like a Cornell box.