discuz!cms
久久桃花亚洲AV无码精品,2020最新99精品视频在线观看
匯寶盆 > 免費分享區(qū) > CG教程 > Unity > Unity3D 初識Shader (一)
Unity3D 初識Shader (一)

最好一點涼光

資源數(shù):63個

目錄CONTENTS

一、Unity3D 初識Shader (一)

在線預覽PREVIEW

Unity3D 初識Shader (一)

Unity3D 初識Shader (一)

 我們都知道在unity中,Shader是擔當著一個重要的角色,整個引擎的渲染是需要依靠Shader,今天小編就和大家一起來學習一下這個神奇的Shader吧!

    

    1.首先從意義上認識Shader:

          Shader(著色器)是一段能夠針對3D對象進行操作,并被GPU所執(zhí)行的程序;例如在一個3D場景中,一般會有多個的Shader,這些Shader中有的負責對3D對象進行表面的處理,有的負責對3D對象的紋理進行處理。


    2.在Unity中 Shader一般有三種類型:

       2.0 基本定義:

         2.0.0 Fixed Function Shader:(固定渲染管線著色器)基于用于高級Shader 在老顯卡死無法顯示的Fallback,可以使用ShaderLab語言;(固定渲染管線:就是功能固定的管線,比如物體表面光的折射,反射的算法是無法修改的,我們只能對這些功能進行配置,比如開啟或關閉反射效果、霧化效果,然而這種管線功能固定,無法在程序上對物體細節(jié)的表現(xiàn)給予更多自由的控制)

         2.0.1 Vertex and Fragment Shader:最強大的Shader類型,屬于可編程渲染管線,使用CG/HLSL語法;(可編程渲染管線:可以根據(jù)特定的需求實現(xiàn)更多自己想要的特效)

         2.0.2 Surface Shader:是現(xiàn)在unity中最常用的Shader類型,使用中預制的光照模型來進行光照運算,使用CG/HLSL語法;


        2.1 三種Shader類型的共同點:

          2.1.0 只有唯一一個根Shader 開始;

          2.1.1 Properties 參數(shù)部分、作用及語法是完全相同的;

          2.1.2 具體功能都在SubShader子著色器里面,并且Shader 會自上而下運行第一個硬件能支持的子著色器,主要是為了對不同硬件的適配;

          2.1.3 都可以打標簽,例如 Tags{"RenderType"="Opaque"} LOD 300 

          2.1.4 都可以使用Fallback

          2.1.5 都可以處理基本功能,例如光照慢反射、鏡面反射,當然Vertex and Fragment Shader 和Surface Shader都能實現(xiàn)Fixed Function Shader實現(xiàn)不了的高級功能,例如基于UV的計算效果;

       2.2 三種Shader類型的不同點:

           2.2.0 Fixed Function Shader 和 Vertex and Fragment Sahder 在SubShader  下面還有pass{},但是Surface  Shader 由于具體內容已經(jīng)打包在光照模型,不能加pass{},否則會報錯的;

           2.2.1 Fixed Function Shader 每句代碼之后沒有分號";",但是Vertex and Fragment Sahder和 Surface Shader 每句代碼后必須要加";";

           2.2.2 代碼結構不同

                Fixed Function Shader 中SubShader結構:

                Material{}

                ......

                SetTexture[_MainTex]{......}

                Vertex and Fragment Shader結構:

                CGPROGRAM

                #pragma vertex vert

                #pragram fragment frag

                ......

                #include "UnityCG.cginc"

                ENDCG

                Surface Shader 的結構:

                CGPROGRAM

                #pragma surface surf Lambert

                ......

                ENDCG

      3.認識Shader 開發(fā)的語言

         CG(Nvida 公司開發(fā)的c for graphics 計算機圖形C語言超集):CG 程序可以根據(jù)運行時的需要或者事先編譯成GPU匯編代碼;

         HLSL(基于DirectX的High Level Shading Language):只能供微軟Direct3D 以及XNA使用,移植性差;

         GLSL(基于OpenGL的OpenGL Shading Language):只能OpenGL使用,具有良好跨平臺和移植性;

         ShaderLab(UnityShader):unity3d 上自帶的一套Shader語言,核心頂點和片段程序是由CG/HLSL語言編寫,可以對外提供一系列屬性的輸入接口(在UnityEditor材質Inspector 面板中用圖形化方式設置屬性和選擇資源),輸入的參數(shù)最終還是由CG/HLSL 程序來處理。

      4.談談Shader和Material 之間的關系

        我們都知道在unity中Shader和Material兩者是緊密聯(lián)系的,Shader 包含定義屬性和資源使用種類的代碼,Material 是調整屬性和分配資源;

        再簡單來說:Shader(著色器)是代碼,可以定義輸入的屬性和資源;而材質需要關聯(lián)一個著色器,并且通過材質Inspector面板,可以圖形化的選擇資源(如紋理)或者調整屬性;

       Shader常用屬性:

       2D: _MainTex("Base(RGB)",2D)=" White"{}  //定義2D紋理(2次方)屬性,資源可以在材質里面選擇,{}表示選擇紋理屬性

       Color:_Color("Main Color",Color)={1,1,1,1} //定義顏色屬性,RGB+Alpha

       Range:_RangeValue("RangeValue",Range(0,1))=0.5 //定義一個浮點數(shù)屬性

       Rect:_RectMap("Rect Map",Rect)=""{} //定義長方形(非2次方)紋理屬性

       Cube:_CubeMap("Cube Map",Cube)=""{}  //定義立方體貼圖紋理屬性

       Float:_FloatValue("FloatValue",float)=100 //定義一個浮點數(shù)屬性

       Vector:_VectorValue("VectorValue",vector)=(1,1,1,1) //定義一個四元素的容器屬性

預覽結束,完整教程請 購買下載
資源參數(shù)
    教程名稱:Unity3D 初識Shader (一) 語       言:中文 頁數(shù)/時長: 4頁
    軟件版本: unity 上傳時間:2018/02/27 價格:¥0
    文件格式: docx 文件大?。?5kb
下載

使用說明:

1. 本站所有資源(包括3D模型、CG教程、插件軟件、材質貼圖、工程文件等)由設計師上傳,僅供學習、參考,請勿用于非法用途。

2. 本站付費類資源第一次需有償下載,重復下載不再收費。

3. 若出現(xiàn)3d模型類資源打不開,請確認您的軟件版本是否過低。

4. 本站歡迎設計師注冊開店,上傳作品進行交流、交易。

5. 如在使用過程中,遇到任何問題,請下拉頁面至評論區(qū)留言,或咨詢QQ:2353487910。

關鍵詞: Shader

您還未登錄

全部評論: 0