## rayrender 0.41.0

- Added screen-space annotations with `screen_text()` and `screen_line()`, usable through new `render_scene(screen_text = ..., screen_line = ...)` arguments. Annotations are anchored to 3D world points, projected through the active camera, and support list/vector inputs, clipping, pixel offsets, text halos/backgrounds, line styles, and optional geometry-aware occlusion.

- Added interactive deferred rendering via `render_scene(deferred_render = TRUE)`. When preview is enabled, the preview can remain interactive until Return starts the final render, and Return can toggle back to deferred preview mode.

- Added `auto_exposure` support to `render_scene()`, including automatic final-image exposure and preview exposure calibration. Interactive preview exposure can also be adjusted with `[` and `]`.

- Improved `render_scene()` and post-processing return behavior so rendered images and debug outputs are returned invisibly more consistently, while respecting `plot_scene = FALSE` in more paths.

- `render_scene()` now accepts `rayvertex` `ray_mesh` scenes directly. `raymesh_model()` now preserves mesh materials by default unless a material override is explicitly supplied.

- Improved CSG rendering performance and robustness with cached object/world bounds, tighter operation-specific CSG bounding boxes, bounded raymarching, and fixes for several rotated/rounded CSG bounds cases.

- Improved BVH build and traversal robustness, especially for SIMD/BVH4 builds and large scenes. This includes safer empty-BVH handling, degenerate SAH split fallback, initialized BVH4 nodes, heap fallback for large priority queues, NaN-safe SIMD slab tests, and safer SIMD stores.

- Improved ray/AABB traversal internals by caching padded inverse ray directions and direction signs on `Ray`, and using branchless AABB intersection logic.

- Fixed `text3d()` orientation by reorienting generated text images before creating the scene geometry.

- Improved `generate_camera_motion()` handling of saved keyframe data by reading expected column names instead of relying only on column count.

- Replaced `run_documentation()` example gating with roxygen `@examplesIf`, and removed the exported `run_documentation()` helper.

- Added tests for screen-space text/line projection, compositing, halos, occlusion, preview exposure adjustment, and direct `ray_mesh` rendering.

- Added render benchmarking infrastructure, including bundled BVH-heavy benchmark scenes, CSG benchmark scripts, a GitHub Actions benchmark workflow, benchmark-history publishing, and a pkgdown benchmark dashboard.

- Added a `RAYRENDER_DISABLE_SIMD` configure option to support scalar benchmark/build configurations.

- Updated documentation, README examples, pkgdown reference sections, and package metadata for the new annotation and benchmark features.