Brian Karis
@briankaris.bsky.social
1.6K followers 140 following 94 posts
Engineering Fellow at Epic Games. Author of Nanite.
Posts Media Videos Starter Packs
Reposted by Brian Karis
zeux.io
New blog post! In "Billions of triangles in minutes" we'll walk through hierarchical cluster level of detail generation of, well, billions of triangles in minutes. Reposts welcome!

zeux.io/2025/09/30/b...
Reposted by Brian Karis
dylanbrowne.bsky.social
The new Nanite Foliage Voxel representation is an absolute game changer for distant environments, density preservation is pretty much perfect.
5 min test scene i whipped up here.
~1 million 20 million poly trees scattered with PCG
#UE5 #UnrealEngine #GameDev #EnvironmentArt #RealTime
Reposted by Brian Karis
momentsingraphics.bsky.social
All HPG 2025 papers are now available on the EG digital library.
CGF papers: diglib.eg.org/handle/10.23...
Conference papers: diglib.eg.org/handle/10.23...
It has been a huge honor to act as HPG papers chair and guest editor and I look forward to an exciting program in Copenhagen.
44-Issue 8
High-Performance Graphics 2025
diglib.eg.org
Reposted by Brian Karis
justinmsolomon.bsky.social
I signed and encourage colleagues to do the same.

Venue selection is fraught. Inevitably attendees will encounter visa issues, distance, expense, local politics, and other challenges. This venue, however, is simply unsafe for LGBTQ+ researchers, and the leadership's defensiveness is unacceptable.
omershapira.com
Computer Graphics as a field avoids gatekeeping. Practitioners come from many disciplines, origins and beliefs.
SIGGRAPH has historically carried this practice.

I am thus outraged at the decision to hold SIGGRAPH Asia 26’ at a venue unsafe to many.

Adding my signature. I encourage you to do too:
Open Letter to the SIGGRAPH Leadership
RE: Call for SIGGRAPH Asia to relocate from Malaysia and commit to a venue selection process that safeguards LGBTQ+ and other at-risk communities. To the SIGGRAPH Leadership: SIGGRAPH Executive Commit...
docs.google.com
Reposted by Brian Karis
skilful.bsky.social
This is a great thread @hillsguy.bsky.social, I'll add a bit more context here for anyone interested.

Yes there's no fancy sim - it just uses a water interaction buffer as a target for the particle system rendering, so we could use the power of particle system we already have.
hillsguy.bsky.social
Decided to check out how water is rendered in Counter-Strike 2.

Given how interactive water in CS2 is, I expected to see some cellular fluid simulation, but turns out they just use a low-resolution off-screen buffer with flat 2D decals used for various aspects of water. Reminds me of HL2 water :)
briankaris.bsky.social
Yes but not ready to share anything yet
briankaris.bsky.social
Includes this great video showing how the Nanite Foliage seamlessly LODs. No popping. No harsh transitions. Good appearance preservation (although this light direction is overly generous).
briankaris.bsky.social
1 minor detail, it can switch to voxels within the twigs themselves as they get further as well. A Nanite cluster can now be either 128 triangles or 128 voxel bricks. That visualization only showed 5 steps but there are as many as it takes to halve the count until there is 1 root cluster.
briankaris.bsky.social
Great video from DF!

Really good explanation from @dachsjaeger.bsky.social about how foliage has been done in the past, the problems with them, and why this new approach was needed.
digitalfoundry.bsky.social
The Witcher 4 tech demo running on Unreal Engine 5 - 60fps on the standard PlayStation 5. Alex and I share some initial thoughts: youtu.be/5PIyPpB83Vw
briankaris.bsky.social
I’ve wondered the same. We haven’t yet explored any alternative uses for these new tools yet. It probably can’t beat the best hand modeled hair cards but it seems like it could be great as an auto generated LOD for spline based grooms.
briankaris.bsky.social
Yes. This has been one of the most challenging parts of the problem. If opacity per voxel is too expensive, voxels can either be 100% covered or not, which do I fill? And determine that relatively fast since the Nanite build for a mesh needs to take <1min.
briankaris.bsky.social
A cluster in Nanite typically is up to 128 triangles. Voxel clusters are 128 4x4x4 bricks. Brick positions are fixed point so no precision problems.

Really though gaps aren’t a key concern for voxels since they are used primarily for subpixel features which result in partial coverage.
briankaris.bsky.social
Correct. 3 separate features: assemblies, skeletal meshes, and voxels. None of which is strictly foliage. Each can be used without the other. Can make assemblies and keep as meshes, like the repeated elements on this shield from the original UE5 demo. Or voxelize a single Nanite mesh.
briankaris.bsky.social
Sure. We didn't get time to do the wind animation as an actual physics sim but want to in the future. AC Shadows wind looks amazing and we aren't there yet.

Breaking off branches could be a problem since Nanite assembly HLOD needs to merge things. They aren't individual branches in the distance.
briankaris.bsky.social
5.7 for first version and then probably more significant improvements for 5.8.
Reposted by Brian Karis
yiningkarlli.bsky.social
The new Witcher 4 UE5.6 tech demo that was shown today is the most amazing realtime tech demo I've seen yet. Nanite Foliage is particularly impressive- I've always liked the idea of voxel-based LOD and this is the best implementation I've ever seen!

www.youtube.com/watch?v=aorR...
The Witcher 4 Unreal Engine 5 Tech Demo 4K | State of Unreal | Unreal Fest Orlando
YouTube video by Unreal Engine
www.youtube.com
briankaris.bsky.social
We have a USD (which supports nested instancing) importer. CDPR had their own custom speedtree exporter/importer using our Nanite Assembly API for these assets. We have tooling in the works that will help with authoring in the future. Can't talk about it yet.
briankaris.bsky.social
Not fixed. No voxel alignment between any cluster, including parent/child. Like the triangle clusters it targets a halving of data. Half the triangles is easy, just collapse until hit. Voxels need a search since voxelization needs to be done from scratch for each size attempt.
briankaris.bsky.social
Using a simplified version of this citeseerx.ist.psu.edu/document?rep.... Basically compute the extents of deformation using only the extents of the skinning data contained within a node. This gets too expensive once the bone count within a node gets high at which point we fallback to the object.
citeseerx.ist.psu.edu