着色器:获得fixed3或fixed4最高值的最快方法是什么?

时间:2015-05-28 09:34:28

标签: colors shader cg

所以我正在尝试做一些着色器工作,我想用一个颜色变量做两件事:我希望它根据颜色的“强度”与纹理混合,我想要颜色的alpha混合整个图像。

所以:

fixed4(tex.rgb * (1 - intensity) + color.rgb * (intensity), tex.a * color.a)

现在我的想法是使用最高的RGB颜色值来获得它的强度。使用color.a更直观,但由于我想将它用于整个对象的透明度,这不起作用。

现在的问题是,我如何获得强度?

单独比较RGB似乎很笨拙。那将是:

r > b > g?

导致这种丑陋:

max(r, max(g, b) )

有更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

物理强度通常为(r + g + b)/ 3。 (或考虑眼睛敏感度的加权变体)。 在这里,您将获得"价值"画家,感觉上不是强度(因为白色= R + G + B比单独的R更多瓦特/ st)。但如果你真的想要这个值,是的,max(max())。 (没什么大不了的:-))