最近遇到這個問題,有時候複雜的shader 編譯會花幾百毫秒,所以研究了一下,有以下幾點可以優化:
1. Shader Cache, 這個是引擎肯定要支持的,不可能每次渲染都編譯,把結果的handler存起來。
2. Async Compile,異步編譯也非常好理解,主線程跑起來就是,只是需要渲染的物體可能會延遲幾幀纔會被渲染出來。
3. Offline Compile,把編譯結果的機器碼存下來,需要的時候從硬盤上讀取。不過這種方式會讓遊戲的數據變大,不過不是時間換空間就是空間換時間,總是要有舍取。
現在看來,都多核了,當然異步編譯應該是比Offline編譯要好,時間不會長,空間也節約了。