Comments

Log in with itch.io to leave a comment.

(1 edit)

This looks absolutely amazing!

Is there a specific Renpy version requirement or something to use it? I decided to try it out, added the .rpys to my project, and when starting,g I get the following error right away:

I'm not entirely sure if it's something on my end or if I'm missing anything, but I thought I'd ask if that's okay!

It's visible in the error, but I'm using Renpy 8.0.3 by the way

Hey there!  The ability to use shaders on text wasn't put into RenPy until 8.3, I believe.  If you move your project to the latest version, that part should start working.

(3 edits) (-4)

These are great!
Is there a way for it to not pick up on the text colour when doing the effect? For instance BurningForBigText, the fire goes black if used on black text., green on green text etc. I think the TwarpFragmentShader is using the text colour to create the fire colour. 


I do not know a thing about shaders but Copilot (eventually...) provided a seeming fix in separating out the rgb and the alpha and using that to mix the final colour.  

This is what it changed:
    for (float x = 0.0; x <= MAX_LOOPS; x++) {
        if((u__glow_radius * 2.0) - (x*u__glow_radius*0.25) <= 0.0) break;
        for (float y = 0.0; y <= MAX_LOOPS; y++) {
            if((u__glow_radius * 2.0) - (y*u__glow_radius*0.25) <= 0.0) break;
            float offx = u__glow_radius - distance((u__glow_radius * 2.0), x*u__glow_radius*0.25);
            float offy = u__glow_radius - distance((u__glow_radius * 2.0), y*u__glow_radius*0.25);
            vec2 offset = vec2(offx, offy) / u_model_size;
//It added this bit here to separate out the rgb and alpha
            float glow_alpha = texture2D(tex0, distortedUV + offset).a;
            vec3 fire_color = mix(u__glow_color.rgb, u__end_color.rgb, 1.0 - v__uv.y);
            glow_color.rgb += fire_color * glow_alpha;
            glow_color.a += glow_alpha;
        }
    }

//final mix was here

    glow_color.rgb /= (4.0 * u__glow_radius * u__glow_radius);
    glow_color.a   /= (4.0 * u__glow_radius * u__glow_radius);
    vec4 final = mix(vec4(glow_color.rgb * u__glow_intensity, glow_color.a), text_color, text_color.a);
    gl_FragColor = final;

Resulting image above. It works with {color} tags in renpy!

The font browser is awesome also, but doesn't add font files in the base fonts folder, they have to be in a subfolder. It was throwing up an error (my font_list was empty even though I had fonts in my root font folder). It fixed by adding a single font into a folder. I know it may be best practice to put fonts in subfolders but just letting you know in case this error happens to anyone else!

These are simply amazing. Thank you!

You may have snagged the test version I mistakenly uploaded initially when I was putting in the webGL fixes, which had a version of the fire shaders that inherited color from the text itself.  Try pulling the latest version and try again.

(2 edits)

Pulled latest version of MVNTSV1.rpy. There is zero difference from the one I had originally (using diff to check). Black text still creates black fire for me.
Happy to give any info about how I'm trying to use it in case I'm screwing something up. 

(+1)

Nah, I think I found it.  The fact that it was still there after you grabbed it told me what I needed to know. I'll have a correction out for it in a bit.

Awesome! Very new to this so wasn't sure if it was me or not. Be interesting to see what the fix is. Would love to get into shaders but I'll start slow and just play with the parameters for now.

If you're curious, the reason this is happening is because I forgot to re-add a .a on a line at some point during testing.  The original intent for the effect was, when it got dark, was this, with proper alpha sampling vs entire color sampling:


And I missed it because my test area was using white text. Whoops.

The method you posted uses Mix to completely strip the effect off of where the text is visible, using the original text's alpha value as the blending value.  I had intended to come back to the pack for content update in a few months, which was going to include a hollow version of this one, as well as a mix version like the one you posted. 

Hi! The MVNTSV1 file has an issue (i think). I'm not the best at explaining so here's an image (which i hope has successfully been loaded). There's a lot of """s making a good portion of the file a string. I have no clue how to fix this, if I even should.

- Miki

(+1)

There isn't anything to fix, that's how it works in RenPy.

The way shaders are registered in RenPy is that the GLSL is passed as a string through the register shader functions. I record them into variables and then use string concatenation to register the shaders so the registration statements themselves aren't 50-100 lines long.  If you scroll down, you'll see the registration statements accepting those variables.

A great assortment of shaders. If you are taking ideas for future packs, I would love to have one like RedactedSimple but where the color is behind the text instead of covering it up. Would be useful for a highlighter or whiteout/correction tape/fluid effect.

Oh, yeah, that's such a good idea and it didn't occur to me to do that.  Give me a few minutes and I'll push an update.

(1 edit) (+1)

Donezo.  Redownload MVNTextShaderTags and MVNTSV1 for the new effects.  You can customize them either by altering the tags or making your own via the instructions in MVNTextShaderTags or by altering the defaults in MVNTSV1 if you feel like braving the shader declarations.


This now includes the HighlightSimple and HighlightRecolor shaders.  Highlight simple just applies the requested effect without altering the original text.  HighlightRecolor gives you control over the original color as well to make it a single tag operation to use rather than needing to stack a dozen tags for legible highlighted text.

{hl}{/hl} does a simple highlight using a yellow highligher by default.

u__highlightcolor defines the color of the highlight if you make your own tag for it.

{hlrc}{/hlrc} does the same thing, but recolors the original text in the same tag.

u__highlightcolor and u__textcolor define the highlight and the text color respectively

Oh, haha, that was fast. Thanks again for the great work!

I just want to inform you that WebGL doesn’t play well with one of the shaders. I’m in the last day of a jam so I can’t pinpoint exactly which, but I have it narrowed to one of these: burning for small text/glow/blueburning

The error message is something along the line of “x cannot be initialized with non-constant expression”. Will add more later.

I pushed an update the other day for an integer issue, but I haven't seen that particular error in my testing.  If you ever get the full error I'd be interested in seeing it.

youve done it again 😏

(1 edit)

Those glow and burn effects are really cool! Thank you so much for this!

One thing I've noticed is that, in fonts where characters might overlap, there's a black vertical line in the shader effect:

 

Would there be a way to fix this?

Can you tell me the name of the fonts you're using there and the version of Ren'Py you're on?  I went through and I couldn't reproduce it in 8.3.4 with any of the shaders in the pack, even with the more scripty ones.

My bad, I was running 8.3.0, and updating to 8.3.4 fixed the issue. Thanks for the quick help!

On a different note, is it possible to adjust a variable when using {shader}? For example, if the default glow color is pink, can I turn it blue on demand without setting up a separate GlowBlue shader?

So yes, you can change the variables of the shaders using the method included in the Ren'Py official documentation.  I need to take the time to write up a cheat sheet for the shaders so people can see the variables without needing to dive into rows of code.

https://www.renpy.org/doc/html/textshaders.html#specifying-text-shaders

Most of everything is customizable, let me know if there's anything you can't easily change and I'll see if I can make an update to expose it or make some more easily utilized knobs.

Thank you, this is exactly what I was missing!

"{shader=HollowGlow:u__glow_color=#0000BB}" ended up being the solution. I'm so happy about how flexible these shaders are. Thank you again!

Yep, that should cover it!

I need to write up something to help people make variable shor thands for their customizations.  Transforms are a great vehicle for that for displayable shaders but there's not a documented equal for text shaders yet.

(+1)

Very useful asset and with good variety too!

(+1)

Looking awesome, I looked for so long for a nice glow!!!

(+3)

Watch out, y'all, Stella's about to win her own jam with an absolute banger of an entry.

(+1)

Another banger. Thank you!

(+2)

Oh, this is great. Good work as always, Stella!