Krzysztof Narkowicz's Avatar

Krzysztof Narkowicz

@knarkowicz

Engineering Fellow at Epic Game. I love games, graphics and lighting. https://knarkowicz.wordpress.com

1,475
Followers
154
Following
45
Posts
03.09.2023
Joined
Posts Following

Latest posts by Krzysztof Narkowicz @knarkowicz

Direct3D 11.3 Functional Specification

Float to R8_UNorm conversion has a permitted tolerance of 0.6ulp in the DX spec. 0.55/255 on some GPUs rounds down to 0 and on others rounds up to 1/255. Dangerous behavior when R8_UNorm NumFramesAccumulated=0 is used by a denoiser to mark invalid history... microsoft.github.io/DirectX-Spec...

24.02.2026 04:38 πŸ‘ 18 πŸ” 4 πŸ’¬ 0 πŸ“Œ 0
Preview
Rainforest Stream In Unreal 5, Tyler Smith Wanted to do some nature sketching in UE5 :D

Inspiring examples of stylized rendering in UE without any modifications to the engine. Just clever meshes and textures. Though I wonder if it holds up with changing lighting conditions?
www.artstation.com/artwork/JrJKVv
www.artstation.com/artwork/kNXBx2

14.02.2026 16:20 πŸ‘ 5 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
Forget Superresolution, Sample Adaptively (when Path Tracing) Real-time path tracing increasingly operates under extremely low sampling budgets, often below one sample per pixel, as rendering complexity, resolution, and frame-rate requirements continue to rise. ...

Interesting paper showing great results for replacing standard low-res rendering + temporal upsampling (DLSS) with high-res GBuffer + adaptive sampling. Makes sense given rising costs of lighting computations vs GBuffer. arxiv.org/abs/2602.08642

14.02.2026 14:40 πŸ‘ 37 πŸ” 10 πŸ’¬ 0 πŸ“Œ 0
Preview
Nanite Tessellation Nanite Tessellation, aka Nanite Dynamic Tessellation, aka Nanite Dynamic Displacement was the next major feature I worked on after Nanite it...

I'm finally writing up how Nanite Tessellation works. The first few blogs posts are up. More will be coming.
graphicrants.blogspot.com/2026/02/nani...

02.02.2026 02:40 πŸ‘ 160 πŸ” 51 πŸ’¬ 1 πŸ“Œ 1

Yeah, it's tricky as spatial hashing basically merges geometry into one value and cells have to be large for any caching. You could try to add a bounce index to your key (per Stachowiak), force rayT<cellSize to 0 (we do this) or add ray<cellSize to your key (gpuopen.com/download/GPU...).

31.12.2025 03:39 πŸ‘ 4 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0

Yes, it should work as long as those shapes are large enough (don't require explicit sampling) - many titles shipped using hidden Lumen emissives as area fill lights, though that's not as powerful for artists as an additive mesh light. Cool, I really enjoy stylized gfx and tech solutions for it.

12.11.2025 13:20 πŸ‘ 3 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Amazing results! So you were picking N most important analytical mesh light shapes for a given scene and then intersecting/accumulating for each Lumen ray (including screen space one)?

12.11.2025 12:41 πŸ‘ 0 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0

I recommend just reading the slides. After the talk, we filled the presenter notes with more information than we could fit in our live talk.

14.10.2025 13:47 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

It was recorded, so at some point it should be available on the ACM website.

29.09.2025 23:31 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

MegaLights slides were just posted online. There's a bunch of details in slide notes if you're curious how our new Stochastic Direct Lighting solution works, why we made it and want to learn a bit about the problem space.

26.08.2025 17:10 πŸ‘ 50 πŸ” 13 πŸ’¬ 3 πŸ“Œ 1
Post image

#SIGGRAPH2025 Advances in Real-Time Rendering in Games course slides for "MegaLights: Stochastic Direct Lighting in Unreal Engine 5” talk by @knarkowicz.bsky.social and @tiagocostav.bsky.social from Epic Games are now online
advances.realtimerendering.com/s2025/index....

26.08.2025 15:59 πŸ‘ 31 πŸ” 12 πŸ’¬ 0 πŸ“Œ 1
Post image

Thank you @ceruleite.bsky.social for 20 years of organizing the Adavances course. I did learn a lot from it over the years. And also for a really well chosen speaker swag :)

15.08.2025 14:16 πŸ‘ 6 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

It's time to share the program for the 2025 Advances in Real-time Rendering in Games.

Check out all the details here: advances.realtimerendering.com/s2025/index....

and, of course, come attend the course live on Tuesday August 12 at SIGGRAPH in Vancouver!

06.08.2025 05:53 πŸ‘ 68 πŸ” 31 πŸ’¬ 2 πŸ“Œ 0

We use a similar technique in UE, but using cheap AO derived from the distance fields, which then artists use to modify materials in material shaders. Though it's much less powerful - more like a procedural scene-aware texturing than a mesh blend system.

31.07.2025 19:53 πŸ‘ 0 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0
The Future of Analytical Materials in a Neural World
The Future of Analytical Materials in a Neural World YouTube video by High-Performance Graphics

Amazing talk about Neural Materials. Lots of insight - from why layered materials are important to an overview of current neural solutions and their tradeoffs: youtu.be/xUnXPNFWJUY?...

15.07.2025 12:29 πŸ‘ 30 πŸ” 9 πŸ’¬ 0 πŸ“Œ 1

My feeling is that 20y ago there was a huge barrier to start, but if you could land a publishing deal (even on Steam) your game would at least recoup a large part of the budget. Nowadays the risk is much higher.

06.07.2025 21:06 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

It's very simple. One is checkerboarding and the other one is half/quater res.

22.05.2025 01:24 πŸ‘ 3 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Well, it's more like "Go, go, go, fuck (KURWAAA), police" :)

20.05.2025 14:30 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Great to see you getting this award and certainly well deserved!

14.05.2025 11:41 πŸ‘ 3 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

It's designed for run time compression (e.g. real-time captured env maps), so quality isn't the best. If you can compress those offline then likely Compressonator would be a better choice.

01.05.2025 21:10 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

I imagine dynamic register allocation is also quite useful on DXR 1.0, as on hit you need to evaluate materials and they can have highly variable complexity. At least in the future, as for now it seems like everyone is either simplifying or caching materials for perf reasons.

09.04.2025 11:37 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

It reminds me of FMV games, which were a cool idea, but it also was a dead end due to various limitations of the tech.

07.04.2025 11:24 πŸ‘ 0 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0

Another great article from Chips and Cheese. This time about dynamic RDNA4 register allocation. Having full dynamic allocation would be huge for all those complex shaders we write nowadays, but as the article shows it's not easy to get there.

06.04.2025 13:38 πŸ‘ 18 πŸ” 2 πŸ’¬ 1 πŸ“Œ 0
Preview
Measuring acceleration structures Hardware accelerated raytracing, as supported by DirectX 12 and Vulkan, relies on an abstract data structure that stores scene geometry, known as β€œacceleration structure” and often referred to as β€œBVH...

New blog post! "Measuring acceleration structures", in which we will compare BVH costs on various GPU architectures and drivers and attempt to understand the details enough on AMD hardware to make sense of the numbers!

Reposts appreciated :)

zeux.io/2025/03/31/m...

01.04.2025 04:49 πŸ‘ 125 πŸ” 56 πŸ’¬ 2 πŸ“Œ 0

I see this more as a big corp opened a service which allows you to order Simpson merch without owning the IP. Yeah, a skilled artist could make such a t-shirt himself, but it's not the same as a company earning money by selling them.

29.03.2025 14:54 πŸ‘ 9 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Well, obviously would prefer a tech paper actually digging into tech, but still it's a nice post with some hints. Hopefully one day the embargo will be lifted.

14.03.2025 20:51 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
DLSS 4: Transforming Real-Time Graphics with AI

Interesting to see a bit of details behind the amazing DLSS tech: research.nvidia.com/labs/adlr/DL...

13.03.2025 22:14 πŸ‘ 31 πŸ” 7 πŸ’¬ 1 πŸ“Œ 1

In UE we just write out line data to a buffer and then draw those lines using the rasterizer.

21.12.2024 18:23 πŸ‘ 4 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

VT surface catching has always been a very tempting idea, which could help with lots of things, but how do you deal with generating unique and reasonable UVs on UGC content? Some things like foliage don't seem to have a good solution.

15.12.2024 14:51 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Not sure what's the definition of PT translucency, but UE5 RT translucency does trace paths. This is how it can do multiple reflection/refraction events, where each hit needs to be lit by multiple light sources and receive GI.

10.12.2024 23:22 πŸ‘ 3 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0