Pavel Krajcevski

krajcevski (at) gmail (dot) com

Current Projects

Disclaimer: These are projects that I work on semi-regularly in my spare time. This is not to say that they are fully featured or that they currently work, or even that they're interesting.

PBRT in Rust
A port of PBRT written in Rust

In order to learn a new language, the best strategy is to make something concrete. As I have specialized in texture compression during graduate school, I was never exposed to some of the more advanced rendering topics, especially those in offline rendering. This was my attempt to kill two birds with one stone and learn both about physically based rendering and the Rust programming language. It is a full rewrite of PBRT-v2 as outlined in the second edition of the book. (The third edition was released only after I had invested significant effort with the second.)

A game engine written in Haskell

A while ago, John Carmack rambled on about how functional languages bring a significant amount of power to expressing programs. He posits that this is especially important for games, but there's no real way to prove it unless you actually put it into practice. This is my attempt at doing so, and so far it's been messy but extremely rewarding.

Previous Projects

GPU-decodable Supercompressed Textures

This project was based on an ideal that we could develop the start of a universal intermediate format of the type that could be decoded directly on the GPU. The result was an OpenCL implementation of a proof-of-concept encoder. It is not production-ready, but it shows that this kind of approach is viable and works. Details can be found in the associated paper.

Fast Texture Compressor for various formats

This project was originally aimed to create a solution to the problems with the existing tools for compressing textures into the BPTC or BC 7 format. At the time it generated order-of-magnitude speedups while maintaining comparable visual quality. The project provides both a library and a tool that fits into content development pipelines in an unobtrusive way. Ideally, it can be used for intermediate builds, while the higher quality tool that comes bundles with the NVIDIA Texture Tools can be used for production (although it is much slower).

The Virtual Pediatric Airways Workbench

This was a project that I worked on as part of a collaboration between Applied Math, Medicine, and Computer Science at UNC. The goal was to create a tool that allowed surgeons to use a haptic device to feel the inside of a patient's airways. Afterwards, the surgeon would plan operations by using the device to alter the patient's airway geometry and visualize the effects that this had on airflow.

A game based on RVO2

This was the first project I participated in at UNC. It was started as a way to demonstrate the ability to develop a game based on the crowd simulation research being done in the GAMMA group. The core gameplay revolves around herding sheep in order to separate sheep with different attributes. The algorithm is based on a combination of BOIDS in conjunction with the RVO2 library that has been used in AAA titles. A more complete informational page is also available.