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. python 的时间与日期

    显示当前日期: import time print time.strftime('%Y-%m-%d %A %X %Z',time.localtime(time.time())) 或者 你也可以用: p ...

  2. 解决Lightmap在PC上与ios和Android上表现不同的问题

    Lightmap在PC上与android和ios的区别以及解决方法 1.  问题描述 相信很多人碰到过Lightmap的一些问题: 烘培好Lightmap之后,在PC上看起来相当给力,而打包成ios或 ...

  3. QT隐式数据共享

    QT中许多C++类使用了隐式数据共享,最小化资源拷贝.当作为参数传递时,实际只传递了指针,这是底层完成的,程序员无需担心,即使是在多线程中,从Qt4开始: 记住,尽量使用const迭代器,vector ...

  4. mongo远程登录

    1. 进入数据库: use admin db.addUser("foo","foo"); ps:高版本用db.createUser创建. 2. 改配置 如/et ...

  5. eclipse奇怪问题之端口占用记录

    启动程序报端口占用(实际并没有启动占用端口的程序) 打开cmd查找占用端口的进程能查到,但又无法杀掉(命令和任务管理器都杀不掉),用了PCHunter(xuetr)结束进程后还会刷新还会重新出现 重启 ...

  6. 数字三角形 · Triangle

    从上到下用DP. [抄题]: 给定一个数字三角形,找到从顶部到底部的最小路径和.每一步可以移动到下面一行的相邻数字上. 比如,给出下列数字三角形: [ [2], [3,4], [6,5,7], [4, ...

  7. CentOS7下部署NTP Server

    系统环境:CentOS Linux release 7.4.1708 (Core) 3.10.0-693.el7.x86_64 软件版本:chrony-3.1-2.el7.centos.x86_64 ...

  8. PythonQt进阶

    本文介绍PythonQt和qt之间是如何进行交互操作的 例子是以Qt的TreeView为实例进行介绍 在该例子中,TreeItem不是从Qt中进行的继承,这样的类如果要和Python进行交互,首先需要 ...

  9. pthread_exit pthread_join

    int pthread_join(pthread_t thread, void **retval); int pthread_detach(pthread_t thread); void pthrea ...

  10. 神奇的照片修复术,这才是 PS 的正确打开方式!

    蒲公英种子从远处飘回 聚成伞的模样 太阳从西边升起 落向东方 运动员回到起跑线上 轰鸣的火车退回家乡 雪花纷飞 飘向天际 我沉入梦乡 你还在我身旁 ——公益广告 大概只有时光倒流,我们才能回到那些每天 ...