本文學習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...