国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于GPU粒子系統(tǒng)的大規(guī)模雨雪場景實時模擬

2012-05-04 08:09:22劉小玲楊紅雨郭虎奇
計算機工程與設(shè)計 2012年6期
關(guān)鍵詞:著色器粒子系統(tǒng)雨雪

劉小玲,楊紅雨,2,郭虎奇

(1.四川大學(xué) 計算機學(xué)院,四川 成都610064;2.四川大學(xué) 視覺合成圖形圖像技術(shù)國防重點學(xué)科實驗室,四川 成都610064)

0 引 言

近年來,圖形處理器(graphics processing unit,GPU)的相關(guān)硬件技術(shù)得到了飛速的發(fā)展,圖形硬件的運算速度和功能得到了很大程度的提高[1]。在處理能力上,現(xiàn)在的圖形處理器每秒能同時處理幾千萬個三角形頂點,光柵化幾十億個像素;在控制功能上,原本的固定渲染管線中的頂點處理和像素處理可以被其可編程的頂點著色器(vertex shader)和像素著色器(fragmanet shader)取代。同時,GLSL(opengl shading laguage),HLSL(high level language)和Cg(C for graphics)等高級著色語言的出現(xiàn),使程序開發(fā)人員能更加高效的編寫頂點著色器和像素著色器上的代碼[2]。充分利用GPU的強大的并行計算能力和可編程功能,可以使算法的執(zhí)行速度得到很大的提高,為在大規(guī)模場景中進行實時雨雪繪制提供了硬件基礎(chǔ)。

自1983年Reeves首次提出用粒子系統(tǒng)模擬不規(guī)則對象組成的物體以來,粒子系統(tǒng)得到了廣泛的研究和應(yīng)用[3-10]。在粒子系統(tǒng)中,粒子的產(chǎn)生和控制可以只遵循簡單的物理動力學(xué)定理,也可同時引入隨機過程,其形狀,顏色等外部特征也可滿足隨機性,這使得粒子系統(tǒng)能很真實地模擬各種自然現(xiàn)象,如云,煙,火焰,爆炸和雨雪等。作為粒子系統(tǒng)的典型應(yīng)用之一的雨雪自然現(xiàn)象,在粒子系統(tǒng)中也得到了逼真的模擬。

在傳統(tǒng)的基于粒子系統(tǒng)的雨雪模擬[11-13]中,CPU負責(zé)大部分的工作,包括粒子的產(chǎn)生,粒子速度的控制,位置的更新等。在這種模式下,CPU將計算得到的雨雪粒子的最終位置數(shù)據(jù)通過系統(tǒng)總線傳給GPU,并最終由GPU來完成粒子的繪制工作。在這種繪制方式中,系統(tǒng)總線帶寬成為了粒子系統(tǒng)繪制效率的瓶頸之一,只能實時模擬數(shù)萬個雨雪粒子,不僅沒有充分利用GPU強大的并行計算能力,而且無法達到在大規(guī)模場景中進行實時雨雪繪制的要求。

鑒于此,本文提出了一種完全基于GPU的雨雪粒子模擬系統(tǒng),將粒子屬性的更新工作交給GPU來完成,CPU只負責(zé)初始粒子的創(chuàng)建工作。這樣既充分利用了GPU強大的并行運算能力,也最大程度地降低了CPU和系統(tǒng)總線的壓力,使可實時繪制的雨雪粒子數(shù)量從數(shù)萬個提升到了百萬個。同時,本文以視點為中心,在視點空間中生成雨雪粒子,并將粒子位置控制在視點前的一個固定立方體區(qū)域內(nèi)。這使粒子都是可見的,達到了以小規(guī)模粒子數(shù)量模擬大規(guī)模雨雪場景的效果,從而滿足了在任意規(guī)模場景中進行雨雪效果的實時模擬。為了進一步提高GPU的效率,系統(tǒng)使用幾何著色器(geometry shader)進行雨雪粒子由點到四邊形的幾何擴展。

1 粒子系統(tǒng)模型

在基于粒子系統(tǒng)的雨雪模擬系統(tǒng)中,每片雪花或每滴雨對應(yīng)一個粒子。每個粒子的屬性包括初始位置,速度,生存時間和尺寸等。粒子系統(tǒng)通過實時計算和更新粒子的屬性來模擬雨雪的運動。粒子系統(tǒng)每幀具體的模擬過程主要分為以下幾個步驟:

(1)產(chǎn)生新的雨雪粒子,并初始化新粒子屬性;

(2)刪除滿足消亡條件的雨雪粒子;

(3)更新粒子屬性;

(4)繪制粒子。

在傳統(tǒng)的粒子系統(tǒng)中,(1)~(3)的工作在CPU上完成,即使在CPU沒有其它負荷的情況下,最多也只能模擬幾萬粒子的運動。這對于大規(guī)模雨雪場景來說根本無法達到實時的效果。利用GPU強大的并行運算能力,將(2)和(3)的運算工作交給GPU來做,可將能實時繪制的粒子數(shù)從數(shù)萬級提升到百萬級。

2 算法思想

2.1 雨雪粒子的生成

雨雪粒子的初始位置由隨機函數(shù)隨機生成。在傳統(tǒng)算法中,粒子的初始位置在世界坐標(biāo)系下生成,這導(dǎo)致了一部分粒子在可視范圍外,而系統(tǒng)在進行雨雪模擬的過程中,對于這部分粒子依然要進行正常的屬性更新,從而造成了很大的系統(tǒng)開銷浪費。本文在視點坐標(biāo)系中生成粒子,以保證產(chǎn)生的粒子都是可見的。同時,將粒子的位置控制在視點前的一個立方體區(qū)域中,該立方體相對于視點的移動進行相應(yīng)的移動,這使得所有的雨雪粒子始終在可觀察范圍內(nèi),最大限度地提高了粒子的使用效率,避免了系統(tǒng)資源的浪費。

2.2 消亡粒子的處理

在本文的基于GPU的雨雪模擬中,將雨雪粒子的消亡處理和更新操作從CPU移動到了GPU上,即由CPU負責(zé)新粒子的生成,GPU負責(zé)粒子的整個生命周期的控制操作,包括處理消亡粒子。在傳統(tǒng)的粒子系統(tǒng)中,刪除滿足消亡條件的粒子,再產(chǎn)生新的粒子。而要在GPU中進行消亡粒子的刪除和新粒子的生成操作就必須在GPU中維護一個動態(tài)的數(shù)據(jù)結(jié)構(gòu),這對于當(dāng)前的GPU來說,無疑是一個很大的開銷。本文通過賦予消亡粒子一個新的屬性值的方式進行粒子的重復(fù)利用,既 “刪除”了消亡粒子,生成了新粒子,也避免了在GPU中維護一個動態(tài)數(shù)據(jù)結(jié)構(gòu)的工作,在很大程度上降低了GPU的開銷,提高了系統(tǒng)的繪制效率。

2.3 雨雪粒子的位置更新

在一些雨雪模擬系統(tǒng)中,雨雪的運動由粒子的最初速度和風(fēng)速在時間上的函數(shù)決定[14],即粒子速度和風(fēng)速恒定不變。這種計算方法簡單,但粒子的運動過于規(guī)則,不能很好地反應(yīng)現(xiàn)實中風(fēng)對粒子的影響。因為在現(xiàn)實中,風(fēng)速并非恒定不變,其速度大小和方向隨時間會有所變化。為了反應(yīng)現(xiàn)實中外界環(huán)境的不穩(wěn)定性,本文通過緩存每幀粒子屬性的方式進行雨雪粒子的動態(tài)更新,即將每一幀的雨雪粒子位置保存在紋理中,以備下一幀的使用。在每幀的繪制中,GPU通過提取紋理數(shù)據(jù)得到上一幀的粒子位置數(shù)據(jù),并根據(jù)當(dāng)前幀的環(huán)境參數(shù),如風(fēng)速等,計算粒子在當(dāng)前幀的位置。每幀雨雪粒子的更新都基于上一幀粒子的位置,可以滿足風(fēng)速的實時變化,增強了雨雪粒子運動軌跡的真實性。

2.4 雨雪粒子的擴展

雨雪粒子在邏輯上只是一個點,通過對各個點的更新來實現(xiàn)對雨雪粒子的更新。但繪制時,為了增強雨雪粒子的可視性,將各粒子點擴展為小矩形作為粒子,并對每個正方形進行雨雪圖片的紋理映射。本文利用幾何著色器(geometry shader)來完成雨雪粒子的擴展。即在頂點著色器中(vertex shader)對表示各個雨雪粒子的點進行粒子屬性的更新計算,將更新后的點傳入幾何著色器,由幾何著色器負責(zé)將粒子點擴展為矩形,最后進入像素著色器(fragment shader)完成繪制。

2.5 雨雪粒子的紋理映射

本文采用視線追蹤技術(shù)(bill Boarding)[15]使雨雪粒子的紋理映射平面始終與視線垂直,從而到達了三維效果。同時,本文采用多張雪花形狀紋理對雪粒子進行隨機貼圖,使系統(tǒng)中雪粒子的形狀在一定程度上反應(yīng)了現(xiàn)實中雪花形狀的多樣性和隨機性,增強了雪粒子的真實性。而雨在現(xiàn)實中的形狀相對單一,且在下落過程中大都呈線性,本文只采用了一張線狀的雨滴紋理。

3 系統(tǒng)實現(xiàn)

3.1 雨雪粒子的生成

傳統(tǒng)雨雪粒子的生成在世界坐標(biāo)系中完成,使很多粒子不在可視范圍內(nèi),造成了系統(tǒng)資源的浪費。本文直接在視點空間坐標(biāo)系中生成粒子,即在使用隨機函數(shù)生成粒子初始位置時,將x,y,z坐標(biāo)值限定在 [0,1]范圍內(nèi)。同時,將生成的粒子放置在視點前的一個立方體區(qū)域內(nèi),使生成的雨雪粒子始終在視點前可視范圍內(nèi)。如圖1所示。

在該過程中,粒子的創(chuàng)建由CPU完成,且這也是本系統(tǒng)中CPU唯一參與的工作。CPU將生成的初始粒子傳入GPU,由GPU負責(zé)粒子屬性的更新和繪制工作。

圖1 粒子生成區(qū)域

3.2 雨雪粒子位置的更新

由于本文雨雪的模擬限定在視點前的一個立方體區(qū)域內(nèi),故雨雪粒子的位置由兩部分決定,包括物理模型中雨雪粒子的位置和立方體區(qū)域相對于視點的位置。在物理模型中,雨雪粒子的受力如圖2所示。

圖2 粒子受力分析

其中,F(xiàn)g表示雨雪粒子受到的重力,F(xiàn)f表示雨雪粒子受到的空氣浮力,F(xiàn)wind表示雨雪粒子受到的風(fēng)力。為了簡化模型,本文將粒子受到的空氣阻力和風(fēng)力的影響合并,統(tǒng)一作為阻力對粒子運動的影響。由牛頓力學(xué)原理,粒子的速度方程如式(1)所示

式中:V1——當(dāng)前幀的速度,Vo——上一幀的速度,V距——當(dāng)前幀的風(fēng)力和空氣浮力對速度的總影響。Δt——兩幀間的間隔時間。由于值很小,本文將Δt時間內(nèi)粒子的運動看成速度為的勻速運動,則物理模型中粒子的位置方程如式(2)所示

式中:P1——粒 子 當(dāng) 前 幀 的 位 置,Po——粒 子 上 一 幀的位置。

本文將雨雪粒子的運動限定在視點前的一個立方體區(qū)域中,當(dāng)雨雪粒子的位置超出立方體區(qū)域時,雨雪粒子回到其在立方體區(qū)域中的初始位置,從而實現(xiàn)了粒子的重復(fù)利用。

3.3 雨雪粒子的擴展

在雨雪粒子的屬性更新階段,粒子被作為一個點進行更新計算,而在粒子的繪制階段,粒子被擴展為一個矩形,以對其進行紋理貼圖,增強雨雪粒子的真實性。本文采用頂點著色器和幾何著色器配合使用的方式解決這一問題。在頂點著色器中進行點粒子的更新計算,并將計算得到的點的新位置傳入幾何著色器,由幾何著色器基于點的新位置計算矩形的另外3個點位置,將一個點擴展為一個矩形。

3.4 雨雪粒子的紋理映射

在雨雪粒子的繪制階段,本文采用視線追蹤技術(shù)使粒子矩形始終面向用戶。同時,對粒子矩形進行紋理貼圖。為了提高雪粒子的真實性,本文采用了多張雪花紋理,在粒子的生成階段隨機決定粒子對應(yīng)的雪花紋理,從而實現(xiàn)了三維場景中雪花形狀的多樣性和隨機性。本文采用的雪花紋里如圖3所示。而對于現(xiàn)實中的雨來說,下雨時,空中的雨呈線條狀,其形狀相對單一,本文對所有雨粒子采用同一張線條狀的雨滴紋理,如圖4所示。

圖3 雪花形狀紋理

圖4 雨線紋理

4 實驗結(jié)果

本文方法實現(xiàn)硬件環(huán)境為:Intel(R)Core(TM)2 Duo CPU E7500 2.93GHz處理器,2G內(nèi)存,NVIDIA Ge-Force GTX 260顯卡,顯卡顯存881MB,操作系統(tǒng)為 Windows 7SP1,開發(fā)工具為 VisualStudio2008與 OpenScene-Graph2.8.4,運行場景為首都機場三維模型在1500×1000的大小繪制。獲得實驗數(shù)據(jù)見表1。

表1 實驗數(shù)據(jù)

從表1可以看出,本文的算法效率遠遠超過了基于CPU的粒子系統(tǒng),且較傳統(tǒng)GPU的粒子系統(tǒng)也有明顯的優(yōu)勢。程序運行截圖如圖5所示。

圖5 大規(guī)模場景雨雪實時仿真

5 結(jié)束語

本文在視點前的立方體區(qū)域內(nèi)生成并繪制粒子且重復(fù)利用消亡粒子,使生成的粒子總是可見且有效,充分利用了粒子資源,最大限度地降低了系統(tǒng)資源的浪費。通過緩存每幀的粒子屬性,使每幀粒子屬性的更新都基于上一幀的粒子屬性,更真實地模擬了雨雪粒子的運動規(guī)律。同時,本文通過頂點著色器進行粒子屬性的更新,通過幾何著色器將粒子擴展為矩形,充分利用了GPU強大的并行計算能力,使繪制速度得到了很大的提高。由于本文的粒子生產(chǎn)和繪制都在視點前的立方體區(qū)域內(nèi)生成,視點運動時,立方體區(qū)域進行相應(yīng)的運動,解決了文等人[12]的算法在視點運動時效果不真實的問題。

[1]HU Zhenghua.Rain rendering based on programmable GPU[D].Hangzhou:Zhejiang University,2010(in Chinese).[胡振華,基于可編程GPU的雨天特效繪制 [D].杭州:浙江大學(xué)碩士學(xué)位論文,2010.]

[2]DAI Xi.The implementation of real-time cloud rendring technology based on GPU [D].Chengdu:University of Electronic Science and Technology of China,2010(in Chinese).[戴璽.基于GPU的實時云景渲染技術(shù)的實現(xiàn) [D].成都:電子科技大學(xué)碩士學(xué)位論文,2009.]

[3]Lutz K.Building a million particle system [C].Game Developers Conference,2004.

[4]WANG N,WADE B.Rendering falling rain and snow [C].ACM Siggraph Sketches,2004.

[5]LUO Yong,LIU Jianguo.The design of object oriented universal particle system and its implementation in Fire simulation[J].Science Technology and Engineering2008,8(15):4174-4178(in Chinese).[羅勇,劉建國.面向?qū)ο蟮耐ㄓ昧W酉到y(tǒng)設(shè)計及其在火焰模擬中的應(yīng)用 [J].科學(xué)技術(shù)與工程,2008,8(15):4174-4178.]

[6]LUO Weijia,DU Jinkang,XIE shunping.The real-time rain simulation based on particle system [J].Journal of Image and Graphics,2004,9(4):495-500(in Chinese).[羅維佳,都金康,謝順平.基于粒子系統(tǒng)的三維場地降雨實時模擬 [J].中國圖像圖形學(xué)報,2004,9(4):495-500.]

[7]WANG Hongwei,LIU Yue,WANG Yongtian.The design of object oriented universal particle system [J].Journal of System Simulation,2006,18(S1):46-51(in Chinese).[王宏煒,劉越,王涌天.面向?qū)ο蟮耐ㄓ昧W酉到y(tǒng)設(shè)計 [J].系統(tǒng)仿真學(xué)報,2006,18(S1):46-51.]

[8]YANG Bing,LU Min.The modeling technology of particle system based on scenery features [J].Application Research of Computers,2005,22(5):20-22(in Chinese).[楊 冰,魯敏.基于景物特征的粒子系統(tǒng)建模技術(shù) [J].計算機應(yīng)用研究,2005,22(5):20-22.]

[9]Kolb A,Latta L.Hardware-based simulation and collision detection for large particle systems [C].Proceedings of the ACM SIGGRAPH/EUROGRAPHICS Conference on Graphics Hardware,2004.

[10]HAN Ruibo,DAI Shuling.The particle system with adjustable parameters and its implementation in flight simulation [J].Journal of System Simulation,2006,18(8):2296-2299(in Chinese).[韓瑞波,戴樹嶺.可調(diào)參數(shù)的粒子系統(tǒng)及其在飛行仿真中的應(yīng)用[J].系統(tǒng)仿真學(xué)報,2006,18(8):2296-2299.]

[11]HE Hongyun,SU Hu.The rain and snow simulation in visual simulation of train operation [J].Journal of Southwest Jiaotong University,2008,43(5):610-615(in Chinese).[何鴻云,蘇虎.列車運行視景仿真中雨雪的模擬 [J].西南交通大學(xué)學(xué)報,2008,43(5):610-615.]

[12]WANG Shunling,LI Xueqi,WANG Shanbing.The real-time snow model in virtual scene [J].Computer Technology and Development,2006,16(3):152-157(in Chinese).[王 順領(lǐng),李學(xué)慶,王善斌,等.虛擬場景中的實時降雪模型 [J].計算機技術(shù)與發(fā)展,2006,16(3):152-157.]

[13]WU Yingxia.The design and implementation of particle effects system based on OpenGL [D].Chengdu:University of Electronic Science and Technology of China,2009(in Chinese).[吳銀霞.基于OpenGL的3D粒子特效系統(tǒng)設(shè)計與實現(xiàn)[D].成都:電子科技大學(xué)碩士學(xué)位論文,2009.]

[14]WEN Zhizhong,LIU Zhifang,LI Gang,et al.Realtime simulation of rain and snow in large-scale scene based on GPU particle system [J].Journal of Computer Applications,2010,30(5):1398-1401(in Chinese).[文治中,劉直芳,李綱,等.基于GPU粒子系統(tǒng)的大規(guī)模場景高效雨雪實時模擬 [J].計算機應(yīng)用,2010,30(5):1398-1401.]

[15]WANG Wei,XING Guodong.Research of real-time fire rending method based on particle system [J].Microcomputer Information,2008,24(13):1-5(in Chinese).[王巍,辛國棟.基于粒子系統(tǒng)的實時火焰繪制方法研究 [J].微計算機信息,2008,24(13):1-5.]

猜你喜歡
著色器粒子系統(tǒng)雨雪
悲傷的事就不說了
散文詩世界(2022年1期)2022-01-13 13:08:43
利用GPU加速的粒子系統(tǒng)全球流場可視化系統(tǒng)設(shè)計與實現(xiàn)
基于UE4 實時射線追蹤技術(shù)的研究與探討
基于Unity Shader石油泄漏現(xiàn)象模擬的研究
基于IMx6的opengl圖形著色器開發(fā)研究
中國新通信(2020年2期)2020-06-24 03:06:44
新閨怨
The relationship between functional fabrics and fashion trends
西部論叢(2019年5期)2019-03-08 02:51:26
UE 4粒子系統(tǒng)與外部數(shù)據(jù)通信研究
雨雪天氣城際站防止旅客摔滑問題探討
基于粒子系統(tǒng)的建模與仿真綜述
昌吉市| 汽车| 山东省| 东兴市| 突泉县| 富平县| 沛县| 日照市| 定襄县| 项城市| 屏东县| 榆林市| 工布江达县| 凤台县| 衡东县| 蓝山县| 临高县| 峡江县| 九江县| 怀仁县| 肃南| 天水市| 疏附县| 铜梁县| 依兰县| 台中市| 永登县| 会昌县| 阿勒泰市| 南岸区| 大厂| 四子王旗| 涟源市| 花垣县| 个旧市| 桐柏县| 调兵山市| 扶沟县| 南昌市| 涿州市| 葵青区|