URI:
       add test feed - sfeed_tests - sfeed tests and RSS and Atom files
  HTML git clone git://git.codemadness.org/sfeed_tests
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 70bcf8c4a99b2e2ad44fa4f89e6bd338d3444920
   DIR parent e6191cc4198e09664922f67d6d0edc01d66f72bd
  HTML Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       Date:   Thu, 14 Aug 2025 18:42:50 +0200
       
       add test feed
       
       https://www.wellobserve.com/?rss=en
       
       Atom feed.
       
       Diffstat:
         A input/sfeed/realworld/wellobserve.… |    1755 +++++++++++++++++++++++++++++++
       
       1 file changed, 1755 insertions(+), 0 deletions(-)
       ---
   DIR diff --git a/input/sfeed/realworld/wellobserve.com.atom.xml b/input/sfeed/realworld/wellobserve.com.atom.xml
       @@ -0,0 +1,1754 @@
       +<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom'><id>https://www.wellobserve.com/?rss</id><updated>2025-08-13T17:37:29+08:00</updated><title>WellObserve</title><link href='https://www.wellobserve.com/index.php?rss=en' rel='self'/><link href='https://www.wellobserve.com' /><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><entry><id>https://www.wellobserve.com/?post=20211213142049</id><title type='html'> Our Paint dev log</title><link rel='alternate' href='https://www.wellobserve.com/?post=20211213142049' /><published>2021-12-13T14:20:49+08:00</published><updated>2025-08-13T17:37:29+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;h1&gt; Our Paint dev log&lt;/h1&gt;
       +&lt;p&gt;&lt;a href=&quot;?post=20211212002943&quot; onclick='ShowWaitingBar()'&gt;从对MyPaint研究引出&lt;/a&gt;&lt;/p&gt;
       +&lt;h2&gt;其他局限&lt;/h2&gt;
       +&lt;p&gt;笔刷的序列混合不好实现,由于是并行提交,没有办法直接访问已工作的方块,所以可能只能以不透明和上次笔触完成后的FBO复制用以采样的方式工作。&lt;/p&gt;
       +&lt;p&gt;检查了之前的GUI截图,序列透明覆盖似乎是正确的,那么非半透明的覆盖应该也是顺序正常的,并且可以使用深度。但由于界面有浮动面板,这里实际不清楚能否去掉那些的FBO因为是二次叠上去的,不同面板不一定同时都刷新。&lt;/p&gt;&lt;h3&gt;额外贴图&lt;/h3&gt;
       +&lt;ul&gt;
       +&lt;li&gt;&lt;strong&gt;Main Image&lt;/strong&gt;,超尺寸的用多张Tile,显存无法分配完全的则只分配以屏幕为中心的大于屏幕的尺寸,做笔刷整合时则需要多次切换并从内存中调入完整图(以每图而不是每笔刷为循环基准)。&lt;/li&gt;
       +&lt;li&gt;&lt;strong&gt;缩小贴图&lt;/strong&gt;,用于缩小时查看,为每个主图块的小图,尚不知如何生成最好,(可能需要从CPU端生成?这样每应用一笔都需要读回来)。&lt;/li&gt;
       +&lt;li&gt;&lt;strong&gt;视口FBO&lt;/strong&gt;,复用GUI的面板FBO,则无需新建,但注意像素格式,可能需要16位。&lt;/li&gt;
       +&lt;li&gt;&lt;del&gt;视口FBO复制,因为需要一并混合到应用好的主图上&lt;/del&gt;。似乎可以直接采样底图并画到视口FBO,可以节省一个FBO。&lt;/li&gt;
       +&lt;/ul&gt;&lt;h2&gt;主要操作细节&lt;/h2&gt;
       +&lt;p&gt;贴图步进尺寸似乎可以设置为128,这也可以作为初始最小贴图的尺寸(但根据初始引用笔刷直接调节至下一个合理尺寸),每次步进就复制到新的上面,同时检查再建立同样大小伪贴图的可行性,不行则表明不能再请求这么多的显存用于贴图复制,此时启用局部高清贴图模式,丢掉未显示的那些(从内存中再读)。&lt;/p&gt;
       +&lt;p&gt;涂抹和取色器采样似乎都只能从两层画完之后的视口FBO采,这样也能采到笔刷自身痕迹?(是期望的行为吗?)&lt;/p&gt;
       +&lt;p&gt;保存就贴图分块读回来存。&lt;/p&gt;
       +&lt;p&gt;时间原始时间每1/60秒更新一次笔刷显示列表,每提笔更新显示列表并应用最后一个撤销栈的笔画到光栅,对于不完整主图,需要重复调用内存里的那个图。&lt;/p&gt;&lt;h2&gt;该工具特点&lt;/h2&gt;
       +&lt;ul&gt;
       +&lt;li&gt;无限画布(最终取决于客户机内存)&lt;/li&gt;
       +&lt;li&gt;有限撤销步数。(达到撤销步数的笔触合成到最终光栅上,未达到的为GL图元)&lt;/li&gt;
       +&lt;li&gt;基于像素而非矢量显示。&lt;/li&gt;
       +&lt;/ul&gt;
       +&lt;h2&gt;主要局限&lt;/h2&gt;
       +&lt;p&gt;一些低功耗硬件可能不具备足够显存和内存以运行大图。SurfacePro6的&lt;code&gt;glxinfo&lt;/code&gt;报GL最大贴图尺寸为16384×8192,显存报3058MB共享,因此目前的大图应该能合理工作,更大的效率就比较低了。&lt;/p&gt;
       +&lt;p&gt;&lt;strong&gt;无法混合和快速在原地累积,因此半透明刷子可能是很大的问题。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;更新:了解到&lt;a href=&quot;https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_barrier.txt&quot; target='_blank'&gt;GL_NV_texture_barrier&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;可能可以允许同时读写同一张贴图,应该可以实现方便的点点点叠加,应该也容易实现笔划(但没有具体看,好像稍微麻烦些,主要是笔画的情况下如何定义自身叠加和非叠加,使用二级图应当能旁路这个问题,不过在不清楚笔画尺寸的情况下需要画多个块拼接)&lt;/p&gt;&lt;p&gt;通过XInput2可以获得Wacom的压力和倾斜等参数&lt;/p&gt;
       +&lt;div class='imd'&gt;&lt;a href='?show_image=20221130215119.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221130215119.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221130215119.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;可以画上去了哈哈哈&lt;/p&gt;
       +&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20221130152443.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221130152443.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221130152443.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20221130152908.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221130152908.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221130152908.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;好了至少能跑起来计算着色器了&lt;/p&gt;
       +&lt;div class='imd'&gt;&lt;a href='?show_image=20221127142207.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221127142207.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221127142207.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;由于MyPaint储存为8位sRGB,因此再次打开时出现精度丢失,这是不期望的。&lt;/p&gt;
       +&lt;p&gt;研究发现可以使用计算着色器进行混合。可根据这个原理继续制作画图工具。&lt;/p&gt;
       +&lt;p&gt;此外,如果只是简单混合而没有涂抹,则可以考虑使用&lt;a href=&quot;https://registry.khronos.org/OpenGL/extensions/EXT/EXT_shader_framebuffer_fetch.txt&quot; target='_blank'&gt;GL_EXT_shader_framebuffer_fetch&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;0.1版 完成!&lt;/p&gt;
       +&lt;div class='imd'&gt;&lt;a href='?show_image=20221231225645.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221231225645.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221231225645.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;汉化和各种可用性优化&lt;/p&gt;
       +&lt;div class='imd'&gt;&lt;a href='?show_image=20221229211521.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221229211521.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221229211521.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;通过 &lt;a href=&quot;http://www.gballard.net/photoshop/pdi_download/index.html#downloads&quot; target='_blank'&gt;这里&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt; 可以下载一个测试icc以检查icc配置是否正常工作。若正常,则会显示错误颜色&lt;/p&gt;&lt;p&gt;不错&lt;/p&gt;
       +&lt;div class='imd'&gt;&lt;a href='?show_image=20221216230013.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221216230013.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221216230013.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;可以做笔刷了&lt;/p&gt;
       +&lt;div class='imd'&gt;&lt;a href='?show_image=20221215215041.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221215215041.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221215215041.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;要复现目前使用的MyPaint笔刷形式,还需要:&lt;/p&gt;
       +&lt;ul&gt;
       +&lt;li&gt;椭圆比例(或者sdf实现,用以更方便地获得方形)&lt;/li&gt;
       +&lt;li&gt;跟踪速度输入&lt;/li&gt;
       +&lt;li&gt;跟踪方向输入(以及平滑,如何实现)&lt;/li&gt;
       +&lt;li&gt;平滑位置(如何实现)&lt;/li&gt;
       +&lt;li&gt;随机/噪声&lt;/li&gt;
       +&lt;/ul&gt;
       +&lt;p&gt;映射挂件的撤销有问题,暂时还没管那么多,但需要修。&lt;/p&gt;
       +&lt;p&gt;空了来&lt;/p&gt;&lt;p&gt;新的映射挂件&lt;/p&gt;
       +&lt;div class='imd'&gt;&lt;a href='?show_image=20221212213136.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221212213136.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221212213136.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;节点笔刷初步&lt;/p&gt;
       +&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20221212143028.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221212143028.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221212143028.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20221212165735.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221212165735.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221212165735.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;可以撤销了&lt;/p&gt;
       +&lt;p&gt;这样一来所有基本功能已经全部完成了。&lt;/p&gt;
       +&lt;div class='imd'&gt;&lt;a href='?show_image=20221211224456.mp4' target='_blank' onclick='event.preventDefault();'&gt;&lt;video controls data-imgsrc='20221211224456.mp4'&gt;&lt;source src='images/20221211224456.mp4' type='video/mp4'&gt;&lt;/video&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;储存单实例属性需要修改接口,做了个简化的假列表来支持单实例的指定文件保存。&lt;/p&gt;
       +&lt;p&gt;其他的似乎都正常工作,还差导出的合成颜色。&lt;/p&gt;
       +&lt;div class='imd'&gt;&lt;a href='?show_image=20221209202452.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221209202452.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221209202452.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;总的来说,还有这些需要实现了才能共享该程序的初步版本:&lt;/p&gt;
       +&lt;ul&gt;
       +&lt;li&gt;自定义的撤销命令。&lt;/li&gt;
       +&lt;li&gt;工程文件打包。&lt;/li&gt;
       +&lt;li&gt;切割文件导出。&lt;/li&gt;
       +&lt;li&gt;导入导出的选项。&lt;/li&gt;
       +&lt;li&gt;文件管理器的文件名以及过滤选项等优化。&lt;/li&gt;
       +&lt;/ul&gt;&lt;p&gt;可以文件了&lt;/p&gt;
       +&lt;div class='imd'&gt;&lt;a href='?show_image=20221208214258.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221208214258.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221208214258.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;涂抹正确了&lt;/p&gt;
       +&lt;div class='imd'&gt;&lt;a href='?show_image=20221206214418.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221206214418.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221206214418.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&quot;http://scottburns.us/subtractive-color-mixture-5/&quot; target='_blank'&gt;http://scottburns.us/subtractive-color-mixture-5/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
       +&lt;p&gt;混色看这里&lt;/p&gt;
       +&lt;p&gt;以及这个是mypaint的https://github.com/mypaint/mypaint/blob/master/doc/spectral/spectral.md&lt;/p&gt;&lt;p&gt;行了,涂抹的逻辑也可以了,虽然涂抹的效果不好,但是可用。&lt;/p&gt;
       +&lt;div class='imd'&gt;&lt;a href='?show_image=20221204215655.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221204215655.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221204215655.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;v0.1a,测试Windows版本&lt;/p&gt;
       +&lt;div class='imd'&gt;&lt;a href='?show_image=20230127121047.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230127121047.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230127121047.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;win大多数功能能用了&lt;/p&gt;&lt;p&gt;Windows原生基本上可以了&lt;/p&gt;
       +&lt;p&gt;&lt;a href=&quot;?post=20230120000903&quot; onclick='ShowWaitingBar()'&gt;这里&lt;/a&gt;&lt;/p&gt;&lt;p&gt;现在可以通过WSL运行(但是似乎很慢)&lt;/p&gt;
       +&lt;div class='imd'&gt;&lt;a href='?show_image=20230119123642.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230119123642.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230119123642.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&quot;?post=20230114104626&quot; onclick='ShowWaitingBar()'&gt;修了个问题&lt;/a&gt;&lt;/p&gt;&lt;p&gt;还是mypaint的光谱混合 但是在gpu了&lt;/p&gt;
       +&lt;div class='imd'&gt;&lt;a href='?show_image=20230106164842.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230106164842.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230106164842.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;新笔刷!&lt;/p&gt;
codemadness.org:70 /git/sfeed_tests/commit/70bcf8c4a99b2e2ad44fa4f89e6bd338d3444920.gph:90: line too long