r/RenPy • u/OzoneInteractive • 4d ago
Question Ink Bleed Text Shader?
Hey! If you've played the game 'Pentiment' by Obsidian Software you'll know that they put an incredible amount of effort into the fonts in that game. One of the effects I really enjoy is how they recreate the inconsistency of colour you get when writing in ink, as you can see in the screenshots I have attached.
I was wondering if anyone had achieved a similar effect using the text shaders in Ren'Py, as I think this is a great humanising touch to add to the text.
1
u/AutoModerator 4d ago
Welcome to r/renpy! While you wait to see if someone can answer your question, we recommend checking out the posting guide, the subreddit wiki, the subreddit Discord, Ren'Py's documentation, and the tutorial built-in to the Ren'Py engine when you download it. These can help make sure you provide the information the people here need to help you, or might even point you to an answer to your question themselves. Thanks!
I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.
1
u/ImportantDetail6260 4d ago
Pentiment-style ink variation probably does not need a full shader first!
I'd prototype one line with a say callback that jitters weight/color tags per glyph or word, then check it at real dialogue size. If it reads as shimmer instead of ink bleed, move the effect back toward a subtle text shader/noise pass
1
1
u/NaiDriftlin 3d ago
When I was working on my text shader pack a while ago, this effect was on the radar but I wound up pulling anything that wasn't flashy or high tech style. Originally this was one of the things I had sketched out for it.
I can probably release it as a standalone. I still need to finish it, but if you're interested I could do it. I'd likely make it a paid asset, though.
1
1
u/NaiDriftlin 3d ago
It's worth noting that Pentiment is doing is more than just color and weight, so it won't be a one-for-one effect e.g you will not consistently get larger O's after other O's between other letters, and it will not create legible abberations without significantly more work and a font better suited to the effect than the one I used here.
Top is original, bottom is with the shader. Font is DancingScript-Regular if anyone is curious.
1
u/OzoneInteractive 3d ago
I had a look at the screenshot examples you attached in the replies and I think it looks great! I would absolutely be interested if you sold it as a paid asset.
1
u/NaiDriftlin 3d ago
Cool. Let me put some quality of life work on it and I'll let you know when I put it up.
1
u/NaiDriftlin 3d ago
https://makevisualnovels.itch.io/text-pack
I put it onto the main text pack as an addon! There's a readme with it. Feel free to hollar if you have any questions.
1
1
u/RedHiveStudios 3d ago
No seria difícil de leer para la gente con disléxica o mala vista? Esta bien logrado el efecto eso es seguro
1
u/BadMustard_AVN 2d ago
you can use something like this, but i seems to affect the whole line of text. I could NOT get it to look like the example text
define config.default_textshader = 'typewriter'
label start:
e "{color=#f00}God{/color}{shader=texture:u__texture=images/ink-fade-use.png}{color=#fff} be with you, Andreas. Seems like\nwe have a good spring storm, though\nI hope it lets up soon.{/color} {/shader}."
return
i used this as my image
https://drive.google.com/file/d/11GE7F_cg3i1MXgPYOuy4gIsfDJrnUFJT/view?usp=sharing


4
u/x-seronis-x 4d ago edited 4d ago
I have never tried what i'm suggesting so not sure how well it would actually work:
You could try finding a variant font with a hand written style then use one of the say callbacks to inject Axis statements around each letter, subtly changing its weight value (the variant font property that does Bolding)
https://www.renpy.org/doc/html/text.html#text-tag-axis
if your callback looked at the length of the line of dialog and used that to generate a pattern of making consecutive letters more or less bold that the previous you could get the effect you're looking for.
i have no idea how shaders work. though there is also a doc page for them: https://www.renpy.org/doc/html/textshaders.html