關於UnityShader的入門學習 一

2022-08-18 05:27:11 字數 2299 閱讀 8088

前言

關於unityshader方面的知識有很多,但真正能讓讀者讀懂並很快上手操作的少之又少,在這裡我簡單介紹下關於shader的一些入門知識,如有出入請大佬們多多指點!

圖形學的基礎知識

1.unity遊戲物體上需掛載mesh filter元件,mesh filter中儲存乙個mesh網格(用於儲存形成圖形的所有三角面的頂點資訊)。

2.unity遊戲物體上需掛載mesh renderer元件,mesh renderer為渲染元件,通俗來講就是按照mesh網格上的頂點資訊將圖形顯示出來,賦予**、顏色等等。

3.mesh renderer中material(材質)及我們編寫的shader所依賴的,用於實現效果的依託。

shader、opengl、directx之間的關係

通俗來講,shader是一種渲染命令,由opengl或者directx進行解析進而渲染出豐富多彩的圖形。

其中opengl一般用於移動平台,directx一般用於pc平台。

shader的語言分類

1.glsl opengl語言

2.hlsl directx語言

3.cg  誇平台語言

4.shaderlab unity中對上述語言的通用封裝

關於shader中的屬性**

shader"

mocha/01 myshader

" //

sampler2d(其中white代表當未指定時預設其未一張白色的,也可改為其他顏色)

_cube("

cube

",cube)="

white

"{} //

立方體紋理samplercube(其中white代表當未指定時預設其未一張白色的,也可改為其他顏色)用於天空盒子等

_3d("

texure

",3d) = "

white

"{} //

3d貼圖sampler3d(其中white代表當未指定時預設其未一張白色的,也可改為其他顏色)

}

//subshader可以有很多個,顯示卡執行效果的時候,從第乙個subshader開始,如果裡面的效果全部可以實現,那麼就使用第乙個subshader,如果不支援則進行下乙個

subshader

}//當所有的subshader都不符合的時候,則用此備胎shader效果可自定義備胎shader

fallback "

vertexlit

"}

關於shader中的常用語義

1.從應用程式傳遞到頂點函式的語義有哪些a2v

position 頂點座標(模型空間下的)

normal 法線( 模型空間下)

tangent 切線(模型空間)

texcoord0 ~n 紋理座標

color 頂點顏色

2.從頂點函式傳遞給片元函式的時候可以使用的語義

sv_position 剪裁空間中的頂點座標(一般是系統直接使用)

color0 可以傳遞一組值 4個

color1 可以傳遞一組值 4個

texcoord0~7 傳遞紋理座標

3.片元函式傳遞給系統

sv_target 顏色值,顯示到螢幕上的顏色

shader "

mocha/02 secondshader can run

" fixed4 frag() : sv_target

endcg}}

fallback

"vertexlit

"}

使用結構體進行儲存傳遞資料

shader "

mocha/03 use struct";

//使用結構體儲存

struct

v2f;

v2f vert(a2v v)

fixed4 frag(v2f f) : sv_target

endcg}}

fallback

"vertexlit

"}

unity shader 的學習筆記 float4

正在學習關於unity shader,其中我自己總結了一些自己不懂的東西 1 float fixed float 常見的寫法有 float4 和 float3 float3 一般情況下我們指的是向量,例如 float3 normal normal float4 對那些需要操作的頂點用 float4 ...

UnityShader中的數學(矩陣)

ps 本文章摘取自 unityshader入門精要 一書。unity matrix mvp 把模型空間座標轉換為裁剪空間座標 unity matrix mv 把模型空間座標轉換為觀察空間座標 unity matrix v 把世界空間座標轉換為觀察空間座標 unity matrix p 把觀察空間座標...

關於四捨五入

四捨五入 轉http nssoft.showdoc.asp?did 267 delphi的四捨五入函式round,對於 5的情況,整數部分是奇數,那麼會round up,偶數會round down,例如 x round 17.5 x 18 x round 12.5 x 12 請使用下面的函式代替ro...