您的位置 首页 kreess

像素化風格渲染(一)

我對像素遊戲情有獨鐘。小時候最早接觸的遊戲機就是山寨俄羅斯方塊遊戲機,印象裡除瞭俄羅斯方塊還可以開坦克,開賽車和青蛙過河之類的。如此抽象的表現形式在小時候的我看起來充滿瞭無

我對像素遊戲情有獨鐘。

小時候最早接觸的遊戲機就是山寨俄羅斯方塊遊戲機,印象裡除瞭俄羅斯方塊還可以開坦克,開賽車和青蛙過河之類的。如此抽象的表現形式在小時候的我看起來充滿瞭無窮的趣味。一直到現在我都很喜歡像素風,高中的時候購買瞭一臺二手java索愛手機,大學大一上學期偷偷攢錢買瞭psp,3ds,switch。哦對瞭,還有一個特殊的“遊戲機”,是一個圖形計算器,可以下載別人編寫好的遊戲遊玩。

Ti-92+遊玩馬裡奧https://www.zhihu.com/video/1531518058615476224

所以步入正題,我要寫一段像素風格的shader。

首先從原理入手。

像素風格我的理解是模仿早期設備低分辨率的條件,做出的一種抽象的畫風。早期設備是迫不得已才做成像素風格的,然而我們現有的設備不是2k高清屏幕就是視網膜屏,類似於蔚藍這樣的遊戲都是高清馬賽克。

The Last Night,完美結合3d光影和2d像素

而以三渲二的方式來表現像素風格的遊戲可以有效減少繪制2d幀動畫的工作量,把3d的光,動畫,角度切換應用到2d上去。有幸接觸到瞭一個Unity插件pixelizer,看到瞭作者所給的講解,在此記錄研究的過程。


總體上像素化原理就像這個視頻裡展示的一樣:原來圖片是這樣壓縮的_嗶哩嗶哩_bilibili

方法一:不用任何代碼,利用Render texture,然後降低分辨率,將其添加到Quad上,用另外一個camera調整好角度對準Quad。

原始圖像https://www.zhihu.com/video/1532469496815595520使用render texture後(128*128)https://www.zhihu.com/video/1532469857115545600

這個是unity商店裡的免費模型,由於沒有硬陰影,所以看起來還不是很‘2d’這種方法最終效果很像以前的怪物獵人,特別是3ds上的怪物獵人,可以看出是有不錯的像素化效果的。但是這種風法局限性也很大,因為這相當於降低瞭物理分辨率。而且這樣的渲染每次都需要額外的camera,當有大量物體時性能很捉急,隻能用在小場景裡。

方法二:剔除像素 + 全屏後處理

首先進行剔除像素代碼。原理就是,設置一個固定的數值d,然後每隔d個像素保留該位置的像素點,然後其餘的剔除。

原始的剔除像素之後,這裡每隔5個保留一個像素

ps.有種透明的做法就是和這個差不多,前後遮擋的時候剔除像素。

最後寫一個屏幕後處理,對於每個屏幕像素,搜索周圍5個像素(因為間隔為5),取不透明的那個。

最後的效果可以成功渲染成像素風格https://www.zhihu.com/video/1533548277492703232

當然還存才一些問題,比如正反體尖銳邊緣會有一些不規則的顏色,因為這個材質貼圖在棱處有一條黃邊。

還有像素風格光照處理問題等。這個後續討論。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

返回顶部