位置: 編程技術(shù) - 正文
推薦整理分享Unity3D游戲開發(fā)從零單排(十) - 進擊的Shader續(xù)(Unity3D游戲開發(fā)畢業(yè)論文),希望有所幫助,僅作參考,歡迎閱讀內(nèi)容。
文章相關(guān)熱門搜索詞:Unity3D游戲開發(fā)培訓(xùn)課程大綱,Unity3D游戲開發(fā)(第2版),Unity3D游戲開發(fā)畢業(yè)論文,Unity3D游戲開發(fā)(第2版),Unity3D游戲開發(fā)(第2版)pdf,Unity3D游戲開發(fā)標準教程,Unity3D游戲開發(fā)標準教程,unity3D游戲開發(fā),內(nèi)容如對您有幫助,希望把文章鏈接給更多的朋友!
在這之前首先來了解一下SurfaceOutput這個結(jié)構(gòu)體,它是一個包含大多數(shù)描述一個物體表面渲染特征的結(jié)構(gòu),具體結(jié)構(gòu)如下:
基本上所有的Shader函數(shù)要處理的就是這個結(jié)構(gòu)體。Unity自帶的光照實現(xiàn)都定義在一些*.cginc文件中,要自定義光照模型,只要不用Unity自帶的光照模型就可以了。
將下面這一行的語句的最后替換成對應(yīng)的光照計算函數(shù)。
#pragma surface surf NoLight
無光照的材質(zhì)Shader
自己實現(xiàn)一個diffuse
上圖中左邊是NoLight,右邊是SimpleDiffuse。
同理可以自定義實現(xiàn)各種光照模型了,Lambert,Blinning,,,,,
補充一下光照函數(shù)的幾種寫法
half4 LightingName (SurfaceOutput s, half3 lightDir,half atten){}
這個函數(shù)用于不需要視角方向的情況下的Forward rendering。
half4 LightingName (SurfaceOutput s, half3 lightDir, half3 viewDir, half atten){}
這個函數(shù)用于需要視角方向的情況下的Forward rendering。
half4 LightingName_PrePass (SurfaceOutput s, half4 light){}
這個函數(shù)用于Deferred rendering。
用代碼控制shader動態(tài)修改材質(zhì)對SimpleDiffuse稍微做一下修改,添加一個疊加的顏色。
在模型(有MeshRenderer的)上面掛一個腳本,實現(xiàn)如下MeshChanger
根據(jù)時間動態(tài)修改0號材質(zhì)的_Color選項,結(jié)果就像這樣自行腦補中間過程。
使用漸變紋理來處理光照首先要準備一張漸變紋理,原理就是通過計算當(dāng)前位置的光照與法線的點積,索引到漸變圖片上的像素值,最后將其和diffuse疊加。
渲染結(jié)果沒有紋理的情況(是大象不是小豬)
換一下索引貼圖
得到結(jié)果如下(Toon Shading)
參考Unity Shaders and Effects CookBook
Unity3D海量新書資源 書籍比較雜,有些不一定寫的很好,全部是英文的(中文書一般是不會有清晰電子版,你肯定知道的),所以大家酌情下載喜歡的那幾本看完就好了。
Unity3d UGUI 滾動視圖ScrollView的使用教程之簡易背包 Unity3d中,UGUI提供了ScrollRect、GridLayoutGroup、Mask這三個組件,我們用來實現(xiàn)滾動視圖,這里用一個簡易的背包作為示例。文章轉(zhuǎn)自
Forward Render VS Deferred Rendering ForwardRender傳統(tǒng)的渲染方式,你提供給顯卡形狀Mesh,它將其打散成一堆節(jié)點,接著經(jīng)過一系列的變換和分割成為Fregment或者像素,在呈現(xiàn)在屏幕之前已經(jīng)
網(wǎng)站地圖: 企業(yè)信息 工商信息 財稅知識 網(wǎng)絡(luò)常識 編程技術(shù)
友情鏈接: 武漢網(wǎng)站建設(shè)