1. 程式人生 > >Unity3d 頂點和片段著色器學習筆記

Unity3d 頂點和片段著色器學習筆記

原文地址: http://www.omuying.com/article/26.aspx

一、Cg頂點程式必須在結構中傳遞頂點資料。幾種常用的頂點結構定義在檔案UnityCG.cginc中。在大部分情況下僅僅使用它們就夠了。結構如下:

1、appdata_base: 包含頂點位置,法線和一個紋理座標。
2、appdata_tan:包含頂點位置,切線,法線和一個紋理座標。
3、appdata_full:包含位置、法線、切線、頂點色和兩個紋理座標。
4、appdata_img:包含位置和一個紋理座標。

二、如果你想訪問個別的頂點資料,你必須自己宣告頂點結構。結構中的成員必須是屬於以下列表中的:

1、float4 vertex:頂點位置
2、float3 normal:頂點法線
3、float4 texcoord:第一UV座標
4、float4 texcoord1:第二UV座標
5、float4 tangent:切線向量(用在法線貼圖中)
6、float4 color:每個頂點(per-vertex)顏色

三、內建矩陣

1、UNITY_MATRIX_MVP:當前模型*視*投影矩陣。(注:模型矩陣為 本地->世界)
2、UNITY_MATRIX_MV:當前模型*檢視矩陣
3、UNITY_MATRIX_V:當前檢視矩陣
4、UNITY_MATRIX_P:當前投影矩陣
5、UNITY_MATRIX_VP:當前檢視*投影矩陣
6、UNITY_MATRIX_T_MV:轉置模型*檢視矩陣
7、UNITY_MATRIX_IT_MV:逆轉置模型*視矩陣
8、UNITY_MATRIX_TEXTURE0 to UNITY_MATRIX_TEXTURE3:紋理變換矩陣

四、內建向量

1、UNITY_LIGHTMODEL_AMBIENT:當前環境色

相關推薦

Unity3d 頂點片段著色學習筆記

原文地址: http://www.omuying.com/article/26.aspx 一、Cg頂點程式必須在結構中傳遞頂點資料。幾種常用的頂點結構定義在檔案UnityCG.cginc中。在大部分情況下僅僅使用它們就夠了。結構如下: 1、appdata_base: 包含頂點位置,法線和一個紋理座標。

Unity shader之頂點片段著色Vertex and Fragment Shader

Unity shader中的頂點片面著色器是我們專案中使用次數最多的著色器,因此今天來簡單的學習一下VF Shader。 VF Shader的基本寫法如下: // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with

OpenGL ES 3.0 簡單的頂點片段著色

char fShaderStr[] = 1、 "#version 300 es \n" 2、 "precision mediump float; \n" 3、 "out vec4 fragColor;

頂點片段著色

即使您沒有看到 for 迴圈。所以會處理 VertexBuffer 中的所有頂點。 您也可以將常量值以常量暫存器的形式從 ActionScript 傳遞到 VertexShader。每次您希望執行著色器(每次您呼叫 Context3D::drawTriangles 方法來呈現一個結構),您都可以傳入一個不同

頂點著色 學習筆記

裁剪 str cati strong log href open rotate 程序 頂點著色器 shader的三種變量類型 uniform變量一般用來表示:變換矩陣,材質,光照參數和顏色等信息;如果在vertex和fragment兩者之間聲明方式完全一樣,則它可以在v

unityShader之頂點著色片段著色(一)

頂點著色器和片段著色器作為效能不錯,實現效果也很好的渲染方式,這裡分幾個小結著重說一說,然後所有關鍵字的使用以及特殊語義的含義都在程式碼裡註釋了,有不明白的可以討論下: // Upgrade NOTE: replaced 'mul(UNITY_MATRIX

shader 入門 《頂點著色 的輸出 片段著色的 輸入》

   片段中的資料內容通常由頂點著色器決定。事實上,頂點著色器可以將頂點屬性引數作為自己的輸出。光柵化負責將著色器輸出的頂點資料在三角形上進行顏色插值(interpolate),使片段上的每個畫素都得到正確的屬性值。 例 如,有一個Vertex Buffer指定了頂點的

【Unity Shader學習筆記】(二)最基本的頂點片段著色

分享一個基本的頂點片段著色器,可以實現紋理取樣。目前沒有加入光照和陰影效果。 這個Shader可以作為基本的模板,進行更加細節的修改與開發。這裡就簡單分享一下吧。 Shader "Unlit/unl

Unity3D學習筆記(三十五):Shader著色(2)- 頂點片元著色

結構體 意義 float inline 有意義 pro spa ocl rcu Alpha測試 AlphaTest Great:大於 AlphaTest Less:小於 AlphaTest Equal:等於 AlphaTest GEqual:大於等於 AlphaTest L

[UnityShader2]頂點片段著色例項(五)

官方文件:http://docs.unity3d.com/Manual/SL-VertexFragmentShaderExamples.html 相關連結:http://blog.csdn.net/candycat1992/article/details/41605257

[UnityShader2]頂點片段著色例項(三)

原文連結:http://www.cnblogs.com/Esfog/default.html?page=2 1.漫反射 Shader "Esfog/Diffuse" { Properties { _MainTex ("Base (RG

在OpenGL中,頂點著色的輸出是如何傳遞到片段著色的?

我正在學習OpenGL,基本已理解管線原理,但是有一個問題一直沒明白:我們知道頂點著色器可以傳遞變數到片段著色器,然而片段著色器和頂點著色器並不是1:1呼叫的。比如一個三角形有三個頂點,呼叫三次頂點著色器,三角形光柵話後會有很多的片段(插值的結果),每個片段都會呼叫一次片段著色器。那麼問題來了,片段著色器的輸

[UnityShader2]頂點片段著色例項(六)

1.棋盤效果 cg函式:floor(x),返回不大於x的最大整數 cg函式:frac(x),返回x的小數部分 原理: a.在頂點程式中,uv的範圍為(0,_Density) b.在片段程式中,對uv取整然後除以2,得到的數類似為:0 / 0.5 / 1 / 1.5 / 2

[UnityShader2]頂點片段著色基礎

官方文件:http://docs.unity3d.com/Manual/SL-VertexFragmentShaderExamples.html 1.語義 SV_Traget:如果頂點/片段程式只輸出一個值,那麼可以使用這個 fixed4 frag (v2f i) :

[Unity3d]Shader 著色 學習前瞭解知識

引言shader到底是幹什麼用的?shader的工作原理是什麼? 其實當我們對這個問題還很懵懂的時候,就已經開始急不可耐的要四處搜尋有關shader的資料,恨不得立刻上手寫一個出來。但看了一些資料甚至看了不少cg的語法之後,我們還是很迷茫,UNITY_MATRIX_MVP到

頂點著色片段著色之間資料的傳遞方式

在頂點著色器函式中,顧名思義,vert函式處理的物件是一個個的獨立的頂點,在完成對頂點的位置、法線、紋理座標等資料的處理之後,會將相關的資料傳遞給片段著色器繼續進行處理。需要注意的是,frag函式並非原封不動的對vert函式傳遞過來的資料進行接收,而是會對其進行插值運算。因

生命遊戲細胞自動機的學習筆記

自動機 遊戲 Last updated: 23rd. July, 2012 野比 2012 版權所有(本文為學習筆記,知識淺薄。我會將學習中的實驗記錄和心得記錄在此。) 歡迎對這方面感興趣的愛好者一起研究。尋求技術指導。聯系QQ:1429013154我一直對人工智能很感興趣,苦於數學基礎太差,很多理論

java中的序列化反序列化學習筆記

文件 track 反序列化 out val nts 鼠標 main version 須要序列化的Person類: package cn.itcast_07; import java.io.Serializable; /* * NotSerializableE

Kestrel Web 服務學習筆記

tabpanel 簡單的 事件循環 請求 eat 線程池。 hub .cn 封裝庫 前言:   ASP.NET Core 已經不是啥新鮮的東西,很多新啟的項目都會首選 Core 做開發;   而 Kestrel 可以說是微軟推出的唯一真正實現跨平臺的 Web 服務器了;

數字表達式(學習筆記

解釋器 結果 2.0 1.0 解決 imp 整數 oat 小數 1、交互式Python解釋器可以當做非常強大的計算器使用,試試以下的例子:   >>> 2 + 2   4   或者   >>> 53762 + 235253   28892