![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
unity shader
unity shader学习记录
Magic_Conch_Shell
菠萝屋会有的~
展开
-
unity屏幕特效综述1 高斯模糊
1.高斯模糊高斯模糊是后面很多屏幕特效的基础部分,其原理也很容易。在学习之前,必须要学会卷积的操作,如图所示,卷积操作指的是使用一个卷积核(左图的3x3矩阵)对待处理图像的每一个像素进行卷积操作,具体的做法是把3x3矩阵的中心点放到待卷积的像素上,然后对卷积核覆盖到的像素的值乘以卷积核的值,然后求和,就是该像素的最终结果。例如,我们使用卷积核为3x3的矩阵,矩阵每一个值都是1...原创 2019-09-15 23:13:06 · 520 阅读 · 1 评论 -
unity billboard效果
这种效果是让一个平面能跟着视角进行旋转,从而使得该平面一直朝向着摄像机,形成一种立体的感觉.billboard主要有两种,第一种是固定向上方向的billboard,比如说草地,一个草地贴图向上的方向一定是(0,1,0),unity自带的草地就是用的这种方法的,这种固定向上方向的billboard最后形成的结果就是图片绕着y轴进行旋转,毕竟俯视的时候如果看到草地法线朝着视角肯定会露馅的。第二种b...原创 2019-09-19 23:10:23 · 4411 阅读 · 1 评论 -
unity 卡通风格渲染
unity 卡通风格的渲染主要分成两个步骤,第一个步骤是给模型描边,第二个步骤是实现卡通着色的高光效果。这两个步骤同时也是对应的两个不同的pass。第一个步骤首先要剔除正面,然后对背面的轮廓线进行描边,为什么要对背面进行描边呢。当然是因为对正面进行描边的效果很鬼畜啦,删除代码中的Cull Front,会看到下图的效果,所以这时候应该能理解为什么要对背面进行描边了,描边的方法是把顶点往法线的方向扩...原创 2019-09-19 22:20:27 · 5699 阅读 · 0 评论 -
unity 水波效果
这个水波效果并非真实的让顶点去运动而产生的的效果,而是通过法线扰动而产生的模拟效果,产生效果主要分为三个步骤,第一个步骤是计算折射,第二个步骤是计算反射,最后一个步骤是混合反射和折射的值。首先是计算折射值,这个也是这三个中最复杂的一个部分,首先折射所采样的纹理是通过grabpass来实现的,grabpass可以在渲染完毕所有的不透明物体之后把渲染完毕的图形存储到一个纹理中,然后在下一个pass...原创 2019-09-19 21:37:36 · 1533 阅读 · 0 评论 -
unity 消融效果
如上图所示,本shader的功能就是让箱子一点一点的消融,然后逐渐消失。这个shader功能主要分为两个部分,第一个部分是消失,第二个部分是边缘着色,第三个部分是自定义阴影投射的Pass。消失的实现是比较简单的,只需要一行代码即可,clip(burn.r - _BurnAmount);直接裁减掉不满足要求的片元,burn是一个噪声图,这样可以形成随机消失的效果。边缘着色部分的代码还是有一定...原创 2019-09-19 20:36:06 · 1000 阅读 · 0 评论 -
unity屏幕特效综述5 全局雾效
雾的计算原理其实很简单float3 finalColor = f * fogColor + (1-f)originColor也就是按照某种比例把雾的纹理和原始的纹理相融合,其中比较关键的点就是f的选取f的选取有多种方式,比如说f=dmax-d/dmax-dmin 这种的就是线性的雾,直观的感觉就是高度越接近dmin,雾的浓度越大,越接近dmax,雾的浓度就越小,此外,还有指数形式的计算方法,...原创 2019-09-19 19:23:10 · 1533 阅读 · 0 评论 -
unity屏幕特效综述4 边缘检测
这个屏幕特效我挺喜欢的,可以用来描边,也可以用来提取边缘,获得很多很棒的效果。什么样的点可能是边缘部分所在的点呢,如果该点附近的法线值相差的很多,那么这个点就可以被认为是一条边,具体的值可以用参数来控制。法线的差值我们通过卷积来获取,使用2x2的矩阵(-1,0,0,1)检测x方向以及2x2矩阵(0,-1,1,0)检测y方向,这个卷积核叫做Roberts算子。这个屏幕特效的脚本部分没什么好说的,...原创 2019-09-18 21:58:31 · 359 阅读 · 0 评论 -
unity屏幕特效综述3 运动模糊
1.原理这里运动模糊特效值得是摄像机在运动的时候,场景会产生模糊的效应,而摄像机不动物体运动这种情况则不会产生。原理很容易,我们有很多方法实现,比如说直接获取相邻帧的图像,然后和这一帧图像进行混合,在这里我们采取另外一种方式,我们获取每个像素的运动速度,然后根据速度来偏移uv来获得多个采样,再把多个采样的结果进行混合即可。那么问题来了,要怎么才能获得速度呢,想要获取速度,我们可以通过相邻两帧...原创 2019-09-18 20:40:45 · 561 阅读 · 0 评论 -
unity 深度纹理和法线纹理
原理在实现某些屏幕后处理的时候,仅仅只有图像的rgb信息是很难实现的,同简单的图像处理不同的是,我们能在shader中获得图像每个像素的深度信息和法线信息。想要理解深度纹理的原理就必须要对渲染流水线有个比较深入的了解,深度纹理和法线纹理通过unity底层使用的一个单独的pass来把整个场景再次渲染一遍,保存在_CameraDepthTexture里面,其中RG通道存储法线信息,BA通道存储深度...原创 2019-09-18 18:58:24 · 764 阅读 · 0 评论 -
unity shader 入门精要阅读笔记-----渲染流水线
1渲染流水线这一部分的重点就是渲染流水线,理解渲染流水线对于后面的学习来说至关重要,这也是图形学的一个重要的基础知识环节。我们探讨空间中的模型是怎样一步一步转换到我们的屏幕坐标,然后显示在我们的面前的。我们把步骤分成四个步骤,顶点处理阶段–光栅化阶段–片元处理阶段–输出合并阶段1.1顶点处理阶段这一阶段的任务就是把我们的顶点坐标从模型空间转换到裁剪空间。1.1.1 矩阵变换虽然大学...原创 2019-09-17 16:25:20 · 241 阅读 · 0 评论 -
unity屏幕特效综述2 bloom
bloom效果就是把图片的亮的部分往外面扩散,下图就分别是原图和使用了bloom效果的图片。其实现原理其实也就分成了两个部分,第一个部分是如何找到亮的部分,第二个是如何扩散。首先是如何提取练了高度部分,对于颜色的亮度我们有一个公式0.2125 * color.r + 0.7154 * color.g + 0.0721 * color.b;这个公式的返回值就是该颜色的亮度,我...原创 2019-09-16 10:38:08 · 513 阅读 · 0 评论 -
unity屏幕特效综述6 景深效果
从这一部分开始,我的工作从学习别人的代码要逐渐转到自己敲代码了,中间跨越还是挺大的,景深效果的原理看似简单,也写了快一天时间了。下面我简单说明两种景深效果的写法,一种是我自己探索着写的,另一种是参考别人的博客写的(https://blog.csdn.net/puppet_master/article/details/52819874),不得不承认,别人的方法还是要成熟一点。景深效果给我的直观理...原创 2019-09-22 21:48:38 · 835 阅读 · 0 评论