今天是圣誕節(jié)平安夜,為此特別制作了一個(gè)雪花飄落的場(chǎng)景,我們的雪花渲染方式不同于網(wǎng)上流行的使用Camera Filter,需要將腳本掛接到相機(jī)上面,而我們是掛接到空對(duì)象上面,實(shí)現(xiàn)方式采用的是自定義Mesh,自定義Mesh可以幫助我們實(shí)現(xiàn)很多的效果,而且對(duì)效率的提升非常有幫助,雪花實(shí)現(xiàn)方式分為:C#腳本和Shader渲染,C#負(fù)責(zé)雪花的生成,Shader負(fù)責(zé)雪花的飛舞和渲染。下面我們介紹實(shí)現(xiàn)方式:
創(chuàng)新互聯(lián)長(zhǎng)期為上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為姜堰企業(yè)提供專(zhuān)業(yè)的網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè),姜堰網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
關(guān)于unity,每幀可渲染65000頂點(diǎn),表示雪的網(wǎng)狀物每1片雪花使用4個(gè)頂點(diǎn),65,000 / 4 = 1,6250,這也是你可以一次畫(huà)的雪數(shù)量。
自定義Mesh,我們需要這兩個(gè)參數(shù):雪花數(shù)量,雪花的范圍,另外實(shí)現(xiàn)自定義Mesh需要如下幾個(gè)參數(shù):存放雪花頂點(diǎn),雪花的三角形索引,雪花UV,最后我們需要MeshRender幫助我們渲染。首先我們針對(duì)定義的參數(shù)如下所示:
變量定義好了,接下來(lái)的工作就是初始化了,我們的初始化工作只需要做一次,因此在Start函數(shù)中完成的。下面我們根據(jù)定義的變量逐步將他們填充起來(lái),先完成雪花頂點(diǎn)的生成如下所示:
頂點(diǎn)有了,再來(lái)填充索引,代碼如下所示:
索引有了,下面就是UV了,再看看UV的實(shí)現(xiàn)方式:
頂點(diǎn),索引,UV定義好了后,下面就是寫(xiě)自定義雪花Mesh了,將我們已經(jīng)實(shí)現(xiàn)的頂點(diǎn),索引,UV一次性的賦給我們的Mesh,如下所示:
到這里,我們的自定義Mesh就完成了,我們還需要對(duì)Mesh進(jìn)行渲染,這個(gè)就用到了我們的Shader了,雪花是飄動(dòng)的而且還需要材質(zhì),雪花位置的變化我們?cè)陧旤c(diǎn)著色器中實(shí)現(xiàn),這個(gè)也是重點(diǎn),而片段著色器只是做了簡(jiǎn)單的渲染,核心代碼如下所示:
剩下的是在C#中,使用CPU對(duì)GPU中定義的Shader傳值,Shader中定義了以下變量:
這些變量需要在C#中完成對(duì)它們的傳值操作,因?yàn)樾枰繋?zhí)行,我們將其放在了LateUpdate中完成,代碼如下所示:
這樣我們的雪花制作就完成了,我們將代碼掛到自己新建的空對(duì)象上面,注意這里不是相機(jī)上,實(shí)現(xiàn)效果如下:
我們的雪景出現(xiàn)了,但是效果不是特別好,渲染力度不夠,為此我將其加上,景深,霧效,Bloom渲染,再看看效果如下所示:
效果明顯加強(qiáng)了,圖中的鹿是給大家送祝福了,祝愿開(kāi)發(fā)者技術(shù)更上一層樓,就寫(xiě)到這里吧,代碼后面整理一下傳上來(lái),供參考,晚安各位。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。
網(wǎng)站欄目:Unity屏幕雪花另類(lèi)實(shí)現(xiàn)方式示例
分享鏈接:http://aaarwkj.com/article42/ijhhec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、服務(wù)器托管、外貿(mào)建站、網(wǎng)站改版、面包屑導(dǎo)航、網(wǎng)頁(yè)設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)