Skip to content

Releases: graphnode/r3d-cs

v0.8.2

16 Feb 18:10

Choose a tag to compare

What's Changed

Improved struct ergonomics with auto-generated Span<T> properties, added safe mesh API overloads, and switched to git submodules for upstream tracking.

Note: The native r3d library is still pinned to upstream v0.8.

Struct Ergonomics

  • Auto-generate Span<T> properties for pointer+count field pairs in structs (e.g. InstanceBuffer.Positions, InstanceBuffer.Rotations)
  • Hide count fields consumed by Span properties as internal to reduce API surface noise

Mesh API

  • Added safe LoadMesh / UpdateMesh overloads using ReadOnlySpan<T> instead of raw pointers
  • Added CustomMesh example demonstrating the safe mesh API

Project Infrastructure

  • Replaced .r3d-upstream config file with a proper git submodule at External/r3d
  • Bindings generator now defaults --path to the submodule (no -p needed)
  • CI uses submodules: recursive instead of a separate upstream clone step
  • Updated README with building instructions, submodule workflow, and NuGet prerelease note

Install

dotnet add package R3D-cs --version 0.8.2

Or download from nuget.org.

Commits

  • Generate Span properties for pointer+count fields in structs (9bfb420)
  • Add safe LoadMesh/UpdateMesh overloads and CustomMesh example (a845f14)
  • Hide count fields consumed by Span properties as internal (6364d24)
  • "That just sounds like git submodules with extra steps" (787e5fd)

Full Changelog: v0.8.1...v0.8.2

v0.8.1

11 Feb 22:01

Choose a tag to compare

What's Changed

Improved developer experience by wrapping opaque shader types as value types, eliminating the need for unsafe pointer syntax when working with shaders.

Shader API Improvements

  • Opaque types (ScreenShader, SurfaceShader) now wrap an nint handle, mapping Type* to Type (by value) and Type** to Type* automatically
  • Added generic SetScreenShaderUniform<T> / SetSurfaceShaderUniform<T> overloads using ref T instead of void*
  • Added SetScreenShaderChain(ReadOnlySpan<ScreenShader>) overload
  • Shader example no longer requires unsafe context

Code Generator Updates

  • Auto-detect opaque types (zero-field structs) in TypeMapper
  • Filter section banner comments (e.g. ==== OPAQUE TYPES ====)
  • Replaced incorrect <seealso> with <remarks>Native: <c>...</c></remarks> across all generated docs
  • Regenerated all .g.cs files with updated documentation format

CI

  • NuGet package version is now derived from git tag, independent of the upstream r3d version — this allows publishing binding-side patches without requiring an upstream r3d update

Install

dotnet add package R3D-cs --version 0.8.1

Or download from nuget.org.

Commits

  • Wrap opaque shader types as value types to eliminate pointer syntax (371ab69)

Full Changelog: v0.8.0...v0.8.1

v0.8.0

11 Feb 21:57

Choose a tag to compare

What's Changed

First stable release of the 0.8.x series.

Tooling

  • Bindings generator now auto-detects the upstream r3d version from git tags instead of requiring a manual --version flag
  • Added .r3d-upstream file to pin and track the upstream r3d commit/tag used for generation

CI/CD

  • CI now derives the NuGet package version from the git tag, independent of the upstream r3d version — this allows publishing binding-side patches (e.g. doc fixes, API ergonomics) without requiring an upstream r3d update

Other

  • Updated README badges and fixed logo URL

Install

dotnet add package R3D-cs --version 0.8.0

Or download from nuget.org.

Commits

  • Update README badges and fix logo URL (91d7236)
  • Pin upstream version via .r3d-upstream and auto-detect version from git (101bc5a)

Full Changelog: v0.8.0-dev.1...v0.8.0

v0.8.0-dev.1

11 Feb 21:54

Choose a tag to compare

v0.8.0-dev.1 Pre-release
Pre-release

What's Changed

First development preview for v0.8.0, with updated bindings, new features, CI/CD infrastructure, and packaging fixes.

Bindings & API

  • Updated bindings to latest r3d upstream, fixing several bugs
  • Added new types: Capsule, DepthState, StencilState, Penetration, SweepCollision, Importer, ScreenShader, SurfaceShader
  • Added new enums: CompareMode, ImportFlags, StencilOp
  • Split monolithic R3D.g.cs interop file into per-module files (animation, core, draw, kinematics, lighting, material, mesh, model, probe, etc.)
  • Updated Material, Environment, EnvSSR, and Decal struct layouts to match upstream

New Examples

  • Kinematics - Demonstrates the kinematics/physics API
  • Shader - Demonstrates custom surface and screen shaders

CI/CD

  • Added GitHub Actions CI/CD pipeline for multi-platform native builds (Linux x64, Windows x64) and automatic NuGet publishing
  • CI triggers only on release tags

Fixes

  • Fixed NuGet packaging issues
  • Fixed bindings synchronization issues
  • Simplified GenerateBindings tooling (removed RepositoryManager, simplified CLI)

Install

dotnet add package R3D-cs --version 0.8.0-dev.1

Or download the NuGet package from nuget.org.

Commits

  • Updated binding to most recent commit to avoid some bugs. (f8d6ebb)
  • Update bindings to latest r3d and add Kinematics/Shader examples (8b8ea74)
  • Add GitHub Actions CI/CD pipeline for multi-platform native builds and NuGet publishing (8b65d25)
  • Update CI to use r3d master branch and ignore Claude local settings (c339779)
  • Remove macOS build from CI and simplify GenerateBindings (99d0cfe)
  • Simplify CI: Only run on release tags (a5a916a)
  • Fix bindings synchronization issues and improve tooling (821ad02)
  • Fix NuGet packaging issues and add project badges (61719fc)

Full Changelog: v0.7.0-alpha...v0.8.0-dev.1