2010/07/02

這輩子最充實的暑假


很高興此刻還能活著上來寫點東西= =,已經上工快兩個月了.........這段日子.........應該是我這輩子到目前為止過的最緊湊的歲月. 上半場結束,現在中場休息,距離下半場開打大約有三天的時間,可以把思緒回憶稍微整理一下,下一次再寫文可能就是八月中了吧= =

照片與內文風馬牛不相關 5/8 As I Lay Dying的現場
第一個禮拜,基本上就是David跟Bo把任務交接給我跟研通,這兩位現在一位在微軟實習,另一位要去stanford念碩士了.那段時間還有SCS帳號,沒辦法使用CGlab的電腦, 每天兩個人就龜在CS的電腦教室裡做事, light field算是image base rendering的一種, 基本概念很簡單, 簡單到有點弱智.........給你兩個角度的影像,你如何生出中間某角度的影像?答案: 內插.................我靠!第一次看到paper整個傻住........ 還stanford發出來的paper咧.............老闆的想法也很蠻橫:老子就是vram多不用錢!只要有一百個人需要同時使用這玩意, 這東西成本就形同百分之一,賺!
Mosh!!!!!!!!
於是乎,一張顯卡上塞滿了各個角度的模型圖像, 隨要隨找, 就算你是八十萬面的模型, 我也給你瞬間生出來! Bo幫我們ren圖,研通跟我就在用glsl把這個演算法試圖implement出來. 兩天後看著樹在一個狹窄的三角視野中轉動時, 一百多張圖片真的產生出有視差效果的3d畫面!我倆那一刻是又興奮又有點不可思議:"真的才給我們兩天就把他給implement出來了?" David那邊則是嘗試另外一種作法: Volume Billboard.這作法就文明多了,簡單來說就是生出一分3D貼圖,像切蛋糕一樣隨要隨切,四個人跟老闆在週四meeting時,因為David即將啟程,我來接手這作法的最後一道動作:使用geometry shader在GPU完成切蛋糕的手續,研通則是使用icosahedron的均勻分佈性質佈署ren位置,下一週決定要使用哪個方法作為render的基底,老闆此時語出驚人:"geometry shader, 一天學一天implement應該相當充裕. Icosahedron, 50行扣就解決了吧?" 老闆.........你是認真的嗎...................
樂手表現中規中矩 觀眾捧場度100分
開工第一個禮拜的週末就開始加班了..................禮拜天在延通的幫助下總算搞清楚geometry shader的語法( 不是用法..........三個小時卡在少加一個_EXT, compiler大哥你又不跟我報錯是存心跟我尋開心嗎? )禮拜一老闆一進教室馬上問:"明天要結果,OK嗎?"= =只能說人類潛能無限,第二天中午真的在咪挺前十五分鐘把結果生了出來, 只是效果不如預期, 老闆已經打算把注押給lightfield了, 儘管在Eric緩頰下爭取了一天來作geometry shader優化, 最後我們還是使用了lightfield這個超暴力的演算法作為project的基底."禮拜五之前, 我希望看到Icosahedron成功run起來!" T_T從第二周開始,下班時間自動下修為晚上十點, 每天出去吃晚飯時, 有被害妄想症的芭崎總是在幻想要是今天沒把東西做出來會遭到甚麼樣殘忍的毒手(抖).禮拜五早上報進度時,兩個人皮皮挫的跟老闆說還在找辦法把unsigned int餵進GPU的方法,整個房間氣氛冷得像冰一樣..........老闆一直打字.寄信.打字.寄信.半晌後才抬頭說:"我不明白,你們為什麼會被這種東西給卡住?我的意思是........有這麼難嗎?usample應該就可以做到你要的效果啊"(事後網路搜索結果只有兩筆這東西,而且只有提到名字,怎麼用到最後全都是用猜的.............)禮拜五晚上, 看到結果成功(事後才發現這個成功只是個假象.........)的在螢幕上出現時, 兩個人真的是興奮到有點語無倫次了(教室裡的人都在青我們= =)
基督教乖小孩metalcore聯演
第三周老大去渡假, 兩個人跟Eric大致討論了一下program的架構後, 開始分頭進行更進一步的工作. 研通去把light field擴展到360度, 我去寫server/client/封包框架...........打從大三上修完計網後再也不知web programming為何物, 現在要我寫出AAA級的堅固server= =,還要先將interface給大家過目討論再實作.........曾經在火狐待過,CG首席助教,CMU電玩研究協會高幹,大四才剛畢業的Eric所展現出的霸氣,整個要把我給轟飛出去:"啊啊啊............這才是..........CMUCS本系生的真正實力啊...........好強大的氣勢!!!!!!!!"他的扣結構清晰,條理分明,trace起來很舒服,環繞在那縝密的framework下,會讓人覺得:"這扣真的像工藝品一樣啊!"可惜的是他暑假也在西雅圖實習,很多時候,我卡在各種詭異的bug時,想不出封包要怎麼拆時,都在想:"Eric若在旁邊鐵定笑翻,居然卡在這種腦殘的地方"
ETC學生自辦郊遊falling water
"啊!如果你覺得不大會拆,又願意等的話。我這方面的經驗算蠻充足的,周末給我半小時,我可以把它寫完給你"芭某人再厚顏無恥,自尊也還是有的,讓人花錢雇的傭兵居然還要請遠在西岸實習的學生無薪抽空幫忙,不!整天在google上東翻西找,一點點試,一點點拆,camera, stream header, pixels,工作站跟本機互連,明滅起伏的紅色棋盤,終於.........看到了兩個畫面同進同退,雖然只有5FPS,但請讓我這個腦袋只有花生大小的打字員興奮個五秒鐘...........研通那邊因為浮點運算精度及vram上限的問題陷在一個爬不出來的泥淖中, 貝式三角,sphere intersection test, index number的各種交叉比對,螢幕上浮現著鮮黃,鮮紅,宛似精神病患的五彩內插...........在旁邊都忍不住頭暈目眩起來,一開始完全沒有頭緒的GPU壓縮,一周要生出來,每天晚上走出lab時,兩個人都像瘋子一樣的囈語:"完蛋了完蛋了.........要被fire了要被fire了..........老闆會殺了我老闆會殺了我....................."
吃麵吃得很開心的小溪跟Hugo
"為什麼那樹看起來像陀爛泥巴一樣?" "呃.......這螢幕本來就比較暗........上次因為alpha blending出了點問題,現在用手動算看起來有好一點.........." "I don't care! It makes no difference to me. It must be much much much better than this!!!!!!" Nvidia七月一號的參訪,將是這場激戰的分水嶺."我們到時要展示給他們的,絕不能是這樣的東西,我希望要呈現的是,陽光從樹葉中透出來!地板上斑駁的光影!任意的加減移動樹木" "等到日後人們提起你們兩位,只有陣陣的嘖嘖讚嘆!你們要以此自栩!" "要呈現的東西,只有完美( nothing less than perfect )!" 我這輩子,大概第一次被逼到這麼緊的地步.............object analyzer, compositor, image clipping............幾乎是以一天一feature的速度往上面添.............這時真的覺得:跟這份工作比,要在CG拿個A,跟吃飯差不多輕鬆..........."頻寬是瓶頸,那就壓縮啊!" DXT5, huffman tree, quantization,有損的.........無損的.........全部都給他丟下去啦! "CPU不夠快,那就搬到GPU上面啊!" 要是在ETC,我可能就兩手一攤白眼一翻:"說的這麼簡單,你來做啊" 但眼前的老闆是真的高手高手高高手,他是真的覺得很簡單...............給他做他是真的做得出來.............註解裡面的TODO, HACK一層一層的堆,舊東西都還不確定有沒有問題便一直加新的東西進去,此刻真的有萬丈深涯走高蹺的感覺..............
趁還能笑的時候趕快笑吧..........
一直到demo前一個禮拜,還是那團黑忽忽的樹,FPS的滑鼠操控模式,破破的草皮地板,禮拜四咪挺完又被老闆刮了一頓:"this stuff starts to embarrass me now, we can't show this kind of things to Nvidia!" 真的不是不認真不用心,冤枉難招啊~~~~兩個人都不是美術出身的,MAYA, mental ray都不是我們的本科專長,我們真的不知道要怎麼ren出比較漂亮的樹啊~~~~vram就是1G,新裝備還沒到前256X256X2xxx這樣真的已經是極限啦!!你怎麼能要求256X256撐到1024X1024還能看到"一片一片葉子",這是逆天而行啊!!!!!!!!!!!!!!!!!
project開始第一個月大概就是這副德性............
老天大概是覺得玩我們玩夠了,在我們兩個又再抱著頭呢呢喃喃時(整個CGlab大概都很困惑:那兩個中國仔每天在那邊用堆聽不懂的咒語念咒幹嘛= =),熱心的MAYA好手Ben出現幫我們對這棵樹進行大改造。raytracing, HDR, color bleeding, ambient occlusion, subsurface scattering...........Ben本身對程式沒有任何研究,他用的是"感覺"跟"經驗"!看著他對MAYA這些render選項熟練的操作,儘管早就知道MAYA是model神兵,此刻心中仍是會發出一陣陣尖叫:"這個MAYA也有!這不是之前Siggraph那篇!原來已經implement到商業軟體裡面了!!" 老闆看到新ren出來的樹,興奮的對我們兩個說:"看到沒!這才是樹啊!" 之前我是不敢小看artist,現在我是對artist抱著崇高的敬意。ETC一直宣揚的科學與藝術的互補,真的要我被逼到生死關頭時才能體會...............

周五AO map生出來卻因為alpha值的關係blend不起來,兩個人又是嘎嘎阿阿不停,這時是背後的女孩子伸出援手:"我看看可不可以用photoshop弄弄,你們快要demo了吧?辛苦辛苦"聖母瑪莉亞~~~觀世音菩薩啊~~~~CGlab平時大家各忙各的project,整個實驗室一整天聽不見幾句閒聊,這時大家的雪中送炭,只能說人間還是有溫暖的啊T_T。周六早上起來又收到老闆的追魂信...........說他有點擔心demo的進展..........Wayne!影子咧!影子咧!影子咧!= =|||下午用了各種blending參數,該死的影子就是不給我乖乖的blend進地板上。急中生智請研通把整張圖反白過來,新ren的樹,換過的地板,嬰兒藍的背景,重新佈署的位置,盤旋式的camera,影子.........上去了!就好像魔法一樣,齊了!整個畫面瞬間level up!!!! 35FPS!!!週日老闆一進來,興奮的大喊:"You guys did it! it's so beautiful! Mo!! You got to see this!! This is the future of video game!!!" 連續數週的緊繃,總算在這一刻稍稍舒緩下來,兩個人都是常吁一口氣= =
脫胎換骨之絕地大反攻!
之後,老闆又更興奮得提出各種加速的方法: pipeline, thread pool, vector field streaming甚至是各種近乎邪魔歪道的image access. "or there is a even better one!"每次聽到老闆又有新主意,就是一個哆嗦:"這個........做得出來嗎........= =" "可以給我點時間先把那像亂草的扣先清理清理嗎........" 值得寬慰的是,老闆終於說出了:"We are ready for the demo!"

Nvidia的訪客Jonathan Cohen,是奧斯卡08最佳特效獎的得主,蜘蛛人三的砂人特效就是他的手筆,之前在Nvidia官網上的鬼樣流體模擬,也是他的傑作。這樣恐怖的角色來襲,老闆點頭說OK,我還是整天都在幻想當天demo橫死當堂,回頭被老闆剝皮的血腥劇情= =,所幸當天demo在一片安祥和諧的狀況完成。大師鷹眼一看馬上將我們的作法摸透透,口頭嘉勉稱許,並表示有認識的人從事類似研究,以及願意提供一些裝備上的幫忙,當天他本人在CMU的演講結束後,我們兩隻小實習生跟老闆客人一同到了Craig的Luca進餐,燈光美氣氛佳,賓主盡歡,下午四點客人離開,警報解除,老闆龍心大悅,說這周末我們可以休息一下,刺激的上半場終於在這邊告了個段落..........


Jonathan老大驚世駭俗的流體模擬........有神快拜!!!!!!!!!

大概進程是這樣,很多細項記不清了,還是要重申一次,我這輩子從來沒被逼到這麼緊過!!!!!我要感謝我的好隊友研通,他真的比我老練很多,程式架構,技巧都也比我成熟很多。這段時間如果沒有這麼可靠的隊友,我應該會急到哭出來吧..........兩個人一天到晚龜在CGlab (Mo:這兩個每天從早到晚都在這裡 鬍子哥:是啊!好恐怖(creepy)喔..........),找不到bug時灰頭土臉,面色枯槁,完成feature時士氣高昂,眉開眼笑。老闆已經問我們倆下學期要不要繼續留下來做coop,研通答應了。我...........project ethereal............我還沒開始準備那一邊的東西啊!!!!!!T_T看著Ji的model跟concept art一直迸出來,我也希望趕快進入熱身賽啊!!!!!

自己練功的部分,把C++ primer搬出來看,好書一本!很多非常細膩實用的技巧,一路看下來越來越不敢在自己履歷上寫自己會C++...........shaders for game programmers and artists,也是好書一本!筆觸親鬆,內容實用,經過這一個月工作這邊的凌虐,看這本的shader真的只能說像看閒書一樣輕鬆..........也稍微接觸了HLSL跟render monkey的操作(以前render monkey真的只被我拿來當shader compiler用............)。MAYA........沒錯!MAYA!下學期要跟ETC首席MAYA好手合作,經過了Ben跟Mo的援手相助,自己只不過想給個地板上張貼圖也要請人幫忙的窘境,終於忍不住了,這種程度的東西都無法自己handle,programmer也不該只會寫扣其他什麼都不會吧.........(而且自己又不是頂好的programmer),亞馬遜都有敏馬血馬之別,如果頂級全才programmer當不成,求職的需要技能稍微都點一點應該不過分吧(很多公司TD都要求有基本的MAYA操作能力),我不喜歡說自己什麼都會的人(通常那意味著什麼都不會),但我更不敢講我自己是本科具有絕對優勢的人,我以:"能與artist良好溝通合作的programmer"為自我期許,為目標邁進!
MAYA自修之路:芭崎的第一個完成品model
我決定叫他芭崎號!



坐墊看起來蠻舒服的>////<

絕對是這輩子最充實的暑假(有假期可言嗎= =),累死人!但我可以感受到自己的進步!我希望進步得更快!我要變得更強!玉潔跟我閒聊時談到:"沒有溫情的地方 才是邁向神的領域的道路"成神是不指望了,只求知道神的道路是什麼樣子,只求自己能走過一遭!

No comments:

Post a Comment