国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

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

Hello Vulkan(五)| 圖形渲染新技術(shù)Vulkan紋理

2023-02-16 16:25 作者:虹圖AI開放平臺  | 我要投稿

上一期技術(shù)分享中,我們講述了如何關(guān)于Vulkan的Data Buffers使用及VMA內(nèi)存管理器使用,自己創(chuàng)建或使用VMA在顯存里創(chuàng)建Buffers,并在CPU進(jìn)行讀取或?qū)懭搿?/p>

本期將繼續(xù)分享關(guān)于Vulkan的技術(shù),內(nèi)容是非常有趣的部分,即「紋理繪制」,我們會介紹如何在Vulkan中如何進(jìn)行紋理映射,所見即所得。很有趣的是,我們虹圖的英文即“TexelJoy”,其中“Texel”就是紋理的最小單元 – 紋素,熟悉圖形渲染的同學(xué)肯定不陌生,如果你感覺陌生也沒關(guān)系,像素“Pixel”總聽過吧,接下來本期講述的內(nèi)容也會涉及紋素和像素的關(guān)系。

基礎(chǔ)概念

紋理映射:圖形渲染中的一種將單獨的圖片映射覆蓋到3D模型上,并且跟隨模型移動、變換,映射到屏幕空間的圖形渲染操作。

紋理:進(jìn)行紋理映射的圖片,部分硬件要求必須是2的整數(shù)冪,當(dāng)然也并不是所有硬件的要求,確保安全最好是2的整數(shù)冪。

像素(Pixel):屏幕上的每個小點。

紋素(Texel):紋理上的每個小點。使用紋素這個術(shù)語,而不是像素來表示紋理對象中的顯示元素,主要是為了強調(diào)紋理對象的應(yīng)用方式。

紋理坐標(biāo):我們使用S,T來表示紋理對象中的紋素位置。S,T也可以用U,V來表示,紋理坐標(biāo)有時也稱UV坐標(biāo)。

映射原理:帶有紋理坐標(biāo)的3D模型會在每個頂點都有ST紋理坐標(biāo),由紋理坐標(biāo)找到對應(yīng)應(yīng)該在屏幕顯示的紋理中紋素位置,如下圖:

那么如何給每個頂點指定合適ST坐標(biāo)呢?

平面比較容易,做個比例縮小即可:

球體那就要做一些運算:

換做經(jīng)緯度:

這樣的模型呢?貌似有些復(fù)雜了。

這個可以放心,都是現(xiàn)成的自動化算法可以直接使用進(jìn)行計算ST坐標(biāo)。

存儲類型

讓我們回到Vulkan,先說內(nèi)存類型,首先分為CPU內(nèi)存和GPU顯存,GPU顯存則分為主機(jī)內(nèi)存(Host Visible Memory)和設(shè)備內(nèi)存(Device Local Memory)。CPU可以向主機(jī)內(nèi)存進(jìn)行讀寫操作。設(shè)備內(nèi)存是一種設(shè)備可見的內(nèi)存,常見的緩沖內(nèi)存和圖像內(nèi)存,可以被設(shè)備本地快速使用,而設(shè)備內(nèi)存最大的用處就是儲存紋理,因為紋理讀取是需要快速完成的。

在Vulkan里應(yīng)該如何設(shè)置紋理映射的參數(shù)呢?我們先看下之前OpenGL如何進(jìn)行參數(shù)設(shè)置的:

但在Vulkan里則是有一定區(qū)別的,但是類似于創(chuàng)建Buffer的操作。

對比下Vulkan和OpenGL,其實可以發(fā)現(xiàn)在設(shè)置Mode為LINEAR(線性濾波法)時Vulkan是mipmapMode,而OpenGL只是Mode。那么這個Mipmap是什么意思呢?Mipmap是縮小版本的image,每個新image是前一張圖的寬度和高度的一半。Mipmap用于作為細(xì)節(jié)級別(即Level of Detail)的一種方式。遠(yuǎn)離相機(jī)的物體將從較小的mip圖像中采樣紋理。使用較小的圖像可以提高渲染速度,避免鋸齒,具體做法就是平均4個像素,生成1個新的像素,依次循環(huán)。

最后放一個我覺得對大家有幫助的文件,就是如何把一個bmp、png、jpg圖片讀取成紋理。

關(guān)于Vulkan關(guān)于Command Buffers的內(nèi)容,我們會在本系列后續(xù)內(nèi)容中繼續(xù)與大家分享,Command Buffers也是Vulkan中很難理解,但卻很重要的一部分內(nèi)容。

敬請期待~

Hello Vulkan(五)| 圖形渲染新技術(shù)Vulkan紋理的評論 (共 條)

分享到微博請遵守國家法律
大悟县| 贡嘎县| 日照市| 富川| 宜春市| 南昌县| 睢宁县| 南宫市| 永善县| 德庆县| 富阳市| 镇原县| 潮安县| 兰溪市| 元朗区| 甘泉县| 永修县| 西畴县| 长乐市| 个旧市| 连山| 团风县| 大新县| 仪陇县| 湘乡市| 托克托县| 克什克腾旗| 青浦区| 越西县| 乌拉特中旗| 六盘水市| 友谊县| 鹤壁市| 玉树县| 扎赉特旗| 新巴尔虎右旗| 墨竹工卡县| 临泉县| 松滋市| 会东县| 菏泽市|