美颜
作者:追风剑情 发布于:2021-7-7 11:59 分类:Shader
一、原理
参考博文
Unity Shader 实现磨皮效果
Bilateral Filters(双边滤波算法)原理及实现(二)
对皮肤美白算法的一些研究
美白公式
效果:图像两端(明-暗)变化弱,中间变化强。
w(x,y)为输入的像素颜色,v(x,y)为输出的像素颜色,beta为调节参数。
双边滤波公式
效果:保边去噪
g(i,j)为输出的像素颜色,f(k,l)为当前输入的像素颜色,S(i,j)是指以(i,j)为中心的(2N+1)*(2N+1)的卷积核覆盖的像素区域。
二、Shader
//一个简单美颜Shader //功能:磨皮、美白 Shader "Custom/BeautyFaceShader" { Properties { _MainTex ("Texture", 2D) = "white" {} //模糊大小 (值越大越模糊) _Radius ("Radius", Range(0, 10)) = 5 //调节距离空间权重,值越大权重越大 _SigmaS("SigmaS", float) = 3 //调节颜色空间权重,值越大权重越大 _SigmaR("SigmaR", float) = 1 //亮度值 _Brightness("Brightness", float) = 20 //对比度 _Contrast("Contrast", float) = 1.18 //饱和度 _Saturation("Saturation", float) = 1 } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; }; sampler2D _MainTex; float4 _MainTex_ST; half4 _MainTex_TexelSize; float _Radius; float _SigmaS; float _SigmaR; float _Brightness; float _Contrast; float _Saturation; //计算像素亮度值 float Luminance(float3 color) { return dot(color, float3(0.2125, 0.7154, 0.0721)); } //提亮暗部区域 float3 Brightness(float3 col) { //此公式: 使图像暗部变化强,亮部变化弱 //col.r = log(col.r * _Brightness); //col.g = log(col.g * _Brightness); //col.b = log(col.b * _Brightness); //原理: https://blog.csdn.net/weixin_33716557/article/details/86197248?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-7.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-7.control //此公式: 使图像两端变化弱,中间变化强 col.r = log(col.r * (_Brightness - 1) + 1) / log(_Brightness); col.g = log(col.g * (_Brightness - 1) + 1) / log(_Brightness); col.b = log(col.b * (_Brightness - 1) + 1) / log(_Brightness); return col; } //原理: https://blog.csdn.net/u013066730/article/details/87919412 //转载: https://www.jianshu.com/p/90feece27a04?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation //双边滤波算法-保边去噪 float3 BilateralFilter(float2 uv) { float i = uv.x; float j = uv.y; float sigmaSSquareMult2 = (2 * _SigmaS * _SigmaS); float sigmaRSquareMult2 = (2 * _SigmaR * _SigmaR); float3 centerCol = tex2D(_MainTex, uv).rgb; // 中心点像素的颜色 // float centerLum = Luminance(centerCol); // 中心点像素的亮度 // float3 sum_up; // 分子 // float3 sum_down; // 分母 // for (int k = -_Radius; k <= _Radius; k++) { for (int l = -_Radius; l <= _Radius; l++) { float2 uv_new = uv + _MainTex_TexelSize.xy * float2(k, l); float3 curCol = tex2D(_MainTex, uv_new).rgb; // 当前像素的颜色 // float curLum = Luminance(curCol); // 当前像素的亮度 // float3 deltaColor = curCol - centerCol; float len = dot(deltaColor, deltaColor); // float exponent = -((i-k)*(i-k)+(j-l)*(j-l))/sigmaSSquareMult2 - (curLum-centerLum)*(curLum-centerLum)/sigmaRSquareMult2; float exponent = -((i - k) * (i - k) + (j - l) * (j - l)) / sigmaSSquareMult2 - len / sigmaRSquareMult2; float weight = exp(exponent); sum_up += curCol * weight; sum_down += weight; } } float3 rgb = sum_up / sum_down; return rgb; } v2f vert(appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = TRANSFORM_TEX(v.uv, _MainTex); return o; } float4 frag(v2f i) : SV_Target { //保边去噪 float3 rgb = BilateralFilter(i.uv); //该像素对应的亮度值 fixed luminance = Luminance(rgb); //使用该亮度值创建一个饱和度为0的颜色 fixed3 luminanceColor = fixed3(luminance, luminance, luminance); //创建一个对比度度为0的颜色 fixed3 avgColor = fixed3(0.5, 0.5, 0.5); //调整饱和度 rgb = lerp(luminanceColor, rgb, _Saturation); //调整对比度 rgb = lerp(avgColor, rgb, _Contrast); //调整亮度 rgb = Brightness(rgb); return fixed4(rgb, 1); } ENDCG } } }
效果
标签: Shader
日历
最新文章
随机文章
热门文章
分类
存档
- 2024年11月(3)
- 2024年10月(5)
- 2024年9月(3)
- 2024年8月(3)
- 2024年7月(11)
- 2024年6月(3)
- 2024年5月(9)
- 2024年4月(10)
- 2024年3月(11)
- 2024年2月(24)
- 2024年1月(12)
- 2023年12月(3)
- 2023年11月(9)
- 2023年10月(7)
- 2023年9月(2)
- 2023年8月(7)
- 2023年7月(9)
- 2023年6月(6)
- 2023年5月(7)
- 2023年4月(11)
- 2023年3月(6)
- 2023年2月(11)
- 2023年1月(8)
- 2022年12月(2)
- 2022年11月(4)
- 2022年10月(10)
- 2022年9月(2)
- 2022年8月(13)
- 2022年7月(7)
- 2022年6月(11)
- 2022年5月(18)
- 2022年4月(29)
- 2022年3月(5)
- 2022年2月(6)
- 2022年1月(8)
- 2021年12月(5)
- 2021年11月(3)
- 2021年10月(4)
- 2021年9月(9)
- 2021年8月(14)
- 2021年7月(8)
- 2021年6月(5)
- 2021年5月(2)
- 2021年4月(3)
- 2021年3月(7)
- 2021年2月(2)
- 2021年1月(8)
- 2020年12月(7)
- 2020年11月(2)
- 2020年10月(6)
- 2020年9月(9)
- 2020年8月(10)
- 2020年7月(9)
- 2020年6月(18)
- 2020年5月(4)
- 2020年4月(25)
- 2020年3月(38)
- 2020年1月(21)
- 2019年12月(13)
- 2019年11月(29)
- 2019年10月(44)
- 2019年9月(17)
- 2019年8月(18)
- 2019年7月(25)
- 2019年6月(25)
- 2019年5月(17)
- 2019年4月(10)
- 2019年3月(36)
- 2019年2月(35)
- 2019年1月(28)
- 2018年12月(30)
- 2018年11月(22)
- 2018年10月(4)
- 2018年9月(7)
- 2018年8月(13)
- 2018年7月(13)
- 2018年6月(6)
- 2018年5月(5)
- 2018年4月(13)
- 2018年3月(5)
- 2018年2月(3)
- 2018年1月(8)
- 2017年12月(35)
- 2017年11月(17)
- 2017年10月(16)
- 2017年9月(17)
- 2017年8月(20)
- 2017年7月(34)
- 2017年6月(17)
- 2017年5月(15)
- 2017年4月(32)
- 2017年3月(8)
- 2017年2月(2)
- 2017年1月(5)
- 2016年12月(14)
- 2016年11月(26)
- 2016年10月(12)
- 2016年9月(25)
- 2016年8月(32)
- 2016年7月(14)
- 2016年6月(21)
- 2016年5月(17)
- 2016年4月(13)
- 2016年3月(8)
- 2016年2月(8)
- 2016年1月(18)
- 2015年12月(13)
- 2015年11月(15)
- 2015年10月(12)
- 2015年9月(18)
- 2015年8月(21)
- 2015年7月(35)
- 2015年6月(13)
- 2015年5月(9)
- 2015年4月(4)
- 2015年3月(5)
- 2015年2月(4)
- 2015年1月(13)
- 2014年12月(7)
- 2014年11月(5)
- 2014年10月(4)
- 2014年9月(8)
- 2014年8月(16)
- 2014年7月(26)
- 2014年6月(22)
- 2014年5月(28)
- 2014年4月(15)
友情链接
- Unity官网
- Unity圣典
- Unity在线手册
- Unity中文手册(圣典)
- Unity官方中文论坛
- Unity游戏蛮牛用户文档
- Unity下载存档
- Unity引擎源码下载
- Unity服务
- Unity Ads
- wiki.unity3d
- Visual Studio Code官网
- SenseAR开发文档
- MSDN
- C# 参考
- C# 编程指南
- .NET Framework类库
- .NET 文档
- .NET 开发
- WPF官方文档
- uLua
- xLua
- SharpZipLib
- Protobuf-net
- Protobuf.js
- OpenSSL
- OPEN CASCADE
- JSON
- MessagePack
- C在线工具
- 游戏蛮牛
- GreenVPN
- 聚合数据
- 热云
- 融云
- 腾讯云
- 腾讯开放平台
- 腾讯游戏服务
- 腾讯游戏开发者平台
- 腾讯课堂
- 微信开放平台
- 腾讯实时音视频
- 腾讯即时通信IM
- 微信公众平台技术文档
- 白鹭引擎官网
- 白鹭引擎开放平台
- 白鹭引擎开发文档
- FairyGUI编辑器
- PureMVC-TypeScript
- 讯飞开放平台
- 亲加通讯云
- Cygwin
- Mono开发者联盟
- Scut游戏服务器引擎
- KBEngine游戏服务器引擎
- Photon游戏服务器引擎
- 码云
- SharpSvn
- 腾讯bugly
- 4399原创平台
- 开源中国
- Firebase
- Firebase-Admob-Unity
- google-services-unity
- Firebase SDK for Unity
- Google-Firebase-SDK
- AppsFlyer SDK
- android-repository
- CQASO
- Facebook开发者平台
- gradle下载
- GradleBuildTool下载
- Android Developers
- Google中国开发者
- AndroidDevTools
- Android社区
- Android开发工具
- Google Play Games Services
- Google商店
- Google APIs for Android
- 金钱豹VPN
- TouchSense SDK
- MakeHuman
- Online RSA Key Converter
- Windows UWP应用
- Visual Studio For Unity
- Open CASCADE Technology
- 慕课网
- 阿里云服务器ECS
- 在线免费文字转语音系统
- AI Studio
- 网云穿
- 百度网盘开放平台
- 迅捷画图
- 菜鸟工具
- [CSDN] 程序员研修院
- 华为人脸识别
- 百度AR导航导览SDK
- 海康威视官网
- 海康开放平台
- 海康SDK下载
- git download
交流QQ群
-
Flash游戏设计: 86184192
Unity游戏设计: 171855449
游戏设计订阅号