
简短随笔以及读书笔记
文章平均质量分 94
萌化小强
曾经迷茫的小小开发人员,现如今找到目标,准备起航。
展开
-
自定义操作指令集
自定义操作指令集 在游戏系统中充满了各种各样的指令,玩家的操作输入,AI角色的行为输入,剧情的进展,战斗时的数据运算等等,这些看起来各自独立的部分在背后其实都被指令联系到了一起。 试想一下要是不使用指令,各种行为和运算都是硬编码写在游戏逻辑中,且不说后续拓展基本变为不可能的任务,光是编码过程中的白盒测试都难以进行,更让人无奈的是,这样的情况与编程人员的编码能力无关,仅仅是设计上的失误而已。从原创 2018-01-24 10:09:31 · 887 阅读 · 0 评论 -
Unity Shader学习记录(十)
Unity Shader学习记录(十) 前文提到的屏幕后处理特效只是一类在渲染完成后的帧画面基础上做二次处理的特效,虽然在大部分情况下它们是可用而且足够高效的,但更多的情况下我们不仅需要当前的帧画面,还需要场景的深度和法线信息。 一个典型的例子是边缘检测,前文中使用Sobel算子进行卷积运算来检测边缘其实并不精确,因为颜色的变化有时候并不说明真正的物体边缘,而且光照效果也会影响到边缘检...原创 2018-05-31 13:46:10 · 557 阅读 · 0 评论 -
Unity Shader学习记录(九)
Unity Shader学习记录(九) 屏幕特效是一种很常见的平面特效,不同于直接在三维渲染中做出的特效,屏幕特效仅针对已经渲染完成的屏幕显示,通俗点说就是一张和屏幕大小相当的图片。这种针对已经渲染完成的屏幕图片进行特效处理的行为被称作“屏幕后处理”。 实际使用场景中的屏幕后处理类型繁多,不同的效果各有各的针对,能良好地使用这种后处理能极大地增加游戏内容表现力,而随之带来的则是性能消耗的上升原创 2018-05-07 16:26:16 · 422 阅读 · 0 评论 -
Unity Shader学习记录(八)
Unity Shader学习记录(八) 大部分情况下,Shader的运行过程是与时间无关的静态过程,换句话说游戏进行过程中渲染的结果不会有什么变化;动态光影或许是比较典型的例外,但它们和游戏运行时间依然没有什么直接的联系,仅仅与场景的变化有关。 但有些情况下,能将Shader的渲染流程与游戏运行的时间建立联系是有益处的,比如希望渲染出随着时间变化而变化的效果,水波或者移动等。因此Unity的原创 2018-04-13 16:24:32 · 412 阅读 · 0 评论 -
Unity Shader学习记录(七)
Unity Shader学习记录(七) 阴影和光照总是密不可分的,就像明亮和阴暗本身就是两种亮度的对比那样。 在计算机图形渲染中,阴影的产生遵循着类似现实中的阴影现象的原理,也就是寻找光线无法照到的地方将其认定为阴影并予以渲染。但和现实中不同的是,很多时候计算机实时渲染并不会真的去寻找每条光线能照射到什么地方,或者说至少不是每次渲染都寻找;有一种常用的被称为“阴影映射(ShadowMap)”原创 2018-03-28 16:04:25 · 564 阅读 · 0 评论 -
Unity Shader学习记录(六)
Unity Shader学习记录(六) Shader的基本高光模型能给物体渲染上亮眼的反光效果,但在实际使用中这个效果却并不总是需要那么亮的,尤其是在一些粗糙表面上。当一个物体具有粗糙表面并且使用法线贴图进行渲染后,高光模型制造出来的光照效果会显得十分违和;本来粗糙表面就不应该有高光反射,但同时产生高光的光源又一定会在粗糙表面产生一片更亮的区域。 为了解决这个矛盾现象,一种可行的方案便是使用原创 2018-03-19 10:56:48 · 339 阅读 · 0 评论 -
Unity Shader学习记录(五)
Unity Shader学习记录(五) 在游戏中会有多种多样的渲染风格,有写实的,复古的,追求光影的,追求精细度的等等等等,但有一种渲染风格能为游戏营造一种完全不同的氛围,它不以追求真实性为目标,却反其道而行之,为玩家制造出一种容易辨识和更加夸张的感觉;这便是卡通风格渲染。 说到卡通风格渲染,有很多典型的例子,比如军团要塞2,比如无主之地系列;它们使用卡通风格渲染为玩家营造的氛围就是一种荒诞原创 2018-03-12 09:26:08 · 352 阅读 · 0 评论 -
Unity Shader学习记录(三)
Unity Shader学习记录(三) 前文中编写的Shader只有个漫反射颜色设置,渲染出来的模型是单调的纯色,而且虽然有点光照效果,但是看起来暗淡无光,总之就是不好看。在实际的游戏或者场景渲染中,模型的表面是多姿多彩的,光照也是复杂多变的,因此Shader往往需要具有处理这些数据的能力。纹理贴图 纹理和贴图都是在计算机图形图像中很常见的概念,简单说来它们指的就是一张图片,在渲染时根据模型的信原创 2018-03-02 17:31:35 · 261 阅读 · 0 评论 -
Unity Shader学习记录(二)
Unity Shader学习记录(二) 在进入真正能看到效果的Shader之前,需要一点数学基础,也就是向量和矩阵方面的数学知识,关于这些知识不予赘述,有大量的书籍资料以及网络文章可以学习,在此仅列举一些必要的概念方便查阅。 Shader中涉及到的数学知识包括向量的运算矩阵的定义矩阵的运算矩阵与向量之间的关系矩阵与坐标系统之间的关系 具备一定的数学基础后,便可以正式编写能看出三原创 2018-02-28 09:19:27 · 208 阅读 · 0 评论 -
Unity Shader学习记录(四)
Unity Shader学习记录(四) 前文结尾提到的一种能在模型平面上渲染出凹凸感的技术,也就是法线贴图技术,其原理并不复杂;考虑到凹凸感本身来源于模型不同表面特性对光照的反应,而影响光照的最大因素之一当然是法线了,平面上每一点的法线都是一样的,这也就是为什么渲染到平面上的纹理看起来是平的,如果给与一个平面上不同点以不同的法线参数,那么理论上就能实现凹凸不平的效果。法线贴图 法线贴图技术是现在原创 2018-03-07 15:41:00 · 301 阅读 · 0 评论 -
Unity Shader学习记录(一)
Unity Shader学习记录(一) Shader,一般称为“着色器”,是在显示处理中的渲染流水线里扮演重要角色的一种程序,它的目的是为了更加详细和精确地控制显卡渲染图像的方式和方法,极大地增加了图形图像编程人员对显卡工作流程的干预能力。 现代显卡的渲染流水线一般而言分成三个阶段,应用阶段,几何阶段和光栅阶段。其中应用阶段是指在图形图像制作软件里的过程,比如使用3D模型制作工具May...原创 2018-02-26 13:41:21 · 278 阅读 · 0 评论 -
状态机杂谈
状态机杂谈 计算机控制系统的控制程序具有有限状态自动机(FA)的特征,可以用有限状态机理论来描述。有限自动机(Finite Automata Machine)是计算机科学的重要基石,它在软件开发领域内通常被称作有限状态机(Finite State Machine),是一种应用非常广泛的软件设计模式。 状态机这个名字听上去似乎是个很不得了的东西,然而实际上它普遍应用于计算机行业,毕竟现代编原创 2018-02-05 18:10:13 · 461 阅读 · 0 评论 -
EventSystem的使用
EventSystem的使用 EventSystem在Unity中是一个看起来像是专门服务于UGUI系统的组件,每当在场景里创建UGUI对象时,Unity编辑器都会自动产生一个EventSystem对象放在场景中,与之相对应的也有一个Canvas对象,这两个对象就组成了UGUI系统的基础,所有开发人员能看到和能用到的UGUI功能都依附于这两个对象。UGUI中的EventSystem 使用UGUI原创 2018-01-26 15:50:42 · 7560 阅读 · 0 评论 -
Unity Shader学习记录(十一)
Unity Shader学习记录(十一) 关于风格化渲染的东西内容非常丰富,除了以前提过的卡通风格之外,素描风格也是一种有趣的效果,它的原理是通过光照信息采样几张不同的,代表笔触的纹理贴图,并以采样结果作为效果渲染到画面上;这样一来就如同是真的实现了画笔效果那样,光照明亮的地方没什么笔画,阴影的地方笔画很密。 此外还有一类重要的效果,那就是噪声(Noise),这一类效果泛用性很强,无论...原创 2018-07-30 16:57:22 · 571 阅读 · 0 评论