Unity Shader 頂點著色器引數

2021-08-17 01:24:46 字數 760 閱讀 7189

本章主要描述在unity cg語言編寫shader的時候,頂點著色器的引數。

一般在shader中都會將頂點著色器的引數封裝為乙個結構體:

unity_vertex_input_instance_id

結構體中的屬性都是meshrenderer在每次drawcall的時候傳遞過來的,我們在shader中需要用到什麼屬性,就在結構體中定義什麼屬性。

meshrenderer傳遞過來的引數具體包括如下幾種:

float4 vertex : position; //頂點座標

float4 tangent : tangent; // mesh到表面法線的正切值

float3 normal : normal; //以物件的座標系標準化至單位長度

float4 texcoord : texcoord0;//紋理座標系的第0個集合

float4 texcoord1 : texcoord1; //紋理座標系的第1個集合

在unity安裝目錄editor\data\cgincludes提供了常見的cg庫,我們常用的有unitycg.cginc

在shader中#include "unitycg.cginc"

就可以直接使用這個檔案裡面定義的頂點著色器引數結構體:

在ui的shader中,紋理座標系我們只需要用到xy的時候,也可以在結構體中將引數texcoord 定義為float2

頂點著色程式

頂點著色程式從gpu前端模組 暫存器 中提取圖元資訊 頂點位置.法向量 紋理座標等 並完成頂點座標空間轉換,法向量空間轉換,光照計算等操作。最後將計算好的資料傳送到指定暫存器中。然後片段著色器從種獲取需要的資料,通常為 紋理座標,光照資訊等 並根據這些資訊以及從應用程式傳遞的紋理資訊進行每個片段的顏...

頂點著色問題應用

1.n個學生對m個宣講會中的若干個感興趣,如何安排宣講會的時間 每個宣講會持續的時間相同 使得每個學生對自己感興趣的宣講會時間不衝突,且宣講會的總時間最短?此問題可以轉化成頂點著色問題。把每個宣講會看作是一些散布的點,對於每個學生,把他感興趣的宣講會之間兩兩相連,如 學生a希望參加宣講會1 2 3 ...

Vertex Shader 頂點著色入門

vertex shader是什麼?頂點著色是一段執行在gpu上的程式 一般用hlsl來編寫 用來取代fixed pipeline中的transformation和lighting,vertex shader主要操作頂點。當然前提是硬體要支援,軟體模擬的不算 有圖則一目了然 vertex shader...