一 暴露屬性類
ExposedProperty
類是一個幫助類,它根據屬性的名稱存儲屬性ID。賦給一個暴露的屬性(ExposedProperty
)的值是一個着色器屬性的字符串名。類自動調用使用着色器屬性名作爲參數的Shader.PropertyToID(string name)函數,並存儲函數返回的整數ID。當您在組件API(component API)中的屬性、事件或EventAttribute方法中使用這個類時,它會隱式地使用這個整數。
當你想要訪問一個材質屬性,您可以使用屬性的名稱或ID。它通常是更容易使用的名稱屬性,然而更有效使用屬性的整數ID。這個類很有用,因爲它結合了方便使用屬性名和使用屬性ID的效率。
代碼實例
ExposedProperty m_MyProperty;
VisualEffect m_VFX;
void Start()
{
m_VFX = GetComponent<VisualEffect>();
m_MyProperty = "My Property"; // Assign a string.
}
void Update()
{
vfx.SetFloat(m_MyProperty, someValue); // Uses the property ID.
}
二 向量字段/有符號距離字段
該功能目前處於試驗階段,可能會在以後的主要版本中進行更改。
向量字段和符號距離字段是包含存儲在三維像素中的值的3D字段。這些是可用的三維紋理在視覺效果圖,並可以使用卷文件(.vf)文件格式導入。
卷文件是一個開源規範(Open Source specification),它包含存儲浮點數據的基本結構。VF文件在unity中自動導入爲3D紋理,可用於視覺效果圖形塊和輸入3D紋理的操作符(如向量字段或有符號距離字段塊)。
向量字段輸入者
當導入VF文件時,unity在檢查器中提供以下設置:
Output Format 輸出格式:輸出3D紋理的精度
- Half :浮點數,精度爲16位的一半
- Float 浮點數:32位單精度浮點數
- Byte 字節:8位精度的無符號定點值
Wrap Mode ——循環模式:輸出紋理的換行模式
Filter Mode—— 過濾模式:輸出紋理的過濾模式
Generate Mip Maps ——生成Mip貼圖:是否生成紋理的Mip貼圖
Aniso Level—— Aniso水平:各向異性水平
生成向量字段文件
你可以生成點緩存使用各種方法:
- 使用與VFXToolbox綁定的Houdini VF導出器(位於/DCC~文件夾中)
- 通過編寫自己的導出器來編寫符合規範的VF文件(VF Files)。
三 點緩存
該功能目前處於試驗階段,可能會在以後的主要版本中進行更改。
點緩存是一種特殊的資產類型,它綁定了一個點計數( Point Count),以及一個或多個attributemap(One or Many AttributeMaps)包含每個屬性值的列表,這些屬性值列表被嵌入到紋理中。
這些點緩存可以在圖中使用點緩存(Point Cache)操作符來訪問所有這些值,因此可以在從Attribute from Map塊中讀取這些值。
點緩存資產
點緩存資產遵循開源點緩存 (Point Cache)規範,並作爲綁定的可編寫腳本的對象導入。每個. pcache擴展文件都將被導入到一個綁定的腳本對象中,這樣就可以與點緩存操作符一起使用了。
點緩存操作符
點緩存資產可以在點緩存操作符中引用,因此它將顯示其點計數和點緩存資產中包含的屬性映射列表。根據設置字段中的資產集,輸出的編號和名稱將動態更改。
生成點緩存
你可以使用以下方法生成點緩存:
- 使用與VFXToolbox綁定的Houdini pCache導出程序(位於/DCC~文件夾中)
- 使用內置Point Cache Bake Tool
- 通過編寫自己的導出程序來編寫符合規範的點緩存(Point Cache)文件。
四 點緩存烘焙工具
點緩存烘焙工具是一個實用工具窗口,可以從幾何數據或紋理生成點緩存資產。它提供了分散點和從輸入獲取屬性的基本功能。
打開工具
點緩存烘焙工具窗口可以通過菜單訪問:
Window > Visual Effects > Utilities > Point Cache Bake Tool
使用該工具
工具窗口提示,頂部有兩種烘焙模式:
- Mesh 網格:從一個幾何圖形烘焙點緩存。
- Texture 紋理:從一個紋理烘焙點緩存。
從一個幾何圖形烘焙
當使用網格烘烤模式。窗口顯示如下網格烘焙屬性:
・Mesh 網格(Mesh):用於烘烤的Mesh對象
・Distribution 分佈(Enum):使用的點散射技術。
- Sequential:將在每個原始的點或頂點上按順序衍生一個點
- Random 隨機:將在每個原始的點或頂點上隨機產生一個點,而不考慮原始區域。
- Random Uniform Area隨機均勻區域:在每個原始的點隨機生成一個點,同時考慮原始區域。
・Bake Mode烘焙模式(Enum):(僅當使用順序/隨機分佈時)允許選擇每個頂點或每個三角形。
・Export Normals導出法線(bool):是否將法線導出到點緩存
・Export Colors導出顏色(bool):是否將頂點顏色導出到點緩存
・Export UVs導出uv (bool):是否將uv導出到點緩存
・Point Count 點計數(uint):輸出點計數
・Seed種子(uint):用於這一代的隨機種子
・File Format 文件格式(Enum):用於編碼的格式(Ascii或二進制)
在Mesh屬性中設置一個Mesh之後,下面的UI就變得可見了:
・Save to pCache file保存到pCache文件…(按鈕):單擊此按鈕將提示您一個保存文件對話框,以便將計算出的點緩存保存到資產。
・Mesh Statistics網格統計(組):關於幾何文件的統計
- Vertices 頂點:頂點計數
- Triangles 三角形:三角形計數
- Sub Meshed子網格:幾何圖形中包含的子網格的數量
從一個紋理烘焙
使用紋理烘焙模式時。窗口顯示如下網格烘焙屬性:
・Texture 紋理(紋理):用於烘焙的2D紋理對象
・Decimation Threshold抽取閾值(Enum):使用的抽取閾值模式。
- Alpha :使用Alpha通道
- Luminance 亮度:使用合併的RGB通道的亮度
- R :使用紅色通道
- G :使用綠色通道
- B :使用藍色頻道
・Threshold 閾值(float):用於小數點的閾值(如果相應的值低於閾值屬性)
・Randomize Pixel Order隨機像素順序(bool):隨機點,而不是按像素行/列排序。
・Export Colors導出顏色(bool):是否將顏色導出到點緩存
・File Format文件格式(Enum):用於編碼的格式(Ascii或二進制)
在網格屬性中設置一個紋理後,下面的UI變得可見:
・Save to pCache file保存到pCache文件…(按鈕):單擊此按鈕將提示您一個保存文件對話框,以便將計算出的點緩存保存到資產。
・Texture Statistics 紋理統計(組):關於紋理文件的統計
- 寬度:紋理的寬度(以像素爲單位)
- 高度:紋理的高度(以像素爲單位)
- 像素數:紋理的像素數(寬度*高度)
五 生成器回調
該功能目前處於試驗階段,可能會在以後的主要版本中進行更改。
派生回調是一個c# API,它支持定義自定義運行時行爲,併爲生成環境創建新的塊。
生成回調使您能夠執行以下操作:
- 控制生成環境狀態(播放、停止、延遲)
- 讀取/寫入輸出生成計數
- 讀/寫SpawnEvent屬性
寫生成器回調
API的完整引用可以在這裏(here)找到。