自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王王王渣渣的博客

技术渣渣的一些知识记录,喜欢的朋友点个赞支持下再走,嘿嘿

  • 博客(118)
  • 资源 (2)
  • 收藏
  • 关注

原创 Unity中ComputeShader入门

前言ComputeShader是如今比较流行的一种技术,例如之前的《天刀手游》,还有最近大火的《永劫无间》,在分享技术的时候都有提到它。本着不学习就可能失业的压力,就来学一下,虽然好像已经晚了好几年了=。=。Unity官方对ComputeShader的介绍如下:https://docs.unity3d.com/Manual/class-ComputeShader.htmlComputeShader和其他Shader一样是运行在GPU上的,但是它是独立于渲染管线之外的。我们可以利用它实现大量且

2021-04-30 16:45:54 3308 5

原创 贝塞尔曲线(Bezier Curve)

曲线和曲面在生活中存在着各种各样光滑的曲线或曲面,例如汽车的表面,钢珠球等。在建模的时候,我们通常使用很多的小三角形来逼近这样的曲面,因此放大了看,就会发现这些面其实是凹凸不平的。但是实际生活中,例如我身边的杯子,无论怎么看它都是一个光滑的表面。那么我们应该怎么表达这些光滑的曲线或曲面呢?我们先从曲线入手,看看它的几种表达方式。曲线的显示表达学过函数我们知道,画出来的图其实就是一条曲线,如下:二维空间中,曲线的显示表示是以自变量来表达因变量的值,例如在xy空间中,可...

2021-04-21 16:29:48 15371 7

原创 Shader中使用距离函数(Distance Function)绘制二维图形

https://blog.csdn.net/lanchunhui/article/details/50887417https://blog.csdn.net/qq_41368247/article/details/106194092https://blog.csdn.net/xiaowo123456/article/details/89204203https://zhuanlan.zhihu.com/p/345227118https://zhuanlan.zhihu....

2021-04-16 17:55:18 4481 3

原创 图形学基础知识:着色(三)Rendering Pipeline与Shader

管线(Pipeline)什么是管线?管线我们可以理解为流水线,流水线大家都懂,就是工厂里面生产东西的一整套流程。例如饮料厂要生产饮料,需要洗瓶子,倒饮料,加盖,包装等等,这一整套过程就是流水线。那么我们要把一个三维场景渲染成一幅二维的图像,同样需要一个先干嘛再干嘛然后干嘛最后干嘛的过程,这个过程或流水线,我们就称之为管线。实时渲染管线(Real-time Rendering Pipeline)通过前面几篇的学习,我们知道了要把一个三维场景渲染成一幅二维的图像大致分为以下几个步骤:M.

2021-04-14 16:17:02 1829

原创 图形学基础知识:着色(二)纹理映射

但是!有一种投影不行,就是透视投影,依旧是上面的三角形的边BC,我们来看看透视投影会发生什么,如下图:很明显我们就可以看出来,此时 D' 不再是 B' 和 C' 的中心点。当然了,数学不能光用眼睛看,我们需要推导为了方便计算,我们设O点为原点,O到投影屏幕的距离为 l (如上图所示),根据相似三角形可以得到:,即:。同理可得,由于D是BC的中心点,根据直线的重心坐标我们可以知道,,带入可得:,而投影后B'C'的中点的y值应该是,可以发现和 并不相等。emmm,好像直接看点D的重...

2021-04-11 23:39:13 2764 4

原创 图形学基础知识:重心坐标(Barycentric Coordinates)

前言在前面的文章中我们经常提到知道某个三角形三个顶点的属性,然后就可以求出三角形内部某一点对应的属性。例如深度缓存的时候,高洛德着色的时候等等,但是我们一直没有说具体应该如何计算,本文就来介绍一下这一部分内容。想要计算三角形内部某一点对应的属性,也就是我们一直说的三角形的插值,就需要用到重心坐标的概念。直线的重心坐标在讲三角形的重心坐标前,我们先来看一看直线上的重心坐标是怎么定义的。在生活中想必大家都看过或挑过担子吧,人们在担子两边挂上重物,然后用肩膀扛起担子。如果担子两边的物体差.

2021-04-01 18:13:07 15419 1

原创 图形学基础知识:着色(一)Blinn-Phong反射模型与着色频率

前言在前面的学习中,我们知道可以把拍摄的物体通过MVP变换和视图变换变到和屏幕一样的大小。然后我们把拍摄的物体看作是一个个小三角形组成的表面,屏幕则是由一个个固定大小的像素组成,这样我们就可以通过光栅化来...

2021-03-30 18:30:46 1827 1

原创 图形学基础知识:走样和反走样,频域和滤波

前言在上一篇的文章中,我们做了光栅化的操作,但是会发现做完后会有很严重的锯齿,因此为了画面效果,我们需要对其进行优化,也就是抗锯齿。这块内容比较难懂,可能自己在文章中也不会总结的很好(emmm,都怪自己当初没好好读书),所以还是建议跟我一样不懂的同学自己看一下原视频:GAMES101-现代计算机图形学入门-闫令琪-P6Sampling Artifacts(瑕疵)in Computer Graphics在上一篇中,我们使用了采样的方法来进行光栅化,摩尔纹(Moire),去掉奇数行和奇.

2021-03-09 19:00:06 6495 6

原创 图形学基础知识:光栅化和采样

在前面的学习中,我们已经可以通过MVP变换,把摄像机观测的物体都压缩成了一个标准立方体,接下来我们要做的是把这个标准立方体绘制到屏幕(Screen)上何为屏幕?一个二维数组,每个元素称之为像素(pixel,picture element的缩写),例如我们常说的屏幕分辨率1920*1080,就是说有这么些个像素。屏幕是一个典型的光栅成像设备。光栅(Raster)在德语中就是屏幕的意思,光栅化(Rasterize,名变动)就是把东西画在屏幕上。像素,最小单位,像素内的颜色可以用rgba来定义,一

2021-03-03 17:39:54 2317 1

原创 图形学知识基础:视图变换和投影变换及其对应矩阵(右手坐标系)

视图变换View/Camera transformation投影变换Projection transformationOrthographic projectionPerspective projection

2021-02-24 19:00:40 4401 6

原创 图形学知识基础:三维变换,旋转(欧拉角旋转与万向锁,绕任意轴旋转,四元数)

三维变换与上一篇文章中的二维变换类似,我们可以使用一个 3*3 的矩阵来表示一个三维的线性变换:并且矩阵的,和即为变化后的值,,和即为变化后的值,,和即为变化后的值。仿射变换的公式为:同样的,我们可以通过引入齐次坐标来表示仿射变换,公式为:例如缩放s倍的矩阵为:旋转变换相比其他变换,旋转变换相对的要复杂一些。...

2021-01-29 17:34:06 5959 4

原创 图形学知识基础:变换与矩阵的关系,齐次坐标

缩放矩阵缩放该对角阵称为缩放矩阵对称切变选择齐次坐标平移变换向量平移不变性两个点的中点

2021-01-20 18:30:00 3106 1

原创 图形学知识基础:矩阵

概念由个数排成的m行n列的数表称为m行n列的矩阵,简称矩阵。记作:这个数称为矩阵A的元素,简称为元,数位于矩阵A的第i行第j列,称为矩阵A的 (i, j) 元。元素是实数的矩阵称为实矩阵,元素是复数的矩阵称为复矩阵。而行数与列数都等于n的矩阵称为n阶矩阵或n阶方阵。基本运算加法...

2021-01-15 16:48:35 1623

原创 【腾讯开发者大会】天刀手游开发历程(笔记)

【腾讯开发者大会】天刀手游开发历程(笔记)链接:https://gameinstitute.qq.com/tgdc/2020/画质,帧率,功耗(pc可以不考虑),三者协调,互相不断的优化协调。使用各种技术栈,来获得更好的优化效果对多线程渲染引擎,进行优化,把大部分可以并行的工作,比如动画、布料,放到其他的线程去运行。使用ISPC,来自动生成NeonSIMD的代码,这部分代码可以更好地提升CPU的执行效率。在GPU和CPU的遮挡剔除中,使用不同粒度的遮挡剔除算法,首..

2021-01-07 14:10:37 4047 5

原创 C#中使用Regex类来实现正则表达式

https://docs.microsoft.com/zh-cn/dotnet/api/system.text.regularexpressions.regex?view=net-5.0https://www.runoob.com/csharp/csharp-regular-expressions.html

2020-12-25 18:17:32 2439

原创 Jetbrain Rider的一些相关设置

主要记录一些Jetbrain Rider一些设置,使开发者使用起来可以更加符合自己的习惯。个人目前的版本是2019.3.2,因为设置里也有搜索功能,大部分设置我们可以自行搜索关键字来找到。每行长度多少时,自动换行(脚本页面的一条小竖线,超过该线会被换行)前者设置自动换行的最大列数,后者开关表示是否开启自动换行。...

2020-12-11 16:14:19 16499 6

原创 正则表达式介绍

前言在日常的开发中,我们常常需要对一些字符串进行验证,例如验证玩家创角的密码是否包含字母、数字、特殊符号,输入的手机号、身份证号码是否正确等等。如果利用遍历字符串的每个字符,来判断是否符合我们想要的条件话,可能需要写一长串繁琐的逻辑代码。但是若使用正则表达式则可以很简单的通过一串特殊定义的字符串来实现我们对字符串的逻辑判断。...

2020-11-27 14:33:23 567 1

原创 Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)

22

2020-10-22 18:10:42 8926 3

原创 Cinemachine(三)自动选择/切换最适合的摄像头(Cinemachine Clear Shot Camera)

在很多的解谜类游戏中,

2020-10-15 16:45:07 3280 7

原创 Cinemachine(二)制作不会穿墙(会避开障碍物)的摄像头(Cinemachine Collider)

在许多的第三人称游戏中,我们的摄像机往往保持着一定的偏移,跟随着我们的角色。但是常常会出现的一种情况就是,当我们的角色走进室内或者靠近墙边或障碍物的时候,如果这个偏移保持不变的话,我们的摄像机就可能会跑到墙体里,或者看向角色时被墙体或障碍物所挡住。因此这种情况下我们的相机往往需要一些特殊的处理,例如修改偏移量来拉近相机与角色的距离等,来防止上述情况的出现。在以往我们可能需要通过射线检测或者碰撞检测等,然后编写一大堆的代码做一堆复杂的判断来修改我们的摄像机的位置。视频链接:https://www.bi

2020-10-13 14:12:49 7954 7

原创 Cinemachine(一)VirtualCamera和Brain的简单介绍

https://zhuanlan.zhihu.com/p/103584975简介Cinemachine是Unity在2017版本推出的一套处理Camera的组件。利用Cinemachine我们可以不通过敲代码就实现很多摄像机功能,例如目标跟随,镜头切换等等。官方文档:https://docs.unity3d.com/Packages/[email protected]/manual/index.html我们可以通过Package Manager来安装C...

2020-09-30 18:26:40 11889 4

原创 Unity内存管理

https://www.bilibili.com/video/BV1aJ411t7N6https://www.bilibili.com/read/cv3260881?spm_id_from=333.788.b_636f6d6d656e74.38

2020-09-17 17:37:18 2994

原创 Unity性能优化技巧

Profiler堆栈(Stack)和堆积(Heap)堆栈是内存中存储函数区域变量的地方,还有函数收到的参数与函数本身。不会遇到碎片化的问题,或是垃圾收集的问题。但是可能会碰见堆栈溢出的问题,比如调用了太多的函数导致一直push东西进堆栈,占据越来越多的内存空间,导致堆栈溢出。堆积是内存中另一个区域,要比堆栈大。我们将所有的类别、实体和对象(引用类型)存放在这。通常我们每创建一个新的对象,会在堆积中找到下个空的位置。我们销毁对象后,内存空间不会马上释放出来,而是标记成未使用,之后垃圾收集.

2020-09-11 17:57:46 4334 1

原创 UGUI 自定义滚动选择列表 ListView

列表在游戏的UI中是非常常见的,例如选服页面,商城页面,奖励页面等等都会有列表的存在。文中我们将这些列表称为ListView(类似于fgui的GList),而列表中的每项称作Item。首先我们来分析下,我们的ListView需要实现哪些功能,以及如何实现功能 解决思路 可以通过滑动来显示ListView中的Item 可以使用UGUI的ScrollView(ScrollRect)来实现,Item放在Content当中 ListView中的Item可以是单选或者多选 UGUI的

2020-09-08 16:54:37 2827

原创 PureMVC

官网:http://puremvc.org/下载:https://github.com/PureMVC/puremvc-csharp-standard-framework(注意官网点击C#按钮跳转的是multicore版本,这个版本用的是.netcore的库,导入unity编译会报错,因为有很多API不一样,例如Lazy等)参考文章:PureMVC框架在Unity中的应用(一)PureMVC框架在Unity中的应用(二)Model 与 ProxyModel 保存对 Pr...

2020-08-20 09:50:09 4226 2

原创 Unity Graphic功能,实现UGUI上三角形,四边形,圆环的绘制

前言

2020-08-12 14:48:43 4965

原创 图形学知识基础:向量

向量指具有大小和方向的量,一般记做:a ,,,同时也可以用数对的形式表示,例如:,向量的矩阵表示: 向量的大小,也就是向量的长度(一般称作为 模),向量a的模记为:,若,则单位向量:即模为1的向量零向量:即模为0的向量,零向量的方向是任意的...

2020-08-04 15:36:30 2298

原创 ECS的简单入门(六):传统GameObject模式转换到ECS模式

参考文章:https://zhuanlan.zhihu.com/p/109943463在前面的介绍中,我们都是通过代码来实现物体在场景中的显示,例如我们要显示一个Cube,通过创建Entity,添加RenderMesh等Component,设置相应的Material和Mesh值即可。这样就会产生一个新的问题,...

2020-07-22 18:27:00 4124 1

原创 ECS的简单入门(五):Entity Command Buffer

Entity Command Buffer (ECB)在前面的例子中,我们都是通过EntityManager来创建或销毁Entity,或者给Entity添加删除Component。但是在实际的情况中,我们可能需要在System中来做这些操作,比如一个Entity有一个存活时长的属性,我们会用一个System来计算已存活的时间,当时间到了后销毁该Entity。根据前面的知识,我们需要一个Component来存储这个存活时长的属性,例如:struct Lifetime : IComponentDa

2020-07-16 16:08:22 2787

原创 ECS的简单入门(四):System

概念

2020-07-10 17:17:14 3189 1

原创 ECS的简单入门(三):Component

通过上一篇文章我们已经大致了解了ECS的整体概念,这篇文章我们就先来深入的了解下Component。

2020-07-06 17:04:00 3759 5

原创 ECS的简单入门(二):Entity

介绍完ECS的大致理念之后,我们接着单独来了解下Entity,Component和System的概念以及使用,首先我们先从Entity开始入手。Entity概念我们来看下Entity的组成,代码如下,只有Index和Version两个字段。public struct Entity{ /// <summary> /// The ID of an entity. /// </summary> public int Index; .

2020-07-02 11:24:05 2739 2

原创 Unity C# Job System

首先在学习ECS之前,我们先来了解了解ECS所依赖的Job System,这样方便我们可以更轻松的读懂ECS的一些代码。简介利用Job System,我们可以编写简单并且安全的多线程代码,来提高游戏性能。官方文档:https://docs.unity3d.com/Manual/JobSystem.htmlNativeContainer在Job System中我们会使用到一种新的类型NativeContainer。它是一种托管值类型,为本机内存提供了一个相对安全的 C# 封装器..

2020-06-29 18:48:52 2334 2

原创 ECS的简单入门(一):概念

引言首先我们先来看一个神奇现象,在下图中,我们可以看见场景中创建了多个Cube,然而在我们的Hierarchy面板中却没有这些Cube对应的信息,同时在Scene面板中也无法选中这些Cube。那么,这些Cube是哪来的呢?接下来要介绍的ECS会为我们揭晓答案。ECS官方文档:https://docs.unity3d.com/Packages/[email protected]/manual/ecs_core.html当前版本:Unity2019.3.0,需要在Pack.

2020-06-19 18:23:56 14149 3

原创 URP 渲染顺序设置 RenderObjects

如下图,URP默认Shader的设置中,已经没有了以往的Render Queue的设置。 那么我们要如何来控制渲染顺序呢?我们先简单的搭建一个测试场景,在场景中创建两个Cube,使其位置重叠,将其中一个命名为RedCube。然后新建一个默认的Material(即shader为URP/Lit),设置Base Map的颜色为红色,将该material挂到RedCube上即可。如上图,按照默认的渲染顺序我们只能看见灰色的方块。Priority属性在Material中有一个名为...

2020-05-18 10:43:00 7190 1

原创 Playable API:定制你的动画系统 简单使用

https://connect.unity.com/p/playable-api-ding-zhi-ni-de-dong-hua-xi-tonghttps://github.com/Unity-Technologies/SimpleAnimation/wiki

2020-04-27 19:19:26 8314 3

原创 SRP Batcher,Draw Call优化,Shader SRP Batcher compatible

当我们使用SRP(Scriptable Render Pipeline)之后,例如HDRP,URP或者LWRP,在SPR的asset文件中有一个选项叫做SRP Batcher(如图)。这篇文章就让我们来了解了解这个好东西。作用简单的说,如果当你的场景中有很多的物体分别使用到了不同的Material,但是这些Material使用的Shader却都是同一个时,SRP Batche...

2020-04-15 14:45:40 6236 1

原创 Shader Graph学习(二)

https://www.bilibili.com/video/BV1Db411e7Ag

2020-04-10 18:20:56 4022

原创 Shader Graph学习(一)

前言在Unity2018.1之后新增了Shader Graph功能。(emmm,现在都2020了,只怪自己平时关注新知识太少了)Shader Graph可以在一个可视化的面板中完成shader功能的实现,一句代码都不需要写,大大降低了shader的开发难度。官方文档:https://docs.unity3d.com/Packages/[email protected]/ma...

2020-04-09 19:20:09 18595 3

原创 Spine学习

最近学习了一下Spine在Unity里的应用,利用SpineDemo里的资源结合其内容简单的做了两个测试场景(见下图)。工程的github地址为:https://github.com/luckyWjr/SpineTest,有兴趣的小伙伴可以一起学习学习。介绍个人的环境是:Unity2019.3.0 和 spine-unity 3.8,同时在例子中还使用到了Input System...

2020-04-02 18:36:54 2868 2

Anti-Cheat Toolkit 1.6.7.unitypackage

Anti-Cheat Toolkit 反作弊工具包 https://assetstore.unity.com/packages/tools/utilities/anti-cheat-toolkit-10395

2019-06-20

unity读取excel文件的dll Excel.dll ICSharpCode.SharpZipLib System.Data

unity读取excel文件所需要的dll文件。unity读取excel文件所需要的dll文件。unity读取excel文件所需要的dll文件。

2018-04-19

空空如也

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

TA关注的人

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