自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 资源 (2)
  • 收藏
  • 关注

原创 Tiled初入门

Tiled的基本用法简单介绍。

2023-09-18 11:55:28 761

原创 育碧GDC2018程序化大世界生成 孤岛惊魂5

育碧GDC2018——程序化大世界生成 孤岛惊魂5

2023-03-14 18:26:24 821

原创 记录RWTexture在安卓真机上失效问题

在Unity ComputeShader中使用RWTexture时,计算中同读同写,且有乘法等计算。在不同的OpenGL版本上失效,在安卓真机上失效。

2023-02-20 10:41:39 469

原创 法线贴图及其用法详解

法线贴图一般用于计算光照。可以表现更多的细节。法线贴图:一般根据高多边形模型或者高度图生成。一、法线详解法线图的存储一般分为在切线空间和模型空间。 切线空间 模型空间 法线贴图存的是:模型顶点在切线空间下的法线方向。也就是说Z轴是顶点法线方向。x是顶点的切线方向,Y是副切线方向。这里可...

2022-05-26 14:24:06 4509 2

原创 09 Shading(Texture Mapping cont)

一、重心坐标 因为很多值都是在顶点计算,所以在三角形内部需要插值。eg:UV,法线... 为了平滑的过度,就引入了重心坐标。AA,AB,AC是面积。三角形内部任意点的算法。因为是重心,所以重心把三角形分成了3个等面积的三角形。就是下面:二、纹理映射 使用UV采样纹理。2.1.纹理被拉大纹理分辨率少于显示器分辨率。 简单的采样 双线性插值 三次插值(取周围...

2022-05-11 15:52:43 136

原创 08 Shading(Shading Pipeline and Texture Mapping)

一、高光用R(反射方向)和V点乘就是Phong。半角向量好算。P指数的效果:二、环境光环境光是常数三、着色频率逐三角形:逐顶点:逐像素:Phong Shading如果模型足够复杂,简单的着色亦可以达到不错的效果。四、法线 法线就是始终垂直于某个平面的线。 4.1.逐顶点法线的求法: 每个顶点所相邻的面的所有法线加权平均。 4.2 逐像素的法线:...

2022-05-11 15:51:36 101

原创 07 shading(Illumination,shading and Graphics Pipeline)着色(光照,着色,图形管线)

一、Z-Buffer注意:ZBuffer是不能处理透明物体的。二、着色 引入明暗和颜色的不同。(材质)2.1光照 光线与物体表面法线的夹角决定了这个物体有多亮。光也是能量,也和面积有关(但是这里都讨论的是单位面积下)夏天光照直射,冬天光线角度变大。2.2点光源:假设真空中,光线传播没有衰减,每个球壳的能量是统一的,那么强度与R平方成反比。这里看到光照和:物体本身反射属性,光照强度(到点光源的距离,光照的强度)...

2022-05-11 15:50:36 91

原创 06 Rasterization (Antialiasing)反走样

一、Aliasin 走样采样是广泛存在的,Sampling Artifacts(采样瑕疵)也是广泛存在的。 体现就是1.锯齿Jaggies2.Moire摩尔纹3.车轮效应 人眼在时间上的采样跟不上实际的变化,造成本来是顺时针变成了逆时针。走样的原理都是:信号变化太快,但采样速度跟不上。二、反走样 2.1 模糊先给信号做模糊(滤波),再采样。2.2傅里叶傅里叶级数展开:任何一个周期函数都可以写成一系列正弦和余弦的组合以及一个常数项。...

2022-05-11 15:49:48 476

原创 05 Rasterization(Triangle) 三角形的光栅化

一、前置知识vertical field-of-view:垂直可视角度 Aspect ratio:长宽比经过MVP变换后,物体都在-1,1的"canonical cube"立方体中。二、Canonical cube To Screen 2.1屏幕空间缩放+平移的仿射变换:三、显示设备 早期:CRT显示设备,隔行扫描,现在一些视频压缩也在使用隔行扫描。缺点:造成画面撕裂。 现在:显卡,内存里的一块区域(多个)映射到屏幕上...

2022-05-11 15:48:34 218

原创 04 Transformation Cont 转换控制

零、回顾三维变换为什么Y轴的变化不一样:因为需要Z x X才能得到y。将旋转分解到每个轴上。这个角就叫欧拉角。一、视图变换View (Camera)Transform:一般的处理中:会将相机移到原点,并看向-z的方向。并以这个仿射变换移动所有物体的坐标。先求到相机角度的旋转矩阵,再求其逆矩阵,旋转矩阵是正交矩阵,其逆就是其转置。二、投影变换2.1正交投影注意:点的x,y,z,w只要乘上不等于0的数,都还是他原...

2022-05-11 15:47:46 135

原创 03 Transformation 变换

一、2维变换 1.1缩放变换 延轴镜像就在sx或者sy前加符号可以。切变:竖直方向没变化,水平边上有一定以来y轴的变化。x' =x + ay 1.2旋转 一般旋转不说方向就是默认逆时针。旋转负斯塔角是原旋转矩阵的转置。 这样的矩阵叫正交矩阵。二、齐次坐标与平移变换这个式子难以写成上面的矩阵形式。可以写成下面这样:为了让平移不那么不同,就有了方便的齐次坐标:注意:向量的补位是0,点...

2022-05-11 15:46:12 116

原创 02 Review of Linear Algebra 线性代数回顾(重要)

一、Vector 向量1.向量,平移这个向量,也是这个向量,因为两个点的相对位置没变。向量最重要的两个属性:方向,长度Normalize:长度为1的向量是单位向量变为单位向量: 读作a hat2.计算2.1向量求和:平行四边形法则:三角形法则:笛卡尔坐标系描述向量:T 是转置 竖变横2.2向量的点乘和叉乘2.2.1点乘:dot点乘满足交换律 结合律 分配律2.2.2使用:1.找到向量之间的夹角。...

2022-05-11 15:44:41 132

原创 旧版本升级到Unity2018 Package Manager消失解决方法

最先出现这个问题是我的后处理包报错:error CS1070: The type `UnityEngine.XR.XRSettings' has been forwarded to an.....然后发现Window下的Package Manager没了。解决方法是:新建一个项目。找到Package目录下的manifest.json。复制回来覆盖出错项目同位置的文件。...

2022-04-25 17:11:51 2758

原创 游戏设计模式总结

后续这本书的读书笔记感悟都将更新在这里。

2022-03-22 14:42:29 3284

原创 游戏设计模式阅读笔记19——优化模式(空间分区)

目录一、意图二、动机三、空间分区1.适用场景:2.实例代码四、注意 1.划分是层次的还是平面的? 2.划分依赖于对象数量吗?空间分区 · Optimization Patterns · 游戏设计模式一、意图将对象根据它们的位置存储在数据结构中,来高效地定位对象。二、动机在实施战略游戏中。双方有成百上千的单位在战场上撞在一起。战士自动向离他最近的敌人挥刀。最简单的处理就是遍历所有敌人。如果...

2022-03-22 11:27:29 3423

原创 游戏设计模式阅读笔记18——优化模式(对象池模式)

定义一个池对象,其包含一组可重用对象。其中每个可重用对象都支持查询其状态,是否在被使用。池被初始化时,就创建了整个对象集合(通常使用一次连续的分配)。 需要新对象,池子会返回一个不在使用中的对象,并改变其状态。

2022-03-21 10:35:00 3975

原创 游戏设计模式阅读笔记17——优化模式(脏标识模式)

将工作延期至需要其结果时才执行,避免不必要的工作。一组原始数据随着时间变化而改变。使用代价昂贵的过程推定一组导出数据。用一个脏标识追踪导出数据是否与原始数据保持一致。它在原始数据改变时被设置。如果导出数据被请求时,该标识被设置了,那么重新计算并清除标识 否则的话,使用之前缓存的导出数据。

2022-03-18 16:45:55 588

原创 游戏设计模式阅读笔记16——优化模式(数据局部性)

现代CPU有缓存来加速内存读取。它可以更快地读取最近访问过的内存的毗邻内存。通过提高内存局部性来提高性能——保证数据以处理顺序排列在连续内存中。

2022-03-17 11:24:25 3039

原创 游戏设计模式阅读笔记15——解耦模式(服务定位器)

提供服务的全局接入点,避免使用者和实现服务的具体类耦合。 服务类定义了一堆操作的抽象接口。具体的服务提供者实现这个接口。分离的服务定位器提供了通过查询获取服务方法,同时隐藏了服务提供者的具体细节和定位它的过程。

2022-03-16 11:31:08 1130

原创 游戏设计模式阅读笔记14——解耦模式(事件队列)

事件队列也叫消息队列,是更广为人知的观察者模式的异步实现。 事件队列在队列中按先入先出的顺序存储一系列的时间。发送的系统,将请求放入队列,立即返回。处理请求的系统之后从队列中获取请求并处理。 就解耦了发送者和接收者,既静态又及时。

2022-03-15 11:15:36 1424

原创 游戏设计模式阅读笔记13——解耦模式(组件模式)

允许单一实体跨越多个领域而不会导致这些领域彼此耦合。

2022-03-14 10:41:30 1298

原创 游戏设计模式阅读笔记12——行为模式(类型对象)

目录一、意图二、动机三、类型对象 1. 适用场景: 2.难以定义每种类型的行为四、实例代码一、意图创造类A来允许灵活地创新“类型”,类A的每个实例都代表了不同的对象类型。二、动机以怪物为例,在一个游戏中可能有很多中怪物。他们有相同的行为,走,攻击,跳跃等。但是他们的血量,攻击力,速度有不同。传统的面向对象方案是,写一个Monster基类,然后每种怪物都继承基类。...

2022-03-11 11:50:02 895

原创 Unity前向渲染路径的光照总结实现

勿于浮沙筑高台。回顾总结一下Unity光照的计算,主要介绍总结shader。一、光照的基本框架光照主要分为:直接光照、间接光照、(环境光是间接光的一部分)。这其中直接光照占主导地位。而为了减少间接光照的计算,有很多种技术来表达间接光照。比如:LightMap,Reflection probe(反射球,IBL基于图像的照明),Light Probe(球谐光照SH)目前的光照计算中最完整的是BRDF(Bidirectional ...

2022-03-10 17:13:48 812

原创 游戏设计模式阅读笔记11——行为模式(子类沙箱)

基类定义抽象的沙箱方法和几个提供的操作。将操作标为protected,表明它们只为子类所使用。每个推导出的沙箱子类用提供的操作实现了沙箱函数。

2022-03-10 13:56:31 1344

原创 游戏设计模式阅读笔记10——行为模式(字节码)

一、意图将行为编码为虚拟机器上的指令,赋予其数据的灵活性。二、动机 为了脱离出一些容易被修改的部分,而不是使用硬编码的方式。如果是硬编码,每次修改都要在游戏的可执行文件打补丁。如果支持模组,那每个模组制造这都需要拥有编译游戏的整套工具链。而且需要开源游戏代码。三、方法1.解释器模式以编程语言为例:比如算术表达式:(1 + 2)*(3 - 4) 将每块表达式和每条语言规则都变成对象。就变成了下面的树状。解释器模...

2022-03-09 10:40:08 321

原创 游戏设计模式阅读笔记9——序列模式(更新方法)

简单的更新,会堆积在游戏循环代码中。随着需要更新的对象越来越多,循环就会越来越杂乱无章。更新方法就是用来优化这个简单的循环逻辑。

2022-03-07 11:12:47 405

原创 游戏设计模式阅读笔记8——序列模式(游戏循环)

一、意图 将游戏的进行和玩家的输入解耦,和处理器速度解耦。二、动机 一个真实游戏循环的第一个关键部分:它处理用户输入,但是不等待它。循环总是继续旋转。 使用实际时间来测算游戏循环运行的速度,就得到了帧率FPS。一个简单的while循环是能转多快转多快。两个因素决定它的帧率: 1.每帧需要做的工作。(复杂的物理,众多需要渲染的对象......) 2.底层平台的速度。更快的芯片可以在同样的时间里执行更多的...

2022-03-02 16:42:27 556

原创 游戏设计模式阅读笔记7——序列模式(双缓冲模式)

双缓冲解决的核心问题是状态可能在被修改的同时被请求。

2022-03-01 11:11:27 567

原创 游戏设计模式阅读笔记6——重访设计模式(状态模式)

状态模式,有限状态机(FSMs),层次状态机,下推自动机。如果你从来没有听说过状态机,不要难过。虽然在AI和编译器程序方面很出名,但它在其他编程圈就没这么知名。一、有限状态机1.例子当在做玩家操作时,比如:跳跃。跳跃不能在下降时跳,不能在游泳的时候跳,不能再。。。发生。又可以在斩击的时候发生,实现跳斩。单单一个动作就有很多规则,最简单的ifelse列举很多情况,只会让情况变糟糕。当有限状态机的加入:先画一个流程图:有限状态...

2022-02-28 15:03:34 494

原创 游戏设计模式阅读笔记5——重访设计模式(单例模式)

GOF描述的单例模式通常弊大于利。他们强调应该谨慎使用这个模式,但在游戏业界的口口相传中,这一提示经常被无视了

2022-02-22 18:27:18 707

原创 游戏设计模式阅读笔记4——重访设计模式(原型模式)

现在有很多原型的术语,这里讨论的是传统的原型设计模式。1.《圣铠传说》例子 但这种会产生众多的类,众多的引用,众多冗余,众多的副本。原型模式的关键思路:一个对象可以产出与它自己相近的对象、这里运用原型模式:所有的怪兽都继承这个基类。就只需要再定义一个生产者类:2.原型语言范式很多人认为“面向对象编程”和“类”是同义词。而除了使用类来实现,还可以使用self语义,...

2022-02-22 17:20:40 554

原创 游戏设计模式阅读笔记3——重访设计模式(观察者模式)

观察者模型是应用最广泛和最为人知的GoF模型。随便打开电脑的一个应用,就很有可能他用了MVC架构。

2022-02-11 11:04:26 785

原创 游戏设计模式阅读笔记2——重访设计模式(享元模式)

对于有很多相同的类时,需要共享类时,就会用到享元模式。比如渲染森林时,CPU向GPU传递3D数据。目前的游戏中,很多数都会使用一样模型,这时候就可以使用一个共享类。每二、.享元模式1.简介对于有很多相同的类时,需要共享类时,就会用到享元模式。比如渲染森林时,CPU向GPU传递3D数据。目前的游戏中,很多数都会使用一样模型,这时候就可以使用一个共享类。每棵树的需要传递数据就会大大的减少。在Unity的静态批处理和动态批处理。还有URP管线中的SRP Batcher。...

2022-02-11 10:04:08 1028

原创 游戏设计模式阅读笔记1——重访设计模式(命令模式)

目录一、命令模式1.定义2.解耦消费者和生产者实例3.撤销和重做的例子4.用类还是用函数5.总结一、命令模式1.定义GOF的定义精简定义:命令是具观化的方法调用。2.解耦消费者和生产者实例上面是一个简单的按键调函数的例子。但在这里,返回的是一个函数。最后再用传入“消费者”。这个模式也适用于,AI触发更高级的行为。把按键行为换成某个AI。则AI只需要生成命令,然后玩家角色...

2022-02-10 15:10:16 778

原创 游戏设计模式阅读笔记0——序

中文版链接:致谢 · 游戏设计模式一、序——笔记反思1.反思:在是实习生的时候,就明显感觉到了主程在编码能力上对我的压制力。具体体现在,同样的功能,他的思路更清晰,实现明显更优美,模块更分明,但当时的我只能尽量依葫芦画瓢,也不明白这是哪方面的知识的缺失,只能全归在经验缺失上。在正式工作后,感觉到自己的代码复用性很低,平时写代码很没有规范,总觉得少了一部分知识学习。只知道实现功能,而不知道如何规范,优美的实现功能。对性能也一知半解。2.3....

2022-02-10 10:28:34 494

原创 MATCAP详解---传统做法和优化做法

懈怠了好久,今天听了一个大佬的emo分享,我也emo了,但是人总要往前走。收拾一下心情,总结一下最近的学习。MatCap简介:MatCap即材质捕捉,使用较省的性能快速实现效果。在PBR技术流行后,热度下降。MatCap缺点: 1.由于本身是无光照渲染,光照信息在MatCap贴图上,所以只能模拟静态光照。 2.不适用于摄像机频繁旋转的场景,因为matcap中的光照信息是特定角度下的,变化后,就不符合光照...

2022-02-08 13:56:00 3711 1

原创 URP渲染管线与Buildin管线的区别

URP介绍 UPR前身是LWRP,区别是URP集成了postProcessing。主要是为移动平台设计。UPR相当于SBP(可编程渲染管线)里的一个模板。Universal RP包里可以看到源码。区别:1.光照:传统Bulidin渲染管线的光照是多Pass渲染,每多一个动态光就多一个Pass,这个光影响的物体就要多画一遍。eg:所有物体都受动态光影响,则m个动态光,n个物体,绘制次数m*n。 URP实现了单Pass渲染光照。也...

2021-10-09 10:12:16 5282 1

原创 高性能GPU渲染帧动画方案

公司项目中美术效果要求有超多观众动画参与增加环境氛围,观众有多个朝向,有多套动画,动画都为循环动画。GPU渲染帧动画方案在推论出序列帧动画是最优解决思路之后,我们着重需要考虑如何简化序列帧动画带来的CPU消耗,使用GPU直接渲染应该就是最优解。定帧解决思路1.解决传统序列帧动画可以理解为第x帧播放第y张贴图。定帧其实理解为连续几帧都播放同一张贴图。所以这里我们需要设置一个动画的序列,明确动画的排列顺序。也可能是动画不再播放,或者播快播慢,那就需要一个速度来控制动画的播放也...

2021-08-05 17:51:37 452

原创 Idle Human的逐渐生成效果

本文档为解析idle Human游戏中的生成效果。原效果如下:GIF1 idleHuman中的生成效果实现思路解包后,发现其在贴图中做了Alpha渐变。所以这里就有了一个逐渐变化的值。这个渐变并不是用于控制贴图的Alpha的,显而易见在Gif1中腿部的整个骨头出来后没有Alpha的渐变。所以这里在Shader中也不用设置透明队列。图1 idle human中的贴图还有一个和Alpha相关的函数就是Clip()。在片元着色器中使用Clip函数时,当参数小于0,则该..

2021-08-05 17:45:20 123

原创 Unity Shader 卡通水效果(不用深度信息)

文章目录效果预览具体实现采样贴图替换的深度信息合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入效果预览公司需要一个不使用深度信息,不用光照模型的水效果。具体实现参照了:卡通风格的水面效果—ToonWater https://zhuanl

2021-08-05 17:35:13 2445 2

600张MatCap贴图(不同大小64,512,1024)

600张MatCap贴图(不同大小64,512,1024)

2022-02-11

独角仙(甲虫)模型,只有模型

独角仙(甲虫)模型,只有模型

2022-02-11

空空如也

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

TA关注的人

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