
Recent Posts
 Is this a branch? January 18, 2021
 Converting wavetables to Ableton Operator AMS waves January 5, 2021
 Why are video games graphics (still) a challenge? Productionizing rendering algorithms December 27, 2020
 Compressing PBR material texture sets with sparsity and kSVD dictionary learning August 30, 2020
 Dimensionality reduction for image and texture set compression May 21, 2020
Archives
 January 2021 (2)
 December 2020 (1)
 August 2020 (1)
 May 2020 (1)
 April 2020 (2)
 March 2020 (1)
 February 2020 (1)
 January 2020 (1)
 September 2019 (1)
 August 2019 (1)
 May 2018 (1)
 October 2017 (1)
 August 2017 (1)
 April 2017 (2)
 October 2016 (4)
 September 2016 (2)
 August 2016 (1)
 June 2016 (1)
 October 2015 (2)
 March 2015 (2)
 February 2015 (1)
 December 2014 (1)
 October 2014 (1)
 September 2014 (4)
 August 2014 (4)
 July 2014 (2)
 June 2014 (2)
 May 2014 (2)
 April 2014 (3)
 March 2014 (5)
 February 2014 (2)
 January 2014 (3)
Categories
Category Archives: Code / Graphics
Is this a branch?
Let’s try a new format – “shorts”; small blog posts where I elaborate on ideas that I’d discuss at my twitter, but they either come back over and over, or the short form doesn’t convey all the nuances. I often … Continue reading
Posted in Code / Graphics
Tagged assembly, cpu, gpu, optimizations, profiling, programming, simd
Leave a comment
Why are video games graphics (still) a challenge? Productionizing rendering algorithms
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 for real time rendering. I will base this on my personal … Continue reading
Compressing PBR material texture sets with sparsity and kSVD dictionary learning
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 that those textures are strongly correlated. In my … Continue reading
Posted in Code / Graphics
Tagged compression, graphics, graphics programming, image processing, linear algebra, machine learning, maths, PBR, rendering, signal processing, textures
5 Comments
Dimensionality reduction for image and texture set compression
In this blog post I am going to describe some of my past investigations on reducing the number of channels in textures / texture sets automatically and generally – without assuming anything about texture contents other than correspondence to some … Continue reading
Posted in Code / Graphics
Tagged compression, graphics, image processing, linear algebra, machine learning, maths, PBR, physicallybased shading, textures
9 Comments
“Optimizing” blue noise dithering – backpropagation through Fourier transform and sorting
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 series on dithering in games and … Continue reading
Posted in Code / Graphics
Tagged blue noise, dithering, frequency domain, image processing, jax, machine learning, noise, numpy, python
2 Comments
Bilinear texture filtering – artifacts, alternatives, and frequency domain analysis
In this post we will look at one of the staples of realtime computer graphics – bilinear texture filtering. To catch your interest, I will start with focusing on something that is often referred to as “bilinear artifacts”, trapezoid/starshaped artifact … Continue reading
Posted in Code / Graphics
Tagged blur, filtering, image processing, postprocessing, temporal, temporal supersampling
4 Comments
Using JAX, numpy, and optimization techniques to improve separable image filters
In today’s blog post I will look at two topics: how to use JAX (“hyped” new Python ML / autodifferentiation library), and a basic application that is followup to my previous blog post on using SVD for lowrank approximations and … Continue reading
Posted in Code / Graphics
Tagged bokeh, colab, github, graphics programming, image processing, jax, maths, numpy, postprocessing, programming, python
5 Comments
Separate your filters! Separability, SVD and lowrank approximation of 2D image processing filters
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 in a numerical / matrix form using SVD. Continue reading
Posted in Code / Graphics
Tagged algorithms, approximation, blur, bokeh, depth of field, graphics, image processing, linear algebra, numpy, optimizations, postprocessing, python
9 Comments
Analyze your own activity data using Google Takeout – music listening stats example
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 stepbystep how to do it using colab, Python, pandas, … Continue reading
Posted in Code / Graphics
Tagged colab, data, numpy, programming, python, statistics, visualization
Leave a comment
Local linear models and guided filtering – an alternative to bilateral filter
Intro In this blog post I am going to describe an alternative tool for the graphics and image processing programmers’ toolbox – guided filtering. Guided filtering is a really handy tool that I learned about from my coworkers, and I … Continue reading
Posted in Code / Graphics
Tagged bilateral, graphics, image processing, machine learning, postprocessing, python, signal processing, ssao, upsampling
3 Comments
How (not) to test graphics algorithms
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 the interesting and inspiring discussions, and one of … Continue reading
Posted in Code / Graphics
Tagged code design, code style, graphics, graphics programming, programming, siggraph, testing, tests
3 Comments
Checkerboard rendering, rotated antialiasing and grid frequencies
This post is inspired by three interesting statements or questions that I heard and are interconnected by nonobvious theory: First was regarding so called checkerboard rendering (example1 example2) – what is advantage of using it? After all it’s the same as … Continue reading
Posted in Code / Graphics
Tagged antialiasing, fourier, frequency domain, sampling, signal theory, supersampling
4 Comments
Tech and scientific writing – graphics, diagram and graph creation tools
Few days ago, I asked a question on twitter: https://twitter.com/BartWronsk/status/919618905319997440 “What is industry/academic standard for diagrams in tech writing? PowerPoint/GoogleDocs diagrams? Dedicated tool like Visio/Dia? Procedural? I usually use first, but far from satisfied…For proc tried SVG,JS,Graphviz,even Mathematica, but results … Continue reading
Separable disklike depth of field
This is a short note accompanying shadertoy: https://www.shadertoy.com/view/lsBBWy . It is direct implementation of “Circularly symmetric convolution and lens blur” by Olli Niemitalo (no innovation on my side, just a toy implementation) and got inspired by Kleber Garcia’s Siggraph 2017 presentation “Circular … Continue reading
Posted in Code / Graphics
Tagged bokeh, depth of field, dof, far cry 4, Gaussian, maths, photography, poisson, postprocessing, separable, witcher 2
2 Comments
Cull that cone! Improved cone/spotlight visibility tests for tiled and clustered lighting
In this blog post, I will present some common spotlight culling techniques and propose one small improvement that is able to correct results of cheap, tiled / clustered culling on the CPU/GPU with almost negligible ALU cost. If you know … Continue reading
Posted in Code / Graphics
Tagged cone, culling, geometry, graphics, ideas, lighting, mathematica, mathematics, occlussion, programming, sphere, spot, visibility
9 Comments
Small float formats – R11G11B10F precision
While this post is not yet dithering related, it is in a way a part of my series about dithering. You can check index of all parts here or check the previous part. I will talk here about use of … Continue reading
Posted in Code / Graphics
Tagged float, floating point, floats, graphics, mathematica, mathematics, noise, programming, quantization, rendering
6 Comments
Dithering part three – real world 2D quantization dithering
In previous two parts of this blog post miniseries I described basic uses mentioned blue noise definition, referenced/presented 2 techniques of generating blue noise and one of many general purpose highfrequency lowdiscrepancy sampling sequences. In this post, we will look … Continue reading
Posted in Code / Graphics
Tagged bayer, blue noise, dithering, fourier, graphics, graphics programming, interleaved gradient noise, mathematica, mathematics, maths, noise, programming, sampling
6 Comments
Dithering part two – golden ratio sequence, blue noise and highpassandremap
In previous part of the miniseries I covered dithering definition and how dithering changes error characteristics of simple 1D quantization and functions. In this part I will try to look at what blue noise is, but first wanted to have a … Continue reading
Posted in Code / Graphics
Tagged blue noise, dithering, golden ratio, graphics, graphics programming, low discrepancy, noise, programming
10 Comments
Dithering part one – simple quantization
Introduction First part of this miniseries 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 analysis of errors of quantization and how dithering … Continue reading
Posted in Code / Graphics
Tagged dithering, mathematica, mathematics, noise, programming, sampling
2 Comments
Dithering in games – mini series
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 to write down some of … Continue reading
Posted in Code / Graphics
Tagged blue noise, dithering, graphics, graphics programming, mathematica, noise, programming, sampling
6 Comments