当前位置: 首页 > wzjs >正文

悬赏做logo的网站重庆网站界面设计

悬赏做logo的网站,重庆网站界面设计,asp.net个人网站怎么做,付网站首期合同款怎么做分录目录 前言: 一、色相(Hue) 二、饱和度(Saturation) 三、明度(Lightness) 四、全代码实现 五、效果对比 前言: PS中的色相/饱和度调节界面可通过快捷键CtrlU快速打开&#xff0…

目录

前言:

一、色相(Hue)

二、饱和度(Saturation)

三、明度(Lightness)

四、全代码实现

五、效果对比


前言:

PS中的色相/饱和度调节界面可通过快捷键Ctrl+U快速打开,如下

 而饱和度和明度调整,PS中的处理并不像平常的单一图像处理,而是做了一些算法改变,接下来就是详细拆分这其中的原理。

一、色相(Hue)

色相的处理就没有那么多的弯弯绕绕了,只需要将RGB转化为HSV,根据值设置H的变化,在转化会RGB即可。原本PS中的色相/饱和度处理面板是对HSL空间的处理,照理说是需要转换到HSL空间的,但对于色相来说,HSV和HSL都是一致的,所以并不需要我们真正的转到HSL。

代码:

          // RGB转HSV/HSBhalf3 RGB2HSV(half3 c){half4 K = half4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);half4 P = lerp(half4(c.bg, K.wz), half4(c.gb, K.xy), step(c.b, c.g));half4 Q = lerp(half4(P.xyw, c.r), half4(c.r, P.yzx), step(P.x, c.r));half D = Q.x - min(Q.w, Q.y);half E = 1e-10;return half3(abs(Q.z + (Q.w - Q.y) / (6.0 * D + E)), D / (Q.x + E), Q.x);}// HSV/HSB转RGBhalf3 HSV2RGB(half3 c){half4 K = half4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);half3 P = abs(frac(c.xxx + K.xyz) * 6.0 - K.www);return c.z * lerp(K.xxx, saturate(P - K.xxx), c.y);}
                 //Huehalf3 hsv = RGB2HSV(color.rgb);hsv.x = frac(hsv.x + _Hue / 360.0);color.rgb = HSV2RGB(hsv);

二、饱和度(Saturation)

饱和度本身在图像处理中就是根据灰度来处理的,但在PS中却设置了许多其它条件,其算法原理如下操作:

(注意,以下原理只使用RGB颜色空间,Lab颜色将不适用此公式)

对每个像素点:

rgbMax=max(R,G,B);

rgbMin=min(R,G,B);

delta=(rgbMax-rgbMin)/255

如果delta=0,则此像素点不再进行处理,而是跳出,进行下一个像素点颜色操作

如果delta>0,则value=(rgbMax+rgbMin)/255

HSL中的L:L=value/2;

HSL中的S:如果L<0.5,S=delta/value;

                    如果L>=0.5,S=delta/(2-value)

percent = 饱和度调整参数/100【将其归一化到(-1,1)】

如果percent>=0,先求出alpha:

        如果percent+S>=1:alpha=S;

        否则:alpha=1-percent;

        alpha=1/alpha-1;

        final_rgb = RGB+(RGB-L*255)*alpha;

如果percent<0,alpha=percent

        final_rgb = L*255+(RGB-L*255)*(1+alpha);

解释:其中rgbMax是指传入颜色RGB中最大值

                rgbMin是指传入颜色RGB中最小值

                percent是指饱和度调整参数归一化后的值(参数在PS的范围是(-100,100))

                

 

Shader代码:

 half3 Saturation(half3 color, float saturation){half rgbMax = max(color.r, max(color.g, color.b));half rgbMin = min(color.r, min(color.g, color.b));half delta = rgbMax - rgbMin;if (delta > 0){half value = rgbMax + rgbMin;half L = value * 0.5;half S = lerp(delta / value, delta / (2.0 - value), step(0.5, delta));half percent = saturation * 0.01;half alpha = 0;half3 final_color = 0;if (percent >= 0){if (percent + S >= 1)alpha = S;elsealpha = 1 - percent;alpha = 1 / alpha - 1;final_color = color + (color - half3(L, L, L)) * alpha;}else{alpha = percent;final_color = L + (color - half3(L, L, L)) * (1 + alpha);}return final_color;}elsereturn color;}

优化算法:

  half3 Saturation(half3 color, float saturation){half rgbMax = max(color.r, max(color.g, color.b));half rgbMin = min(color.r, min(color.g, color.b));half delta = rgbMax - rgbMin;half value = rgbMax + rgbMin;half L = value * 0.5;half S = lerp(delta / value, delta / (2.0 - value), step(0.5, delta));half percent = saturation * 0.01;half3 final_color = lerp(L + (color - L.xxx) * (1 + percent),color + (color - L.xxx) * (1.0 / (lerp(1.0 - percent, S, step(1.0, percent + S))) - 1.0),step(0.0, percent));final_color = lerp(color, final_color, ceil(delta));return final_color;}

 函数调用

              //Saturationcolor.rgb = Saturation(color.rgb, _Saturation);

三、明度(Lightness)

PS的明度不是指代HSV中的Value和HSB中的Brightness,它也是不线性的单一乘法。实际上,PS的明度调整采用的是Alpha遮罩模式。明度正调整是以一张白色遮罩层进行操作,负调整则是黑色遮罩层。其公式如下:

(注意,以下原理只使用RGB颜色空间,Lab颜色将不适用此公式)

alpha=_Lightness/100【对alpha进行归一化,范围为(-1,1)】 

如果_Lightness>0:

        final_color = RGB*(1-alpha)+255*alpha;

如果_Lightness<0:

        final_color = RGB+RGB*alpha;

解释:其中255代表白色,255*alpha就代表是白色遮罩层,明度越大,遮罩层alpha越大

           当alpha<0时则是已黑色遮罩层进行计算,alpha=-1时则是全黑

           当且仅当alpha=0时显示的是原图片

Shader代码:

                 //Valuehalf value = _Lightness * 0.01;if (value > 0)color.rgb = (1 - value) * color.rgb + half3(1.0, 1.0, 1.0) * value;else if (value < 0)color.rgb = color.rgb * (1.0 + value);

 优化算法:

 color.rgb = lerp(color.rgb * (1.0 + value), lerp(color.rgb, half3(1.0, 1.0, 1.0), value), step(0.0, _Lightness));

四、全代码实现

Shader "Background_Custom_HSV"
{Properties{_PatternTex ("贴图", 2D) = "black" { }[Header(BaseColor)][Space][HDR]_Color0 ("颜色", Color) = (1, 1, 1, 1)[Header(HSL)][Space]_Hue ("Hue", Range(-180, 180)) = 0.0_Saturation ("Saturation", Range(-100, 100)) = 0.0_Lightness ("Lightness", Range(-100, 100)) = 0.0}SubShader{Tags { "RenderType" = "Transparent" "Queue" = "Transparent" "RenderPipeline" = "UniversalPipeline" "IgnoreProjector" = "True" }Pass{Blend SrcAlpha OneMinusSrcAlphaZWrite OffCull BackHLSLPROGRAM#pragma vertex vert#pragma fragment frag#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"TEXTURE2D(_PatternTex);SAMPLER(sampler_PatternTex);CBUFFER_START(UnityPerMaterial)half3 _Color0;float _Hue;float _Saturation;float _Lightness;CBUFFER_ENDstruct Attributes{float4 positionOS : POSITION;float2 texcoord : TEXCOORD0;};struct Varyings{float4 positionHS : SV_POSITION;float2 uv : TEXCOORD0;};// RGB转HSV/HSBhalf3 RGB2HSV(half3 c){half4 K = half4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);half4 P = lerp(half4(c.bg, K.wz), half4(c.gb, K.xy), step(c.b, c.g));half4 Q = lerp(half4(P.xyw, c.r), half4(c.r, P.yzx), step(P.x, c.r));half D = Q.x - min(Q.w, Q.y);half E = 1e-10;return half3(abs(Q.z + (Q.w - Q.y) / (6.0 * D + E)), D / (Q.x + E), Q.x);}// HSV/HSB转RGBhalf3 HSV2RGB(half3 c){half4 K = half4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);half3 P = abs(frac(c.xxx + K.xyz) * 6.0 - K.www);return c.z * lerp(K.xxx, saturate(P - K.xxx), c.y);}half3 Saturation(half3 color, float saturation){half rgbMax = max(color.r, max(color.g, color.b));half rgbMin = min(color.r, min(color.g, color.b));half delta = rgbMax - rgbMin;// if (delta > 0)// {//     half value = rgbMax + rgbMin;//     half L = value * 0.5;//     half S = lerp(delta / value, delta / (2.0 - value), step(0.5, delta));//     half percent = saturation * 0.01;//     half alpha = 0;//     half3 final_color = 0;//     if (percent >= 0)//     {//         if (percent + S >= 1)//             alpha = S;//         else//             alpha = 1 - percent;//         alpha = 1 / alpha - 1;//         final_color = color + (color - half3(L, L, L)) * alpha;//     }//     else//     {//         alpha = percent;//         final_color = L + (color - half3(L, L, L)) * (1 + alpha);//     }//     return final_color;// }// else//     return color;half value = rgbMax + rgbMin;half L = value * 0.5;half S = lerp(delta / value, delta / (2.0 - value), step(0.5, delta));half percent = saturation * 0.01;half3 final_color = lerp(L + (color - L.xxx) * (1 + percent),color + (color - L.xxx) * (1.0 / (lerp(1.0 - percent, S, step(1.0, percent + S))) - 1.0),step(0.0, percent));final_color = lerp(color, final_color, ceil(delta));return final_color;}Varyings vert(Attributes v){Varyings o;o.positionHS = TransformObjectToHClip(v.positionOS.xyz);o.uv = v.texcoord;return o;}half4 frag(Varyings i) : SV_Target{half4 color = SAMPLE_TEXTURE2D(_PatternTex, sampler_PatternTex, i.uv);color.rgb *= _Color0.rgb;//Huehalf3 hsv = RGB2HSV(color.rgb);hsv.x = frac(hsv.x + _Hue / 360.0);color.rgb = HSV2RGB(hsv);//Saturationcolor.rgb = Saturation(color.rgb, _Saturation);//Valuehalf value = _Lightness * 0.01;// if (value > 0)//     color.rgb = (1 - value) * color.rgb + half3(1.0, 1.0, 1.0) * value;// else if (value < 0)//     color.rgb = color.rgb * (1.0 + value);color.rgb = lerp(color.rgb * (1.0 + value), lerp(color.rgb, half3(1.0, 1.0, 1.0), value), step(0.0, _Lightness));color.rgb = saturate(color.rgb);return color;}ENDHLSL}}FallBack "Hidden/Universal Render Pipeline/FallbackError"
}

五、效果对比

基础色:

 

 色相:

饱和度:

明度:

 


文章转载自:

http://LEDhr168.cLwhf.cn
http://8JHqv1og.cLwhf.cn
http://r6JlKVNd.cLwhf.cn
http://02ZStSrU.cLwhf.cn
http://SJaxFP6n.cLwhf.cn
http://tTApdMPZ.cLwhf.cn
http://JkriC29k.cLwhf.cn
http://t2iKGunF.cLwhf.cn
http://nnBj6Oi0.cLwhf.cn
http://pY38X02Z.cLwhf.cn
http://9WcDejze.cLwhf.cn
http://SyjqZxmx.cLwhf.cn
http://4HsesoPG.cLwhf.cn
http://W5sfKzMM.cLwhf.cn
http://LRw2MvBo.cLwhf.cn
http://Nk7oxAYE.cLwhf.cn
http://eyerZgzl.cLwhf.cn
http://0soWhPBK.cLwhf.cn
http://UDfUcGJq.cLwhf.cn
http://d8MnswfP.cLwhf.cn
http://xtWorrUu.cLwhf.cn
http://UOMCvoeh.cLwhf.cn
http://w05VUrBw.cLwhf.cn
http://OmXT6hII.cLwhf.cn
http://0AZnXu1n.cLwhf.cn
http://eC3pEyoO.cLwhf.cn
http://964K5IGe.cLwhf.cn
http://b37HSxDC.cLwhf.cn
http://y7UmzNRV.cLwhf.cn
http://NkErmdIM.cLwhf.cn
http://www.dtcms.com/wzjs/647315.html

相关文章:

  • 石家庄最好的网站建设公司排名广告设计学什么内容
  • 银州手机网站建设网站建设综合实训总结与体会
  • 网站建设涉及的法律做竞价网站要准备什么条件
  • 网站建设 经典书籍优惠的网站快排公司电话
  • 烟台营销型网站建设成品网站灬源码1688
  • 做药的常用网站gta5办公室网站正在建设
  • 谁能给个网站谢谢合肥seo报价
  • 买卖域名哪个网站好中国大工程建设需要什么样的人才
  • 怎么做网站后门wordpress文章添加动态数据
  • 企业网站策划书天津做网站建设的公司
  • 网站开发进度安排文档公司官网站怎么搞
  • 厂房外墙设计效果图聊城seo整站优化报价
  • 景征网站建设深圳市建设集团有限公司详细地址
  • 中小企业网站建设 网络营销怎么生成网页链接
  • 大连高新区规划建设局网站顺企网app下载
  • 做微商的网站公司推广业务哪个平台好
  • 局域网内网站建设2024网站推广
  • 平面网站模版网站开发seo要求
  • wordpress进网站慢seo整站优化解决方案
  • 网站维护属于什么部门小程序开发费用多少钱
  • 网站制作前的图片路径网站利用微信拉取用户做登录页
  • 网站建设 phpwordpress中文免费企业模板
  • 马鞍山天立建设网站南昌企业网站建设费用
  • 专业做化妆品的网站ac域名网站
  • 服装网站建设教程金寨县住房和城乡建设部网站
  • 网易严选的网站建设wordpress get author
  • 网站建设内容与实现功能淮海中路街道网站建设
  • 淘宝客建网站ios+wordpress
  • 网站 如何做 中英文切换中盛浩瀚建设有限公司网站
  • 做住宿的有几个网站WordPress搭建社区网站