Unity Shader 阶段性反思与总结(一)
Unity Shader 阶段性反思与总结(一)
最近在写Shader的时候,总是感觉力不从心,感觉自己已经看了蛮久的书了,也有一定的积累了,但是一想写什么效果,完完全全就是脑袋一团空白。典型的例子就是,我想写边缘光效果的时候,完完全全就是不知道怎么下手这样子。
然后,感觉自己在看书,也没什么提升,每天好像就从书上抄代码一样。。。。。让我很有挫败感。
现在记录一下我在学Shader的时候,读《unity shader 入门精要》这本书的时候感觉困惑、不能理解的几个点。希望有一天我能回来进行回答把。
纹理方面
- 关于法线纹理部分,法线我知道是垂直于顶点的一条直线,但是。。。为什么改变法线就能让物体变得凹凸不平呢,我目前的理解是,一切光照计算都是根据法线(计算光线的辐照度)来计算的,所以法线改变会影响物体的表面的颜色?
- 关于渐变纹理部分,渐变纹理取样的时候,为什么要用半兰伯特的式子来对渐变纹理进行取样?
- 使用立方体纹理完成反射功能那一段,reflect(-o.worldViewDir,o.worldNormal)到底代表的是什么意思,他是求谁的反射方向?
- 使用GrapPass完成折射功能这一段,refract函数到底代表了什么,有什么用?同时,使用GrapPass获得纹素(Texture_Texel)到底有什么用? 还有, 为什么折射效果的偏移计算要乘于单位的法线? 还有,计算完偏移坐标之后得到的GrapPass纹理的uv坐标为什么还要除于w分量?(所谓的透视除法到底是什么鬼?)
颜色混合计算方面
颜色的混合,到底什么时候用加法,什么时候用乘法,什么时候用Lerp函数? 为什么有时候就一定要用加法来对两种颜色进行混合,为什么有时候又要用lerp函数对两种颜色进行过渡?典型的例子就是在做边缘检测这一章的时候,那个withEdgeColor变量的计算,它用代码片段如下:
fixed4 withEdgeColor = lerp(_EdgeColor,tex2D(_MainTex,i.uv[4]),edge);
我最奇怪的地方就是,为什么是从edgeColor到纹理颜色的过渡啊。。
- 关于Blend混合颜色指令,这个指令是将当前片元着色器的颜色和当前颜色缓冲区的颜色进行混合,那么,问题来了,我怎么知道当前颜色缓冲区的颜色是什么啊?
屏幕后处理特效方面
- 卷积是什么啊?为什么用卷积对像素进行什么权重计算,它就能变得模糊啊或者得到边界值啦之类的,这也太魔幻了把?
- 这一章,我所有的问题,都在于不知道卷积,卷积核到底是什么玩意而展开的。。。。。。边缘检测,高斯模糊,boom效果,运动模糊,都跟卷积操作有关,模糊这个效果相当重要啊!!我已经看到N多效果都是基于模糊效果的。。。但是高斯模糊我是一个字都看不懂啊啊啊啊啊啊啊!!!
未完待续~~~~
Unity Shader 阶段性反思与总结(一)的更多相关文章
- 【我的书】Unity Shader的书 — 文件夹(2015.12.21更新)
写在前面 感谢全部点进来看的朋友.没错.我眼下打算写一本关于Unity Shader的书. 出书的目的有以下几个: 总结我接触Unity Shader以来的历程,给其它人一个借鉴.我非常明确学Shad ...
- 【我的书】Unity Shader的书 — 目录(2016.5.19最后一次更新)
写在前面 感谢所有点进来看的朋友.没错,我目前打算写一本关于Unity Shader的书. 出书的目的有下面几个: 总结我接触Unity Shader以来的历程,给其他人一个借鉴.我非常明白学Shad ...
- Unity Shader入门
Unity Shader入门 http://www.cnblogs.com/lixiang-share/p/5025662.html http://www.manew.com/blog-30559-1 ...
- Unity Shader IDE — Sublime Text2
使用MonoDevelop写了一段时间的Shader代码,发现效率太低了,所以换用Sublime Text. 安装Sublime Text 1.下载 sublime Text2 官网:http://w ...
- Unity Shader 知识点总结(一)
在学习了一段时间的Unity Shader后,打算写一些知识总结,便于今后的查找.如有错误,希望大家指出更改. 本文参照的unity入门精要一书,做一个知识归纳,如有兴趣可以看看其开源的部分,是一本比 ...
- Unity Shader 知识点总结(二)
紧接着上一篇文章的shader入门知识的总结,本文主要总结shader中的纹理贴图.透明度混合.顶点动画.后期特效处理等操作.如果有什么地方有错,请指出更正,谢谢.本文的代码主要来自开源书:unity ...
- 【原】Unity Shader VS UDK Material Editor
UDK 的材质编辑器十分好用,毕竟是所见即所得的.虽然unity也有类似第三方插件,但易用性还是差很多,下面主要是,把一些常见表达式概念对应起来. 1. UDK CameraVector (相机位向量 ...
- Unity Shader入门教程(一)
参考文献:http://www.360doc.com/content/13/0923/15/12282510_316492286.shtml Unity Shader是着色器,将纹理.网格信息输入,得 ...
- Unity Shader入门精要读书笔记(一)序章
本系列的博文是笔者读<Unity Shader入门精要>的读书笔记,这本书的章节框架是: 第一章:着手准备. 第二章:GPU流水线. 第三章:Shader基本语法. 第四章:Shader数 ...
随机推荐
- tf.cast()
一.函数 tf.cast() cast( x, dtype, name=None ) 将x的数据格式转化成dtype.例如,原来x的数据格式是bool, 那么将其转化成float以后,就能够将其转化成 ...
- clamp 函数
返回范围内的一个数值.可以使用 clamp 函数将不断增加.减小或随机变化的数值限制在一系列的值中. float clamp(float minnumber, float maxnumber, flo ...
- Ubuntu安装libevent
背景: 版本: libevent 2.1.6beta linux下: 按照github官方做法: $ sudo apt-get install openssl $ mkdir build && ...
- mysql基本的增删改查和条件语句
增 insert into 表名(列名,列名......) values("test1",23),("test2",23),("test3" ...
- 在原型设计上,UI和UX设计师有哪三个区别?
原型设计在日常的软件开发过程中是必不可少的,不管是UI还是UX设计师,很多工作都会涉及到原型设计.那么这两类设计师在设计原型的时候表现出了哪些的不同点呢?今天就让我们来讨论一下,先说说我发现的3个不同 ...
- c++11 stl 学习之 pair
pair以模板的方式存储两个数据 namespace std {template <typename T1, typename T2>struct pair {// memberT1 fi ...
- 3、基本的Get和Post访问(含代理请求)
Get方式访问 HttpClient hc = new DefaultHttpClient(); HttpUriRequest request = new HttpGet("http://w ...
- ftp sftp vsftp
ftp sftp (secure) 是文件传输 协议 vsftp(very secure) 是 ftp 服务端 sftp 是 ssh 的一部分
- NET(C#)连接各类数据库-集锦
1.C#连接连接Access程序代码:------------------------------------------------------------------------------- u ...
- 使用ntpdate校正linux系统的时间
当Linux服务器的时间不对的时候,可以使用ntpdate工具来校正时间. 安装:yum install ntpdate ntpdate简单用法: # ntpdate ip # ntpdate 210 ...