Sign in

terpatin.bsky.social

@terpatin.bsky.social
14 followers 32 following 45 posts

👨‍💻 Gamedev hobbyist. ✨ Likes to fool around with shaders. 🎮 Focus on GameMaker.

PostsRepliesMedia
terpatin.bsky.social @terpatin.bsky.social · 28/09/2026
The GM default shader basically does this (uses uniforms to allow dynamically change it though). Note that GM's default shader is not the same as the blank shader you get whenever you create a new shader asset.
010
terpatin.bsky.social @terpatin.bsky.social · 28/09/2026
Okay, then you have handle it manually. Put something like this in your shader : ``` if (outputColor.a < 0.5) { discard; } ```
230
terpatin.bsky.social @terpatin.bsky.social · 28/09/2026
Basically these set uniforms in GM's default shader to enable discarding fragments if it's under the given alpha threshold.
110
terpatin.bsky.social @terpatin.bsky.social · 28/09/2026
Try following: ``` gpu_set_alphatestenable(true); gpu_set_alphatestref(128); ``` Sprites are actually just quads, a rectangle. Even if some parts of sprite has alpha 0.0, it does update depth buffer as whole rectangle. So one fix is to discard transparent pixels, so they don't affect depth buffer.
110
terpatin.bsky.social @terpatin.bsky.social · 14/09/2026
And if you want to play it, here is link. Plays on browser. gm48.net/game-jams/ze...
gm48.net
Outside View
Go outside, touch grass, take pictures.
000
terpatin.bsky.social @terpatin.bsky.social · 14/09/2026
Participated in 50th #GM48 gamejam, the theme was Zen. I made a camera-based game, so you could go outside, touch grass, and take pictures.
100
terpatin.bsky.social @terpatin.bsky.social · 10/09/2026
This produces a sequence of numbers of how large jumps you have to take to find pi in a pi.
110
terpatin.bsky.social @terpatin.bsky.social · 26/08/2026
QRKoodi - QR Code generator for GameMaker, made in GML. terohannula.itch.io/qrkoodi youtu.be/-RI9jhLhVkI?... #gamemaker
youtu.be
QRKoodi - QR Code generator for GML [GameMaker]
YouTube video by Terpatin
043
terpatin.bsky.social @terpatin.bsky.social · 26/08/2026
Is that a Hilbert curve? Bit too tiny for mobile to see the paths 😄
140
terpatin.bsky.social @terpatin.bsky.social · 23/08/2026
The generating is split over several frames, so it shouldn't cause game to stutter either, even with large QR codes. In this example video I just generate gibberish "hello world"-texts with different generator settings. You can select masking pattern, or let generator auto-select one.
011
terpatin.bsky.social @terpatin.bsky.social · 23/08/2026
QR Code generator for GameMaker. This doesn't need extensions and technically should be cross-platform, as it's written in pure GML. #gamemaker #gamedev #qrcode
1232
Reposted by @terpatin.bsky.social
Vadym, friend of eggbug @yellowafterlife.bsky.social · 14/08/2026
I updated my GameMaker extension for custom window shapes! And the "desktop friend" example now has an option for chromakey instead of full transparency (pictured) yellowafterlife.itch.io/gamemaker-wi...
2598
terpatin.bsky.social @terpatin.bsky.social · 08/08/2026
Just to mention, that this game was made using the Linux Arch and Steam version of GameMaker. Gotta admit, Steams Proton worked pretty great 😄
010
terpatin.bsky.social @terpatin.bsky.social · 08/08/2026
And then someone reposts with "ai upscaled/enhanced" version.
010
terpatin.bsky.social @terpatin.bsky.social · 03/08/2026
I used Hillis-Steele style scan, which is easy to implement with fragment shaders, but which is not work efficient. Blelloch scan would be work efficient, but it's parallel time is bit worse. That's hard to implement in fragment shaders, but not impossible - though compute shaders would be better
000
terpatin.bsky.social @terpatin.bsky.social · 03/08/2026
Just recently made arbitrarily sized box blur in GameMaker, which uses a summed area table. In short, apply prefix sum horizontally, then vertically. Then you can sample corners of the area to get its sum, and get average by dividing area size.
100
terpatin.bsky.social @terpatin.bsky.social · 02/08/2026
010
terpatin.bsky.social @terpatin.bsky.social · 02/08/2026
Participated Assembly Game Jam. Theme was "Beneath", and I made Cursed Cursor Golf terohannula.itch.io/cursed-curso... #gamemaker #gamejam #assembly2026 #asmjam
terohannula.itch.io
Cursed Cursor Golf by TeroHannula
You need to save your very important work, but your cursor has been cursed by a troll!
320
terpatin.bsky.social @terpatin.bsky.social · 01/08/2026
GML is more like JavaScript though. But anyways, with new runtime, GameMaker is getting support for both JavaScript and C#
020
terpatin.bsky.social @terpatin.bsky.social · 21/07/2026
Had typo on shader encoding function, mean to write "256.0", not "255.0". Now seems to working as expected 👍
000
terpatin.bsky.social @terpatin.bsky.social · 21/07/2026
Okay, the rgba8unorm version "works", but doesn't. Debugging time.
100
terpatin.bsky.social @terpatin.bsky.social · 21/07/2026
This uses float-textures, but I think making fallback rgba8unorm -version is possible. Single pixel can encode 32bit value for SAT, but then each color channel needs to be dealt separately. But anyways, the first initial version is in, but I'll put a new version "soonish".
110
terpatin.bsky.social @terpatin.bsky.social · 21/07/2026
I have wanted to make this for a couple months already, so it was just blurting it out of my mind 😄 It works by first creating a summed-area table from applying prefix sum in both axes. To calculate box-blur, sample SAT at corners of the wanted blur-area (do A-B-C+D), and divide by area size.
010
terpatin.bsky.social @terpatin.bsky.social · 21/07/2026
For the Cookbook jam I made ABoxBlur, allowing arbitrary and variable-sized box-blur. I was in speedrun mode as I tried make entry in last two hours 😂 Now afterwards I am fixing bugs and adding new examples itch.io/jam/cookbook... #gamemaker #shaders #foss
362
terpatin.bsky.social @terpatin.bsky.social · 29/06/2026
Gotta move out from the rental apartment of 6 years. Packing up all board games + puzzles took 5 full boxes 😳 The shelf had games up to the ceiling, the picture was taken after I had already removed top-most games.
Cardboard boxes with some of the board gamesShelf with board games, partially emptied
010
terpatin.bsky.social @terpatin.bsky.social · 26/06/2026
Oh no o_o
000
terpatin.bsky.social @terpatin.bsky.social · 16/06/2026
It's tempting to like this just based on the idea 🤣😫
010
terpatin.bsky.social @terpatin.bsky.social · 11/06/2026
What's MVP? (minimal viable packing)
100
terpatin.bsky.social @terpatin.bsky.social · 14/04/2026
This asset instead pushes vertices to add padding, and then corrects the uv coordinates to keep the sprite visually the right size. But there are caveats, like you can't rotate the sprite and requires shader_enable_corner_id. But I guess there are use-cases for having arbitrary padding.
010
terpatin.bsky.social @terpatin.bsky.social · 14/04/2026
To solve this, you could disable automatic trimming and manually add enough padding around the sprite. Alternatively, you could also draw everything on the surface first, and then draw this surface while applying the outline shader.
010
terpatin.bsky.social @terpatin.bsky.social · 14/04/2026
Usually in GM when applying regular outline shader on sprites, it might not as expected, as how sprites' empty space is trimmed by the asset compiler. Sprite being on the very edge of the drawn quad doesn't allow drawing outline there.
010
terpatin.bsky.social @terpatin.bsky.social · 14/04/2026
Made a small asset, which showcases how you can add padding around sprites with shaders, testable on the browser. Thanks @wangleline.com for the initial inspiration :) terohannula.itch.io/quadpatpad #gamemaker #shader
terohannula.itch.io
quadPatPad by TeroHannula
[GameMaker] Shader for pushing vertices for padding around sprite
330
terpatin.bsky.social @terpatin.bsky.social · 01/04/2026
Those eyes brought me flashbacks of old Pokemon card game gems 😆 (Googled afterwards that they were damage counters)
010
Reposted by @terpatin.bsky.social
Rune Skovbo Johansen @runevision.bsky.social · 30/03/2026
My erosion filter is out! Video, blog post, and shader source. It emulates erosion without simulation, so it's fast, GPU friendly, and trivial to generate in chunks. Explainer video: www.youtube.com/watch?v=r4V2... Companion blog post: blog.runevision.com/2026/03/fast... #ProcGen #vfx #GameDev
17557169
terpatin.bsky.social @terpatin.bsky.social · 23/03/2026
It doesn't use float-textures either, just rgba8unorm. The shaders utilize color compinents in such a way, that reading results back to GML should be readable as U32.
000
terpatin.bsky.social @terpatin.bsky.social · 23/03/2026
I had idea to use fragment shaders to decode UTF8 characters to codepoints, so I wrote this GPUTF8-asset: terohannula.itch.io/gputf8 github.com/HannulaTero/... #gamemaker #shaders
terohannula.itch.io
GPUTF8 by TeroHannula
[GameMaker] Shader-based UTF8 character string decoder.
110
terpatin.bsky.social @terpatin.bsky.social · 12/03/2026
I'll watch it during weekend 👀
010
terpatin.bsky.social @terpatin.bsky.social · 18/02/2026
You just missed the start of your reverse Pokémon adventure
000
terpatin.bsky.social @terpatin.bsky.social · 12/02/2026
Just to clarify; look at Step-event time, and not Draw-event time, which just happens to be the first.
100
Reposted by @terpatin.bsky.social
GameMaker @gamemaker.io · 15/01/2026
We are Teaming up with @Reddit for their virtual hackathon! There's a sweet $5k for the best GameMaker game 👀 🗓️ Jan 15 – Feb 12, 2026 💰 $40K in prizes 🔗 gamemaker.io/en/blog/reddit-hackathon
02710
terpatin.bsky.social @terpatin.bsky.social · 08/01/2026
Maybe the game logic is done within shaders 🤔
010
Reposted by @terpatin.bsky.social
jamie rowan @jamierowan.bsky.social · 31/10/2025
Super excited to announce that the demo for Lelu will be available on November 20th! Explore an old factory as a clockwork toy on a quest for freedom featuring exploration, combat, puzzles and boss fights #gamedev #indiegame #indiedev #pixelart
13413
terpatin.bsky.social @terpatin.bsky.social · 24/10/2025
Participating #retrogamejam I'll try to make something for N64, though I have no experience with developing games for retro consoles 😆
010
terpatin.bsky.social @terpatin.bsky.social · 25/08/2025
What
010
terpatin.bsky.social @terpatin.bsky.social · 22/11/2024
Cool! In the GLSLES version GameMaker currently uses, bit operations are not available, which I would otherwise used. The rgba16float format has 64 bits, but 4 bits are unused to avoid dealing with infinities, which would break encoder.
020
terpatin.bsky.social @terpatin.bsky.social · 21/11/2024
One curiosity I made some time back. If one is using rgba16float textures, but for some reason want to store six 10bit values instead, here are encoder functions: github.com/HannulaTero/...
github.com
Encode-six-values-to-rgba16float/shaders/shd_encoder_three10bit/shd_encoder_three10bit.fsh at main · HannulaTero/Encode-six-values-to-rgba16float
For GameMaker to be used with web exports, for encoding six 7bit values in rgba16float. - HannulaTero/Encode-six-values-to-rgba16float
220
terpatin.bsky.social @terpatin.bsky.social · 21/11/2024
Thanks 😊 I am still keeping the repo private until I'm ready to actually release it 😌
100
terpatin.bsky.social @terpatin.bsky.social · 20/11/2024
Here are some more examples. #gamemaker #gml #macromagic
random(10) should be irandom(10), whoopsis.
010
terpatin.bsky.social @terpatin.bsky.social · 20/11/2024
Inspired from @jujuadams.com coroutine macrohacks, I have made own coroutine-system. Now why would I do one, if Juju has that covered? Well I wanted triggers and other small stuff, so I can use them to split drawing for several frames, mostly for misusing fragment-shaders to do heavy computations.
Simple coroutine example using FOREACH.Coroutine example for drawing into surface.
220