中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Real-Rime Rendering (3) - 紋理(Texturing)

發布時間:2020-07-13 11:43:08 來源:網絡 閱讀:447 作者:拳四郎 欄目:開發技術

簡介

      在圖形學中,Texturing是一個將物體表面繪制上圖像或者其他數據的過程。紋理貼圖通過修改物體表面的渲染效果,達到一種更加真實渲染的目的。


渲染管線(Textureing Pipeline)

       物體表面的渲染顏色由光照,材質,視口位置和透明度決定。紋理可以改變物體表面的顏色值,而凹凸(bump texture) 改變的是法線。

       整個貼圖的過程可以描述為一個貼圖管線:

Real-Rime Rendering (3) - 紋理(Texturing)

         之所以把貼圖的過程細分為幾個階段,是因為每個階段都為程序員提供了可控制性。

         以一個墻面的貼圖為例,來描述整個階段.

Real-Rime Rendering (3) - 紋理(Texturing)

1.找到需要貼圖的位置的空間坐標 (x,y,z) ; 

2.將該位置進行投影,3D->2D, (x,y,x) -> (u,v) ,這個變換等同于將坐標乘以一個正交矩陣。

3. u,v 的坐標范圍為 (0,1),這樣做的目的是為了適應不同分辨率的紋理。u,v的值就用于確定該點的顏色值,通過查找內存中的紋理,將 u,v 由轉換到紋理的二維坐標上(相乘就行),就可以確定顏色值了,這個值就是物體的 diffuse color。



投射過程(Projector function)

       紋理管線的第一個過程就是獲取物體表面的空間坐標,然后投影到(u,v)空間上,uv空間是紋理的二維空間,(u,v)坐標通常是由3D設計師通過3D建模工具來標定的,這個過程通常稱為uv展開,目的就是生成紋理坐標。投影的方法包括球投影,圓柱投影,平面投影。

        在非交互行的渲染中,貼圖過程就在渲染過程中,整個場景可能就只使用一種貼圖方式,但通常設計師會把模型進行分割并對各個模型使用不停的貼圖方法。在實時渲染的時候,投影過程通常在建模階段完成,而投影的結果會存儲在頂點中,或者在shader中完成,這樣就可以實現動態的貼圖,比如環境貼圖 (environment mapping).

        雖然有很多種方法來實現貼圖,但是思路都是一樣的:通過插值來確定便面的參數,然后去查找對應的紋理值。


依附階段(Corresponder function)

       插值節點能夠將參數空間的組表(u,v)轉化到紋理空間坐標,這將為賦材質提供很大的靈活性,很常用的一個功能就是3d游戲中的換妝。

       常用的一種依附方式就是矩陣運算,可以在shader中進行,另一種情況是控制紋理在問題貼不到的地方的處理方式,在OpenGL中該控制由 glTexParameter來實現。


紋理值(Texture value)

       依附階段之后就可以得到 u,v 的坐標了,通過u,v  的坐標和紋理貼圖就可以很容易地得到顏色值,大部分渲染中使用的都是圖像紋理,一維,二維或者三維,但是在procedual texture中是不同的,在procedual texturing 中,并不是查找內存中的紋理值來得到rgb值的,而是通過計算獲得。

        關于顏色信息的表示,最簡單的就是Rgb值,雖然也可以使用灰度值,那就是黑白畫了。還有就是Rgba,a表示alpha,多出一個值來表示透明度。法線貼圖中,還有更多的顏色信息。


貼圖緩存(Texture catching)

       在復雜的應用中,可能需要用到大量的貼圖,用于存放紋理的高速緩存依硬件的不同而不同,但總歸一句話 - 不夠用。解決的方法有很多,總歸一句話:尋找平衡點。

       一種策略是將紋理的體積設計得很小,犧牲一些精度,即使一次性全部加載到內存中也OK,典型的用空間換時間。

        還有就是利用OS中的內存調度策略了,比如LRU (Least recently used)。每一次加載紋理的時候都給該紋理一個時間戳,當需要加載新的紋理的時候,如果內存夠用,直接加載,不夠用就把最久未使用的那個紋理踢除,然后加載。

        加載紋理會耗費可觀的時間(從硬盤到內存當然耗時啊!),大部分情況下不可能一次性加載全部紋理,一種解決方案就是預加載。


參考

Real-Time Rendering 3rd

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

扎囊县| 广水市| 大英县| 丰台区| 凤冈县| 南华县| 汶上县| 门头沟区| 广汉市| 连江县| 梨树县| 武胜县| 桦甸市| 恩施市| 银川市| 和龙市| 平阳县| 潮州市| 阿坝| 科尔| 酉阳| 水富县| 洪雅县| 陆良县| 中山市| 金堂县| 安远县| 新干县| 邢台市| 襄汾县| 康乐县| 阳城县| 嘉义市| 石屏县| 方城县| 额尔古纳市| 小金县| 松溪县| 墨玉县| 淮安市| 修文县|