游戏引擎架构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开发的一个让轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的 ...
随机推荐
- android代码设置EditText只输入数字、字母
如何设置EditText,使得只能输入数字或者某些字母呢? 一.设置EditText,只输入数字: 方法1:直接生成DigitsKeyListener对象就可以了. et_1.setKeyLis ...
- 再读《Java编程思想 》
前段时间在豆瓣上无意间看到一个帖子"我为什么把thinking in java 读了10遍",是11年的帖子,下面评论至今,各种声音都有,不过大多数还是佩服和支持的.我个人来讲也是 ...
- 无法打开包括文件:“iostream.h”
把#include<iostream.h>改为:#include<iostream>using namespace std; #include<iostream.h> ...
- 基于tcp协议的粘包问题(subprocess、struct)
要点: 报头 固定长度bytes类型 1.粘包现象 粘包就是在获取数据时,出现数据的内容不是本应该接收的数据,如:对方第一次发送hello,第二次发送world,我放接收时,应该收两次,一次是hel ...
- 【MFC】MoveWindow();函数使用详解
摘自:http://blog.csdn.net/yjkwf/article/details/5281207 CWnd::MoveWindow 详解 2010-02-02 16:08 3432人阅读 评 ...
- 浅析Python中bytes和str区别
本博转载自:Chown-Jane-Y的浅析Python3中的bytes和str类型 Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示, ...
- ExpressionTree,Emit,反射
ExpressionTree,Emit,反射 https://www.cnblogs.com/7tiny/p/9861166.html [前言] 前几日心血来潮想研究着做一个Spring框架,自然地就 ...
- 【转载】Allegro Auto Rename器件反标注教程
Cadence设计时一般不主张在PCB文件中更改Logic(PADS的ECO更改),不过Auto Rename仍然是非常实用的功能,按照布局重排位号,可以让PCB的丝印标识更清晰,容易检查,位号易找, ...
- centos6.5 安装sftp
1.创建sftp组 : groupadd sftp 2.创建一个sftp用户,用户名为andy : useradd -g sftp -s /bin/false andy 3.修改密码: pas ...
- oracle fn project 开源faas 框架
1. 介绍 Fn is an event-driven, open source, functions-as-a-service compute platform that you can run a ...