
Recent Posts
 Insider guide to tech interviews January 4, 2022
 Procedural Kernel (Neural) Networks January 3, 2022
 Study of smoothing filters – SavitzkyGolay filters November 3, 2021
 Practical Gaussian filtering: Binomial filter and small sigma Gaussians October 31, 2021
 Modding Korg MS20 Mini – PWM, Sync, Osc2 FM October 14, 2021
Categories
Author Archives: bartwronski
Insider guide to tech interviews
I’ve been meaning to write this post for over a year… an unofficial insider guide to tech interviews! This is the essence of the advice I give my friends (minus personal circumstances and preferences) all the time, and I figured … Continue reading
Posted in Code / Graphics
6 Comments
Procedural Kernel (Neural) Networks
Last year I worked for a bit on a fun research project that ended up published as an arXiv “preprint” / technical report and here comes a few paragraph “normal language” description of this work. Neural Networks are taking over … Continue reading
Posted in Code / Graphics
Tagged image processing, linear algebra, machine learning, maths, signal processing
Leave a comment
Study of smoothing filters – SavitzkyGolay filters
Last week I saw Daniel Holden tweeting about SavitzkyGolay filters and their properties (less smoothing than a Gaussian filter) and I got excited… because I have never heard of them before and it’s an opportunity to learn something. When I … Continue reading
Posted in Code / Graphics
Tagged algorithms, digital signal processing, image processing, maths, python, signal processing
Leave a comment
Practical Gaussian filtering: Binomial filter and small sigma Gaussians
Gaussian filters are the bread and butter of signal and image filtering. They are isotropic and radially symmetric, filter out high frequencies extremely well, and just look pleasant and smooth. In this post I will cover two of my favorite … Continue reading
Modding Korg MS20 Mini – PWM, Sync, Osc2 FM
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 write something that might be useful to others – how … Continue reading
Posted in Audio / Music / DSP
Tagged analog gear, electronics, korg, ms20, music, synthesizers, synths
Leave a comment
Processing aware image filtering: compensating for the upsampling
This post summarizes some thoughts and experiments on “filtering aware image filtering” I’ve been doing for a while. The core idea is simple – if you have some “fixed” step at the end of the pipeline that you cannot control … Continue reading
Posted in Code / Graphics
Tagged algorithms, digital signal processing, filtering, graphics, image processing, jax, postprocessing, signal processing
5 Comments
Comparing images in frequency domain. “Spectral loss” – does it make sense?
Recently, numerous academic papers in the machine learning / computer vision / image processing domains (re)introduce and discuss a “frequency loss function” or “spectral loss” – and while for many it makes sense and nicely improves achieved results, some of … Continue reading
Posted in Code / Graphics
Tagged algorithms, image processing, linear algebra, machine learning, maths, neural networks
3 Comments
On leaving California and the Silicon Valley
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 date or … Continue reading
Posted in Travel / Photography
11 Comments
Neural material (de)compression – datadriven nonlinear dimensionality reduction
In this post I come back to something I didn’t expect coming back to – dimensionality reduction and compression for whole material texture sets (as opposed to single textures) – a significantly underexplored topic. In one of my past posts … Continue reading
Superfast voidandcluster Blue Noise in Python (Numpy/Jax)
This is a super short blog post to accompany this Colab notebook. It’s not an official part of my dithering / Blue Noise post series, but thematically fits it well and be sure to check it out for some motivation … Continue reading
Posted in Code / Graphics
Tagged blue noise, dithering, graphics programming, jax, numpy, python
1 Comment
Computing gradients on grids of pixels and voxels – forward, central, and… diagonal differences
In this post, I will focus on gradients of image signals defined on grids in computer graphics and image processing. Specifically, gradients / derivatives of images, height fields, distance fields, when they are represented as discrete, uniform grids of pixels … Continue reading
Bilinear down/upsampling, aligning pixel grids, and that infamous GPU half pixel offset
It’s been more than two decades of me using bilinear texture filtering, a few months since I’ve written about bilinear resampling, but only two days since I discovered a bug of mine related to it. 😅 Similarly, just last week … Continue reading
Posted in Code / Graphics
Tagged digital signal processing, gpu, image processing, libraries, numpy, sampling, signal processing, upsampling
9 Comments
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
7 Comments
Converting wavetables to Ableton Operator AMS waves
This blog post comes with Ableton Operator AMS “wavetables” here. In Ableton’s FM synth you can use different types of oscillator waves as your operators (both carriers as well as modulators), as well as draw custom ones: What is not … Continue reading
Posted in Audio / Music / DSP
Tagged ableton, digital signal processing, dsp, fourier, frequency domain, numpy, python, synthesis
3 Comments
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
6 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
12 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
4 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
11 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, machine learning, maths, numpy, postprocessing, programming, python
9 Comments
You must be logged in to post a comment.