Org-mode里的ShaderToy

自己动手做了一个glsl代码块

14 个赞

cool!!!

能否分享一下这个是怎么实现的?感觉给同事演示glsl的代码的时候可以用用。

按ob-dot的样板写了个ob-glsl,把代码块发给外部程序,外部程序渲染后读取帧缓存保存到指定的png文件。

现在的状态太粗糙了,我得再打磨一下。1)增加支持任意参数传递到shader 2)把外部程序用c++重写,现在用的common lisp编译出来太大了 3)增加session支持,避免反复创建渲染进程

我太懒了,估计一时半会儿不会有兴致继续搞这个了,代码贴上来谁想玩请自便

挖个坟,所以我自己把坑填了。渲染部分用C++重写成了dynamic module,不再需要调用外部进程,基本上是瞬间完成。 Github 链接: GitHub - finalpatch/ob-glsl: glsl code blocks for org-mode

9 个赞

竟然填了两年前的坟,肃然起敬!多希望某些挖坑不填的跟楼主学学。

没想到还可以这样玩,太舒服了 :)

更新了一下Emacs32的Canvas支持。现在可以直接在Buffer中显示动画了: 要显示动画,只要在代码中使用iTime变量即可(从渲染开始的秒数浮点智,和shadertoy一致)。如果代码块提供了png文件名,那么和以前一样渲染单帧,如果不提供文件名,则显示动画。

这个动画实现的比Canvas demo里那个要完善一点:支持同一个buffer中多个代码块动画,支持linux以外的系统(windows, macos)。