随笔分类 -  Unity

渲染、寻路算法
<Shader模块化>0.ShaderVariant和multi_compile编译Shader的多个版本
摘要:一ShaderVarian的使用 1. 首先在CGPROGRAM 下 申明 需要多版本编译的 几个版本的key,Material同一时刻只能对应它所使用的Shader的一个variant。 #pragma multi_compile A B 如果C#代码没指定,Unity会默认使用 A这个编译版本。 阅读全文

posted @ 2018-08-28 00:17 百无禁忌 阅读(557) 评论(0) 推荐(0)

《Unity Shader/AR》反畸变,解决shader中无法传入大量数组的问题
摘要:1. 事情起因是这样的。 在制作AR的底层SDK时,需要跟硬件适配反畸变。 由于曲面光学模型,不好用简单的公式描述畸变。 所以决定把uv畸变来实现。 2. 为了效率最高,决定直接写入屏幕缓冲。 3.在摄像机后效里,无法传入大量数组,所以将数据转为texture,然后shader中对它采样,再分解为可 阅读全文

posted @ 2018-07-06 15:22 百无禁忌 阅读(788) 评论(0) 推荐(0)

《渲染管线研究》:1.渲染管线示意图
摘要:一、 3D图形渲染(Rendering) 渲染:就是将三维物体或三维场景的描述转化为一幅二维图像,生成的二维图像能很好的反应三维物体或三维场景。过程:几何变换、光栅化、着色。 顶点渲染单元(Vertex Shader):根据描述3D图形外观的三角形顶点数据确定3D图形的形状及位置关系; 作几何变换、 阅读全文

posted @ 2018-06-11 02:39 百无禁忌 阅读(1295) 评论(0) 推荐(0)

Unity的极致内存优化
摘要:之前做了一个moba游戏,需要对项目做极致的内存优化。 我们知道,AssetBundle有Unload(true) 和Unload(false)两种做法。 一些常规做法就不说了, 比如统计资源的出生死亡频率/时常,来设置资源的回收频率。 比如,决定资源缓存到哪个级别:实例、预制体、主AssetBun 阅读全文

posted @ 2018-05-12 01:29 百无禁忌 阅读(274) 评论(0) 推荐(0)

Unity游戏移植:tolua适配Webgl平台
摘要:近期公司的Unity项目为了兼容多端: 安卓/IOS、windows/mac、浏览器。 其中tolua是不兼容webgl。 花了三天时间跑起来。 步骤: 1.替换tolua虚拟机为lua5.1 2.修改部分tolua不兼容代码 3.修改回调为_internal #if !UNITY_EDITOR & 阅读全文

posted @ 2018-04-14 14:49 百无禁忌 阅读(1932) 评论(2) 推荐(0)

LightProbe的本质
摘要:我们渲染,简单不严谨的分类的话:性能消耗: 像素着色》顶点着色。 动态渲染》静态光照贴图的UV查询(包括天空盒这类反射贴图查询) 而LightProbe本质上是 更简化版的动态顶点着色。 只是包含了极少的光线,然后用这些光线做顶点着色,也可能是平面着色,看Unity的内部实现了。 阅读全文

posted @ 2018-04-10 00:55 百无禁忌 阅读(240) 评论(0) 推荐(0)

软件渲染器之 阴影计算
摘要:只是记录下思路: 1.在产生灯光的地方虚拟一个阴影摄像机 2.其实跟遮挡剔除一样,生成阴影摄像机的深度图 3.根据深度图判断是否产生阴影 4.(如果该像素能过主摄像机的各种测试)根据阴影颜色混合当前颜色。 注意点: 阴影的深度图要在主摄像机的背面顶点剔除、CVV裁剪之前才准确。 阅读全文

posted @ 2018-03-07 02:43 百无禁忌 阅读(343) 评论(0) 推荐(0)

【系统学习Shader与后处理】第一篇:Shader分类
摘要:shader和后处理,也许算很多公司对资深U3D程序员的要求。 入坑shader几年了,shader的语法其实很少很简单,但是shader可以实现的效果实在太多,可以说是无穷的,靠记忆每种效果的shader原理实际上是不可能的。 在几年的shader学习过程中,我尝试总结一些规律,shader的常用 阅读全文

posted @ 2018-01-26 17:16 百无禁忌 阅读(805) 评论(0) 推荐(0)

【ARPG/MOBA类游戏游戏系列】技能系统设计
摘要:其实技能系统有很多种设计方式,暂且列出一种以前项目的设计。 目标: 1.使用尽可能少的类,实现游戏里所有种类的技能。 2.满足打击感的可调节性、可配置性。 3.能基本满足绝大部分角色扮演类游戏(比如ARPG、卡牌、Moba、ACT等),更换项目只需要对代码做微调。 ACT类,连击技能需要在技能类调用 阅读全文

posted @ 2017-12-06 23:35 百无禁忌 阅读(4785) 评论(0) 推荐(0)

Unity游戏的局域网对战功能实现
摘要:之前项目实现了局域网对战,看见群里有人问,献丑分享下。 这个局域网对战功能,在PC/web/移动端上实现是一样的,可以通用。 要实现一个游戏的局域网功能,主要实现以下三个功能点: 1.客户端能建立主机服务。 2.其他客户端能自动搜索到该主机 3.其他客户端主动加入该主机。 1. 建立主机服务, 很简 阅读全文

posted @ 2017-12-06 23:34 百无禁忌 阅读(7697) 评论(0) 推荐(0)

《寻路算法第二篇》A*寻路的路径平滑、静态合并、生成格子工具自动化、
摘要:这些都是我之前写在蛮牛上的帖子,现在放到博客里来 之前写了一个A*算法和navmesh算法的混合使用,以及前端使用navmesh,后端使用A*验证的思路。http://www.manew.com/thread-42766-1-1.html 这几种扩展其实是依赖关系。以下内容皆是原创,没有在网络上见过 阅读全文

posted @ 2017-12-06 23:27 百无禁忌 阅读(5565) 评论(0) 推荐(0)

(转)A*算法实现寻路
摘要:搜索区域 假设有人想从A点移动到一墙之隔的B点,如下图,绿色的是起点A,红色是终点B,蓝色方块是中间的墙。 开始搜索 在A*寻路算法中,我们通过从点A开始,检查相邻方格的方式,向外扩展直到找到目标。 1,从点A开始,并且把它作为待处理点存入一个“开启列表”。 2,寻找起点周围所有可到达的方格,跳过墙 阅读全文

posted @ 2013-06-11 21:22 百无禁忌 阅读(627) 评论(0) 推荐(0)

游戏开发之AI的编写
摘要:关于AI(人工智能)的编写,其实主要是将AI行为分类,然后根据不同情况对不同的AI 实体进行初始化。AI行为通过map来管理。在对AI进行初始化后,那么单独用一个线程去跑所有AI,对每一个AI实体保持无限循环的状态(比如巡逻),直到它死亡。 总的来说,就是使用状态机。不同的状态将导致怪物不同的行为。 当有玩家 或者其他怪物进入视野后,需要广播坐标等信息给AI实体,调用AI的状态机入口,让AI实体去判断是否在攻击范围,是否攻击等等。 关于仇恨,当然使用队列来控制。 为了让AI更智能,需要一些概率事件,比如巡逻的范围指定最大和最小坐标,然后每次随机出一个两者之间的范围来巡逻。 再更进一步,BOO. 阅读全文

posted @ 2013-06-04 00:27 百无禁忌 阅读(674) 评论(0) 推荐(0)

导航