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

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

Unity-自定義渲染紋理

2021-03-27 10:56 作者:unity_某某師_高錦錦  | 我要投稿

自定義渲染紋理是渲染紋理的擴(kuò)展,允許用戶使用著色器輕松更新相關(guān)紋理。這對于實(shí)現(xiàn)各種類型的復(fù)雜模擬(例如焦散、雨水效果的波紋模擬、墻上的液體噴濺等)非常有用。此外,它還提供腳本和著色器框架,從而協(xié)助進(jìn)行更復(fù)雜的配置,如部分或多通道更新、改變更新頻率等。

要使用自定義渲染紋理,必須創(chuàng)建新的自定義渲染紋理資源并為其分配材質(zhì)。然后,此材質(zhì)將根據(jù)各種參數(shù)更新紋理的內(nèi)容。再然后,就像常規(guī)紋理一樣,可將自定義渲染紋理分配給任何類型的材質(zhì),甚至可用于另一個自定義渲染紋理。

屬性

自定義渲染紋理的檢視面板將顯示渲染紋理檢視面板的大多數(shù)屬性以及許多特定屬性。

渲染紋理:

屬性:????????????????????????????????????????????????????????????????????????????????????????????????功能:

Dimension????????渲染紋理的尺寸?????

????????2D????????????渲染紋理將是二維的。?????

????????Cube????????渲染紋理將是立方體貼圖?????

????????3D????????????渲染紋理將是三維的Size渲染紋理的大?。ㄒ韵袼貫閱挝唬?。

Color Format渲染紋理的格式sRGB (Color Render Texture)此渲染紋理是否使用 sRGB 讀/寫轉(zhuǎn)換(只讀)。

Enable Mip Maps此渲染紋理是否使用 MipMap?

Auto generate Mip Maps啟用此屬性可自動生成 MipMap。

Wrap Mode選擇紋理平鋪時(shí)的行為方式?????

Repeat紋理重復(fù)(平鋪)自身?????

Clamp紋理的邊緣被拉伸Filter Mode選擇紋理在通過 3D 變換拉伸時(shí)如何進(jìn)行過濾:????

Point紋理在靠近時(shí)變?yōu)閴K狀?????

Bilinear紋理在靠近時(shí)變得模糊?????

Trilinear與 Bilinear 類似,但紋理也在不同的 Mip 級別之間模糊

Aniso Level以大角度查看紋理時(shí)提高紋理質(zhì)量。適用于地板和地面紋理

自定義紋理:

自定義紋理參數(shù)分為三個主要類別:

  • Material:定義用于更新紋理的著色器。

  • Initialization:控制在著色器執(zhí)行更新之前如何初始化紋理

  • Update:控制著色器如何更新紋理。

屬性:????????????????????????????????????????????????????????????????????????????????????????????功能:

Material用于更新自定義渲染紋理的材質(zhì)?????

????Shader Pass用于更新自定義紋理的著色通道。該組合框?qū)@示材質(zhì)中可用的所有通道。Initialization Mode應(yīng)初始化紋理的頻率。?????

????OnLoad紋理在創(chuàng)建時(shí)初始化一次。?????

????Realtime在每一幀初始化紋理。?????

????OnDemand通過腳本按需初始化紋理。

Source應(yīng)如何初始化紋理。?????

Texture and Color由紋理疊加顏色來初始化紋理。?????????

Initialization Color用于初始化自定義紋理的顏色。如果還提供了初始化紋理,則將通過疊加顏色和紋理來初始化自定義紋理。?????????

Initialization Texture用于初始化自定義紋理的紋理。如果還提供了初始化顏色,則將通過疊加顏色和紋理來初始化自定義紋理。?????

Material紋理將由材質(zhì)初始化。?????????

Initialization Material用于初始化自定義紋理的材質(zhì)。

Update Mode著色器應(yīng)更新紋理的頻率。?????

OnLoad紋理在創(chuàng)建時(shí)更新一次。?????

Realtime在每一幀更新紋理。?????

OnDemand通過腳本按需更新紋理。

Period(僅限 Realtime 選項(xiàng))更新實(shí)時(shí)紋理的間隔秒數(shù)(0.0 表示更新每一幀)。

Double Buffered紋理將接受雙緩沖。每次更新都將交換兩個緩沖區(qū),因此可讓用戶在著色器中讀取前一次更新的結(jié)果。

Wrap Update Zones啟用此屬性允許部分更新區(qū)域包圍紋理的邊框。

Cubemap Faces(僅限立方體貼圖)通過一系列開關(guān)允許用戶對每個立方體貼圖面啟用/禁用更新。

Update Zone Space在此坐標(biāo)系統(tǒng)中定義更新區(qū)域。???? Normalized所有坐標(biāo)和大小都在 0 到 1 之間,左上角從 (0, 0) 開始???? Pixel所有坐標(biāo)和大小都以像素寬度和高度所限制的像素表示。左上角從 (0, 0) 開始Update Zone List紋理的更新區(qū)域列表(有關(guān)更多詳細(xì)信息,請參閱下文)

將自定義渲染紋理導(dǎo)出到文件:

可通過上下文“Export”菜單將自定義渲染紋理導(dǎo)出到 PNG 或 EXR 文件(具體取決于紋理格式)。

更新區(qū)域 (Update Zones):

默認(rèn)情況下,更新自定義渲染紋理時(shí),材質(zhì)會立即更新整個紋理。自定義紋理的一個重要功能是用戶能夠定義部分更新區(qū)域。有了此功能,用戶可根據(jù)需要定義多個區(qū)域以及處理它們的順序。

此功能可用于幾種不同的目的。例如,您可以使用多個小區(qū)域在紋理上繪制水滴,然后執(zhí)行完整通道以模擬波紋。此外,如果不需要更新完整紋理,也可以使用此功能作為優(yōu)化手段。

更新區(qū)域具有各自的屬性集。Update Zone Space?將反映在顯示中。根據(jù)紋理的?Dimension?屬性,坐標(biāo)將為 2D(對于 2D 和立方體紋理)或 3D(對于 3D 紋理)。

屬性:????????????????????????????????????????????????????????????????????????????????????????????????????????????功能:

Center???????????????????????????????????更新區(qū)域中心的坐標(biāo)。

Size???????????????????????????????????????更新區(qū)域的大小。

Rotation????????????????????????????????更新區(qū)域的方向(以度為單位,3D 紋理中不可用)。

Shader Pass?????????????????????????用于此更新區(qū)域的著色器通道。如果保留為默認(rèn)值,則此更新區(qū)域?qū)⑹褂脵z視面板主要部分中定義的著色器通道,否則將使用提供的著色器通道。

Swap (Double Buffer)????????(僅適用于雙緩沖紋理)如果為 true,則在處理此更新區(qū)域之前將交換緩沖區(qū)。

雙緩沖自定義紋理

自定義渲染紋理可以是“雙緩沖的”(Double Buffered)。在內(nèi)部有兩種紋理,但從用戶的角度來看,它們是相同的。每次更新后將交換兩個紋理。這種機(jī)制可讓用戶在自定義渲染紋理中寫入新結(jié)果時(shí)讀取上次更新的結(jié)果。如果著色器需要使用已在紋理中寫入的內(nèi)容但不能將值與經(jīng)典混合模式混合,則此功能尤其有用。如果著色器必須對前一結(jié)果的不同像素進(jìn)行采樣,也需要用到此功能。

性能警告:由于某些技術(shù)問題,雙緩沖當(dāng)前涉及每次交換時(shí)進(jìn)行紋理的復(fù)制,這可能導(dǎo)致性能下降,具體取決于其執(zhí)行頻率和紋理分辨率。

鏈接自定義渲染紋理

自定義渲染紋理需要材質(zhì)才能進(jìn)行更新。此材質(zhì)可將紋理作為輸入。這意味著自定義紋理可用作生成另一個紋理的輸入。這樣一來,用戶就可以鏈接多個自定義紋理以生成更復(fù)雜的多步模擬。系統(tǒng)將正確處理所有依賴關(guān)系,確保以正確的順序進(jìn)行不同的更新。

為自定義渲染紋理編寫著色器

更新自定義紋理就像在渲染紋理中執(zhí)行 2D 后期處理一樣。為了幫助用戶編寫自定義紋理著色器,我們提供了一個帶有實(shí)用函數(shù)和內(nèi)置輔助變量的小框架。

下面是一個非常簡單的示例,它將使用顏色疊加顏色的方式填充紋理:

為自定義紋理編寫著色器時(shí),唯一必需的步驟是:

* #include “UnityCustomRenderTexture.cginc”

  • 使用提供的頂點(diǎn)著色器?CustomRenderTextureVertexShader

  • 為像素著色器使用提供的輸入結(jié)構(gòu)?v2f_customrendertexture

除此之外,用戶可以根據(jù)自己的喜好自由編寫像素著色器。

以下是在初始化材質(zhì)中使用的著色器的另一個示例:

與更新著色器的情況下相同,唯一必需的步驟如下:

* #include “UnityCustomRenderTexture.cginc”

  • 使用提供的頂點(diǎn)著色器 InitCustomRenderTextureVertexShader

  • 為像素著色器使用提供的輸入結(jié)構(gòu)?v2f_init_customrendertexture

為了幫助用戶完成此過程,我們提供了一組內(nèi)置值:

來自?v2f_customrendertexture?結(jié)構(gòu)的輸入值:

名稱Type值localTexcoordfloat3相對于當(dāng)前正在處理的更新區(qū)域的紋理坐標(biāo)。globalTexcoordfloat3相對于自定義渲染紋理本身的紋理坐標(biāo)primitiveIDuint當(dāng)前正在處理的更新區(qū)域的索引。directionfloat3對于立方體自定義渲染紋理,立方體貼圖內(nèi)當(dāng)前像素的方向。

來自?v2f_init_customrendertexture?結(jié)構(gòu)的輸入值:

名稱Type值texcoordfloat3相對于自定義渲染紋理本身的紋理坐標(biāo)。

全局值:

名稱Type值_CustomRenderTextureWidthfloat自定義紋理的寬度(以像素為單位)_CustomRenderTextureHeightfloat自定義紋理的高度(以像素為單位)_CustomRenderTextureDepthfloat自定義紋理的深度(以像素為單位,僅適用于 3D 紋理,否則將始終等于 1)。_CustomRenderTextureCubeFacefloat僅適用于立方體貼圖:正在處理的當(dāng)前立方體貼圖面的索引 (-X, +X, -Y, +Y, -Z, +Z)。_CustomRenderTexture3DSlicefloat僅適用于 3D 紋理:正在處理的當(dāng)前 3D 切片的索引。_SelfTexture2DSampler2D僅適用于雙緩沖紋理:該紋理包含上次交換之前的上次更新的結(jié)果。_SelfTextureCubeSamplerCUBE僅適用于雙緩沖紋理:該紋理包含上次交換之前的上次更新的結(jié)果。_SelfTexture3DSampler3D僅適用于雙緩沖紋理:該紋理包含上次交換之前的上次更新的結(jié)果。

通過腳本控制自定義渲染紋理

此處描述的大多數(shù)功能均可通過腳本 API 訪問到。更改材質(zhì)參數(shù)、更新頻率、更新區(qū)域、請求更新等全都可以使用腳本完成。

但要記住的一件事是,請求對自定義紋理進(jìn)行的任何更新都將在幀的開頭非常特定的時(shí)間發(fā)生,并提供自定義紋理的最新狀態(tài)。這種機(jī)制可保證使用此紋理的任何材質(zhì)都具有最新結(jié)果。

這意味著以下模式:

不會產(chǎn)生使用第一個更新區(qū)域數(shù)組完成一次更新再使用另一個數(shù)組完成第二次更新的“預(yù)期”結(jié)果。此模式將對第二個數(shù)組進(jìn)行兩次更新。

根據(jù)經(jīng)驗(yàn)法則,任何修改后的屬性都只能在下一幀中激活。


Unity-自定義渲染紋理的評論 (共 條)

分享到微博請遵守國家法律
额济纳旗| 昔阳县| 张家口市| 亚东县| 靖安县| 甘泉县| 樟树市| 天门市| 当阳市| 广宁县| 济南市| 唐海县| 米易县| 双桥区| 双峰县| 遵化市| 桐梓县| 石渠县| 西平县| 秀山| 微博| 宁都县| 子洲县| 壤塘县| 宁阳县| 武功县| 来凤县| 南澳县| 东乌| 兴义市| 邯郸市| 枝江市| 兴业县| 乌兰察布市| 枣强县| 休宁县| 溆浦县| 新昌县| 耒阳市| 独山县| 溧水县|