Thread | ||||||||
| ||||||||
#630 |
|
●623 | 事实上现在看来可能可以复用之前的NUL界面库来做个简单画图程序,在PC机上用,因此可以使用GL等方便地加速,而无需担心在移动设备上运行耗电的问题。 | |
2024/11 …
安桌的重启还是有问题
2024/10 …
画了个图标 也有小图标版本
2024/09 …
面板多重采样也坏了(安桌的写反了)
安桌可能是绘图指令多了慢,尝试内部加个限制。(在超过256点后刷新改善了多文字时候的持续性能问题,目前来看界面基本可以接受)
需要储存对话框自定义
还需要框框提示自动保存
浅色叠加会变黑(GLES) (怎么感觉又没有问题一样)(是光谱笔刷问题,可能精度不行)
2024/08 …
在更新到 0.3a 后有报告称绘图后画布不显示内容,因此可能该问题不仅限于安卓的实现,需要具体了解这里面GL的问题。(汇报的是 intel Arc)
对于因特尔,该问题是由于在 uint
贴图上使用了 GL_LINEAR
过滤。改为使用 GL_NEAREST
则修复该问题。一会儿测试下安卓
安桌运行成功啦,所有需要8/16位转换的部分都正常运行,包括文件读写和撤销等。
性能不行,需要研究优化。主要应该是画布的二次合成比较占用性能。
SP6 windows 编译后 WinTab Z 轴报告不支持,只有先把他暂时不处理
windows 下有全鼠标事件回报了所以笔触应该更加平滑
(又删掉了这个功能,因为多窗口有问题)
还差
- 安桌手势
- 快捷全屏
- 简化布局和菜单
快捷全屏似乎不需要,所以就算好了
我认为可以为 4.0 制作一次性传输所有笔刷触点的计算着色器调用,这样能进一步节省总线同步开销
由于需要每个触点绑定一次到多次贴图,所以还需要整一个 uImage2DArray 的绑定,然而该贴图阵列有动态变长并保持内容的需求,所以可能不适合。不过将所有的触点放到一个ssbo应该没有问题,只是在需要切换贴图时中断。后面可以慢慢看
下个版本需要改进
- 笔刷旋转竖线开关(多数笔不需要)(好了)
- vc140 threads dll 没包括在里面
- Windows Ink 的倾斜似乎不工作?
- 最好给个蓝屏幕检查提示(插显卡)
好像桌面端的缩略图又坏了(好了)
安卓上似乎不能删除用户设置
2024/06 …
能够在安桌上运行好得涂,然而由于 GLES 不支持同时在计算着色器中读写 rgba16ui
格式图像,且我的手机似乎也无法写入 r32ui
(即使OpenGLES标准指定允许)因此无法在这类移动设备上绘画。
2024/05 …
应该搞个图标。。。。
Windows 下用cmake 这样做↗
多线程写在数据为0的时候有问题,修了
2024/04 …
可能需要一个多整数档笔刷直径功能,这样可以统一不同页面和页面不同区域的线条粗细。(做了,但实际上应该改成基础尺寸+档位,然后各个笔刷也应该改成不储存尺寸,而储存尺寸偏差,然后全部尺寸使用2n次方表示)(改好了)
需要修复超大图的问题,即使出现无法保存的情况也不能退出(修了,按道理应该不会退出了)
在LaGUI做了比较完善的键位支持,因此下个版本的好得涂可以用自定义键位来控制了。
增加了带透明导出的功能。
需要可选择超界颜色(可以了)
文件图层读写现在是多线程了。
win下读文件挂起问题修了
2024/03 …
好得涂现已支持自定义快捷键,但是功能还不是特别全。
好得涂现已支持按块移动图层
之前还做了导入时指定位置的功能
新的图层功能
- 复制
- 移动
- 快速切换草稿层可见性
lcms转换色彩空间的时候,如果直接从 线性AdobeRGB 转换成 sRGB 则黑处比首先转换成 Gamma2.2 的 AdobeRGB 再转 sRGB 要黑,不清楚为什么,没有迹象表明值有溢出。
2024/02 …
需要与画布一起保存附加文字,作为工作笔记(好了)
做了缩略图
需要在系统中加两个文件。一个 mime
到 ~/.local/share/mime/packages/
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="image/ourpaint">
<comment>OurPaint file</comment>
<icon name="image"/>
<glob-deleteall/>
<glob pattern="*.ourpaint"/>
</mime-type>
</mime-info>
然后是缩略图插件文件 到 /usr/share/thumbnailers/
[Thumbnailer Entry]
Version=1.0
Encoding=UTF-8
Type=X-Thumbnailer
Name=OurPaint thumbnailer
MimeType=image/ourpaint;
Exec=/home/yiming/Documents/sync/Projects/2022/laprograms/OurPaint/build/OurPaint --thumbnail %i %o %U
之后就自动建缩略图了。
图像扩充逻辑实际不正确,应当取 xy 的最大最小值而不是 xywh 的最大值,问题在图层有错位时变得明显。(前几天修了)
2024/01 …
以 PER_MONITOR_DPI_AWARE
的方式修好了 Wacom 数位板在Windows下映射的问题。
要做适用于屏幕的精细笔,将光标沿笔倾斜方向延长偏移以实现笔尖无遮挡
2023/12 …
现已修复 windows 下 wacom 事件频率导致画笔折线的问题
2023/10 …
可以利用下层特殊图层作为高度,这样采样不花额外性能,并且可以实现手工打底效果。
2023/09 …
程序纹画布!
2023/04 …
好得涂可以实现一种多种颜色笔刷。
一个小的抹颜色区域,或者就在画布上按住某个键给笔刷侧面上色(主要是实现起来方便一些),就可以实现花色笔刷。
2023/02 …
导出时图块外背景未转换为对数式,已修复
涂抹混合有问题,已修复
实现了迭代控制,因此能方便地制作半色调笔刷了。
需要在软件菜单里加个版本日志按钮昂。。。
新笔刷!
2023/01 …
还是mypaint的光谱混合 但是在gpu了
#1576 | 修好了,是涂抹时间超过0-1使得插值超界。 | |
现在可以通过WSL运行(但是似乎很慢)
Windows原生基本上可以了
这里#1584 | Win下的窗口什么的可以了,还有输入设备和文件等等一堆小东西不行。 | |
win大多数功能能用了
v0.1a,测试Windows版本
2022/12 …
行了,涂抹的逻辑也可以了,虽然涂抹的效果不好,但是可用。
http://scottburns.us/subtractive-color-mixture-5/↗
混色看这里
以及这个是mypaint的https://github.com/mypaint/mypaint/blob/master/doc/spectral/spectral.md
涂抹正确了
可以文件了
总的来说,还有这些需要实现了才能共享该程序的初步版本:
- 自定义的撤销命令。
- 工程文件打包。
- 切割文件导出。
- 导入导出的选项。
- 文件管理器的文件名以及过滤选项等优化。
储存单实例属性需要修改接口,做了个简化的假列表来支持单实例的指定文件保存。
其他的似乎都正常工作,还差导出的合成颜色。
可以撤销了
这样一来所有基本功能已经全部完成了。
节点笔刷初步
新的映射挂件
要复现目前使用的MyPaint笔刷形式,还需要:
- 椭圆比例(或者sdf实现,用以更方便地获得方形)
- 跟踪速度输入
- 跟踪方向输入(以及平滑,如何实现)
- 平滑位置(如何实现)
- 随机/噪声
映射挂件的撤销有问题,暂时还没管那么多,但需要修。
空了来
可以做笔刷了
不错
通过 这里↗ 可以下载一个测试icc以检查icc配置是否正常工作。若正常,则会显示错误颜色
汉化和各种可用性优化
0.1版 完成!
2022/11 …
由于MyPaint储存为8位sRGB,因此再次打开时出现精度丢失,这是不期望的。
研究发现可以使用计算着色器进行混合。可根据这个原理继续制作画图工具。
此外,如果只是简单混合而没有涂抹,则可以考虑使用GL_EXT_shader_framebuffer_fetch↗
好了至少能跑起来计算着色器了
可以画上去了哈哈哈
通过XInput2可以获得Wacom的压力和倾斜等参数
2022/05 …
更新:了解到GL_NV_texture_barrier↗可能可以允许同时读写同一张贴图,应该可以实现方便的点点点叠加,应该也容易实现笔划(但没有具体看,好像稍微麻烦些,主要是笔画的情况下如何定义自身叠加和非叠加,使用二级图应当能旁路这个问题,不过在不清楚笔画尺寸的情况下需要画多个块拼接)
2021/12 …
该工具特点
- 无限画布(最终取决于客户机内存)
- 有限撤销步数。(达到撤销步数的笔触合成到最终光栅上,未达到的为GL图元)
- 基于像素而非矢量显示。
主要局限
一些低功耗硬件可能不具备足够显存和内存以运行大图。SurfacePro6的glxinfo
报GL最大贴图尺寸为16384×8192,显存报3058MB共享,因此目前的大图应该能合理工作,更大的效率就比较低了。
无法混合和快速在原地累积,因此半透明刷子可能是很大的问题。
主要操作细节
贴图步进尺寸似乎可以设置为128,这也可以作为初始最小贴图的尺寸(但根据初始引用笔刷直接调节至下一个合理尺寸),每次步进就复制到新的上面,同时检查再建立同样大小伪贴图的可行性,不行则表明不能再请求这么多的显存用于贴图复制,此时启用局部高清贴图模式,丢掉未显示的那些(从内存中再读)。
涂抹和取色器采样似乎都只能从两层画完之后的视口FBO采,这样也能采到笔刷自身痕迹?(是期望的行为吗?)
保存就贴图分块读回来存。
时间原始时间每1/60秒更新一次笔刷显示列表,每提笔更新显示列表并应用最后一个撤销栈的笔画到光栅,对于不完整主图,需要重复调用内存里的那个图。
额外贴图
- Main Image,超尺寸的用多张Tile,显存无法分配完全的则只分配以屏幕为中心的大于屏幕的尺寸,做笔刷整合时则需要多次切换并从内存中调入完整图(以每图而不是每笔刷为循环基准)。
- 缩小贴图,用于缩小时查看,为每个主图块的小图,尚不知如何生成最好,(可能需要从CPU端生成?这样每应用一笔都需要读回来)。
- 视口FBO,复用GUI的面板FBO,则无需新建,但注意像素格式,可能需要16位。
视口FBO复制,因为需要一并混合到应用好的主图上。似乎可以直接采样底图并画到视口FBO,可以节省一个FBO。
其他局限
笔刷的序列混合不好实现,由于是并行提交,没有办法直接访问已工作的方块,所以可能只能以不透明和上次笔触完成后的FBO复制用以采样的方式工作。
检查了之前的GUI截图,序列透明覆盖似乎是正确的,那么非半透明的覆盖应该也是顺序正常的,并且可以使用深度。但由于界面有浮动面板,这里实际不清楚能否去掉那些的FBO因为是二次叠上去的,不同面板不一定同时都刷新。
2024/11/19 20:06:19