shader入門3 使用結構體

2021-09-23 20:41:48 字數 901 閱讀 4953

shader "custom/newsu***ceshader"

subshader

;struct v2f ;

v2f vert(a2v v)

fixed4 frag(v2f f) :sv_target

endcg

} }

fallback "diffuse"

}

事實上渲染順序也是a2v從模型空間拿了資料,然後計算之後傳給了v2f,v2f計算後傳給了系統.

看了第一篇和第二篇的話,下面的結構體和結構體裡面的引數代表什麼就不用說了.

struct a2v ;

struct v2f ;

然後我們來看看,又對**動了什麼手腳

我們在vert函式中定義了乙個返回值f,然後算了一下f.position 也就是傳給系統的那個螢幕座標.

然後f.color=v.normal是什麼意思呢,把法線的向量傳給了顏色?是的,和英文意思一樣,確實是把法線的向量傳給了顏色

為什麼這麼做,以及這麼做有什麼效果?得先說說法線,就是初中物理光的反射裡面那根垂直平面的線,在曲面3d物體裡,基本每個點的法線都不一樣,所以把法線賦值給顏色的話,效果就是顏色變成了七彩的效果

f中的color是個float3的值,所以我們再加個透明度值為1,返回給sv_target

大功告成

v2f vert(a2v v) 

fixed4 frag(v2f f) :sv_target

第二個效果是fixed(f.color+0.5,1)變得淡了一些

Shader中的結構體

cg語言中支援結構體 structure unity中的shader當然也支援了,實際上shader中的結構體宣告 使用和c 非常的類似,但是還是不同的。用法 1.結構體的宣告以關鍵字 struct 開始,然後緊跟結構體的名字,接下來是乙個 大括號,並以分號結尾 不要忘了分號 2.使用 引用結構體中...

shader入門精要3

在看shader入門精要。逐頂點光照 逐畫素光照 unity shaderlab 基礎之 unitycg.cginc 庫 命令詳解 properties specular specular color 1,1,1,1 gloss gloss range 8.0,256 20 cg 中宣告 fixed...

shader入門16 立方體紋理

1.什麼是立方體紋理?簡單的說就是6張紋理組成的乙個方塊形狀的紋理.像骰子一樣,有六個面.2.立方體紋理有什麼用?立方體紋理通常用於作為反射源,以及環境反射來實現玻璃,金屬的效果 3.為什麼立方體紋理要做成這個形狀?以立方體的中心為原點,向任意方向投射射線,可以與立方體6個面相交,得到不同的取樣值....