Elektrine
Log in Register
Paige Chat Timeline Gallery Friends Email Drive DNS Private DNS Domains VPN Kairo Nerve
Remote

Tom Forsyth

@TomF@mastodon.gamedev.place
mastodon 4.7.3
  • Open on mastodon.gamedev.place

Graphics coder and HW architect, previously at Muckyfoot, RAD Game Tools, Valve, Oculus, Intel, Rec Room and Riot.

4955 Followers
257 Following
50 Posts
Joined December 19, 2017
Web:
http://eelpi.gotdns.org
Blog:
http://tomforsyth1000.github.io/blog.wiki.html
Bluesky:
https://bsky.app/profile/tomforsyth.bsky.social
Twitter:
https://twitter.com/tom_forsyth
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 1w ago
DASHR - Dynamically Animated Skinned Heightfield Rendering Short video for now - I might do a longer one later? https://youtu.be/-Su9YrcazRk But there's ALL the details in the paper, and you can always Use The Source, Luke for the really deep info. https://github.com/tomforsyth1000/DASHR

DASHR - Dynamically Animated Skinned Heightfield Rendering - six minutes version

112
0
59
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 2mo ago
Replying to
@mmcknett@hachyderm.io @bkuhn@fedi.copyleft.org @eniko@mastodon.gamedev.place @sinbad@mastodon.gamedev.place My rule-of-thumb is you should always know about the "next level down" from where you're writing code, and be able to at least picture in your head what that would look like. So if you're writing C#, you should still know roughly what the corresponding C++ would look like - when things are being allocated, whether something is a pointer or a copy, etc. C++ - you should be able to write the C. Which ones are VTable jumps? Raw C - you should know assembly. etc.
59
7
18
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 1mo ago

Thinking about zero-cost abstractions.

Thinking about how I found a bit of C# code that did:

array = new_item + array;

...and realising a few things:

1. Knowing this is bad is instinctive. Didn't even need to think about it.

2. The person who wrote this has no idea why this is worse than "array = array+ new_item"

3. Nothing in the language would guide them towards this knowledge.

4. This is probably rampant in all the other bits of code I don't see.

5. Zero-cost abstractions never are.

21
5
3
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 3mo ago
Replying to
@cwebber@social.coop Reminds me of "rabbit" which used to specifically refer to baby lagomorphs - the equivalent of "puppy" and "kitten". The name for an adult was "coney", and it rhymed with "money" and "honey" as you'd expect. The problem was that "coney" became slang for lady-parts, and so (a) they used "rabbit" instead and (b) they changed the pronunciation to cone-ey. Fortunately English responded to having "coney" removed from common use by making "pussy" slang for lady parts instead. Indomitable!
41
9
12
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 4mo ago

English is so malleable. My wife and I were discussing our cat, who is easily miffed. She is normally quite gruntled, but she is sensitive to miffages such as being moved, and then even if the place she was moved to has high gruntleage (e.g. a lovely sunbeam), she will remain in a high-miff state and disenflounce. Even if she is then regruntled by e.g. being stroked, she still does not link the event to the increased gruntlement because of the mifficatious event that interrupted.

25
2
4
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 2mo ago
Replying to
@NanoRaptor@bitbang.social PLANE, BEES, SHARK, GUN, DAUGHTER is one of those cognitive tests that POTUS is so proud of passing.
10
0
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 4mo ago
Replying to
@NanoRaptor@bitbang.social A well-spun tale - thankyou.
24
1
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 3mo ago
Replying to
@jonikorpi@mastodon.gamedev.place Fixed point! Fixed point! Fixed point! When you need proper precision, accept no substitute.
13
8
1
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 2mo ago

LTTP, but just started watching We Are Lady Parts. It's going to offend lots of people for lots of reasons - don't let any Americans watch it, they'll lose their shit. I love it so far!

If you saw Polite Society - same writer/director - Nida Manzoor.

7
5
1
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 4mo ago
Replying to
@adamrice@c.im @NanoRaptor@bitbang.social The quote is: "Sometimes magic is just someone spending more time on something than anyone else might reasonably expect." ...and I think the nuance of the phrase "reasonably expect" is lovely. It applies to any somewhat daft skill really.
21
3
3
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 4mo ago
Replying to
@foone@digipres.club Christ that is sick though (complimentary). Those people need help (admiring). That's an absurd amount of engineering that will fail in all sorts of fascinating ways (anticipatory).
15
0
4
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 2mo ago
Replying to
@jn3008@mastodon.social The loop is so satisfying! Well done.
8
0
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 4mo ago

Deciding on Pico-8 vs Tic-80 for teaching tweenagers to code. They're very similar systems - either is fine.

I think Pico-8's 128-pixel-wide screen is too small for coding on. Tic-80s is 240 which is nearly twice as wide. Yes, you can use an external text editor for both, but I think that's a distraction for people starting out.

Tic-80 has slightly better graphics - two layers, more colours. But I don't think that matters for the kids learning.

Otherwise very similar - anything I'm missing?

9
16
3
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 3mo ago
Replying to
@jonikorpi@mastodon.gamedev.place Uuuuu... it's pretty close to that simple. You need to pick a scale that "1" means - millimeters or whatever. Stick it in a constant and you can change it later. Any time you read the fixed-point position of an object, subtract the fixed-point position of the camera. Do the subtraction also in integer. Then convert the int to float and multiply by the scale. That's the camera-relative position (e.g. in meters). The rest is just like normal.
5
2
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 2mo ago
Replying to
@whitequark@social.treehouse.systems Imperial vs metric crickets. DO NOT LET THEM TRY TO BREED. They either get wedged together permanently or they rattle around and damage both of them.
3
0
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 3mo ago
Replying to
@NanoRaptor@bitbang.social This is what happens when you don't get @chipzel@mastodon.social on the job.
5
0
1
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 2mo ago
(apologies if you already read this rant on Bluesky) I am so tired of people who can't code telling me about how AI helps them code to 1% of the ability of a professional, which sure is 10x for them. It's like me telling people that the invention of music theory will make actual musicians obsolete because now I, too, can write chords that sound OK.
3
0
1
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 3mo ago
Replying to
@jonikorpi@mastodon.gamedev.place Same for testing collision between objects. Subtract one fixed-point position from another as integers, convert to float, multiply by scale, and now just use as normal float32. Because it's *offset* from one to the other, it's totally fine to use a float, because that only loses precision when they're far away - in which case they didn't collide any :-)
3
1
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 5mo ago
Replying to
Update! I grabbed: -Dear ImGui Win32+DX11: https://github.com/ocornut/imgui/wiki/Getting-Started -https://gargaj.github.io/demos-for-dummies -https://github.com/jobtalle/ccVector -My own tiny library of misc stuff. I put them in the supercollider, and it works great. Well... except the vector library - I don't really like that because it's a "To" lib not a "From" lib. I'd be happy to replace that. This is a great starting point for my stuff. Vaguely thinking of publishing the combined mess - not sure.
GitHub

Getting Started

Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies - ocornut/imgui

7
12
1
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 4mo ago
Replying to
@DevteamLife@mastodon.gamedev.place Had one of those today. "How did this ever work?" Did finally figure it out - basically luck. But at least I know why.
6
0
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 4mo ago
Replying to
@cabel@social.panic.com As someone who has transcribed many 8-bit BASIC programs from one platform to another, it is tragic how a screen full of POKEs is correctly interpreted as C64. Every other platform had an actual BASIC that you could do things with!
4
2
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 5mo ago
Replying to
The shocker should be the AE86. Why do a quarter of Mastodon know the codename of a 2-door Toyota that was only made for 4 years back in the 80s? The answer is of course because you're all Eurobeat weebs and love Initial-D - it was the hero's car used for tofu delivery and wicked drifting. The thing is, if that's why, then what about the FD. There were two prominent RX7s in Initial-D, and they all called them "the FC" and "the FD" to tell them apart. /shrug
6
4
2
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 4mo ago
Replying to
@NanoRaptor@bitbang.social "That's not how it works. That's not how any of it works."
4
0
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 2mo ago

Most heinous rhyme you secretly admire:

1
4
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 5mo ago
Replying to
@volpeon@icy.wyvern.rip "What did you choose, Ray?"
4
0
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 5mo ago
Replying to
@mcmartin@mastodon.gamedev.place @colinstu@birdbutt.com @gabrielesvelto@mas.to @emilvolk@tiggi.es That said, one thing you won't learn from 16bit programming is about caches, because almost none of them had any. Caches are enormously important for performance even in managed languages like C# etc. And they're not easy to think about without just spending time with a profiler. So this is one subject I don't have a magic learning tool for, sorry.
4
0
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 2mo ago
Replying to
@mmcknett@hachyderm.io @bkuhn@fedi.copyleft.org @eniko@mastodon.gamedev.place @sinbad@mastodon.gamedev.place Yes - you should IDEALLY know the whole stack. But it's very difficult to think about micro-op scheduling when you're writing C#! Once you know all the levels, your choice of language should be decided by what you need to mentally model. If the details of the asm are perf-critical, then you should be writing in C. If the details of memory management are important, C# is not the right choice. Of course in practice we don't usually get to choose :-(
1
0
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 4mo ago
Replying to
@coolandnormal@aus.social @adamrice@c.im @NanoRaptor@bitbang.social That was such a great show! And he was right - it was a very annoying explanation.
2
1
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 5mo ago
Replying to
@mcmartin@mastodon.gamedev.place @colinstu@birdbutt.com @gabrielesvelto@mas.to @emilvolk@tiggi.es My view is a little more nuanced. I also believe that it is extremely useful for EVERYONE to do some 16bit programming (8bit is also great, but it's the same lessons, and it's a lot more brutal). Knowing how SOME code works all the way down to the assembly level is useful. But yes when you are actually writing modern codebases, if you try to think that low your head will explode. That's when you want to be able to think "one level down".
2
1
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 4mo ago
Replying to
@Lydie@tech.lgbt Very cool.
1
0
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 4mo ago
Replying to
@greem@cyberplace.social @cstross@wandering.shop It's not stupid. It's advaaaaaanced.
1
0
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 5mo ago
Replying to
@pythno@mastodon.gamedev.place I was being figurative - talking about the big round thing buried under Lake Geneva. Just smash that code together, pick up the pieces later.
1
1
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 5mo ago
Replying to
@JamesWidman@mastodon.social Yeah that would be cool. I've sometimes thought about trying to structure a series of commits like this - not so they can actually be done separately (code probably won't compile mid-way through), just to tell the story.
1
2
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 5mo ago
Replying to
@thankfulmachine@oldbytes.space @estelle@mstdn.social I prefer the R33 - I had one when I lived in London. Had to sell it when I moved to the US :-( But I have an R35 instead now.
1
2
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 3mo ago
Replying to
@sol_hsa@mastodon.gamedev.place @jonikorpi@mastodon.gamedev.place People get hung up on multiplies and divides, but in practice if you're just using fixed point for absolute world position and absolute time, you should never be multiplying those by anything. If you are, you've gone wrong somewhere. Convert them to an offset/delta relative to something nearby, and hey now you can use floats just fine, because 0.0f "means" something (that the two things are in the same place/time)
0
1
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 5mo ago
Replying to
@karrfis@tech.lgbt Do you type on it or wear it?
0
2
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 5mo ago
Replying to
@thankfulmachine@oldbytes.space @estelle@mstdn.social Shoulda called it a Mustang.
0
2
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 5mo ago
Replying to
@lenary@types.pl ...and I think my Seven is small...
0
2
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 5mo ago
Replying to
@aachrisg@mastodon.gamedev.place I'll take a look!
0
0
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 5mo ago
Replying to
@lenary@types.pl Oh as in the 1920s-30s car? Fantastic!
0
2
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 5mo ago
Replying to
@estelle@mstdn.social It's easier now - I guarantee 99% of the real AE86s will have been painted black and white with "Fujiwara Tofu Store" written on the side.
0
6
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 4mo ago
Replying to
@jkaniarz@mastodon.gamedev.place I meant, anything else to differentiate between the two.
0
1
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 5mo ago
Replying to
@tjheuvel@mastodon.gamedev.place Which direction matrix multiplies happen. So whether your naming scheme is: cameraPos = cameraFromWorld * worldFromObject * objectPos; or cameraPos = objectPos * objectToWorld * worldToCamera; They're equivalent, but the first is more cromulent with assignment-on-the-left which most languages are.
0
0
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 3mo ago
Replying to
@markarayner@mas.to New trancecore album cover.
0
0
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 3mo ago
Boosted by @GroupNebula563@mastodon.social
Replying to
@foone@digipres.club @mjg59@nondeterministic.computer @NanoRaptor@bitbang.social Who amongst us is not just three theropods in a raincoat?
0
0
1
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 5mo ago
Replying to
@lenary@types.pl Is that an Austin 7? I have three Caterhams :-)
0
5
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 2mo ago
Replying to
@VeroniqueB99@mastodon.social No, they were usually comparing them to other Europeans (Germans, Brits, etc). Everyone always knew Americans were fundamentally fucked - they weren't in any studies :-)
0
1
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 5mo ago
Replying to
@jlfischer@mastodon.social Even given that it's unknown outside the US, I am still surprised more people didn't know that one!
0
0
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 2mo ago
Replying to
@unnick@booping.synth.download I would find the weighted average vector, normalize, then project the original three onto the plane with that normal. Then do barycentric interpolation from there. I think it satisfies all your conditions? It's not true slerp in the 2-case, but true slerp is overrated. http://number-none.com/product/Understanding%20Slerp,%20Then%20Not%20Using%20It/
number-none.com
0
0
0
0
Open post
Tom Forsyth @TomF@mastodon.gamedev.place
· 4mo ago
Replying to
@tsturm@famichiki.jp @cabel@social.panic.com Nah, those people were slackers. You can do it all in BASIC if you think hard enough.
0
0
0
0
Back
313k7r1n3
Elektrine

Tor hidden service

elekhj7afj4qnrr4yd3bkzslsyo5jgfxw3orgjkhlcxifueodybyiiad.onion

I2P eepsite

j6b6cyk6gjmepjih7jjadxgxvvf3lzzujljuu2v4biemzpg3naya.b32.i2p

Platform

  • Email
  • Chat
  • Timeline
  • VPN
  • DNS

Company

  • About
  • Contact
  • FAQ
  • Lite (no JS)

Legal

  • Terms of Service
  • Privacy Policy
  • Transparency Report
  • Report Abuse
  • Warrant Canary
  • VPN Policy

Support

  • support@elektrine.com
  • Report Security Issue
Mail client setup IMAP mail.elektrine.com:993 POP3 mail.elektrine.com:995 SMTP mail.elektrine.com:465
© 2026 Elektrine. All rights reserved. Server: 22:10:26 UTC