![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Unity
MrASL
http://www.lsngo.net
展开
-
【Unity Shader】结合Projector和Rendertexture实现实时阴影
之前已在简书上发过,这里重新整理了一下,并附上实现代码。在unity中实现阴影的文章网上看了不少,包括常用的shadowMap,或直接投射Rendertexture等。比如unity中实现shadowmap,可以通过投射灯光空间的深度图,并在投射物体上进行深度比较,判断是否处于阴影的范围,以此来渲染阴影。将深度图投射到接受阴影的物体上的效果如图所示:你所需要做的就是在灯光空原创 2015-12-09 19:39:24 · 21858 阅读 · 1 评论 -
【Unity】基于矩阵的UGUI引导蒙版方案
UGUI实现引导蒙版有多种方案,可以基于shader,或纯粹靠程序实现,这里分享一种最近在项目中使用的基于shader的蒙版方案。许多基于shader的引导蒙版方案都是将需要遮罩的区域以vector4的形式传入shader,这种方式实现简单且易于理解,而且效果不错,但使用这种方式容易造成一种无法避免的问题:蒙版区域无法旋转,当然除非额外传入遮罩区域的旋转信息。今天要介绍的方原创 2017-10-26 22:25:12 · 2558 阅读 · 1 评论 -
【UnityShader】双面透光布料材质
最近准备尝试写一个可以双面接受阴影,并且有类似透光效果的布料shader,大致效果如下:总的来说就是在布料逆光的时候可以看到背面物体的阴影实现的原理其实非常简单,unity本身已经提供了一整套阴影渲染的方案,我们所需要做的只是根据法线判断正反面,并在反面正确的渲染出阴影和光照即可,注意还需要自己实现ShadowCaster,以保证光照在背原创 2017-10-26 22:32:33 · 6809 阅读 · 0 评论 -
【UnityShader】光线追踪体积光
最近尝试实现了一下光线追踪体积光,效果如下:光线追踪(Ray tracing)是三维计算机图形学中的特殊渲染算法,跟踪从眼睛发出的光线而不是光源发出的光线,通过这样一项技术生成编排好的场景的数学模型显现出来。(摘自维基百科)实现步骤:一、在灯光区域生成体积光的载体mesh,即我们的体积光实际上是渲染在mesh上的,因此光线追踪的起点是每个顶点的位原创 2017-10-26 22:44:35 · 8460 阅读 · 0 评论 -
【Unity编辑器】UVPreview扩展
最近为美术开发一个可以直接在unity中预览uv的编辑器,考虑到实用性,直接扩展了GameObject的Inspector,在GameObject的Preview中增加绘制UV的预览,支持查看模型光照贴图的UV布局:效果:UV预览:光照贴图UV预览:关键技术:几何着色器,C#反射核心功能即UV的渲染,因此放到最前面讲:第一原创 2017-10-26 22:50:50 · 4709 阅读 · 3 评论 -
【Unity编辑器】EditorWindow扩展-SubWindow
unity项目开发过程中会需要使用到unityeditor的相关api来扩展编辑器,其中EditorWindow可以方便的开发编辑器窗口,可以用来开发打包工具等。但当遇到复杂编辑器需求时,往往会纠结于编辑器的布局而花掉一些时间。最近尝试写了一套用于实现EditorWindow内部的子窗体的功能,尝试通过可活动的子窗体的方式来加快布局,效果如下:主要实现了一个子窗体树结构原创 2017-10-26 23:14:07 · 4563 阅读 · 1 评论 -
【Unity】FOV战争迷雾
战争迷雾作为一种常用的游戏效果,被广泛的运用在RTS游戏和最近火热的moba类游戏中,在游戏中需要不断的进行探索和侦察来打开更多的视野区域,或者用来显示友方的位置,或者是躲避敌方等。常见的战争迷雾主要有两种:第一种是比较纯粹的将周围指定半径内的区域全部认为可见,即以整个圆形范围来表示可见的区域。由于玩过的RTS比较少,记不清哪些游戏使用的是这种方式了,这里随便找了张图片,大致是这样原创 2017-11-04 16:45:45 · 12704 阅读 · 8 评论 -
【Unity】四叉树/八叉树管理和动态加载场景物件
一、引言:场景的组织与管理是3d游戏开发中重要的一环,unity3d引擎中,只提供了最基本的场景组织,当我们加载场景时,会将场景中的物件及其依赖的资源全部加载出来,这对于较为庞大的场景显然是不合理的。可以考虑在进入场景时预先将可见范围内的物体加载,之后的其它物件也全部在当进入可见区域时加载,但如何才能快速索引到进入某区域的物体?因此,我们需要考虑一种层次化的场景管理机制,可以快速的索引出指定空原创 2018-03-08 23:24:58 · 15372 阅读 · 0 评论 -
【UnityShader】平面阴影
平面阴影作为一种最简单的实时阴影实现,尽管其仅能局限于在完全平坦的地面的情况下使用,但由于其性能良好,在许多移动端手游中仍然可以发挥较强的使用价值。平面阴影的实现原理比较简单,一般由如下几个过程:1.向shader传入世间到平面的矩阵和平面到世界的矩阵2.向shader传入灯光方向3.在平面空间下根据灯光方向计算顶点在平面上的投影坐标,最终得到阴影但这种方式存在原创 2018-03-08 23:36:32 · 3568 阅读 · 1 评论 -
【Unity】多边形雷达图
多边形雷达图作为游戏中直观体现角色各项数值的UI在许多游戏中得到应用。目前关于unity中实现雷达图的方式的教程有很多,这里提供一种UGUI实现方案,主要有以下功能:1.支持3边以上的任意多边形。2.使用PropertyDrawer扩展了Inspector面板,方便调节3.支持点击穿透判定:实现步骤:一、实现PolygonImageEdge类,用来表原创 2017-10-26 22:13:56 · 4936 阅读 · 1 评论 -
【Unity Shader】Shadow Caster、RenderType和_CameraDepthTexture
在做很多效果的时候我们需要使用_CameraDepthTexture和_CameraDepthNormalsTexture,其中_CameraDepthTexture存储的是屏幕深度信息,而_CameraDepthNormalsTexture存储的还包括法线信息,常会用到的情况,比如做景深效果,我们需要根据深度来对模糊的图像和正常的图像插值完成景深效果,或者软粒子效果,需要根据深度差判断粒子网格是原创 2016-01-24 15:13:19 · 18847 阅读 · 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 · 18285 阅读 · 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 · 5912 阅读 · 1 评论 -
【Unity编辑器】使用反射和Attribute实现自定义右键菜单
unity中使用自定义Attribute实现右键菜单原创 2016-07-10 15:48:15 · 4452 阅读 · 0 评论 -
【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 · 9676 阅读 · 0 评论 -
【UnityShader】屏幕空间全息扫描效果
前段时间刚玩《使命召唤11》的时候发现里面新增了一种很高科技的扫描手榴弹,可以产生一圈类似全息效果的扫描圈,并显示出墙后的敌人,类似这样:最近打算实现一个用在第三人称中类似的效果,如下:实现方案:1.根据_CameraDepthTexture计算屏幕空间像素点的世界坐标2.将扫描发起位置的世界坐标传入shader3.计算屏幕空间世界坐标到扫描发起原创 2017-10-28 21:49:00 · 10453 阅读 · 2 评论 -
【Unity Shader】基于UGUI的水波倒影按钮
先上效果:首先说一下原理,这个shader实现的原理很简单,通过使用两个Pass,第一个Pass先正常渲染一遍UI,第二个Pass将UV坐标y值上下翻转,并将顶点坐标偏移一定距离,再做扭曲操作。实现起来并不是很难,主要需要注意的就是UGUIshader要注意的几个格式,比如UGUI shader都要有模板测试和ColorMask的部分(如果你希望你的shader能支持UGUI mask原创 2015-12-27 15:05:05 · 8724 阅读 · 4 评论 -
【Unity编辑器】Unity基于模板生成代码的原理与应用
Unity基于模板生成代码的原理与应用原创 2016-07-10 16:33:16 · 8648 阅读 · 5 评论 -
【Unity Shader】unity海边波浪效果的实现
效果图如下(GIF因为为了把图压小所以删掉了一些帧导致后面速度突然很快,实际效果并不是这样~_~)PS.对于移动端,参考该文章:http://www.lsngo.net/2018/03/22/unity_seawave_vertexcolor/之前在玩很多游戏的时候,注意到里面的海水和陆地相交接的地方会产生海浪,比如《海岛奇兵》,以及水面会出现一个透明渐隐的过度,而不会在水面和陆地的交界处产生硬切...原创 2016-01-10 18:29:59 · 52651 阅读 · 12 评论 -
【Unity】基于顶点色的海边波浪效果(适用移动端)
之前曾做过一个unity中带有海边波浪冲刷的海水shader效果,并最初发布在CSDN上,原文链接:http://blog.csdn.net/mobilebbki399/article/details/50493117不过最初的效果原先仅仅是自己自学shader与练习时实现的,没有考虑过多优化措施,总的来说做的比较水(当时才工作半年多 ~_~|||)考虑到该效果貌似关注的人挺多的,最近刚好也在项目...原创 2018-03-29 17:17:21 · 5909 阅读 · 5 评论