看完了这一书上的代码,然后在网上查找 Photoshop 色阶的一些解释,大致理解为:调整色阶就是调整亮度,也就是调整纹理 R、G、B 通道的数值大小。

下面是 Photoshop 中的直方图转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn

X 轴表示 亮度,也就是 R 通道 值。

Y轴表示有多少个像素的颜色 的 R通道是这个值。

在 Shader 中调整 色阶,就是来调整 R、G、B的值。原理是这样,但是具体的算法,应该去问Adobe了……。

Shader "CookBookShaders/PhotoshopLevel"
{Properties {_MainTex ("Base (RGB)", 2D) = "white" {}_inBlack ("Input Black",Range(0,255)) = 0_inWhite ("Input White",Range(0,255)) = 255_outBlack ("Output Black",Range(0,255)) = 0_outWhite ("Output White",Range(0,255)) = 255_inGamma ("Input Gamma",Range(0,2)) = 1.61}SubShader {Tags { "RenderType"="Opaque" }LOD 200CGPROGRAM#pragma surface surf Lambertsampler2D _MainTex;float _inBlack;float _inWhite;float _outBlack;float _outWhite;float _inGamma;struct Input {float2 uv_MainTex;};float getPixelLevel(float pixelColor){float pixelResult;pixelResult = (pixelColor*255.0);//因为颜色是(0,1)范围的,这里要(0,255)参与计算pixelResult = max(0,pixelResult - _inBlack); //让 pixelColor也就是通道值,比如R的值,减去一个值 _inBlack ,就是变暗。pixelResult = saturate( pow( pixelResult/(_inWhite - _inBlack),_inGamma ));//用原来的亮度pixelResult除以 指定亮度与指定暗度的差值。得到值范围(1,n),pow进行次方运算。pixelResult = (pixelResult * (_outWhite - _outBlack) +_outBlack ) / 255.0;return pixelResult;}void surf (Input IN, inout SurfaceOutput o) {half4 c = tex2D (_MainTex, IN.uv_MainTex);float outRPixel = getPixelLevel(c.r);float outGPixel = getPixelLevel(c.g);float outBPixel = getPixelLevel(c.b);o.Albedo = float3(outRPixel,outGPixel,outBPixel);o.Alpha = c.a;}ENDCG} FallBack "Diffuse"
}

调节的效果图 转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn

示例项目打包下载:

http://pan.baidu.com/s/1o8zRrnG

Unity Shaders and Effects Cookbook (2-7)实现 Photoshop 色阶效果相关推荐

  1. Unity Shaders and Effects Cookbook (3-6) 创建各向异性高光类型(Anisotropic) 模拟金属拉丝效果

    这一次学习各向异性高光类型,名字真拗口,Anisotropic 这个英文单词也很拗口. 各向异性是模拟物体表面 沟槽方向性的高光反射类型,他会修改或延伸垂直方向上的高光. 比如模拟金属拉丝的效果,就可 ...

  2. Unity Shaders and Effects Cookbook (3-4) 使用高光贴图

    在学习完上一节之后.已经了解了在Unity 中怎样实现一个高光 Shader ,可是会有一个问题.就是效果看起来不切实际,如以下的问题 我用一张图片贴到了Cube上面.然后用了一个高光材质,得到了下图 ...

  3. Unity Shaders and Effects Cookbook (7-2) Surface Shader 中实现 顶点动画

    上一节中说了,在 Surface Shader 中,添加顶点函数,我们可以在 顶点函数中获取到 顶点数据,比如顶点颜色.顶点坐标等. 这一节学习获取顶点坐标,并且修改顶点坐标,来实现顶点动画. 简单介 ...

  4. Unity Shaders and Effects Cookbook (4-5)Cubemap与菲涅尔反射

    菲涅尔是人名,他发现,当我们站在水中,直直的往下看水面,是看不到反射的太阳光的.而当我们往远处看时,就能看到很强的反光,也就是成语波光粼粼所体现的.这一现象就被命名为 菲涅尔反射. 刚看这一节的时候觉 ...

  5. Unity Shaders and Effects

    https://www.baidu.com/link?url=o85V5QLsraCjMOmzJc6081Z3bsQRw4_hjoPki5igyrvrJExygnt2Ex-_oGmH60-wm2VU5 ...

  6. 【《Unity 2018 Shaders and Effects Cookbook》翻译提炼】(九)Physically - Based Rendering

    制作过程中最重要的方面时效率,实时着色很昂贵,而Lambertian或BlinnPhong等技术是计算成本和现实之间的折中. 拥有更   强大的GPU允许我们逐步写更强大的光照模型和渲染引擎,目的是模 ...

  7. 22.01.23 《Unity 2018 Shaders and Effects Cookbook》笔记Chapter7

    7.Fragment Shaders and Grab Passes vertex and fragment shader 对光照如何影响物体表面不感兴趣,不受物理限制,对非真实感的效果很好 使用#p ...

  8. 【《Unity 2018 Shaders and Effects Cookbook》翻译提炼】(三)法线贴图和透明材质

    1.法线贴图 3D模型的每个三角形都有一个面向方向,这是它指向的方向.它通常用放置在三角形中心的箭头表示,并且与表面正交.面对方向在光线反射到表面上的方式中起着重要作用.如果两个相邻的三角形朝着不同的 ...

  9. 【《Unity 2018 Shaders and Effects Cookbook》翻译提炼】(八)BlinnPhong模型和 Anisotropic 高光(可用于金属性,头发)

    这篇文章最好与前一篇连着看,自己可做比较. 1.BlinnPhong 模型 Blinn是计算和估计镜面反射的另一种更有效的方法.这是通过从 视图方向和光方向获得半矢量来完成饿.JimBlinn将它带入 ...

最新文章

  1. linux内核功能有,好消息!LINUX内核2.6.18终于支持实时功能了
  2. SAP 应用服务负载均衡的实现
  3. golang 可变参 不定参 函数 简介
  4. determination
  5. VTK:地标变换用法实战
  6. shell常见的文件属性检查
  7. 【OpenKruise v0.9.0】新增 Pod 重启、删除防护等重磅功能
  8. jenkins maven testng selenium自动化持续集成
  9. 【主席树】更为厉害(P3899)
  10. iOS modal view的关闭和显示问题
  11. 监控视图 oracle,Oracle“并行执行”之四——监控视图
  12. java循环标号_java 标号 break 自循环
  13. http协议 web开发的应用 笔记
  14. 5G怎样实现波束赋形?
  15. 买了基金之后要天天盯着吗?
  16. 走向.NET架构设计—第五章—业务层模式,原则,实践(后篇)
  17. AX 2012导入Demo数据
  18. win10多合一原版系统_如何制作Win10多合一系统安装盘
  19. Python+Cartopy绘制中国地图
  20. vulhub学习(1) ActiveMQ反序列化漏洞(CVE-2015-5254)复现

热门文章

  1. 解决ubuntu无法显示中文拼音
  2. 有关计算机英语作文素材,英语作文素材范文
  3. 电脑网络正常,浏览器无法打开怎么办?
  4. 版权变更有哪些流程?
  5. 服务器上Ubuntu系统安装
  6. 咸鱼Micropython— 标准库
  7. ClickHouse-尚硅谷(1. 入门-概述)学习笔记
  8. Qt获取wifi列表,连接wifi后获取IP地址
  9. Layui+ssm修改
  10. NFT Insider #49:YGG学员总量突破20000名,《南华早报》在The Sandbox中构建香港天星码头