游戏引擎架构Note2
【游戏引擎架构Note2】
1、视觉属性(visual property)决定光线如何与物体表面产生交互作用。
2、一个Mesh所使用三角形的多少可以用细致程度(level-of-detail,LOD)来表示。当物体接近摄像机时,使用LOD0,当物体远离摄像机时,使用LOD1,2或更高。
3、变幻矩阵用以把个别实例的网格顶点从模型空间转换至世界空间。
4、在游戏中,光只能做3件事:
1)光可被吸收(absortb)
2)光可被反射(reflect)
3)光可以物体中传播(transmit),过程中通常会被折射(refract)
5、顶点的信息中包含以下内容:
1)顶点坐标信息
2)顶点法线信息
3)纹理信息
4)漫反射颜色信息
5)镜面反射信息
6)蒙皮权重信息
6、我们需要每像素的属性而非每顶点的属性。光照网格最简单的方法就是,逐顶点计算表面的颜色,然后使用插值将这些顶点色平滑散布于整个平面上。
7、纹理的各类
1)法线贴图(normal map)
2)光泽贴图(gloss map)
3)环境贴图(environment map)
4)光照贴图(light map)
8、纹素密度(texel density,纹素/像素)。我们希望无论物体是近是远,仍然维持纹素密度接近于1。可以使用多级渐远纹理(mipmapping)。当中每张位图的宽度和高度都是前一张的一半。
9、纹理过滤(texture filtering)
1)最近邻
2)双线性:取围绕像素中心的4个纹素采样,并计算4个颜色的加权平均。当使用多级渐远纹理时,也是选择最接近的级数。
3)三线性:此法把双线性过滤法施加于最接近的两个渐远纹理级数。
4)各向异性:根据视角,对一个梯形内的纹理采样。
10、材质(material)
1)纹理
2)着色器(shader)
11、一个人类模型可能有多个材质,供头发、皮肤、眼睛之用。因此,一个网格通常会被切割成子网格(submesh),每个子网格对应一个材质。
12、局部光照(local illumination model),仅考虑光对于单个物体的局部影响,即每个物体不会影响其它物体的光照。
13、间接光照(indirect lighting),光被 多个表面反射后才进入摄像机。照顾到间接光照的模型称为全局光照模型(global illumination model)。
14、光可分解为以下3种:
1)环境光(ambient)
2)漫反射(diffuse)= 漫反射量k * 入射光向量 * 法线
3)镜面反射(specular)= 镜面反射量k * 反射光向量 * 到摄像机的向量
15、光源模型
1)环境光(ambient light)
2)平等光(directionallight)
3)点光(point light)
4)聚光(spot light)
5)面积光:现实的光源必定有非零的面积,因引才会被其产生的阴影含有本影和半影。
16、发光物体可以用放射光贴图(emissive texture map)来模拟,此纹理的颜色永远以完全强度发射,不受附近的光照环境所影响。
17、硬件扫描一个帧缓冲时,渲染引擎则更新另一个帧缓冲。此称为双缓冲法(double buffering)
18、光栅化(rasterization)是指在光栅化过程中,三角形表面会拆成名为片段(fragment)的小块。每个这些细小区域对应于单个屏幕像素。在使用多重采样搞锯齿时每个片段对应于像素的一部分。
19、全屏抗锯齿(full-screen antialiasing, FSAA),影像渲染至比实际屏幕宽一倍、高一倍的帧缓冲里。然后再把帧缓冲缩减采样(downsample)至所需的分辩率。
20、多重采样抗锯齿(mutisample antialiasing, MSAA)。其基本原理是把每个像素拆分为多个片段。这些片段在管道最后阶段结合成单上像素。现在GPU能支持4x及8x的多重采样。
21、现实的深度缓冲仅含有限的精确度,因此两个足够接近的平面,其两个深度可能会变成相同的离散值。若发生这种情形,较远的平面像素就会“刺穿”较近的平面,造成一个称为深度冲突的嗓点效果。
21、粒子效果(particle effect),几何物体通常是朝向摄像机的,引擎必须确保面片的法矢量总是朝向摄像机的焦点。其次材质几乎都是半透明的。因此,粒子渲染系统有严格的渲染次序。
22、贴花(decal)是覆盖在场景中正常物体上, 相对较小的几何物体。弹孔、脚印、折痕、裂缝等都是贴花的例子。
23、渲染天空盒(sky box)时,要把帧缓冲的所有像素设为最大深度。
24、归一化坐标的意思是用0~1来表示x,y坐标。
25、CRT显示屏对于颜色的显示并非线性增长,而是一条伽马曲线,所以伽马校正这一技术正是用来修复CRT的非线性颜色显示。
26、全屏后期处理效果(full-screen post effect),通常是把屏幕的所有内容传送至含所需效果的像素着色器。
游戏引擎架构Note2的更多相关文章
- 游戏引擎架构Note1
[游戏引擎架构] 1.第14章介绍的对游戏性相关系统的设计非常有价值.各个开发人员几乎都是凭经验设计,很少见有书籍对这些做总结. 5.通过此书以知悉一些知名游戏作品实际上所采用的方案. 6.书名中的架 ...
- 游戏引擎架构 (Jason Gregory 著)
第一部分 基础 第1章 导论 (已看) 第2章 专业工具 (已看) 第3章 游戏软件工程基础 (已看) 第4章 游戏所需的三维数学 (已看) 第二部分 低阶引擎系统 第5章 游戏支持系统 (已看) 第 ...
- 游戏引擎架构 && windows 核心编程
欲想正人,必先正己. 静坐当思己过,闲谈莫论人非. 垂直同步的作用: 为避免画面撕裂,许多渲染引擎会在交换缓冲区之前,等待显示器的垂直区间消隐,即电子枪重归屏幕上角的时间. 高分辨率计时器的时间漂移 ...
- 游戏引擎架构,3d游戏引擎设计、Unreal引擎技术等五本PDF推荐
扫码时备注或说明中留下邮箱 付款后如未回复请至https://shop135452397.taobao.com/ 联系店主
- 游戏制作之路:游戏引擎选择、Mac下和Windows下UnrealEngine 4体验对比、文档及其他
UnrealEngine 4和Unity3d的选择 订阅了UrealEngine4(UE4)开发者.我开始做网站用的是ASP.NET和C#,之后做网站虽然换用更方便的PHP(因为做的都是小网站).我想 ...
- 棒!使用.NET Core构建3D游戏引擎
原文地址:https://mellinoe.wordpress.com/2017/01/18/net-core-game-engine/ 作者:ERIC MELLINO 翻译:杨晓东(Savorboa ...
- U3D 游戏引擎之游戏架构脚本该如何来写
这篇文章MOMO主要想大家说明一下我在Unity3D游戏开发中是如何写游戏脚本的,对于Unity3D这套游戏引擎来说入门极快,可是要想做好却非常的难.这篇文章的目的是让哪些已经上手Unity3D游戏引 ...
- 【转载】U3D 游戏引擎之游戏架构脚本该如何来写
原文:http://tech.ddvip.com/2013-02/1359996528190113.html Unity3D 游戏引擎之游戏架构脚本该如何来写 2013-02-05 00:48:4 ...
- Unity3D游戏开发初探—1.跨平台的游戏引擎让.NET程序员新生
一.Unity3D平台简介 Unity是由Unity Technologies开发的一个让轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的 ...
随机推荐
- Drools7.0.0.Final Unsupported major.minor version 52.0异常
异常信息 在使用Drools7.0.0.Final版本进行开发过程中,出现以下异常: java.lang.UnsupportedClassVersionError: org/kie/api/KieSe ...
- [置顶]
Android逆向从未如此简单
哈,又标题党了..不过我一定竭尽所能,写一篇最亲民的入门文章. 本文仅供学习交流之用,切勿用于非法用途,读者若运用所学知识,进行非法任何商业目的或者非法牟利,一切责任由操作者自行承担,与本人无关.希望 ...
- Matisse,来自知乎的PhotoPicker
简介 Matisse,是一款由知乎开源的媒体选择器. 在Activity和Fragment中使用 支持JPEG,PNG,GIF的图片选择和MPEG,MP4格式的视频选择.不能同时选择图片和视频 两种主 ...
- Helix Server流媒体服务器架设教程(附Helix Server11.01下载)
现在D版的远古影视系统很流行,也很实用,但是在这之前,很多人都是用共享,或者是使用Helix Server留媒体来做电影服务器~ 虽然Helix Server流媒体服有点落伍了,不过我相信它还是有用武 ...
- 启动mysql 失败,“Warning:The /usr/local/mysql/data directory is not owned by the 'mysql' or '_mysql' ”
一.Mac OS X的升级或其他原因可能会导致MySQL启动或开机自动运行时 在MySQL操作面板上会提示“Warning:The /usr/local/mysql/data directory is ...
- 20165222《Java程序设计》——实验二 面向对象程序设计
20165222<Java程序设计>——实验二 面向对象程序设计 提交点一.JUnit测试用例 知识点:这里就是了解测试代码的应用,测试代码的书写为:@Test assertEquals( ...
- Windows Server 2008用IIS部署FTP简述
1.安装IIS 2.在IIS中勾选FTP选项 3. 新建FTP站点
- F4NNIU 学习目录 (2018-08-22)
F4NNIU 学习目录 语言 C 语言 C 语言程序设计进阶 在线刷题 https://leetcode-cn.com/problemset/all/ 工具 Git 版本管理 在线教程 在线教程
- php无wsdl webservice服务用法
服务端: <?php class test { function add($a,$b) { return $a+$b; } } function getUserInfo($name) { ret ...
- 利用bat合并两个hex文件
单片机程序如果有IAP功能的话,就会生成两个hex文件,一个是Boot,一个是App,如果给让生产烧录两个文件,就会降低生产效率,所以在烧录前最好将两个文件合并成一个文件,烧录一次即可,合并方法如下: ...