@aeva@mastodon.gamedev.place
@aeva@mastodon.gamedev.place avatar

aeva

@aeva@mastodon.gamedev.place

I'm a just a small town AAA graphics programmer in Chicago. I worked on Gears 5 and Gears Tactics. My work is secret, but my personal projects are not.

I like to post about my personal research, various side projects, and I like to think out loud a lot. Expect weird humor, esoteric ramblings, and occasionally also art I made out of math. I like implicit surface modeling the normal amount. Amateur spoonie. 🏳️‍⚧️

Curses are just blessings with caveats.

This profile is from a federated server and may be incomplete. Browse more on the original instance.

aeva, to random
@aeva@mastodon.gamedev.place avatar

It doesn't look like much, but with some minor tweaks to 's new WIP high performance renderer, my Sigmar's Garden clone is now playable on this old Core 2 Duo laptop, running entirely in llvmpipe. It's hitting a blazing fast 8 fps and looks terrible, but the UI is responsive enough.

aeva,
@aeva@mastodon.gamedev.place avatar

Obviously this won't be viable for all kinds of games, but this does mean that if you really wanted to you could support a minspec target that's 15 years old!!

aeva,
@aeva@mastodon.gamedev.place avatar

I wonder if supporting OpenGL 2.1 or OpenGL ES2 simultaneously with OpenGL 4.2 is easier. I'm using Glad for my library loader, but I'm also using DearImGui. DearImGui's GL2 backend has a cautionary note saying that you shouldn't use it, but it otherwise seems to work? Their GL3 backend is actually GL3/ES2/ES3, and is configured via compile time options, so it might not be possible to support ES2 and GL 4.2 in the same build, unsure.

aeva,
@aeva@mastodon.gamedev.place avatar

Supporting ES2 is a prerequisite to eventually supporting WebGL, but it also means having to keep shaders written against two different versions of GLSL. On the other hand, the new renderer is just rendering triangles with vertex colors, so if I went w/ GL2 for now, then I could just do fixed function rendering and skip the shaders :3

aeva, to random
@aeva@mastodon.gamedev.place avatar

sigh I think 🍊 is starting to get to the point where I can't stop pretending I don't need a task graph

aeva,
@aeva@mastodon.gamedev.place avatar

@c0dec0dec0de also I'm trying to stick to c++17 for now for reasons

aeva,
@aeva@mastodon.gamedev.place avatar

@oblomov I've found that OS schedulers generally do the right thing so long as you the number of active threads you schedule are within your core count, and C++ has a standard interface for finding that out.

My philosophy for targeting PC is you'll get better performance if you leave some slack for the OS to schedule other things, because it is going to happen anyway and you don't have control over when for good reasons.

aeva,
@aeva@mastodon.gamedev.place avatar

@dougbinks perhaps! So here's what I need:

Recurring events that have to happen every frame, which are currently one "task" but might make sense to split

  • update the UI
  • run connected Lua callbacks
  • render
  • present

Long-running async events:

  • meshing

Frequent semi-synchronous events that should be rescheduled as many times as possible per frame without creating a traffic jam, but ideally at least once:

  • pick a random vertex on a random model and (re)calculate it's lighting
aeva,
@aeva@mastodon.gamedev.place avatar

@oblomov well one of the ways we do this in games typically is we create a thread pool, and feed them with a queue of polymorphic "job" objects

aeva,
@aeva@mastodon.gamedev.place avatar

@oblomov yeah

aeva,
@aeva@mastodon.gamedev.place avatar

also in related news I'm annoyed that std::thread doesn't have a kill interface :|

aeva,
@aeva@mastodon.gamedev.place avatar

I say task graph but I really it's more that I need a scheduler because the CPU workload now includes very long running jobs that absolutely should not block the UI thread.

aeva,
@aeva@mastodon.gamedev.place avatar

@oblomov Yeah, the important thing is the program remains interactive as it's trying to crank through a ton of math, since it is a game engine after all. The real art here is maximizing throughput without making the user feel like it's running worse.

std::thread lets you access the platform thread handles iirc, so I could also add platform specific scheduler hints too.

aeva,
@aeva@mastodon.gamedev.place avatar

@oblomov and in this case by "performance" I mean responsiveness, and not total throughput

aeva, to random
@aeva@mastodon.gamedev.place avatar

Calling it now: dorsey is going to trick elon into buying "bluesky". I'm guessing six months, maybe a year.

aeva,
@aeva@mastodon.gamedev.place avatar

@tvler I assumed they're independent but idk

aeva,
@aeva@mastodon.gamedev.place avatar

nothing says "decentralized" like making people publicly beg for invites

implicit_cast, to random

Is anyone using the Meta Language to implement machine learning algorithms that model fluid dynamics on the order of megaliters?

aeva,
@aeva@mastodon.gamedev.place avatar

@implicit_cast no, but I've used different languages to implement regular algorithms that model other things at scales that are primarily measured in distance units, if that helps

krmld, to random

Hello world! :mastodon:

aeva,
@aeva@mastodon.gamedev.place avatar

@krmld hello!

wombatzus, to random

Sure glad I had the guys doing construction in my neighborhood at 8am on a Saturday to make sure I didn't sleep too late.

aeva,
@aeva@mastodon.gamedev.place avatar

@wombatzus morning people i tell ya

aeva, to random
@aeva@mastodon.gamedev.place avatar

I made some good progress on the new renderer for tonight! The shape in this screenshot is rendered as simple polygons with vertex colors instead of via ray marching, but this is still an SDF model. This is running at "interactive speeds", even though this is running with OpenGL emulated in software on a 15 year old laptop.

aeva,
@aeva@mastodon.gamedev.place avatar

@jsbarretto here's a video I put together back in January demonstrating the technique with a more quick-and-dirty implementation https://mastodon.gamedev.place/@aeva/109770538818503770

aeva,
@aeva@mastodon.gamedev.place avatar

@pyro I don't see it?

aeva,
@aeva@mastodon.gamedev.place avatar

@jsbarretto thanks! the technique I'm looking to eventually implement is going to be a modification to use a different kind of lattice, and some oddities to allow for adaptive incremental meshing. But that's a ways out.

aeva,
@aeva@mastodon.gamedev.place avatar

@jsbarretto naive surface nets currently, but I'm going to rip it out and replace it with something better eventually

aeva,
@aeva@mastodon.gamedev.place avatar

@jsbarretto I'm basically trying to aggressively min-max fill rate so that I can run this super low latency on higher end stuff, but also have it scale down about as well as it can to legacy hardware

mcc, to random
@mcc@mastodon.social avatar

[target.'cfg(target_arch = "wasm32")'.lib]
crate-type = ["cdylib", "rlib"]

This doesn't do anything. In my cargo.toml. Cargo just like… it ignores it. It doesn't seem to have any effect.

Anyone know why?

aeva,
@aeva@mastodon.gamedev.place avatar

@TomF @mcc programming bat :D 💻🦇

aeva,
@aeva@mastodon.gamedev.place avatar

@mcc @TomF oh yeah, that's a bit off the golden path. uh. shell scripts I guess?

aeva,
@aeva@mastodon.gamedev.place avatar

@TomF @mcc was it a bell?

  • All
  • Subscribed
  • Moderated
  • Favorites
  • megavids
  • khanakhh
  • mdbf
  • ethstaker
  • magazineikmin
  • GTA5RPClips
  • rosin
  • thenastyranch
  • Youngstown
  • InstantRegret
  • slotface
  • osvaldo12
  • kavyap
  • DreamBathrooms
  • JUstTest
  • Durango
  • everett
  • cisconetworking
  • normalnudes
  • tester
  • ngwrru68w68
  • cubers
  • modclub
  • tacticalgear
  • provamag3
  • Leos
  • anitta
  • lostlight
  • All magazines