自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

coffeecato的个人博客

思从深而行从简

  • 博客(131)
  • 资源 (1)
  • 收藏
  • 关注

原创 【Unity Shader】半透明特效在RenderTexture上的显示问题

0x00现象下图可见,模型的翅膀部分有黑色的矩形。游戏项目中,需要模型显示在UI上,这里采用了RenderTexture的方案,可以参考使用RenderTexture实现3D模型与UI的组合显示。RenderCamera Background(0,0,0,0)0x01寻找原因首先查看RenderTexture的绘制是否正常由于粒子特效常常会对alpha进...

2020-03-21 22:27:37 8575 8

原创 利用Animation Curve实现列表的曲线滚动

0x00 需求的诞生 在上一个版本的开发过程中,美术同事提出了按照《悬空城》的活动列表的形式制作列表的滚动。由于UGUI先有的scroll View 并不支持这种形式,只能自己动手了。 左侧的活动列表滚动是沿着曲线滚动的。0x01 问题的分析 难点有两个: 1.如何构造出列表的曲线,其实曲线就是其中的每个元素所在的x坐标不同,从纵向的角度看构成了一条连续的曲线。 2.何时刷新列表

2018-01-25 21:12:45 3590 8

翻译 Unity中Sprite和UI Image的区别

coffeecato写在前面: 本文确实不错,作者用以说明自动生成网格的示图非常具有代表性,从drawcall的生成过程分析性能开销的重点,引出了overdraw和达到GPU像素填充率限制的原因,从中也可以看出作者对这个主题的理解颇有深度。查看作者的个人自述,居然是个2012年毕业的小伙子,后生可畏啊!翻译本文对自己也是个考验。 英文水平捉急,如果错误请多多指正。原文:UNITY SPRITES

2017-11-14 23:41:58 24094 2

原创 Unity中的层级以及渲染顺序

0x00 写在前面 在使用unity3d开发游戏项目时,层级的问题往往伴随着UI的开发,而在引入了3D模型、粒子特效后,层级的问题就变得有些扑朔迷离了,甚至会牵扯到Unity的渲染顺序。本篇主要从UGUI的角度出发,浅析UGUI中影响层级的因素。后续会分析UI与3D对象,UI与粒子特效之间层级的关系。0x01 影响层级的因素 前提条件: - Camera-Clear Flags - Ca

2017-10-17 21:51:19 16714

原创 【Unity Shader实战】利用凹凸纹理和边缘光模拟全息投影的效果

0x00 序言 项目需要模型在展示时,可以拥有类似全息投影的效果,类似一些科幻电影或者是高科技的场景。本文分析了如何利用凹凸纹理和边缘光来近似模拟这种效果。 0x01 效果图 0x02 基本概念 本次的shader部分主要修改了surface shader,其中的一些基本概念:SurfaceOutput是预定义的输出结构:struct SurfaceOutput { half

2017-09-02 01:11:02 6071

原创 Lua中的三目运算符

0x00 三目运算 熟悉C/C++的老司机都知道三目运算a?b:c,这种写法替换简单的条件判断语句可以在不增加阅读难度的情况下,使代码尽量保持简洁。 int a, b, ret; //if-else if (a > b) ret = a; else ret = b; //三目运算符 ret = a > b ? a : b;

2017-08-25 01:20:06 16865 4

原创 Unity 反射从入门到跑偏(BoxProjection 到 Fake Interior)

前言:最近在学习反射相关的内容,从反射的原理到Cube Map的生成及使用,Reflection Probe的原理及使用,重点研究了Box Projection Reflection Probe与Fake Interior(假室内效果)的关系,及其背后的原理。运行环境:Unity 2020.3.18f1Render Pipeline: URP测试场景:Unity 3D Sample Scene(URP)环境映射 Environment Mapping环境映射可以分为静态的(Cube Map)与

2022-05-16 20:30:00 1679

原创 [Unity]屏幕空间(视口)坐标(viewport coordinate)的几种计算方法对比分析

前言:本本的主要目的在于对比分析几种计算屏幕空间坐标的方法,顺便梳理了一遍坐标在不同阶段的变换。其中特别对比了SV_Postion语义及TEXCOORD0传递参数的异同,同时分析了ComputeScreenPos这个怪异的函数的本质。运行环境:Unity 2019.4.10f1Graphics API: Direct3D11效果图:代码:本文的说明主要与代码相结合,下面的几种方法都亲测可用。// https://blog.csdn.net/coffeecato/.

2022-03-04 13:42:36 2160

原创 使用stencil test实现UI上的“迷雾”效果

0x00 需求在UI上实现一种类似战争迷雾的效果。0x01分析需求战争迷雾是来自于RTS游戏,[此处可以插入链接]并经由MOBA游戏发扬广大的一种在地图上增加一种不透明的迷雾,造成信息的不对称从而增加游戏的趣味性。那么第一个想法是寻找战争迷雾插件,导入,使用之。0x02实现方案对比从实现原理上分类,战争迷雾有两种实现方法:屏幕后处理, 遮罩擦除法屏幕后处理中,最成熟的当属Fog Of War,在Unity Asset Store中搜索,第一个跳出的就是这个插件,作者:Aseh

2021-10-26 09:59:34 981

原创 【Unity Shader】实现粒子根据到摄像机的距离渐变

0x00需求特效同学需要一个能随着距离摄像机距离变化,而变化(颜色)的特效需求。0x01分析需求

2021-06-15 20:14:11 1603 2

原创 Unity项目在pc和ios设备上黑屏的原因探究

0x00由于项目上线了windows平台的项目(别问我为什么,咱也不敢说,咱也不敢问),由Unity5.4.6升级到Unity2018的过程中,遇到了各种各样的坑,本文为避坑指南1。本项目没有使用HDR和抗锯齿,由于查这几个问题查到吐血,前后用了3天的时间,本文充满了怨气,行文非常啰嗦,需要快速解决问题的,可以直接拉到最后看结论。0x01 法线贴图项目在unity2018出了新的androi...

2019-11-27 09:01:21 5630 2

原创 Unity使用替换shader渲染(Rendering with Replaced Shaders)

作用:在渲染时,通过SetReplacementShader控制实时生效的shader,可以在运行时修改部分or全部object的shader来实现特定的效果。函数说明:Camera.SetReplacementShaderpublic void SetReplacementShader(Shader shader, string replacementTag);Descrip...

2019-07-08 10:06:41 3518 2

原创 Unity Shadow 如何实现超远的光源阴影

目的:如何实现超远的光源的阴影,最好可以兼顾近景与远景的阴影。(本文仅作为日常工作的调研记录)测试场景(只有一个平行光作为主光源):Shadow Distance = 50时,近景可以看到角色和树下的阴影,远处的山上没有阴影。Shadows的配置如下:查阅了官方资料与其他资料后,提出了两种方案:方法1:可以将近景的阴影与远景的阴影分开处理,通过动态设置Sha...

2019-05-29 19:17:01 5466

原创 【Unity Shader】标准光照模型总结

逐顶点与逐像素光照逐顶点光照[per-vertex lighting] [vertex shader]在每个顶点上计算光照,然后会在渲染图元内部进行线性插值,最后输出成像素颜色,由于顶点数目往往远小于像素数目,因此逐顶点光照的计算量往往要小于逐像素光照。逐像素光照[per-pixel lighting][fragment shader]以每个像素为基础,得到它的法线(可以是对顶点法线插值得...

2019-05-26 21:46:37 5955

原创 范型(Generics)学习笔记

0x01引言之前没有研究过C#中的泛型,最近在整理项目代码时发现了一些用法,这里做一个集合整理。0x02object(C# Reference)object是了解泛型绕不过的一个入口,泛型的接口的参数不少都与此相关。下面是翻译MSDN上对泛型的描述:object是.Net中对于Object的别名。在未定义的C#类型系统中,所有类型,预定义,用户定义,引用类型,值类型都是直...

2018-09-05 19:58:32 443

原创 UGUI drawcall 优化实录

写在前面去年参加uwa day 2017时,耳闻ui之于项目的影响,很多项目由于人少事多赶进度,而在开发中有很多粗放之处,ui就常常成为很多项目的性能短板。上个月项目上线,发现很多UI的性能堪忧,抽时间对于优化做了些优化。unity官方及其他很多渠道已经有很多关于ui优化的总结提纲,本文意在成为一本类似check list的手册,记录优化中碰到的实际问题。原理本文是基于UGUI的优化,先搞清楚几个...

2018-05-17 00:58:54 8433 3

转载 Unity3D Mesh小课堂(四)MeshRenderer的material和sharedMaterial

原文地址:Unity3D Mesh小课堂(四)MeshRenderer的material和sharedMaterialMeshRenderer(网格渲染器)从MeshFilter(网格过滤器)获得几何形状,并根据Mesh进行渲染,而渲染所需要的贴图信息就来自与Material。而MeshRenderer的Material类型的变量有两个:material和sharedMaterial。二者之间有什...

2018-05-07 08:23:26 3245

原创 Unity3d防止按键劫持导致无法响应点击事件

起因项目上线之后,接到一些玩家反馈,在登录界面点击没有响应,无法登陆的。小米,魅族等应用商店上的差评也大多集中于此:心里一万只草泥马在奔腾!!!排查问题首先,排查逻辑代码,找出是谁写的代码,大概会被拿去祭天吧!然而并没有,逻辑代码并没有问题。然后,搜索相关的信息,也没什么有用的信息,直到无意中在Unity论坛中看到这篇文章:https://forum.unity.com/threads/5-6-1...

2018-04-29 09:21:25 3168 2

转载 同一个Unity项目打开两个Unity Editor实例

coffeecato写在前面:      有时测试功能,需要多开unity3d进行,而unity3d无法同时打开同一个项目,找到了这个解决方案,亲测可用,方便简单,欢迎大家品尝! 在项目开发过程中,经常会遇到一个Unity项目需要打开两个Unity Editor实例的需求。而默认情况下一个项目只能打开一个Unity Editor。而最常见最暴力的方法就是一个项目copy两份,但这种做法对代码更新十

2018-04-24 15:42:49 9910 15

转载 GPU图形绘制管线

图形绘制管线的三个主要阶段##1、应用程序阶段:使用高级编程语言(C、C++、Java)进行开发,主要和CPU、内存打交道。诸如碰撞检测,空间八叉树更新,视锥裁剪等经典算法都在此阶段进行。在该阶段的末端,几何体数据(顶点坐标、法线量、纹理坐标、纹理等)通过数据总线传送到图形硬件。2、几何阶段:主要负责顶点坐标变换、光照、裁剪、投影以及屏幕隐射,该阶段基于GPU进行运算,在该阶段的末端得到了经过变换...

2018-03-08 14:37:51 609

原创 2017年度总结

2018年的1月都过去了,我的2017年总结才来,那么就切入正题吧,至姗姗来迟的年度总结:读书 因为遇到了京东读书,这一年从7月开始,读完了20本书,其中还包括三体和巨人的陨落这样的长篇。之前为了减少通勤的时间,租房子都在公司附近,每天上下班步行15min以内足矣。通勤的时间减少了,读书的时间却没有增加,闲下来都去看视频玩游戏了。现在租房子距离公司约25公里左右的路程,每天开车上下班大约需要

2018-02-03 21:23:00 595

转载 矩阵的前世今生

coffeecato写在前面:在游戏开发的过程中总会遇到矩阵相关的问题,而我自从大学《线性代数》蒙混过关之后,就很少再去了解这方面的东西。总对矩阵这东西讳莫如深,搞不懂,却躲不掉。今天在理解矩阵,矩阵背后的现实意义 发现了孟岩前辈于10年前写的文章,一口气读完,连我这种数学渣都能在大脑中对矩阵有了大概的认知。游戏开发,尤其涉及到图形学方面,很多时候不只是公式的堆砌,更多的时候需要理解公式背后的几何

2018-01-25 19:43:17 1046

原创 Lua中对table进行排序

0x00 table.sort lua的table中实现了table.sort()方法,可以对table进行排序。这种情况适用于直接以table存储的元素为依据进行的排序。local tbl = {1,2,4,5,3}function sortGT(a, b) return a > bendprint('before sort.')print_r(tbl)table.s

2018-01-20 23:41:54 16783 2

转载 天天写业务代码的程序员,怎么成为技术大牛,开始写技术代码?

天天写业务代码的程序员,怎么成为技术大牛,开始写技术代码? 转自知乎:(知乎ID:阿里云云栖社区)阿里云云栖社区,汇集阿里技术精粹,点此关注 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 作者:阿里云云栖社区链接:https://www.zhihu.com/question/39430220/answer/147663051来源:知乎著作权归作...

2018-01-10 16:44:11 955

转载 理解Unity3D中的四种坐标体系

coffeecato写在前面:本文比较了unity3d中的四种坐标系,在使用unity3d开发的过程中,已经多次被坐标转换之类的问题卡住,这篇文章可以说是系统的对四种坐标系进行了总结,结合实际的使用经验收获良多。

2018-01-02 11:11:35 4072 1

转载 编写高性能的Lua代码

coffeecato写在前面:很多tips都很实用,很容易应用到实际工作当中去。代码写的越多,堆积的技术债就越多,就越有冲动去发掘每一行代码背后的奥义,奈何惰性使然,不能洞悉每一行代码背后的深意,那么就站在前人的肩膀上,写更优美的代码吧!本文是Tim翻译的文章,感谢Tim,当然也感谢Roberto Ierusalimschy.

2017-12-07 10:25:05 446

转载 【Unity3D问题之EnhanceScollView选择角色3D循环滚动效果实现】

需求呈现3D效果(2D素材)选择角色效果滚动保证层级,缩放比例,间距正常跟随循环滚动这个界面需求一般也会有游戏会采用(貌似有挺多)如何实现实现技术关键点如何控制每个Item之间的间隔(位置),缩放比例,差值平滑如何实现item层级关系正确显示("离" 屏幕近的层级高)如何实现循环滚动下面一一讲述当前Demo采用的方法说到实现的核心,需要知道Unity3D中提供的一个叫

2017-11-21 13:54:14 2075

转载 【Unity Shader入门练习】Bloom效果

0x00 序言 本节是在 高斯模糊的基础上进行的,稍加修改即可得到Bloom效果。 0x01 效果图 0x02 基本概念 首先根据一个阈值提取出图像中较亮的区域,把它们存储在一张渲染纹理中,再利用高斯模糊对这张渲染纹理进行模糊处理,模拟光线扩散的效果,最后再将其和原图像进行混合,得到最终的结果。 0x03 脚本代码using System.Collections;using Syst

2017-11-13 23:47:09 1249

转载 深入理解NGUI(Unity)显示特效的问题

原文地址:深入理解NGUI(Unity)显示特效的问题粒子特效显示差异引出问题游戏开发时常会需要在UI里显示一个特效,我们将特效在UI里显示出来后,发现效果不符合预期。该特效在普通3D场景下,效果如下:图1但在UI里效果偏差比较大:图2该特效是由多个粒子器组合而成。对于显示差异,我们对比了其中一个粒子器在渲染时的Mesh细节:图3如上图左边是正确效果,右边是UI中错误效果。原本怀疑粒子系统的运动坐

2017-11-10 15:03:51 2926

原创 程序员读《三体》后看到了什么?

读完《三体》后感悟良多,仿佛思绪被带入了几百光年外的宇宙中,流连忘返,不忍返航。不得不说《三体》虽是小说,但远超小说的范畴,书中对于科幻和宇宙的思考颇有深度,其中描述“人肉计算机”的部分让我这个程序员都惊叹弗如,反复读了好几遍。很多当下刚刚取得进展的技术被刘慈欣写入书中像是量子通信,引力波等,很容易把人带入到书中描绘的未来世界而不会觉得突兀。新技术VS旧技术 即使新技术在当下看来是无用的,荒谬的,

2017-11-05 16:42:23 2147

转载 无压应对信息过载

coffeecato写在前面:随着互联网时代的发展,信息爆炸到无以复加,每个人都变成了海量数据处理的机器,如何处理这些信息,如何应对这种状况今年来一直困扰着我,今天看到Gu Lu的一篇文章,弥补了之前看过的《暗时间》《与时间做朋友》两书一些观点落实到行动之间的空隙。每天处理不完想看的东西,心好累,也会越来越焦虑,这篇文章分享的一些小技巧真的是非常实用!原文地址:无压应对信息过载 - 2016 效率

2017-10-27 15:26:31 874

转载 LUA简明教程

原文地址:LUA简明教程文章来自:酷 壳 – CoolShellcoffeecato写在前面:最近在学习Lua,看了陈浩大侠的文章还是觉得收益良多,重要的知识点都有提炼出来并加以简单的栗子。本文做一份简明的回顾是一篇很好的材料。只可惜对于Javascript不甚了解,陈浩大侠在文中类比Javascript之处无法感同身受。

2017-09-14 18:34:34 597

原创 Lua爬坑手记

0x00 爬坑说明书 最近编写游戏的客户端逻辑,部分以Lua为主,介于使用的Lua的经验尚浅,也就边写边看《Lua程序设计》。书中有些知识点真的是过目即忘,发现Lua还是有一些坑,下面权当作是Lua的爬坑笔记。0x01 Lua的类型 最近一次在处理UGUI中ScrollView控件动态生成的对象时,利用动态生成的对象后缀来作为后续计算的索引。代码类似:function ConvertGameOb

2017-09-12 21:33:52 888

原创 【程序员的碎碎念】越碎片越焦虑

现如今人人都在使用手机,不知不觉间本该提供便利的手机,却将我们的时间分割的支离破碎。碎片化大行其道,利用等公车、上厕所的时间看篇文章,打局游戏本也无可厚非,毕竟这样的碎片时间也做不了什么。然而工作当中,本该连续专注的大块时间也会被短信,电话,app的推送打断,连续的时间也都“被迫”变成了碎片时间。一开始可能会觉得利用工作的“间隙”看了条信息并不耽误工作,久而久之,随着消息越来越多,“看一条消息又不会

2017-09-12 13:39:44 637

原创 【程序员的碎碎念】兴趣?选择:坚持

看了很多东西,不经过大脑始终是别人的,输入的东西多了,就想找个地方输出了。上个月让我印象最深刻的是读了scalers的新书《刻意学习》,其中全面而深入的分析了如何持续不断的坚持做一件事情,简单点看,就是量变到质变的过程。得知9月2日scalers会在上海举行一场线下分享会,没有犹豫就去报了名。scalers在他的书中多次提到了李笑来老师对他的影响,在李笑来老师的影响下,“终于我也拿起了笔”。从这里开

2017-09-06 23:17:25 631

原创 Unity Shader入门基础

0x00 基本概念 “Shader(着色器)实际上就是一小段程序,它负责将输入的Mesh(网格)以指定的方式和输入的贴图或者颜色等组合作用,然后输出。绘图单元可以依据这个输出来将图像绘制到屏幕上。输入的贴图或者颜色等,加上对应的Shader,以及对Shader的特定的参数设置,将这些内容(Shader及输入参数)打包存储在一起,得到的就是一个Material(材质)。之后,我们便可以将材质赋予合适

2017-09-03 23:12:07 622

转载 Unity Shader-渲染队列,ZTest,ZWrite,Early-Z

原文地址:Unity Shader-渲染队列,ZTest,ZWrite,Early-Z简介在渲染阶段,引擎所做的工作是把所有场景中的对象按照一定的策略(顺序)进行渲染。最早的是画家算法,顾名思义,就是像画家画画一样,先画后面的物体,如果前面还有物体,那么就用前面的物体把物体覆盖掉,不过这种方式由于排序是针对物体来排序的,而物体之间也可能有重叠,所以效果并不好。所以目前更加常用的方式是z-buffe

2017-08-31 23:43:35 3423 9

转载 【Unity Shader入门练习】高斯模糊

0x00 序言 本文是《Unity Shader入门精要》读书笔记,最近接触到项目中用到了模糊处理,经过查阅资料,发觉模糊处理是屏幕后处理技术中的一种,就从屏幕后处理技术开始学习。[使用的Unity版本:5.6.1f1] 0x01 效果图 0x02 基本概念 卷积(convolution)操作指的是使用一个卷积核(kernal)对一张图像中的每个像素进行一系列操作。卷积核通常是一个四方

2017-08-27 23:59:52 1368

原创 【学习Lua】ipairs函数和pairs函数之间有什么区别?

变长参数(variable number of arguments) Lua函数中传递参数可以使用(…)来表示不确定数量的参数。一个函数要访问变长参数,需要借由{…}形式来访问,此时变长参数被转化为了一个数组。function add(...) local s = 0 for i,v in ipairs{...} do s = s + v end

2017-08-21 20:24:11 3876

原创 【学习Lua】函数的多重返回值

调用Lua函数时提供的实参数量可以与形参数量不同。Lua会自动调整实参的数量,以匹配参数表的要求。“若实参多余形参,则舍弃多余的实参;若实参不足,则多余的形参初始化为nil”。栗子:function f(a, b) return a,b endlocal a,b = f(3) print(a,b) -- 3 nila,b = f(3,4)print

2017-08-16 23:43:41 1937

Visual Studio 2013 Tools for Unity

Visual Studio 2013 Tools for Unity

2016-11-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除