C for Graphic 螢幕特效畫素畫

2021-09-29 19:24:36 字數 1278 閱讀 9417

雙十一從同學手上搞了臺3dsll,又開始猛肝塞爾達傳說(時之笛/假面/三角力量2)了,每天晚上六點半到家吃個飯七點開始搞到凌晨一點鐘,真尼瑪扛不住。

剛拿到3dsll的那天和我的老小三對比了一下,上屏解析度不變(雙眼400*240)尺寸增大到4.8英吋,下螢幕解析度也不變(320*240)尺寸增大到4英吋,在不開裸眼3d的情況下,就跟回到了諾基亞塞班手機的年代一樣,看慣了現在retina螢幕的情況下感覺畫質簡直慘不忍睹。

不過玩了一周的塞爾達,精良的畫風和色調調配(僅限三角力量2和縮小帽的畫風哈),讓我感覺「馬賽克」畫質不僅不是減分項,還屬於另一種畫風的遊戲體驗,我又玩了路易鬼屋2(都是以前沒通關的),居然有點喜歡上了這種畫素畫風格,再讓我看retina螢幕和超取樣的線性漸變紋理,我居然感覺還不如畫素畫風。

上面的畫風看久了感覺還挺不錯的。所以考慮後面做乙個畫素畫風的feature,比如用螢幕後處理特效將原本正常的遊戲處理成畫素畫風,畢竟如果純粹的製作畫素風的模型和紋理太麻煩了。

我們知道在低解析度螢幕上那就是「畫素畫」和「馬賽克」,在高解析度螢幕上就是「高畫質畫質」,是因為假設我們把螢幕畫面當作一張紋理,那麼低解析度下uv值的「平滑度」不如高解析度下uv值的「平滑度」(或者說uv步長step更大,亦或者說uv值平滑更加線性),那麼我們在高解析度下模擬低解析度的效果,只需要將uv的取樣變得「不那麼平滑「即可,我們直接讓uv的float精度損失即可。

直接上shader**了,如下:

shader "screen/pixelimageeffectshader"

_pixelsize("pixel size",range(1,256)) = 128

}subshader

;struct v2f

;sampler2d _maintex;

float _pixelsize;

fixed4 frag (v2f i) : sv_target

endcg}}

}

效果圖如下:

當然我們也可以根據步長step」損失精度「,如下:

我們可以把uv的0-1的step作為引數去進行計算,當然計算量大了。

fixed4 frag (v2f i) : sv_target

恩,畫素畫風也是一種很好的風格。

C for Graphic 遮擋透視

最近剛好用上了這個效果所以記錄一下,原理不再贅述,通過之前的透明原理和渲染佇列詳解就可以了解。遮擋透視可以區分為兩部分,第一部分未被遮擋的頂點則正常柵格化著色,第二部分被遮擋的頂點則ztest greater 也就是判斷當前頂點depth更大距離相機更遠則柵格化著色 下面實現shader shade...

C for Graphic 頂點片段變色

今天中午深圳老同事問我怎麼搞模型逐漸變色,他們策劃需要模型有個變色的過程,他自己就只在c 中做color.lerp,達不到要求,週六被拉著加班。我也正好在家裡做自己的小遊戲,所以幫他寫了兩個,原理無非是頂點或者片段依次變色就好了。想著這需求還挺常見的,就水一篇部落格。如果我們使用的頂點著色,也就是頂...

Unity3D螢幕特效合成

unity3d可以使用螢幕合成效果,估計很多人都知道,因為自帶的螢幕特效包裡面有很多這樣的例子。比如原來攝像機渲染出來的效果是這樣的 通過合成,你可以把它做顏色的偏移或者反 或者可以在上面合成自己指定的紋理和效果等 螢幕合成的原理其實很簡單,只是把原來螢幕渲染的東西,通過乙個特定的著色器改變內容成為...