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数 ...
随机推荐
- C/C++ 宏
0. #define MALLOC(n, type) \ ( (type *) malloc((n)* sizeof(type))) 1. 宏可以像函数一样被定义,例如: #define min ...
- phpStudy1——PHP文件获取html提交的参数
示例代码: submit.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
- 【校招面试 之 剑指offer】第11题 旋转数组中的最小数字
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如: 数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转, ...
- 理解数据结构Priority Queue
我们知道Queue是遵循先进先出(First-In-First-Out)模式的,但有些时候需要在Queue中基于优先级处理对象.举个例子,比方说我们有一个每日交易时段生成股票报告的应用程序,需要处理大 ...
- php的高性能日志系统 seaslog 的安装与使用
一.什么是日志系统 一般用于记录系统运行时的信息,一般分为三类:系统日志,应用程序日志,安全日志.日志功能不能影响用户的正常使用. 二.为什么需要日志功能 1.了解系统运行情况 2. ...
- 2018年UI设计趋势概览
互联网产品的用户界面设计趋势是根据用户的不同需求而不断变化的.在仔细分析了过去几年用户界面设计的趋势和创新之后,我们可以发现其背后的一些规律,2018年UI界面设计的趋势如下. 渐变色 在过去的几年 ...
- [VBScript] 自动删除2小时以前生成的文件
保存为deleteTempFiles.vbs,双击即可运行 dim folder, file, mFSO, subfolder Set mFSO = CreateObject("Script ...
- [BAT]批处理自动修改区域和语言选项
open a cmd window and type reg query "HKCU\Control Panel\International" which will show yo ...
- [Jmeter]通过批处理调用java,java从CSV动态读取登录的用户名和密码,并将其作为参数组合成字符串,写入外部.bat文件,然后通过Java执行这个外部批处理文件
问题1:怎样通过批处理调用java代码? 问题2:怎样通过java从CSV文件获取到用户名和密码存入变量? 问题3:怎样将获取到的用户名和密码组合成字符串,写入外部批处理文件? 问题4:怎样在批处理文 ...
- Cordova学习
Cordova学习 ui线程里处理耗时逻辑 runOnUiThread(new Runnable() { public void run() { //处理 } });