WebGPU學習(十) 介紹「GPU實現粒子效果」

2022-02-04 18:12:01 字數 1384 閱讀 4807

本文學習webgpu-samplers->computeboids示例,它展示了如何用compute shader實現粒子效果,模擬鳥群的行為。

最終渲染結果:

雖然在cpu端實現會更靈活和可控,但如果粒子數量很大(如上百萬),且與場景有互動,則最好在gpu端實現。

**如下:

const numparticles = 1500;

...let t = 0;

return function frame() );

...++t;

}

我們對這個pass進行分析:

particlesa儲存了上一幀所有粒子的資料。compute shader首先讀取它,然後計算出下一幀所有粒子的資料,最好寫到particlesb中。這樣就打了乙個ping-pong操作;

注:storage buffer在shader中可被讀或寫,而uniform buffer、vertex buffer等在shader中只能被讀

compute shader計算每個粒子的資料時,需要遍歷其它的所有粒子,計算相互的互動作用。

一共有1500個粒子,共需要計算15001500次。

如果在cpu端執行,只能序列計算,一共需要計算15001500次;

如果在gpu端執行,gpu有1500個instance,每個instance並行地計算1500次,因此一共只需要計算1500次,大大提高了效率。

**如下:

const numparticles = 1500;

...const renderpipeline = device.createrenderpipeline(, ],

}, ],

}],},

...});

...const vertexbufferdata = new float32array([-0.01, -0.02, 0.01, -0.02, 0.00, 0.02]);

const verticesbuffer = device.createbuffer();

verticesbuffer.setsubdata(0, vertexbufferdata);

...return function frame() );

......

}

大家可以參考webgpu-8,來學習示例的具體的**。

另外,大家可以通過get started with gpu compute on the web,學習如何使用compute shader計算矩陣運算。

webgpu-8

webgpu-samplers github repo

Kali Linux學習01(介紹)

kali linux是乙個高階滲透測試和安全審計linux發行版。作為使用者,我簡單的把它理解為,乙個特殊的linux發行版,整合了精心挑選的滲透測試和安全審計的工具,供滲透測試和安全設計人員使用。也可稱之為平台或者框架。作為linux發行版,kali linux是在backtrack linux的...

深度學習 0 介紹

人工智慧 讓機器具備人的思維和意識。人工智慧的三大學派 1.行為主義 基於控制論,構建感知 動作控制系統。2.符號主義 基於算術邏輯表示式,求解問題是先把問題描述為表示式,再求解。3.聯結主義 仿生學,模仿神經元連線關係。中心思想 當網路將大量簡單的計算單元連線在一起時,可以實現智慧型行為。機器學習...

機器學習1 介紹

2021.1.9 從今天起開始系統地學習深度學習。課程網頁 李巨集毅教授的機器學習課程網頁 如果要找的函式的輸出是乙個數值 scalar regression 如果要找的函式的輸出是兩個或多個可能 classification 機器學習除了regression classification外,還有g...