Shader入門學習手記

2021-07-11 17:22:41 字數 2104 閱讀 9375

shader程式的基本結構

在**中學習吧,注釋都寫好了。

shader "first fantasy/water/water diffuse" 

]; - 它只對2d,rect或者cube貼圖有關,在寫輸入時我們最少要在貼圖之後寫一對什麼都不含的空白的{},當我們需要開啟特定選項時可以把其寫在這對花括號內。如果需要同時開啟多個選項,可以使用空白分隔。可能的選擇有objectlinear, eyelinear, spheremap, cubereflect, cubenormal中的乙個,這些都是opengl中texgen的模式。}*/

_maintex ("base (rgb)", 2d) = "white" {}

_maintexcolor ("diffuse", color) = (1,1,1,0.55)

_maintexmultiply ("multiply", range(0,5)) = 1

_maintexmovespeedu ("u move speed", range(-6,6)) = 0.5

_maintexmovespeedv ("v move speed", range(-6,6)) = 0.5

} subshader

"rendertype"="opaque" -- 渲染非透明物體

"rendertype" = "transparent" -- 渲染含有透明效果的物體

"ignoreprojector"="true" -- 不被projectors影響

"forcenoshadowcasting"="true" -- 從不產生陰影

*/tags

zwrite off

alphatest greater 0

blend srcalpha oneminussrcalpha

//level of detail的縮寫;

/*在unity的quality settings中我們可以設定允許的最大lod,當設定的lod小於subshader所指定的lod時,這個subshader將不可用。

unity內建shader定義了一組lod的數值,我們在實現自己的shader的時候可以將其作為參考來設定自己的lod數值,這樣在之後調整根據裝置圖形效能來調整畫質時可以進行比較精確的控制。

*/lod 200

//乙個開始標記,表明從這裡開始是一段cg程式;

cgprogram

/*宣告了我們要寫乙個表面shader,並指定了光照模型;

格式:#pragma su***ce su***cefunction lightmodel [optionalparams]

*/#pragma su***ce surf lambert

//!!!對於這段cg程式,要想訪問在properties中所定義的變數的話,必須使用和之前變數相同的名字進行宣告。;

//sampler2d就是glsl中的2d貼圖的型別,相應的,還有sampler1d,sampler3d,samplercube等等格式。;

sampler2d _maintex;

fixed4 _maintexcolor;

fixed _maintexmultiply;

fixed _maintexmovespeedu;

fixed _maintexmovespeedv;

struct input

; /*

計算輸出時shader會多次呼叫surf函式,每次給入乙個貼圖上的點座標,來計算輸出。

第二個引數是乙個可寫的su***ceoutput,su***ceoutput是預定義的輸出結構,我們的surf函式的目標就是根據輸入把這個輸出結構填上。

su***ceoutput結構體的定義如下:

struct su***ceoutput

;su***ceoutput o - 這個就是經過表面計算函式surf處理後的輸出

*/void surf (input in, inout su***ceoutput o)

endcg

} fallback "diffuse"

}

Shader之小白入門學習五

先實現乙個只有顏色屬性可調節的簡單材質效果,如下圖所示 模型可隨便找乙個,預設的幾何體也可以,在材質面板中只有乙個顏色屬性,當我們點開拾色器時,對應的模型也會自動發生變化。我們就用之前的myfirstshader來完善。在乙個shader中,可以有多個subshader以及乙個subshader中也...

linux入門手記

幾天前決定學習linux,可剛入門,問題之多差點讓我的沮喪填滿了每天的每一秒,有時連做夢都是一行行錯誤。乙個小小的問題有時兩天都找不到答案,而且每天都有新的問題產生。不過還好,我想應該可以繼續下去 和每乙個linux高手當初入門時一樣.我想linux高手們是乙個以執著為動力的群體,甚至在別人看來可能...

shader入門精要3

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