日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ShaderLab学习小结(一)最简化的顶点片断Shader

發布時間:2023/12/31 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ShaderLab学习小结(一)最简化的顶点片断Shader 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我會把這段時間學的shader知識,一篇篇的寫出來,并不高深,我是初學者,而且還在學習中,就是做個總結以及備忘。如果能夠對你有幫助,那再好不過,如果發現我寫的內容有不正確的地方,也請多多指教。
運行環境:
Win10 x64
Unity 5.5.4

Shader "Custom/SimpleShader" //Shader最外層,""中定義Shader名 {SubShader{ //必要組成部分pass{ //通道CGPROGRAM //CG程序開頭#pragma vertex vert //定義頂點級程序#pragma fragment frag //定義片斷級程序#include "unitycg.cginc" //引用unitycg文件,unity自定的結構體和函數等struct v2f{ //自定義結構體,作為vert函數的返回值float4 pos:POSITION; //位置,最基本的屬性,屏幕上正確顯示此物體的形狀和位置};v2f vert(appdata_base v) //頂點級程序,appdata_base定義在unitycg.cginc中{v2f o;o.pos=mul(UNITY_MATRIX_MVP, v.vertex); //將原始的物體坐標系坐標轉化至投影坐標系坐標return o;}fixed4 frag(v2f IN):COLOR{fixed4 col=fixed4(1,1,1,1); //定義顏色為純白rgbareturn col;}ENDCG //CG程序結尾}} }


如上圖,使用這個最簡Shader材質的Cube只是顯示純白色,和光照什么的沒有任何關系,也沒有陰影。
在頂點程序vert中,轉換物體坐標至投影坐標系,使物體在顯示屏上能正確顯示(形狀及位置)
將定義好的v2f輸出,在片斷程序frag中輸入來自頂點程序的v2f,定義一個顏色,并輸出。
最終Cube具有正確的形狀和位置,只顯示純白色。

在頂點程序vert中,mul函數是cg函數,作用是矩陣變換。如本例
mul(UNITY_MATRIX_MVP, v.vertex);
將物體原始的自身物體坐標系坐標,四維向量v.vertex用UNITY_MATRIX_MVP轉化至投影(屏幕)坐標系。
UNITY_MATRIX_MVP是內建矩陣,直接使用。
appdata_base定義在unitycg.cginc中,通過#include "unitycg.cginc"已經將文件引用。

struct:結構體
float4:float類型的四維向量 (x,y,z,w)或(r,g,b,a)
fixed4:fixed類型的四維向量 (x,y,z,w)或(r,g,b,a),精度不高,但用于顏色足夠了
fixed4 frag(v2f IN):COLOR,其中:COLOR是語義定義,說明這個程序輸出的是顏色,不定義會報錯。

轉載于:https://blog.51cto.com/shuxiayeshou/2065336

總結

以上是生活随笔為你收集整理的ShaderLab学习小结(一)最简化的顶点片断Shader的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。