20年的電玩迷,2年的洋蔥程式設計師,對於沒有電玩的世界可是連想都不敢想像,也希望能借由自己微薄的程式技術,讓大家了解電玩世界的無限趣味~一個菜鳥程式的生活點滴和對程式技術上的小小研究@_@;

Wednesday, April 26, 2006

HLSL Glow

Glow這個濾鏡處理,現在幾乎每個遊戲都會用到,大概大家都很喜歡那種矇矓的感覺吧~這次的demo裡面,我的做法算簡單,首先先將算好Specular的scene存到一張貼圖中,接下來就用這張貼圖做Glow的處理囉.

為了做那種糊糊的感覺,我先將貼圖的尺寸縮小,這樣不但減輕shader的負擔也可以造成基本糊的效果^^有了這張縮小圖,這次再讓它自己乘自己來將亮暗的效果突顯出來.最後再套上高斯的水平和垂直blur,糊糊的一張Glow貼圖就算完成囉.最後再和一開始render的scene貼圖加在一起,就可以看出效果啦^_^
   
結果就是這樣囉~

Sunday, April 23, 2006

NPR效果<改>!

什麼!?又是NPR(non-photorealistic rendering也就是非寫實演算法啦!)阿...是阿是阿,但是這次的比較有趣囉.這次NPR的重點在於顏色的變型效果(color distortion).算出來結果很不錯看喔~

這次的demo也是後置處理,所以將Scene color輸出到一張貼圖上已經是必要的啦~不一樣的是,為了運用新的邊線運算法,除了輸出color之外,還需要另外輸出一張以normal和depth的貼圖才行.所以我把normal當做rgb,depth當做a輸出成貼圖.接下來要做的,就是用這2張來做後置處理.

處理一~~Color Distortion:
運用這種方法來讓顏色變型以達到類似像手繪的感覺.做法是:
1.先將輸出的Scene縮小成小張的貼圖,是為了故意讓顏色變粗糙.
2.接著,將RGB轉換成HSV的格式,轉法是用2張volume texture當做lookup table來做轉換.
3.在對應pixel的附近取2個樣品位置,那2點的位置則是要根據另2張特別的貼圖來做取樣
   
取樣的貼圖~
4.比較取樣結果的差異,在差異值大到一個程序時,我們便取2點S和V(HSV格式)的平均值.
5.最後再將結果轉回RGB就ok囉
   
處理前和處理後~

處理二~~Edge Detection:
和以往不同的是這次邊線是以pixel之間normal和深度depth來做比較;當normal之間的角度大到一定程度時,就判定它為邊線,depth則是以深度的差異來當做判斷邊線的依據,找出來的結果如下~連內邊線都有,真是贊啦^_^)b

邊線結果~
最後,將所有的貼圖結合成一張,就算大至完成囉~
   
Color Distortion + Edge Detection + Hatching~
這個demo我覺得最新鮮的地方,就是color distortion的部份了,不知道如果在貼圖上動些手角會有什麼不同的效果^^值得注意的是,我試著將toon rendering也以RGB轉HSV的方式來改造,果然有很棒的效果,因為轉HSV之後,H我可以不改變它,使它保持原有的色調,所以HSV調出來的toon看起來更加柔和也不會像以往的toon那樣暗暗髒髒的感覺~比較看看吧^_^
   
左圖是RGB算法,右邊是HSV的方式,你覺得呢?^^

Sunday, April 16, 2006

Ambient Occlusion

Ambient Occlusion(以下簡稱AO),是指一個表面上的點在環境光的照射下,被遮掩的成度.這個方式可以在物件表面上產生一個柔和的陰影來更加強調該物件的真實感和燈光的效果.這個demo我分別用了軟體和硬體2種方法還試做,做的方式如下~

Hemispherical visibility test:
如下圖所示,這個做法是以物件表面的一點P為出發點,在該點的法向量N(Normal)範圍的半圓來對外發射很多的假想射線(rays).我們將這些ray是否有接觸到其他面的數據來統計該點的受光程度,越多ray被阻檔的點,它受光的程度就越低.最後再將這每個點的數據儲存在vertex color裡面來使用.



我用了上面的方法,以每個vertex取512個ray來做參考數據,因為是用軟體來算的關係,速度上可以說相當慢@_@;但是算出來的效果確很不錯喔.最後render的結果如下(可以點選來看原尺寸的圖喔^^)~

   

Depth Map Based Ambient Occlusion Lighting:
如下圖所示,第2種方式是用充滿的燈光將物件包圍,從每一個燈光的視角來對物件來生成一張Shadow Map,再以這張Shadow Map當貼圖,以原攝影機的角度來做深度的比較.因為每個燈光的位置都不一樣,所以Shadow Map的比較就和第1種方式的Hemispherical visibility test是差不多的意思.經過所有燈光的Shadow Map的比較之後,就能清楚的了解到每個vertex的受光程度,進而將所有比較的結果以vertex貼圖軸為輸出位置來輸出到一張AO的貼圖.之後只要用這張AO貼圖便可render出結果^^



下圖是用了第2種演算法所得到的結果,由於有了硬體的支援,速度上比第1種要快得太多囉(算一張512x512的AO貼圖只需要幾秒的時間).值得注意的是女神像這張有一些artifacts,會這樣的原因是因為它有些vertex有重覆normal的關係(即使只算diffuse lighting也可以看到那些線),這個問題就沒有出現在羊頭身上,所以使用這種方式,對model的規格也是要注意的

   
女神像的render結果,注意到artifacts了嗎?
   
羊頭~

算出來的AO貼圖大約是這樣子~

Depth Map的算法雖然比Hemispherical visibility test的方式要快上許多,可是仍沒辦法做到real time rendering那樣的程度,現在GPU Gems2已經有另一種可以做到Dynamic AO的方式,所以Depth Map和Hemispherical visibility test已經算是過去式囉~@_@;改天再來好好看看dynamic AO的方法吧^_^;

Sunday, April 02, 2006

香港遊~

3月17號的時候因為xxx原因( 國家級機密^^; )所以必須走一趟香港.恩?3月,現在都4月了耶.沒錯,我就是懶啦.真懶得整理這些照片阿什麼的.可是如果不做的話,到5月可能就記憶消失好像沒去過一樣@_@所以,又臭又長的3天2夜的香港之旅,開寫囉~

這也算我第一次自己的自助旅行吧,所以說實在的第一天滿緊張的.雖然說以前有跟家人一起來過,但是腦子裡確完全沒有香港的記憶耶...^^;就這樣和我女朋友2人忐忑不安的出發囉.到了香港機場,小小放心了一下,因為這邊大部份的人說國語都還聽得懂耶~我們買了"八達通"( 類似這邊的悠遊卡,只是我們買得是3天的那種 )就坐旅館接泊車到達第一站--日航酒店!

這是旅館的外觀~5星級的喔!!

放下行裡整裡一下也差不多2點多了,我們挑了一家日本料理店( 還不錯吃喔,價格也便宜~ )吃飽後,就出發到第2站--山頂凌霄閣!要去山頂,當然是要坐他們的覽車上去才有意思,果然以前來的記憶一點鬼用都沒有,出了捷運就完全不知道自己在哪了@_@.還好在好心人們的幫助下,我們到了覽車搭乘處

覽車長這樣~

爬這個上去,聽說有45度那麼陡喔~

延路的景色...可惜天氣不好(*'3')/

到拉!凌霄閣...喵的ㄌㄟ,給我在整修(T_T)真是衰小,算囉,來都來了,就逛逛在旁邊的購物中心,結果發現了這傢伙~

逛完山頂,也差不多快晚上了,所以我們打算到香港一處有名的夜店街--蘭桂坊瞧瞧,但是該發生的果然還是發生了~是的!我們迷路囉@_@;在不知道走到哪裡的情況下,只好先跑回捷運站再重新出發^^;果然皇天不負迷路人~我們找到蘭桂坊啦!這個地方可不只是夜店街,還滿滿的都外國人喔!也算是一種奇觀吧

蘭桂坊一景

香港招排真是多的亂七八糟^^;

累了一天,回到旅館才發現幾個有趣的事~我們的雙人床怎麼是2張單人床合併^^;

還我雙人床!!

5星...

下面那一鍾是啥阿...不敢碰因為怕要收錢^^;在日本已經挑戰過這種事囉...不要碰為妙!礦泉水是免費的啦,還好~

3月18號~因為前一天迷路,所以腿跟本就走不動了,所以我們改變做戰,改為輕鬆治療之旅.所以就這樣一睡到中午(笑)而且中午還要去吃吃到爽的buffet~所以在吃飯前我們到位於尖沙嘴的彌敦道去逛街.彌敦道也和一般地方沒2樣,只是路的2邊都是賣東西的就是了.到了這我才發現,不只台灣空氣差,香港的也好不到哪去@_@真的,超毒的...又一堆公車...香港人阿,你們都聞不到嗎!!

彌敦道就這樣囉~

還有這樣囉~

公車真是爆多的...^^;

路邊的死小孩~~閃啦~

人家說來香港不坐坐這種出等於是沒來.所以...我們這次算沒來吧(笑)

吃飽飯後,回旅館小睡了一下(都說是治療之旅了)下午來到了位於香港的半山區電動樓梯,聽說做這個電動樓梯可以一路到當地的山頂上喔.可是!!!回程可沒有什麼鬼電梯可以用喔,得用走的回來.為了不想爬著回旅館,所以我們坐了幾站意思一下便溜囉~


電梯景觀~

傍晚我們趕著去天星碼頭搭渡輪,一路上發現了這些大樓,好像很厲害所以也拍下來囉


第2張好像是匯豐銀行吧~

香港的奇景之一~一到週末,港口附近就會坐滿這些外籍勞工,真的是坐滿喔多得嚇人,聽說他們也是週休2日,所以到週末不會留在顧主那所以全集中在這裡聊天什麼的

作渡輪的海上景色,這裡算漂亮啦^^

船上長這樣喔~


渡輪的外觀...給我用好一點的油啦!!柴油臭死啦

比較想坐這個...

到囉~天星碼頭,星光大道就在附近囉!

晚上在天星碼頭吃完東西後差不多20:00了聽這時在港口往香港島那邊看會有雷射表演喔!所以我們滿懷期待得在那邊等.可是^^;夢想跟現實還是有差距的,這個雷射秀說實在的滿無聊的,又沒音樂,感覺像2邊打打信號燈那樣的感覺^^;就這樣,我們去逛星光大道了~星光大道晚上雖然人很多可是燈確不多^^;感覺沒星光阿~不過也還好啦,就這樣晃完後,我們就回去睡覺了~

夜景是不錯啦~

星光大道,觀光客真多~有安全感多了^^

虧你還練功夫的...手這麼小@_@

3月19號,最後一天啦,為了怕趕不上飛機,所以不敢跑太遠的地方.早上在附近吃了一頓港式早餐(原本要吃飲茶的說,可是他們好像星期日很晚才開門,所以就這樣錯過囉)吃飽後我們就到位於九龍半島的女人街去走走..

我真的很想知道A餐是吃什麼鬼...

女人街!我們算是來早了吧,到的時候還有些店才正要開張呢

喔,這個是重點囉,雖然忘了這家店叫什麼名字,不過他們的飲品都很好吃喔~左邊的是芒果冰加小湯圓,右邊那個是西瓜汁配蜂蜜還有一些料,那4個紅球是西瓜喔!真是好喝^_^台灣應該要引進才對~

到底是出來玩還是來受罪阿...再也不搞這種自虐旅遊了!

終於準備要回家啦~逛完女人街和附近的地方後,我們就回到旅館拿寄放的行裡準備去機場~但是時間還早,我們就在附近亂晃,這時發現了這2個美食喔~左手那個是咖哩魚蛋~右手的比較特別,那是雞蛋糕~沒錯,和我們一般吃的很不一樣耶,它是烤得脆脆的而裡面是中空的,味道還真不錯說~^^

呼阿~終於寫完了,總結來說,香港其實和台灣還滿像的,糟糕的空氣,髒髒的街道(笑)以後應該不會再來旅遊了吧=P(過境不算啦)而且我以後再也不要這種跑斷腿的旅遊啦~明明是出來玩竟然比上班還累^^;以後還是多考慮渡假行勢的旅遊比較好!