IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    关于“好得涂”光谱混合算法

    吴奕茗 (chengdulittlea@outlook.com)发表于 2025-05-06 15:27:38
    love 0

    关于“好得涂”光谱混合算法

    尽量少改动的原则,使得画布保持目前的格式,然后采用多像素合并方式生成图像。

    RGBA RGBA   |   R0-7         T0-7
    RGBA RGBA   |   T8-14 DH   R8-14 DL

    交错储存2x15个8位(在移动设备上是4位)反射和投射光谱切片和1个密度值。生成图像时以消拜耳或直接插值方式工作。

    移动设备如果需要8位每光谱切片,需要进一步扩大像素合并范围。

    如何计算光谱混合值:

    针对每个波长切片的反射透射强度做两个乘法

    光源(15波长切片,可带有1个16位log曝光值)
     |
     |    +--------> 结果
     |    |
     |  -----透射
     |    ^
     V    |
    -----反射

    记录在像素中的反射/透射值应当已经预乘密度,但还没有确定,具体取决于像素如何与笔刷颜色混合。

    原则上透射应该乘两次?但是更加复杂并且按照顺序追踪,画布可能会变得非常慢。目前透射计算在后的方法对于多图层只需要连续不断从底部计算至顶部即可完成混合。

    光线混合:

    获得来自底部的光线

    以反射密度与上层像素反射率混合(对于不同密度的颜料配置,笔刷应为像素写入折算完颜料的密度)

    乘透射率和透射密度可得传出光线

    对于像素,需要写入新的透射率和反射率,此时只需要考虑一层的情况(仅适用于笔刷):

    透射密度似乎可以直接插值为新值

    反射密度好像也行,但是笔刷折算了颜料的密度,这里有非线性, 可能有问题

    透射密度记录在像素上的值和颜料配置值应该都具有相当大的非线性,不然无法实现“浓黑”的情况,此时有可能需要16位的透射密度,但实现之后再来研究也行

    涂抹可以一般直接插值,但是对于非线性的情况(如笔干湿和力度不同)可能也需要非线性地处理两个密度。

    简单拾色应该对于单层可行,因为既然像素也是这样混合的。可以 直接记录透射和反射的波长切片和强度。

    复杂一点的拾色应该是可以的,需要采样所有层,这个主要是做起来要麻烦点。

    需要先做适用于光谱图层的反转混合着色器

    调色盘也需要重新设计。主要特征:

    • 列出原始颜料,可以用笔去蘸
    • 在中间区域混合
    • 需要许多个槽储存已经混合的颜色
    • 笔的容量给一个简易的曲线
    • 需要蘸水槽
    • 因此又需要干湿指示(即颜料密度)

    大概有这么个意思 至于具体怎么混还要调

    • 应完成调色盘挂件绘图和拖动缩放交互(好)
    • 应制作一个色相混合预览挂件

    全局灯光对挂件指示的影响

    光谱模式图层混合的基本框架有了

    需要光谱笔刷点点着色器

    2025/04/11 21:48:20 - 2025/05/06 15:27:38


沪ICP备19023445号-2号
友情链接