最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Games101-lecture 09 著色

2023-01-15 22:42 作者:云長梧  | 我要投稿

上一講簡單介紹了插值:

即已知三角形的三個頂點的紋理坐標(biāo)uv,如何知道三角形內(nèi)部的任意一點的uv,這就需要用到插值

插值通俗來講就是已知三角形的三個頂點各自的屬性,將這些屬性在三角形內(nèi)部做一個平滑處理

????????屬性可以有:紋理坐標(biāo)、顏色、法線

(這個可以解釋Unity Shader 入門精要中的逐頂點光照為何會呈現(xiàn)棱角現(xiàn)象)

逐頂點高光處有棱角現(xiàn)象,不平滑

這一講將上一講的著色講完,有時間再講陰影的部分

1.重心坐標(biāo)--插值? ? ?2.研究紋理貼圖? ? 3.紋理其他應(yīng)用

一、重心坐標(biāo)

????重心坐標(biāo)定義在一個三角形上面,即用來計算插值,三角形內(nèi)一點x,y可以用三個頂點A,B,C表示:

在這個三角形A、B、C頂點形成的平面內(nèi)任意一點 (x,y)?都可以表示成三個頂點A、B、C它們坐標(biāo)的線性組合(即圖上的式子)

如果三個系數(shù)都是非負(fù)的,那這個點在△ABC內(nèi),否則這個點就是在△ABC所在平面上

線性組合式子的應(yīng)用
任意三角形內(nèi)部一點的重心坐標(biāo)用面積比例求得
三角形自己的重心

用這個重心去連接A、B、C可以得到三個等面積的三角形,從而重心的重心坐標(biāo)為(1/3,1/3,1/3)

注意:重心和重心坐標(biāo)是有區(qū)別的

推導(dǎo)式子--已知A、B、C以及重心的坐標(biāo),求重心的重心坐標(biāo):

推導(dǎo)式子(不用記,只要知道可以推導(dǎo)出來就行)

知道了重心坐標(biāo)怎么求之后,就可以對三角形內(nèi)部進行插值

三角形任意一點用重心坐標(biāo)來求得其相應(yīng)的屬性

但是投影后的重心坐標(biāo)可能會不一樣,所以如果要在三維三角形內(nèi)插值,要用三維的坐標(biāo)

然后再將值對應(yīng)到二維空間上去

二、應(yīng)用紋理--怎樣將紋理實際運用在渲染中

????屏幕上的任何一個采樣點(通常為采樣點中心),通過所在三角形的頂點們和重心坐標(biāo)進行插值映射出采樣點的紋理坐標(biāo),然后去紋理上查詢一下uv的值對應(yīng)的顏色,然后將顏色賦給漫反射系數(shù)--漫反射的顏色

簡單紋理映射算法

三、紋理變換(對紋理進行放大或縮小)

1.紋理放大

紋理放大

任何一個點,找到它紋理上的坐標(biāo),如果這個位置不是整數(shù),我們應(yīng)該如何處理?

Nearest鄰近值是對紋理坐標(biāo)做一個簡單的四舍五入的處理,用紋理坐標(biāo)周圍的很多像素合成一個像素(如:3*3,5*5),但缺點是會有鋸齒,倒挺適合做像素游戲

Nearest:圖中紅點紋理坐標(biāo)不為整數(shù),它的值為離他最近的整數(shù)點黑點的值

如果要變成中間或右邊圖的樣子--有點模糊,但得到的結(jié)果稍微連續(xù)點

Bilinear雙線性插值是利用周圍鄰近的四個點進行插值,如下四圖所示

(s,t)范圍為【0,1】

Bicubic是用周圍16個點進行插值得到

這三者的區(qū)別可以去視頻上看,Bilinear和Bicubic的區(qū)別可以用女孩眼睛的輪廓觀察出

2.紋理縮小---比紋理放大多的是要對采樣范圍進行查詢

像素縮小會發(fā)現(xiàn)遠(yuǎn)處產(chǎn)生摩爾紋,近處產(chǎn)生鋸齒-----即走樣

jaggies 鋸齒? ? ? Moire 摩爾紋

近處的一個像素覆蓋的紋理范圍小,遠(yuǎn)處的一個像素覆蓋了很大的紋理范圍,所以遠(yuǎn)處還用中心點代表很大的紋理范圍的像素是不對的

解決方法:遠(yuǎn)處的像素能更多地采樣周圍的樣本

每個像素用512個采樣點

lecture 6 講述了走樣產(chǎn)生的原因:信號變化速度過快(高頻率),采樣速度跟不上信號變換速度,從而發(fā)生走樣

翻譯:如果紋理過大,一個采樣范圍過大,但只以采樣中心點代替這一范圍的紋理,從而發(fā)生走樣(一個像素承載很多信息稱為高頻信息變化)

一個像素內(nèi),它有非常高頻的信號,要想盡量不走樣,就要使用更高頻的采樣方法,這就是為什么一個采樣范圍要許多的采樣點來做到超采樣的方法

但如果不想超采樣呢,然后又能立刻知道這個采樣范圍的平均值是多少?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--mipmap多級漸遠(yuǎn)紋理

知道采樣范圍平均值這個問題是一個算法問題,無論在數(shù)據(jù)結(jié)構(gòu)、計算幾何等很多領(lǐng)域上都運用這個,這個問題是點插值問題(類似鄰近值)和范圍插值問題(類似Bilinear、Bicubic)

范圍插值問題除了圖形學(xué)里的取平均值,還會應(yīng)用在查詢最大值最小值

快速,近似,方塊

mipmap就是由一張圖生成一系列分辨率越來越小的圖,進行存儲

然后摞起來存儲

圖像金字塔

因為這些mipmap得到的分辨率小的圖像,圖像存儲方面增加了1/3倍的存儲

左邊是模型投影的結(jié)果,右邊紋理是展開的2D圖像

mipmap要在近似的在一個正方形范圍區(qū)域內(nèi)做范圍查詢,立刻知道這個區(qū)域內(nèi)的平均值是多少

50 :20 --? 55 : 51

但是mipmap存儲的是離散型的0,1,2,3....層圖像,如果有的地方需要1.8層圖像呢:再用插值就好了(對于圖中不同層的紋理,使用插值(三線性插值)再進行過渡)


三線性插值

采樣點在mipmap低一層時運用Bilinear得到插值,再在高一層運用Bilinear得到插值,最后用這兩層的插值再進行插值,得到結(jié)果,一共三個步驟,叫做三線性插值

三線性插值的結(jié)果

mipmap的限制:

mipmap+trilinear出現(xiàn)了overbur的情況,是因為mipmap只能查詢正方形,trilinear第三步驟也是近似插值

mipmap+trilinear所產(chǎn)生的這個問題,用各向異性過濾可以部分解決

各向異性過濾的結(jié)果

各向異性過濾使用了Ripmap,Ripmap將圖片根據(jù)橫軸豎軸寬長各除以一半

這能將不同長寬比的圖片進行分辨減小的預(yù)存儲,是mipmap沒有的,開銷是mipmap的3倍

各向異性過濾--Ripmap

屏幕上的一個像素投影到紋理圖像上,很有可能各是不同的不規(guī)則的形狀

如果這個時候用mipmap這樣只能用方形的采樣范圍采樣,就會產(chǎn)生overbur的情況

而Ripmap則可以對圖中長條形的范圍進行快速查詢

但Ripmap仍然有限制,比如圖中最大的那個斜著的矩形是不能很好查詢

(因為Ripmap只是長寬可以調(diào)整,但范圍的角度不能調(diào)整,不能把豎直的矩形范圍變成傾斜的)

那么就可用EWA過濾的方法可以解決這個不能傾斜的問題

EWA過濾

但代價是用空間換質(zhì)量

這節(jié)要累死了?。╠ie)

Games101-lecture 09 著色的評論 (共 條)

分享到微博請遵守國家法律
巢湖市| 米林县| 凌源市| 共和县| 全州县| 行唐县| 舒兰市| 景泰县| 纳雍县| 临安市| 潞西市| 台州市| 綦江县| 南川市| 嵩明县| 伊吾县| 铜梁县| 乌鲁木齐县| 双城市| 乌什县| 新津县| 宁明县| 鹤岗市| 赫章县| 汽车| 永吉县| 阿瓦提县| 大足县| 方正县| 延庆县| 油尖旺区| 濉溪县| 六枝特区| 聂荣县| 宕昌县| 绵阳市| 新龙县| 林芝县| 分宜县| 榆树市| 赣榆县|