導航:首頁 > 編程語言 > unityshader編程

unityshader編程

發布時間:2022-08-08 05:43:32

❶ 對於unity特效師來說,shader編程對特效有幫助嗎

都有點聯系,那肯定是有幫助的。

❷ 如何選擇Unity 3d Shader編寫語言

Metal API:有人說,Metal API是iOS的未來。如果你完全不關心Android,PC,Xbox,PS等平台,那麼你的確可以奉之為圭臬。反正,Unity3d 是不支持用Metal寫的,而且他們說近期也沒有要去支持Metal的打算。他們只支持自動編譯成Metal API,但這樣你能控制的就很少。因此,這不是一個Unity開發者入門的選擇。

Vulkan:有人說這才是未來。大概吧。AMD開發過一個叫做Mantle 的語言,只有很少的幾個游戲用過它,然後它還死了,現在有人用它搞出了這個。人們說他們從蘋果公司的Metal借鑒了一些理念,用之以完善Vulkan。很顯然,Vulkan是在2015年GDC公布的,但我沒有在其他任何地方聽說或看到。即使它真是未來,那也是一個遠到不著邊際的未來。Vulkan 聽起來不錯,像是某種方式的夢想成真,但它甚至沒有發行。只有Valve公司用過它。什麼?你在Valve工作?你的上司是要支持這個技術了嗎?太多問題了。此外,約翰·卡馬克暗示Android可能不久會有一個類似Metal API的東西,所以Android設備的GPU甚至不需要接受它。那麼,當你考慮所有事情時,就是有太多的問題圍繞著它,太多的未知。無論如何,它不是Unity當下的選擇。
GLSL:現在你可以在Unity里寫GLSL了。Unity會將這段代碼編譯到任何平台,雖然你可能要在PC(或任何非iOS / Apple設備)上執行「-force-opengl」,以使之正常工作。那會導致在某些顯卡GPU上,Unity Profiler不能正確地執行配置。我很想知道,是否有可能解決這問題。所以,如果你用著Mac,團隊里人人用著Mac,那麼相信你應該使用GLSL- 絕對是明智之選。

Surface Shaders:你可以用Unity shader庫做些很酷的東西,但它不一定會在移動設備上有效果。 Shader庫就像一個簡化的,更易於閱讀的標記語言,但你失去了你手機游戲需要的控制和性能選項。鑒於大多數在中國的工作是做手游,我不推薦這樣做。
Cg/HLSL:有人說,Cg是死的語言。那麼,事實是,Cg和HLSL是同一個語言,只是由兩個不同的公司,NVIDIA 和Microsoft分別維護。現在NIVIDIA已停止支持Cg,沒有必要啊是不,反正Microsoft在維護HLSL。人們仍然使用著Cg的名字,但願沒有人對此困惑了。 Cg/ HLSL當然沒有死,在跟幾個大牛以及論壇老兵聊過Unity,他們都認為HLSL是Unity shader的未來,因為公司為游戲機做了很多,為3A級提升了許多。只要看看Unity5的特性,你會懂我意思了。Cg/HLSL可以被編譯到你需要的任何設備,同時Unity和微軟已經親密得像兄弟一樣,並且將一直親密下去直到地老天荒。

結論:
如果你想用Unity3d,為Windows,游戲機,Android和iOS開發游戲,並且在所有平台上表現不俗,你應該用Cg/HLSL。
如果你想用Unity3d,只做手游(不需要支持Windows或游戲機),GLSL是上選,尤其是當你用Mac電腦工作。

如果你不想用Unity3d,只希望為最新的iOS設備開發,那麼Metal是最好的,盡管現在中國很少有人用它。

如果你想用cocos2d,我不是專家,但朋友說GLSL是您的最佳選擇。

不過,也有,但,也許......。在中國,佔主導地位的藝術風格是手繪。這並不需要很深的渲染知識,一個經驗豐富的人只要做很少的工作。Shader編碼為主要是為試圖超越目前世代的圖形,或創建特效,或避開某些圖形問題。所以,你要想想是否值得學習,因為很多種游戲可能不需要這個。

❸ unity shader 好學么

如何系統的學習Unity3D中的shader編寫nvidiacg編程2016-02-25UnityShader(23)相信一定也有很多做unity3d開發的朋友對shader這一塊有疑問。unity3d算是比較新的引擎,最近手游又比較火,很多unity3d程序猿應該是從其他專業轉過來的,比如本人以前就是搞javaweb開發的,所以對這一塊的知識體系不太了解。我看了nvidia官網上的TheCgTutorial:Chapter1.Introction,算是稍微入了點門,然後看了CgProgramming/Unity中的一些例子(有很多看不懂的),結合unity3d官方文檔,能寫一些簡單的shader,但復雜的東西就不太懂了(比如上次看到一個鏡面反射的例子,裡面有些矩陣運算,不太明白那演算法怎麼來的,當然自己線性代數不好也是硬傷)。感覺cg編程涉及的東西很多,數學、物理、編程、3D模型什麼的都要懂一些,要學的東西很多很雜,有些迷茫。不想再東拼西湊找例子,這里拷一段那裡拷一段的寫shader,而是按照自己的想法寫。請問有什麼好書籍可以幫助我系統地學習這一塊的知識(包括計算機圖形學、數學等各個方面的書籍)?,這會是個比較漫長的學習過程(一)國內引進出版的書籍國內引進或出版的圖形學書籍很多,但是大部分是糟粕,看它們是浪費時間3D數學基礎:圖形與游戲開發這本可以補數學基礎,矩陣變換,線性代數啥的圖形著色器:理論與實踐(第2版)這本是比較新的講openglshader的DirectX9.03D游戲開發編程基礎這本是國內出版或引進的d3d書籍中唯一能看的(二)國內沒有引進的書籍,可以下載電子版或上淘寶買列印版OpenGLShadingLanguage可以認為是glsl的聖經Introctionto3DGameProgramming:WithDirectx11可以認為是d3d11的聖經,這本是DirectX9.03D游戲開發編程基礎的升級版(三)個人推薦3D數學基礎:圖形與游戲開發DirectX9.03D游戲開發編程基礎Introctionto3DGameProgramming:WithDirectx11Vinjn張靜2013-08-14還得看NVidia良心免費彩色pdf《GPUGEMSIIIIII》。這三本書十分精彩,我在當初還沒免費的時候就買過了,一本一百多。vczh2014-12-06自己回答一下,再補充兩本書:1.《》主要講Unity的SurfaceShader編程技巧,非常實用。除了光照以外還有Imageeffects在Unity中的實現。強力推薦。2.《Real-TimeRendering》比較底層的內容,夯實基礎(自己還沒看完)發現了新的好書再繼續更新!kUANGtOBY2014-12-06最近也在學習shader,推薦幾篇博客供題主入門。1、首先來兩篇最最基礎文章對shader有大體的認識。這兩篇文章會分析shader中的一行行代碼,講解語法和作用並加以擴展。讀完後就基本了解了shader中的屬性、Tags、LOD、光照模型等是怎麼回事。貓都能學會的Unity3DShader入門指南(一)貓都能學會的Unity3DShader入門指南(二)2、然後可以看《UnityShaderandEffectCookbook》,或者它的中文版《Unity著色器和屏幕特效開發秘笈》。這本書會展示shader中的各個方面,如漫反射著色、紋理貼圖、鏡面反射等等。可能由於這本書方方面面都有涉及,有時會忽略一些比較關鍵的細節,而這恰恰使初學者困惑。有一位博主記錄下了根據這本書學習的筆記,題主可以直接看博客來學習:【UnityShaders】概述及DiffuseShading介紹3、在第2步的過程中,你可能需要查閱shader中各個概念函數的更詳細的情況,這時你會需要Unity官方手冊以及Cg教程:Unity-Manual:ShadersUnity-Manual:ShaderReferenceTheCgTutorial4、學習shader的時候,你不僅想知道怎麼用,可能還想了解它背後的機制,那這篇文章你肯定不能錯過:【UnityShaders】初探SurfaceShader背後的機制5、這些都熟練了,對shader也都比較熟悉了。你可以嘗試去創造屬於自己的shader,也可以去ShadertoyBETA尋求靈感,感受shader的鬼斧神工。匿名2015-05-23推薦一本書,UnityShaderandEffectCookbook,但一般的Shader都可以用ShaderForge搞定。ShaderForge是一個可視化的,nose-based的shader編輯器。簡單來說,就是你在圖形化界面把各種effect按一定邏輯連接好,它可以自動生成shader的代碼。JingwenZhao2014-11-13僅針對你只想學些shader編程來講:1、先要明白shader在整個3D流水線中的地位或者是作用,建立流水線概念的過程,是理解整個當代3D的基礎。2、把Unity當做shader編輯器,這一方面講,unity的確也是不錯的,:)。由簡到難的分析和實驗各個shader,調試各種參數,用unity的所見即所得界面,了解shader內部代碼的意義。3、就每個遇到的問題,在互聯網上查找該問題的可能的答案。如Diffuselight的演算法公式究竟是什麼,shadowmap的矩陣幹嘛用的。在這塊上,請盡量查找英文資料,會痛快些。就這么三點,第一點是面,能幫助自己確定方向。第三點是點,知道自己的短線位置在哪裡。書籍不舉例,只知道我第一本看的書是《3D游戲編程大師技巧》。後來在各種查找過程中,各種不同的書籍自然會進入自己的腰包,沒有一本是需要全部讀完的。但是讀完所有的每本的某一個部分,應該每本書都算是讀完了,你明白的。匿名2013-08-17unity的shader淺淺的包裝了一下cg。類似fx。總之就是一個DSL,對cg和渲染流程做了一些描述。所以基本上,你還是需要了解shader語言及基本的渲染流程。@張靜vinjn和@kUANGtOBY提到的書對頭。速學的話,我補充一本:《》。國內的人寫的小冊子,很不錯。知道2014-06-12這個網站可以參考ShadertoyBETA不過是同樣的問題,因為很多代碼都是式子,是經過計算之後得出的,計算過程在代碼里沒有體現,所以根本不知道那些奇怪的數字和算式都是怎麼來的。殷實2014-07-23數學推薦這部——《》另外就是看看這個推薦游戲程序員養成計劃(更新2013.3.19)老鍾古2014-02-20我比較推薦《互動式計算機圖形學:基於OpenGL的自頂向下方法(第6版)》配合《計算機圖形學/基於3D圖形開發技術》食用風味更佳。學習shader會遇到一些比較基礎的數學問題,google、wiki和度娘基本能夠解決。匿名2014-06-12《》其實這本書是surfaceshader的入門,我確實是先看了這本書,還不是特別實用,但也必須要看,它有解釋一些入門的知識比如pipeline,常見語法。。那本書完全沒有涉及cg語言,vertex和fragshader,個人覺得有一本不錯,比較系統,就是《CgProgramminginunity》。然後「龍書」多少也著看,還有各種高數線性代數書籍跟著研究,有空多拿其他人的shader打開來看,並且在相關技術qq群貼吧等平台,利用好這些平台資源獲取大神的解答。。這是我的路,也是新手爬坑中,以供參考。。互勉!周車2015-06-29

❹ 如果系統學習Unity3D的shader,都需要學習哪些知識

計算機基礎》原理》圖形學》OPENGL》渲染PIPELINE》SHADER語言

❺ shader編程怎麼學

學習方法

(1)由簡入繁:自己寫Shader,從最簡單寫起,簡單的測試通過了,再一點點往裡加。
(2)多調試:例如,有一個float變數x。假如x范圍是[0,1],則在frag片段函數里輸出 float4(x,0,0,1)的顏色,以紅色的深淺來觀察x的值;如果x范圍是[0,1000],則可在frag片段函數里輸出 float4(x/1000,0,0,1)的顏色。方法就這么簡單,具體根據需要去調整。
(3)結合查看UnityCG.cginc等文件,以及unity的自帶Shader,即Build-in Shader。
Build-in Shader下載地址
(4)看看書:建議看本教程的同時,多看看書。推薦英文的The CG Tutorial,也就是中文版的Cg教程_可編程實時圖形權威指南
相關教材鏈接

學習小技巧
(1)查看UnityCG.cginc等文件
使用Vertex and Fragment的CG時,會#include "UnityCG.cginc",用到裡面的很多函數,如TRANSFORM_TEX,UNITY_TRANSFER_DEPTH等函數的定義。那麼怎麼查看這些定義呢?

windows路徑:Unity\Editor\Data\CGIncludes
mac路徑:右鍵點擊unity圖標->show contents->Data->CGIncludes
文件夾下有Unity關於Shader的庫,如UnityCG.cginc,UnityCG.glslinc,Lighting.cginc等。打開
UnityCG.cginc(寫字板MONODev等均可),後即可查看相關函數的定義。

(2)電子書的學習技巧
中文電子書,學起來快,好理解,但大多數是影印版。
英文電子書,可以很好的用關鍵詞搜索知識點。

(3)使用#prama only_renderers d3d9 , 限定編譯平台。(3)(4)配合使用效果更好

(4)打開編譯後的Shader,查看對應的匯編代碼或者OpenGL ES代碼。
方法:左鍵單機shader文件,然後在Inspector面板里點擊Open Compiled Shader.

❻ unity怎麼編輯shader

有個插件叫做Shader Forge 可以可視化的編輯shader效果 不過效率可能沒那麼高
也可以自己學一下shader的語言然後再編輯

❼ 求《Unity3DShaderLab開發實戰詳解》全文免費下載百度網盤資源,謝謝~

《Unity 3D ShaderLab開發實戰詳解》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1JHbc-gxaAZKJ4F8MJSzSPg

?pwd=mis3 提取碼:mis3
簡介:《Unity 3D ShaderLab開發實戰詳解》全面講解了Unity Shader渲染的實戰技術,全書分為五篇共33章,主要內容為:Shader在3D游戲中的作用、Shader的實例化、Shader的實現語言等;Unity中Shader的形態、SubShader的重要標簽、可編程Shader、Surface Shader;Shader中用到的各種空間的概念和Shader中的投影矩陣;基本的光照模型;被執行的Pass,包括渲染路徑和Pass的LightMode標簽;VertexLit渲染路徑,包括頂點照明和Unity存放光源的方式;Forward渲染路徑;基於光照貼圖的烘焙照明;基於LightProbes的照明;□面陰影;球體陰影;體積陰影;映射陰影;內置的陰影;Pass的通用指令開關;固定管線;Surface Shader;凹凸材質;卡通材質;鏡面材質;半透明材質;體積霧;Wrap Model新解;面積光;體積光;材質替代渲染;後期效果;地形;投影;Shader的組織和復用。和你必須知道的渲染概念及基於渲染路徑的優化、移動□台上的優化等實戰內容,是不可多得的實戰教程。

❽ 請問在Unity的像素Shader里返回的顏色的計算模式是什麼樣的

已知顏色A與顏色B,顏色B覆蓋在顏色A上,最終輸出的結果為顏色C。
A為緩存色,B為當前色,C為輸出色
【正常透明度混合】-
描述:正常透明度混合
公式:當前顏色 x 當前透明度 +(1 - 當前透明度)x 緩存顏色
shader:fixed4 C = B x B.a + A x (1 - B.a);
【正片疊底】-
描述:顏色疊加,使像素重合部分的顏色更暗。像素覆蓋順序隨意調換不會改變結果
公式:當前顏色 x 緩存顏色
shader:fixed4 C = A * B;
【濾色】-
描述:與正片疊底相反,重合部分的像素更亮
公式:1 - (1-當前顏色)x (1-緩存顏色)
shader代碼:fixed4 C = 1 - (1 - A) * (1 - B);
【疊加】 - -
描述:結合濾色與正片疊底,基色的像素重合部分比較亮的會更亮,比較暗的會跟暗
公式:如果當前顏色 <= 0.5 返回1,否則返回 0 該值記做 w;
w x 緩存色 x 當前色 x 2 + (1 - w) x (1 - (1 - 緩存色) x (1 - 當前色) x 2)
shader代碼:
if(A > 0.5){
fixed4 C = 1 - 2 * (1 - A) * (1 - B);
}else{
fixed4 C = 2 A B;
}
【反色】
描述:取得與緩存色相反的顏色
公式:1 - 緩存顏色
shader代碼:fixed4 C = 1 - A;
【變暗】-
描述:緩存顏色 x 緩存顏色與當前顏色中最小的那個
公式:緩存顏色 x min(緩存顏色,當前顏色)
shader代碼:fixed4 C =A * min(A,B) ;
【變亮】-
描述:緩存顏色 x 緩存顏色與當前顏色中最大的那個
公式:緩存顏色 x max(緩存顏色,當前顏色)
shader代碼:
fixed4 C =A * max(A, B) ;
【減色】
描述:緩存顏色減掉當前顏色的值
公式:緩存顏色 - 當前顏色
shader代碼:fixed4 C = A - B;
【劃分】
描述:緩存顏色除當前顏色的值
公式:緩存顏色 / 當前顏色
shader代碼: fixed4 C = A / B ;
【顏色加深】
描述:
公式:緩存顏色 - ((1 - 緩存顏色) x (1 - 當前顏色)) / 緩存顏色
shader代碼:fixed4 C = A - ((1-A) * (1-B)) / B;
【顏色減淡】
描述:
公式:緩存顏色 + ((緩存顏色 x 當前顏色) / (1 - 當前顏色))
shader代碼:fixed4 C = A + (A * B) / (1 - B);
【線性加深】
描述:
公式:當前顏色 + 緩存顏色 - 1
shader代碼:fixed4 C = B + A -1;
【線性減淡】
描述:
公式:緩存顏色 + 當前顏色
shader代碼:fixed4 C = A + B;
【強光】
描述:
公式:如果當前色 <= 0.5 返回1,否則返回0,記作w;
w x 緩存色 x 當前色 x 2 + (1 - w) x (1 - (1 - 緩存色) x (1 - 當前色) x 2);
shader代碼:
fixed4 ifFlag= step(B, fixed4(0.5, 0.5, 0.5, 0.5));
fixed4 C = ifFlag * A * B * 2 + (1 - ifFlag) * (1 - (1 - A) * (1 - B) * 2);
【柔光】
描述:
公式:如果當前色 <= 0.5 返回1,否則返回0,記作w;
w x 緩存色 x 當前色 x 2 + (1 - w) x (1 - (1 - 緩存色) x (1 - 當前色) x 2);
shader代碼:
fixed4 ifFlag = step(B, fixed4(0.5, 0.5, 0.5, 0.5));
fixed4 C = ifFlag * (A * B * 2 + A * A * (1 - B * 2)) + (1 - ifFlag) * (A * (1 - B) * 2 + sqrt(A) * (2 * B - 1));
【亮光】
描述:
公式:如果當前色 <= 0.5 返回1,否則返回0,記作w;
w x (緩存色 - (1 - 緩存色) x (1 - 2 x 當前色) / (2 x 當前色)) + (1 - w) x (緩存色 + 緩存色 x (2 x 當前色 - 1) / (2 x (1 - 當前色)));
shader代碼:
fixed4 ifFlag = step(B, fixed4(0.5, 0.5, 0.5, 0.5));
fixed4 C = ifFlag * (A - (1 - A) * (1 - 2 * B) / (2 * B)) + (1 - ifFlag) * (A + A * (2 * B - 1) / (2 * (1 - B)));
【點光】
描述:
公式:如果當前色 <= 0.5 返回1,否則返回0,記作w;
w x (min(緩存色, 2 x 當前色)) + (1 - w) x (max(緩存色, ( 當前色 x 2 - 1)));
shader代碼:
fixed4 ifFlag = step(B, fixed4(0.5, 0.5, 0.5, 0.5));
fixed4 C = ifFlag * (min(A, 2 * B)) + (1 - ifFlag) * (max(A, ( B * 2 - 1)));
【線性光】
描述:
公式:緩存色,+ 2 x 當前色 - 1;
shader代碼: fixed4 C=A+2*B-1;
【實色混合】
描述:
公式:如果當前色 + 緩存色 <= 1 返回1,否則返回0,記作w;
w x (0) + (1 - w) x (1);
shader代碼:
fixed4 ifFlag = step(A + B, fixed4(1, 1, 1, 1));
fixed4 C = ifFlag * (fixed4(0, 0, 0, 0)) + (1 - ifFlag) * (fixed4(1, 1, 1, 1));
【深色】
描述:
公式:如果當前色的rgb分量 + 緩存色 <= 1 返回1,否則返回0,記作w;
w x (0) + (1 - w) x (1);
shader代碼:
fixed4 ifFlag = step(B.r + B.g + B.b, A.r + A.g + A.b);
fixed4 C = ifFlag * (B) + (1-ifFlag)*(A);
顏色制式
RGBA :紅、綠、藍、透明度
HSL: hue(色相)、saturation(飽和度)、lightness(亮度)
HSV: hue(色相)、saturation(飽和度)、value(色調)
HSB: hue(色相)、saturation(飽和度)、brightness(明度)

❾ 求《渲染管線與UnityShader編程》課程,tx課堂上的


Unity中的Shader通常來說叫做UnityShader,相對來說他有自己的相對語法UnityShaderLab。

如果你想學好Shader編程的話,有幾個步驟你是少不了的:

  1. 你需要學習GPU編程、CG、渲染管線和相對應的知識。

  2. CG相關知識

  3. 渲染管線

  4. 數學及物理知識,尤其線性代數比較重要,當然矩陣這套東西也不能丟掉。

  5. 如果你是初學的話,有本書可以推薦給你 Unity Shader入門精要,這個比較簡單,適合入門。

❿ 如何系統的學習 Unity 3D 中的 shader 編寫

最近也在學習shader,推薦幾篇博客供題主入門。

1、首先來兩篇最最基礎文章對shader有大體的認識。這兩篇文章會分析shader中的一行行代碼,講解語法和作用並加以擴展。讀完後就基本了解了shader中的屬性、Tags、LOD、光照模型等是怎麼回事。
貓都能學會的Unity3D Shader入門指南(一)
貓都能學會的Unity3D Shader入門指南(二)

2、然後可以看《Unity Shader and Effect Cookbook》,或者它的中文版《Unity著色器和屏幕特效開發秘笈》。這本書會展示shader中的各個方面,如漫反射著色、紋理貼圖、鏡面反射等等。
可能由於這本書方方面面都有涉及,有時會忽略一些比較關鍵的細節,而這恰恰使初學者困惑。有一位博主記錄下了根據這本書學習的筆記,題主可以直接看博客來學習:
【Unity Shaders】概述及Diffuse Shading介紹

3、在第2步的過程中,你可能需要查閱shader中各個概念函數的更詳細的情況,這時你會需要Unity官方手冊以及Cg教程:
Unity - Manual: Shaders
Unity - Manual: Shader Reference
The Cg Tutorial

4、學習shader的時候,你不僅想知道怎麼用,可能還想了解它背後的機制,那這篇文章你肯定不能錯過:
【Unity Shaders】初探Surface Shader背後的機制

5、這些都熟練了,對shader也都比較熟悉了。你可以嘗試去創造屬於自己的shader,也可以去Shadertoy BETA尋求靈感,感受shader的鬼斧神工。

閱讀全文

與unityshader編程相關的資料

熱點內容
電腦怎麼找到雲伺服器 瀏覽:871
微信怎麼發應用app 瀏覽:776
花生殼dns伺服器地址 瀏覽:648
squad伺服器一般什麼時候人多 瀏覽:479
程序員戰門課 瀏覽:474
config保存伺服器地址 瀏覽:317
預訂網吧座位的app叫什麼 瀏覽:416
香港伺服器主機地址 瀏覽:640
網店美工pdf 瀏覽:447
一堆文件夾怎麼弄出來 瀏覽:743
博途如何編譯硬體 瀏覽:418
fortran程序pdf 瀏覽:504
電池消耗演算法 瀏覽:394
伺服器中斷連接怎麼處理 瀏覽:222
上世紀互聯網不發達程序員很難 瀏覽:841
語音識別android開源 瀏覽:762
地埋式垃圾壓縮中轉站 瀏覽:902
apachehttpdlinux 瀏覽:944
快遞員中通app預付款是什麼 瀏覽:843
java路徑轉義 瀏覽:857