檢查Rage的着色器

檢查憤怒的着色器

憤怒狂怒的GLSL着色器代碼下載地址,下載  乃是憤怒代碼的一部分代碼,但是也是可以看到憤怒的一些設計原理。
着色器代碼,集中表現了動畫混合,虛擬紋理的加載,反饋,對於理解憤怒的magetexture有着很好的幫助。

 Rage是由id software軟件,由傳奇程序員卡馬克,使用id tech5技術megetexture技術打造了新一代的畫面,能夠在配置超低的機器配置上,運行非常好的畫面。



憤怒,遊戲由ID軟件開發,玩得很開心。但是玩起來更有趣。

   我已經提出了檢查id Tech 5的虛擬紋理或MegaTextures的機制的方法,因爲它們也被稱爲。但是,如果您真的很好奇這是如何工作的,您想要閱讀用於解決MegaTexture的着色器文件。

由於id  Tech 5 (Rage的引擎)在OpenGL 3.2中實現,着色器必須作爲源代碼上傳到驅動程序,所以必須有一種方式讓你的手 - 但是在你想到攔截OpenGL調用之前,擔心來源可能會被模糊化讓我告訴你,這更簡單:Rage有一個命令行選項來轉儲着色文件:只需將+ set r_dumpGeneratedGLSL 1 添加到命令行,並將文件轉儲到您的蒸目錄 Steam \ steamapps \ common \ rage \ base \ generated \ glsl

(譯者注,我已經得到了憤怒的着色着色器源代碼,但是按照此方法,我發現並不是在憤怒的控制檯中命令輸入,才能得到憤怒的着色着色器代碼,乃是在Rage.exe的快捷方式中修改才能得到這個文件的,考慮到憤怒具有12G以上的規模,很多人電腦已經刪除了,所以我上傳到了網盤上面了,如果你需要這個東西的話,可以在此處下載,事實上我完全的沒有想到這個着色器代碼能夠在我電腦的憤怒中存在,真是想不到。

 我懷疑doom4,德軍總部新秩序,舊血脈,惡靈附身,得到着色的方法跟這個差不多的,有空可以試驗一下

注:可以使用伊達註冊版,來反編譯rage.exe的源碼,可以獲得部分代碼,清晰的可以看出來憤怒調用了CUDA的部分函數,​​對於doom4.exe我估計使用反編譯工具也可以用來反編譯,得到部分代碼)

    他們顯然是從內部格式生成的,可以同時爲GLSL(PC),CG(PS3)和HLSL(XBOX360)寫入着色器。這解釋了爲什麼在所有着色器文件中總是具有相同的功能,這些功能可以封裝紋理訪問和一些基本的數學函數 - 使用這些包裝器可以輕鬆地將代碼轉換成多個着色器語言。

   我不會在這裏引用任何着色器,因爲它們是受版權保護的,但是如果你擁有這個遊戲的PC版本,你可以轉儲自己的設置並看看。不要害怕848個文件,其中一半是CG,每個頂點着色器只有一個片段着色器 - 不會混合着色器。最終會有212個着色器程序,其中有很多的冗餘 - 如果你有兩個稍微不同的材料,你將得到兩個共享99 %代碼的着色器程序。

(譯者注:憤怒的着色器,代碼文件非常的多,分爲fvertex和fargment兩大部分,代碼真是複雜,沒有源代碼,只有着色器代碼,也只能猜透一小部分而已,)

有趣的是,大多數戶外環境基本上只是紋理查找(在具有顏色空間轉換的虛擬紋理和可選的霧) - 所有照明都是預烘焙的!即使是人的動態照明也是非常簡單的,讓我想起了Half-Life 2的簡單光模型。你可能還想看一下頂點着色器中的動畫:這是一個很好的閱讀方式,儘可能地擠壓儘可能多的有效載荷變成很少的變量。

你想了解更多嗎?好。獲取glintercept 的副本,並將提供的OPENGL32.DLL與配置文件一起放在您的憤怒文件夾中(請參閱提供的文檔)。因此,您可以轉儲用於渲染一幀的所有OpenGL調用。在早期的Rage版本中,您還可以使用此工具在遊戲過程中修改所有着色器,看看會發生什麼。可悲的是,這破壞了最近的更新之一 - 我指責統一緩衝區,因爲這似乎只是使用UBO的着色器程序發生,並且glintercept可能不會在重新鏈接着色器之前查詢統一的緩衝區綁定點,所以找不到他們緩衝區了  請注意,這只是一個猜測,我沒有時間來驗證和修復。但是如果你做了 - 或者一段時間沒有更新你的蒸汽 - 你可以在照明或虛擬紋理代碼等方面打呵欠。例如,整個環境並不是法線!車輛和人有他們,但在環境中它是混合的(外圍沒有任何):

憤怒中的正常憤怒中的正常憤怒中的正常

沒有法線的物體是白色的,另一個在RGB中顯示世界空間法線。請注意,人們有非常詳細的法定地圖和管道。其中一個垃圾郵件具有正常的地圖,下一個不是 - 控制檯和PC端口上必須使用相同資產的微量內存的標誌......

有可能操縱個人效果,您可以看到他們的視覺影響有多大,例如廣告牌:

如果我們停用它們(通過將阿爾法設置爲0.0),場景看起來更加“鈍”,更少的動畫(當雲移動時,這更加明顯):

要看看這是多麼強調ROP讓我們將阿爾法設置爲1.0,並查看所有生成的片段:

或者將顏色設置爲很好的紅色,看看所有的小灌木叢:

它還需要像這樣的操作來顯示這些簡單廣告牌的問題:如果四邊形相交,則找不到正確的繪製順序:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章