Left: Original image. Center: Blurred through convolution. Right: Deconvolution of the blurred image. In this post, we’ll have a look at the idea of removing blur from images, videos, or games thro… | Continue reading
This post covers a topic slightly different from my usual ones and something I haven’t written much about before – applied elements of probability theory. We will discuss what happens with “n… | Continue reading
Local tonemapping in action. HDRI texture credit: Greg Zaal, CC0. In this post I want to close the loop and come back to the topic I described ~6y ago! Local tonemapping (I’ll refer to it as LTM) &… | Continue reading
Singular components of a light transport matrix – for an explanation of what’s going on – keep on reading! In this post I’ll describe a small hike into the landscape of using line… | Continue reading
Almost every graphics programmer I know is playing right now with some electronics (virtual high five!), so I won’t be any different. But I decided to make it “practical” and writ… | Continue reading
Recently, numerous academic papers in the machine learning / computer vision / image processing domains (re)introduce and discuss a “frequency loss function” or “spectral loss” – … | Continue reading
Beginning of the year, my wife and I made a final call – to leave California, “as soon as possible”. To be fair, we talked about this for a long time; a few years, but without any concrete da… | Continue reading
Intro This post will cover challenges and aspects of production to consider when creating new rendering / graphics techniques and algorithms – especially in the context of applied research fo… | Continue reading
Introduction In this blog post, I am going to continue exploration of compressing whole PBR texture sets together (as opposed to compressing each texture from the set separately) and using the fact… | Continue reading
Teaser image: Example PBR Texture set compressed with presented technique.Textures credit cc0textures, Lennart Demes. In this blog post I am going to describe some of my past investigations on redu… | Continue reading
Introduction This will be a blog post that is second in an (unanticipated) series on interesting uses of the JAX numpy autodifferentiation library, as well as an extra post in my very old post seri… | Continue reading
In this post we will look at one of the staples of real-time computer graphics – bilinear texture filtering. To catch your interest, I will start with focusing on something that is often refe… | Continue reading
By the end of this blog post, we aim to improve the results of my previous blog post of approximating circular bokeh with a sum of 4 separable filters and reducing its artifacts (left) through an o… | Continue reading
In this blog post, I explore separable convolutional image filters: how can we check if a 2D filter is separable, and how to compute separable approximations to any arbitrary 2D filter represented … | Continue reading
The goal of this post is to show how to download our own data stored and used by internet services to generate personalized stats / charts like below and will show step-by-step how to do it using c… | Continue reading
This an opening post of mini blog post series about various uses of dithering for quantization and sampling in video games. It is something most of us use intuitively in every day work, so wanted t… | Continue reading
Introduction First part of this mini-series will focus on more theoretical side of dithering -some history and applying it for 1D signals and to quantization. I will try to do some frequency analys… | Continue reading
Intro Siggraph 2019 is sadly over, but as always I came back super inspired and grateful for meeting many friends. Conferences are mostly not about seeing the presentations – but about all t… | Continue reading