@sprig@mastodon.gamedev.place
@sprig@mastodon.gamedev.place avatar

sprig

@sprig@mastodon.gamedev.place

Solo dev making a roguelite coop sailing game set in the oceans of hyperspace. ⛵️🕹🌌 And building my own open source engine, Sprig. 🌱🏞 ex: MakeCode, Kodu, Microsoft Research, University of Washington PLSE, Azure Sphere

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

sprig, to webgpu
@sprig@mastodon.gamedev.place avatar

WebGPU + typescript life hack: modify GPUObjectDescriptorBase typing so that "label" is required. You'll get much better error messages and your future self will thank you.

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

Ok so my friend sent me a code for ghosts of tsushima and I got sucked into it. RIP stardew valley. Wow it is such a great game. It's like a more grown up, more violent Zelda game.

sprig, (edited )
@sprig@mastodon.gamedev.place avatar

@demofox Indeed! And they have a few great gdc talks. There's a good one on their grass which I really want to reimplement and then extend with blade-accurate grass cutting. Imagine swinging your katana around a grassy field, bits flying everywhere, and after the fight you see the history of the battle written in chaotic crop circles.

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

Oh no what happened to all my forests 😭

sprig,
@sprig@mastodon.gamedev.place avatar

@lisyarus Ecocide Achievement Unlocked

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

For folks that know me as "the blue noise guy", I've put together a 50 minute video that talks about many of the things I've learned in my ~decade long dive into noise and related topics - up to and including our latest paper published days ago at I3D.
I hope you enjoy it!
https://www.youtube.com/watch?v=tethAU66xaA

A slide showing how random numbers which are positively correlated on the screen give correlated resulting renders, uncorrelated random numbers give uncorrelated renders, and negative correlation random numbers give negatively correlated renders. Negatively correlated renders have the best perceptual quality, despite all three having the same actual error.

sprig,
@sprig@mastodon.gamedev.place avatar

@demofox Just getting to this and continued fractions just blew my mind. I had no idea you could analyze irrationals like this and that the golden ratio is the "most irrational" b/c of it's pessimal approximability is super neat!

sprig,
@sprig@mastodon.gamedev.place avatar

@demofox Oh that's interesting! Makes me wonder if there's "1111211112" hiding out there or in the extreme case "1111...(arbitrary?)...1112" ? Like is there some theoretical reason that the run of 1s couldn't be arbitrarily long?

sprig,
@sprig@mastodon.gamedev.place avatar

@demofox I'm going to make this my "blue noise epiphanies" thread:

I'm wondering it'd be reasonable to use 1d blue noise or golden ratio shuffle to select indices into some resource pool. E.g. say I've got a particle pool that's full and I want to spawn a new particle but I don't want to track lifetimes or keep a free list, I could just claim indices using the golden ratio and you wouldn't see old particles disappearing in a pattern.

sprig,
@sprig@mastodon.gamedev.place avatar

@demofox Oh neat. Is this conceptually similar to "multi-class" blue noise you alluded to with the chicken's eye? Two layers, different within, different across. (I'm only at 23:52 in your video; taking lots of notes haha)

sprig,
@sprig@mastodon.gamedev.place avatar

@demofox Oh hmm. Say I wanted to spawn 20 new particles in a burst. Instead of picking these indices across the whole buffer, I could pick them within some subset range that is more likely to be cache friendly. And that process of which range to pick could itself be blue noise!

But maybe this is way too complicated and should instead use some other alloc scheme haha

sprig,
@sprig@mastodon.gamedev.place avatar

@demofox That seems ideal. Say you've got some address with higher-oder (HO) and lower-order (LO) bits. You advance your HO index using an LDS every once every max value of your LO bits, and the LO index is advanced using some LDS.

I think this evenly samples the whole address space over time? But if your LO size is about some cache size maybe it'll be cache friendly?

sprig,
@sprig@mastodon.gamedev.place avatar

@demofox Great survey talk btw!
Here's what I think I've taken away (a lot of these concepts are first time for me):

LDS means single index with unknown upper limit produces even distribution
LDS: great for when you want even distribution w/ unknown length
Golden ratio: pretty much ideal LDS for 1D, but for higher dimensions maybe see R2
BN: better than LDS if you want the properties or feel of randomness

sprig,
@sprig@mastodon.gamedev.place avatar

@demofox

BN: can help you trade quality for speed by sampling w/ small probability tables (beware the cache)
BN: a lot easier to denoise than WN, in fact your visual system might naturally be denoising
BN: ideal for small sample counts were you don't have the luxury of convergence
many small filters add up to gaussian; gaussian removes high frequencies
WN: has clumps and voids, might be what you want for e.g. perlin noise

sprig,
@sprig@mastodon.gamedev.place avatar

@demofox

Fast noise: u can design noise around the filter for better BN-like properties in the output domain(?)

sprig,
@sprig@mastodon.gamedev.place avatar

@demofox Ah thank you! These are really helpful clarifications. Gives me a lot to chew on.

This is a very interesting space. The approach of reducing samples to increase speed but choosing your samples carefully to minimize perceptual loss seems very general.

Now I need to look at everywhere where I'm doing box filtering and consider if I can make better use of my resources..

sprig,
@sprig@mastodon.gamedev.place avatar

@demofox If only there were a "blue noise" guy to fill that niche :P

sprig,
@sprig@mastodon.gamedev.place avatar

@demofox Thinking through some non-rendering use cases in my engine, maybe:

enemy aiming: making hit vs miss more fair w/ LDS

evenly spaced colors: Like Martin's approach, but use a more perceptual color space, like OkLab, and use LDS with A & B and with fixed-ish L

network queue: When there's more objects to be synced over the network than capacity, assign priority weights and than using an LDS to reduce starvation of lower priority items instead of just top-priority first.

sprig,
@sprig@mastodon.gamedev.place avatar

@demofox Ha because of course you would have a blog post on this topic. Neat! I'm definitely saving that link. :)

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

Graphics Programming weekly - Issue 338 - May 5th, 2024 https://www.jendrikillner.com/post/graphics-programming-weekly-issue-338/

sprig,
@sprig@mastodon.gamedev.place avatar

@jendrikillner Thank you so much for putting these together every week! I've been reading these for the last 3 years and they've been super helpful to my journey as a graphics programmer.

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

If you are a rendering person who wants the freedom to explore possible future rendering techniques, or want time to solve real problems hitting game devs, SEED is a great place to work.
The last 2 years has been mainly self led, working on some things I'm real proud of. A couple of them becoming public over the next couple months.
SEED Sr. Rendering Engineer Opening:
https://ea.gr8people.com/jobs/183637/senior-rendering-engineer-seed?locale=en

sprig,
@sprig@mastodon.gamedev.place avatar

@demofox Looking forward to the day I can qualify for roles like this. I've been keeping an eye out for non-senior graphics roles for the last 3 years and there's been barely any.

sprig,
@sprig@mastodon.gamedev.place avatar

@demofox Thanks, I think I'll do that :)

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

I've completely remade my blog! Changed the design, improved the look of formulas, fixed broken links and typos, etc.

I was thinking of making a thread with my favourite articles, but that would be about a dozen of them, so I'll just drop the blog link here :)

https://lisyarus.github.io/blog/index.html

sprig,
@sprig@mastodon.gamedev.place avatar

@lisyarus Love the drop shadow and background. I've been thinking about taking my site in similar direction. I miss tasteful non-flat designs like this

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

I love @saint11 's gamedev Hacker-News-like and really want it to succeed! Please come join the discussions! :)

Here's @minionsart 's excellent new post on cutting grass w/ compute shaders: https://gamedev.city/s/gwsfk9/grass_system_extension_cutting

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

As someone who joined wanting to revolutionize rendering, and left wanting revenge (and I will have revenge at some point), I'm not sure this is the right pov.

sprig,
@sprig@mastodon.gamedev.place avatar

@BartWronski @demofox @jon_valdes I've read this whole thread/tree, I don't see where Alen implies anything like "only bullshit people or career climbers get promoted" ?

sprig,
@sprig@mastodon.gamedev.place avatar

@BartWronski @demofox @jon_valdes In the interest of truth-seeking and empathetic discourse, from my view saying "because you didn't do what you were told to and were pursuing your interests targeting your own blog instead" seems like a smear that is out of place with the values you listed. I think you're saying it's not even that he experienced the "bad 5%", but that you have enough information to judge that he is the one in the wrong and enough confidence in that to post it publicly.

faassen, to random
@faassen@fosstodon.org avatar

I don't know enough about ECS or datalog (or egglog, even) but I wonder whether they would go together well.

Maybe @alice_i_cecile would be kind enough to venture a comment; is this a new thought, and is it a useful one?

sprig,
@sprig@mastodon.gamedev.place avatar

@faassen @alice_i_cecile

Yes Max (the creator of egg) and I chat about this somewhat regularly. Relational algebra seems like the "right" way to think about a lot of this and egg2 is moving more towards it. ECS feels pretty clearly like a subset of relational algebra and I think ECS queries should be written and talked about in this way. The difficulty is in the implementation's speed. But I'd be curious how far you could get just using an in memory columnar db as a game's main data store.

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

Trying some more interesting shapes other than cubes in my physics engine :)

video/mp4

sprig,
@sprig@mastodon.gamedev.place avatar

@lisyarus Nice!!
Crazy idea: what if u modeled the gyroscopic force so those tires stayed upright longer when rolling downhill?🚲

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