原创 UE4 Render System Sheet(UE4渲染系統概覽)

UE4的渲染系統代碼量龐大,複雜,我們寫UE渲染相關的功能需求的時候,經常需要反覆翻閱它裏面的數據結構,pipeline,這裏用一張圖,把UE4的渲染系統的脈絡梳理進來,讓大家都能更方便的修改UE引擎的渲染功能 (你需要點下放大鏡)  

原创 RTR4 拾遺(一)-- 圖形學的B面

        RTR(Real Time Rendering)對於遊戲圖形開發來說是本寶書,最近對新版的RTR4進行重讀,知識需要經過自己的消化重表述才能成爲自己的,所以在這裏對裏面一些重要內容以我自己的理解重新整理,這篇是關於第8章的

原创 圖形編程中常用浮點數及其精度剖析

    圖形學中經常要涉及使用各種格式的浮點數類型,如float,half,也會經常用到各種格式的浮點數類型PixelFormat,例如R10G10B10A2,R11G11B10,RGBHalf...。在合適的情況下使用合適的浮點數類型,

原创 談談法線圖的壓縮

      貼圖壓縮是遊戲開發中常見的一個問題,不過說到法線圖的壓縮,其實裏面就有一些特殊的問題要處理。前段時間做了一次貼圖通道的優化,打算用兩個通道表示法線圖並且和其他通道合併到一張圖裏,以減少採樣次數。這個過程中陸續挖掘了一些問題,記

原创 針對移動端特性的渲染優化(續)

    本文接着之前的文章《基於移動端tbdr特性gpu的渲染優化》,繼續補充一些移動端渲染優化的點儘量使用direct rendering 模式,很多遊戲使用了很多的後期處理,所以需要先渲染到貼圖上,然後再一遍遍的blit 到屏幕上,b

原创 擴展歐幾里得定理的證明和代碼

1.歐幾里得算法,gcd(a,b)爲a b(a>b)的最大公約數,則gcd(a,b) = acd(b, a%b) 利用這個定理我們可以反覆對ab模下去求得a和b的最大公約數代碼如下int Gcd(int a, int b){ while

原创 針對移動端TBDR架構GPU特性的渲染優化

    TBDR(Tile-Base-Deffered-Rendering)是現代移動端gpu的設計架構,它同傳統pc上IR(Immediate-Rendering)架構的gpu在硬件設計上是差別很大的。手遊正是運行在這些移動端的TBDR

原创 Sparse Virtual Texture (虛擬貼圖技術)

Virtual texture 技術用於解決3D場景中大量貼圖而內存有限的情況,它的思想可以參考虛擬內存。 虛擬內存技術中,物理內存是有限的,但是虛擬內存可以遠遠大於物理內存,虛擬內存被抽象成一個個page即分頁文件,page可以真實的

原创 基於GPU Skin的骨骼動畫Instance的實現

1、GPU Skin與GPU Instance骨骼動畫是指通過定義骨架結構,然後在上面蒙皮,然後對骨架做動作驅動模型運行的動畫,遊戲中大部分的角色表現是通過骨骼動畫進行的。骨骼動畫本質上最終是通過Skin和Skeleton的Animati

原创 Unity3d中渲染到RenderTexture的原理,幾種方式以及一些問題

本文中大部分例子將按照Opengles的實現來解釋1.RenderTexture是什麼     在U3D中有一種特殊的Texture類型,叫做RenderTexture,它本質上一句話是將一個FrameBufferObjecrt連接到一個

原创 Unity5和unity4的AssetBundle打包策略對比分析

           項目開始逐漸遷移到unity5上,原有用4的打包流程在5上依然是work的,基本是不用改代碼的,但是5對打包做了一些改進,今天在考慮要不要改一下項目的打包代碼,使用5的所謂的“”新的方式“,但是仔細研究了一下,發現其

原创 簡單理解spherical harmonic lighting(球諧光照)

1. 球諧光照球諧光照在現代遊戲圖形渲染領域應用很廣,用於快速的模擬複雜的實時光照,例如unity中的light probe以及一些不重要的實時光源,可以用球諧光照快速的計算。球諧光照的優點是運行時的計算量與光源的數量無關,如果參數足夠卻

原创 Unity中depth pass的優化以及談談unity中的Framebuffer

 最近遇到個很小但是很有意思的問題,在unity中如何從屏幕copy depth texutrue出來用?        這個問題的來源是我發現在unity在移動平臺上爲了得到深度圖,通常需要一個單獨的pass,例如我們用到的一些後處理

原创 textrue座標到uv的映射

前兩天被shader裏面一個奇怪的bug困擾了一下,其實就是一個最簡單的問題,我有一個rgbafloat的貼圖,只能點採樣,因爲存儲的不是顏色是數據不能線性插值,而這時候我已知當前點的texture座標x y和貼圖尺寸w h如何計算這個

原创 Unity中基於Gpu Instance進行大量物體渲染的實現與分析(一)

                                                  圖  一個使用gpu instance繪製4000棵樹的場景               在3D渲染中,尤其是現代3D遊戲中,我希望能