2008-08-09 151 views
18

我想開始使用微軟的XNA做一些遊戲開發。其中一部分是Shader開發,但我不知道如何開始。我知道nVidia's FX Composer是開發着色器的好工具,但是我沒有找到有關如何真正開始使用的更多有用和更新的內容。開始着色器開發

你會推薦哪些教程?

回答

31

發展(這顯然使用DirectX)要求的HLSL或着色器組裝知識。我建議在潛入後者之前先熟悉前者。

編寫任何着色器之前,這是一個好主意,讓着色器管線的充分理解,並試圖讓你的頭腦周圍使用可編程着色器時,什麼是可能的。當你熟悉像素的生命時(從源數據一直到屏幕),理解着色器的例子變得容易得多。

下一頁做出嘗試寫自己的HLSL它做什麼用的Fixed T&L管道做,只是爲了讓你的手髒。這相當於頂點/像素着色器世界中的「hello world」程序。當你能夠做到這一點,並且你明白你寫的是什麼時,你已經準備好去嘗試更有趣的東西。

正如你可能想模擬基本在一個着色器的sepcular lighting從單一光源下一個步驟。然後,您可以沿着軌道適應多個燈光。玩的顏色和燈光的運動。這將有助於熟悉着色器常量的使用。

當你有幾個基本的着色器放在一起,你應該嘗試讓這個遊戲/引擎使用不同對象的多個/不同的着色器。開始添加一些其他位,如基本bumpnormal maps

當你到了這個階段,世界盡在掌握。你可以開始鑽研一些時髦effectcs,而且比它最初的目的,甚至考慮使用GPU進行more

對於那些稍微先進的人來說,有幾本好書可以免費在線獲得,這些書有一些來自Nvidia herehere的很好的信息。

不要忘記,有一個名爲ShaderX一個優秀的系列叢書涵蓋一些真棒着色器的東西。有1,​​,3,4,56已經打印,7即將推出。

好運。如果你得到一些着色器去,我很樂意看到他們:)

+0

感謝您的詳細回覆。可以肯定的是,一旦我找到了一些東西,我會添加一個鏈接:)雖然可能需要幾個月。 – 2008-11-28 09:05:15

1

SAMS的XNA Unleashed乍得卡特是XNA一個很好的起點,並在開始之前假定的遊戲開發實踐或硬數學知之甚少。它有兩章關於基礎和高級着色器的章節。作爲一個旁註,請注意Google上的WPF Shader教程,它現在使用相同的技術來允許WPF應用程序和教程中的客戶着色器,因爲我相信它們與XNA基本兼容。在XNA的着色器

5

我只是想重申GPU精粹書是多麼偉大 - 任何嚴重的圖形開發一個真正夢幻般的資源。

OJ基本上總結了一個非常好的學習過程,我只是補充說,在幾何數學(向量/矩陣至少)方面有一個良好的基礎不能低估 - 但它並不像人們有時做的那麼難出。學習一個點積,交叉乘積,法向量和矩陣乘法是和做是一個好的第一步:)。試着去了解究竟是什麼發生的事情之間的世界/視點/投影剪輯/屏幕空間,透視鴻溝是什麼,等等。

當我開始學習的,一個很好的鍛鍊是真正實現整個牛逼&大號管道在軟件中,完成裁剪/剔除等。這是一個漫長的過程,可能並不值得,因爲我確信你只是想潛入有趣的東西,但對正在發生的事情有一個正確的理解是非常有用的,並且會證明當你總是遇到更加陰險和難以診斷的錯誤時,這是​​值得的。

儘量不要使用FX Composer這樣的工具,這對於原型設計非常有用,但從長遠來看,在基礎知識方面有堅實的基礎是非常有價值的。

1

我還沒有使用XNA或DirectX。但是,爲了瞭解Cg着色器編程的基礎知識,Cg Tutorial是我找到的最好的書。

1

你還應該看看RenderMonkey。這是一個很好的工具。就書本而言,請查看Riemer Grootjans的XNA 2.0遊戲編程食譜......很棒的書。

2

我會加入對OJ的讚揚 - 真的是一個很好的答案。 不過,一旦你有,你可以通過下載以下兩個偉大的工具之一學到很多東西,快速的基本認識:

一旦你這樣做,去他們的項目庫,並開始瀏覽示例,從基本陰影開始,移動到陰影,法線貼圖,材質,效果以及您感興趣的所有內容。 接受一個項目,根據你設定的目標開始改變算法,看看如何得到它。 你會發現很多例子都非常先進,他們會打開你的視野。

玩得開心

2

雖然有很多很好的建議已經被賦予,如果你有一個艱苦的工作,讓你的頭腦圍繞涉及的步驟,Mental Mill提供構建着色器的可視化的方式(藝術家版是與Fx Composer一起免費捆綁 - 本身也免費!)。

雖然你最好直接長期學習HLSL代碼,但Mental Mill可以爲你生成這些Fx文件(這樣你可以查看變化)。請注意,與所有代碼生成器一樣,一旦您理解HLSL,它會比您可能做的更冗長一點!

從一種方法到另一種方法的效果的視覺進程是非常令人印象深刻的!

1

關於視覺着色編輯器的一個簡單的想法。 這類編輯器是一件非常有趣的事情,但我真的會推薦堅持使用基於文本的HLSL(RM和FXC都可以完成這項工作)。我是一名遊戲開發人員,並且已經構建了一些着色器系統(例如Battlefield 2和Farcry 2中的一個),並且說實話,已經發現HLSL比迄今爲止的任何圖形着色器網絡更有價值。

有些事情喜歡跟隨執行流程,調試着色器或能夠快速迭代測試用例,這些測試用例給你的洞察力幾乎不可能通過可視化工具。

我已經自己使用了可視化着色器構建器,而且我喜歡它們,有一天,當着色不像今天那樣對性能至關重要時,它們可能是正確的工具。

..though我的猜測是,我們將看到延遲光照,可能完整的軟件渲染在那一天到來之前;)

3

一個開始使用着色器的最佳途徑就是閱讀入門3D遊戲編程採用Frank Luna的DirectX 9.0ca Shader Approach。筆者首先介紹DirectX和HLSL,然後逐步揭示着色器的強大功能。他從非常簡單的着色器開始,但在本書的最後,您知道如何創建光照,陰影,粒子系統等等。

OJ建議您閱讀ShaderX系列,但這些東西不適合初學者,所以在您開始第一步時不會對您有所幫助。

我也發佈了一篇文章here關於最好的書籍,可以讓你開始遊戲開發。

+0

這看起來像一本非常有趣的書。是的,我查看了ShaderX和推薦的GPU Gems,但它們似乎確實是硬核。有點像閱讀Bruce Schneier時不知道密碼學。我想我會訂購Luna的書。 – 2008-11-28 09:04:42