Unity Shader 阶段性反思与总结(一)

最近在写Shader的时候,总是感觉力不从心,感觉自己已经看了蛮久的书了,也有一定的积累了,但是一想写什么效果,完完全全就是脑袋一团空白。典型的例子就是,我想写边缘光效果的时候,完完全全就是不知道怎么下手这样子。

然后,感觉自己在看书,也没什么提升,每天好像就从书上抄代码一样。。。。。让我很有挫败感。

现在记录一下我在学Shader的时候,读《unity shader 入门精要》这本书的时候感觉困惑、不能理解的几个点。希望有一天我能回来进行回答把。

纹理方面

  1. 关于法线纹理部分,法线我知道是垂直于顶点的一条直线,但是。。。为什么改变法线就能让物体变得凹凸不平呢,我目前的理解是,一切光照计算都是根据法线(计算光线的辐照度)来计算的,所以法线改变会影响物体的表面的颜色?
  2. 关于渐变纹理部分,渐变纹理取样的时候,为什么要用半兰伯特的式子来对渐变纹理进行取样?
  3. 使用立方体纹理完成反射功能那一段,reflect(-o.worldViewDir,o.worldNormal)到底代表的是什么意思,他是求谁的反射方向?
  4. 使用GrapPass完成折射功能这一段,refract函数到底代表了什么,有什么用?同时,使用GrapPass获得纹素(Texture_Texel)到底有什么用? 还有, 为什么折射效果的偏移计算要乘于单位的法线? 还有,计算完偏移坐标之后得到的GrapPass纹理的uv坐标为什么还要除于w分量?(所谓的透视除法到底是什么鬼?)

颜色混合计算方面

  1. 颜色的混合,到底什么时候用加法,什么时候用乘法,什么时候用Lerp函数? 为什么有时候就一定要用加法来对两种颜色进行混合,为什么有时候又要用lerp函数对两种颜色进行过渡?典型的例子就是在做边缘检测这一章的时候,那个withEdgeColor变量的计算,它用代码片段如下:

     fixed4 withEdgeColor = lerp(_EdgeColor,tex2D(_MainTex,i.uv[4]),edge);

  我最奇怪的地方就是,为什么是从edgeColor到纹理颜色的过渡啊。。

  1. 关于Blend混合颜色指令,这个指令是将当前片元着色器的颜色和当前颜色缓冲区的颜色进行混合,那么,问题来了,我怎么知道当前颜色缓冲区的颜色是什么啊?

屏幕后处理特效方面

  1. 卷积是什么啊?为什么用卷积对像素进行什么权重计算,它就能变得模糊啊或者得到边界值啦之类的,这也太魔幻了把?
  2. 这一章,我所有的问题,都在于不知道卷积,卷积核到底是什么玩意而展开的。。。。。。边缘检测,高斯模糊,boom效果,运动模糊,都跟卷积操作有关,模糊这个效果相当重要啊!!我已经看到N多效果都是基于模糊效果的。。。但是高斯模糊我是一个字都看不懂啊啊啊啊啊啊啊!!!

未完待续~~~~

Unity Shader 阶段性反思与总结(一)的更多相关文章

  1. 【我的书】Unity Shader的书 — 文件夹(2015.12.21更新)

    写在前面 感谢全部点进来看的朋友.没错.我眼下打算写一本关于Unity Shader的书. 出书的目的有以下几个: 总结我接触Unity Shader以来的历程,给其它人一个借鉴.我非常明确学Shad ...

  2. 【我的书】Unity Shader的书 — 目录(2016.5.19最后一次更新)

    写在前面 感谢所有点进来看的朋友.没错,我目前打算写一本关于Unity Shader的书. 出书的目的有下面几个: 总结我接触Unity Shader以来的历程,给其他人一个借鉴.我非常明白学Shad ...

  3. Unity Shader入门

    Unity Shader入门 http://www.cnblogs.com/lixiang-share/p/5025662.html http://www.manew.com/blog-30559-1 ...

  4. Unity Shader IDE — Sublime Text2

    使用MonoDevelop写了一段时间的Shader代码,发现效率太低了,所以换用Sublime Text. 安装Sublime Text 1.下载 sublime Text2 官网:http://w ...

  5. Unity Shader 知识点总结(一)

    在学习了一段时间的Unity Shader后,打算写一些知识总结,便于今后的查找.如有错误,希望大家指出更改. 本文参照的unity入门精要一书,做一个知识归纳,如有兴趣可以看看其开源的部分,是一本比 ...

  6. Unity Shader 知识点总结(二)

    紧接着上一篇文章的shader入门知识的总结,本文主要总结shader中的纹理贴图.透明度混合.顶点动画.后期特效处理等操作.如果有什么地方有错,请指出更正,谢谢.本文的代码主要来自开源书:unity ...

  7. 【原】Unity Shader VS UDK Material Editor

    UDK 的材质编辑器十分好用,毕竟是所见即所得的.虽然unity也有类似第三方插件,但易用性还是差很多,下面主要是,把一些常见表达式概念对应起来. 1. UDK CameraVector (相机位向量 ...

  8. Unity Shader入门教程(一)

    参考文献:http://www.360doc.com/content/13/0923/15/12282510_316492286.shtml Unity Shader是着色器,将纹理.网格信息输入,得 ...

  9. Unity Shader入门精要读书笔记(一)序章

    本系列的博文是笔者读<Unity Shader入门精要>的读书笔记,这本书的章节框架是: 第一章:着手准备. 第二章:GPU流水线. 第三章:Shader基本语法. 第四章:Shader数 ...

随机推荐

  1. 【校招面试 之 C/C++】第30题 C++ 11新特性(一)之auto关键字

    1.自动类型推断 auto自动类型推断,用于从初始化表达式中推断出变量的数据类型.通过auto的自动类型推断,可以大大简化我们的编程工作.下面是一些使用auto的例子. #include <ve ...

  2. 乱序字符串anagrams

    [抄题]: 给出一个字符串数组S,找到其中所有的乱序字符串(Anagram).如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中. 对于字符串数组 ["lin ...

  3. 接触mybatis使用

    1.mybatis mybatis是一个自定义sql.存储过程和高级映射的持久层框架,是Apache下的顶级项目. mybatis可以让程序员将主要精力放在sql上,通过mybatis提供的映射方式. ...

  4. MVC扩展HtmlHelper,加入RadioButtonList、CheckBoxList、DropdownList

    代码: using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions ...

  5. Tomcat端口被占用解决方法

    端口被绑定,在命令提示符运行wmic process where "Caption='javaw.exe' and CommandLine like '%%bootstrap.jar%%'& ...

  6. datatables分页

    一万条以下 var dataTables = $('#dataTables').DataTable(); 一万条以上 var dataTables = $('#dataTables').DataTab ...

  7. failed creating java jvm.dll

    启动tomcat服务时出现错误failed creating java jvm.dll的解决办法 把jdk\bin目录下的msvcr71.dll 或msvcr100.dll 复制到tomcat安装目录 ...

  8. 在EF中使用MySQL的方法及常见问题

    有时需要在网上租用空间或数据库,Mysql成本低一些,所以想将sql server转成mysql…… 注意:在安装Mysql时要选择文字集为utf8,否则将不能使用中文(当前也可以在创建数据库时使用u ...

  9. KbmMW 4.30.00 发布

    今天早上,KbmMW发布了4.30.00 版,这个版本开始支持XE4 的WIN/WIN64/OSX. 暂时不支持ios开发,同时加强了通过JSON 的对象序列化.还有就是解决了我提交的几个有关 汉字处 ...

  10. jquery ajax请求方式与提示用户正在处理请稍等

    为了提高用户体验度,我们通常会给出 “正在处理,请稍等!”诸如此类的提示.我们可通过设置$.ajax()下的参数beforeSend()来实现 初次使用$.ajax() ,我没有去区分过ajax的异步 ...