本节书摘来自华章出版社《Unity着色器和屏幕特效开发秘笈》一 书中的第1章,第1.7节,作者:(美)Kenny Lammers,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.7 创建渐变纹理来控制漫反射着色

在你的着色器编写工具箱里还有一个强大的工具——使用渐变纹理(ramp texture)来控制漫反射光照的颜色。这允许你突出表面的颜色,来模拟更多的反射光照或者其他高级的灯光设置。你可以在很多卡通风格的游戏中看到这种技术,通常在你想要更加艺术的画面效果,并且不需要很多真实物理模拟的光照模型时可以使用渐变纹理。
该技术在《军团要塞2》中流行起来,它也是由Valve提出来用于渲染他们的游戏角色。他们发表了一篇非常有名的白皮书,强烈建议你阅读一下。
这篇论文的白皮书讲解了《军团要塞2》中使用的光照和渲染技术。

1.7.1 准备工作
首先你需要用图像编辑软件创建一个渐变纹理,在这里我们使用Photoshop来制作一张特殊图片,不过不管哪个图像编辑软件都可以用来制作渐变纹理。

1.7.2 如何操作
让我们通过如下代码开启我们的着色器:
简单修改光照函数,添加如下代码:

执行上述代码,可以得到下图展示的效果:

1.7.3 实现原理

这行代码返回的是一个名为float3的颜色集,相当于r、g、b三个属性,这些颜色是通过tex2D的CG函数生成的。tex2D函数有两个参数,第一个参数是我们使用的纹理属性,第二个参数包含的是映射纹理的UV坐标。
在这种情况下我们并不需要使用顶点的UV值,而仅仅需要使用一个漫反射浮点值来映射到渐变图上的某一个颜色值。最终根据灯光计算后的方向来映射整个渐变纹理到物体的表面。
我们得到经过Half Lambert计算之后的新纹理映射值,并将之转换成float2()类型从而创建纹理索引值。当hLambert值为0时,tex2D函数会去搜索(0,0)UV坐标处的像素,在我们的示例里它会呈现渐变纹理中对应的蜜桃色,当值为1时,则会返回(1,1)UV坐标处的像素值,也就是白色。
现在,渲染艺术家们应该拥有了一些自定义方法来控制灯光在物体表面的效果了。这也就是为什么这项技术会经常出现在需要更多直观展示效果的项目当中。

《Unity着色器和屏幕特效开发秘笈》—— 1.7 创建渐变纹理来控制漫反射着色...相关推荐

  1. 《Unity着色器和屏幕特效开发秘笈》—— 3.4 创建BlinnPhong高光类型

    本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈>一 书中的第3章,第3.4节,作者:(美)Kenny Lammers,更多章节内容可以访问云栖社区"华章计算机&quo ...

  2. 《Unity着色器和屏幕特效开发秘笈》—— 2.1 引言

    本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈>一 书中的第2章,第2.1节,作者:(美)Kenny Lammers,更多章节内容可以访问云栖社区"华章计算机&quo ...

  3. 《Unity着色器和屏幕特效开发秘笈(原书第2版)》一2.9 打包和混合纹理

    本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈(原书第2版)>一书中的第2章,第2.9节,作者 [英]艾伦朱科尼(Alan Zucconi) [美]肯尼斯拉默斯(Kenneth ...

  4. 《Unity着色器和屏幕特效开发秘笈》—— 第3章 利用镜面反射让游戏闪耀起来...

    本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈>一 书中的第3章,第3.1节,作者:(美)Kenny Lammers,更多章节内容可以访问云栖社区"华章计算机&quo ...

  5. 《Unity着色器和屏幕特效开发秘笈》—— 1.1 引言

    本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈>一 书中的第1章,第1.1节,作者:(美)Kenny Lammers,更多章节内容可以访问云栖社区"华章计算机&quo ...

  6. 《Unity着色器和屏幕特效开发秘笈》—— 2.5 法线贴图

    本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈>一 书中的第2章,第2.5节,作者:(美)Kenny Lammers,更多章节内容可以访问云栖社区"华章计算机&quo ...

  7. 《Unity着色器和屏幕特效开发秘笈(原书第2版)》——2.6 法线映射

    本节书摘来自华章计算机<Unity着色器和屏幕特效开发秘笈(原书第2版)>一书中的第2章,第2.6节,作者 [英]艾伦朱科尼(Alan Zucconi)[美]肯尼斯拉默斯(Kenneth ...

  8. 《Unity着色器和屏幕特效开发秘笈(原书第2版)》一2.6 法线映射

    本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈(原书第2版)>一书中的第2章,第2.6节,作者 [英]艾伦朱科尼(Alan Zucconi) [美]肯尼斯拉默斯(Kenneth ...

  9. unity着色器和屏幕特效开发秘笈_Oculus研发分享:开发移动VR内容时应避免的PC渲染技术...

    查看引用/信息源请点击:映维网 开发移动VR内容时应避免的PC渲染技术 (映维网 2019年11月25日)有不少开发者都是以与PC相同的方式来开发Quest游戏,但这可能会导致优化性能方面出现大量困难 ...

最新文章

  1. spring-data-mongodb必须了解的操作
  2. gitlab提交合并_notification - 如何把gitlab项目中的提交、PUSH、合并请求的通知发送到邮箱...
  3. Python 字符串前面加u,r,b的含义
  4. 高通---GPUCPU频率和工作模式的获取设置
  5. Kubernetes学习笔记(一)
  6. python生成多维数组方法总结(多维创建有问题的情况)
  7. Sublime Text 3 、WebStorm配置实时刷新
  8. 流量中转的服务器,你的服务器能承受多大流量
  9. TensorFlow 深度学习中文第二版(初稿)
  10. 企业者的福音之8266接入阿里智能,点亮一盏灯
  11. 深圳市云瑶信息科技有限公司
  12. 室内 Beacon定位室外 GPS 定位 大型场馆融合定位方案
  13. 数据库表锁死的解决方法
  14. 谈谈你对 Spring 的理解
  15. nodejs mysql knex_nodejs之knex模块从安装到使用
  16. PHP中 die() 和 exit() 的区别
  17. 键盘与电脑识别问题?
  18. char型变量声明java_java中变量的声明和变量的类型
  19. 今天搬到掘金,对饱醉豚想说的一段话
  20. English语法_形容词/副词3级-比较级_常用短语

热门文章

  1. jQuery has(),not()和filter()函数示例
  2. scala编程_Scala编程语言简介
  3. spring boot demo(spring jdbc访问数据)
  4. 开课吧课堂之如何创建多级类层次
  5. 新电脑磁盘可存储信息数百年
  6. xenserver 突破VID 2T限制
  7. LInux系统木马植入排查分析 及 应用漏洞修复配置(隐藏bannner版本等)
  8. linux下的nginx+tomcat配置
  9. emacs之occur mode笔记
  10. Enterprise Library:Unity的几个注意事项