1. 背景
我正在使用GLSL来绘制给定频率下的波形幅度,如下所示:
显示像上面这样的简单波形是一项微不足道的任务,只需使用正确的方程式(此处提供 GLSL 摘录代码)。我现在要做的是显示两个波形之间的频率调制结果。
2.研究
经过一些研究,我发现了两种可能的方法来实现这一点:
使用类似 dsp 的方法,据我所知,使用相位累加器(请参阅此处的第一个答案)结合查找表是使用信号处理时的建议方法。作为一个 GLSL 初学者,我明白这对于 GLSL 着色器来说是不可能的,因为它们不能跨多个 GPU 周期存储和增加变量。
使用纯数学方法,这涉及到像乔宁的简单 fm 公式这样的方程。 FM 公式 http://img577.imageshack.us/img577/4820/fmformula.png
该公式在某些情况下效果很好(余弦波调制另一个余弦或余弦调制锯齿)但我无法找到一个通用方程在每种情况下都可以工作(当锯齿波调制余弦时,我希望载波频率被锯齿幅度调制,但我得到的只是载波显然未调制)。
3. 问题
- 解决这个问题的最佳方法是什么?
- GLSL 是否可以使用类似 dsp 的方法?
- 如果没有,是否有任何通用的 FM 方程足够灵活来完成所有工作?
考虑到我在这里所涉及的所有学科(音频 dsp、计算机科学、gpu 编程、数学)都缺乏技能,如果我在这里遗漏了一些非常简单的东西,我不会感到惊讶。请耐心等待。