2009年12月16日 星期三

Multi-Thread

這一個禮拜為了專案的需求,去研究一下thread的東西。

雖然大學的OS有上過,不過始終還是理論,並沒有去實作過,

所以在研究過程,腦中慢慢浮現教授所講的內容。

經由boost thread的幫助之下,讓我很簡單的在C++底層底下快速建立thread。

花了一個禮拜完成back loading的工作項,花滿多時間在看文件和架構調整,

還有thread safe的問題,不過還會找時間去測試穩定性,

因為開了三條thread去作,說實在整體架構來講,寫的滿不好的,

不過的確確實花在刀口上,剩下粒子那邊會讓遊戲「頓」一下,

說實在不太想改,因為很麻煩XD。

對於是否要繼續研究?滿值得持續研究,因為未來是多執行緒的時代,

不去用它的話,是滿對不起intel和AMD,不過我只知道intel有提供工具作thread除錯。

最近有看到一款遊戲再使用:艾爾之光。說實在,遊戲流暢度真是好到爆,

我滿欣賞那一款!不知道大陸的東遊記有沒有抄到這項XD。

有開始想著設計multi thread frame work,

無意看到關於multi core遊戲的xbox 360和PC的概念圖(註1),

讓我想起physX的API使用方式,我大概可以得知他們的玩法,

大概會往那方向前進。

thread是既好玩又很危險的技術,它可以讓你的世界更加美好XD。

公司的事情,也不想提了,主管知道我的blog,不想再被約談了。

簡單講:在那個環境之下,不管弄什麼技術,我永遠都是一個人。

註1:在DirectX的說明檔

2009年11月27日 星期五

新目標

由於公司內部一些事情,導致Steam Age Engine已經開發終止。

這件事情對我來滿傷的,花了一年半多的時間去改引擎。

之後,引擎都用同一種,而且開發引擎方面,全都交給新加坡。

只能說...想在台灣要研發引擎的人,愈來愈難了。

很多公司都會直接買引擎,將所有人物投入到game play。

看起來很簡單的邏輯,但是買了引擎之後,使用的人會百分百發威?!

最近再弄舊引擎的底層並且憂化效能,雖然架構爛到不行,但是為了出專案,

硬著頭皮也要去修改。我也試著評估將這舊引擎導入新技術,可行性很高,

要導入物理引擎也可以,但是被上司給打槍= =。

現在沒了研發引擎的工作項,一度自認熱血已經燒完想說要換工作。

但是前陣子看了日本對於console game的製作流程,讓我滿感興趣的XD

尤其是スクウェア・エニックス製作的ラスト レムナント的相關流程,

想說試著去實現看看。

所以開始看大量的日文的SDK,深造plugin的技術,

而且明年打算去考J.TEST,將荒廢好一段時間的日文開始重新鍛鍊。

3D電腦圖學方面,暫時擱住吧~

2009年10月17日 星期六

Rag Doll

這技術常常在國外看到,尤其是暗黑3也有在使用。

主要是讓美術少做一些功夫之外,一方面也減少記憶體的使用量,

而且整體表現也相當好,只是會比較操電腦的CPU。

這兩天為了趕進度,忙到凌晨3點多才睡,為了要搞這東西= =。

這東西看來比我想像中的還難弄點,

最主要的問題在於physical engine的globalPose matrix運用錯誤,

害我一直找哪裡算錯咧~明明就是這樣算的。

這技術,不只是demo而已,連製成管線已經弄好了,

因為一切的流程,自己都一手包辦也自己操作過。

之後,就教一下美術怎製作rag doll。

現在基本功夫已經弄好了,再來後面就是真正的重頭戲!

這部分要保密一下XD

人物系統方面,只能在做一個禮拜,因為基於上司的命令,

要去寫back loading部分。

雖然很有挑戰性,但是個人不太喜歡事情作一半。

個人找到一個很有興趣的rag doll demo

2009年10月6日 星期二

健康要顧好

今天跟美術討論次世代繪圖製作流程和新人物系統。

尤其已經掌握Ambient Occlusion map和Normal map製作流程,

所以在大量量產上是沒什麼多大問題,未來會陸續導入新的製作流程。

自己現在是physical和render這兩個方面跑來跑去,

說實在.....滿累的。

再加上自己的個性算是完美論的人,長期累積壓力下來,

終於得了輕狀的胃食道逆流。

醫生說:暫時先用藥物控制,大致上會沒問題。

去年是因為script render pipeline而看精神科,這次是看消化內科。

希望明年不要在搞出什麼科了(笑)。

期望所有拼命的遊戲工程師,好好照顧自己的健康。

PS:三大神器當中,剩下HDR。

2009年9月14日 星期一

終於等到了....

前幾個月正擔心AGE Engine無法用在正式專案上。

現在已經確定要用在正式專案上,讓我感到興奮!

進遊戲業快兩年了,終於要去寫屬於自己的專案。

之前的專案,幾乎都是擦前人的屁屁,擦的很不高興,

那些前人都跑去寫手機遊戲。

一年前,終於不用擦屁屁了。開始學3D圖學一陣子,

然後修改新加坡那邊人寫的engine,

當然整個Level就是不一樣,畢竟那邊有神級工程師在主導。

這一年的經過,修改許多東西,大部分都是render engine。

直到最近一個月之內,本來再弄物理引擎的東西,

不小心接觸美術的領域,然後自己就身兼Technical Artist(TA)的工作XD。

這期間看了許多資料,去補足關於美術領域相關知識。

發覺到,我們的產製流程相當不人性化,讓美術花上大量的功夫。

今天就跟課長提出次世代遊戲的產製流程,

然後一直聽到課長的驚訝聲(其實我前天就已經驚訝過了XD)。

也很清楚老外遊戲對於畫面上跟我們哪裡差別在哪裡。

以前在想說:常用的lighting運算也那幾種,為什麼差別這麼大呢?

然後試著導入強大技術,也無法解決我心中的答案,直到接觸到TA的領域。

未來把Art Pipeline的技術大大提升,讓美術有很大的創意空間,

也增加量產速度,品質也跟著提升。

不過現在先把全新的人物系統給弄好,這可是這次專案的主要技術之一,

也是人物系統的重大突破,跟一般傳統的紙娃娃說掰掰。

它的強大,可以讓美術自己創造他們想要的「外觀」。

跟一般的「變身系統」和大量的骨骼動畫不一樣,

是個不會操死美術的系統,而且又相當不一樣的全新紙娃娃系統。

總之,還有一個月多時間去補足剩下的想要做的東西。

gameplay framework,是一位很厲害的澳門生在弄的,

所以我沒在擔心,他也很受課長寵愛XD。

不在yahoo上班,來這做遊戲,這種人滿少的。

2009年8月31日 星期一

跟老朋友交談

昨天星期日,跟高中的老朋友在小萱萱店裡聊聊天。

太久沒跟他聊天了,大概有相隔4~5年吧。

因為他才剛台大研究所畢業,所以才抽一天的時間回來看我,

他隔天又要回台北的學校處理一些事情。

在我所認識的朋友裡,是第二位高名氣的學校,

第一位的話,就是大學同學,他現在在台大讀博士班,在網路上頗有名氣,

連我們製作人都有注意此人XD。

回到主題,

那天談的內容,有愛情、工作、創業,還有其他人的近況。

當他提到創業時,滿讓我驚訝的!

我所認識的所有朋友,沒人敢提想創業,很多要嘛就是考公家居多。

讓我感到驚訝的是他的家境和個性上,

我一直以為他是屬於忠厚老實型所會過的人生,真是小看他了XD

當然我也提一些關於創業的意見。這條路是很驚險的。

也希望他能夠慢慢實現自己的夢想:大型全自動管理的精緻農業工廠。

跟他聊了有快5個小時,只有這個話題滿讓我驚訝的XD。

PS:這次不聊工作,下次在聊關於物理引擎的最新突破進展吧~

2009年8月6日 星期四

一些改變

最近把render engine弄到一個境界了,對於online game來說,

差不多已經是極致了,再搞下去只能做console game了XD。

剩下來就是跟美術去磨和,但是也要等到專案啟動才行。

在這之前,接受上司的命令去搞物理引擎,我當然很爽快的接下來。

這塊也是往後online game的主流,而且又有挑戰性,

趁現在年輕有體力和腦力時,盡量去搞,

以後老了,就用嘴砲寫程式XD。

規劃上,已經大致上是沒問題,比較擔心的是cloth和hair部分。

第一階段不會做到全場場景的物理運算,不過那也是最後階段。

以這款在E3 2009受到注目的遊戲為例:UNCHARTED2

其實物理引擎,並不只是增加遊戲性,還有視覺上也是。

現在只剩下我在「全力」搞新技術,其他人都有雜事在身上,

不能讓他們給失望,因為自己就是沒雜事才能作我喜歡的事情:研發。

2009年7月20日 星期一

追上今世代繪圖技術

去年,也就是2008的

3D遊戲中,以HDR、動態影子、NormalMap,為三大神器。

而新世代的技術,

也就是PS3和Xbox360常用的技術:GI(Global Illumination)

也就是我今年的最後目標。

以「ソニック ワールドアドベンチャー」(簡稱ソニックWA)的遊戲中,

大量使用GI技術、「放射輝度ボリューム 」(Irradiance Volume)兩種。

這兩種技術,讓我滿驚訝!

因為除了逼真之外,也可以讓美術減少許多功夫。

不過這要研究的話,要花大量的時間,

因為要從底層到工具層開始打造,而且這當中有許多的技術去組合而成。

只能慢慢來(笑)

2009年7月12日 星期日

PSSM(Parallel-Split Shadow Maps)

今天總算把PSSM完成了差不多了,

用了512*512的大小,就可以做出很高品質的全場景影子。

在製作的過程,遇到不少問題,

不過也因此而對shadow map有相當的認知,

以前遇到這個都會刻意避開,這演算法算是我第一次作shdow map的經驗。

現在render engine已經全面支援動態「光影」了,我想上司一定很高興XD。

接下來還剩下一個問題,就是在某一光源向量時,

shadow map會全跑掉不見。


以下是我在看的資料,有興趣者可以去看:

Parallel-Split Shadow Maps on Programmable GPUs

Parallel-Split Shadow Maps


PS:未來有時間的話,會嘗試導入VSM,也就是PSSM + VSM

//////////2009 / 7 / 20

已經把「shadow map會全跑掉不見」的bug修正完畢了,

果然是projection matrix那邊的問題。

至於效能上,大致上會跟nvidia文件所說的,receive方面,只有terrain。

要做到receive object的話,效能上要多多考量,並不是作不到。

現在engine上,已經有靜態光影和動態光影,只要這兩種相互輔助,

在場景設計上,會有相當大的彈性。

比如:非副本的場景,只有靜態光影;反之,副本就是全方面動態光影。

2009年6月26日 星期五

重大巨變

因為公司最上層的命令,導致次世代引擎要暫時終止開發,

而將主力人才放在重要的專案上。(唉~說起來很複雜)

個人估計最快大概要一年之後,最晚是明年年底才能繼續開發。

我們依造scrum的敏捷開發流程中,跑了8次sprint,

如果繼續跑下去是可以達到我們目標了,唉~可惜。

看著大陸的技術崛起,以劍俠3 OL和天驕3為例,

開始不禁擔心起台灣的水準了。

等到他們的render engine已經達到定位了,就會開始往其他方向發展了,

我們連第一步還沒踏出去,何來的下一步。

個人這幾天都在思考,自己必須要為更遠的目標而踏下第一步。

2009年6月10日 星期三

Memory leak!

這幾天我的同事(JC)遇到關於記憶體的bug,

我就推薦給他這個工具去找找:Memory Validator。

這工具滿神的,可以找出哪一個物件沒有被釋放完整之外,

還可以紀錄到那一個物件總共幾個尚未被釋放。

還可以看到source code!it's good

可惜我只能拿30天去玩Orz。

工具終於快出第一版了!

事隔兩個月多,第一個版本的工具要釋出了!

這是我的處女作,因為這是我第一次作工具XD。

此工具是給美術人員去使用的。

除了作一些compress texture之外,還想要作debug的功能。

就是檢查uv coordinate,還有檢查texture的size要多大才是「正確」。

不過要作debug的功能的話,必須要修改render的元件,

當然shader code也是要寫。

恩...只能慢慢來,這工具短期不需要功能完整,最基本的compress是必須的。

看看六月底能作多少算多少。

2009年4月8日 星期三

好忙呀~

近一個月沒更新文章了。

最近有在忙修正舊引擎的效能,還有新增一些功能。

效能上有提升到三倍,新增功能方面是自己挖洞下去的XD。

其實花大部分時間在於看一堆compression文件。

texture在遊戲上是扮演很重要的角色,也是美術的功力展現之一。

我想很多遊戲都將texture作compress動作。

所以身為圖學工程師,要幫他們作把關,

盡量將原圖或近似原圖展現在玩家眼中之外,

又為每種硬體設備做出很棒的調整,

尤其是大量使用normalmap的texture。

這次的backlog的質量相當重,有太多的東西要去研究。

希望這backlog能夠在五月底能夠產生出來。

2009年3月15日 星期日

about the Graphics Memory

為了掌控texture的品質,最近再看關於Graphics Memory的相關資料。

並且去瞭解內部的運作是怎樣的。

BIOS中可以去調整AGP Aperture size,一般玩家覺得調那個可以

加快遊戲執行的速度,其實調那個是並不會增加遊戲速度,

有興趣者請看這份資料:What is AGP Aperture size

而且在DirectX SDK中,有個Video Memory的sample,

可以教我們如何show出關於video memory的資訊。

除此之外,Window Vista對於Graphics Memory的管理又是另一套方式,

名叫:Windows Vista Display Driver Model(WDDM)

他的相關資料在這:Graphics Memory Reporting through WDDM

最後,

如何去檢查剩餘的Graphics Memory?

可以用RivaTuner和Video Memory Watcher。

以上!

2009年3月5日 星期四

關於dynamic lighting

前幾天看到C9的宣傳影片,發覺到dynamic lighting有明顯進步。

第一次公布宣傳影片時,只有人物和怪物有dynamic lighting。

最新的宣傳影片,多加上Terrain的dynamic lighting運算,但是草則沒有。

草為什麼沒有?這我能瞭解此原因。要作出來是可以,只是效率上的關係。

我這幾天在看一些資料,關於dynamic lighting的作法有幾種:

1.Single Pass PerLight
2.Multiple Lights PerPass
3.deferred shading

第一點的優點是彈性很大,可以隨意去加你想要的light type。

但是效率會不太好,因為batch會提升的關係。

第二個跟第一點是相反的關係。

第三個我就不談了,光是Geometry Buffer就讓人吃不消了。

第一點在製作console game的話,可以拿去實作,

但是在online game的話,我會去用第二點。

其實在C9的dynamic lighting只有Point light而已(影片中),

至於每個geometry能吃多少個光,這我就不清楚了,

能確定的是online game是不能處理太多光源的,原因在於效能。

現在還沒完成,要等到下禮拜一才開始動工,

不過大致上看了一下之後,要實作出來是沒什麼問題,

而且關於玩家的顯卡上的運算方式和光源數量的調整動作,

也是沒有多大的問題。


//////////// 09/03/11 ////////////////


花了兩個工作天,已經把dynamic lighting給完成了,

每個geometry可以吃5個燈光(per-pixel in shader 2.0),

加上direction light就有六個燈光,至於比較遠的話,會弄成per-vertex。

基於效能的關係,花草不會納入運算,不過樹木會納入。

其實最後會加上bloom效果,會讓人看起來花草有納入運算。

課長講說:試看看能不能吃更多的光。

我想說...就算可以吃很多,但是還沒測過整體效能,

所以吃太多也未必好事。

而且這東西會跟C9一樣,會跟特效放在一起。

2009年3月1日 星期日

智冠春酒晚宴

真是難忘的一個晚上。

昨晚是公司的春酒晚宴,當天有六組團體在表演,

競爭相當激烈!在滿分只有50分之下,

每個團體的分數只有48、49、 50分三種,而我們這組拿下第一名!

而且我們又是第一組表演,所以我們對每一組的表演相當緊張,

因為他們表演的內容也相當好。

而我們主要表演內容是男性的「應援團」,還有女性的「啦啦隊」。

團長(最右邊)和組員:


這兩個是團長:



我後面有小腰包,所以屁股有點翹XD



PanPan(團長)超high低:



大團照:中間那位也是程式課的組員



抓到外星人XD:



我們的星光大道入場:




第一場個人演唱的準備:中間是我們的主角!




我們在一開始的個人歌唱表演時,就當同組的舞伴,

所以那時候已經打下團體第一名的根基!

我在當舞伴時,緊張到在跳舞過程中,腳差一點抽筋XD。

那位歌手當然很快就拿到10個燈,也就是滿燈。

跳完之後,還有人找我們去拍照,真是讓我嚇一跳XD。

重點來到團體表演時刻,沒想到團長一開始站的位置錯誤,

還加上搶拍@@! 還好這都不影響成績,而且可能還會有加分動作,

因為那位團長相當有Fu XD。

我們跳的過程比練習更加有魄力!整個應援團的氣勢有帶出來。

在最後,兩位團長的合體技出了點差錯,不過這都是加分動作XD。

因為我們只是春酒表演,不是比賽表演,只要氣氛帶出來就行了。

在最後的頒獎典禮,我以為是王總會上台頒獎,

沒想到是高雄縣縣長楊秋興@@,我超high低!



但是如果是高雄市市長的話,那更好!

因為我們團長跟市長是一樣的髮型XD

在抽獎方面,我們六位應援團當中有四位抽到獎品,

分別有PSP、ipod、五千塊禮券、股票。我就是抽到股票的人!

當時我超high的XD

我們應援團共六人,其中五人是程式開發課,一人是動畫媒體部,

我們團隊不像一般程式人員很害羞的阿宅,我們是很「悶燒」的阿宅。

最後!自樂應援堂!加油加油加油~

PS:其他照片會放在我的無名上。

2009年2月27日 星期五

對SSAO的優化方式和一些感嘆

因為一些原因,所以scene manage暫時不能去動,

其實這一塊還有進步空間。

現在只能以我的部分去試著作一些最佳化。

今天把水底下的任何物件不去作SSAO的運算,

這樣做有好處是:

1.減少pixel的大量運算。
2.在視覺上有正確性的幫助。

第一點的意思比較直覺,因為能夠減少SSAO的運算當然是最好的,

這也是當初用1/2的frame buffer的原因。

第二點要說明一下了,我看過很多的SSAO demo,

就是少了水底下的物件要怎去呈現!

唯一在unreal 3 的demo中,就有看到了。

它還是水底下中有運算到SSAO,但是這作的話,反射的效果會很不明顯。

而且如果沒有反射和折射的效果的話,只是單純的noraml map去抖動,

那水面下會看到SSAO運算到的物件,簡單說:可能會看到黑邊。

所以第二點就是把水底下的物件不去運算SSAO。

其實當我在優化時候,突然想到還有一種優化方式,

不過現在還在實作中,可行性滿高的。

以上的優化方式只是針對GPU的瓶頸去處理的,

CPU的瓶頸還是要去修改scene manage的演算法。

最後,個人一些感嘆:

我看過一些台灣人作出一些高技術的demo,

但是在產品往往看不到此技術。

其實我覺得作出來demo跟商品化還是有一段距離,

尤其是高技術層面的,因為除了還要跟美術去磨合之外,

還有一些問題要去處理,尤其是效能上的。

就好像做出SSAO,但是放上去只剩下幾張fps在動,

我想這根本無法商品化。還有,就是玩家的顯示卡!

這點是很頭痛的,一個game engine,為了考量大量市場,

所以把技術層面降低再降低(聽說仙X Online是這樣?!)。

再掌握高技術同時,也要考慮到底下的人,

如果底下的人想要看此遊戲的完整畫面,只能乖乖去升級,

順便幫Nvidia和AMD賺錢XD。

不過要切記的是,技術愈來愈高並不是單純看高質量的遊戲畫面

它背面還有針對效能上的提升,所以才有高質量的遊戲畫面誕生。

不講GPU和CPU,光是DX9和DX10之間,我就覺得差滿多的。

所以再過幾年,國人還是在遊走DX9的fixed pipeline的同時,

別人早在DX10或DX11的平台下開發了。

2009年2月20日 星期五

我討厭fixed pipeline

這一個禮拜都在搞fixed pipeline。

發現到他的texture blend的operation好少呀~~

雖然lighting方面都是平行光,不過關於light map的混色很麻煩。

如果只是單純混色就好了,也不會花一天的時間去搞。

還有利用fixed pipeline去寫一個project texture,

以上這些動作都是在Effect中。

這一切的一切都是要支援低階卡的關係,

我們的規格會跟WOW一樣,從GeForce 2 MX400開始,

那張卡是支援DX7的,也就是....9年前的顯示卡,

簡單說就是從hardware T&L 一直到 shader model 3.0都有支援到,

不過我們的shader model是從2.0開始,

我們不打算寫shader model 1.0,那種的顯卡是DX8的,

所以還是會用fixed pipeline的方式去作成像的動作。

///////// 09/2/25 ///////////

今天終於拿到ATI Radeon 7000的顯示卡(另稱貧卡或DX7.0卡)。

主要是拿來測試一下我寫的fixed material,

結果發現到!它可以支援用軟體去模擬vertex shader 1.0,

速度上雖然跟一般的fixed pipeline有一點差別,

不過我們的目的不再專攻DX7.0,而是DX8.0的市場,

如果是這樣的話,那我根本不需要有多大的變動,

但是terrain還是有一點頭痛。這等以後再講吧~

在這幾個月還是專注於架構上,沒什麼時間去寫高階的shader。

2009年2月11日 星期三

優化pre-pass和post-pass

昨天把real-time sadow整合完畢之後,試著把SSAO加進去。

在繪製大量物件時(註),發現frame降滿多的,

因為以我的神卡是不可能運算過慢,

所以瓶頸還是出在於CPU上。

其實義大利人對於RenderState Change的優化早就有作了,

讓我剩下的優化方式很簡單:就是所有的物件都是instancing。

作用是大大降低DrawXXXX的driver work,

將顯示卡的威能給顯示出來。

這點在DX10作得很好!所以當初為什麼想丟棄DX9的原因。

在這時間點真的要作一下優化了,因為後面還有其他效果要作,

如:SSAO、PSSM、DOF、dynamic lighting、HDR、motion blur。

這是最基本的,後續要作God Rays...等之類,可以讓玩家自由去選擇。

/////// 09/2/16 ///////////////

終於尋找到效能上的問題!

原來是BOOST_FOREACH的使用方式錯誤Orz。

會導致有7000個物件,白白去作拷貝的動作,

其實我的原意並不是這樣。

以下是修正後:


環境:
雙核心 3.01ghz GPU:ATI 4870
解析度:1440 * 900

ssao off

物件總量 = 7400
polygons =308357
drawcall = 733 (包含instance drawcall 的數量)
instance drawcall =527
fps 30

////////////////////////////

ssao on

物件總量 = 7400
polygons = 681737
drawcall = 1281(包含instance drawcall 的數量)
instance drawcall = 995
fps 20



再來是測試少量的instance object

ssao off

物件總量 = 2837
非instance物件總量 = 1736
instance物件總量 = 1101
polygons = 591182
drawcall = 2056(包含instance drawcall 的數量)
instance drawcall = 197
fps 30

////////////////////////////////////

ssao on

物件總量 = 2837
非instance物件總量 = 1736
instance物件總量 = 1101
polygons = 1076542
drawcall = 2552
instance drawcall = 573
fps 25

//////////////////////////////

註:

在雙核心2.66ghz,nvidia 98000GTX+環境下,

假設同一種mesh和單一diffuse color,

繪製16000個geometry,Polys共有545278,開啟instancing之後,

共呼叫23次的draw call,結果fps是120左右。


不開啟instancing時,會呼叫16023次的draw call,fps降到剩下7。



當然這是最佳狀況,主要是mesh的不同,還會格外增加draw call。

DX10可以突破這個缺點,所以要打國戰之類,是可以做到的,

會這樣講是因為看過ATI的最新DX10.1技術,

只要呼叫一次draw call XD。

2009年2月9日 星期一

real-time shadow整合完畢

由上一篇文章所提到,AGE engine的shadow是用PSSM的演算法,

並且整合到自己寫的script render pipeline。

今天總算給它完成了,因為這幾天雜事很多,

就是春酒的舞蹈的雜事,所以有些時間被佔去。

不過明天還要多測試一些,像是animation instance object和terrain。

下一個backlog就是dynamic lighting整合到自己寫的redner架構。

2009年2月8日 星期日

Screen Space Directional Occlusion (SSDO)

在作SSAO的期間,突然發現到有一個論文讓我感興趣的。

也是關於Dynamic Global Illumination的論文,

算是SSAO的進皆版名叫Screen Space Directional Occlusion 。

其實在我還沒看此文章時,就覺得SSAO所增加空間的立體感之外,

但是就是少納入關於direction lighting的計算。

(有實作過SSAO的人,會發覺到這是post-pass的處理)

在光源射入某一個geometry時,某部分因為是處於半亮的狀態,

但是那部分是處於凹槽的,所以經過SSAO所計算的是全暗的,

在視覺上是一個相當不合理,尤其在配上shadow map的運算之後。

那我也不多講,其實那篇論文我還在看XD。

有興趣者請到這:Tobias Ritschel

論文:Approximating Dynamic Global Illumination in Image Space

這次沒有domo影片,有時間再來作看看。

PS:看DX10過程,被此論文給吸引XD

2009年1月31日 星期六

一年之計在於春

春節9天假期即將結束,馬上又要上班了。

上班第一件事情不是處理工作事情,而是準備春酒跳舞。

因為我是舞蹈負責人兼音樂編輯者XD。

咳~回到主題,

今年的目標呀....除了工作上的backlog之外,

再來就是針對自己的能力有所提升,這樣才不會被淘汰掉。

所以還是一直想提升英文和日文能力,在閱讀文章方面是沒什麼問題,

只是在說的能力方面還是有問題(學語言最難的在於「說」)。

再來就是Direct3d 10了,為了要迎接Direct3d 11的來臨,

當然要好好接觸DX 10囉~

春節這幾天一直在看DX 10,發現到有些地方不太一樣,

光是拿掉fix pipeline這件事情,倒是滿不一樣的。

不知道台灣和大陸有多少間遊戲公司是以HLSL為主要架構的render engine,

因為fix pipeline已經被拿掉了,所以想跨到DX10必須要以此為主。

其他部分本人還在看,也還在等兩本原文書(不用錢,公司買低)。

等到摸熟DX10之後,想實作一下一些DirectX10所特有的範例,

在boost上,也希望能多多去閱讀。雖然在公司只有我在用Orz,

不過它對我的幫助滿大的,給我們工程師相當大的想像空間。

最後好好跟閃光培養感情XD。

跟她交往沒多久,所以今年請多多包涵呀~

HLSL的Text Editor

如果想在visual studio之下方便撰寫shader code的話,

除了keyword可以自行定義顏色之外,

還有其他好用的功能:自動跳出keyword(像C#)。

請到這網站下載: InteliShade

如果想要衍生出其他副檔名的話(*.fx 或*.hlsl ....等),

請到他的論壇:InteliShade forums

2009年1月22日 星期四

整合real-time shadow

最近render engine工作,是要把real-time shadow整合到

script render pipeline,也就是利用script去描述出來。

我們是採shadowmap的技術,不過詳細作法會有不一點,

有興趣者,可以去參考此資料:Parallel Split Shadow Map

將它script化的過程是沒什麼很大的困難點,

只是要多加一些機制,讓往後出現的需求更加的有彈性,

在real-time shadow的技術,我們大致上是不會更加的去鑽研。

最近也買了vista正版(隨機版),花了4千2 ....。

也體會到人人所講的不穩定。我玩crysis時,會常常當機,

在XP相當穩定,後來今早升級到SP1,結果不能上網...。

唉~下午就請個特休去把這問題搞好,不然我無心上班。

2009年1月14日 星期三

這幾天發生的事情...

這幾天跟因課長理念不同,而產生衝突。

也看清台灣的研發極限(賺最多錢的公司)。

課長的名句:只有好的產品才會賣錢,沒有好的技術會賣錢。

我不太百分百認同此句,沒有技術的支援,怎會有好產品呢?

不要說晶圓技術,造福許多新產品以及開闊新市場,

說說從以前的遊戲到現在,

我唯一所感想的是:此技術是否被市場所接受。

從任天堂到will,還有ps到ps3,技術每年都會提高,

但是市場的接受程度並不一定會跟著提高,也許會被淘汰,

也許只是時機未到。

所以技術提升的價值,來至於開闊未來市場的一個契機。

DVD光碟,從以前不被看好,結果現在呢?都已經再推藍光了。

說了這些,重點在於公司環境不想推高技術,

只想完全專注現有的市場。這對我們engine部門相當大的殺傷力,

我看直接買unreal3還比較快,別開發engine了,一切都以專案為主。

唉~現在只能羨慕韓國的遊戲產業,他們真的很有野心也敢衝,

不過他們背後有強大的財力XD。

我在公司也開始停止技術發展了,一切都配合專案。

其實這樣有好處:我的工作量減少許多XD。

我有很多時間慢慢磨,多餘的時間去看看其他東西,

慢慢給自己一個進修的空間。(好久沒看C++內功心法了)

或許以後會慢慢轉到game play那邊,

其實我滿想作WOW的命令巨集功能。

2009年1月12日 星期一

敗家一下

在公司1多年,今天剛好可以領滿一年的年終,

也領了不少錢,所以想敗一下家XD。

昨晚跟閃光一起買螢幕,結果是選22吋的,總共4990。

現在在家中跟公司一樣使用雙螢幕,

而且都是神卡階級,差別在於公司是ATI的卡,家中是Nvidia。

在過一陣子打算再買vista家用進階版5千左右,

可能還會再買更大的硬碟。

會買vista的原因,在於年底directX 11的問世,

所以會先摸一下directX 10.0和10.1。

先瞭解一下新的技術,然後未來要踏上directX 11時,

會比較順利點。公司部分,要等到專案差不多時候,

我才會有多餘的時間去裝商業版的vista。

到時候後... AGE Engine的Render Engine部分,

再由我再次打造起來,專屬於DirectX 11,

好讓玩家能夠發揮顯示卡的威能。

2009年1月7日 星期三

終於完成了....物件導向

剛放完元旦連續假期之後,整個人進入備戰一樣,開始趕shader物件導向。

今天終於給它趕完並且測試完畢,感覺上....滿順利似的XD

這機制的優點有:

1.有效提昇效率。(shader lod)
2.geometry綁的material相當有彈性。
3.管理顯示卡型號和廠商。
4.有彈性地支援特殊的技術。
5.post-pass和pre-pass更佳有彈性。


我就詳細說一下吧~

第一:

物件比較近的話,就執行比較優質的material;

物件離cmaera愈來愈遠時,

則會慢慢愈來愈劣質(fix material或是shader model 1.0)。

第二:

跟lod不一樣的是...他是一種特化方式。

雖然是特化,不過也還是有lod的表現。

如:開啟shadow,並且跟第一點一樣的特性(lod),

或則當人物碰到某一個物件時,馬上變成透明。

第三:

這點我想是每個遊戲公司很頭痛的事情,

尤其是負責Render Engine的engineerXD。

比如:要管理某張卡某個型號不能跑哪一種material,

或者某張卡某個型號跑此material時,要特別去「特化」。

所以很多遊戲廠商都直接定最低的顯示卡型號,

然後某某張卡不能跑此遊戲。(在console game常常看到)

但是在online game就不能這樣做了!

假如公司想開闊越南市場,如果去設定最低顯示卡為shader model 2.0,

保證會失去許多玩家,自然所賺的錢也會變少。

第四:

一個簡單例子:ATI的Tessellation技術。

(只有ATI的卡才能跑且需要ATI HD 2000以上的型號)

第五:

我負責的Render Engine,

他可以全支援所有關於post-process的shader。

(HDR或DOF還有SSAO....等)

但是有些物件特別奇怪(透明或alphatest),

除了可以完整的呈現出來之外,

還可以針對某些物件不需要納入post-process的運算,以提昇效率。

就這以上...。

這樣就結束了?

回頭看一下自己的backlog.....,恩...還早的很XD。

雖然以現有的機制,可以做出很可怕的東西,

不過課長是很貪心低(小聲說)

當然我也想趕快把架構給作大起來,趁現在還在開發中的時期,

等到專案啟動時,可能會很少去動架構了,必須要跟美術去磨合XD。

2009年1月4日 星期日

希望台灣的研發能量能上升

我會這樣說是基於課長的一些想法,且也讓我滿認同的。

事由是在於81 keys的正式公測。

這款遊戲我有玩第一次封測,感覺上滿不錯的遊戲,

有些設定滿值得參考與學習。

重點在於:希望上層能重視研發單位。

程式有分兩大種:engine和game play。

網龍是買Unreal2引擎,所以他們工程師可以專心於遊戲製作。

我們公司是由新加坡老外所開發的Typhoon引擎(google找不到低)

是跟81 kyes一樣,是從無到有去打造的,

不過不同的是我們是藉由老外之手,另一個是完全由國人去打造。

不管怎樣,其實我們由衷希望81 keys能成功XD,

雖然是敵對的公司,不過台灣遊戲產業很小,

所以對我來說只是良性競爭。

自己心中也希望台灣的研發能量能夠慢慢提升上去。

買別人的引擎,

有個致命缺點:無法即時去磨合online game市場需求。

而自行研發的話,就可以隨時去磨合。

比如:在Render Engine支援DirectX 10或10.1。

支援ATI或Nvidia的某種技術。

簡單說就是:高技術和高靈活。

高技術不完全等於顯示卡的配備要很好,

而是讓顯示卡充分發揮威力。

可惜DirectX10.0或10.1在歐洲推的很順,

我覺得關鍵點在於綁在Vista,不然我真的很想丟棄DirectX 9.0。

所以我只能期待DirectX 11。

回到主題....,

現在最怕一種現象,上層只專注「賺錢」,

只要能賺錢,我不管過程怎樣。

如果買Engine能夠比較快賺錢(大量出產遊戲的方式),

那麼上層會認為不需要開發Engine的需要。

那這樣....我可能會往國外跑XD。

台灣人才往外跑,因為不受到重視Orz。

所以課長最後提出:技術固然重要,但是遊戲製作也要考量。

雖然我對遊戲製作沒什麼感興趣(就交給企劃和game play人員),

不過能夠將此「技術」大量運用在市場上,才是我接下來的考驗。

所以才有shader物件導向的機制產生。

墾丁三日遊(第二、三天)

第二天起來,大概已經9點多了,準備一下出門。

首先到我們民宿對面的船帆石逛逛,

發覺到...船帆石不能夠游泳戲水,因為浪打上海灘會有小石頭。

所以那邊只能玩沙灘車,或採採海灘。

我跟閃光想挑戰「摸船帆石」的舉動,

結果...因為中間有個大溝,所以...最多只到達這邊。







































之後,開始騎車往北行動,沿途有看到墾丁大街、南灣,

還有夏都(海角七號)。

我們到達恆春的地方去吃吃有名的小杜包子。

為了吃著包子,等了快一個小時,還好有NDS加持XD。

小杜包子有個特色:包子出爐時,會唱歌並且噴出氣泡。

包子的話....,閃光覺得起士包子比較好吃,其他滿一般的。

吃完中餐之後,順路到南灣看看,有看到幾位老外在那邊。

那邊的海灘真的是可以戲水遊玩,海灘上也沒有小石頭。






























下午就在民宿休息一下,晚上就出去夜遊,目標是龍盤!

結果當天風過大且下雨,又一片漆黑...,連我騎車都很不安@@。

因為龍盤那邊很寬廣,沒有什麼樹有遮掩,而且也沒路燈。

所以...打消夜遊的念頭,直接到墾丁夜市去吃晚餐,

也順便買個名產回家孝敬父母。

最後...回到民宿休息XD

第三天,就是回高雄的時間了。

這次旅遊,雖然沒逛許多景點,但是重點是在於身邊的人,地方是其次。

不過玩的也滿高興的,那個龍盤....真是可怕,必須要有四輪才能過去。

墾丁三日遊(第一天)

跨年的第一天,就跟閃光一起到高雄火車站坐高雄客運,

準備出發到墾丁。上車前,先吃一下暈車藥。

本來預定上車後要玩NDS,結果...暈車(想兔)XD。

到了墾丁之後,發現到離船帆石還有一段距離,且附近沒有租車。

最後跟閃光走了快3公里的路Orz,路途中看著別人騎摩托車和四輪車,

對閃光說:抱歉~讓妳陪我吃苦。

閃光:沒關係呀~只要以後對我好就行了。

讓我很感動> /// <

終於...看到一顆大大的石頭, 那顆就是傳說中的船帆石。

也找到「金華海岸」的民宿,看出去就是海。




休息一陣子之後,馬上跟老闆娘租摩托車,

然後往南邊去前進....。

首先看到鵝鑾鼻的燈塔,可惜我找不道路進去QQ

最後找到最南點的石盃(我沒有到此一尿喔XD)



然後就去尋找看星星的龍磐,結果風太大了,而且也在飄雨,

所以就打消念頭。

往回騎之後,也下午五點多了,晚餐就到smokey joe's去吃,

沒想到墾丁也有呀...(高雄也有一家)

吃完之後,騎車逛一下墾丁夜市,然後直接回到民宿休息。

第一天晚上本來想夜遊的,但是太冷又太累,所以留到隔天...。