最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【籠中窺夢(mèng)】國(guó)產(chǎn)獨(dú)立游戲佳作技術(shù)解析

2022-06-01 14:43 作者:獨(dú)立游戲人-老雷  | 我要投稿

前言

  • 本文要帶大家分析的是TapTap評(píng)分8.8的國(guó)產(chǎn)獨(dú)立游戲佳作《籠中窺夢(mèng)》

  • 這款游戲是2021年年底上線(xiàn)的國(guó)產(chǎn)獨(dú)立游戲,當(dāng)時(shí)游戲的評(píng)分和熱度也很高,很多小伙伴可能也玩過(guò),今天就帶著大家去拆解復(fù)現(xiàn)這款游戲中的核心技術(shù)實(shí)現(xiàn)

版權(quán)聲明

  • 本文為“優(yōu)夢(mèng)創(chuàng)客”原創(chuàng)文章,您可以自由轉(zhuǎn)載,但必須加入完整的版權(quán)聲明

  • 更多學(xué)習(xí)資源請(qǐng)加QQ:1517069595或WX:alice17173獲?。ㄆ髽I(yè)級(jí)性能優(yōu)化/熱更新/Shader特效/服務(wù)器/商業(yè)項(xiàng)目實(shí)戰(zhàn)/每周直播/一對(duì)一指導(dǎo))

  • 點(diǎn)贊、關(guān)注、分享可免費(fèi)獲得配套學(xué)習(xí)資源

  • 點(diǎn)擊觀(guān)看完整視頻

《籠中窺夢(mèng)》玩法解析

  • ?《籠中窺夢(mèng)》的玩法就是在這樣一個(gè)六邊形的盒子里拼接左右一樣的圖形,這個(gè)六邊形盒子的每一個(gè)面中的場(chǎng)景畫(huà)面都是不一樣的

  • 當(dāng)左邊場(chǎng)景和右邊場(chǎng)景出現(xiàn)一樣的景物時(shí),這個(gè)物件就拼接成功了,可以進(jìn)行場(chǎng)景交互,同樣的道理,這個(gè)起重機(jī)完成拼接后,也可以進(jìn)行交互

  • 所以《籠中窺夢(mèng)》這款游戲的開(kāi)發(fā)難點(diǎn)在于如何使一個(gè)立方體盒子的每一個(gè)面上出現(xiàn)不同的場(chǎng)景,并且能夠進(jìn)行拼接,這是本篇文章的主要目標(biāo)

《籠中窺夢(mèng)》技術(shù)演示

  • 這里是一個(gè)Demo場(chǎng)景,這個(gè)場(chǎng)景里的立方體的每一個(gè)面都會(huì)顯示不同的場(chǎng)景圖像,要實(shí)現(xiàn)這樣的效果需要利用模板緩沖區(qū)技術(shù)

  • 上圖中被選中的四邊形面片就是模板區(qū)域,在渲染圖像時(shí)會(huì)把圖像繪制在模版區(qū)域上

  • 把模板去掉后,這個(gè)面上的圖像就消失了(如上圖),這也是模版的作用,也就是顯示場(chǎng)景圖像

  • 要在Unity中添加一個(gè)模板需要使用Shader腳本,這也是Unity游戲開(kāi)發(fā)崗位中的技術(shù)美術(shù)同學(xué)必須要掌握的一個(gè)技能,所謂的技術(shù)美術(shù),就是用技術(shù)的方式來(lái)實(shí)現(xiàn)今天這樣的美術(shù)效果

《籠中窺夢(mèng)》技術(shù)解析

  • Unity中的模版是基于每一個(gè)像素來(lái)設(shè)置模板值,這個(gè)模板值在初始時(shí)都是0(如上圖),它是基于每一個(gè)像素的,所以每一個(gè)像素的模板值都是零

  • 通過(guò)Shader腳本可以將左邊面片區(qū)域中的每一個(gè)像素設(shè)置為1,并且只會(huì)在模板值設(shè)置為1的像素區(qū)域上來(lái)進(jìn)行左邊場(chǎng)景的圖像繪制工作

代碼實(shí)現(xiàn)


效果實(shí)現(xiàn)

  • 在寫(xiě)完代碼后還要進(jìn)行一些設(shè)置來(lái)讓Shader生效

  • 先定義兩個(gè)模板層(這個(gè)層可以理解為分類(lèi)),分別叫做StencilLayer1和StencilLayer2(如下圖)

  • 這兩個(gè)分類(lèi)分別對(duì)應(yīng)了這個(gè)立方體左右兩邊區(qū)域(如下圖)

  • 將兩個(gè)模板面片的層設(shè)置為StencilLayer1和StencilLayer2,分配好以后就可以設(shè)置在渲染左邊面片場(chǎng)景時(shí)采用特殊的渲染方式,渲染右邊面片場(chǎng)景也采用特殊的渲染方式,其余部分采用普通渲染方式來(lái)進(jìn)行渲染(如下圖)

  • 激活StencilMask1和StencilMask2(模板遮罩1和模板制遮罩2),也就是下圖場(chǎng)景中被橘色框框住的模板遮罩

  • 分別設(shè)置它們的渲染方式,使用剛才實(shí)現(xiàn)的Shader代碼(如下圖)

  • 實(shí)現(xiàn)出的結(jié)果就是左邊模板區(qū)域的模板值全部都是1,右邊模板區(qū)域的模板值全都是2(如下圖)

  • 為了讓Unity的渲染管線(xiàn)對(duì)于左邊模板區(qū)域和右邊模板區(qū)域采用特殊渲染方式,需要對(duì)URP渲染管線(xiàn)進(jìn)行定制,那應(yīng)該怎樣定制呢?

  • 需要設(shè)置正常的渲染管線(xiàn),讓它取消StencilLayer1以及StencilLayer2的渲染(如上圖),讓這兩層不要走正常的渲染路徑

  • 透明物體和不透明物體也要設(shè)置(如上圖)

  • 添加StencilLayer1的渲染特性,設(shè)置StencilLayer1的渲染時(shí)機(jī)(如上圖),讓它在場(chǎng)景中所有的不透明物體渲染完后才開(kāi)始渲染

  • 將這個(gè)渲染特性所要渲染的層設(shè)置為StencilLayer1(如上圖)

  • 勾選這個(gè)渲染特性中的Stencil,并將Value的值設(shè)置為1,將ComPare Function設(shè)置為Equal

  • 下面這張圖是最后實(shí)現(xiàn)出的效果

  • 要使右邊的面片也能夠渲染場(chǎng)景,需要再添加一個(gè)渲染特性,步驟與上面一樣,只是在設(shè)置渲染層時(shí)要設(shè)置為StencilLayer2,Stencil的Value值需要設(shè)置為2(如下圖)

  • 因?yàn)閳?chǎng)景中還有一些半透明物體,所以還需要再設(shè)置一個(gè)渲染特性(如下圖)

  • 基本設(shè)置都是一樣,只是將Event設(shè)置為AfterRenderingTransparents,將Queue設(shè)置為T(mén)ransparent

最終效果演示

寫(xiě)在最后

  • 更多學(xué)習(xí)資源請(qǐng)加QQ:1517069595或WX:alice17173獲取(企業(yè)級(jí)性能優(yōu)化/熱更新/Shader特效/服務(wù)器/商業(yè)項(xiàng)目實(shí)戰(zhàn)/每周直播/一對(duì)一指導(dǎo))

  • 點(diǎn)贊、關(guān)注、分享可免費(fèi)獲得配套學(xué)習(xí)資源

  • 點(diǎn)擊觀(guān)看完整視頻


【籠中窺夢(mèng)】國(guó)產(chǎn)獨(dú)立游戲佳作技術(shù)解析的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
清流县| 陆良县| 邛崃市| 青岛市| 夏津县| 扶风县| 临高县| 鄂托克旗| 钟山县| 大港区| 焉耆| 上高县| 历史| 织金县| 科技| 普陀区| 大城县| 商水县| 伊川县| 中宁县| 千阳县| 阳泉市| 绥江县| 清流县| 康定县| 乐山市| 康马县| 乌恰县| 佳木斯市| 新营市| 沁水县| 金川县| 花垣县| 平原县| 博湖县| 大新县| 丽江市| 阿坝| 盐亭县| 安顺市| 比如县|