duangsuse::Echo
583 subscribers
4.12K photos
118 videos
579 files
6.13K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
Forwarded from mivik::channels::tech
#project #music #abeat
简单的音乐图形化,初学 OpenGL/信号处理 的试作品,部分参考 https://github.com/hannesha/GLMViz (目前仅支持在 PulseAudio 环境下运行):
https://github.com/Mivik/abeat
Forwarded from mivik::channels::tech
This media is not supported in your browser
VIEW IN TELEGRAM
#project #abeat #music
用贝塞尔曲线做的简单动画,有内味了
下一步考虑简化配置文件流程
duangsuse::Echo
本来说可以移植 SDL 甚至支持 WebAudio 和 改写 sharder 渲染支持 stereo 的 (哪怕只是预求和一下 可大佬 size 计算变量貌似没弄全)。 但这个原版代码本身有一点冗余(其实有 sync locks 的一大堆尚无应用意义代码)、试用语言特性的意图, C++ 的简洁性很难(就连 flat 文件树都得拿自写预处理工具去保证),如果用 Py/JS 的话性能又不好,我觉得还是算了( 代码链接后 400k 也算小了 这个是 Mivik 版。 https://tttttt.me/dsuse/16598…
更实际的GLfw/FFTw示例看这里
https://tttttt.me/dsuse/16598

这里我们是要纯GL绘制一个柱状图,首先得按宽度比率切出vert,然后用geomerty(图形由顶点构成) 从points EmitVertex~EndPrimitive连出图形,最后frag只填平色就行
float y = mix(-1., 1., clamp(y_in, 0, 1)), x=mix(-1.,1., (float(gl_VertexID) + 0.5) / u_count);
gl_Pos = vec4(x, y, 0, 1)
//geom
layout (points) in;
layout (points, max_vertices = 1) out;
glPos=gl_in[0]; Emit //顶点0直接输出
layout (triangle_strip, max_vertices = 5) out;
P(l,-1) (r,-1) (l,y) (r,y)
就能生成一个□+\ 的几何

每个顶点都可以带颜色等附加信息,geom也能设置out fColor

bar vert的重力计算在这些之后每帧应用,绘制 y=texture(fftBuf,vertIdx),就能实现一个缓动的频谱图了。

glClear(00wh)
use(shader)
glBindVArray(vao)
glDrawArray(POINTS,0,N)

动苏第一次完全不知道 shader 除了着色贴图还能处理几何,后来觉得 geom 一定是先于 vert 运行(当成点和边了 😂),然后发现geometry shader 画矩形有四个点,vert 却只有2个,于是认为 vert 能决定宽高,或者有重复计算 🤣其实不懂绘图

https://blog.csdn.net/q1398284020/article/details/80181803 着色器变量