计算机图形学四:着色

**在计算机图形学中,对不同的物体应用不同的材质,叫做着色

实时渲染练习

定义一些量

1.光源方向I
2.法线方向n
3.观测方向v
4.亮度shaininess

角度与亮度

1.光源方向和法线重叠时,物体表面接收到的光线最多,也最亮
2.物体表面倾斜时,法线和光源方向产生夹角,夹角越大,接收到的光线越少

点光源

1.任一时间内,光源发出的光都是处在一个球面上,随着时间的增大,球面半径增大,光或者说能量的总额不变,单位面积的能量在减少,具体关系为I/(r*r)

blinn-phong着色模型

1.Ld是反射能量
2.kd是反射系数(小于1,因为会有一些被吸收)
3.I/(r*r)是到达shading point的能量
4.n和l两个单位向量的点乘得到夹角θ
5.max(0,nl)得到的是接收到的能量
6.之所以和0取最大值,是为了去除负值的情况.比如从下面入射的光线,没有物理意义,排除掉

blinn-phong模型判断高光

图2

图3

1.当观测方向接近出射方向时,就能够看到高光
2.在blinn-phong模型中,简化为,当法线和光照方向与观察方向的半程向量足够接近时,就可以看到高光,半程向量即向量加法
3.ks是镜面反射系数
4.指数p用于增加衰减速度,作用是缩小高光的面积范围,如图2
5.ks和p的作用图例,如图3

环境光

先假设任何位置的环境光都是一样的入射量和接收量,因此是均匀的

合成过程

1.环境光+漫反射+高光 = 布林冯反射模型

着色频率

着色频率:
1.第一张是每个平面的法线做着色,叫做flat shading
2.第二张是每个顶点的法线做着色,然后平面通过差值来决定着色,叫做gouraud shading
3.第三张是每一个像素都做着色,叫做phong shading

三种着色对比

1.当几何面细分越来越多的时候,着色效果和phong着色越来越接近

求顶点的法线

1.平面的法线可以由三角形的两个边通过向量叉乘获得
2.顶点的法线通过把周围的三角形的法线,根据面积进行加权平均得到

渲染管线

渲染管线,即渲染的流程:
1.第一步,输入空间中的点,投影到屏幕
2.第二步,点形成三角形
3.第三步,光栅化
4.第四步,像素着色
5.第五步,输出结果
6.可以分为三个部分,1.顶点处理,投影和变换,2.光栅化和深度测试,3.着色方案
7.在GPU中,很多步骤是可编程的,可以定义具体的方案

重心坐标

重心坐标是点的属性,不是三角形的属性
1.重心坐标定义在三角形所在平面,换一个三角形就是另一套定义
2.三角形ABC中任何一个点都可以表示成三个顶点的线性组合,其中A即(xa,ya),B,C同理,x=αxa+βxb+γxc,y同理
3.如果α β γ都是非负的,那么点就在三角形内 ,α+β+γ = 1就是为了限制这一点

顶点的重心坐标

顶点的A中心坐标就是(1,0,0)

面积比

1.重心坐标也可以通过面积比得到
2.三角形会被点分为三个三角形,其中Aa,Ab,Ac都是三角形

任意一点的重心坐标表达式
使用重心坐标1

1.得到点V的重心坐标后,根据三个参数α β γ 再乘上三个顶点的各种属性,比如深度,颜色,纹理坐标,就能对这个点进行插值
2.最终目的是将三角形内的每个点都做插值,得到均匀过渡的三角形
3.空间中的三角形,同一个点投影前后的重心坐标可能是不一样的,因此插值要从空间中的三角形中计算,这一点可以保证深度是正确的

使用重心坐标2

当使用纹理时,根据三角形顶点查到(u,v),再做插值

纹理放大问题

1.生成像素:pixel,纹理像素:texel,当生成的像素大于纹理的时候,多个像素会对应同一个纹理像素,就会产生锯齿

双线性插值

1.图中的黑点是纹理图,红点是对应的需要渲染的像素,显然渲染的像素数量大于纹理图,因此落在一个黑点格子内的红点都会取对应黑点的值,就会产生色块或者锯齿.
2.根据靠近纹理点的距离,得到一个比例x,根据x得到平均值
3.依据第一条,对周围4个点进行按比例的平均,得到一个过渡值,就可以优化放大产生的色块

透视产生的走样问题

像素覆盖纹理的区域

1.在进度,一个像素覆盖的纹理区域很小,而在远处,一个像素覆盖了很大的纹理区域,这时候再做插值,得到的结果就会有很大问题
2.理解成信号概念,远处的像素覆盖过大的纹理区域,采样的频率就远远不够了

mipmap

mipmap:对于一张图,可以生成另外几张图,分别是1/4,1/16,1/32,1/64等等,最后全部加起来,像素数是原来的4/3,也就是增加了1/3;

如何使用mipmap

1.如图,左边是屏幕,红色点是pixel,红色点对应到纹理图上如右图所示
2.由此可求得两个点之间的距离L,如此就可以得到pixel对应在纹理上近似的占的范围
3.当L是1倍的pixel时,自然是从mipmap的第0层也就是原图上取,,当L是4倍的pixel的时候,我们知道应该对应mipmap的第1层,因此D=log2L

三线性插值

同样的,第1层和第0层有可能造成不均匀的过渡,因此,这里可以跨层插值,比如想要得到1.8层.就可以从第一层和第二层分别双线性插值,然后再做差值,叫做三线性插值

overblur

mipmap产生的过渡模糊问题

各向异性过滤和EWA过滤

1.各向异性过滤相对于mipmap,增加了只压缩横向和只压缩竖直两种层级,存储量是原来的三倍

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342