Unity Shader!!!
文章平均质量分 93
Unity shader的学习笔记,记录shader之路上的点点滴滴
puppet_master
coding can not change the world, but I will create my own world!
展开
-
Unity Shader-Decal贴花(SelfDecal,Alpha Blend,Mesh Decal,Projector,Deferred Decal)
本篇blog主要讨论了一下目前常见的一些贴花的实现方式,并全部在Unity中给出了基本的实现,包括自身二套uv贴花(Self Decal),叠片贴花(Alpha Blend面片贴花),内置投影器贴花(Projector),碰撞网格构造贴花(Mesh Decal),延迟贴花的多种实现方式(Depth Decal,Depth Normal Decal,Deferred Decal,同时影响多通道的贴花)等。原创 2019-01-06 19:19:45 · 25273 阅读 · 17 评论 -
Unity Shader-边缘检测效果(基于颜色,基于深度法线,边缘流光效果,转场效果)
边缘检测,在图像处理,计算机视觉中都是很重要的一个概念。在图像处理领域,由于输入只有一张图片,所以一般是将图片转成灰度,然后判断图片像素间的梯度来判断图像中的边界的;而在3D渲染领域,除了场景渲染结果图片外,我们还可以得到场景的深度以及法线等信息,让我们可以得到更加精确的边缘检测结果。边缘检测在渲染中虽然可能没有图像处理领域那样出名,但是也是可以用来实现一些特殊渲染风格,渲染效果,以及后处理AA等功能。原创 2018-11-17 13:21:53 · 12739 阅读 · 8 评论 -
Unity Shader-Matcap(材质捕获)
Matcap,全称为Material Capture,翻译过来就是材质捕获。简单来说就是预先生成的一种存储了光照和反射等信息的贴图,运行时使用法线方向进行采样。Matcap的好处就是可以用很低的消耗来实现很多特殊风格的效果,但是Matcap也有一些缺陷,在于Matcap仅对于固定相机视角的情况较好,这也是Matcap的原理决定的。Matcap主要是在Zbrush,Mudbox这些软件里面使用的,ZBrush里面雕模的时候有时候虽然没有贴图,但是效果看起来也挺好的,实际上就是Matcap的作用,而且这些美原创 2018-11-05 23:45:02 · 7199 阅读 · 9 评论 -
Unity Shader-Ambient Occlusion环境光遮蔽(AO贴图,GPU AO贴图烘焙,SSAO,HBAO)
环境光遮蔽主要用来控制物体和物体相交,夹角,褶皱等位置遮挡漫反射光线的效果,提高暗部阴影效果达到一种近似自阴影的效果,提升画面的层次感,增加细节。本文主要实现几种主流的环境光遮蔽效果,AO贴图(使用预烘焙的贴图,实现离线的基于GPU的烘焙AO贴图的工具),SSAO(屏幕空间环境光遮蔽),HBAO(水平基准环境光遮蔽)原创 2018-10-30 00:44:45 · 41087 阅读 · 5 评论 -
UnityShader-BilateralFilter(双边滤波,磨皮滤镜)
双边滤波(Bilateral Filter),可能没有高斯滤波那样著名,但是如果说磨皮滤镜,那肯定是无人不知无人不晓了,用双边滤波就可以实现很好的皮肤滤镜效果,不管脸上有多少麻子,用完双边滤波,瞬间变身白富美。原创 2018-10-17 00:46:43 · 8294 阅读 · 4 评论 -
Unity Shader-反射效果(CubeMap,Reflection Probe,Planar Reflection,Screen Space Reflection)
简介反射效果,是一个渲染中很重要的一个效果。在表现光滑表面(金属,光滑地面),水面(湖面,地面积水)等材质的时候,加上反射,都可以画面效果有很大的提升。来看几张图:先来张最近比较火爆的国产大作《逆水寒》的镜湖,我木有钱钱进副本,只好从网上找了个截图,感觉很漂亮哈。《罗马之子》主角的金属盔甲反射&远处水面倒影反射。《耻辱-外魔之死》地面积水的反射,只反射了静态场景...原创 2018-09-11 23:42:43 · 54798 阅读 · 33 评论 -
图形学相关数学(反射,折射公式)
反射公式反射是经常用到的一个公式,之前在Phong光照的时候推导过一次,这次再整理一下。反射过程如图所示:首先需要保证光方向向量AB,法向量N均为单位向量,反射向量AC,光入射方向AD = -ABθ为入射角,由反射公式我们知道,AC与AB沿y轴对称,AD与AC沿x轴对称EB = N * |AB|cosθ = N * dot(N,AB)DC = 2 * EB = -2 * N...原创 2018-07-23 23:59:23 · 12577 阅读 · 1 评论 -
Unity Shader-深度相关知识总结与效果实现(LinearDepth,Reverse Z,世界坐标重建,软粒子,高度雾,运动模糊,扫描线效果)
前言前言废话依旧比较多,感觉我是个写游戏体验评测的,233。最近想起了《恶灵附身》这款游戏的几个效果:《恶灵附身》整款游戏都是在一个“疯子”撸总的脑洞世界里面,游戏内容相当恐怖(吓得我当年一边尖叫一边玩,不光把我吓够呛,把我室友也吓坏了),有“贞子”,“保险箱怪”等等至今让我久久不能忘怀的Boss,不过整个游戏既有恐怖的地方,又有刺激的战斗,非常符合三上真司一贯的作风(我是三上...原创 2018-06-18 20:08:58 · 28724 阅读 · 22 评论 -
SoftRenderer&RenderPipeline(从迷你光栅化软渲染器的实现看渲染流水线)
简介这是一篇没有什么实际作用的文章,因为没有任何shader效果实现,整篇文章到最后,我只实现了一个旋转的立方体(o(╯□╰)o),和Unity渲染的万紫千红的3D世界显得有很大落差,仿佛一切都回到了最初的起点。不过实时渲染繁华的背后,还是这看似简单的光栅化。今天,本人打算研究一下基本的光栅化渲染的实现,看一下怎样把一个模型从一些顶点数据,变成最终显示在屏幕上的图像,也就是所谓的渲染流水线。实现过...原创 2018-05-22 00:20:33 · 8923 阅读 · 15 评论 -
Unity Shader-GodRay,体积光(BillBoard,Volume Shadow,Raidal Blur,Ray-Marching)
前言好久没有更新博客了,经历了不少事情,好在最近回归了一点正轨,决定继续Unity Shader的学习之路。作为回归的第一篇,来玩一个比较酷炫的效果,一般称之为GodRay,也有人叫它云隙光,当然,最高大上的名字就是体积光散射了。这几个名字对应几种类似的效果,但是实现方式相差甚远。先来几张照片以及其他游戏的截图看一下:ps:这张图片是一张照片哈,是本屌丝看别人的云南游记发现的,清明节本来想去的,结...原创 2018-05-12 02:17:22 · 32195 阅读 · 27 评论 -
Unity Shader-非主流纹理采样研究(流光,溶解,隐身效果)
简介今天来研究几个效果,最近比较忙,所以来研究几个比较简单的效果。不过也是游戏中常用的一些效果,流光效果,按照方向的溶解效果。其实这几个效果主要运用的就是世界空间采样的一个技术。不多说,下面进入正题。流光效果首先来看一下流光效果。流光效果是一个非常常见的效果,不仅仅是游戏,一些广告之类的也都会有这种效果。流光的原理还是比较简单的:首先就是需要一张流光图,这张流光原创 2017-08-11 09:56:48 · 15541 阅读 · 10 评论 -
Unity Shader-遮挡处理(X-Ray,遮挡描边,遮挡半透,遮挡溶解)
游戏中处理遮挡的几种常用的方法,遮挡溶解,遮挡描边,遮挡半透,X光效果。原创 2017-07-26 01:38:18 · 43379 阅读 · 31 评论 -
Unity Shader-Command Buffer的使用(景深与描边效果重置版)
Command Buffer是Unity5新增的一个灰常灰常强大的功能。先祭出官方介绍和文档。我们在渲染的时候,给OpenGL或者DX的就是一系列的指令,比如glDrawElement,glClear等等,这些东西目前是引擎去调用的,而Unity也为我们封装了更高一级的API,也就是CommandBuffer,可以让我们更加方便灵活地实现一些效果。CommandBuffer最主要的功能是可以预定义一些列的渲染指令,然后将这些指令在我们想要的时机进行执行。本篇文章简单介绍一下CommandBuffer的使用,原创 2017-06-07 01:25:22 · 41359 阅读 · 35 评论 -
Unity Shader-死亡溶解效果
简介赶脚每个学习shader的,都得过死亡溶解这一关....毕竟这个效果灰常常用。今天,我也来研究一下死亡溶解效果的实现。溶解效果实现原创 2017-05-22 00:21:58 · 46963 阅读 · 38 评论 -
Unity Shader-后处理:时空扭曲效果
简介最近刚刚通关《耻辱2》,在有一关的时候,竟然送给我了一个能够穿越时空的“神器”,有了这货,就可以一下子传送到过去或者回到现在。在使用这个道具的时候,会有一个屏幕扭曲的穿越的效果,感觉效果不错。屏幕扭曲效果,在之前的文章:热空气扭曲和屏幕水波纹效果也实现过类似的效果,可以进行参考。原创 2017-05-12 01:48:52 · 22711 阅读 · 10 评论 -
Unity Shader-热空气扭曲效果
简介千等万等终于等到了《耻辱2》打折,本以为可以爽一发了,然而各种出问题,先是steam下载速度奇慢无比,下了三天晚上好不容易下完的游戏,第一次打开给弹了个3D11CreateDeviceAndSwapChain Failed,折腾半天装了个补丁算是能打开游戏了,然而过完新手教学显卡驱动就崩了,崩了!崩了,连崩三回,差点想把坑爹的A卡从机箱掏出来顺着窗户扔出去,后来发现贴吧里面也有好几原创 2017-05-03 23:19:36 · 36942 阅读 · 24 评论 -
Unity Shader-法线贴图(Normal Map)与视差贴图(Parallax Map)
简介法线贴图技术至今一直是游戏增强画面效果的利器之一。随着移动设备的性能越来越好,曾经的在PC平台的各种高级技术在移动平台也都开始大规模使用了。最近印象最深刻的就是《镇魔曲》,场景地形全部都加了法线,可以说是无所不用其极了....之前还没见过哪个游戏在移动平台敢这么大规模地使用法线。而且人模的渲染也是走的次时代的流程。不得不说大厂就是牛,本屌丝只能望别人家的游戏兴叹啊。本篇文章主要是研原创 2017-03-15 01:19:40 · 14451 阅读 · 2 评论 -
Unity Shader-后处理:径向模糊效果
简介游戏都追求画面感,个人感觉后处理是最能表现画面感的方法之一(虽然比较费)。之前玩了一阵子模糊效果,今天再来看一个模糊效果,径向模糊。这种效果对于画面感的提升非常有帮助,尤其是在快速运动突然加速的一瞬间,或者Boss出场狂吼一声的屏幕效果。于是我第一时间想到了《天涯明月刀》里面轻功飞起来加速的那一瞬间,径向模糊的使用,使轻功加速的画面感一下子就出来了。最近清了玩了快6年的原创 2017-02-24 23:21:05 · 20704 阅读 · 4 评论 -
Unity Shader-描边效果
简介描边效果是游戏里面非常常用的一种效果,一般在选中物体或者NPC的时候,被选中的对象就会显示描边效果。比如最近又跑回去玩了玩《剑灵》,虽然出了三年了,在现在的网游里面画面仍然算很好的。还有就是最常见的LOL中的塔,选中时就会看到很明显的描边效果:原创 2017-01-15 16:00:58 · 52177 阅读 · 28 评论 -
Unity Shader-渲染队列,ZTest,ZWrite,Early-Z
简介我们在写shader的时候经常会接触几个shader中的状态设置,今天来研究其中的三个状态的设置,Render Queue(渲染队列),ZTest(深度测试),ZWrite(写入深度)。这三个状态之间基情满满,当我们需要一些遮挡效果时,就需要同时使用这几个状态来控制。在渲染阶段,引擎所做的工作是把所有场景中的对象按照一定的策略(顺序)进行渲染。怎么渲染能保证物体之间的遮挡关系是原创 2017-01-02 01:16:02 · 29080 阅读 · 24 评论 -
Unity Shader-法线贴图(Normal)及其原理
简介以前经常听说“模型不好看啊,怎么办啊?”答曰“加法线”,”做了个高模,准备烘一下法线贴图”,“有的美术特别屌,直接画法线贴图”.....法线贴图到底是个什么鬼,当年天真的我真的被这个图形学的奇淫杂技忽悠了,然而毕竟本人还算有点刨根问底的精神,决定研究一下法线贴图一家子。毕竟本人才疏学浅,如有错误,欢迎指正。先附上几个参考链接凹凸贴图(Bump Map)既原创 2016-12-20 23:53:44 · 52886 阅读 · 18 评论 -
Unity Shader-边缘光(RimLight)效果
简介写了两篇简单光照模型的shader的文章,虽然Unity自带的shader就有diffuse和specular,效果还比自己写的好,然而要想学好shader,基础还是很重要的。不然到网上到处找shader,扔到项目里,能用就好,完全不看性能的话,迟早会出事的。今天不看光照模型了,物理渲染还没搞懂,所以只好先来个简单的shader玩一玩。我们原创 2016-12-11 17:04:18 · 36408 阅读 · 8 评论 -
Unity Shader-Phong光照模型与Specular
简介学完了兰伯特光照模型,再来学习一个更加高级一点的光照模型-Phong光照模型。兰伯特光照模型中主要就是漫反射,而实际上,光除了漫反射,还有镜面反射。一些金属类型的材质,往往表现出一种高光效果,用兰伯特模型是模拟不出来的,所以就有了Phong模型。Phong模型主要有三部分构成,第一部分是上一篇中介绍了的Diffuse,也就是漫反射,第二部分是环境光,在非全局光照的情况下,我们一般是原创 2016-12-09 13:34:52 · 10257 阅读 · 2 评论 -
Unity Shader-兰伯特光照模型与Diffuse Shader
一.简介学了一段时间shader,然而一直在玩后处理,现在终于下定决心钻研一下真正的带光照的shader。从Diffuse到Specular,到Bump等等。一个游戏的画面好坏,很大程度上取决于光照和贴图。有了光,游戏世界才显得真实,所以,首先我们先来看一下现在游戏中最简单的几种光照模型。二.简单光照模型1.预备知识我们观察世界是因为有光进入我们的眼原创 2016-12-01 13:02:20 · 21344 阅读 · 0 评论 -
Unity Shader-后处理:屏幕水波效果
一.简介最近在打黑魂,被虐得死去活来,每次都是想砸电脑的节奏,然而还是忍不住想玩,唉。在被虐了千百遍之后,我发现写代码比玩游戏爽....下面步入正题,黑魂的传送技能之前会播放一个帅帅的屏幕特效-屏幕水波,从屏幕中间向四周扩散开来,很有赶脚。下面附上一张截图:原创 2016-11-03 10:13:10 · 45628 阅读 · 62 评论 -
Unity Shader-后处理:Bloom全屏泛光
一.简介今天来学习一下Bloom效果,中文一般叫做全屏泛光效果,这是一种可以模拟出HDR的全屏后处理效果,但是实现原理与HDR相差很远,效果比HDR差一些,但是比HDR的性能要节省很多。http://blog.csdn.net/u011047171/article/details/48522073http://www.tuicool.com/articles/V77N7fh原创 2016-10-30 20:35:53 · 28734 阅读 · 5 评论 -
Unity Shader-后处理:景深
一.简介景深一直是我最喜欢的效果之一,最早接触CE3的时候,发现CE引擎默认就支持景深的效果,当时感觉这个效果特别酷炫,如今投身于Unity的怀抱中,准备用Unity实现以下传说中的景深效果。所谓景深,是摄影的一个专业术语:使被摄物体产生较为清晰影像的最近点至最远点的距离就是景深。也是被摄物体能清晰成像的空间深度。在景深范围内景物影像的清晰度并不完全一致,其中焦点上的清晰度是最高的,其余的原创 2016-10-21 00:33:21 · 33395 阅读 · 3 评论 -
Unity Shader-后处理:高斯模糊
一.简介上一篇文章学习了模糊的原理以及基本的模糊实现,对于清晰和模糊这个定义感觉还是比较说明问题,这里再贴出一下:“清晰的图片,各个像素之间会有明显的过渡,而如果各个像素之间的差距不是很大,那么图像就会模糊了”。鉴于这个定义,我们就可以通过代码来实现模糊的效果。上一篇Unity Shader-后处理:均值模糊中实现了一个基本的均值模糊,也就是将一个像素和其周围的像素取平均值从而进行原创 2016-10-14 01:07:05 · 22865 阅读 · 5 评论 -
Unity Shader-后处理:简单均值模糊
今天来学习一下后处理中比较常用的一种效果,屏幕模糊效果。屏幕模糊效果是一些高级后处理效果的基础,比如景深,运动模糊等等效果都需要用屏幕模糊效果来实现,所以我们首先看一下屏幕模糊效果,然后通过屏幕模糊,进一步学习景深效果与运动模糊效果的实现。一.简介二.原理介绍三.代码实现四.效果展示原创 2016-09-29 01:53:22 · 16670 阅读 · 0 评论 -
Unity Shader-后处理:简单的颜色调整(亮度,饱和度,对比度)
好久没坚持写blog了,是时候开始撸一波新博文了!学习Unity有一段时间了,关于Shader的书也看了几本《Unity Shader入门精要》,《Unity 3D ShaderLab 开发实战详解》,开一个系列记录一下学习的心得笔记。原理就不多讲了,一篇一个实际Shader样例就好了。貌似一开始关于shader的讲解都是diffuse,不过,我赶脚后处理貌似更简单,所以第一篇来一发简单后处理原创 2016-09-11 22:49:07 · 62754 阅读 · 8 评论