欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

利用粒子系統(tǒng)進行圖形處理的方法和裝置與流程

文檔序號:11832766閱讀:272來源:國知局
利用粒子系統(tǒng)進行圖形處理的方法和裝置與流程

本發(fā)明涉及利用粒子系統(tǒng)進行圖形處理的方法和裝置,更具體地說,本發(fā)明涉及一種圖形引擎粒子系統(tǒng)更新的方法和裝置。



背景技術(shù):

粒子系統(tǒng)是用于表示三維計算機圖形學中模擬一些特定的模糊現(xiàn)象的技術(shù),而對于這些現(xiàn)象,使用傳統(tǒng)的渲染技術(shù)是難以實現(xiàn)其真實感的。在圖形引擎中,一般使用粒子系統(tǒng)來實現(xiàn)特效。經(jīng)常使用粒子系統(tǒng)模擬的現(xiàn)象有火、爆炸、煙、水流、落葉、云、雪、流星尾跡或發(fā)光軌跡等及其類似的抽象視覺效果。

在計算機的圖形渲染領(lǐng)域,攝像機是一個非常重要的概念。攝像機是被虛擬出來的一個物件,人們可以從攝像機的視角來“觀察”三維世界中的物體。對于任何三維游戲,都存在一個相應(yīng)的攝像機,比如第一人稱射擊類(FPS)游戲,攝像機為主視角類型,角色扮演類(RPG)游戲,攝像機為尾隨視角類型,而即時戰(zhàn)略類(RTS)游戲,其相應(yīng)的攝像機為第三人稱視角類型。不管對于哪一類型的游戲,攝像機的位置和方向都是隨著游戲的進行而實時改變的。

公告板是與攝像機相關(guān)的矩形面片,在游戲中,公告板一般都是朝向攝像機,因此從攝像機的角度,不會“觀察”到公告板的側(cè)面。游戲引擎中,渲染圖元一般采用三角形,因此可以利用兩個渲染圖元構(gòu)造一個公告板。在粒子系統(tǒng)中,一般都是采用公告板來渲染粒子的。

在例如游戲等許多應(yīng)用中,在出現(xiàn)人物技能,天氣,火焰等時,為了展現(xiàn)華麗的效果,常常會使用大量的特效,這些特效通常由粒子系統(tǒng)構(gòu)成。在一般的圖形引擎中,粒子系統(tǒng)的操作在主線程中執(zhí)行,如果使用的粒子 系統(tǒng)太多,將會對這些應(yīng)用的性能造成影響。而且隨著粒子數(shù)目的增長,對這些應(yīng)用性能的影響將會越發(fā)顯著。

基于以上原因,如何能展現(xiàn)更多的效果,同時不會對應(yīng)用的性能造成過多影響,成為了一個亟待解決的技術(shù)問題。



技術(shù)實現(xiàn)要素:

本發(fā)明提出了一種客戶端引擎粒子系統(tǒng)后臺更新的技術(shù)。特別是,提供一種粒子系統(tǒng)優(yōu)化方案,使應(yīng)用(例如游戲)能夠表現(xiàn)更多的效果,并對應(yīng)用的性能不會產(chǎn)生太多影響。

根據(jù)本發(fā)明的優(yōu)化粒子系統(tǒng)方法,包括:

將粒子系統(tǒng)的更新操作以及粒子朝向計算從主線程中剝離出來,放到單獨的線程(即粒子系統(tǒng)更新線程)中;

將渲染用到所有粒子系統(tǒng)數(shù)據(jù)統(tǒng)一放到一個內(nèi)存池中,在渲染前把該內(nèi)存中的數(shù)據(jù)傳送到顯卡中,只執(zhí)行一次傳送過程。

本發(fā)還提供一種通過多個線程利用粒子系統(tǒng)進行圖形處理的方法,其中所述多個線程包括第一線程和第二線程,所述方法包括:

通過所述第一線程創(chuàng)建粒子系統(tǒng),

喚醒所述第二線程,

通過所述第二線程執(zhí)行所述粒子系統(tǒng)的更新操作和粒子朝向計算,以生產(chǎn)渲染數(shù)據(jù),

阻塞所述第二線程,

通過所述第一線程利用所述渲染數(shù)據(jù)渲染所述粒子系統(tǒng)。

實施本發(fā)明,具有如下效果:

現(xiàn)在電腦CPU一般都是多核的,將粒子系統(tǒng)的更新操作以及粒子朝向計算移到單獨的線程中執(zhí)行,從而和主線程并行運算在一定程度上可以提高程序的性能;

將所有粒子系統(tǒng)渲染數(shù)據(jù)統(tǒng)一放到一個內(nèi)存池中,在渲染前把該內(nèi)存中的數(shù)據(jù)傳入到顯存比每個粒子系統(tǒng)執(zhí)行一次傳入操作效率要高的多。

附圖說明

從下面結(jié)合附圖對本發(fā)明的具體實施方式的描述中可以更好地理解本發(fā)明,其中:

圖1示出了根據(jù)本發(fā)明示例性實施例的采用粒子系統(tǒng)進行圖形處理的方法的流程圖,

圖2示出被配置成實施這里提供的一個或多個實施例的計算裝置。

具體實施方式

為了使本發(fā)明的特征及優(yōu)點得到更清楚的了解,以下結(jié)合附圖對本發(fā)明的示例性實施例進行詳細說明。應(yīng)當理解,這里給出的實施例只是示例性的,并不作為本發(fā)明的限制。

圖1示出了根據(jù)本發(fā)明示例性實施例的采用粒子系統(tǒng)進行圖形處理的方法的流程圖。如圖1所示,本發(fā)明實施例的圖形處理方法包括了兩個線程,即主線程和粒子系統(tǒng)更新線程。本領(lǐng)域的技術(shù)人員應(yīng)該理解,雖然圖1中示出了兩個線程,但是也可以包括更多的線程。

主線程和粒子系統(tǒng)更新線程例如可以在程序初始化時創(chuàng)建。粒子系統(tǒng)更新線程的工作就是更新粒子系統(tǒng),計算粒子系統(tǒng)朝向(例如面朝向)以及將渲染數(shù)據(jù)傳入到顯存中。粒子系統(tǒng)更新線程具有喚醒和阻塞接口。喚醒接口的作用是啟動該線程,開始處理粒子系統(tǒng),阻塞接口的作用是停止該線程,不占用任何CPU時間。由于該線程創(chuàng)建后,先處于阻塞階段,因此,主線程將所有的粒子系統(tǒng)放于隊列中之后需要通過喚醒接口啟動粒子系統(tǒng)更新線程。啟動粒子系統(tǒng)更新線程后,主線程和粒子系統(tǒng)更新線程二者開始并行運算。

特別是對于多核CPU,將粒子系統(tǒng)的更新操作以及粒子朝向計算移到單獨的線程中執(zhí)行,從而和主線程并行運算在一定程度上可以提高程序的性能。

如圖1所示,主線程在步驟101開始,例如可以采用心跳來控制主線程每個循環(huán)的開始和結(jié)束。

在步驟102中,主線程執(zhí)行粒子系統(tǒng)的創(chuàng)建和/或銷毀操作。粒子系統(tǒng)由粒子的集合組成,可以使用例如發(fā)射器發(fā)射粒子(即生成粒子)。每個粒子根據(jù)發(fā)射器的位置及給定的生成區(qū)域在特定的三維空間位置生成,根據(jù)粒子生成速度以及更新間隔計算新粒子的數(shù)目。

根據(jù)需要可以生成一個或多個粒子系統(tǒng)。例如,游戲里面為了表現(xiàn)華麗的效果,例如人物技能,天氣,火焰等,會用到大量的特效,這就需要使用多個粒子系統(tǒng)。

粒子系統(tǒng)中的粒子具有屬性,其會影響粒子性態(tài)或?qū)αW舆M行渲染的方式。可以在生成粒子同時對每個新產(chǎn)生的粒子的屬性給出初始值。粒子的屬性可以包括:位置、速度(速率和方向)、顏色、形狀、大小、透明度等。

主線程例如還可以檢查所有存活的粒子,根據(jù)一定的條件,例如,是否超過生命周期,來判斷粒子是否死亡,一個系統(tǒng)中所有的粒子都死亡時,銷毀這個粒子系統(tǒng)。

然后該方法轉(zhuǎn)到103。在步驟103中,主線程更新攝像機的位置和方位(例如根據(jù)游戲的進行),并相應(yīng)更新粒子系統(tǒng)的位置和方位。之后在步驟104中,主線程將所有的粒子系統(tǒng)放于隊列中。然后啟動粒子系統(tǒng)更新線程,同時主線程在步驟111中繼續(xù)執(zhí)行不涉及粒子系統(tǒng)的其它操作,由此兩個線程并行執(zhí)行。

下面描述粒子系統(tǒng)更新線程。粒子系統(tǒng)更新線程啟動后,在步驟121中,粒子系統(tǒng)更新線程清空粒子系統(tǒng)內(nèi)存池,執(zhí)行粒子系統(tǒng)的更新操作。粒子的更新操作,包括發(fā)射粒子和回收粒子,即根據(jù)規(guī)則在一定范圍內(nèi)產(chǎn)生粒子,同時對超過生命周期而死亡的粒子進行回收。更新操作還改變粒子的屬性,例如改變粒子位置(通過移動)和大小等。在隊列中具有多個粒子系統(tǒng)時,步驟121例如可以順序地對這些系統(tǒng)執(zhí)行更新操作。然后,更新線程轉(zhuǎn)到步驟122。

隨著攝像機位置,方位的改變,系統(tǒng)中每個粒子的朝向需要在每一幀重新計算,在步驟122中,由粒子系統(tǒng)更新線程執(zhí)行粒子朝向計算,并將計算結(jié)果存儲到粒子系統(tǒng)內(nèi)存池中。根據(jù)示例實施例,例如可以采用公告 板作為粒子最終渲染圖元,隨著攝像機位置,方位的改變,在每一幀重新計算矩形的4個頂點位置(即計算粒子的朝向)。

計算完朝向后,粒子系統(tǒng)更新線程將數(shù)據(jù)(即渲染數(shù)據(jù))存儲到內(nèi)存池中。粒子系統(tǒng)更新線程將隊列中的所有粒子系統(tǒng)的渲染數(shù)據(jù)都存儲到內(nèi)存池中之后,

在步驟123中,粒子系統(tǒng)更新線程將粒子系統(tǒng)渲染數(shù)據(jù)從粒子系統(tǒng)內(nèi)存池中傳入到顯存,以進行渲染。粒子數(shù)據(jù)的相關(guān)計算結(jié)果都是保存在內(nèi)存中的,因此需要把粒子數(shù)據(jù)傳送到顯存用于渲染。由于在步驟122中將所有粒子系統(tǒng)數(shù)據(jù)統(tǒng)一放到一個內(nèi)存池中,因此,只需要執(zhí)行一次傳送過程便可以把內(nèi)存中的數(shù)據(jù)傳送到顯卡中。

最后,在步驟124中,粒子系統(tǒng)更新線程通知主線程粒子系統(tǒng)更新操作完成。在通知主線程后,粒子系統(tǒng)更新線程將自身掛起,而后繼續(xù)阻塞狀態(tài),直至下次喚醒。

根據(jù)本發(fā)明示例實施例,粒子系統(tǒng)更新線程用來存儲粒子渲染數(shù)據(jù)的內(nèi)存池是一段連續(xù)的內(nèi)存,在執(zhí)行更新操作(步驟121)之前先清空該內(nèi)存池,在更新操作和朝向計算完成之后,內(nèi)存池里的數(shù)據(jù)會傳輸給顯存。例如可以通過偏移量確定存儲粒子系統(tǒng)數(shù)據(jù)的起始位置。假如假設(shè)每個粒子系統(tǒng)所需大小是30字節(jié),即需要30個字節(jié)大小的內(nèi)存空間用于存儲粒子系統(tǒng)的數(shù)據(jù)。如果設(shè)第一個粒子系統(tǒng)的偏移量是0,那第二個粒子系統(tǒng)的偏移量就是0+30,第n個粒子系統(tǒng)的偏移量就是0+30×(n-1)。在每次更新操作開始時,根據(jù)偏移量確定存儲粒子系統(tǒng)數(shù)據(jù)的起始位置。

下面接著描述主線程。在步驟113中,主線程判斷粒子系統(tǒng)的更新是否結(jié)束。如果是,則進行下一步驟;如果否,則重復這一判斷過程。這一判斷的執(zhí)行,可以通過判斷是否接收到粒子系統(tǒng)更新線程發(fā)送的通知消息而完成。

在步驟114中,主線程執(zhí)行粒子系統(tǒng)的渲染。根據(jù)本發(fā)明的示例實施例,采用例如公告板技術(shù)進行粒子系統(tǒng)的渲染,每個粒子的最終渲染采用四個頂點進行描述。渲染算法對視覺效果或計算機圖形學領(lǐng)域的技術(shù)人員是已知的。普通的渲染算法包括但不限于:光柵化、光線跟蹤和光子映射。 對于光線跟蹤,通過從圖像像素至光源反向跟蹤相應(yīng)光線來渲染對象,然后,由對象表面的反射系數(shù)和光源的特性來確定像素顏色。

上文說過粒子系統(tǒng)更新線程的工作是更新粒子系統(tǒng),計算粒子系統(tǒng)面朝向以及將渲染數(shù)據(jù)傳入到顯存中。在粒子系統(tǒng)更新線程進行的同時,主線程在步驟111中,執(zhí)行不涉及粒子系統(tǒng)的其余操作。在步驟112中,主線程執(zhí)行除粒子系統(tǒng)外其余模型的渲染過程。

如圖1中的虛線所示,主線程執(zhí)行的步驟111至113與粒子系統(tǒng)更新線程所執(zhí)行的步驟121至124并行進行。在步驟115中,主線程執(zhí)行其余操作。

由上面的描述可知,本發(fā)明將粒子系統(tǒng)更新操作以及計算面朝向操作從主線程中剝離出來。主線程負責例如創(chuàng)建和銷毀粒子系統(tǒng)、更新粒子系統(tǒng)的位置以及方位、更新攝像機的位置以及方位、渲染粒子系統(tǒng)。在喚醒粒子系統(tǒng)更新線程前,主線程要先執(zhí)行完創(chuàng)建和銷毀粒子系統(tǒng)、更新粒子系統(tǒng)的位置以及方位、更新攝像機的位置以及方位等操作。渲染粒子系統(tǒng)要等粒子系統(tǒng)更新線程完畢后再執(zhí)行。采用這種安排避免了線程之間加鎖產(chǎn)生的影響。對于許多應(yīng)用(例如大多數(shù)游戲)來說,粒子系統(tǒng)一般都是透明的,所以粒子系統(tǒng)都是較后開始渲染。在渲染其他物體的時候,主線程和粒子系統(tǒng)更新線程是并行運行的。

本領(lǐng)域的技術(shù)人員可以理解上述實施例的方法可以通過能夠在計算裝置上運行的計算機可讀指令實現(xiàn)。

圖2示出被配置成實施這里提供的一個或多個實施例的計算裝置1002的例子。計算裝置1002的一個實例是服務(wù)器,例如可以是上文提到的原服服務(wù)器、基礎(chǔ)跨服服務(wù)器和/或復合跨服服務(wù)器。計算裝置1002可以包括處理單元1006和存儲器1008。存儲器1008例如可以是易失性的(例如RAM)、非易失性的(例如ROM、閃速存儲器等等)、或二者的組合。這種配置在圖2上用虛線1004例示。

裝置1002還可包括附加的存儲裝置,包括但不限于,磁存儲裝置、光存儲裝置等等。這樣的附加存儲裝置在圖2上用存儲裝置1010例示。在一個實施例中,實施這里提供的一個或多個實施例的計算機可讀指令可 以是在存儲裝置1010中。存儲裝置1010還可存儲操作系統(tǒng)、應(yīng)用程序等等的其它計算機可讀指令。計算機可讀指令可被裝載在存儲器1008中,用于例如由處理單元1006執(zhí)行。

裝置1002還可包括允許裝置1002與其它裝置通信的通信裝置1016。通信裝置1016可包括但不限于,調(diào)制解調(diào)器、網(wǎng)絡(luò)接口卡(NIC)、集成網(wǎng)絡(luò)接口、射頻發(fā)射機/接收機、紅外端口、USB連接、或用于將計算裝置1002連接到其它計算裝置的其它接口。通信裝置1016可包括有線連接或無線連接。

裝置1002可包括輸入裝置1014,諸如鍵盤、鼠標、筆、話音輸入裝置、觸摸輸入裝置、紅外照相機、視頻輸入裝置、和/或任何其它輸入裝置。諸如一個或多個顯示器、揚聲器、打印機、和/或任何其它輸出裝置那樣的輸出裝置1012也可以被包括在裝置1002中。輸入裝置1014和輸出裝置1012可以經(jīng)由有線連接、無線連接或它們的任何組合被連接到裝置1002。

計算裝置1002的部件可以通過各種互連,諸如總線,而被連接。這樣的互連可包括諸如PCI Express那樣的外圍設(shè)備互連(PCI)、通用串行總線(USB)、firewire(IEEE 1394)、光總線結(jié)構(gòu)等等。

此外,盡管已經(jīng)詳細描述了本發(fā)明及其優(yōu)勢,但應(yīng)該理解,可以在不背離所附權(quán)利要求限定的本-發(fā)明主旨和范圍的情況下,進行各種不同的改變、替換和更改;而且,本發(fā)明的范圍并不僅限于本說明書中描述的系統(tǒng)、方法和步驟的實施例。作為本發(fā)明普通技術(shù)人員應(yīng)理解,通過本發(fā)明,現(xiàn)有的或今后開發(fā)的用于執(zhí)行和根據(jù)本發(fā)明所采用的技術(shù)方案基本相同的方式或獲得基本相同結(jié)果的方法和步驟根據(jù)本發(fā)明可以被使用。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
乐清市| 沂水县| 洪洞县| 绍兴县| 万荣县| 嵊州市| 吕梁市| 仁布县| 怀柔区| 昌邑市| 万荣县| 萨迦县| 嘉义市| 聂荣县| 遵化市| 新和县| 岳池县| 祁门县| 汾阳市| 濮阳县| 石首市| 曲沃县| 闽清县| 玉树县| 曲阳县| 峡江县| 九龙城区| 通山县| 谷城县| 浦北县| 红安县| 土默特左旗| 忻城县| 浏阳市| 都安| 虎林市| 大田县| 醴陵市| 江山市| 文水县| 昭苏县|