游戏引擎架构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开发的一个让轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的 ...
随机推荐
- DRF 用户频率限制
DRF 用户频率限制 为什么要限流 1 防爬虫 匿名用户 无法限制,代理 已登录,用户名限制:买代理 2 提供服务(接口--不同用户的访问次数不一样) vip 限制访问次数 BaseThrottle ...
- C++纯虚函数实现
纯虚函数就是一个在基类中的虚函数,差别只是在一般的虚函数声明的后面加了"=0",虚函数允许函数通过与函数体之间的联系在运行时才建立,也就是在运行时才决定如何动作,称为运行时的多态性 ...
- Happening in delphi world
Happy New Year! Delphi XE5 Update 2 Recent VCL enhancements New product features for old product use ...
- 机器视觉:Convolutional Neural Networks, Receptive Field and Feature Maps
CNN 大概是目前 CV 界最火爆的一款模型了,堪比当年的 SVM.从 2012 年到现在,CNN 已经广泛应用于CV的各个领域,从最初的 classification,到现在的semantic se ...
- 深入学习Heritrix---解析Frontier(链接工厂)(转)
深入学习Heritrix---解析Frontier(链接工厂) Frontier是Heritrix最核心的组成部分之一,也是最复杂的组成部分.它主要功能是为处理链接的线程提供URL,并负责链接处理完成 ...
- [Luogu4475]巧克力王国
luogu 题意 平面上有\(n\)个点,每个点\((x_i,y_i)\),价值为\(w_i\).\(m\)次询问,每次给出\(a_i,b_i,c_i\)求满足\(a_ix+b_iy<c_i\) ...
- 【1】基于quartz框架和Zookeeper实现集群化定时任务系统
(1)quartz本身可以支持集群化,是基于数据库做协调,现在构想基于zookeeper做协调实现集群化定时系统 流程图如下:
- Spring IOC容器的初始化-(三)BeanDefinition的注册
---恢复内容开始--- 前言 在上一篇中有一处代码是BeanDefiniton注册的入口,我们回顾一下. 1.BeanDefiniton在IOC容器注册 首先我们回顾两点,1. 发起注册的地方:2. ...
- debezium 数据变更工具使用
1. 作用 简单概述就是CDC(change data capture),实时数据分析领域用的比较多 2. 简单使用(基于官网的docker 说明) 备注: 测试没有使用守护进程模式为了方便测 ...
- java的内存管理 对象的分配与释放
分配 程序员通过new为每个对象申请内存空间(基本类型除外),所有对象都在堆中分配空间:释放:对象的释放是由垃圾回收机制决定和执行的. Java内存分为两种:栈内存和堆内存 (1)在函数中定义的基本类 ...