zoukankan      html  css  js  c++  java
  • 【Unity Shaders】《Unity Shaders and Effects Cookbook》总结篇


    我的唠叨


    不知不觉,从发表第一篇关于《Unity Shaders and Effects Cookbook》已经快十个月了。一开始的初衷就是学习笔记,毕竟将来回过头去看的时候,再看英文难免有种急躁感。从一开始几乎只有我一个人在奋斗,到现在时不时有人学习留言或者发邮件鼓励我,能有人和我一起学习我已经很开心了。谢谢所有鼓励和支持我的人~


    我先说下我的博客里这个系列的特点~

    • 首先声明,这不是纯翻译,我的插图绝大部分都是在自己的Unity里面按步骤实践以后再截图放到博客里的。

    • 会对原文中的一些错误进行修正。

    • 会对原文中解释较少的部分增加自己的理解和扩展。

    • 原文里一些我觉得比较啰嗦的话我也会不再翻译出来赘述的。。。但我认为,就算没有那些一般人都是可以看懂的~

    那么下面就是对这本书的看法啦~

    优点:

    • 算是填补了国内外(对,没错,包括国外)关于Unity Shaders方面的空白。在这之前大多是依靠Unity文档、论坛和各种网站的资源学习的,而现在有了一个比较集中的书籍。在国外的网站上(例如packtpub和Amazon),这本书的评价是4星左右,是可以接受的分数了。

    • 包含的内容面还是比较广的。由基础的漫反射光照、镜面反射、Cubemap等等,到Cloth、Skin(Skin这个必须要吐槽。。。真的不像皮肤啊啊啊啊!),再到移动平台上的优化,如何使用Cg,以及最后关于画面特效的几个高级话题。对于初学者来说,这些内容还是比较丰富和有趣的。

    • 写Shader一直是一个很难而且不知道如何入手的事情,这本书给了一个简单而又不失有效的途径。


    缺点:

    • 这本书有很多称不上经典的原因(当然已经很感谢作者了)。我感触最深的就是作者关于很多表层一下的知识介绍太少,有种浅尝辄止的感觉。比如Shader的pipeline等。而这些其实是非常重要的,知其然而不知其所以然是阻止很多程序员成长的最大元凶。如果要完全理解的话,还是要辅助看很多基础数据或文章,比如Nvidia关于Cg的教程等等。

    • 解释的部分有时太过简略。虽然有时候作者说的很简单,但其实对于初学者来说,“为什么要这样”的问题时常浮现在我的脑海里。。。当然其实很多时候写Shader是一个经验活,那些公式和系数就是长期时间下来的结果,没有太多的为什么。

    • 一些错误。比如作者关于变量类型的使用比较混乱,尤其是fixed的使用。我之后也要重新复习看一下。。。

    • 虽然叫cookbook,但是很多是不可以直接拿来用的。所以,这本书整体来说是一个入门书籍,让你了解一些Unity Shader的常见用处和语法。


    内容总结



    好啦,当做复习以及索引方便,下面是本书各章节内容的介绍和总结。


    第一章 漫反射着色(Diffuse Shading)


    Diffuse,即漫反射,可以想象成太阳光照射到某一个粗糙平面上时,该平面向四面八方都会反射光线,这些光线中的某些光线进入我们的眼睛,从而使我们看到了这个平面。一个基本的漫反射光照模型,需要包括以下几个部分:一个反射颜色(emissive color,可以理解成平面本身的颜色), 一个环境光颜色(ambient color,可以理解成光源的颜色), 以及计算来自所有光源的光线和。

    1.1 创建一个基本的Surface Shader



    如何新建一个Shader并使用Material。

    1.2 向Surface Shader添加Properties


    第一次解释了Properties块,如何添加新的property,不同类型property的声明方式。

    1.3 在Surface Shader中使用Properties


    第一次解释了怎样创建CGPROGRAM和Properties块中各变量的链接。

    1.4 创建一个自定义的漫反射光照模型


    如何在Surface Shader中使用非默认的光照函数,光照函数的几种类别,基本的漫反射光照模型(兰伯特光照模型)。

    1.5 创建一个半兰伯特光照模型


    半兰伯特听起来很高端,其实就是把物体背光面的亮度提高了,使光照范围从(0.0, 1.0)映射到了(0.5, 1.0)。

    1.6 创建一个渐变纹理来控制漫反射着色


    使用一维渐变纹理控制光照(即光照颜色就是采样后纹理上的某个像素)是非常常见的手法,在很多类型的Shader,如卡通风格的Shader中都非常常见。这种方法具有非常好的可变性。

    1.7 使用二维渐变纹理来伪造一个双向反射分布函数


    这节是上面两节内容的结合和扩展。双向,即两个方向,一个指入射光线的方向,一个指观察点的方向。之前的光照模型都是只使用了第一个方向,即入射光线的方向。给出了max、半兰伯特对两个方向进行修正的结果和异同。


    待续。。。

  • 相关阅读:
    深度学习 框架比较
    深度学习 Fine-tune 技巧总结
    基于Spark环境对比Python和Scala语言利弊
    【Python系列】HDF5文件介绍
    【Git】CentOS7 通过源码安装Git
    【Git】Git工具常用命令
    登录自动跳转
    offset,scroll,client系列
    谷歌浏览器input中的text 和 button 水平对齐的问题
    git 的基本使用
  • 原文地址:https://www.cnblogs.com/xiaowangba/p/6314669.html
Copyright © 2011-2022 走看看