gpt4 book ai didi

opengl - GLSL 2D 圆角

转载 作者:行者123 更新时间:2023-12-01 07:53:06 28 4
gpt4 key购买 nike

我想在我的游戏屏幕上添加一些黑色轮廓,使其看起来像圆角。
这是我想要达到的效果:
rounded corners

我认为使用着色器可能很容易创建这种效果,而不是在所有内容之上绘制一个巨大的位图。

有人可以帮助我使用此效果的 GLSL 着色器代码吗?我对着色器的经验为 0,无法在互联网上找到任何类似的东西。

最佳答案

我偶然找到了一个很好的解决方案。不完全是您所要求的,但实际上它看起来更好。

// RESOLUTION is a vec2 with your window size in pixels.
vec2 pos = fragCoord.xy / RESOLUTION;
// Adjust .2 (first pow() argument) below to change frame thickness.
if (pos.x * pos.y * (1.-pos.x) * (1.-pos.y) < pow(.2,4.))
fragColor = vec4(0,0,0,1);

它给出了以下结果:

enter image description here

如果你不喜欢那些细线,你可以通过放大图像来删除它们。可以通过添加以下行来完成:
// The .985 is 1/scale_factor. You can try to change it and see how it works.
// It needs to be adjusted if you change frame thickness.
pos = (pos - .5) * .985 + .5;

enter image description here

虽然这种效果看起来不错,但只添加一个微弱的阴影可能更明智。
使用相同的等式很容易实现: pos.x * pos.y * (1.-pos.x) * (1.-pos.y)它的值范围从 0.0在窗口边缘到 0.5^4在中心。
您可以使用一些简单的数学运算来制作一个靠近窗口边缘变得更厚的阴影。
Here is an example of how it may look.
(来自 Duality 的屏幕截图,我的 Ludum Dare 35 条目。)

关于opengl - GLSL 2D 圆角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39194291/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com