计算机图形学 Unity ShaderLab 颜色混合运算相关计算方法

本文使用shader语法

已知颜色A与颜色B,颜色A覆盖在颜色B上,最终输出的结果为颜色C,B为基色,A为混合色,C为输出色

正片叠底

描述:颜色叠加,使像素重合部分的颜色更暗。像素覆盖顺序随意调换不会改变结果
公式:C = AB
shader代码:

fixed4 C = A * B;
滤色

描述:与正片叠底相反,重合部分的像素更亮
公式:C = 1-(1-A)(1-B)
shader代码:

fixed4 C = 1 - (1 - A) * (1 - B);
叠加

描述:结合滤色与正片叠底,基色的像素重合部分比较亮的会更亮,比较暗的会跟暗
公式:C = 1-(1-A)(1-B)
shader代码:

if(A > 0.5){
	fixed4 C = 1 - 2 * (1 - A) * (1 - B);
}else{
	fixed4 C = 2*A*B;
}
反色

描述:取得与基色相反的颜色
公式:C = (1-A)
shader代码:

fixed4 C = 1 - A;

颜色制式

RGBA :红、绿、蓝、透明度
HSL: hue(色相)、saturation(饱和度)、lightness(亮度)
HSV: hue(色相)、saturation(饱和度)、value(色调)
HSB: hue(色相)、saturation(饱和度)、brightness(明度)

颜色转换


发布了134 篇原创文章 · 获赞 37 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/lengyoumo/article/details/104210066