Photoshop图层混合模式公式(Unity,CG实现)

本文详细介绍了Unity中实现Photoshop图层混合模式的方法,并提供了多种混合模式的公式及代码实现,如正片叠底、滤色等。

本文主要目的来自于在unity符合美术在ps里面的演示效果。

两个图层叠加到一起的效果,废话不多说直接看效果:

图片资源在文章末尾

完整代码也在末尾

目录

目录

Multiply 正片叠底

 Screen 滤色

 Color Dodge 颜色减淡

 Color Burn 颜色加深

Linear Dodge 线形减淡

Linear Burn 线形加深

Overlay 叠加

 Hard Light 强光

Soft Light 柔光

亮光 vivid light

Linear Light 线形光

Pin Light 点光

Hard Mix 实色混合

Difference 差值

Excusion 排除

Hue 色相

HSV那几个模式异常说明:

完整代码:

测试效果图片资源:


Multiply 正片叠底

公式:

Ans = A * B;

half4 finalRGBA = half4(colorA.xyz * colorB.xyz,1);

效果对比:

核心代码:

half4 finalRGBA =  half4(1 - (1 - colorA.xyz) * (1 -colorB.xyz),1);

 Screen 滤色

公式:

Ans = 1 - (1 - colorA ) * (1 - colorB);

效果对比:

 核心代码:

half4 finalRGBA =  half4(1 - (1 - colorA.xyz) * (1 -colorB.xyz),1);

 Color Dodge 颜色减淡
 

公式:

ans=colorA / ( 1 - colorB);

效果对比:(unity存在些许过曝的情况)

核心代码:

finalRGBA = half4(colorA.xyz * (rcp(1 - colorB.xyz)),1);

 Color Burn 颜色加深

公式:

ans=1 -  (1 - colorA)/ colorB;

效果对比:

核心代码:

finalRGBA = half4(1- rcp(colorB.xyz) * (1 - colorA.xyz),1);

Linear Dodge 线形减淡

公式:

Ans  = colorA + colorB;

 效果对比:

核心代码:

finalRGBA = half4(colorB.xyz + colorA.xyz,1);

Linear Burn 线形加深

公式:

 Ans  = colorA + colorB  - 1 ;

效果对比:

核心代码:

finalRGBA = half4(colorB.xyz + colorA.xyz - 1,1);

Overlay 叠加


公式:


colorB<=0.5 :  Ans=2*colorA*colorB
colorB>0.5: Ans=1 - 2 * (1-colorA) * ( 1 - colorB)

效果对比:

核心代码:

half3 c1 = colorA.xyz * colorB.xyz * 2 *OA ;
half3 c2 = (1 - 2 * (1 - colorA.xyz) *(1 - colorB.xyz)) * (1 - 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值