Released 2022-02-11
This is by far the largest release of rend3 since 0.1. I have done my best to document everything that has changed.
Major Changes
- rend3-pbr got renamed to rend3-routine and will host all render routines, not just PBR related ones.
Added
- rend3-egui: An integration with the immediate mode GUI egui @MindSwipe
- rend3-textured-quad: Add example of simple 2D rendering.
- rend3: Allow duplicating objects overriding some of their properties. @setzer22
- rend3: Implement mesh skinning. @setzer22
- rend3: Added
CameraProjection::Raw
. - rend3: The renderer now has a
handedness
value that determines the handedness of its coordinate system.
This allows the renderer to deal with both DX-convention coordinate systems and OpenGL convention coordinate systems. - rend3-gltf: Load gltf animation data @setzer22
Changes
- rend3: Instead of passing a render routine to the render function,
you now add them to a rendergraph, then pass that rendergraph into the renderer.- rend3-routine:
- The old
PbrRoutine
has been replaced with the more vercitileBaseRenderGraph
. - This base rendergraph will put all the parts together through it's
add_to_graph
function. - Split the PbrRoutine into two parts
add_prepass_to_graph
andadd_forward_to_graph
. - Split out the skybox renderer into
SkyboxRoutine
. - Split out tonemapping into the
TonemappingRoutine
.
- The old
- rend3-routine:
- rend3: Renamed the old
RendererMode
toRendererProfile
and adjusted verbiage to refer to them as profiles.- "CpuPowered" => "CpuDriven".
- "GpuPowered" => "GpuDriven".
- rend3: All meshes now require validation.
MeshBuilder::new()
now takes a handedness of the mesh. If it doesn't match the handedness of the renderer, it flips the winding order.MeshBuilder::build()
now returns aResult<Mesh, MeshValidationError>
. This validation can be unsafely omitted.- The implementation functions
Mesh::calculate_normals{,_for_buffers}
andMesh::calculate_tangents{,_for_buffers}
are now unsafe.
- rend3: Renamed
CameraProjection::Projection
toCameraProjection::Perspective
. - rend3: Allow requesting device features explicitly in
rend3::create_iad
. @setzer22 - rend3: Objects now take a
mesk_kind
allowind definition of static or animated meshes. @setzer22 - rend3-routine: All transparency now has backface culling enabled. Use
Mesh::double_side
orMeshBuilder::with_double_side
to re-enable double sided transparency. - rend3-gltf: Split return value of
load_gltf
into per-scene data and per-instance data. @setzer22 - rend3-gltf: The
nodes
vector is now flat instead of nested. Hierarchy is represented using indices. @setzer22