<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Artem Kharytoniuk's web page</title><link>https://seminumerical.io/</link><description>Recent content on Artem Kharytoniuk's web page</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Sun, 28 Dec 2025 10:30:15 +0200</lastBuildDate><atom:link href="https://seminumerical.io/index.xml" rel="self" type="application/rss+xml"/><item><title>The Cpu Works Somehow</title><link>https://seminumerical.io/post/cpu-works-somehow/</link><pubDate>Sun, 28 Dec 2025 10:30:15 +0200</pubDate><guid>https://seminumerical.io/post/cpu-works-somehow/</guid><description>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 a simple approach, addition evaluates the carry for each bit, and each carry depends on the carry from the previous bit, forming a long chain of dependencies.</description></item><item><title>Microsurface Refraction BSDF Derivation</title><link>https://seminumerical.io/post/microsurface-refraction-bsdf/</link><pubDate>Tue, 21 May 2024 23:13:12 +0200</pubDate><guid>https://seminumerical.io/post/microsurface-refraction-bsdf/</guid><description>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 \]
There is a derivation here.</description></item><item><title>My 20-Year-Old Program</title><link>https://seminumerical.io/post/my-20-year-old-program/</link><pubDate>Fri, 02 Feb 2024 14:00:49 +0100</pubDate><guid>https://seminumerical.io/post/my-20-year-old-program/</guid><description>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 acknowledgments section of every pbrt book, starting with pbrt2.</description></item><item><title>Macrosurface BSDF Derivation</title><link>https://seminumerical.io/post/macrosurface-bsdf/</link><pubDate>Thu, 13 Feb 2020 00:28:17 +0100</pubDate><guid>https://seminumerical.io/post/macrosurface-bsdf/</guid><description>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 surface has a microstructure (black outline) that determines surface reflectance properties.</description></item><item><title>Math Typesetting 2020</title><link>https://seminumerical.io/post/math-typesetting-2020/</link><pubDate>Thu, 13 Feb 2020 00:28:17 +0100</pubDate><guid>https://seminumerical.io/post/math-typesetting-2020/</guid><description>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&amp;rsquo;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 configuration that makes my site math-friendly.</description></item><item><title>Quake 3 Vulkanized</title><link>https://seminumerical.io/post/quake3-vulkanized/</link><pubDate>Tue, 06 Jun 2017 00:00:00 +0000</pubDate><guid>https://seminumerical.io/post/quake3-vulkanized/</guid><description>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 project working ~40 hours per week or ~450 hours in total.</description></item></channel></rss>