需要注意的是,本文涉及的内容过多过杂,基本涉及到游戏渲染和图形管线的方方面面。内容是根据多方面的资料整理而成,比如本人的Unity和Unreal引擎相关的理解和认知,以及引擎相关官方文档等,以及DirectX和OpenGL相关官方文档等,以及网络上各种相关文章和资料等。可能有一些纰漏或者不足之处,或者有些阶段的资料来源较为单一,本人主要目的是从概念理解上对应整个游戏引擎的渲染管线,不一定和真实的游戏完全一一对应,比如应用程序阶段的知识对应到游戏引擎应该会有一些区别和取舍,几何阶段和光栅化阶段主要参考的是OpenGL和DirectX,Vulkan和Metal相关资料参考较少,可能不同的图形API会有一些出入。由于涉及内容过多,难免理解不到位,有发现比较明显错误的,请指出以尽早修正,避免造成误解。

一、渲染管线的思维导图

这是本文内容的思维导图,通过该图可以从整体上把握全文的内容,对渲染管线有整理的理解。

阅读全文 »

一、伽马校正

所谓gamma校正,实际上是一个颜色的非线性变换。下面来解释这个变换曲线存在的原因。

1.1 人眼的非线性视觉效应

阅读全文 »

左手坐标系和右手坐标系是三维空间下两种不同的坐标系,而且无法通过旋转将左手坐标系转换到右手坐标系。与其相对应的,有左手定则和右手定则,主要是用来确定叉积的朝向或者说旋向。
首先,规定二维坐标,X轴朝右、Y轴朝上,推广到三维空间,需要确定的是Z轴是朝前还是朝后。

一、左手坐标系

所谓左手坐标系,指的是通过左手来确定的一个三维空间坐标系。

阅读全文 »

一、命名法

Pascal命名法:每个单词首字母大写。
Camel命名法:第一个单词首字母小写,其余单词首字母大写。
C++标准库命名法:全小写,单词用下划线分割。

1.1 CSharp

阅读全文 »

一、内存对齐

C++的对象都会进行内存对齐,所谓内存对齐,指的是对象的地址和大小都会对齐到n的倍数上。比如按照4对齐,那么对象的地址会是4的倍数,对象的大小也是4的倍数。究其原因是,机器在内存对齐的地址上访问数据更快,可以一起取出数据;如果数据存在在不对齐的地址上,需要换成2次对齐地址上的取数据,再组合出原始数据;而且,部分机器根本没有取非对齐的数据。

1.1 默认对齐

阅读全文 »

NGUI介绍

NGUI是Unity中最流行的UI插件,在UGUI出现前几乎是Unity唯一的UI解决方案。
NGUI是一个提供高效事件通知框架的强大UI系统。NGUI遵循Kiss准则,其中类代码简洁,多数在200行以内。程序员可以方便的扩展其组件类代码以获得定制的功能。
NGUI官方网址
NGUI官方文档地址

NGUI下载

阅读全文 »

本文主要介绍编写一个原生的WebGL程序需要哪些步骤。

WebGL程序的软件结构

默认情况下,一个动态网页程序只包括HTML和JavaScript两种语言。
而在WebGL程序中,还包括了第三种语言:GLSL ES。

阅读全文 »

命令行参数和控制台命令

游戏命令包括两种,一种是运行游戏时候指定的命令行参数,另外一种则指的是进入游戏后输入的控制命令。

控制台命令

阅读全文 »