You can create a simple CPU by using a bunch of transistors to build logic gates (AND, OR, NAND, etc.), then connecting those gates so they run actual logic and computations. However, I could not understand how such simple primitives could perform fairly complicated operations in a very small number of machine cycles - sometimes even in a single cycle. Confusion I will use addition as an example.…
In the microfacet model, the surface BSDF is expressed through the BSDF of separate facets as follows: \[ \tag{1} f_s(\bold i, \bold o, \bold n) = \underset{H^2(\bold n)}{\int} \bigg| \frac{\bold i \cdot \bold m }{\bold i \cdot \bold n} \bigg| f_s^m(\bold i, \bold o, \bold m) \bigg| \frac{\bold o \cdot \bold m }{\bold o \cdot \bold n} \bigg| G(\bold i, \bold o, \bold m) D(\bold m) d\omega_m \]…
Dedicated to my friend Volodymyr, who has a birthday today. I almost forgot about it, but I remembered when I wrote the publish date for this post. Years ago, Volodymyr wrote a ray tracer compatible with the original pbrt. All functionality in that ray tracer was covered with tests. I never saw another ray tracer project that was so serious about test code. Volodymyr is included in the…
Some time ago, I derived a known formula from microfacet theory that shows how the reflectance properties of a surface depend on the reflectance properties of the facets that form the surface. That work was done on paper. Now, I have decided to learn how to typeset math formulas in digital form. This article will repeat the derivation. Problem statement According to the microfacet model, the…
As of 2020, the \(\TeX\) typesetting language is quite popular. It provides a markup language rich enough to write even a complex multi-volume book. Still, I’m primarily interested in a math subset of \(\TeX\). There are a few options for how to expose it on the web. I used the \(\KaTeX\) JavaScript library. Another option is the MathJax library. This post will describe the software…
Last week I made a new release of the Quake-III-Arena-Kenny-Edition project. The major feature of this release is Vulkan rendering support. Here I present some summary information. Goals Get practical experience of Vulkan API usage. Implement all Quake 3 rendering features including customization options and debug features, even those that are rarely used. Time It took 2.5 months to finish the…