本發(fā)明涉及3d渲染技術(shù)領(lǐng)域,尤其涉及一種基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法。
背景技術(shù):
當(dāng)前伴隨虛擬現(xiàn)實(shí)技術(shù)的高速發(fā)展,產(chǎn)生大量基于虛擬現(xiàn)實(shí)相關(guān)的計(jì)算任務(wù)。在虛擬家裝行業(yè),產(chǎn)生了大量使用虛擬現(xiàn)實(shí)技術(shù)實(shí)現(xiàn)所見(jiàn)即所得的3d家裝設(shè)計(jì)軟件。隨之產(chǎn)生大量的圖像渲染任務(wù)需求,但是大量的渲染需求并不會(huì)平均分布到不同時(shí)間段,由此產(chǎn)生了大量渲染用戶等待的情況。當(dāng)前市面上此類軟件都沒(méi)有分不同優(yōu)先級(jí)進(jìn)行任務(wù)處理,而是采用先來(lái)先渲染的實(shí)現(xiàn)方案,造成很差的用戶體驗(yàn)。
技術(shù)實(shí)現(xiàn)要素:
為解決上述的技術(shù)問(wèn)題,本發(fā)明提供了一種基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法,本發(fā)明提出的方法解決了現(xiàn)有技術(shù)下渲染資源浪費(fèi),渲染體驗(yàn)差的問(wèn)題。
本發(fā)明實(shí)現(xiàn)上述技術(shù)效果所采用的技術(shù)方案是:
一種基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法,所述方法包括以下步驟:
s1、檢測(cè)渲染任務(wù)的渲染請(qǐng)求類型是否為實(shí)時(shí)渲染請(qǐng)求還是離線渲染請(qǐng)求;
s2、如果為離線渲染請(qǐng)求,則置渲染任務(wù)數(shù)據(jù)中的離線標(biāo)識(shí)offline為1,不進(jìn)行渲染資源的狀態(tài)檢測(cè),然后把處理后的渲染任務(wù)數(shù)據(jù)發(fā)送到任務(wù)接收方,如果為實(shí)時(shí)渲染請(qǐng)求,則檢測(cè)當(dāng)前渲染資源的狀態(tài)是否為繁忙還是空閑并提示用戶選擇離線渲染或?qū)崟r(shí)渲染,然后把處理后的渲染任務(wù)數(shù)據(jù)發(fā)送到任務(wù)接收方;
s3、接收渲染任務(wù)和該渲染任務(wù)的渲染優(yōu)先級(jí)判斷信息;
s4、判斷用戶渲染任務(wù)的優(yōu)先級(jí),并存入對(duì)應(yīng)的優(yōu)先級(jí)隊(duì)列;
s5、根據(jù)優(yōu)先級(jí)由高到低獲取渲染任務(wù)進(jìn)行渲染。
進(jìn)一步地,在所述的基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法中,在執(zhí)行所述步驟s1前,還包括步驟:
s0、進(jìn)行前期數(shù)據(jù)準(zhǔn)備,數(shù)據(jù)準(zhǔn)備完成后發(fā)起渲染任務(wù)請(qǐng)求。
進(jìn)一步地,在所述的基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法中,在步驟s2中,檢測(cè)當(dāng)前資源的繁忙或空閑狀態(tài)包括步驟:
s21、發(fā)送渲染資源的狀態(tài)檢測(cè)請(qǐng)求,接收該狀態(tài)檢測(cè)請(qǐng)求并統(tǒng)計(jì)當(dāng)前空閑的渲染資源數(shù)量,當(dāng)空閑的渲染資源的數(shù)量大于0時(shí),返回空閑狀態(tài)給狀態(tài)檢測(cè)請(qǐng)求的發(fā)送方,當(dāng)空閑的渲染資源等于0時(shí),返回繁忙狀態(tài)給狀態(tài)檢測(cè)請(qǐng)求的發(fā)送方。
進(jìn)一步地,在所述的基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法中,在步驟s21之前還包括步驟:
s211、初始化所有的渲染機(jī)器資源,默認(rèn)所有渲染機(jī)器資源為空閑,并保存當(dāng)前所有的渲染機(jī)器的該空閑狀態(tài);
s212、當(dāng)渲染機(jī)器獲得渲染任務(wù)后,把該渲染機(jī)器的狀態(tài)設(shè)置為繁忙狀態(tài),并保存該渲染機(jī)器的繁忙狀態(tài)。
進(jìn)一步地,在所述的基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法中,在步驟s2中,提示用戶選擇離線渲染或?qū)崟r(shí)渲染的步驟包括:
s22、返回的如果為繁忙狀態(tài),則提示用戶當(dāng)前渲染資源繁忙,可以進(jìn)行離線渲染的方式進(jìn)行任務(wù)處理,如果用戶選擇離線渲染,則把渲染任務(wù)數(shù)據(jù)中的離線渲染標(biāo)識(shí)offline修改為1,如果用戶繼續(xù)渲染實(shí)時(shí)渲染,則渲染任務(wù)數(shù)據(jù)不做處理;
返回的如果為空閑狀態(tài),則渲染任務(wù)數(shù)據(jù)不做處理。
進(jìn)一步地,在所述的基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法中,在步驟s0中,發(fā)起渲染任務(wù)請(qǐng)求前準(zhǔn)備的前期數(shù)據(jù)包括房屋戶型繪制完成后獲得的具象化的戶型數(shù)據(jù):房屋戶型結(jié)構(gòu)、模型擺放、吊頂擺放、燈光強(qiáng)度和顏色的調(diào)節(jié)。
進(jìn)一步地,在所述的基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法中,渲染任務(wù)的數(shù)據(jù)包括:戶型結(jié)構(gòu)數(shù)據(jù)、模型數(shù)據(jù)、吊頂數(shù)據(jù)、燈光信息數(shù)據(jù)和離線渲染標(biāo)識(shí)offline,所述離線渲染標(biāo)識(shí)offline默認(rèn)為0,標(biāo)識(shí)為非離線。
進(jìn)一步地,在所述的基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法中,在步驟s3中,進(jìn)行渲染優(yōu)先級(jí)判斷的用戶信息有:用戶類型type,用戶等級(jí)level。
進(jìn)一步地,在所述的基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法中,在步驟s4中,接收到渲染任務(wù)的數(shù)據(jù)后,判斷該渲染任務(wù)的優(yōu)先級(jí)的參考值是:用戶類型type、用戶等級(jí)level和離線標(biāo)識(shí)offline。
進(jìn)一步地,在所述的基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法中,優(yōu)先級(jí)隊(duì)列的生成規(guī)則為:
s41、先檢測(cè)離線標(biāo)識(shí)offline;
s42、如果離線標(biāo)識(shí)offline等于1,則把該渲染任務(wù)放到最低優(yōu)先級(jí)隊(duì)列quene_offline;
s43、如果離線標(biāo)識(shí)offline為0,則根據(jù)用戶類型type和用戶等級(jí)level進(jìn)行渲染隊(duì)列優(yōu)先級(jí)判斷,其中,用戶類型type有值0和1,用戶等級(jí)level有值0和1,優(yōu)先級(jí)隊(duì)列格式為:quene_type_level,按優(yōu)先級(jí)順序排列分別是:quene_0_0、quene_0_1、quene_1_0和quene_1_1。
進(jìn)一步地,在所述的基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法中,根據(jù)渲染資源狀態(tài)、用戶需求綜合判斷,可取得了5個(gè)渲染任務(wù)優(yōu)先級(jí)隊(duì)列,按優(yōu)先級(jí)順序排列分別是:quene_0_0、quene_0_1、quene_1_0、quene_1_1、quene_offline。
進(jìn)一步地,在所述的基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法中,所述優(yōu)先級(jí)隊(duì)列根據(jù)渲染需求和用戶需求設(shè)置有可擴(kuò)展屬性,用于擴(kuò)展優(yōu)先級(jí)隊(duì)列的優(yōu)先級(jí)類別。
本發(fā)明的有益效果是:本發(fā)明使用基于實(shí)時(shí)、離線渲染的多優(yōu)先級(jí)任務(wù)調(diào)度方案,可根據(jù)用戶需求及資源狀態(tài)動(dòng)態(tài)地分配渲染任務(wù)的優(yōu)先級(jí),提升用戶體驗(yàn)的同時(shí),提供資源利用率。
附圖說(shuō)明
圖1為本發(fā)明的流程圖。
具體實(shí)施方式
為了對(duì)本發(fā)明作出更加清楚完整地說(shuō)明,下面結(jié)合附圖和本發(fā)明的具體實(shí)施例對(duì)本發(fā)明的技術(shù)方案作出進(jìn)一步說(shuō)明。
首先,對(duì)本發(fā)明涉及的兩個(gè)專業(yè)術(shù)語(yǔ)作出解釋說(shuō)明,其中,實(shí)時(shí)渲染任務(wù)是指用戶對(duì)渲染時(shí)間的要求高,需要在最短時(shí)間內(nèi)進(jìn)行渲染的任務(wù)。離線渲染任務(wù)是指用戶對(duì)渲染時(shí)間的要求低,可以在渲染機(jī)器資源狀態(tài)空閑后進(jìn)行渲染的任務(wù)。
具體技術(shù)方案結(jié)合圖1所示,本發(fā)明提出的一種基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法,所述方法包括以下步驟:
s1、檢測(cè)渲染任務(wù)的渲染請(qǐng)求類型是否為實(shí)時(shí)渲染請(qǐng)求還是離線渲染請(qǐng)求。
s2、如果為離線渲染請(qǐng)求,則置渲染任務(wù)數(shù)據(jù)中的離線標(biāo)識(shí)offline為1,不進(jìn)行渲染資源的狀態(tài)檢測(cè),然后把處理后的渲染任務(wù)數(shù)據(jù)發(fā)送到任務(wù)接收方。如果為實(shí)時(shí)渲染請(qǐng)求,則檢測(cè)當(dāng)前渲染資源的狀態(tài)是否為繁忙還是空閑。當(dāng)前渲染資源為繁忙,則提示用戶選擇離線渲染,以避開(kāi)渲染處理的高峰期,等待渲染資源空閑再處理。當(dāng)前渲染資源為空閑,則提示用戶選擇實(shí)時(shí)渲染,然后把處理后的渲染任務(wù)數(shù)據(jù)發(fā)送到任務(wù)接收方。
s3、接收渲染任務(wù)和該渲染任務(wù)的渲染優(yōu)先級(jí)判斷信息。
s4、判斷用戶渲染任務(wù)的優(yōu)先級(jí),并存入對(duì)應(yīng)的優(yōu)先級(jí)隊(duì)列。
s5、根據(jù)優(yōu)先級(jí)由高到低獲取渲染任務(wù)進(jìn)行渲染。
進(jìn)一步地,在所述的基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法中,在執(zhí)行所述步驟s1前,還包括步驟:
s0、進(jìn)行前期數(shù)據(jù)準(zhǔn)備,數(shù)據(jù)準(zhǔn)備完成后發(fā)起渲染任務(wù)請(qǐng)求。
進(jìn)一步地,在所述的基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法中,在步驟s2中,檢測(cè)當(dāng)前資源的繁忙或空閑狀態(tài)包括步驟:
s21、發(fā)送渲染資源的狀態(tài)檢測(cè)請(qǐng)求,接收該狀態(tài)檢測(cè)請(qǐng)求并統(tǒng)計(jì)當(dāng)前空閑的渲染資源數(shù)量,當(dāng)空閑的渲染資源的數(shù)量大于0時(shí),返回空閑狀態(tài)給狀態(tài)檢測(cè)請(qǐng)求的發(fā)送方,當(dāng)空閑的渲染資源等于0時(shí),返回繁忙狀態(tài)給狀態(tài)檢測(cè)請(qǐng)求的發(fā)送方。
進(jìn)一步地,在所述的基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法中,在步驟s21之前還包括步驟:
s211、初始化所有的渲染機(jī)器資源,默認(rèn)所有渲染機(jī)器資源為空閑,并保存當(dāng)前所有的渲染機(jī)器的該空閑狀態(tài);
s212、當(dāng)渲染機(jī)器獲得渲染任務(wù)后,把該渲染機(jī)器的狀態(tài)設(shè)置為繁忙狀態(tài),并保存該渲染機(jī)器的繁忙狀態(tài)。
進(jìn)一步地,在所述的基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法中,在步驟s2中,提示用戶選擇離線渲染或?qū)崟r(shí)渲染的步驟包括:
s22、返回的如果為繁忙狀態(tài),則提示用戶當(dāng)前渲染資源繁忙,可以進(jìn)行離線渲染的方式進(jìn)行任務(wù)處理,如果用戶選擇離線渲染,則把渲染任務(wù)數(shù)據(jù)中的離線渲染標(biāo)識(shí)offline修改為1,如果用戶繼續(xù)渲染實(shí)時(shí)渲染,則渲染任務(wù)數(shù)據(jù)不做處理;
返回的如果為空閑狀態(tài),則渲染任務(wù)數(shù)據(jù)不做處理。
進(jìn)一步地,在所述的基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法中,在步驟s0中,發(fā)起渲染任務(wù)請(qǐng)求前準(zhǔn)備的前期數(shù)據(jù)包括房屋戶型繪制完成后獲得的具象化的戶型數(shù)據(jù):房屋戶型結(jié)構(gòu)、模型擺放、吊頂擺放、燈光強(qiáng)度和顏色的調(diào)節(jié)。
進(jìn)一步地,在所述的基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法中,渲染任務(wù)的數(shù)據(jù)包括:戶型結(jié)構(gòu)數(shù)據(jù)、模型數(shù)據(jù)、吊頂數(shù)據(jù)、燈光信息數(shù)據(jù)和離線渲染標(biāo)識(shí)offline,所述離線渲染標(biāo)識(shí)offline默認(rèn)為0,標(biāo)識(shí)為非離線。
進(jìn)一步地,在所述的基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法中,在步驟s3中,進(jìn)行渲染優(yōu)先級(jí)判斷的用戶信息有:用戶類型type,用戶等級(jí)level。
進(jìn)一步地,在所述的基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法中,在步驟s4中,接收到渲染任務(wù)的數(shù)據(jù)后,判斷該渲染任務(wù)的優(yōu)先級(jí)的參考值是:用戶類型type、用戶等級(jí)level和離線標(biāo)識(shí)offline。
進(jìn)一步地,在所述的基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法中,優(yōu)先級(jí)隊(duì)列的生成規(guī)則為:
s41、先檢測(cè)離線標(biāo)識(shí)offline;
s42、如果離線標(biāo)識(shí)offline等于1,則把該渲染任務(wù)放到最低優(yōu)先級(jí)隊(duì)列quene_offline;
s43、如果離線標(biāo)識(shí)offline為0,則根據(jù)用戶類型type和用戶等級(jí)level進(jìn)行渲染隊(duì)列優(yōu)先級(jí)判斷,其中,用戶類型type有值0和1,用戶等級(jí)level有值0和1,優(yōu)先級(jí)隊(duì)列格式為:quene_type_level,按優(yōu)先級(jí)順序排列分別是:quene_0_0、quene_0_1、quene_1_0和quene_1_1。
進(jìn)一步地,在所述的基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法中,根據(jù)渲染資源狀態(tài)、用戶需求綜合判斷,可取得了5個(gè)渲染任務(wù)優(yōu)先級(jí)隊(duì)列,按優(yōu)先級(jí)順序排列分別是:quene_0_0、quene_0_1、quene_1_0、quene_1_1、quene_offline。
進(jìn)一步地,在所述的基于實(shí)時(shí)離線渲染并行的多優(yōu)先級(jí)隊(duì)列調(diào)度方法中,所述優(yōu)先級(jí)隊(duì)列根據(jù)渲染需求和用戶需求設(shè)置有可擴(kuò)展屬性,用于擴(kuò)展優(yōu)先級(jí)隊(duì)列的優(yōu)先級(jí)類別。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。