一ã€Unity3D åˆè˜(shÃ)Shader (一)
Unity3D åˆè˜(shÃ)Shader (一)
我們都知é“在unityä¸ï¼ŒShader是擔(dÄn)當(dÄng)著一個(gè)é‡è¦çš„角色,整個(gè)引擎的渲染是需è¦ä¾é Shader,今天å°ç·¨å°±å’Œå¤§å®¶ä¸€èµ·ä¾†å¸(xué)ç¿’(xÃ)一下這個(gè)神奇的Shaderå§ï¼
1.首先從æ„義上èª(rèn)è˜(shÃ)Shader:
Shaderï¼ˆè‘—è‰²å™¨ï¼‰æ˜¯ä¸€æ®µèƒ½å¤ é‡å°(duì)3Då°(duì)象進(jìn)è¡Œæ“作,并被GPU所執(zhÃ)行的程åºï¼›ä¾‹å¦‚在一個(gè)3Då ´(chÇŽng)景ä¸ï¼Œä¸€èˆ¬æœƒ(huì)有多個(gè)çš„Shader,這些Shaderä¸æœ‰çš„è² (fù)責(zé)å°(duì)3Då°(duì)象進(jìn)行表é¢çš„處ç†ï¼Œæœ‰çš„è² (fù)責(zé)å°(duì)3Då°(duì)象的紋ç†é€²(jìn)行處ç†ã€‚
2.在Unityä¸ Shader一般有三種類型:
2.0 基本定義:
2.0.0 Fixed Function Shader:(固定渲染管線著色器)基于用于高級(jÃ)Shader 在è€é¡¯å¡æ»ç„¡æ³•é¡¯ç¤ºçš„Fallback,å¯ä»¥ä½¿ç”¨ShaderLab語言;(固定渲染管線:就是功能固定的管線,比如物體表é¢å…‰çš„折射,å射的算法是無法修改的,我們åªèƒ½å°(duì)這些功能進(jìn)è¡Œé…置,比如開啟或關(guÄn)é–‰å射效果ã€éœ§åŒ–效果,然而這種管線功能固定,無法在程åºä¸Šå°(duì)物體細(xì)節(jié)的表ç¾(xià n)給予更多自由的控制)
2.0.1 Vertex and Fragment Shader:最強(qiáng)大的Shader類型,屬于å¯ç·¨ç¨‹æ¸²æŸ“管線,使用CG/HLSL語法;(å¯ç·¨ç¨‹æ¸²æŸ“管線:å¯ä»¥æ ¹æ“š(jù)特定的需求實(shÃ)ç¾(xià n)更多自己想è¦çš„特效)
2.0.2 Surface Shader:是ç¾(xià n)在unityä¸æœ€å¸¸ç”¨çš„Shader類型,使用ä¸é (yù)制的光照模型來進(jìn)行光照é‹(yùn)算,使用CG/HLSL語法;
2.1 三種Shaderé¡žåž‹çš„å…±åŒé»ž(diÇŽn):
2.1.0 åªæœ‰å”¯ä¸€ä¸€å€‹(gè)æ ¹Shader 開始;
2.1.1 Properties åƒæ•¸(shù)部分ã€ä½œç”¨åŠèªžæ³•æ˜¯å®Œå…¨ç›¸åŒçš„ï¼›
2.1.2 具體功能都在SubShaderå著色器里é¢ï¼Œå¹¶ä¸”Shader 會(huì)自上而下é‹(yùn)行第一個(gè)硬件能支æŒçš„å著色器,主è¦æ˜¯ç‚ºäº†å°(duì)ä¸åŒç¡¬ä»¶çš„é©é…ï¼›
2.1.3 都å¯ä»¥æ‰“標(biÄo)簽,例如 Tags{"RenderType"="Opaque"} LOD 300
2.1.4 都å¯ä»¥ä½¿ç”¨Fallback
2.1.5 都å¯ä»¥è™•ç†åŸºæœ¬åŠŸèƒ½ï¼Œä¾‹å¦‚光照慢åå°„ã€é¡é¢å射,當(dÄng)然Vertex and Fragment Shader å’ŒSurface Shader都能實(shÃ)ç¾(xià n)Fixed Function Shader實(shÃ)ç¾(xià n)ä¸äº†çš„高級(jÃ)功能,例如基于UV的計(jì)算效果;
2.2 三種Shaderé¡žåž‹çš„ä¸åŒé»ž(diÇŽn):
2.2.0 Fixed Function Shader å’Œ Vertex and Fragment Sahder 在SubShader 下é¢é‚„有pass{},但是Surface Shader 由于具體內(nèi)容已經(jÄ«ng)打包在光照模型,ä¸èƒ½åŠ pass{},å¦å‰‡æœƒ(huì)å ±(bà o)錯(cuò)çš„ï¼›
2.2.1 Fixed Function Shader æ¯å¥ä»£ç¢¼ä¹‹åŽæ²’有分號(hà o)";",但是Vertex and Fragment Sahderå’Œ Surface Shader æ¯å¥ä»£ç¢¼åŽå¿…é ˆè¦åŠ ";";
2.2.2 代碼çµ(jié)構(gòu)ä¸åŒ
Fixed Function Shader ä¸SubShaderçµ(jié)構(gòu):
Material{}
......
SetTexture[_MainTex]{......}
Vertex and Fragment Shaderçµ(jié)構(gòu):
CGPROGRAM
#pragma vertex vert
#pragram fragment frag
......
#include "UnityCG.cginc"
ENDCG
Surface Shader çš„çµ(jié)構(gòu):
CGPROGRAM
#pragma surface surf Lambert
......
ENDCG
3.èª(rèn)è˜(shÃ)Shader 開發(fÄ)的語言
CG(Nvida å…¬å¸é–‹ç™¼(fÄ)çš„c for graphics 計(jì)ç®—æ©Ÿ(jÄ«)圖形C語言超集):CG 程åºå¯ä»¥æ ¹æ“š(jù)é‹(yùn)行時(shÃ)的需è¦æˆ–者事先編è¯æˆGPU匯編代碼;
HLSL(基于DirectXçš„High Level Shading Language):åªèƒ½ä¾›å¾®è»ŸDirect3D 以åŠXNA使用,移æ¤æ€§å·®ï¼›
GLSL(基于OpenGLçš„OpenGL Shading Language):åªèƒ½OpenGL使用,具有良好跨平臺(tái)和移æ¤æ€§ï¼›
ShaderLab(UnityShader):unity3d 上自帶的一套Shaderèªžè¨€ï¼Œæ ¸å¿ƒé ‚é»ž(diÇŽn)和片段程åºæ˜¯ç”±CG/HLSL語言編寫,å¯ä»¥å°(duì)外æ供一系列屬性的輸入接å£ï¼ˆåœ¨UnityEditoræ質(zhì)Inspector é¢æ¿ä¸ç”¨åœ–形化方å¼è¨(shè)置屬性和é¸æ“‡è³‡æºï¼‰ï¼Œè¼¸å…¥çš„åƒæ•¸(shù)最終還是由CG/HLSL 程åºä¾†è™•ç†ã€‚
4.談?wù)凷haderå’ŒMaterial 之間的關(guÄn)ç³»
我們都知é“在unityä¸Shaderå’ŒMaterial兩者是緊密è¯(lián)系的,Shader 包å«å®šç¾©å±¬æ€§å’Œè³‡æºä½¿ç”¨ç¨®é¡žçš„代碼,Material 是調(dià o)整屬性和分é…資æºï¼›
å†ç°¡(jiÇŽn)單來說:Shader(著色器)是代碼,å¯ä»¥å®šç¾©è¼¸å…¥çš„屬性和資æºï¼›è€Œæ質(zhì)需è¦é—œ(guÄn)è¯(lián)一個(gè)著色器,并且通éŽæ質(zhì)Inspectoré¢æ¿ï¼Œå¯ä»¥åœ–形化的é¸æ“‡è³‡æºï¼ˆå¦‚ç´‹ç†ï¼‰æˆ–者調(dià o)整屬性;
Shader常用屬性:
2D: _MainTex("Base(RGB)",2D)=" White"{} //定義2Dç´‹ç†ï¼ˆ2次方)屬性,資æºå¯ä»¥åœ¨æ質(zhì)里é¢é¸æ“‡ï¼Œ{}表示é¸æ“‡ç´‹ç†å±¬æ€§
Color:_Color("Main Color",Color)={1,1,1,1} //定義é¡è‰²å±¬æ€§ï¼ŒRGB+Alpha
Range:_RangeValue("RangeValue",Range(0,1))=0.5 //定義一個(gè)浮點(diǎn)數(shù)屬性
Rect:_RectMap("Rect Map",Rect)=""{} //定義長(zhÇŽng)方形(éž2次方)紋ç†å±¬æ€§
Cube:_CubeMap("Cube Map",Cube)=""{} //定義立方體貼圖紋ç†å±¬æ€§
Float:_FloatValue("FloatValue",float)=100 //定義一個(gè)浮點(diǎn)數(shù)屬性
Vector:_VectorValue("VectorValue",vector)=(1,1,1,1) //定義一個(gè)å››å…ƒç´ çš„å®¹å™¨å±¬æ€§
教程å稱:Unity3D åˆè˜(shÃ)Shader (一) | 語 言:ä¸æ–‡ | é 數(shù)/時(shÃ)é•·(zhÇŽng): 4é |
軟件版本: unity | 上傳時(shÃ)間:2018/02/27 | 價(jià )æ ¼ï¼šï¿¥0 |
æ–‡ä»¶æ ¼å¼ï¼š docx | 文件大?。?5kb |
分享
使用說明:
1. 本站所有資æºï¼ˆåŒ…括3D模型ã€CG教程ã€æ’件軟件ã€æ質(zhì)貼圖ã€å·¥ç¨‹æ–‡ä»¶ç‰ï¼‰ç”±è¨(shè)計(jì)師上傳,僅供å¸(xué)ç¿’(xÃ)ã€åƒè€ƒï¼Œè«‹(qÇng)勿用于éžæ³•ç”¨é€”。
2. 本站付費(fèi)類資æºç¬¬ä¸€æ¬¡éœ€æœ‰å„Ÿä¸‹è¼‰ï¼Œé‡å¾©(fù)下載ä¸å†æ”¶è²»(fèi)。
3. 若出ç¾(xià n)3d模型類資æºæ‰“ä¸é–‹ï¼Œè«‹(qÇng)確èª(rèn)您的軟件版本是å¦éŽä½Žã€‚
4. 本站æ¡è¿Žè¨(shè)計(jì)師注冊(cè)開店,上傳作å“進(jìn)行交æµã€äº¤æ˜“。
5. 如在使用éŽç¨‹ä¸ï¼Œé‡åˆ°ä»»ä½•å•é¡Œï¼Œè«‹(qÇng)下拉é é¢è‡³è©•(pÃng)è«–å€(qÅ«)留言,或咨詢QQ:2353487910。
您還未登錄
全部評(pÃng)è«–: 0æ¢