This release updates the renderer and texture extraction, with full support for perspective projection (along with orthographic projection), and contains various other smaller improvements and fixes.
New / major improvements:
* Improved `v2::extract_texture(...)` to support texture coordinates with seams (63243b2)
* Moved `v2::extract_texture(...)` to the `eos::render` namespace and made it the new default (08cba28). Calling code needs to be adjusted slightly, but the function's parameters are very similar. This new texture extraction uses the `Rasterizer` of the new renderer, and supports both orthographic and perspective projection.
* Removed the old `extract_texture(...)` function, which only supported affine cameras (8fd1735)
* Improved `SoftwareRenderer::render(...)` to correctly deal with texture maps with seams (c1defba)
* Removed the old `render(...)` function, moved `v2::SoftwareRenderer` to the `render` namespace, and added a convenience function for the new renderer that can be called (almost) like the old renderer (12a4120) - calling code needs slight adjustments. The core of the new renderer is the same, but the architecture has been changed to mirror more closely the hardware (or OpenGL) pipeline, with vertex- and fragment shaders. Results should be exactly the same, and they have the same parameters.
- _Note:_ Whereas previously, meshes without vertex colour would be rendered with the colour `(0.5, 0.5, 0.5)`, in the new renderer, they will have default colour black (bd01644). In any case, it does not make sense to try and render a mesh without vertex colours or texture.
* Added vertex visibility check function that supports both orthographic and perspective projection (0db88d3). Introduced an `enum class` `ProjectionType`, which specifies whether orthographic or perspective projection should be used.
Fixes:
* Changed strides in `Image` python bindings to account for row-major `Image` class (dc0fce8). (The `Image` class was changed to row-major in a commit a while ago, but the python bindings were never updated to accommodate this.)
* Updated `mpark::variant` to their latest master (bd590bf). This should fix a few compile errors with certain compilers when compiling eos in C++14 mode.
Minor improvements/changes:
* Improved `v2::extract_texture(...)` to not crash when the projected model is partially outside the image (442497e)
* Added `clear_buffers()` function to `SoftwareRenderer` and `Rasterizer` to clear the colour- and depth buffers (1e8a875)
* Set the colourbuffer's clear color to fully transparent (fc1465e)
* Added `project(...)` function to `PcaModel` (4694d6f) (see 295 for a potential issue)
* Moved `render/draw_utils.hpp` to `render/opencv/` (914fdd5)
* Added new `draw_wireframe(...)` function that doesn't need OpenCV (7303b39) and added python binding for it (f1f83d0)
* Renamed "isomap" to "texturemap" throughout, and the `<filename>.isomap.png` output of the example apps to `<filename>.texture.png` (174a2c2)
* Various other minor improvements.
Removed:
* Removed `render::detail::interpolate_black_line(...)` (it was only needed for 4, which was fixed, and also it was for the old texture extraction) (35abed8)
* Removed `estimate_affine_camera(...)`. See the commit message, for people that were still using this. (507eb77)
* Removed `render_affine(...)`, this was used in the old texture extraction and is no longer needed (aee7984).