860 Commits over 730 Days - 0.05cph!
Fix view model being blurred with the background after disconnect/reconnect
Implement proper motion vectors for wind-affected materials like grass, bushes and hair for improved image clarity.
Add initial implementation for AMD FSR 3.1
Merge from render_pipeline_testing
Fix global mip bias not being applied on startup, causing blurry foliage textures
Merge from rust_render_pipeline
Merge from blur_artifacts
Use unity_MatrixVP over UNITY_MATRIX_VP for consistency
Use RustGlobals.hlsl and RustObjectToClipPos() in nearly all shaders.
Upgrade nearly all shaders to target 4.5
Fix Crystal AR view model being cut off
Use plain `mul` and `add` with `precise` keyword for consistent MVP transforms
Merge from Render Pipeline Testing
Add "Rust Render Pipeline" UI toggle under experimental
Fix broken motion vectors of skinned meshes when their material has instancing enabled
Merge from render_pipeline_testing
Fix vertex shader precision discrepancy causing artifacts in certain view models with TAA or motion blur enabled
New detailed frame timing in the F8 performance overlay.
https://files.facepunch.com/fell/2026/September/FRAME_TIMING.png
Fix mesh painting in RRP (🥚🧥)
Fix map layers (like train tunnels) not rendering in RRP
Upgrade SMAA in-place to SMAA T2x
Merge from render_pipeline_testing (fixed)
Re-apply improved hair and beard rendering cleanly
Subtract borked changeset
Merge from render_pipeline_testing
RRP: Massively improved hair and beard rendering when TAA or DLSS are enabled. All other anti-aliasing modes now use simple cutout to appear less noisy.
Merge from blue_noise_dithering
Disable per-object culling
Apply GrabPass fix to 5 more shaders
Merge glass AR motion blur fix
Cherry-pick: Add dedicated depth texture for motion vectors
Add dedicated depth texture for motion vectors
Add special transparent motion vector pass to view model
This new pass is used for transparent-yet-solid objects like the Crystal AR skin. I also moved the view model's motion vector pass to OnBeforeImageEffects (after transparent) where writing to the depth buffer has fewer consequences.
Fix motion blur with the Crystal AR by adding a depth-only pass
Add support for depth only passes in ViewModelRenderer
This also simplifies the pass caching logic
Speculative crash fix: Clamp instance index in terrain hole shader
Use a NativeArray for lightShadowData
Zero-initialise _GlobalMipBias
Remove RustRendererFeatureCameraComponentAttribute due to issues with reflection
Remove string interpolation from BlurOptimizedPass
Avoid delegate allocations in SSAOApplyPass
Elimitate GC allocation in terrain depth pre-pass
Add a null-check for renderer feature component creation
Make sure WaterRendererCamera has an explicit constructor (obfuscation problem?)