當前位置:首頁 >教程首頁 > 遊戲程序 > Unity3D遊戲開發工程師班 >Shader小白入門基礎教程之固定管線(上)

Shader小白入門基礎教程之固定管線(上)

發布時間:2020-02-25 12:47:22

今天跟大家分享Shader小白入門基礎教程之固定管線(上)。在講Shader之前,可能會問為什麼遊戲美術當中需要編程呢?這一點主要和兩方麵有關係,一方麵是當前遊戲美術的特征;另一方麵就是當前遊戲的一種說新不新但是很高效的開發模式。

1.webp.jpg

首先各位看官要明白的是,遊戲美術軟件,如果借用WEB開發技術來講,也有“前端”和“後台”之分。這裏的“前端”是看得見的、直觀的、簡易的、可直接操作的;“後台”是指不能輕易看見的、不可輕易直接操作的以及隱性的。

舉例來說,在你用Maya建模的時候,軟件開發者將多個複雜的代碼轉化成一些功能和命令,這些功能命令在菜單中可以直接找到並在3D視圖中直接參與使用;可是,在一些大型項目,尤其是國外獨立項目和大型次時代開發項目中,建模師或是動畫師,想要表現特別、複雜或是優化表現效果時,軟件當中的已有功能不能滿足需要,那麼這時候就不得不進行魔改,對軟件“底端”進行操作,用Maya Embedded Language(也就是Mel)腳本語言進行直接命令修改、設計。

2.webp.jpg

沒有編程基礎的,很少能做到Mel編程。但是為什麼門檻高還要有人去做呢,就在於“高門檻”帶來“高回報”。有了這樣的技術,可以讓你基本達到“為所欲為”的目的:):有的,可以增強畫麵表現效果,讓人驚歎“你是如何做到的”;有的,則可以“一勞永逸”,將你的這段代碼作為永久插件進行使用,在你日後的工作、創作中進行運用。

這也就是為什麼技術美術(TA)可以給出更加豐厚的薪酬。

3.webp.jpg

另一方麵,就是和當前一種“說新不新”的遊戲開發模式有關:Agile Game Development with Scrum,即Scrum敏捷遊戲開發。這是一種相對於傳統遊戲開發流程的開發模式,它的核心就是“迭代”,確立一個小的開發周期,不斷進行迭代開發。這種模式小巧、迅速且貼近市場風向,可以減低製作風險。這種開發模式,廣泛的應用於當今遊戲大廠和獨立遊戲製作人。為了在短時間內,製作出一個可交互式的遊戲Demo,就需要“精兵簡政”提高團隊運作效率,一旦人少,那麼每個人會承擔額外工作,也要求美工需要多麵能力,尤其是在引擎中實現美術資源與程序對接的關鍵環節。而類似Shader,就是其中必要的技術之一。

4.webp.jpg

我相信,除了一線的工作人員、遊戲愛好者,還有很多懷揣著獨立遊戲製作想法的朋友們。那麼引擎、shader等相關的TA領域複合技術,會更為直接的幫助你們。

二、Fixed Function Shader

在前文中,我們已經了解unity中有三種shader,而今天介紹的Fixed Function Shader就是其中一種。字麵意思來講,FFshader就是固定功能的shader,是對硬件能執行的基本的命令進行編寫的shader。這類shader功能很有限,但是速度卻是最快的。在unity中官方文檔中,介紹說,這種shader可以在當前所有硬件設備上正常運行。

FFshader涉及五方麵內容Properties(屬性)、Material(材質)、Lighting(光照)、Settexture(設置紋理)以及Pass(通道)。

在之前我們介紹了Unity當中ShaderLab的基本結構

5.webp.jpg

回顧完之後,我們在unity中創建出一個Shader,這裏創建的默認shader是unity中的Surface Shader。

6.webp.jpg

這裏麵我們仔細觀察unity給的默認shader中,是沒有Pass通道的,這是為什麼呢?在之前我們提到過,surface shader是對頂點和片段shader的包裝,這裏pass通道就是被包裝進去了。

7.webp.jpg

為了教學方便,現在我把Properties和Fallback塊全刪除,如下

8.webp.jpg

針對FF,我們在subshader中要添加pass命令,去編寫一個渲染通道。這裏需要注意,我在shader名稱前加了一個“Weg/”,是級聯菜單命令的意思。如下圖

9.webp.jpg

pass命令中,第一個就是可以描述“顏色”,這個命令就是Color命令,這是個四維命令RGBA。這裏我們進行實驗,設置一個材質球,賦予該材質如圖:

10.webp.jpg

我們在視窗中建立一個Cube,再將材質托給他,我們就看到一個不透明的白色cube了。這裏我們用四維數組對顏色進行指定,那麼有沒有更方便的顏色選取方式呢?有的,我們就需要Properties塊了,如下圖

這裏我們在Properties中建立了“_Color”並將它複製到下方,這裏注意,pass中的color命令如果用小括號,是指這個顏色是個固定值不變的;如果用中括號,就說明這是個參數值,是可以變的。

接下來我們看看材質菜單中有了什麼變化,很明顯,有了color選擇麵板,點擊時可以彈出,材質在默認狀態下是不透明白色狀態。(隨便改個色)

現在我們又發現,這正方體是一個平麵效果,並沒有三維立體的感覺,這個時候該怎麼辦呢?我們需要一個光照。這裏我們需要用一個功能命令塊——“Material”材質。針對表現效果,我們需要第一個屬性:diffuse,這個是用來描述漫反射效果的,可以簡單理解為一個物體的固有色。代碼如下

11.webp.jpg

但是呢,保存一下回去,我們發現一個問題,我們在麵 color中,怎麼改顏色,都還是純白默認的樣子,這是為什麼呢?

12.webp.jpg

這個,就是我在講引擎材質的時候反複強調的一個概念:質和光。你現在有一個顏色的材質,但是沒有光,那麼一切事物都是沒有顏色的,什麼也看不見。所以我們要啟用光照命令。我們在pass管道後輸入“lighting on”命令,意思是這條渲染管道,需要開燈。如下

13.webp.jpg

我們保存在回到界麵,三維效果就出現了

14.webp.jpg

我們再觀察,還是覺得怪怪的,顏色太純,尤其是暗部背光麵是受環境光的影響的,從美術角度看就是現在顏色太死。怎麼辦呢,我們就需要ambient命令,代碼如下

15.webp.jpg

這時候我們切換回來,看到材質中多了ambient命令,並且我把它調到了粉色,會明顯看到立方體暗部有粉色效果了

16.webp.jpg

暗部效果有了,但是我們會想,如果這個方體是一個光滑物體,那麼他應該有高光部分吧?那如何實現呢?這時我們就需要命令,specular,代碼如下

17.webp.jpg

我們保存檢查,但是發現加了高光之後沒什效果。這是因為在FFshader當中,如果你是用了Specular,就必須添加一個separatespecular,即鏡麵高光

添加代碼如下

18.webp.jpg

這時我們再回到界麵,調節高光,就發現高光有了明顯變化

19.webp.jpg

可是呢,我事多,強度是有變化了,但是還沒達到那種反光強度效果,腫麼辦呢?我們需要shininess一個鎖點值(是一個浮點值),用來描述高光到底有多強。shininess是一個範圍,我們要用到range給一個取值範圍,我這裏是給的0到8,默認為4。

20.webp.jpg

之後我給出了兩個對比圖作為效果對比(我這裏為了增加對比效果換成了球)

21.webp.jpg22.webp.jpg

如果說,一個物體時自發光的怎麼辦呢?在FFshader中有一個命令,叫emssion,如下

23.webp.jpg

如果說emission設置為白色,就是全曝光,那麼什麼效果都沒了,那麼我降低自發光強度,於是就會出現如下效果

24.webp.jpg

今天我們講到了一些命令,諸如diffuse、specular、ambient等等,各位看官會覺得這些個單詞好熟悉啊,在8猴啊、3Dmax啊還有Maya啊,好像都見過。沒錯,你的感覺很對。Shader已經將大家初步帶進了整個遊戲視覺領域最深的部分——計算機圖形圖像學。他們是一個個數學模型構建的函數,來模擬真實的自然界效果。

25.webp.jpg

有了他們,才有了令人驚豔的次世代效果模型、遊戲畫麵。所以,這就是為什麼一些核心大廠敢於自創IP,就在於擁有這些底層核心技術人才,一個個驚豔的遊戲效果才得以實現。如果看官想更有一番造詣,或是在建模上已經遊刃有餘還想得以提高,那麼你下一步就是這些深刻的理論,比如實時渲染技術、PBR技術等等。有人說,這些沒用,一般都不會使。這些技術有用與否,在於對自己的層次的定位和目的的選擇,如果你能掌握shader、render甚至更深的一些知識,就實現了“質光結合”的材質飛躍,類似於莊子所提過的一個概念“無所恃”。請各位看官酌情適用~

來源:Thepoly 

作者:kinglary 

华体会hth体育网 賞析
  • 2101期學員李思庭作品

    2101期學員李思庭作品

  • 2104期學員林雪茹作品

    2104期學員林雪茹作品

  • 2107期學員趙淩作品

    2107期學員趙淩作品

  • 2107期學員趙燃作品

    2107期學員趙燃作品

  • 2106期學員徐正浩作品

    2106期學員徐正浩作品

  • 2106期學員弓莉作品

    2106期學員弓莉作品

  • 2105期學員白羽新作品

    2105期學員白羽新作品

  • 2107期學員王佳蕊作品

    2107期學員王佳蕊作品

專業問題谘詢

你擔心的問題,火星幫你解答
  • 廣州視頻剪輯培訓機構有哪些

    在廣州這座繁華的都市中,數字創意產業正蓬勃發展,廣州視頻剪輯培訓成為許多影視愛好者的理想起點。隨著短視頻平台和影視製作需求的激......

  • 北京UI設計培訓免費試聽攻略

    在北京這樣一座充滿創意活力的都市,UI設計培訓正成為無數年輕人追逐職業夢想的跳板。隨著數字經濟的蓬勃發展,UI設計行業在北京展......

  • 北京平麵設計培訓機構排名榜

    在當今創意經濟蓬勃發展的浪潮中,北京平麵設計培訓成為眾多職業追求者的理想起點。這座城市的活力與機遇吸引著無數人投身視覺藝術領域......

  • 北京虛幻引擎課程內容全解析

    在影視和設計行業蓬勃發展的今天,虛幻引擎作為核心技術工具,正引領著視覺創作的革命。越來越多的人渴望掌握這門技能,而專業的培訓成......

  • 北京平麵設計課程如何選擇適合的

    在北京這座文化創意中心,平麵設計培訓行業蓬勃發展,為渴望入行的學員提供了豐富機遇。隨著數字媒體和影視產業的崛起,掌握視覺傳達技......

  • 上海3D建模短訓班課程內容解析

    在上海這座充滿活力的城市,影視和設計行業正迎來前所未有的發展機遇,數字技術的進步讓3D建模成為創意產業的核心驅動力。參加專業的......

×

同學您好!

您已成功報名0元試學活動,老師會在第一時間與您取得聯係,請保持電話暢通!
確定