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数 ...
随机推荐
- [leetcode]158. Read N Characters Given Read4 II - Call multiple times 用Read4读取N个字符2 - 调用多次
The API: int read4(char *buf) reads 4 characters at a time from a file. The return value is the actu ...
- 什么是Shell、Shell脚本
Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种 ...
- 在控制台远程连接mysql数据库时,出现ERROR 2049 (HY000)错误
问题的原因是,你本地的数据库版本过高,而远程的数据库版本低. 解决方法:在连接时加上 --skip-secure-auth 参数就可以了. mysql -h主机 -u用户名 -p密码 --skip- ...
- 配置Spring框架编写XML的提示
1. 步骤一:先复制, http://www.springframework.org/schema/beans/spring-beans.xsd 2. 步骤二:搜索XML Catalog,点击Add按 ...
- python使用input()来接受字符串时一直报错“xxx is not defined”
报错信息: “Please input your guess: gussTraceback (most recent call last): File "coinGuessGame.py& ...
- ubuntu and centos各种上网代理设置
1.Ubuntu 一. apt-get 代理设置 由于公司通过代理上网,firefox的代理设置很容易就搞定了,但是通过apt-get安装软件还是不行,于是,查阅了很多资料,最多的方法就是网上流传的三 ...
- 设计模式-生成者模式之c#代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- filter 死循环(tomcat 启动完成 ,自动执行filter.dofilter,导致tomcat 启动超时) , tomcat 启动和 servers 启动 不同
package com.diancai.interceptor; import java.io.IOException; import javax.servlet.Filter; import jav ...
- group by 和 distinct 的区别
SELECT fs.card_id, fs. NAME, fs.email, fs.phone_num, fs.weixin_num, fs.permission, fs.open_id FROM f ...
- 用pyqt5做一个能python程序能插入图片的ide
之前只是放到github上了,现在一想应该开源,大家想继续做好这个ide的都能从这里起步. #注意在.py文件相同目录下放一个1.png做测试图片 #本质就是用html来实现图片 #写在前面的话:这个 ...