opengl - 如何在 GLSL 中制作正弦波圆

标签 opengl glsl fragment-shader

我试图用正弦波扭曲圆的绘制,使其在 OpenGL 着色器中看起来像这样。

enter image description here

我发现了很多使用 length 的例子。从中心点的半径绘制一个圆,但我一直无法弄清楚如何用正弦波调制它以扭曲圆的半径。任何帮助将不胜感激!

最佳答案

使用从片段到中心的角度作为 sin 的输入函数并将结果添加到长度。

Example:

vec2 position = gl_FragCoord.xy - resolution / 2.0;
float color = smoothstep(2.0, 4.0, abs(length(position) - 50.0 
    + sin(atan(position.y, position.x) * 4.0 - 3.141 / 2.0) * 7.0));
gl_FragColor = vec4(vec3(color), 1.0 );

关于opengl - 如何在 GLSL 中制作正弦波圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37597098/

相关文章:

c++ - SDL OpenGL 窗口立即关闭

python - 使用延迟屏幕空间贴花系统的边界检查问题

java - 在 LWJGL/OpenGL 上获取 'mouse over object'?

c++ - GLSL 4.10 纹理映射

c++ - 计算着色器不写入缓冲区?

opengl-es - gl_Color 是 WebGL 上未声明的标识符

go - 如何在OpenGL 3中将纹理显示为彩色而不是灰度?

glsl - webgl错误中的高斯模糊

opengl - 现代 GLSL 中的半向量是什么?

c++ - C 风格对象删除的包装器