Home
Name Modified Size InfoDownloads / Week
README.md 2017-02-28 5.5 kB
bar-0.2.0.tgz 2017-02-28 191.9 kB
bar-0.1.5.tgz 2015-10-24 178.3 kB
bar-0.1.4.tgz 2015-02-07 169.6 kB
bar-0.1.3.tgz 2014-04-24 154.0 kB
bar-0.1.2.tgz 2014-01-04 140.1 kB
bar-0.1.1.tgz 2013-09-25 130.8 kB
bar-0.1.0.tgz 2013-06-24 112.6 kB
bar-0.0.4.tgz 2013-05-09 112.7 kB
bar-0.0.3.tgz 2013-04-01 100.9 kB
bar-0.0.2.tgz 2013-03-05 86.2 kB
bar-0.0.1.tgz 2013-01-26 72.8 kB
Totals: 12 Items   1.5 MB 0

This project needs you!

This is an ambitious project, so, while I have much fun hacking at it, I simply do not have the time to do it all by myself. Everything of critical importance is in place now, so now is the time for you to consider contributing shapes and textures.

If you want to help, you might also want to take a look at the output of "make todo", it will list all the TODO comments I left in the code. A large part of this is stuff that was not necessary to create working base functionality, but it might be quite important to get fixed for a 1.0 release. And most of it is rather limited in extent. In other words, a good starting point to get a feeling for the structure of the code while actually doing productive contributions.

And, of course, I'm always interested in feedback/bug reports. So, don't be shy :-)

Getting started

Just type "make" (or "gmake") in the top directory. It will build everything and immediately run the parser on a short piece of test code. Currently, this code will render a simple 2D image (you can find other examples in exampleCode/, including a 3D example), both as ASCII art and as a TIFF file. Other notable make targets are:

  • make debug
    Run the parser with the test code under gdb. No optimizations.

  • make grind
    Run the parser with the test code under valgrind. No optimizations and no optimized new operator.

  • make performance
    Run the parser with some test code that performs a few time measurements. Optimization level -O3.

  • make clean
    I have taken great care to deliver a correct Makefile, which should avoid any necessity of using this target. So, if you do get into a situation where a build yields incorrect results, please report the bug.

If you are using VIM as an editor, you can easily add syntax highlighting for the scene description language:

  1. Put a symbolic link at ~/.vim/syntax/bar.vim to the bar.vim file in the top level directory of this distribution.

  2. Add the lines

    au BufRead,BufNewFile *.bar set filetype=bar
    au BufRead,BufNewFile *.barinc set filetype=bar
    syntax on
    

    to your ~/.vimrc file.

After that, you should automatically see syntax highlighting whenever you look at BrilliantAsReality scene files. If you are using emacs, sorry, I don't have syntax highlighting for you, but I'd be happy to accept patches that add emacs support :-)

Requirements

  • GNU make (Plain make under GNU/Linux systems, gmake under some others. This is a must, other makes won't do.)
  • g++
  • m4
  • libtiff
  • libfreetype
  • fontconfig
  • bash

  • (pandoc) This is optional to render the markdown documentation to HTML pages. If you don't have pandoc, this build step will simply be skipped.

  • I guess, one or two more things that I am not aware of (feedback appreciated :-) )

Change log

0.2.0 Breaking change: No implicit variable declaration anymore as that feature proved to be problematic. Variables are now declared explicitly, guaranteeing that they shadow any preexisting variable available via some non-local scope. Further changes: 3D rotations, a bit more math, a box shape, more example codes (including one that screws a rubics cube), better error handling, test harness for SDL-based tests, an include() directive to include SDL header files (we are still missing an include guard mechanism, though).

0.1.5 More textures. This includes input from TIFF files. Added VIM syntax highlighting for the scene description language and ANSI art output to render preview images (uses the 256 color palete of modern terminal emulators). Also fixed a rather nasty bug in the SDL that prevented meaningful recursion.

0.1.4 Multiprocessing, better texture transformations, and color for ASCII art output. A texture is now unaffected by any transformations applied to an object before the texture is applied, however, it follows the object naturally afterwards.

0.1.3 2D bezier curves and text added. I hope, I have added a good interface to make positioning of strings much easier than it is in POV-Ray. With this addition, the 2D environment finally has reached a state in which it might already be useful.

0.1.2 Checker and gradient textures, turbulence, and the infrastructure behind it. Also a number of rather technical improvements, the most visible of which is the use of markdown syntax for the documentation.

0.1.1 Added a smooth noise texture (and the noise functions it relies on, these will become important in many places), a root solver for cubic functions, and free-form, B-spline based solid objects (linear, quadratic, and cubic splines work, I hope to add quartic splines, but that requires a quartic root solver which is not available yet. Anybody up to the task?).

0.1.0 Finally, everything of critical importance is in place and the interface is object oriented. Now its time to start expanding to make it actually useful!

0.0.4 3D rendering is functional.

0.0.3 Rendering SDL code into an image is now possible. Currently, this is achieved by simply exporting the C interface to the SDL, so some slick object oriented wrappers are still on the TODO list, but, hey, it works!

0.0.2 First library code (vectors and 2D frames), a test harness for the library code (run make check), an SDL performance test, and some enhancements to the build system.

0.0.1 Initial release. Basic functionality of the scene description language implemented, no rendering functionality yet.

Source: README.md, updated 2017-02-28