Releases: BVE-Reborn/rend3
Releases · BVE-Reborn/rend3
v0.3.0 - RenderGraphs and Animations
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
Fixes
v0.2.3 - Mesh Bug
Released 2021-11-15
Fixed
- rend3: Objects weren't properly holding their meshes alive.
v0.2.2 - Texture Fixes
Released 2021-10-24
Fixed
- rend3: Fixed bug where in gpu mode, changing textures would cause a brief flash.
- rend3-pbr: Fixed normal mapping.
- rend3-pbr: Fixed some UV transforms.
v0.2.1 - Crash Fixes
Released 2021-10-24
Fixed
- rend3: Fixed bug where materials would slowly drift out of sync with their internal tracking indices.
- rend3: Fixed bug where the renderer would crash on close.
- rend3: Fixed bug where changing a material's type would cause materials to go haywire.
v0.2.0 - Improved Materials
Released 2021-10-09
This release saw a signifigant amount of cpu side optimization.
In a 50k object scene, the render loop went from taking 16ms to taking 1.75ms, a 9x speedup
Added
- rend3: Added an explicit dependency on wgpu-core and wgpu-hal to ensure bug-fixes are included.
- rend3-gltf: Add the ability to turn off image's default features.
- rend3-gltf: Add support for ktx2 and dds images.
- rend3-gltf: Expose implementation functions
- rend3-pbr-bake: Added crate for automatic light baking to a texture.
Changed
- rend3: IMPORTANT: You now must call output.present() in order for things to show up on screen.
- rend3:
Material
is now a trait and render routines can specify their own material.rend3::types::Material
is nowrend3_pbr::material::PbrMaterial
Renderer::update_material
no longer takes aMaterialChange
, it takes a completely new material.
- rend3: renderlists refactored to have a generic Input and Output.
Renderer::renderer
passes through the Input and Output.- OutputFrame is now a user-side only utility.
- rend3: AddTexture* will now create/upload the texture before the call returns.
- rend3: ResourceHandle now prints the actual reference count while debug printing.
- rend3:
CameraProjection
now deals with view matrix, instead of location/yaw/pitch @scoopr - rend3: Update to glam 0.19 @scoopr
- rend3 & rend3-gltf: update to wgpu 0.11
- rend3-pbr: Input is of type
()
and Output is type&TextureView
. - rend3-gltf: Added labels to all the different data types.
- rend3-gltf: Errors now use a
SsoString
instead of aString
for the URI. - rend3-gltf: All implementation functions no longer write into a single
&mut LoadedGltfScene
, but return their results directly.
Fixed
- rend3: No longer require pipeline rebuilds when bind group length updates.
- rend3-pbr: fix rendering of cutout objects in shadow passes.
- rend3-pbr: remove redundant material changes in cpu mode.
v0.1.2 - Shadow Rendering Fixes and Optimization
Released 2021-09-20
Added
- rend3: Added an explicit dependency on wgpu-core and wgpu-hal to ensure bug-fixes are included.
Fixed
- rend3-pbr: fix rendering of cutout objects in shadow passes.
- rend3-pbr: remove redundant material changes in cpu mode.
v0.1.1 - Bugfixes
Released 2021-09-13
Added
- rend3-pbr:
set_ambient_lighting
sets the ambient light value, making sure no lighting result is less thanambient * color
.
Fixed
- rend3: properly exported
ExtendedAdapterInfo
v0.1.0 - First Beta Release!
Released 2021-09-11
Added
- rend3: Materials now have a
Transparency
field that supports Opaque, Cutout, and Blend transparency modes. - rend3:
AlbedoComponent::TextureVertexValue
to representtexture * vertex * constant
- rend3: Mipmaps can be generated automatically on the gpu without the user needing to upload them.
- rend3:
Renderer::add_texture_2d_from_texture
which allows you to make a new texture from a set another texture's mipmaps. - rend3 & rend3-pbr: Use
wgpu-profiler
to generate GPU timings that show up asRendererStatistics
. - rend3 & rend3-pbr: Annotate most code with
profiling
spans. - rend3 & rend3-pbr: Add a
distance
field that signifies how much space shadows should take up. - rend3-pbr: All major rendering spans are labeled and show up in renderdoc
- rend3-pbr: Multisampling support
- rend3-pbr: Support for transparency as well as stable gpu-culling to preserve transparency sort order.
Changed
- rend3: SUBTLE All handles are now refcounted.
- Handles are now
!Copy
. Functions taking handles now accept a reference to a handle. - If you want to keep something alive, you need to keep the handle to it alive.
Object
s will keepMaterial
s/Mesh
s alive.Material
s will keepTexture
s alive.- All resources are removed the
render()
after they are deleted.
- Handles are now
- rend3: Externalize all surfaces, adapters, devices, etc.
- Instead of using a
RendererBuilder
, construct an Instance/Adapter/Device withrend::create_iad
and pass that toRenderer::new
. - Surfaces are now controlled by the user. There is a convinence function
rend3::configure_surface
to make this smoother.
- Instead of using a
- rend3:
Texture::width
andTexture::height
replaced withTexture::size
- rend3:
RendererStatistics
is now an alias forVec<wgpu_profiler::GpuTimerScopeResult>
- rend3:
Texture::mip_levels
was split intomip_count
andmip_source
allowing you to easily auto-generate mipmaps. - rend3: Changed limits such that intel gets CPU mode until wgpu#1111 gets resolved.
- rend3-pbr: creation and resizing's
resolution
argument replaced with options containing resolution and sample count.
Updated
- Dependencies:
glam
0.17 -> 0.18
Fixed
- rend3-pbr: Shadow artifacting due to incorrect face culling when rendering shadow passes
- rend3-pbr: CPU mode drawing failed to account for proper vertex offsets
- rend3-pbr: Non-normalized normal maps now work correctly.
- rend3-pbr: Growing the GPU mode texture descriptor list no longer causes panic
- rend3-gltf: albedo-texture UV transform is now respected
- rend3-gltf: image loading now properly caches images
Removed
- rend3:
RendererBuilder
replaced with explicit calls toRenderer::new
. - rend3:
Renderer::delete_*
functions were removed in favor of refcounting.
v0.0.6 - Renderlist Rewrite
Released 2021-08-22
Added
rend3_types
crate with all datatypes.
Changed
rend3::datatypes
is now renamed torend3::types
. It is a reexport ofrend3_types
.rend3::types::TextureFormat
is a reexport ofwgpu_types::TextureFormat
.- Replaced Renderlists with Render Routines
rend3_list
crate is nowrend3_pbr
.Swapchain
mentions are nowSurface
.set_options
is nowset_internal_surface_options
- The following are now functions of the render routine:
resize
is on both.set_background_texture
now takes anOption<TextureHandle>
and there is noclear_background_texture
.
log
is now used for logging as opposed totracing
, soenv_logger
should be used overwgpu_subscriber
.
Updated
wgpu
0.7 -> 0.10glam
0.13 -> 0.17
Removed
span
andspan_transfer
, due totracing
's removal.- All ties to
switchyard
. - Shader compiling infrastructure is gone, shaders must be wgsl or pre-compiled to spirv.
v0.0.5 - Bug Fix
Fixed
- Fixed silly math error when converting to
glam
tov0.13.0
.