我想写一个带有输入图像的像素着色器,并将一个Hue范围(即HSV)的所有颜色转换为另一个Hue范围.
我的动机很简单:我想以不同的方式为一堆不同的纹理着色,但我不想为整个纹理着色,只是在特定范围内具有色调的部分.这样,我可以绘制一辆赛车的图像,然后使用像素着色器更改汽车上的条纹和徽标的颜色.
我在网上查看了HLSL文档,找不到任何处理色调的内容.是否有在线提供的HLSL代码库?
这是我想要完成的一些伪代码:
external float SrcMinHue,SrcMaxHue,TargetMin
void changeHues(image source)
{
foreach x,y in image:
{
float sourceHue = getHue(source,x,y)
if (SrcMinHue < sourceHue < SrcNaxHue):
setHue(source,x,y,(TargetMin + (sourceHue - MinHue))
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用XNA Game Studio,如果这些信息对任何人都很重要.
在NVidia Shader Library页面上查看"post RGB to HSV"样本.这可能会给你一些灵感.
否则,我猜你可以"简单地"使用维基百科中的公式将RGB颜色转换为像素着色器中的 HSV ,然后从那里获取它.
| 归档时间: |
|
| 查看次数: |
7975 次 |
| 最近记录: |