scimesh Changes
===============

Version 0.3.4 -- Minor fix for CRAN only
-----------------------------------------
- FIX: adapt link in docs to prevent winbuilder warning
-

Version 0.3.3 -- Scene transforms, scene object, glTF export
------------------------------------------------------------
- NEW: per-mesh placement transforms in the C++ Scene.  A scene now stores an
  optional model matrix (and name) per mesh; the renderer applies it as a model
  transform at render time, so meshes are no longer modified in place.  See
  Scene::add(), Scene::set_transform(), Scene::node()/nodes() in scene.h.
  Scene::compute_bounding_box() now accounts for placement transforms.
- NEW: first-class scene object in the R layer: `scene()` builds an S3 object
  of class 'scimesh_scene' bundling meshes (each with an optional 4x4 placement
  transform and name), a camera, and render options.  `render_scene()` accepts
  it (and still accepts plain mesh lists as before).
- NEW: glTF 2.0 export, one-way interoperability: new C++ header gltf_io.h
  writes .gltf (+ external .bin) and self-contained .glb files with geometry,
  per-node transforms and names, vertex colors (COLOR_0), and an optional
  camera.  New R function `write_gltf()` wraps it.  Renderer-specific settings
  (fog, SSAO, shading mode) are not part of glTF and are not exported;
  per-face colors are exported by splitting vertices.
- CHG: `transform_mesh()` and the Rcpp matrix conversion now interpret 4x4
  matrices in the standard row-major convention (M * p, translation in the
  last column).  Previously the matrix was effectively applied transposed,
  which only diagonal (scaling) matrices hid; non-diagonal inputs now behave
  as written.  `scene()` placement transforms follow the same convention.
- CHG: `render_scene()`'s `camera` and `options` arguments are now optional
  and fall back to the values stored in a 'scimesh_scene' when present
  (backwards compatible).
- DOC: new R docs for scene(), write_gltf(); updated render_scene() docs.


Version 0.3.2 -- CRAN review fixes
-----------------------------------
- FIX: do not strip debug symbols for R build, as per CRAN policy
- FIX: add more input checks and disable use of asserts in third-party code, as per CRAN policy that C++ code should not call assert
- NEW: full_CLI_renderer example: composite mode now supports --crop/--grow to pre-process each tile (e.g. trim colorbar whitespace) before arranging
- NEW: full_CLI_renderer example: add --info mode to print image dimensions ('<path> WxH') without external tools like ImageMagick's identify
- NEW: add composite_tight.sh example that produces compact, publication-style multi-view figures: crop each rendered view (--crop --grow), arrange via --composite --fit-mode pad (auto max-extent padding, no manual image sizing), then attach a trimmed colorbar


Version 0.3.1 -- TGA support, macOS fix
----------------------------------------
- FIX: make R package compile again unter MacOS by avoiding strip --strip-debug in Makevars, the MacOS version of strip does not support --strip-debug.
- NEW: add TGA image export (own uncompressed true-color writer, no dependencies) to the C++ layer and the R layer via new `write_tga()` function (32-bit RGBA default, optional 24-bit RGB)
- improve all c++ doc strings for better API docs
- DEP: update libfs to commit 2641453 which fixes version define typo
- CHG: default to white instead of transparent background
- DOC: add cpp example that is a full command line program that renders meshes
- DOC: add file in source tree that lists all third-party details with full licenses, see src/third_party/THIRD_PARTY_LICENSES.md (and a copy for R at LICENSE.note)


Version 0.3.0 -- Dependencies, repo structure, C++ versioning
------------------------------------------------------------
- BRK: move scimesh code from src/core/ to src/core/scimesh and all required downstream adjustments. avoids conflicts with other libraries in C++ layer
- NEW: get proper versioning in place for C++ layer
- SEC: Update libfs to v0.4.1
- DOC: dramatically improve all doc strings, integrate CPP_GETTING_STARTED into API docs
- NEW: add colorbar application functions (C++ and R)


Version 0.2.8 -- Changes for CRAN submission only
--------------------------------------------------
- NEW: Add dependency authors as package contributors
- CHG: Various documentation / example changes


Version 0.2.7 -- Small improvements
--------------------------------------
- NEW: check meshes for validity via is_valid() in rendering pipeline to avoid crashes later
- NEW: R interoperability improvements: add more convenient auto-conversion from rgl meshes to scimesh mesh format, including auto-convert in render function (accepts both formats now). add manual helper for the inverse way. Explained in vignette.
- DEP: suggest viridisLite for R in DESCRIPTION
- DOC: Restructure and dramatically improve the R vignette
- NEW: add camera_orbit helper function for video generation, add example in docs
- FIX: fix building vignette index for CRAN


Version 0.2.6 -- Add contrast render option
--------------------------------------------
- NEW: add contrast to render options and Image class, see vignette.


Version 0.2.5 -- Fix CRAN checks
---------------------------------
- NEW: Waste an evening and mess with third party vendored source to satisfy R CMD check --as-cran


Version 0.2.4 -- String representations and cam fix
----------------------------------------------------
- NEW: add convenience to string function for classes, R and c++
- FIX: fix camera auto mode when using ortho projection (less whitespace around scene now)
- DEV: move all third party code from src/core/ to src/third_party/


Version 0.2.3 -- Convenience Image Ops
---------------------------------------
- NEW: add some basic convenience image ops to Image class


Version 0.2.2 -- Better SSOA and primitives
-------------------------------------------
- NEW: improve SSOA quality dramatically by adding depth buffer
- FIX: fix various primitive generation algos, use duplicate vertices to get proper edge rendering where appropriate


Version 0.2.1 -- Primitive fixes, bridge more cpp functions to R
-----------------------------------------------------------------
- NEW: expose 4 more cpp functions to R layer, mostly mesh transforms
- NEW: export primitive generation functions to R
- FIX: fix face winding order of some primitives, add more primitive tests and example


Version 0.2.0 -- Remove neuro layer
-----------------------------------
* BRK: Braking change: remove neuro-specific functions from renderer package, will be republished as separate package neuromesh


Version 0.1.0 -- Initial release
--------------------------------
- NEW: First release on Github



