Commits on Dec 13, 2014
  1. Disable use of "extern template" by default

    Although there's a configure test for the extern-template problem with
    gcc 4.9 (which seems to be fixed in the gcc development versio),
    another, different, problem with mixing extern-template and -flto has
    shown up in the gcc development version.
    The gain from using extern template isn't all that huge, so for the
    moment it seems simpler just not to use it.
    committed Dec 13, 2014
Commits on Sep 4, 2014
  1. Use -pthread for configuration too

    This is necessary for some thread-related configuration tests to do
    the right thing in some cases (and in general it's desirable for
    configuration to use an environment similar the actual build).
    committed Sep 4, 2014
  2. Link against -lm if necessary

    Explicitly linking with -lm isn't necessary when using libstdc++ (the
    default for gcc), as it pulls in -lm itself, but this isn't true of
    committed Sep 4, 2014
Commits on Aug 20, 2014
  1. Enable use of "extern template" by default

    Now that we have a configure check for the problem we were working
    around, we can re-enable "extern template" by default.
    committed Aug 20, 2014
  2. Test for broken "extern template"

    Certain versions of gcc (at least, 4.9, and some trunk versions
    following that) have problems when "extern template" and -flto are
    used together together with some files _not_ using -flto.
    Test for that condition and disable "extern template" if we detect it.
    committed Aug 20, 2014
  3. Don't create null references in Ref

    Ref used to get the underlying pointer of another Ref object by doing
    "&*OTHER", where the "*" would invoked Ref::operator*.  In the case
    where OTHER.obj is null, this would return a "null reference" which is
    not a valid thing in C++.
    This actually worked correctly in most cases, because we'd immediately
    take the address, and given the way C++ compilers implement
    references, it would all sort of work out.  However it's still not
    valid code, and was causing crashes when compiled with recent versions
    of clang.
    Fix this simply by directly getting the pointer, instead of going
    through a reference.
    committed Aug 20, 2014
  4. Disable use of "extern template" by default

    Using "extern template" tickles bugs in gcc 4.9, and the benefit from
    using it is fairly small these days, so just disable it.
    committed Aug 20, 2014
  5. Fix docstring for --disable-lto

    It's enabled by default, so the doc should mention --disable-lto, not
    committed Aug 20, 2014
Commits on Aug 18, 2014
  1. Update NEWS

    committed Aug 18, 2014
Commits on May 4, 2014
  1. Use gcc-ar and gcc-ranlib if possible

    Recent versions of gcc depend on these wrappers for ar and ranlib to
    make LTO work properly, so look for them and use them if possible.
    committed May 4, 2014
Commits on Dec 4, 2013
  1. Add per_pixel_random_seeds rendering option

    It is used for debugging to make it easier to get consistent results
    across runs.
    committed Dec 4, 2013
  2. Add Random::seed method

    committed Dec 4, 2013
Commits on Dec 2, 2013
Commits on Nov 20, 2013
  1. Add multiple-material support to Mesh class

    To avoid adding per-triangle overhead, meshes are now divided into
    "parts," one per material, and triangles are associated with a part.
    Vertices, normals, and UVs are still global in the mesh, so triangles
    in different parts can share the same vertices etc.  This adds a level
    of indirection for accessing mesh-level data, but it doesn't seem to
    make any difference in rendering speed.
    Many mesh file formats use multiple materials in a single mesh, so
    supporting this concept natively makes it easier to properly support
    those formats.
    The Lua mesh loading interface is now split into two different
    functions, load.mesh (for loading entire meshes from mesh formats
    which record materials as well as geometry), and
    load.mesh_geometry (for loading a single mesh part from mesh formats
    that only record geometry).  This is a little messy, and will be
    cleaned up in the future.
    committed Nov 20, 2013
Commits on Nov 19, 2013
  1. snoghilite.c: Scale all color components equally

    Threshold detection is still done on a per-component basis, but when a
    pixel is above the threshold in any component, all components are
    This avoids weird color fringing.
    committed Nov 19, 2013
  2. Export Mesh vertex-groups to Lua as classes

    SWIG can't properly handle object destruction for simple pointers
    returned from wrapped functions, so make wrapper classes for
    Mesh::VertexGroup and Mesh::VertexNormalGroup (as SWIG can't handle
    nested classes) and export them as them as classes instead.
    committed Nov 19, 2013
Commits on Nov 9, 2013
Commits on Oct 15, 2013
Commits on Oct 13, 2013
  1. sample-set.h: Tweak comments and whitespace

    This is a somewhat long header file, so add some more separators to
    try and break things up and make it a little more readable.
    committed Oct 13, 2013
Commits on Oct 12, 2013
Commits on Oct 11, 2013
  1. Cleanup Space interface a bit

    + Make Space::Occludes non-virtual (there's no reason for it to be
    + Make Space::for_each_possible_intersector and Space::SearchState
      protected, as they're only used by subclasses.
    + Make subclasses of Space::IntersectCallback private nested classes
      in Space (which allow them to access protected fields).
    committed Oct 11, 2013