Ответ
Да, помимо основной работы, я увлекаюсь low-level программированием и компьютерной графикой. В качестве хобби-проекта я пишу небольшой софтверный рендерер на C++ с нуля, без использования графических API. Это помогает глубже понять линейную алгебру, оптимизацию вычислений и работу с памятью.
// Упрощенный пример проекции вершины в моем проекте
struct Vec3 { float x, y, z; };
Vec3 projectVertex(const Vec3& vertex, const Matrix4x4& viewProjMatrix) {
Vec4 homogenousCoord = multiplyMatrixVector(viewProjMatrix, Vec4{vertex.x, vertex.y, vertex.z, 1.0f});
// Перспективное деление
if (homogenousCoord.w != 0.0f) {
return {homogenousCoord.x / homogenousCoord.w,
homogenousCoord.y / homogenousCoord.w,
homogenousCoord.z / homogenousCoord.w};
}
return vertex;
}
Также интересуюсь embedded-разработкой на STM32, что поддерживает мои навыки работы с регистрами, прерываниями и bare-metal кодом.