专业词汇及解释(持续更新,自用)

1.元祖

元祖(Tuple)由不同元素组成,每个元素可以储存不同类型的数据,如字符串、数字或元祖本身。
元祖由不同元素组成,所有元素被包含在一个圆括号中。
tuple_name=(a1,a2,a3...)
像数组之类的

2.各种缓冲区

2.1颜色缓冲区

  颜色缓冲区(COLOR_BUFFER)就是帧缓冲区(FRAME_BUFFER),你需要渲染的场景最终每一个像素都要写入该缓冲区,然后由它在渲染到屏幕上显示.

2.2深度缓冲区

  深度缓冲区(DEPTH_BUFFER)与帧缓冲区对应,用于记录上面每个像素的深度值,通过深度缓冲区,我们可以进行深度测试,从而确定像素的遮挡关系,保证渲染正确.

2.3模板缓冲区

  模版缓冲(STENCIL_BUFFER)与深度缓冲大小相同,通过设置模版缓冲每个像素的值,我们可以指定在渲染的时候只渲染某些像素,从而可以达到一些特殊的效果.


3.BRDF(Bidirectional Reflectance Distribution Function,即双向反射分布函数

光线照到一个物体,首先产生了反射,吸收和透射,所以BRDF的关键因素即为多少光被反射、吸收和透射(折射)了,是怎样变化的。这时的反射多为漫反射。而要知道这些光线反射透射的变化就需要清楚三样东西,物体的表面材质、光线的波长(即它是什么样的光,是可见太阳光,节能灯光还是紫外线)和观察者与物体之间的位置关系。三维世界角度可以类似是球体的,光线角度除了纵向180°的变化,还有横向360的不同发散方向。会有相应的入射光,反射光,入射角和反射角,它们在物体表面的法平面和切平面上的关系成为了BRDF的关键参数。由于人类眼睛对光的特殊敏感性,我们之所以能看到物体都是通过光线在物体上的发射和转移实现的。而双向反射分布这样的函数表示可以更好地描述光线在物体上的变化,反射光线同时发向分布在法线两边的观察者和光源两个方向,从而使人在计算机等模拟环境下,视觉上可以看到更好的物体模拟效果,仿佛真实的物体存在。



http://baike.baidu.com/view/2285120.htm?fr=aladdin


http://en.wikipedia.org/wiki/Bidirectional_reflectance_distribution_function



4.struct SurfaceOutput的结构体

http://blog.csdn.net/candycat1992/article/details/39994049


struct SurfaceOutput {  
    half3 Albedo;  
    half3 Normal;  
    half3 Emission;  
    half Specular;  
    half Gloss;  
    half Alpha;  
};  

  • Albedo:

  • 我们通常理解的对光源的反射率。它是通过在Fragment Shader中计算颜色叠加时,和一些变量(如vertex lights)相乘后,叠加到最后的颜色上的。

  • Normal

  • 即其对应的法线方向。只要是受法线影响的计算都会受到影响。

  • Emission:

  • 自发光。会在Fragment 最后输出前(调用final函数前,如果定义了的话),使用下面的语句进行简单的颜色叠加:
  • c.rgb += o.Emission; 
  • Specular:

  • 高光反射中的指数部分的系数。影响一些高光反射的计算。按目前的理解,也就是在光照模型里会使用到(如果你没有在光照函数等函数——包括Unity内置的光照函数,中使用它,这个变量就算设置了也没用)。有时候,你只在surf函数里设置了它,但也会影响最后的结果。这是因为,你可能使用了Unity内置的光照模型,如BlinnPhong,它会使用如下语句计算高光反射的强度(在Lighting.cginc里):
  • float spec = pow (nh, s.Specular*128.0) * s.Gloss; 
  • Gloss:

  • 高光反射中的强度系数。和上面的Specular类似,一般在光照模型里使用。
  • Alpha:

  • 通常理解的透明通道。在Fragment Shader中会直接使用下列方式赋值(如果开启了透明通道的话):
  • c.a = o.Alpha;  
    

shader(Surface) 官方例子

http://game.ceeger.com/Components/SL-SurfaceShaderLightingExamples.html


http://game.ceeger.com/Components/SL-SurfaceShaders.html


5.H,L,R,V,N

用来计算镜面反射(specular reflection)的中间方向矢量(halfway vector)\hat{\mathbf{H}}为什么是:

\hat{\mathbf{H}} = \frac{\hat{\mathbf{L}} + \hat{\mathbf{V}}}{\left \| \hat{\mathbf{L}} + \hat{\mathbf{V}} \right \|}

这个问题可分为两个层次去答。首先,要计算两个非完全背向的单位矢量在几何上的中间方向矢量,可以对两个单位矢量作线性插值:

\text{Lerp}(\mathbf{\hat{L}}, \mathbf{\hat{V}}, 0.5) =  (1 - 0.5)\mathbf{\hat{L}} + 0.5 \mathbf{\hat{V}}=0.5(\mathbf{\hat{L}} + \mathbf{\hat{V}})

如果想得到单位矢量,就需要再归一化(normalization)。归一化时,上面的0.5就被消去。

另一个问题是,Phong Reflection Modle是使用\hat{\mathbf{R}} \cdot \hat{\mathbf{V}}而不是Blinn提出的\hat{\mathbf{H}} \cdot \hat{\mathbf{V}}去计算镜面反射,为什么?


其实这两种计算方法也只是一种 BRDF,问题是哪种模型比较接近现实中的某种材质。[1] 7.5.7 节有比较详细的论述,在这里暂不详细展开了。

[1] Akenine-Möller, Tomas, Eric Haines, and Natty Hoffman. "Real-time rendering" 3rd edition, AK, 2008.



http://www.zhihu.com/question/25266627

6.VTF

Shader Model顶点纹理取码(vertex texture fetch)是相当值得关注的一项技术。顶点纹理取码允许应用程序直接从显存中提取纹理信息来作顶点处理,这种技术可以用在包括实时位移贴图(displacement mapping)等方面使用,通过这个功能你可以在顶点着色器3.0中实现各顶点的位移工作。

7.Reyes渲染架构

Reyes 渲染架构,是三维计算机图形学的一个软件架构,用于渲染照片一样真实的图像。该架构是80年代中期由卢卡斯影业的计算机图形研究小组成员艾德文·卡特姆洛伦·卡彭特罗伯特·库克所开发的,那个研究小组最后发展成了今天的皮克斯[1] 该架构最早使用于1982年的科幻片《星际迷航2:可汗之怒》中的创世片段。皮克斯的PRMan是Reyes算法的一个实现。

根据最初描述该算法的论文,Reyes渲染系统是一个用于复杂图像的快速高质量渲染的“架构”,论文中指出Reyes包括一系列算法和数据处理系统,不过本词条中的“算法”和“架构”是同义的。

ReyesRenders Everything You Ever Saw(渲染你曾见到的任何物体)的首字母缩写,这个名字也是卢卡斯影业以前所在地——加州Reyes海角的名字,因此Reyes是双关语,它还暗指和光学影像系统有关的过程。根据罗伯特·库克的说法,Reyes的正确写法是首字母大写,其余小写,和1987年库克/卡彭特/卡特姆的SIGGRAPH论文中一样。

Reyes架构的设计遵从以下目标:

  • 模型复杂性和多样性:为了产生复杂和样式丰富的图像,渲染系统的用户必须能通过分形粒子系统等,经由编写程序生成大量复杂的几何结构。
  • 复杂着色:场景的复杂度通常由光线和物体表面的相互作用产生。通常,在计算机图形学里,这是通过使用纹理来表现的,纹理可以是一组像素,用于描述表面位移(置换)、透明度或反射率等。Reyes允许用户用计算机程序来描述表面结构和光学互作用,而不是简单的数据查询表,并和可编程着色器结合。算法的一个重要目标是减少处理器从存储器中读取纹理的时间。
  • 避免光线追踪:Reyes架构提出的时候,计算机的处理能力和存储量都很有限,意味着使用光线追踪需要耗费几万小时才能渲染完一个图像,Reyes算法避免使用光线追踪,因此渲染快的多,并且图像也非常逼真。
  • 速度:(单个计算机)一年能渲染完成一部每秒24帧的两小时影片,即平均每帧只需要渲染3分钟。
  • 图像质量:任何图像,若带有无用的、因算法导致的缺陷,都是不可接受的。
  • 灵活性:该架构必须足够灵活,在引入新技术时,不需把算法完全重写。

Reyes算法能很高效的渲染一些电影画面要求的必不可少的效果:光滑的曲面、表面纹理、运动模糊景深

Reyes渲染流程

Reyes算法通过把参数曲面分割成微多边形(micropolygon)——小于一个像素的四边形,来渲染光滑曲面。虽然要精确逼近曲面需要很多微多边形,不过他们可以简单并行的进行处理。Reyes渲染器对高级的几何图形进行细分时,会根据需要来进行,它只需要刚好细分到使图形在最终图像中看起来光滑的程度。

然后,一个着色系统给微多边形的每个顶点赋予一个颜色和透明度,许多Reyes渲染器允许用户使用着色语言编写任意的灯光和纹理函数。微多边形可以在一个大的网格里进行处理,因此可以进行并行向量处理。

经过着色的微多边形在屏幕空间进行采样,以生成输出图像。Reyes引入了一个开创性的隐面判别算法或者叫hider,算法对运动模糊和景深进行必要的整合,而无需比未加模糊的渲染使用更高的模型和着色采样数。hider通过一种称为随机采样蒙特卡洛方法收集一定时间和镜头位置内每个像素里微多边形的颜色。

基本Reyes渲染管线工序

  1. Bound,计算几何图形的边界。
  2. Split,把大的图形分割为更小的图形。
  3. Dice,把图形转换成微多边形网格,每个大概一个像素大小。
  4. Shade,计算每个微多边形网格顶点的灯光和颜色。
  5. Bust,把网格炸开成单个的微多边形,对每个计算边界并判断是否可见。
  6. Hide,对微多边形进行采样,并生成最后的平面图像。

在这个设计中,渲染器必须把整个图像缓存在内存中,因为必须把所有的图形都处理完成以后才能输出最终图像。一般在dice步骤之前会进行一步叫bucketing的常见内存优化,这一步中,输出图像被分割成若干指定大小的小块,通常每一块是16x16像素大小,之后,场景中的物体沿着每小块的大致边缘按照位置分割到不同的块里,然后每个小块分别进行处理,处理下一小块之前会先丢弃上一个小块的数据。如此只有当前的小块区域里的图形被加载到内存里,通常的情况下,这种处理能比未修改的Reyes算法显著的减少内存的使用。

http://zh.wikipedia.org/wiki/Reyes%E6%B8%B2%E6%9F%93%E6%9E%B6%E6%9E%84


8.GI

实时全局光照

9.IBL

image based lighting  基于图像的照明(cubemap)

10.SVOGI

Sparse Voxel Octree Global Illumination

11.res(resolution)

分辨率


12.双曲函数

http://baike.baidu.com/link?url=3d7DBH8LZbYbrzvsnh4JPOfwyqQnnCej87WdrIEtYijU2xSdwIxwm-rB5xpUfOqXpUc3zRQIhU17qjIhwa4aQq

数学中,双曲函数类似于常见的(也叫圆函数的)三角函数。基本双曲函数是双曲正弦“sinh”,双曲余弦“cosh”,从它们导出双曲正切“tanh”等。也类似于三角函数的推导。反函数是反双曲正弦“arsinh”(也叫做“arcsinh”或“asinh”)依此类推。




双曲函数出现于某些重要的 线性微分方程的解中,譬如说定义 悬链线拉普拉斯方程
如同点 (cost,sint) 定义一个圆,点 (cosh t,sinh t) 定义了右半直角 双曲线x- y= 1。这基于了很容易验证的恒等式
参数 t 不是圆角而是双曲角,它表示在 x 轴和连接原点和双曲线上的点 (cosh t,sinh t) 的直线之间的面积的两倍。
函数 cosh x 是关于 y 轴对称的偶函数。函数 sinh x 是奇函数,就是说 -sinh x = sinh (-x) 且 sinh 0 = 0。


y=sinh x,定义域:R,值域:R,奇函数,函数图像为过原点并且穿越Ⅰ、Ⅲ象限的严格单调递增 曲线,函数图像关于原点对称。
y=cosh x,定义域:R,值域:[1,+∞),偶函数,函数图像是 悬链线,最低点是(0,1),在Ⅰ象限部分是严格单调递增曲线,函数图像关于y轴对称。
y=tanh x,定义域:R,值域:(-1,1),奇函数,函数图像为过原点并且穿越Ⅰ、Ⅲ象限的严格单调递增曲线,其图像被限制在两水平 渐近线y=1和y=-1之间。
y=coth x,定义域:{x|x≠0},值域:{x||x|>1},奇函数,函数图像分为两支,分别在Ⅰ、Ⅲ象限,函数在(-∞,0)和(0,+∞)分别单调递减,垂直渐近线为y轴,两水平渐近线为y=1和y=-1。
y=sech x,定义域:R,值域:(0,1],偶函数,最高点是(0,1),函数在(0,+∞)严格单调递减,(-∞,0)严格单调递增。x轴是其渐近线。
y=csch x,定义域:{x|x≠0},值域:{x|x≠0},奇函数,函数图像分为两支,分别在Ⅰ、Ⅲ象限,函数在(-∞,0)和(0,+∞)分别单调递减,垂直渐近线为y轴,两水平渐近线为x轴。


13.贝塞尔函数

http://baike.baidu.com/link?url=1fF-oIgIpoLfZdQIHg123EI61QbyvBBKbZPrwMSz8iIR80coEbvXGUwAQZjnrj6rSXBvJQgzlk3iXbuNqxNfdK#2_4

第一类贝塞尔函数


  第一类&alpha;阶贝塞尔函数''J''<sub>&alpha;</sub>(''x'')是贝塞尔方程当&alpha;为整数或&alpha;非负时的解,须满足在''x'' = 0 时有限。这样选取和处理''J''<sub>&alpha;</sub>的原因见本主题下面的贝塞尔函数#性质|性质介绍;另一种定义方法是通过它在''x'' = 0 点的 泰勒级数展开(或者更一般地通过 幂级数展开,这适用于&alpha;为非整数):
  
http://g.hiphotos.baidu.com/baike/s%3D249/sign=d290d4b430fa828bd5239ae7c41e41cd/d31b0ef41bd5ad6eb36a345b82cb39dbb7fd3ceb.jpg
上式中
为Γ函数(它可视为 阶乘|阶乘函数向非整型 因变量和自变量|自变量的推广)。第一类贝塞尔函数的形状大致与按<math>1/\sqrt x </math>速率衰减的正弦或三角函数|余弦函数类似(参见本页下面对它们渐进形式的介绍),但它们的零点并不是 周期性的,另外随着''x''的增加,零点的间隔会越来越接近周期性。图2所示为0阶、1阶和2阶第一类贝塞尔函数<math>J_\alpha (x)</math>的曲线(<math>\alpha = 0, 1, 2</math>)。
  如果&alpha;不为整数,则<math>J_\alpha (x)</math>和<math>J_{-\alpha} (x)</math>线性无关,可以构成微分方程的一个'''解系'''。反之若<math>\alpha</math>是整数,那么上面两个函数之间满足如下关系:
  :<math>J_{-\alpha}(x) = (-1)^{\alpha} J_{\alpha}(x)\,</math>
  于是两函数之间已不满足线性无关条件。为寻找在此情况下微分方程与<math>J_\alpha (x)</math>线性无关的另一解,需要定义'''第二类贝塞尔函数''',定义过程将在后面的小节中给出。


14.方位角(azimuths)


http://baike.baidu.com/link?url=lh9XTmb9RI2kVzkULIBzcM9CpWBZG2PfwEiNwThJVMWCefw9OjZfsLvxfre3if86AvB1uzRa33WBb7mlKUTRLx7vVeIIYGzXACYS4IhuqqZHoKztYecHKQPUWnvgIV2XvfcNM2mp4ajFby3tGsz55K


由于每点都有真北、磁北和坐标纵线北三种不同的指北方向线,因此,从某点到某一目标,就有三种不同方位角。
(1)真方位角。某点指向 北极的方向线叫真北方向线,而经线,也叫真子午线。
由真子午线方向的北端起,顺时针量到直线间的 夹角,称为该直线的真方位角,一般用A表示。通常在精密测量中使用。
(2)磁方位角。地球是一个大磁体,地球的磁极位置是不断变化的
,某点指向磁北极的方向线叫磁北方向线,也叫磁子午线。在地形图南、北图廓上的磁南、磁北两点间的直线,为该图的磁子午线。由磁子午线方向的北端起,顺时针量至直线间的夹角,称为该直线的磁方位角,用Am表示。
(3)坐标方位角。坐标纵轴方向的北端起,顺时针量到直线间的夹角,称为该直线的坐标方位角,常简称方位角,用a表示。

15.Rayleigh Scattering瑞利散射


瑞利散射Rayleigh scattering)由英国物理学家瑞利的名字命名。它是半径比波长小很多的微粒对入射光的散射。瑞利散射光的强度和入射光波长λ的4次方成反比:

I(\lambda)_{scattering} \propto \frac{ I(\lambda)_{incident}}{\lambda^4}

其中\scriptstyle I(\lambda)_{incident}是入射光的光强分布函数。

也就是说,波长较短的蓝光比波长较长的红光更易散射。

瑞利散射可以解释天空为什么是蓝色的。白天,太阳在我们的头顶,当日光经过大气层时,与空气分子(其半径远小于可见光的波长)发生瑞利散射,因为蓝光比红光波长短,瑞利散射发生的比较激烈,被散射的蓝光布满了整个天空,从而使天空呈现蓝色,但是太阳本身及其附近呈现白色或黄色,是因为此时你看到更多的是直射光而不是散射光,所以日光的颜色(白色)基本未改变——波长较长的红黄色光与蓝绿色光(少量被散射了)的混合。

当日落或日出时,太阳几乎在我们视线的正前方,此时太阳光在大气中要走相对很长的路程,你所看到的直射光中的蓝光大量都被散射了,只剩下红橙色的光,这就是为什么日落时太阳附近呈现红色,而天空的其它地方由于光线很弱,只能说是非常昏暗的蓝黑色。如果是在月球上,因为没有大气层,天空即使在白天也是黑的。


米氏散射(Mie scattering)   
米氏发表了任何尺寸均匀球形粒子散射问题的严格解,具有极大的实用价值,可以研究雾、云、日冕、胶体和金属悬浮液的散射等。   当大气中粒子的直径与辐射的波长相当时发生的散射称为米氏散射。   这种散射主要由大气中的微粒,如烟、尘埃、小水滴及气溶胶等引起。米氏散射的辐射强度与波长的 二次方成反比,散射在光线向前的方向比向后的方向更强,方向性比较明显。如云雾的粒子大小与红外线(0.7615um)的波长接近,所以云雾对红外线的辐 射主要是米氏散射。是故,多云潮湿的天气对米氏散射的影响较大。

16.DOF

Depth Of Field  (缩写啊。。= =;)

17.CIE 1976 (L*, a*, b*) 色彩空间 (CIELAB)

http://blog.163.com/manzanillo@126/blog/static/63883857201051142734264/


CIE 1976 (L*, a*, b*) 色彩空间 (CIELAB)
CIE L*a*b* (CIELAB)
是惯常用来描述人眼可见的所有颜色的最完备的色彩模型。它是为这个特殊目的而由国际照明委员会(Commission Internationale d'Eclairage 的首字母是CIE)提出的。L、a 和 b 后面的星号(*)是全名的一部分,因为它们表示 L*, a* 和 b*, 不同于 L, a 和 b。因为红/绿和黄/蓝对立通道被计算为(假定的)锥状细胞响应的类似孟塞尔值的变换的差异,CIELAB 是 Adams 色彩值(Chromatic Value)空间。
三个基本坐标表示颜色的亮度(L*, L* = 0 生成黑色而 L* = 100 指示白色),它在红色/品红色和绿色之间的位置(a* 负值指示绿色而正值指示品红)和它在黄色和蓝色之间的位置(b* 负值指示蓝色而正值指示黄色)。


18.导航名词

航线 : 若干有路由性质(可能只有AB两点)的航点组合
航迹 : 行走轨迹,以一定的时间间隔连续记录下一串航点的记录
通俗的说法:
航点:每个点的详细信息,也就是指的位置
航线:你所走的线路就叫做航线
航迹:由每个点组合在一起,就够成了航迹

19.YUV

http://baike.baidu.com/link?url=WCzIwfRqN-CkstM5Iv6yiXTZm2QzXw4cQLly-lR2-JqQ7ZyAfuNJefj6QUtFX2CKBNQCI89HVFsCTAWTf0UG3q

YUV主要用于优化彩色视频信号的传输,使其向后相容老式 黑白电视。与RGB 视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立的视频信号同时传输)。其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V” 表示的则是 色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。“亮度”是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起。“色度”则定义了颜色的两个方面─色调与饱和度,分别用Cr和Cb来表示。其中,Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异。而Cb反映的是RGB输入信号蓝色部分与RGB信号亮度值之间的差异。
采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有Y信号分量而没有U、V分量,那么这样表示的图像就是黑白 灰度图像彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与 黑白电视机的兼容问题,使黑白电视机也能接收彩色电视信号。
对于 数字视频,定义了从 RGB 到两个主要 YUV 的转换。这两个转换都基于称为 ITU-R Recommendation BT.709 的规范。第一个转换是 BT.709 中定义用于 50-Hz 的较早的 YUV 格式。它与在 ITU-R Recommendation BT.601 中指定的关系相同, ITU-R Recommendation BT.601 也被称为它的旧名称 CCIR 601。这种格式应该被视为用于标准定义 TV分辨率(720 x 576) 和更低分辨率视频的首选 YUV 格式。它的特征由下面两个常量 Kr 和 Kb 的值来定义:
Kr = 0.299Kb = 0.114第二个转换为 BT.709 中定义用于 60-Hz 的较新 YUV 格式,应该被视为用于高于 SDTV 的 视频分辨率的首选格式。它的特征由下面两个不同的 常量值来定义:Kr = 0.2126Kb = 0.0722从 RGB 到 YUV 转换的定义以下列内容开始:L = Kr * R + Kb * B + (1 – Kr – Kb) * G然后,按照下列方式获得 YUV 值:
Y = floor(2^(M-8) * (219*(L–Z)/S + 16) + 0.5)U = clip3(0, 2^M-1, floor(2^(M-8) * (112*(B-L) / ((1-Kb)*S) + 128) + 0.5))V = clip3(0, 2^M-1, floor(2^(M-8) * (112*(R-L) / ((1-Kr)*S) + 128) + 0.5))其中
M 为每个 YUV 样例的位数 (M >= 8)。
Z 为黑电平变量。对于计算机RGB,Z 等于 0。对于 studio视频RGB,Z 等于 16*2,其中 N 为每个 RGB

样例的位数 (N >= 8)。S 为缩放变量。对于计算机RGB,S 等于 255。对于 studio视频RGB,S 等于 219*2。
函数floor(x) 返回大于或等于 x 的最大整数。函数clip3(x, y, z) 的定义如下所示:
clip3(x, y, z) = ((z < x) ? x : ((z > y) ? y : z))Y 样例表示亮度,U 和 V 样例分别表示偏向蓝色和红色的颜色偏差。Y 的标称范围为 16*2 到 235*2 。黑色表示为 16*2 ,白色表示为 235*2 。U 和 V 的标称范围为 16*2 到 240*2 ,值 128*2 表示中性色度。但是,实际的值可能不在这些范围之内。
对于 studio 视频 RGB 形式的输入数据,要使得 U 和 V 值保持在 0 到 2M-1 范围之内,必需进行剪辑操作。如果输入为计算机RGB,则不需要剪辑操作,这是因为转换公式不会生成超出此范围的值。
这些都是精确的公式,没有近似值。
在DirectShow中,常见的RGB格式有RGB1、RGB4、RGB8、RGB565、RGB555、RGB24、RGB32、ARGB32等;常见的YUV格式有YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV411、YUV420等。

20.Gfx

1、图形加速\图形加速器\显卡
(Graphics Force Express)
同意词Graphics Acceleration
2、GFX文件格式:GFX 是一套跨平台的图形生成包,底层模型大致参照了 SVG,展现层同时支持 SVG 和 VML,GFX 可以帮助用户生成基于网页的矢量图,能够做到动态生成以及和用户发生交互。能够支持的图形包括矩形(Rectangle),圆弧(Circle),椭圆(Ellipse),多边形(polygon),线(Line),路径(polygon),图片(Image),文本(Text),文本路径(TextPath)。是一种可用于交互的图形格式,目前常应用于DoJo,也运用于游戏星际争霸2上。

21.SSR

screen space rendering


22.bokeh焦外成像

摄影镜头光圈大小和拍摄距离决定了拍摄时的景深,相对于焦点位置,焦点前与焦点后的被拍摄物体会显得模糊,这个模糊区域被称为 焦外
焦外具体的模糊程度还受到镜头中镜片单体和组合的物理特性影响,形成了由镜头不同而得到的不同的焦点外的图像。于是 焦外成像这个技术名词出现了。
优秀的焦外成像柔顺而迷人,色彩过渡自然,丝毫不逊色于焦点处的图像魅力。

23.NURBS

NURBS是一种非常优秀的建模方式,在高级三维软件当中都支持这种建模方式。NURBS能够比传统的 网格建模方式更好地控制物体表面的曲线度,从而能够创建出更逼真、生动的造型。

NURBS是非均匀有理B 样条曲线(Non-Uniform Rational B-Splines)的缩写,NURBS由Versprille在其博士学位论文中提出,1991年, 国际标准化组织(ISO)颁布的工业产品数据交换标准STEP中,把NURBS作为定义工业产品几何形状的唯一数学方法。1992年,国际标准化组织又将NURBS纳入到规定独立于设备的交互图形编程接口的国际标准PHIGS(程序员层次交互图形系统)中,作为PHIGS Plus的扩充部分。Bezier、有理Bezier、均匀 B样条和非均匀B样条都被统一到NURBS中。
NURBS曲线和NURBS曲面在传统的制图领域是不存在的,是为使用计算机进行3D建模而专门建立的。在3D建模的内部空间用曲线和曲面来表现轮廓和外形。它们是用数学表达式构建的,NURBS数学表达式是一种复合体。在这里,只是简要地介绍一下NURBS的概念,来帮助了解怎样建立NURBS和NURBS物体为什么会有这样的表现。

24.Reinhard

Reinhard中文意思是莱因哈德
reinhard曝光的参数控制是将曝光方式控制在线性曝光和指数曝光之间的一种效果 burn=1为线性曝光burn=0为指数曝光
是一种现在很常用的曝光方式

25.马赫带

是1868年奥地利物理学家 E. 马赫发现的一种明度对比的视觉效应。是一种主观的边缘对比效应。当观察两块亮度不同的区域时,边界处亮度对比加强,使轮廓表现得特别明显。

马赫带(Mach band)马赫发现的一种明度对比现象。它是一种主观的边缘对比效应。当观察两块亮度不同的区域时,边界处亮度对比加强,使轮廓表现得特别明显。例如,将一个星形白纸片贴在一个较大的黑色圆盘上,再将圆盘放在色轮上快速旋转。可看到一个全黑的外圈和一个全白的内圈,以及一个由星形各角所形成的不同明度灰色渐变的中间地段。而且还可看到,在圆盘黑圈的内边界上,有一个窄而特别黑的环。由于不同区域的亮度的相互作用而产生明暗边界处的对比,使我们更好地形成轮廓知觉。这种在图形轮廓部分发生的主观明度对比加强的现象,称为边缘对比效应。边缘对比效应总是发生在亮度变化最大的边界区域。




26.蒙特·卡罗方法

蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。与它对应的是确定性算法。蒙特·卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛


当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。
工作过程
蒙特卡罗方法的解题过程可以归结为三个主要步骤:构造或描述概率过程;实现从已知概率分布抽样;建立各种估计量。
蒙特卡罗方法解题过程的三个主要步骤:
(1)构造或描述概率过程
对于本身就具有随机性质的问题,如粒子输运问题,主要是正确描述和模拟这个概率过 程,对于本来不是随机性质的确定性问题,比如计算定积分,就必须事先构造一个人为的概率过程,它的某些参量正好是所要求问题的解。即要将不具有随机性质的问题转化为 随机性质的问题。
(2)实现从已知概率分布抽样
构造了概率模型以后,由于各种概率模型都可以看作是由各种各样的概率分布构成的,因此产生已知概率分布的随机变量(或随机向量),就成为实现蒙特卡罗方法模拟实验的基本手段,这也是蒙特卡罗方法被称为随机抽样的原因。最简单、最基本、最重要的一个 概率分布是(0,1)上的均匀分布(或称矩形分布)。 随机数就是具有这种均匀分布的随机变量。 随机数序列就是具有这种分布的总体的一个简单子样,也就是一个具有这种分布的相互独立的随机变数序列。产生 随机数的问题,就是从这个分布的抽样问题。在计算机上,可以用物理方法产生 随机数,但价格昂贵,不能重复,使用不便。另一种方法是用 数学 递推公式产生。这样产生的序列,与真正的 随机数序列不同,所以称为伪随机数,或伪随机数序列。不过,经过多种 统计检验表明,它与真正的 随机数,或随机数序列具有相近的性质,因此可把它作为真正的随机数来使用。由已知分布随机抽样有各种方法,与从(0,1)上均匀分布抽样不同,这些方法都是借助于随机序列来实现的,也就是说,都是以产生随机数为前提的。由此可见,随机数是我们实现 蒙特卡罗模拟的基本工具。
(3)建立各种估计量
一般说来,构造了概率模型并能从中抽样后,即实现模拟实验后,我们就要确定一个随机变量,作为所要求的问题的解,我们称它为无偏估计。建立各种 估计量,相当于对 模拟实验的结果进行考察和登记,从中得到问题的解。
数学应用:
通常蒙特·卡罗方法通过构造符合一定规则的随机数来解决数学上的各种问题。对于那些由于计算过于复杂而难以得到 解析解或者根本没有解析解的问题,蒙特·卡罗方法是一种有效的求出 数值解的方法。一般蒙特·卡罗方法在数学中最常见的应用就是蒙特·卡罗积分。

27.预渲染


简单的说,实时渲染就是每一帧都不假设任何条件,都是针对当时实际的光源,相机和材质参数进行光照计算——常见的D3D,OPENGL的光照计算。   
  预先渲染一般是固定光源,和物体的材质参数,通过其他的辅助工具,把光源对物体的光照参数输出成纹理贴图,在显示的时候不对物体进行光照处理,只进行贴图计算   
    
  预先渲染可以借助复杂的高效果的工具,对场景进行精细的长期的渲染,然后在浏览的时候直接利用这些以前渲染的数据来绘制,从而可以在保证渲染的速度的时候获得很好的渲染质量。   
  但是缺点是,不能很好的处理动态的光源和变化的材质,在交互性比较强的环境当中无法使用。

10.1.4  游戏中渲染与预渲染

镜头切换中一个为某些玩家所排斥而为另外一些玩家所推崇的方面(这种现象在过去尤为明显),就是玩家需要对游戏中过场动画和预渲染动画进行辨别。游戏中过场动画是使用游戏内置的美术资源和渲染引擎实时渲染的。预渲染过场动画则不同,它们通常是在3D应用程序中利用高分辨率美术资源创建并渲染的。最终制成的视频片段只是在游戏中回放一遍罢了。

随着Unreal Engine 3及其高质量的渲染系统的诞生,这两种渲染技术之间的界线已经变得模糊起来。使用游戏中美术资源制作的游戏中过场动画与使用高分辨率美术资源制成的现代影片具有同样高的视觉逼真度。Matinee系统也已焕然一新,并成为非线性全效特征的编辑器。在过去,只能通过预渲染得到的高质量的过场动画,现在可以在UnrealEd内部直接创建,并可以在游戏播放时更为简便地实时渲染了。

对于游戏开发者而言,这意味着游戏、游戏过场动画,以及过去用作宣传目的的动画,如今都可以共享美术资源,这样就节省了开发者制作的时间花费或是外包给其他艺术工作室制作过场动画的经费。这也意味着,过场动画和实际的游戏在视觉上不再有什么区别了。对于玩家而言,此问题历来都是至关重要的。商业宣传时使用的游戏广告看上去都惊人的逼真。而当玩家把游戏买回家开始运行时,才发现其画面与广告的画面完全不同。Unreal Engine 3提供的强大性能已经使这一鸿沟成为了历史。

28.光谱


光谱 (spectrum) :复色光经过色散系统(如 棱镜光栅分光后,被 色散开的 单色光波长(或频率)大小而依次排列的图案,全称为光学频谱。光谱中最大的一部分可见光谱是 电磁波谱中人眼可见的一部分,在这个波长范围内的 电磁辐射被称作可见光。光谱并没有包含人类大脑视觉所能区别的所有颜色,譬如褐色和粉红色。
光波是由 原子内部运动的 电子产生的。各种物质的原子内部电子的运动情况不同,所以它们发射的光波也不同。研究不同物质的发光和吸收光的情况,有重要的理论和实际意义,已成为一门专门的学科—— 光谱学
发射光谱
物体发光直接产生的光谱叫做发射光谱。只含有一些不连续的亮线的光谱叫做 明线光谱。明线光谱中的亮线叫做 谱线,各条谱线对应于不同波长的光。稀薄气体或金属的蒸气的发射光谱是明线光谱。明线光谱是由 游离状态原子发射的,所以也叫原子光谱。观察气体的 原子光谱,可以使用光谱管,它是一支中间比较细的封闭的玻璃管,里面装有 低压气体,管的两端有两个电极。把两个电极接到高压电源上,管里稀薄气体发生 辉光放电,产生一定颜色的光。
线状光谱
由狭窄谱线组成的光谱。单原子气体或金属蒸气所发的光波均有线状光谱,故线状光谱又称原子光谱。当 原子能量从较高 能级向较低能级跃迁时,就辐射出 波长单一的光波。严格说来这种波长单一的 单色光是不存在的,由于能级本身有一定宽度和 多普勒效应等原因,原子所辐射的 光谱线总会有一定宽度(见 谱线增宽);即在较窄的波长范围内仍包含各种不同的波长成分。原子光谱按波长的分布规律反映了原子的内部结构,每种原子都有自己特殊的光谱系列。通过对原子光谱的研究可了解原子内部的结构,或对 样品所含成分进行定性和定量分析。

带状光谱
由一系列光谱带组成,它们是由分子所辐射,

故又称分子光谱。利用高分辨率光谱仪观察时,每条谱带实际上是由许多紧挨着的谱线组成。带状光谱是分子在其振动和 转动能级间跃迁时辐射出来的,通常位于 红外远红外区。通过对分子光谱的研究可了解分子的结构。

连续光谱
连续分布的包含有从红光到紫光各种色光的光谱叫做连续光谱。炽热的固体、液体和高压气体的发射光谱是 连续光谱。例如电灯丝发出的光、炽热的钢水发出的光都形成连续光谱。
原子光谱
观察固态或液态物质的原子光谱,可以把它们放到煤气灯的 火焰电弧中去烧,使它们气化后发光。
实验证明,原子不同,发射的明线光谱也不同,每种元素的原子都有一定的明线光谱。彩图7就是几种元素的明线光谱。每种 原子只能发出具有本身特征的某些波长的光,因此,明线光谱的谱线叫做原子的 特征谱线。利用原子的特征谱线可以鉴别物质和研究原子的结构。
吸收光谱
高温物体发出的白光(其中包含连续分布的一切波长的光)通过物质时,某些波长的光被物质吸收后产生的光谱,(或具有连续谱的光波通过物质样品时,处于基态的样品原子或分子将吸收特定波长的光而跃迁到激发态,于是在连续谱的背景上出现相应的暗线或暗带),叫做吸收光谱。每种 原子或分子都有反映其能级结构的标识吸收光谱。研究吸收光谱的特征和规律是了解原子和分子内部结构的重要手段。吸收光谱首先由J.V.夫琅和费在 太阳光谱中发现(称 夫琅和费线),并据此确定了太阳所含的某些元素。

29.CIE

CIE色度图:




CIE的总部位于 奥地利维也纳
CIE目前约有40个成员国单位,大会每四年举办一次,至今已举办27届,与国际电工委员会(IEC国际规范化组织)ISO享有同等知名度的国际化专业组织。CIE共有七个分部
(Division)从事光和照明领域的研究:第一分部:视觉和颜色;第二分部:光与辐射的丈量;第三分部:内部环境和照明设计;第四分部:交通照明和信号;第五分部:外部
照明和其它应用;第六分部:光生物和光化学;第七分部:图像技术。原有第七分部在1999年并入其它分部。
会议期间将召开CIE大会、各分部(DⅣ)会议和技术委员会(TC)会议。按照惯例,在每届大会之前要召开CIE理事会,并进行换届安排确认和新一届理事会的工作安排,在2011年第27次大会上,来自中国的崔中平教授当选为第一个代表中国大陆的CIE副主席(VP)、复旦大学林燕丹教授成为第一个当选分部副部长(AD)的中国专家。






颜色是一门很复杂的学科,它涉及到物理学、生物学、心理学和材料学等多种学科。颜色是人的大脑对物体的一种主观感觉,用 数学方法来描述这种感觉是一件很困难的事。现在已经有很多有关颜色的理论、测量技术和颜色标准,但是到目前为止,似乎还没有一种人类感知颜色的理论被普遍接受。
RGB模型采用物理 三基色,其物理意义很清楚,但它是一种与设备相关的 颜色模型。每一种设备(包括人眼和现在使用的扫描仪、监视器和打印机等)使用RGB模型时都有不太相同的定义,尽管各自都工作很圆满,而且很直观,但不能相互通用。
为了从基色出发定义一种与设备无关的颜色模型,1931年9月国际照明委员会在英国的 剑桥市召开了具有历史意义的大会。CIE的颜色科学家们试图在RGB模型基础上,用数学的方法从真实的基色推导出理论的三基色,创建一个新的颜色系统,使颜料、染料和印刷等工业能够明确指定产品的颜色。会议所取得的主要成果包含:
1、 定义了标准观察者(Standard Observer)标准:普通人眼对颜色的响应。该标准采用想象的X,Y和Z三种基色,用颜色匹配函数(color-matching function)表示。颜色匹配实验使用2°的视野(field of view);
2、定义了 标准光源(Standard Illuminants):用于比较颜色的光源规范;
3、定义了CIE XYZ基色系统:与RGB相关的想象的基色系统,但更适用于颜色的计算;
4、定义了CIE xyY颜色空间:一个由XYZ导出的颜色空间,它把与颜色属性相关的x和y从与 明度属性相关的亮度Y中分离开;
5、定义了CIE色度图(CIE chromaticity diagram):容易看到颜色之间关系的一种图。
其后,国际照明委员会的专家们对该系统做了许多改进,包括1964年根据10°视野的实验数据,添加了补充标准观察者(Supplementary Standard Observer)的定义。
1976年国际照明委员会又召开了一次具有历史意义的会议,试图解决1931的CIE系统中所存在两个问题:
1、该规范使用明度和色度不容易解释物理刺激和颜色感知响应之间的关系;
2、 XYZ系统和在它的色度图上表示的两种颜色之间的距离与颜色观察者感知的变化不一致,这个问题叫做感知均匀性(perceptual uniformity)问题,也就是颜色之间数字上的差别与视觉感知不一致。
为了解决颜色空间的感知一致性问题,专家们对CIE 1931 XYZ系统进行了非线性变换,制定了CIE 1976 L*a*b*颜色空间的规范。事实上,1976年CIE规定了两种 颜色空间,一种是用于自照明的颜色空间,叫做CIELUV,另一种是用于非自照明的颜色空间,叫做CIE 1976 L*a*b*,或者叫CIELAB。这两个颜色空间与颜色的感知更均匀,并且给了人们评估两种颜色近似程度的一种方法,允许使用 数字量 ΔE表示两种颜色之差。
CIE XYZ是国际照明委员会在1931年开发并在1964修订的CIE颜色系统(CIE Color System),该系统是其他颜色系统的基础。它使用相应 于红、绿和蓝三种颜色作为三种基色,而所有其他颜色都从这三种颜色中导出。通过相加混色或者相减混色,任何色调都可以使用不同量的基色产生。虽然大多数人可能一辈子都不直接使用这个系统,只有颜色科学家或者某些计算机程序中使用,但了解它对开发新的颜色系统、编写或者使用与颜色相关的应用程序都是有用的。
按照三基色原理,颜色实际上也是物理量,人们对物理量就可以进行计算和度量。根据这个原理就产生了用红、绿和蓝单光谱基色匹配所有可见颜色的想法,并且做了许多实验。1931年国际照明委员会综合了不同实验者的实验结果,得到了RGB颜色匹配函数(color matching functions),其 横坐标表示光谱波长,纵坐标表示用以匹配光谱各色所需要三基色刺激值,这些值是以等能量白光为标准的系数,是观察者实验结果的平均值。为了匹配在438.1 nm和546.1 nm之间的 光谱色,出现了负值,这就意味匹配这段里的光谱色时,混合颜色需要使用 补色才能匹配。虽然使用正值提供的色域还是比较宽的,但像用RGB相加混色原理的CRT虽然可以显示大多数颜色,但不能显示所有的颜色。
CIE 1931 RGB使用红、绿和蓝三基色系统匹配某些可见光谱颜色时,需要使用基色的负值,而且使用也不方便。由于任何一种基色系统都可以从一种 系统转换到另一种系统,因此人们可以选择想要的任何一种基色系统,以避免出现负值,而且使用也方便。1931年国际照明委员会采用了一种新的颜色系统,叫做CIE XYZ系统。这个系统采用想象的X,Y和Z三种基色,它们与可见颜色不相应。CIE选择的X,Y和Z基色具有如下性质:
1、 所有的X,Y和Z值都是正的,匹配光谱颜色时不需要一种负值的基色;
2、用Y值表示人眼对亮度(luminance)的响应;
3、 如同RGB模型,X,Y和Z是相加基色。因此,每一种颜色都可以表示成X,Y和Z的混合。
根据视觉的数学模型和颜色匹配实验结果,国际照明委员会制定了一个称为 “1931 CIE 标准观察者”的规范,实际上是用三条曲线表示的一套颜色匹配函数,因此许多文献中也称为“CIE 1931标准匹配函数”。在颜色匹配实验中,规定观察者的视野角度为2度,因此也称 标准观察者的三基色刺激值(tristimulus values)曲线。
CIE 1931标准匹配函数中的横坐标表示可见光谱的波长,纵坐标表示基色X,Y和Z的相对值。三条曲线表示X,Y和Z三基色刺激值如何组合以产生可见光谱中的所有颜色。例如,要匹配波长为450 nm的颜色(蓝/紫),需要0.33单位的X基色,0.04单位的Y基色和1.77单位的Z基色。
计算得到的数值(X,Y,Z)可以用三维图表示。图中只表示了从400 nm (紫色)到700 nm (红色)之间的三基色刺激值,而且所有数值都落在正XYZ象限的锥体内。
可以看到:
1、所有的坐标轴都不在这个实心锥体内;
2、 相应于没有光照的黑色位于坐标的原点;
3、曲线的边界代表纯光谱色的三基色刺激值,这个边界叫做光谱轨迹(spectral locus);
4、光谱轨迹上的波长是单一的,因此其数值表示可能达到的最大饱和度;
5、所有的可见光都在锥体上。
CIE XYZ的三基色刺激值X,Y和Z对定义颜色很有用,其缺点是使用比较复杂,而且不直观。因此,1931年国际照明委员会为克服这个不足而定义了一个叫做CIE xyY的 颜色空间
定义CIE xyY颜色空间的根据是,对于一种给定的颜色,如果增加它的明度,每一种基色的光通量也要按比例增加,这样才能匹配这种颜色。因此,当颜色点离开原点(X=0,Y=0,Z=0)时,X:Y:Z的比值保持不变。此外,由于色度值仅与波长(色调)和 纯度有关,而与总的辐射能量无关,因此在计算颜色的色度时,把X,Y和Z值相对于总的辐射能量=(X+Y+Z)进行 规格化,并只需考虑它们的相对比例,因此,x,y,z称为三基色相对系数,于是配色方程可规格化为x+y+z=1。由于三个相对系数x,y,z之和恒为1,这就相当于把XYZ颜色锥体投影到X+Y+Z=1的平面上。
由于z可以从x+y+z=1导出,因此通常不考虑z,而用另外两个系数x和y表示颜色,并绘制以x和y为坐标的二维图形。这就相当于把X+Y+Z=1平面投射到(X,Y)平面,也就是Z=0的平面,这就是CIE xyY色度图。
在CIE xyY系统中,根据颜色坐标(x,y)可确定z,但不能仅从x和y导出三种基色刺激值X,Y和Z,还需要使用携带亮度信息的Y,其值与XYZ中的Y刺激值一致。
CIE xyY色度图是从XYZ直接导出的一个颜色空间,它使用亮度Y参数和颜色坐标x,y来描述颜色。xyY中的Y值与XYZ中的Y刺激值一致,表示颜色的亮度或者光亮度,颜色坐标x,y用来在 二维图上指定颜色,这种色度图叫做CIE 1931色度图(CIE 1931 Chromaticity Diagram)。例如一个点在色度图上的坐标是x=0.4832,y=0.3045,那么它的颜色与红苹果的颜色相匹配。
CIE 1931色度图是用标称值表示的CIE色度图,x表示红色分量,y表示绿色
CIE 1931 色彩空间色度图
分量。E点代表白光,它的坐标为(0.33,0.33);环绕在 颜色空间边沿的颜色是 光谱色,边界代表光谱色的最大饱和度,边界上的数字表示光谱色的波长,其轮廓包含所有的感知色调。所有单色光都位于舌形曲线上,这条曲线就是单色轨迹,曲线旁标注的数字是单色(或称光谱色)光的波长值;自然界中各种实际颜色都位于这条闭合曲线内;RGB系统中选用的物理三基色在色度图的舌形曲线上。

30.摩尔定律

摩尔定律是由 英特尔(Intel)创始人之一 戈登·摩尔(Gordon Moore)提出来的。其内容为:当价格不变时, 集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。换言之,每一美元所能买到的电脑性能,将每隔18-24个月翻一倍以上。这一定律揭示了信息技术进步的速度。
尽管这种趋势已经持续了超过半个世纪,摩尔定律仍应该被认为是观测或推测,而不是一个物理或 自然法。预计定律将持续到至少2015年或2020年 [1]  。然而,2010年国际半导体技术发展路线图的更新增长已经放缓在2013年年底,之后的时间里晶体管数量密度预计只会每三年翻一番。

31.vrml(Virtual Reality Modeling Language

VRML(Virtual Reality Modeling Language)即虚拟现实建模语言。是一种用于建立真实世界的场景模型或人们虚构的三维世界的场景建模语言,也具有平台无关性。是目前Internet上基于 WWW的三维互动网站制作的主流语言。 VRML是虚拟现实造型语言(Virtual Reality Modeling Language)的简称,本质上是一种面向web,面向对象的三维造型语言,而且它是一种解释性语言。VRML的对象称为结点,子结点的集合可以构成复杂的景物。结点可以通过实例得到复用,对它们赋以名字,进行定义后,即可建立动态的VR(虚拟世界)。

32.x3d

X3D是一种专为万维网而设计的三维图像标记语言。全称可扩展三维(语言),是由Web3D联盟 设计的,是 VRML 标准的最新的升级版本。 X3D 基于 XML 格式开发,所以可以直接使用 XML DOM 文档树、XML Schema 校验等技术和相关的 XML 编辑工具。目前 X3D 已经是通过 ISO 认证的国际标准。


33.亏格

亏格是 代数几何代数拓扑中最基本的概念之一。
定义:若曲面中最多可画出n条闭合曲线同时不将曲面分开,则称该曲面亏格为n
以实的 闭曲面为例,亏格 g 就是曲面上洞眼的个数。

34.费马大定理Fermat's last theorem

费马大定理,又被称为“费马最后的定理”,由法国数学家 费马提出。
它断言当整数n >2时,关于x, y, z的方程 x^n + y^n = z^n 没有正整数解。
被提出后,经历多人猜想辩证,历经三百多年的历史,最终在1995年被英国数学家 安德鲁·怀尔斯证明。

35.游戏开发箴言-奥卡姆剃刀定律

奥卡姆剃刀
  奥卡姆剃刀(Occam's Razor, Ockham's Razor)又称“奥康的剃刀”。

  奥卡姆剃刀,是由14世纪逻辑学家、圣方济各会修士奥卡姆的威廉(William of Occam,约1285年至1349年)提出。奥卡姆(Ockham)在英格兰的萨里郡,那是他出生的地方。他在《箴言书注》2卷15题说“切勿浪费较多东西去做用较少的东西同样可以做好的事情。”

  这个原理称为“如无必要,勿增实体”(Entities should not be multiplied unnecessarily)。有时为了显示其权威性,人们也使用它原始的拉丁文形式:

Pluralitas non est ponenda sine necessitate.  
Frustra fit per plura quod potest fieri per pauciora.  
Entia non sunt multiplicanda praeter necessitatem.
  公元14世纪,英国奥卡姆的威廉对当时无休无止的关于“共相”、“本质”之类的争吵感到厌倦,于是著书立说,宣传唯名论,只承认确实存在的东西,认为那些空洞无物的普遍性要领都是无用的累赘,应当被无情地“剃除”。

他所主张的“思维经济原则”,概括起来就是“如无必要,勿增实体。”因为他是英国奥卡姆人,人们就把这句话称为“奥卡姆剃刀”。

这把剃刀出鞘后,剃秃了几百年间争论不休的经院哲学和基督教神学,使科学、哲学从神学中分离出来,引发了欧洲的文艺复兴和宗教改革。同时,这把剃刀曾使很多人感到威胁,被认为是异端邪说,威廉本人也受到伤害。然而,这并未损害这把刀的锋利,相反,经过数百年越来越快,并早已超越了原来狭窄的领域而具有广泛的、丰富的、深刻的意义。

奥卡姆的代表作是《逻辑大全(Summa Logical)》(商务印书馆有中译本),书中指出,世界是由具体的事物构成,不存在包罗万象的实体,而逻辑学是独立于形而上学的自然哲学工具。科学是关于具体事物的,事物是个别的,但在词语中有共相,逻辑是研究共相、词语和概念的。奥卡姆使逻辑学独立于形而上学和神学之外。

36.功能蔓延 feature creep

日益增加的理想的特性,大大延长其完成所需的开发时间

特征蠕动(Feature Creep)(有时候也称为需求漂移或者是范围蠕动)是产品或项目的需要在除了最开始的预见之外,在开发过程中还产生了新的要求的趋势,它导致了刚开始没有计划到的特征,对产品的质量和计划也带来了风险.特征蠕动可能是由客户增长的“需求列表”或者是开发者本身看到改进该产品的机会所带来的.为了控制特征漂移,项目管理工具,比如需求稳定指数(RSI)有时候被大家提倡.

功能蔓延(feature creep),有时也被称为需求蔓延(requirements creep)或范围蔓延(scope creep),它是指在发展过程中产品或设计的需求增加大大超过他们原来预期的趋势,导致其功能不是原本计划的并且要承担产品质量或生产进度的风险。功能蔓延可能是由于客户期望功能的增加或由于开发者自身发现了改善产品的机会而导致的。为了控制功能蔓延,设计管理工具有时被提倡使用,比如需求稳定性索引(RSI)。 

37.原语

原语 操作系统或计算机网络用语范畴。是由若干条指令组成的,用于完成一定功能的一个过程。primitive or atomic action 是由若干个机器指令构成的完成某种特定功能的一段程序,具有不可分割性·即原语的执行必须是连续的,在执行过程中不允许被中断。


介绍

操作系统用语范畴。
是由若干条指令组成的,用于完成一定功能的一个过程。
primitive or atomic action 是由若干个机器指令构成的完成某种特定功能的一段程序,具有不可分割性.即原语的执行必须是连续的,在执行过程中不允许被中断

分类

计算机网络中也有“原语”一词,它与操作系统的“原语”概念不同。服务原语是指协议中的下层协议通过接口为上层协议提供某种服务而发送的原语操作。
原语分为四类:请求(Req)型原语,用于高层向低层请求某种业务;证实(Cfm)型原语,用于提供业务的层证实某个动作已经完成;指示(Ind)型原语,用于提供业务的层向高层报告一个与特定业务相关的动作;响应(Res)型原语,用于应答,表示来自高层的指示原语已收到

组成及功能

原语通常由若干条指令组成,用来实现某个特定的操作。通过一段不可分割的或不可中断的程序实现其功能。原语是操作系统的核心,它不是由进程而是由一组程序模块所组成,是操作系统的一个组成部分,它必须在管态(一种机器状态,管态下执行的程序可以执行特权和非特权两类指令,通常把它定义为操作系统的状态)下执行,并且常驻内存,而个别系统有一部分不在管态下运行。原语和广义指令都可以被进程所调用,两者的差别在于原语有不可中断性,它是通过在执行过程中关闭中断实现的,且一般由系统进程调用。许多广义指令的功能都可用目态(一种机器状态,通常把它作为用户程序执行时的状态)下运行的系统进程完成,而不一定要在管态下完成,例如文件的建立、打开、关闭、删除等广义指令,都是借助中断进入管态程序,然后转交给相应的进程,最终由进程实现其功能。引进原语的主要目的是为了实现进程的通信和控制。

38.GC

Garbage Collection垃圾回收

GC(Garbage Collection):JAVA/ .NET中的垃圾收集器。Java是由 C++发展来的。它摈弃了C++中一些繁琐容易出错的东西。其中有一条就是这个GC。而 C#又借鉴了JAVA。
在老式的C/C++程序中,程序员定义了一个变量,就是在内存中开辟了一段相应的空间来存值。由于内存是有限的,所以当程序不再需要使用某个变量的时候,就需要销毁该对象并释放其所占用的内存资源,好重新利用这段空间。在C/C++中,释放无用变量内存空间的事情需要由程序员自己来处理。就是说当程序员认为变量没用了,就手动地释放其占用的内存。但是这样显然非常繁琐,如果有所遗漏,就可能造成资源浪费甚至 内存泄露。当软件系统比较复杂,变量多的时候程序员往往就忘记 释放内存或者在不该释放的时候释放内存了。
有了GC,程序员就不需要再手动的去控制内存的释放。当 Java虚拟机(VM)或.NET CLR发觉内存资源紧张的时候,就会自动地去清理无用对象(没有被引用到的对象)所占用的内存空间(这里的说法略显粗略,事实上何时清理内存是个复杂的策略)。如果需要,可以在程序中显式地使用System.gc() / System.GC.Collect()来强制进行一次立即的内存清理。 Java提供的GC功能可以自动监测对象是否超过了作用域,从而达到自动回收内存的目的,Java的GC会自动进行管理,调用方法:System.gc() 或者Runtime.getRuntime().gc();

39.soak test

浸泡测试(soak test):Soak test是在一个稳定的并发用户上进行的long run测试,用来测试应用程序的健壮性。通过soak test往往可以发现内存泄露,频繁 GC 
等严重性能问题。进行soak test需要注意以下两点:
Soak test需要在一定适中的用户负载量下进行,最好低于应用支持最大的负载量。
在执行long run测试时,采用几种不同用户组,并且每个用户组织性不同的业务流程。

Soak 
test实际上比较简单的性能测试,测试最好能够运行几天,以真正得到一个健壮的应用。确保应用测试是贴近真实世界,尽量与实际使用情况接近。

Soak testing involves testing a system with a significant load extended over a significant period of time, to discover how the system behaves under sustained use.
For example, in software testing, a system may behave exactly as expected when tested for 1 hour. However, when it is tested for 3 hours, problems such as memory leaks cause the system to fail or behave randomly.
Soak tests are used primarily to check the reaction of a subject under test under a possible simulated environment for a given duration and for a given threshold. Observations made during the soak test are used to improve the characteristics of the subject under test further.
In electronics, soak testing may involve testing a system up to or above its maximum ratings for a long period of time. Some companies may soak test a product for a period of many months, while also applying external stresses such as elevated temperatures.
This falls under stress testing.

40.魔数magic number

在代码中出现但没有解释的数字 常量或字符串称为魔数 (magic number)或魔字符串。

41.IDE集成开发环境

IDE,即Integrated Development Environment,是“集成开发环境”的英文缩写,可以辅助开发程序的应用软件。
软件是用于程序开发环境的应用程序,一般包括代码编辑器、 编译器、调试器和 图形用户界面工具。就是集成了代码编写功能、分析功能、编译功能、debug功能等一体化的开发软件套。所有具备这一特性的软件或者软件套(组)都可以叫做IDE。如微软的VisualStudio系列,Borland的C++Builder,Delphi系列等。该程序可以独立运行,也可以和其它程序并用。例如,BASIC语言在微软 办公软件中可以使用,可以在微软Word文档中编写WordBasic程序。IDE为用户使用VisualBasic、Java和PowerBuilder等现代编程语言提供了方便。不同的技术体系有不同的IDE。比如可以称为C++、VB、C#、易语言等语言的集成开发环境,所以可以叫做IDE。同样,Borland的JBuilder也是一个IDE,它是Java的IDE。zendstudio、editplus、ultraedit这些,每一个都具备基本的编码、调试功能,所以每一个都可以称作IDE。
IDE多被用于开发HTML应用软件。例如,许多人在设计网站时使用IDE(如HomeSite、DreamWeaver、FrontPage,等等),因为很多项任务会自动生成。IDE集成代码编辑,代码生成,界面设计,调试,编译等功能,目前还融合了建模功能。

42.self语言

Self语言,是一种基于原型的面向对象程序设计语言,于1986年由施乐帕洛阿尔托研究中心的David Ungar和Randy Smith给出了最初的设计。

原则

Self语言把概念上的精简作为设计原则。它取消了 的概念,只有 对象的概念,同时把 消息作为最基本的操作。把 对象属性理解为获取或更改属性这两种 方法,从而把属性的概念简化为 方法;取消了 变量赋值,替代它们的是通过 消息来读槽和写槽。

程序

在发展Self的过程中,Self的设计研究人员也探索了Self的 程序设计。他们提出了traits的概念,用 对象实现了名字(对象名或 方法名)的管理,用动态继承实现模式转换。
在实现Self系统的过程中,设计研究人员发展出了一种适应性编译(adaptive compilation)技术。这种技术的采用提高了Self代码的执行效率。

43.first class

类型,定义了一个取值的集合,以及可作用的操作的集合。如C语言的int类型有一个上下界,可进行加减乘除等操作。变量可能有 int,float,string。。等类型,函数、对象等也有类型。

进一步,我们把类型分为三类:
First Class。该类型的值可以作为函数的参数和返回值,也可以赋给变量。
Second Class。该类型的值可以作为函数的参数,但不能从函数返回,也不能赋给变量。
Third Class。该类型的值作为函数参数也不行

多数程序语言中的整型、字符类型都是First Class的。在函数式语言(或支持函数式的语言)中,函数也是First Class的,或者说函数是“一等公民”。以函数为参数或返回值的函数称为“高阶函数”。
Scheme的Continuation也是First Class的

First class function意义何在?

结构化程序设计的精髓在于模块复用和访存控制。如果说函数实现了代码复用,那么在支持First Class Function的语言中,高阶函数作为函数之间的胶水,进一步方便了函数的复用。

学函数式语言,基本都会遇到map, reduce, filter, zip这些经典的高阶函数。
学习Fortran、C语言时,我们习惯通过传参、返回值,来实现函数的交互、复用,然而传的参数大部分只是基础数据类型。高阶函数、递归数据类型,实现了不同程序模块间更方便地交互与复用。

更自由、细粒度的模块化,程序员用得飞起,需要自己“设计”的也多了。Huges指出“采用函数式编程的程序员必须努力确保程序使用更小、更简单、更通用的模块”,这构成了新的挑战


44.Race Condition引起的性能问题 

Race Condition(也叫做资源竞争),是多线程编程中比较头疼的问题。特别是Java多线程模型当中,经常会因为多个线程同时访问相同的共享数据,而造成数据的不一致性。为了解决这个问题,通常来说需要加上同步标志“ synchronized”,来保证数据的串行访问。但是“ synchronized”是个性能杀手,过多的使用会导致性能下降,特别是扩展性下降,使得你的系统不能使用多个CPU资源。  这是我们在性能测试中经常遇见的问题。


45.时间戳timestamp

http://baike.baidu.com/link?url=86cyudgDdVcQ7BASz-GUySeAixaJ_C46ZOjGmYB2WB9wvewGZicRSqi3eKEMBA9AwzFNcLT0kijJqg19CvJRca

时间戳(timestamp),通常是一个字符序列,唯一地标识某一刻的时间。数字时间戳技术是数字签名技术一种变种的应用。


46.指令缓存

http://baike.baidu.com/link?url=SCrMgc0nPFiLAQOx9uN55szJVmumrM6mcs6-ddW5UZT09r8fUI9GYDMMrSFNNp8aZVyQFnsJYCsGt-ikM-6yua

CPU缓存(Cache Memory)位于CPU与内存之间的临时存储器,它的容量比内存小但交换速度快。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即 将访问的,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。


47.hardcode硬编码

在计算机程序或文本编辑中,硬编码是指将可变变量用一个固定值来代替的方法。用这种方法编译后,如果以后需要更改此变量就非常困难了。大部分程序语言里,可以将一个固定数值定义为一个标记,然后用这个特殊标记来取代变量名称。当标记名称改变时,变量名不变,这样,当重新编译整个程序时,所有变量都不再是固定值,这样就更容易的实现了改变变量的目的。尽管通过编辑器的查找替换功能也能实现整个变量名称的替换,但也很有可能出现多换或者少换的情况,而在计算机程序中,任何小错误的出现都是不可饶恕的。最好的方法是单独为变量名划分空间,来实现这种变化,就如同前面说的那样,将需要改变的变量名暂时用一个定义好的标记名称来代替就是一种很好的方法。通常情况下,都应该避免使用硬编码方法。 
java小例子: int a=2,b=2;
硬编码:if(a==2) return false;
不是硬编码 if(a==b) return true;
一个简单的版本:
顾名思义, 就是把数值写成常数而不是变量
如求圆的面积 的问题 PI(3.14)
3.14*r*r (这个3.14就是hardcode)
PI*r*r (这里的PI用的是变量形式,就不是hardcode)
C++例子:
int user[120];
如果突然在程序中出现下面一段代码
for (int i=0; i<120; i++){
...
}
120是什么,为什么是120?这里的120就属于数字式“硬编码”,这不仅让程序很难读,而且不易维护。如果要修改120,就的修改程序中所有与此有关的120。应将数字式“硬编码”声明成一个宏,这样程序不仅易读,而且还可以一改全改。
#define MAX_USER_CNT 120
for (int i=0; i<MAX_USER_CNT; i++){
...
} [1]  

48.Back Buffer

https://msdn.microsoft.com/en-us/library/ff604993.aspx

A back buffer is a render target whose contents will be sent to the device when GraphicsDevice.Present is called.

The graphics pipeline renders to a render target. The particular render target that the device presents to the display is called the back buffer. Use the BackBufferWidth and BackBufferHeight properties to get the back buffer dimensions. Render directly to the back buffer or to a render target by configuring the device using GraphicsDevice.SetRenderTarget and GraphicsDevice.SetRenderTargets.


49.Overdraw过度绘制

Overdraw( 过度绘制 )描述的是屏幕上的某个像素在同一帧的时间内被绘制了多次。

50.Depth Bias深度偏移

Depth Bias深度偏移

通过给多边形增加一个z方向深度偏移(depthbias,z_bias),使3D空间的共面多边形看起来好像并不共面,以便它们能够被正确渲染。这种技术是很有用的,例如,我们要渲染投射在墙上的阴影,这时候墙和阴影共面,如果没有深度偏移,先渲染墙,再渲染阴影,由于depthtest,阴影可能不能正确显示。我们给墙设置一个深度偏移,使它增大,例如z增加0.01,先渲染墙,再渲染阴影,则墙和阴影可以正确的显示。

   Depth-bias操作在clipping之后进行实施,所以depth-bias对几何clipping没有影响。另外需要注意的是:对一个给定体元(primitive),bias值是一个常量,在进行差值操作之前,它施加在每个顶点上。偏移操作都是32位浮点运算,还有Bias不能施加在点以及线体元上(除了线框模式的线段)。

转自http://blog.sina.com.cn/s/blog_61feffe10100ng4t.html

 Depth-bias操作在clipping之后进行实施,所以depth-bias对几何clipping没有影响。

另外需要注意的是:对一个给定体元(primitive),bias值是一个常量,在进行差值操作之前,它施加在每个顶点上。

偏移操作都是32位浮点运算,还有Bias不能施加在点以及线体元上(除了线框模式的线段)。

http://blog.csdn.net/claien/article/details/8971125

当2个片元距离近裁减平面 w  落在同一个区间的时候,他们的深度是相等的. 最终你所看到的结果,就是下面的这种样子:

注意到蓝圈里面.

如果避免发生Z-Fighting 才是关键. 注意到上面的depth - w 的位平面对应关系. 由于硬件都只能支持一定的深度格式,也就是说,Depth bits 是一定的,假为 D.而顶点的投影深度则毫无限制,他可以是 near_clip ---> far_clip 的任意一个浮点数.因此
      dw/D = (far_clip - near_clip)/near_clip;
    从上面可以看出, 要想dw 更精确,那么 near_clip 必然要更大(适用范围是far_clip >> near_clip).
上面那张存在depth-fighting 的截图当时的情况是 near_clip :0.0001 far_clip : 64000.0
下面的是在near_clip 0.1 far_clip 不变.


继续提高定点投影深度,也不会出现难看的深度冲突了.
要解决这个问题, 你只要google 或者去 beyond3d,等论坛,搜索 depth fighting ,得到的答案往往就是设置深度偏移. OpenGL : Polygon offset. D3D: Depth Bais.

http://blog.csdn.net/claien/article/details/8971125


51.Color bleeding (computer graphics)

https://en.wikipedia.org/wiki/Color_bleeding_(computer_graphics)

In computer graphics and 3D renderingcolor bleeding is the phenomenon in which objects or surfaces are colored byreflection of colored light from nearby surfaces.

Color Bleeding - The transfer of color between nearby objects or, caused by the colored reflection of indirect light. This is a visible effect that appears when a scene is rendered with Radiosity or full global illumination, or can otherwise be simulated by adding colored lights to a 3D scene.


52.Solid Angle立体角



53.设计模式之Dirty bit

https://en.wikipedia.org/wiki/Dirty_bit

dirty bit or modified bit is a bit that is associated with a block of computer memory and indicates whether or not the corresponding block of memory has been modified.[1] The dirty bit is set when the processor writes to (modifies) this memory. The bit indicates that its associated block of memory has been modified and has not yet been saved to storage. When a block of memory is to be replaced, its corresponding dirty bit is checked to see if the block needs to be written back to secondary memory before being replaced or if it can simply be removed. Dirty bits are used by the CPU cache and in the page replacement algorithms of an operating system.

Dirty bits can also be used in Incremental computing by marking segments of data that need to be processed or have yet to be processed. This technique can be used with delayed computing to avoid unnecessary processing of objects or states that have not changed. When the model is updated (usually by multiple sources), only the segments that need to be reprocessed will be marked dirty. Afterwards, an algorithm will scan the model for dirty segments and process them, marking them as clean. This ensures the unchanged segments are not recalculated and saves processor time.

Page replacement[edit]

When speaking about page replacement, each page (frame) may have a modify bit associated with it in the hardware. The dirty bit for a page is set by the hardware whenever any word or byte in the page is written into, indicating that the page has been modified. When we select a page for replacement, we examine its modify bit. If the bit is set, we know that the page has been modified since it was read in from the disk. In this case, we must write that page to the disk. If the dirty bit is not set, however, the page has not been modified since it was read into memory. Therefore, if the copy of the page on the disk has not been overwitten (by some other page, for example), then we can avoid writing the memory page to the disk: it is already there.[2]

54.薄透镜

http://baike.baidu.com/link?url=EFGmAQIGWzEMS76JQz2EEU0jG_bbKjzRyhiDeeobR7HQN2l61FXjCkNYvBbJ_Iil9ZNC7r241IIU-_4HneKHKq

薄透镜(thin lenses),在光学中,是指透镜的厚度(穿过光轴的两个镜子表面的距离)与焦距的长度比较时,可以被忽略不计的透镜。厚度不能被忽略的透镜有时会称为厚透镜。薄透镜的主要参数有焦距、色差、球差、折射率等。

一种很薄的透镜,它的厚度可以在计算物距、像距、放大率等时忽略不计.


早期的眼镜片,视做薄透镜。透镜的厚度被忽视,镜片的两个主点、两个节点被减化为一个光学中心点。通过这一点的光线不发生曲折。
薄透镜片的总镜度等于两个折射面镜度之和。D=D1+D2。
如D1=+6.00DS;D2=-8.00DS。则D=-2.00DS。
平行光线入射凸薄透镜可以会聚成一点,于 凹透镜会分散,其反向延长线也会聚一点(不考虑球面象差)。此点至镜片距离为该薄透镜的后焦距f',f'=1/D。
薄透镜的两折射面的镜度:D1=n-1/r1 D2=1-n/r2
D=D1+D2=(n-1)/r1+(1-n)/r2
=(n-1)(1/r1-1/r2)此乃著名的透镜制造式。
(其中:r1为第一折射面曲率半径,r2是第二折射面曲率半径,n是镜片折射率)
例1:欲加工,D1=+6.00;D2=-8.00的薄镜片,镜片n=1.5,选用镜片模具的曲率半径各为多少?
D1=n-1/r1
r1=n-1/D1=1.5-1/6=0.0833m=83.3mm
r2=1-n/D2=1-1.5/-8=0.0625m=62.5mm
磨具的曲率半径为:r1,83.3mm;r2,62.5mm.
例2:r1为10.46cm, r2为5.23cm. n=1.523, 问薄镜片镜度?
D=(n-1)(1/r1-1/r2)=(1.523-1)/(1/0.1046-1/0.0523)
=-0.5D
薄透镜镜度为:-0.50D
如果用聚散度表示,则:
D=(n-1)(R1-R2)
(其中:R1为第一折射面曲率,R2是第二折射面曲率。
R1=1/r,R2=1/r2)。
一般透镜的两个表面中至少有一个表面是球面的一部分,如果透镜的厚度小于球面的半径,这种透镜叫做薄透镜

54.Depth peeling


半透明z顺序

Depth peeling is a method of Order-independent transparency. Depth peeling has the advantage of being able to generate correct results even for complex images containing intersecting transparent objects.

Method

its quality and performance determined by the number of rendering passes.." Depth peeling works by rendering the image multiple times.[1] The twist is that depth peeling uses two Z buffers, one that works conventionally, and one that is not modified, and sets theminimum distance at which a fragment can be drawn without being discarded. For each pass, the previous pass' conventional Z-buffer is used as the minimal Z-buffer, so each pass draws what was "behind" the previous pass. The resulting images can be combined to form a single image.

https://en.wikipedia.org/wiki/Depth_peeling

https://en.wikipedia.org/wiki/Order-independent_transparency


55.结构张量structure tensor

http://www.cnblogs.com/tiandsp/archive/2013/09/07/3307378.html


根据结构张量能区分图像的平坦区域、边缘区域与角点区域。

此算法也算是计算机科学最重要的32个算法之一了。链接的文章中此算法名称为Strukturtensor算法,不过我搜索了一下,Strukturtensor这个单词好像是德语,翻译过来就是structure tensor结构张量了。

此处所说的张量不是相对论或黎曼几何里的张量,黎曼几何的张量好多论文都叫张量场了。也不是数学界还没研究明白的对矩阵进行扩展的高阶张量,主要是张量分解。这里的结构张量就是一个矩阵,一个对图像像素进行组织的数据结构而已。

像素组织而成的矩阵如下:

这个公式太常见了,在harris角点检测中就用到了。其中Ix,Iy就是原对原图像在x和y方向求得的偏导。

然后求矩阵E的行列式K和迹H。然后根据K和H的关系就能区分图像的区域模式了。

模式分以下三类:

平坦区域:H=0;

边缘区域:H>0 && K=0;

角点区域:H>0 && K>0;

harris角点检测就用到了第三类判断。

当然,在实际应用的时候H和K的值肯定都不会是理想,所以我用的都是近似判断。

处理结果如下:

原图:

平坦区域:

边缘区域:

角点区域(好像也不全角点,求角点还是harris好了):

结构张量行列式与迹的关系:

其中红框为平坦区域,黄框为边缘区域,铝框为角点区域。



https://en.wikipedia.org/wiki/Structure_tensor

In mathematics, the structure tensor, also referred to as the second-moment matrix, is amatrix derived from thegradient of a function. It summarizes the predominant directions of the gradient in a specified neighborhood of a point, and the degree to which those directions are coherent. The structure tensor is often used inimage processing and computer vision

56.梯度

设体系中某处的物理参数(如温度、速度、浓度等)为w,在与其垂直距离的dy处该参数为w+dw,则称为该物理参数的 梯度,也即该物理参数的变化率。

http://baike.baidu.com/link?url=KyLEqZ1N2I_YnW0Efr3CZ-5cQtYc2emG6GxeC_THjW4viKYNHyLsq5itp81NX1Fsk9M1bQKgeS1cQ3AG-Ef-7IfCcn3VDcF1qzl5_IdD4Bm

57.argmax

函数y=f(x),x0= argmax(f(x)) 的意思就是参数x0满足f(x0)为f(x)的最大值;换句话说就是 argmax(f(x))是使得 f(x)取得最大值所对应的变量x。

http://baike.baidu.com/link?url=PztToXJ1wBvc62Wr46uJayCXlB2IiYIasPWYc1z1GIhUpeq5ndZm7TmMB0NkWhHZ4Wss88cdeBDDcfFCKopOG_


58.The Accumulation Buffer

The accumulation buffer is an extended-range color buffer.Images are not rendered into it.Rather,images rendered into one of the color buffers  are added to the contents of the accumulation buffer after rendering.Effects such as antialiasing (of points, lines, and polygons),motion blur,and depth of field can be created by accumulating images generated with different transformation matrices.Each portion of a pixel in the accumulation buffer consists offour values:one for each of R, G, B, and A.

The accumulation buffer holds RGBA color data just like the color buffers do in RGBA mode. (The results of using the accumulation buffer in color-index mode are undefined.) It's typically used for accumulating a series of images into a final, composite image. With this method, you can perform operations like scene antialiasing by supersampling an image and then averaging the samples to produce the values that are finally painted into the pixels of the color buffers. You don't draw directly into the accumulation buffer; accumulation operations are always performed in rectangular blocks, which are usually transfers of data to or from a color buffer.

The accumulation buffer provides support for many special effects such as motion blur and depth of field. It also supports full-screen anti-aliasing, although other methods (such as multisampling) are better suited to this task.

       

59.Moire effect莫尔效应

http://whatis.techtarget.com/definition/moire-effect

Moiré effect is a visual perception that occurs when viewing a set of lines or dots that is superimposed on another set of lines or dots, where the sets differ in relative size, angle, or spacing. The moiré effect can be seen when looking through ordinary window screens at another screen or background. It can also be generated by a photographic or electronic reproduction, either deliberately or accidentally.


莫尔效应(moiré effect)是当注视一组线或点与另一组线或点的叠层时的一种视觉效果,这两组点或线在相对大小,角落或间距上不同。莫尔效应可以在通过平常的纱窗看另一个纱窗或背景时被观察到。在照片或电子复制品上也能产生这种效果。

The illustration below shows two sets of lines of equal thickness and equal spacing, but one set is angled at a few degrees while the other set runs vertically. The moiré effect in this case appears as a set of thick, ill-defined, nearly horizontal bars.
  下面的图展示了两组厚度和间距相同的直线,只是一组是垂直的,而另一组有点倾斜。这个例子中的莫尔效应看来像一组厚而不清楚的单杆。                     

moire.gif (7956 bytes)

Moiré effect can produce interesting and beautiful geometric patterns. However, the phenomenon degrades the quality and resolution of graphic images. Problems occur when a screened image, such as is found in a newspaper, is directly photographed and then the photograph is reprinted in screened format. It can also occur when the image from a computer display is reproduced by photographic means and then rendered in a screened or dot-matrix format. The fine matrix of dots in the original image almost invariably conflicts with the matrix of dots in the reproduction. This generates a characteristic criss-cross pattern on the reproduced image.

莫尔效应(moiré effect)能产生有趣和美丽的几何图样。然而,这种现象减低了图画的质量,歪曲了原来面目。当一个屏像被直接拍照得到然后照片被印刷再版时就会出现问题。当计算机显示的图象被通过照相的方式复制,然后以点矩阵格式还原时也会产生这种情况。原时图片的优良的点矩阵总是和复制品的点矩阵相冲突。在重现图像时就产生了一个特色的十字型模式。

The word moiré is French (from the past participle of the verb moirer, meaning to water) and can be written with or without an accent aigu on the final "e." It was originally used to describe an effect applied to silk material to give it a wavy or rippled texture.

单词moire是法文(动词moirer的过去分词,意思是水),可以在最后一个"e"上加上或不加重音符号。它原本是用来描述给丝绸材料加上纹理的效果的。

60.T&L

Transforming & Lighting


















  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值