UPDATE: added automatic differentiation via dual numbers section In computer graphics plotting functions is invaluable tool in order to understand any topic. There are a lot of specialized software, but nothing that can visualize 2d, 3d and custom content easily. One of the greatest tools for visualization is Shadertoy. So my goal was to develop tools to be able to generate all kinds of plots. Plotting shapes is quite straightforward just evaluate $F(x) >= 0$ and you are done. ... Read more
In this blog post I decided to deal with rendering geometry in Vulkan. Depending on usage usually people talk about dynamic and static geometry. Dynamic is geometry which changes every frame or alternatively is uploaded every frame, static - respectively is constant across large number of frames. My goal is to learn how to deal with both in Vulkan. Entire source code can be found in these 2 commits: dynamic geometry and static geometry handling. ... Read more
In previous blog post I presented simple Vulkan program, which was mostly initialization/deinitialization sequences. I replaced rendering with simple clear. In this blog post I’ll explain how to do actual rendering. I thought that simple triangle will be too boring, so instead I decided to illustrate shaders with primitive raytracing example from ShaderToy. Here is video which shows what we will achieve: But first I want to list few interesting Vulkan articles, which I encountered since last time: ... Read more
For a long time I wanted to start learning new low-level API like DirectX and Vulkan. And I procrastinated, as my current job is barely related to rendering and there is little interest in high performance code and high performance rendering specifically. Recently I decided instead of just writing code myself to document my learning exercises in hope that they will be useful to other people. As a side effect I hope it will help with my motivation. ... Read more