本章主要描述在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...