Skip to content

ReplaceHueShader Material#46

Open
GlitchedReme wants to merge 2 commits into
BAKAOLC:devfrom
GlitchedReme:improve-material
Open

ReplaceHueShader Material#46
GlitchedReme wants to merge 2 commits into
BAKAOLC:devfrom
GlitchedReme:improve-material

Conversation

@GlitchedReme
Copy link
Copy Markdown
Contributor

Summary / 概要

  • 添加了CreateReplaceHueShaderMaterial以替代CreateRgbShaderMaterial,并添加一个亮度参数可供调整
  • 让shader只创建一个实例,UnmodulatedHsvShaderMaterial只创建一个实例
97b9a02339cae4081cde6155729b84ec CreateRgbShaderMaterial 图片 CreateReplaceHueShaderMaterial
图片 可用于其他图片换色

Why / 背景与动机

  • CreateRgbShaderMaterial只是使用yiq偏移基于原始卡框换色,这对于原始红色卡框也许有一定作用,但无法作用其他色调的图片。
  • CreateReplaceHueShaderMaterial新建了一个shader,保留目标图片的饱和度、明度数值并直接对色调进行替换,填入颜色基本就是所写颜色,同时对较暗的颜色提供一定的亮度补偿。可传入目标颜色和自定义亮度增益制作更丰富的颜色。
  • 此外修改Shader为只生成一次实例,之前每次创建ShaderMaterial时都会创建一次shader和复制一次,开销较大。对于shader仅存一份实例即可,可提高渲染速度。
  • 此外修改CreateUnmodulatedHsvShaderMaterial为只生成一次实例。UnmodulatedHsvShaderMaterial参数不会变化,仅存一份实例即可,可提高渲染速度。

What changed / 变更点

  • Utils/MaterialUtils.ShaderSources.cs
  • Utils/MaterialUtils.cs

Notes / 备注

  • ReplaceHueShaderMaterial的自动亮度补偿只做了简单的min限制,可继续优化成非线性增益。
  • ShaderMaterial也许可以建个字典缓存

@GlitchedReme GlitchedReme reopened this May 23, 2026
@GlitchedReme GlitchedReme changed the base branch from main to dev May 23, 2026 04:16
@BAKAOLC
Copy link
Copy Markdown
Owner

BAKAOLC commented May 23, 2026

共享 material 的问题在于如果有人进行属性修改会影响所有人
这对于某些情况来说属于行为回退,可能会考虑改为单独提供 shared 模式返回

老 api 被静默修改了语义,可能会影响部分 mod 的实际工作效果
为了保持兼容性,应当考虑只新增 api 并保留标注过时以揭示其不再应当使用

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants