Nikita Lisitsa

Nikita Lisitsa

@lisyarus.bsky.social

He/him I teach C++ & computer graphics and make videogames Working on a medieval village building game: https://youtube.com/playlist?list=PLSGI94QoFYJwGaieAkqw5_qfoupdppxHN&cbrd=1 Check out my cozy road building traffic sim: https://t.ly/FfOwR

7.8K followers979 following3.1K posts

One more cosmic-ish multiscatter render with scattering coefficients being kinda inverse of those seen in Earth's atmosphere (red scatters a lot, green scatters somewhat, blue scatters a bit)

Added clamping for the path traced samples, now the image is a bit darker than it should be but at least it converges to something presentable instead of a noisy mess

This is an offline monte carlo volumetric path tracer, using delta tracking to sample the transmission term, unbiased up until the final clamping step. The wavelength-dependent scattering is intentional, it's unrealistic for Earth-like clouds.

Finally implemented multi-scattering in my monte-carlo volumetric path tracer. Kinda not impressed with the result: it's extremely noisy while simply looking much brighter, idk? Here's a comparison: single-bounce, 2-bounce, 3-bounce, and full unbounded multi-scatter.

Reduced the frequency of the Worley noise by half and now the periodic noise artifacts are basically gone. I think this render is my favourite so far 🥰 Really need to add multi-scattering, should make it look even better

Mixed the disney cloud 3D texture with a higher-frequency Worley noise for some extra detail. I like it but there are some noticeable directional artifacts due to periodic noise...

Also tried tricubic interpolation of density data. As expected, it's much smoother, removes blocky artefacts, and is generally more suitable for stuff like clouds, at the expense of 8x texture samples. Left: trilinear, right: tricubic

An attempt at supporting wavelength-dependent absorption & scattering in my volumetric path tracer. Each path simply selects a random color channel to work with 🙃

Volumetric path tracing adventure continues: added single-scattering by approximating the shadow ray transmittance using ratio tracking. Took a while to get all the coefficients right. Left: raymarched, right: path-traced #graphics

"approximating" is poor wording though, I should've said "sampling shadow ray transmittance". As far as I understand, this thing is unbiased and converges to the true image over time

Decided to try some volumetric path tracing. Just absorption + emission for now, no scattering. Using delta tracking to generate samples with pdf proportional to transmission (exp of minus integral of absorption). Left is raymarched, right is path traced. #graphics

Found a fun simple tone-mapping operator: 1 - exp(- 3*x*x) The 3 constant is configurable, of course. Has the typical features of filmic tonemappers (a toe, a linear-ish section, a shoulder converging to 1), but the formula is dead simple 😊 Seems to oversaturate things, though #graphics

#graphics folks, what are some interesting missing features / unsolved problems / etc. in shader compilation / optimization / profiling / tools? One of my students wants to do something like this for their masters degree.

Me: doing computer graphics for 10+ years, teaching it for 5+ years, made hundreds of graphics demos and pet projects Also me: spent an hour debugging what turned out to be a missing cosine term in the Lambertian brdf (aka THE ONLY nonconstant term) 😓

Nikita Lisitsa reposted

Burn With Me launch is definetely exceeding my expectations. In 1.5 days we're at 100 reviews and almost at 5000 copies sold! It's still wild for me how many people play the game and even connect with it - even though it's a very intimate experience of a game.

Found some time to work on the game: now hidden "mycelium" entities are spawned at worldgen, which in turn grow mushrooms around them over time! 🍄‍ Next I'll probably start overhauling the whole cooking system. Expect delicious mushroom stews 🍲 #gamedev #indiedev #indiegames

I'm so so tired and I want to work on the game so so badly Aaanyway my recent uni cg course lecture was about rendering to texture, the students gonna do some post-processing to the beloved Stanford dragon

Having 𝕚 𝕕 𝕖 𝕒 𝕤 on how to improve shadows in my game. Something like virtual shadow maps but simpler and fitted to my case. If it works out that would be rad since my current CSM implementation is about 70% of the whole frame GPU time. #indiedev #gamedev #indiegames

The first homework assignment for the stundents on my webgpu (wgpu, really) course! (There are stars in the bg, might be hard to tell) Has everything we've covered so far: shaders, pipelines, vertex buffer layouts, transformation matrices.

Previously I'd make them implement marching squares on CPU (and re-upload the relevant data to GPU each frame), but over the years I've come to realize this task is more about algorithm technicalities and less about graphics itself (plus this better be done with compute anyway).

There's once again an increase in extremely AI-looking reply accounts here (reciting your post + mandatory dumb follow-up question). Previously they did like 10 replies per minute, but now they seem to imitate natural human activity. Or are these just humans imitating AI? Can't be sure anymore

Working on a "mycelium" system for mushrooms rn - an invisible hot spot entity that spawns near trees and will periodically produce mushrooms around itself, making a renewable mushroom gathering area #gamedev #indiedev #indiegames #screenshotsaturday

Nikita Lisitsa reposted

Visualising the distribution of substrings in the genomes of different organisms. Going up to depth eight by recursively splitting into quadrants, we get these fractal-like pictures.

The firing mechanic is finally done! 🔥🧱 It introduced a bunch of entirely new concepts (fueled crafting recipies, crafting in batches, crafting that requires time to be completed), so I've been refactoring a ton of code lately 😅 #gamedev #indiedev #indiegames

> "I've built an entirely custom GPU pipeline" youtube video > Look inside > "Everyone draws triangle meshes, but do we actually have to?" > Whoa, some voxel raymarching or smth > Continue watching > ... > It's basic instanced triangle meshes with compute culling 🙄🙄🙄

Nikita Lisitsa reposted

df_game_data v1.0.0 released! github.com/Atrix256/df_... An editor and data compiler for read only game data in C++. Describe schemas using C style stucts, edit data in the editor, compile data to make a .bin file and a generated .h, use the .h to load the .bin in your code, make your game.

#gamedev folks, what do you think of open-ended games, with no specific goals or ways to "beat" it? E.g. Rimworld or Factorio have ways to "win" them which are really not why/how most players actually play the game anyway. What if they didn't have a victory condition at all?