Shader
MrASL
http://www.lsngo.net
展开
-
【Unity Shader】结合Projector和Rendertexture实现实时阴影
之前已在简书上发过,这里重新整理了一下,并附上实现代码。在unity中实现阴影的文章网上看了不少,包括常用的shadowMap,或直接投射Rendertexture等。比如unity中实现shadowmap,可以通过投射灯光空间的深度图,并在投射物体上进行深度比较,判断是否处于阴影的范围,以此来渲染阴影。将深度图投射到接受阴影的物体上的效果如图所示:你所需要做的就是在灯光空原创 2015-12-09 19:39:24 · 21882 阅读 · 1 评论 -
【UnityShader】平面阴影
平面阴影作为一种最简单的实时阴影实现,尽管其仅能局限于在完全平坦的地面的情况下使用,但由于其性能良好,在许多移动端手游中仍然可以发挥较强的使用价值。平面阴影的实现原理比较简单,一般由如下几个过程:1.向shader传入世间到平面的矩阵和平面到世界的矩阵2.向shader传入灯光方向3.在平面空间下根据灯光方向计算顶点在平面上的投影坐标,最终得到阴影但这种方式存在原创 2018-03-08 23:36:32 · 3573 阅读 · 1 评论 -
【Unity】FOV战争迷雾
战争迷雾作为一种常用的游戏效果,被广泛的运用在RTS游戏和最近火热的moba类游戏中,在游戏中需要不断的进行探索和侦察来打开更多的视野区域,或者用来显示友方的位置,或者是躲避敌方等。常见的战争迷雾主要有两种:第一种是比较纯粹的将周围指定半径内的区域全部认为可见,即以整个圆形范围来表示可见的区域。由于玩过的RTS比较少,记不清哪些游戏使用的是这种方式了,这里随便找了张图片,大致是这样原创 2017-11-04 16:45:45 · 12734 阅读 · 8 评论 -
【UnityShader】光线追踪体积光
最近尝试实现了一下光线追踪体积光,效果如下:光线追踪(Ray tracing)是三维计算机图形学中的特殊渲染算法,跟踪从眼睛发出的光线而不是光源发出的光线,通过这样一项技术生成编排好的场景的数学模型显现出来。(摘自维基百科)实现步骤:一、在灯光区域生成体积光的载体mesh,即我们的体积光实际上是渲染在mesh上的,因此光线追踪的起点是每个顶点的位原创 2017-10-26 22:44:35 · 8467 阅读 · 0 评论 -
【UnityShader】双面透光布料材质
最近准备尝试写一个可以双面接受阴影,并且有类似透光效果的布料shader,大致效果如下:总的来说就是在布料逆光的时候可以看到背面物体的阴影实现的原理其实非常简单,unity本身已经提供了一整套阴影渲染的方案,我们所需要做的只是根据法线判断正反面,并在反面正确的渲染出阴影和光照即可,注意还需要自己实现ShadowCaster,以保证光照在背原创 2017-10-26 22:32:33 · 6830 阅读 · 0 评论 -
【Unity Shader】Shadow Caster、RenderType和_CameraDepthTexture
在做很多效果的时候我们需要使用_CameraDepthTexture和_CameraDepthNormalsTexture,其中_CameraDepthTexture存储的是屏幕深度信息,而_CameraDepthNormalsTexture存储的还包括法线信息,常会用到的情况,比如做景深效果,我们需要根据深度来对模糊的图像和正常的图像插值完成景深效果,或者软粒子效果,需要根据深度差判断粒子网格是原创 2016-01-24 15:13:19 · 18874 阅读 · 5 评论 -
【Unity Shader】浅析Unity shader中RenderType的作用及_CameraDepthNormalsTexture
初学Unity ShaderLab的时候,一定有接触过Unity Shader中的Tags标签块,比如: "LightMode"="Vertex" "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane"其中LightMode标签指定该pass原创 2016-01-13 17:21:01 · 18297 阅读 · 0 评论 -
【Unity Shader】unity海边波浪效果的实现
效果图如下(GIF因为为了把图压小所以删掉了一些帧导致后面速度突然很快,实际效果并不是这样~_~)PS.对于移动端,参考该文章:http://www.lsngo.net/2018/03/22/unity_seawave_vertexcolor/之前在玩很多游戏的时候,注意到里面的海水和陆地相交接的地方会产生海浪,比如《海岛奇兵》,以及水面会出现一个透明渐隐的过度,而不会在水面和陆地的交界处产生硬切...原创 2016-01-10 18:29:59 · 52699 阅读 · 12 评论 -
【Unity Shader】基于UGUI的水波倒影按钮
先上效果:首先说一下原理,这个shader实现的原理很简单,通过使用两个Pass,第一个Pass先正常渲染一遍UI,第二个Pass将UV坐标y值上下翻转,并将顶点坐标偏移一定距离,再做扭曲操作。实现起来并不是很难,主要需要注意的就是UGUIshader要注意的几个格式,比如UGUI shader都要有模板测试和ColorMask的部分(如果你希望你的shader能支持UGUI mask原创 2015-12-27 15:05:05 · 8731 阅读 · 4 评论 -
【UnityShader】屏幕空间全息扫描效果
前段时间刚玩《使命召唤11》的时候发现里面新增了一种很高科技的扫描手榴弹,可以产生一圈类似全息效果的扫描圈,并显示出墙后的敌人,类似这样:最近打算实现一个用在第三人称中类似的效果,如下:实现方案:1.根据_CameraDepthTexture计算屏幕空间像素点的世界坐标2.将扫描发起位置的世界坐标传入shader3.计算屏幕空间世界坐标到扫描发起原创 2017-10-28 21:49:00 · 10461 阅读 · 2 评论 -
【Unity Shader】在Asset创建面板中添加新的shader模板
我们知道Unity4.x中,当在Asset目录中右键创建shader时默认新建的shader为unity的surface shader,而在5.x中,创建shader的选项中变成了四个shader模板,分别是Standard Surface Shader,Unlit Shader,Image Effect Shader 和 Compute Shader。可以看到原先默认的Surface Shade原创 2016-01-17 11:13:38 · 9686 阅读 · 0 评论 -
【Unity Shader】HSV和RGB互转的shader实现
shader中颜色是以rgba表示,但是很多时候我们需要将其转换成HSV颜色空间,或者将某个HSV颜色转成RGB进行计算,比如一些后期效果需要调整画面的色相(Hue),或者降低画面的饱和度(Saturation),因此有必要在shader中实现HSV和RGB颜色空间互转的函数,RGB和HSV互转网上可以搜到很多现成的方式,这里提高一组简短的shader实现:float3 RGB2HSV原创 2016-01-28 22:07:54 · 5915 阅读 · 1 评论 -
【Unity】基于顶点色的海边波浪效果(适用移动端)
之前曾做过一个unity中带有海边波浪冲刷的海水shader效果,并最初发布在CSDN上,原文链接:http://blog.csdn.net/mobilebbki399/article/details/50493117不过最初的效果原先仅仅是自己自学shader与练习时实现的,没有考虑过多优化措施,总的来说做的比较水(当时才工作半年多 ~_~|||)考虑到该效果貌似关注的人挺多的,最近刚好也在项目...原创 2018-03-29 17:17:21 · 5916 阅读 · 5 评论