常见游戏特效学习与实现
前言
最近打算学习下特效部分,因为现在我的热饭班长血怒特效很挫,长这样
但是人家应该是这样的
虽然说热饭班长没有Shader撑牌面,但就算加上Shader感觉也比不上原版那么霸气,而且有很多奇怪的贴图我都不知道怎么用,比如
我直接黑人问号脸,所以来学习一下
本文大部分内容都收集整理自realtimevfx网站,也推荐大家去这个网站学习特效制作,大佬作品和教程非常多!
正文
特效是Textures,Sprites,Meshes,Lights和Shader一起配合而创建的酷炫效果。
在特效制作工作流程中,特效纹理是决定最终特效质量的最重要的其中一环,它的制作通常与游戏的风格有很大的相关性,Jason Keyser’s LoL FX breakdowns 频道有很多非常好的示例
VFX的五大艺术准则
Gameplay
特效的制作要去迎合Gameplay,让Gameplay对于玩家来说更加清晰明确,反馈性更强。这一点在许多文章,视频,PPT都有提及,举个例子,LOL中提莫的蘑菇爆炸的时候要播放特效,老版本的蘑菇爆炸特效和欧米伽小队的爆炸特效完全不一样,一方面是特效的质量,另一方 ...
2021.5.1日记
我从年后到现在渲染方面的学习投入的精力比较多,所以相对于之前搞GamePlay有更多的时间(因为脑子不是很灵光,一些算法和公式要学习半天甚至几天的时间,学习嘛,懂得都懂,东摸摸西躺躺,时间就过去了)来胡思乱想,最近对自己人生规划的思路越来越明确,并且我本身也并不排斥这个已经成型的思路,所以来做个记录。
这个思路之所以会形成,主要原因是随着自己见识到的知识面越来越广,越来越能清楚的认识到自己的水平,以及自己想要达成的目标,或者说自己能够达成的极限。
我不是什么天资聪颖之辈,相反我觉得自己脑子很多情况并不是很好用,对,脑子不好用就是我给我自己的定位,或许有人觉得我在装X,但我说的句句属实,没有人比我更了解我自己,我现在所有的知识和作品都是靠堆时间一点点死磨出来的,这些内容,花费了他们本不应该花费的大量时间,比如内容A学习和掌握完全可以从半天缩短到三个小时(这不是以现在的目光看待过去,与经验无关。纯粹是自己少了一点灵性),但我却完全做不到,因为理解能力和思维能力只有这个程度,感觉大部分人如果跟我走一样的路线,效率和结果会远好于我。
所以我的学习能力基本上就是这样,不高不低都是抬举我了,实际 ...
ET6.0接入ILRuntime
前言
当今市面上热更新方案百花齐放,有用lua的(xlua,tolua等),有用js/ts的(puerts),有用C#打补丁修复的(InjectFix),还有C#转Lua的(CS2Lua)而他们或多或少都有自己的痛点和不方便的地方。
ILRuntime 则是将痛点与不方便降到最低的,它是一个纯C#的热更新方案。借助Mono.Cecil库来读取DLL的PE信息,以及当中类型的所有信息,最终得到方法的IL汇编码,然后通过内置的IL解译执行虚拟机来执行DLL中的代码来实现热更新功能。
ET框架 也是前阵子更新到了6.0版本,简单概括一下是一个客户端 + 服务端的纯C#双端框架,总体架构是一部分ECS,一部分OOP,一部分组件式编程,各取所长,可以说平衡的非常好了,网络架构是高效的分布式架构+Actor模型内网通信机制。毋庸置疑的是,框架是非常优秀的,但是由于作者的游戏临近上线比较忙,热更新模块还没接入。而且作者似乎更偏向CS2Lua一些,感觉有点可惜,考虑到自己和其他一些想继续使用ILRuntime热更的朋友们,遂有此文。
(对于ILRuntime 和 ET框架 不了解的朋友可以直接点击 ...
URP下屏幕空间平面反射(ScreenSpacePlanarReflection)学习笔记
前言
继续学习Colin大神的渲染示例库,这次学习的是屏幕空间平面反射(ScreenSpacePlanarReflection),一个可以用在移动端的平面反射库,但是对图形API有要求,PC/console/vulkan android/Metal iOS,OSX,因为其中用到了Compute Shader加速计算。项目还对不同平台做了差异化处理,干货很多。
学习过程中我也有很多疑问,有一些是百度谷歌看PPT解决的,有一些就实在不知道怎么办了,在文中有说明,望知道的大佬能不吝赐教。
正文
Compute Shader
简单来说Compute Shader是运行在GPU中的计算管线中的程序,其与渲染管线相互独立,旨在将任务切分成一个个运行单元,然后充分利用GPU的并行计算能力来提高目标的运行效率,也是现代GPGPU(General Purpose Computing on GPU)的基石。
其应用起来的相关概念用一张图即可概括(有一说一这张图感觉比NVIDIA的好看和明了多了,AMD YES!):
有关Compute Shader的更多内容参见:知乎文章:Compute Sha ...
(译)快速入门Unity编辑器拓展(IMGUI)
前言
我的技能编辑器马上就要和大家见面了,正好最近几天编辑器拓展接触的比较多一点,就想着趁热打铁优化一下架构并且重置一波UI,因为本来的样子雀食丑的一,期间遇到了许多问题,在搜索Control IDs相关内容的找到了Bunny大神的这篇文章,他将编辑器拓展里一些十分晦涩的概念以及一些事件的运行流程都清晰的解读了,故翻译出来分享给大家。
本文翻译自:https://github.com/Bunny83/Unity-Articles/blob/master/IMGUI%20crash%20course.md
Unity的IMGUI系统非常简单,但功能非常强大。主要部分有:
OnGUI callback。此回调用于处理与GUI有关的所有事情。
与OnGUI关系密切的Event class。
GUIStyle class定义一个控件的外观。它实际上负责任何GUI的绘制工作。
GUISkin class这基本上只是一个预定义的控件样式集合,并且拥有一个自定义style数组,可以自由拓展。
GUIUtility与EditorGUIUtility。当使用GUILayout class时,不要忘 ...
Unity编辑器拓展Wiki开源项目,装得下,世界都是你的
前言
在座的各位,凡是做过Unity编辑器拓展的都知道其知识十分零散和细碎,如果平时没有积累和记录的话,制作一个工具往往需要百度谷歌很多次去查找某个实现,可以说异常折磨,我之前有写过一篇比较宏观的编辑器拓展总结:https://www.lfzxb.top/unity-editor-extension-base/ ,但也只是提供了一个大致的方向,涉及更加详细的实现却没有提及,这也不是我不想写,编辑器UI千变万化,雀食是没有办法用一篇文章全写下来。
我们仔细思考开发编辑器UI这个过程,我们得到了什么?
不,我们什么都没有得到,这种知识可以说不具备任何的迁移运用特性,雀食是这样的,我在学校写了一年的Unity编辑器拓展,在实习的时候写UE4的Slate直接麻了(当然也不排除是Slate过于博大精深导致的,懂得都懂,不懂的说了也不懂,利益相关,写完文章再匿了)。
凑巧,前几天一位朋友 @马三小伙儿 做了一次技术分享,就是将常用的编辑器拓展功能全部整合在一个仓库了,随用随取。仓库地址:https://github.com/XINCGer/UnityToolchainsTrick ,目前这个库 ...
Odin常用功能整理
视频:
正文
特性效果预览
新版本Odin提供一个AttributeOverView EditorWindow,专门用于预览各个特性的效果
通过Tools-Odin Inspector-Attribute Overview即可打开:
PropertyTree
一个超级厉害的属性树,可以支持任意类型(如果一些字段类型无法绘制,则需要添加ShowOdinSerializedPropertiesInInspector字段到根class上)在任意位置上的序列化显示,例如
123TargetData targetData = new TargetData();PropertyTree tree = PropertyTree.Create(targetData);tree.Draw(false);
另外也可以参考xNode的EditorWindow中的节点,也是这样实现的:
需要注意的是,这个PropertyTree并不会帮我们永久化数据,虽然他内部使用了SO实现,但是仅仅是内存中的,并不会保存到文件,所以临时的绘制可以用任意类,要求持久化的就必须是继承自SO的类。
如果想要针 ...
我的高中历程
开端
2014年9月1日,我来到丰县中学,梦想中的中学在那时我的眼中是如此的耀眼和夺目。
2021年4月8日,我坐在大学宿舍里,听着网易云,敲着键盘,本以为高中的回忆依旧会清晰无比,但实际上已经残破不堪,乃至我连时间线都有些搞不清了,哦,恍惚间,已经7年了啊。
我试图用文字回忆,再记录那已经有些模糊的高中历程,为以后的自己,也为正在看这篇文章的人。
高一
我是提前招生进实验班的一个幸运儿,这不是谦虚,整个过程有太多的巧合,恰巧那一次考进了年级前50,恰巧参加了那次年级前50才能参加的提前招生考试,恰巧人数没招够,恰巧,我进来了。
但是幸运女神终将离我而去,剩下的时间全都靠自己。
我努力过,但是真的没有用,我真真切切感受到了自己在应试教育下的极限,周围全是优秀的同学,大家越来越进入状态,我的名次却在稳步后退,那种感觉,很无力。
因为是实验班,每个周末我们还要从早上开始上半天课,至于是从什么时候开始上6天课,休息半天的,我记不清了,但是我有个很喜欢的时间段,那就是在周末冬天清冷的早晨,蜷缩在被窝里,听着室友手机里放的《残酷月光》《吻得太逼真》《See You Again》。
每天早上 ...
NodeGraphProcessor整合Odin
前言
本人一直对节点编辑器比较感兴趣,最近看到有网友已经基于GraphView做出了自己的剧情编辑器,技能编辑器等,我也手痒难耐,并且眼馋GraphView的颜值很久了,决定来学习一下,并且准备把自己的技能编辑器移植过来。
NodeGraphProcessor版本:https://github.com/alelievr/NodeGraphProcessor/commit/bea17d70217f44509c30086ec04a4cfbe1836751
NodeGraphProcessor + Odin:https://github.com/wqaetly/NodeGraphProcessor
正文
GraphView介绍
GraphView是Unity推出的一个基于UIElement的节点编辑器UI模块,基建很完全,有多选,拖动,缩放,Group等功能,但是我没有找到官方的文档和示例,大家可以跟着这个UP主学习一下怎么从零开始使用GraphView做一个节点编辑器:Mert Kirimgeri
他还是 NodeBasedDialogueSystem 的作者
UIElemen ...
URP下屏幕空间贴花(ScreenSpaceDecal)学习笔记
前言
这几天学习了下Colin大神的屏幕空间贴花实现,感觉其中的算法实现和坐标转换让本笨比拍案叫绝,故记录分享一下。
大体思路
根据在任意坐标系中,已知一个物体A的坐标,以及另一个物体B相对于物体A的偏移量,即可得知物体B坐标的定理。我们可以将Camera坐标和从Camera到顶点的射线从相机空间转换到模型空间,然后利用从VS到PS的线性插值(其实是类似我们从深度图重建世界坐标时,构造四条从相机到屏幕面片四个顶点的射线,利用VS到PS的线性插值得到片元数目的射线原理,即可得知屏幕面片每一个片元对应的世界空间坐标),即可得知物体每一个片元对应的模型空间坐标,又因为我们使用了单位长度为1的Cube作为投射器,所以就可以直接用这个坐标当成UV去采样贴图(由于我们只是需要类似一个面片一样的贴花,所以需要裁剪掉除0~1范围外的所有UV),达成贴花的效果。
正文
基础设置
RenderQueue
1"Queue" = "Transparent-499"
为了避免渲染顺序问题,把其渲染队列放到Transparent,并且在任何半透明物体之前渲染
...