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