• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            歲月流轉,往昔空明

            C++博客 首頁 新隨筆 聯系 聚合 管理
              118 Posts :: 3 Stories :: 413 Comments :: 0 Trackbacks

            #

            程序員,都是習慣從0開始計數的。如果不是陳梓瀚撰寫了《10年編程》,我不會想起對一個如此漫長的瞬間,做出一個可能并不是恰如其分的總結。某種意義上來講,這也算是他“改變了我的人生軌跡”的一種方式吧。

            2000年,終于考上了當地最好的中學,分數不高不低。那會兒對計算機或者是程序,是完全沒有什么念想的。在這之前,如果說啟蒙,呃,搜腸刮肚一下,也是有的。

            初中時買的學習機上,有一個QBasic的解釋程序。啊,真好,程序。雖然要寫行號神馬的,但是到底是程序啊。可是,我寫出來的Code他媽的不能存儲!不能存儲!不能存儲!有鳥用!(據說可以支持錄到磁帶里,但是我從來沒他媽成功的用過我艸)

            當然,這用處,也還是有的。用來算算四則運算用神馬的。——這算哪門子用處!坑爹呢!

            好吧。這些暫且不表。因為還有LOGO語言,傳說中的LOGO。偉大的Logo,可以畫圖的Logo。但是我都忘記了。只是前段時間我師妹讓我去看看NetLogo的時候我就想起來滿屏幕爬的小海龜來。三角形的小海龜。

            哎喲我艸!這是小海龜嘛!你見過三角形的小海龜嘛!

            好吧。這些都不重要。高中期間三件事情,“改變了我的軌跡”。第一,我會編程了。第二,認識了初戀,讓我趕上了早戀的末班車。第三,Event Code A(有些人知道,有些人不知道。不重要了,但是和編程多少有點關系)。

            也不知道怎么就去學編程了。那會兒是以OIer(奧林匹克信息學競賽)的身份,學Pascal。領我入門的,先是朱老師,后來是胡老師。這么多年我也沒回學校去看望二位老師。要不是他們,我大約真的就要凍死街頭,餓斃巷角;被城BI管BI追,被土狗咬。——我了個去!這又是神馬啊!!!——當然,是他們教會了我Pascal。雖然在有些環節上我是無師自通的(臭屁啊,裝逼啊),也因為他們是不錯的老師。

            00年到01年這段時間里面,我的基礎知識是一片混亂。

            其實那個時候我已經很牛逼了。一方面,我會Pascal,甚至會一些算法。遞歸基本上一看就明白了,Delphi學起來也還湊合。到現在我都還有兩本Delphi方面的書仍在家里,一本是白皮子的Delphi教程,一本是機工的實用編程100例。還有就是,我每個星期要裝上10來次Windows98。什么Ghost,什么PQMagic,什么Norton Tools,都不在話下。

            另一方面,在概念上也存在相當多的嚴重問題。比方說,完全不知道“編譯”是個什么過程,妄圖把.pas換個exe就期望著能執行,比方說分不清TFrom和TForm1有什么區別。連類型和變量都搞不清楚。我覺得我也是很牛逼了。

            但其實編程這種東西,對大部分人,都沒什么吸引力的。一開始的時候,大概有30個人參加培訓。一個月之后,就剩下我,趙同學和滕同學了。其他人都沒了。現在還在IT的,不知道還有幾個。

            曾經還考慮過,回去帶一些小弟弟小妹妹(這個是重點),去給他們講一些數據結構啊,算法神馬的。但是今年一看,奧林匹克競賽高考一律不加分,心里一下子就冷旺旺的。這下子,搞不好連三個都不剩了。

            高二一年,成績掉的厲害。有多厲害?其中的時候,double了。期末的時候,又double了。對不起,我不是說分數。我是說,名次。

            原因很多。但是關鍵是,我對念書,數理化英語地理生物政治歷史,沒有那么大了。這要是放在以前,我一定是個博物學家。諾貝爾那樣的。呃,好像是叫達爾文。

            后來看到過老美們用的歷史教案和材料,我覺得我肯定更死翹翹。他們會問阿茲特克人在哪一年遇到了一個什么樣的自然災害死了多少人并對接下來的歷史進程產生了如何的影響。

            然而那個時候我天真的以為阿茲特克人其實是生活在好望角的。當然,我唯一引以為自豪的,是知道霍爾木茲海峽是黑海到地中海的出入口,而博斯普魯斯海峽是海上的石油要道。好像我又記反了。真該死。

            但是這些都不影響那個時候我繼續編程。學會了二叉樹,學會了鏈表,學會了數組。學會了指針的指針的指針的指針。我也不知道怎么學會的,好像就是自然而然的鉆到腦子里面去了。但是他們鉆地并不深,都給堵住了。所以,現在我的頭腦里面很難再鉆點什么像樣的東西了,都是些明星緋聞,裸體空空神馬的。

            高三的時候,03年。是最后一次參加OI。認識了三個小盆友,樂樂,敏敏和洋洋。敏敏去學泰語了。樂樂不知道在干什么,只是知道他當年在文曲星PC600上的QBasic玩的是近乎神跡,能用那個破爛到家的MC68000的變種的CPU干很多很多事情。我也有一個,迄今為止也還在手上。后來趙先生也有了一個,PC1020。羨慕死我了。那個時候文曲星的升級大概就和現在手機是一樣的,CPU更快,記憶體更大,屏幕分辨率更高。

            洋洋玩的也很好。現在好像武大的BBS就是他在維護的。適當的時候我也會關注一下他。不知道他以后會怎么樣,但是總之是一路順風了。幾個孩子都很聰明。學校都很好。不像我。到最后的時候,RP超級爆發了一下祖墳上的青煙冒得跟911大火似的,也就考上了一個普通的不能再普通的211。但是我仍然是認為,老天是合理的。高考前我從未系統復習過,也沒有做過什么題目。你問我對這件事情自豪嗎?Of course!其實說著話的時候,爹渾身正冒出一種傻逼特有的青煙。這叫氣場。

            03年的時候我就會C++了。用了一本什么成人自考的教材。綠色殼子的書,超薄,還帶護翼的,夜用,防側漏,吸量大。幸虧那個時候沒有看Primer這種大部頭。要不然死都不知道怎么死的。后來很多人質疑說國內的書怎么怎么爛,說不能誤人子弟啊云云。這個時候最好的解決辦法,就是找一本盡可能薄的書。這個時候信息量會盡可能少,出錯的情況也就會盡可能的少。除非他是文言文寫的。

            到03年暑假的時候,都是沒有自己的PC的。03年暑假,終于買了自己的PC。Athlon XP 1700+,碩泰克的主板(忘了什么芯片組的了,那個時候NV的nForce還是很貴的),256M的內存,80G的酷魚四。顯卡是傳說中的Radeon 9100。結果機器買回來,玩了整整一個暑假的游戲,軒轅劍Online。除了畫面丑了點,游戲性倒是不差。后來大宇做的網游,倒是越來越SB了。

            早在高一的時候,在老胡同學的影響下,我就眼睜睜看著他通關了天之痕和云和山的彼端。自此之后我就有了不玩游戲看錄像的毛病。都是好游戲。所以那會兒我特想做RPG。一直到我水平不夠做RPG的時候,都是有這個想法的。現在掐自己腿肚子,也算是可以了,只要有美工我就能山寨出一個差不多的RPG來。但是我不再想去做游戲了。

            人生理想大抵是如此,等你可以實現理想的時候,往往就會有更遠的眼界,想做更大的事情。這個時候,應該回過頭來,感念那些在深夜挑燈的時候,給予你溫暖的那些好夢。

            大學對我來說就只有兩個階段,在江寧的大一大二和在本部的大三大四。

            在高考獨木橋擠啊擠啊,擠了倆通宵,好不容易才上了開往失業的賊船。很多人以為我以前學編程,現在干IT,我那個時候一定就是所謂的“計算機相關專業”。其實不是的,我學的是測繪。工民建,賤民工。

            但是大一大二,大家都知道的,基礎課。其實和專業沒什么關系。所以那個時候我從來不去上課,天天泡圖書館,就在那等啊。等艷遇。四年等了兩個,全是有主的。通過這兩個,我還認識了一班哥們。不過我不是Gay,可惜了。事實證明,圖書館不是等姑娘的好地方。人家來都是來看書的,不是來挑郎的。

            然后就無聊啊。干嘛呢,抄書。那個時候是把一本清華的圖形學教材,一本More Effective C++,一本Large Scaled xxx(就是小貝看的那本沒前途的書),一本軟件工程,一本COM本質論,抄到了小本子上。當然都只是摘抄,不是全部。才看到MEffC++的時候,驚艷啊!怎么會有那么牛逼的書呢?現在想想,不是那本書牛逼,而是我實在太傻逼了。這個感覺又出現過兩次。一次是看到Modern C++ Design的時候,一次是看到Boost里面MPL的代碼的時候。

            抄書好。好記性不如爛筆頭。找兩本經典的書抄抄,還是有助于你系統的理解學習一下常識的。寒假回家的時候,裝逼的搭了一個Graphic Engine的框架,最后還是不了了之,太監了。但是就是這個只花了我兩三個月的東西,在6年之后,我還是寫在了我的簡歷里。因為這是很重要的一步,對我來說。第一步雖然走不穩,但是確實是非常重要的。

            時間過得快啊。從初戀把我甩了后,兩年一晃就過去了。然后我就到了本部。大三大四,還是過得非常充實的。魔獸練了一個牧師到了60,最后還跌跌撞撞的拿到了祈福;女人,無。然后學業上,雖然績點爛到要畢不了業,但是好歹發了一篇第一作者EI,兩篇第二作者EI。

            那個時候,最大的好處是有網上了。大一大二的時候還在gameres和csdn里面混過,后來就再也不混了,發現了兩個群。然后在里面天天被一幫狗日的艸啊。艸了個花開花謝。狗叔,豬叔,叛叛,都是那個時候認識的。還有就是壯碩的,也是這篇文章的直接罪魁禍首,陳梓瀚。

            S****是迄今為止,我見過水平最好的群。有大牛坐鎮,有打手幫噴。不管問什么,都會有答案。雖然有的時候的答案是“您已經被管理員請出xxxxxx群。”但是這也可以學習到,這個問題究竟是多么的傻逼。但是在這之前,我還在一個D****** MVP群里面呆過。在水平上,要差一些。但是對當時我這樣的水貨而言,氣氛更好一些。

            所以盲目加牛逼群的人,最好先掂量一下自己有多分量。水平太好或者太差的群,對自己都是不好的。你把一個群的水平拖低了,只會讓睪獸們罵累了之后直接把群Mask,不再說話。對誰都沒好處。討論才是持續發展的真正動力,不管是討論什么,從三體,到三俗,到三急都可以。很多問題,google一下,或者多看點書,你就不會好意思問出來了。

            迄今為止,我還在S*****的群里面活躍著,現在這個群除了叛叛和VC,還有出去自立門戶單干的豬叔,剩下的活躍用戶,幾乎都是Autodesk的人了。就連我,也順藤摸瓜的上了黑車。都是狗叔害的。

            臨畢業的時候,還做了一把偽學術,發了點Paper,之前也說過了。是和GPU有關的,也和我專業有關的。后來本科論文致謝里面,很多感謝的人,都和這個有關。再次感謝一下猴叔(怎么叔叔們都是禽獸啊)孫凱先生。

            本科的時候遇到了后來我碩士的導師。雖然在碩士期間,我和我的同門啊師弟師妹啊什么的,對其還是有些微詞的,但是這個畢竟放了我畢業,就算是萬幸了。而且那個時候對我也確實是很寬容的。我在和她一起做Paper的時候,她居然就放任我在辦公室里面WC3。

            這個部分要單獨分開來講一講。因為很重要。讀大學,不完全是為了等失業。也還有一些很重要的事情要去做。比方說破處,比方說學點知識,比方說,認識一些人。認識女人可以一起上床,認識男人可以一起翻墻。認識人妖還可以攜手并肩當牛郎。

            之前說的兩個在圖書館邂逅姑娘,不是終點。最后都成為了中轉站。無論如何,謝謝你們,希望你們過得好一點。

            籍由她們,我認識了銜哥,老畢(不是拍A片那個老畢),云哥和邦邦。銜哥和老畢,都算是是富二代,人很好。他們比我高一屆,一直以來得到他們很多的幫助。銜哥走的那會兒,頗有些難過。很希望以后還可以與他再見面。老畢現在儼然是一個資本家了,開了家小公司,倒買倒賣著什么。云哥和邦邦,那正兒八經都是做技術的人。云哥的技術很好,我還不懂什么叫ASP的時候,他給我分析頁面之間怎么傳遞數據分析的頭頭是道。有一次他對于AOV網的分析,讓我印象極深。我甚至還記得,那個下午將我的老臉曬得滾燙的夕陽。

            還有邦邦。很久沒有與他聯系了,我想他現在應該已經在國外了。他畢業的時候,我留校讀研,于是從他那里摸走了近800塊錢的書。現在在我枕邊的Introduction to Algorithm的影印版,最早便是他的。今天下午和本文的罪魁禍首陳梓瀚在皮扎哈(Pizza Hut)吃著他的軟飯,并吹牛的時候,也提到了算法導論。感謝邦邦,是你給我提供了如此多吹牛逼的資本。書上密密麻麻都是你的筆記。不明就里的人,還以為是我刻苦讀書的結果。但是實際上我的書從來都比臉干凈。

            碩士階段,若干件大事。但是能記錄在這里的卻很少。頭等大事,發生的最晚。是我認識了現在的女朋友。我是在臨畢業的時候和她走到一起的。那個時候事情是如此之多,以至于重要的信息全部都被各種畢業前夕的噪音掩蓋的一干二凈。和我很親近的師妹都被我蒙在鼓里,上個月還在QQ上很傷心的問起我為什么我一聲不吭就甩了和我相濡以沫了多年的他的男朋友暨我的相好,而和另外一個可愛溫柔潑辣的MM遠走高飛了。我不知道怎么回答她的傷心和無助,只能說等到南京的時候讓她一定要請我吃飯。

            第二件大事,發生的最早,和技術也有點關系。就是SoftArt項目的開始。是07年底。花了兩個多月寫了個原型。最后居然也不知道怎么的他媽的就可以運行起來了。如果不是龔敏敏鼓勵我,這個東西指不定又要胎死腹中。07年底到現在,項目一直都很順利,雖然進度有點慢。那不是因為沒人手么。08年底的時候,加了一個編譯器到項目中。但是到現在這個編譯器仍然只是雛形。也是那個時候我逐漸和本文的罪魁禍首陳梓瀚相識相知走到一起去相互掐架。迄今為止,這個編譯器也受到了他諸多的啟發和鼓勵。用一句話來表達我的感激之情,那就是——多謝你的吃屎,讓我只用聞屁就夠找到茅廁了。

            同時也感謝Un-stolen同學,讓我可以在傷心絕望痛苦中無形的加快了項目的開發進度。

            第三件事情,在測繪局的實習。這大約是我做過的第一個成品項目。感謝領導同志和姐姐哥哥叔叔阿姨們對我的信任和支持,讓我有機會再一個數十萬行的程序里,當一個不那么稱職的Arch。這段經歷其實對我之后很長一段時間的作用是巨大的。特別感謝金琳姐,在我發現系統問題并實施重構的日子里,要不是你幫我扛住了主任的壓力,我還真有點不知道如何是好呢。不過知道我當時做的成果,現在你們也在用,便覺得除了欠了你一頓面值300人民幣的飯外,還是有點點對得起你的。順便也祝官二代的你工作順利,早日升職:)

            以這樣一個數字,我的十年終于可以完滿的結尾了。

            如今我在Autodesk,算是過的不錯。我的Team,我的Leader,我的Manager都很Nice,感謝你們給了我這個可以在團隊里歷練自己的機會,給了我這個可以開發成熟產品的機會。對王先生和李先生而言,沒能去V公司,真是有點遺憾。但是現在看來,我們之間其實是大有合作的機會的。還有MSRA,你并沒有能阻絕我全部的路。如果我想去,自信是不會有多少問題的。

            在最后,感謝作為本文罪魁禍首的陳梓瀚,是你讓我有時間考慮這樣一個十年里我究竟是如何成長的。感謝所有在文中出現過的人們。

            在機器面前打著哈欠等我寫完的我的女朋友張小兔同學,如果不是你一直在等我,恐怕這篇文章又要太監了。不過,我光榮而膽怯的宣布,我已經寫完,可以交差了。

            我愛你。

            posted @ 2010-12-19 23:57 空明流轉 閱讀(5208) | 評論 (20)編輯 收藏

            Syntax of SASL Symbol Name Mangling

            September 26

            2010

            This script describes the rules of symbol name mangling.

            V1.0

            SASL Name Mangling Syntax

            V1.0

            Name mangling can be applied to name of function mainly, for distinguishing the overloaded function

            MangledName is the result of Name Mangling. It starts with ‘M’ character and ends with ‘Z’ character.

            MangledName ::= ‘M’ QualifiedName ‘@@’ ParameterTypes CallingConvention

            QualifiedName is base name qualified by scope name. A scope name could be a structure name, class name or namespace name.

            ParameterTypes describes the types of parameter list.

            ‘@@’ is the splitter between qualified name and parameter type.

            QualifiedName ::= ( ScopeName ‘@’ )* BaseName

            QualifiedName is composited by scope name and base name. ‘@’ is used to split the scope segments.

            ScopeName ::=

            ‘S’ StructTypeName

            ‘N’ NamespaceName

            StructTypeName ::= <name of structure>

            NamespaceName ::= <name of namespace>

            BaseName ::= <literal name of function>

            ScopeName are two sorts, structure name or namespace name. Sorts are distinguished by a lead character. If the name starts with ‘S’ it means the name of structure, and ‘N’ means following name represents a namespace. Note that, if

            BaseName is the literal name of the function or a type.

            ParameterTypes is a list of parameter types. Because SASL do not support variance parameters, so we need not to considerate that. Syntax of ParameterTypes as following:

            ParameterTypes ::= ( ParameterType ‘@@’)*

            ParameterType is encoded by type qualifiers and type name.

            NOTE THAT, anywhere type name referred means that the original definition name but not alias( such as generated by “typedef” ).

            ParameterType ::= ScopeQualifiedTypeName

            ScopeQualifiedTypeName is the type name qualified by scopes. It is similar with qualified name.

            ScopeQualifiedTypeName ::= ( ScopeName ‘@’ )* BaseTypeName

            ScopeName ::= ( ‘S’ StructTypeName ) | ( ‘N’ NamespaceName )

            QualifiedBaseTypeName ::= TypeQualifier BaseTypeName

            TypeQualifier ::= (‘C’)?(‘S’)?(‘U’)?Q

            TypeQualifier describes the qualifier of declaration. In SASL, following qualifiers are supported: constant qualifier (‘C’), uniform qualifier (‘U’) and shared qualifier (‘S’). Each qualifier is represented as a character, and qualifiers is ended by a character ‘Q’.

            BaseTypeName ::=

            ‘S’ StructTypeName

            ‘B’ BuildinScalarTypeName

            ‘V’ BuildinVectorTypeName

            ‘F’ FunctionTypeName

            ‘M’ BuildinMatrixTypeName

            ‘A’ ArraySize ArrayComponentTypeName

            StructTypeName ::= <literal name of structure>

            BuildinScalarTypeNames encode all build-in type into one or two characters.

            BuildinScalarTypeName ::=

            ‘U1’ | ‘U2’ | ‘U4’ | ‘U8’ |‘I1’ | ‘I2’ | ‘I4’ | ‘I8’ | ‘B’ | ’F’ | ‘D’ | ‘O’

            ArrayComponentTypeName ::= QualifiedBaseTypeName

            ArraySize ::=

            <length of array >

            ‘V’

            They are corresponded following building types: uint8_t, uint16_t, uint32_t, uint64_t, int8_t, int16_t, int32_t, int64_t, boolean, float, double and omit (void).

            BuildinVectorName ::= VectorLength BuildinScalarTypeName

            BuildinMatrixName ::= RowCountOfMatrix ColumnCountOfMatrix BuildinScalarTypeName

            BuildinVectorTypeName shows the name of building vector. It makes of length component and scalar type component.

            VectorLength Could be 1, 2, 3 or 4 and represents the length of vector.

            And the BuildinMatrixTypeName is similar as build-in vector type name.

            ArraySize is an integer demonstrating the size of fixed-length array or ‘V’ (void or variant) means that it is a variant length array.

            ArrayComponentTypeName is the description of type of component of array. For example, array component type of “int32_t[]” is “int32_t”. So array component type name is set to the mangled name of int32_t, “I4”.

            CallingConvention is a single character which shows the calling convention of this function. ‘S’ means “__stdcall”, ‘C’ means “__cdecl” and ‘F’ ,means “__fastcall”

            CallingConvention ::=

            ‘S’

            ‘C’

            ‘F’

            FunctionTypeName reuses all non-terminators and terminators mentioned above.

            FunctionTypeName ::= ReturnType PrarameterTypes CallConvetion ‘@@@’

            ReturnType ::= ParameterType ‘@@’

            posted @ 2010-09-26 19:12 空明流轉 閱讀(1686) | 評論 (2)編輯 收藏

            明拜之,請曰,“簡報可乎?”曰:“可。”

            咳咳。最近由于SoftArt的幾個參與人員工作都比較繁忙,因此進度上比較松散。但是大體上,SoftArt一直是按照預先想好的計劃在進展。為了讓大家知道SoftArt的開發進展,同時也是我們開發人員自己的備忘,我們在商議后,決定以簡報的形式,不定期地將SoftArt的變化和進展及時地呈現出來。

            簡介

            本簡報主要總結了09年11月份以來SoftArt的變更情況。

            對于SoftArt來說,09-10年度是非常重要的。在這一年中,盡管SoftArt并沒有加入多少新的特性的加入,但是架構、性能都經過了持續性的優化。

            在Graphics方面,Minmin為SoftArt撰寫了全新的光柵化算法。新的光柵化算法與Larrabe的細分方法類似。這一算法在并發能力上有很明顯的優勢。盡管在目前性能上與上一版的掃描線算法相對弱勢,但是經過Minmin的辛苦工作,這一弱勢已經逐步的縮小了。就目前而言,我們認為該算法仍然有很大程度的提升空間。

            同時,紋理單元也經過了大量的SSE優化,目前的紋理單元效率已經遠遠超出最初我為之撰寫的版本。

            經過一段時間的調優之后,目前程序的瓶頸主要集中在裁切和頂點變換上。已經朋友為我們提出了非常好的建議,接下來這也是我們工作的重點之一。

            當然,根據估計,在經過一段時間的調整后,這些問題一定會得到解決的。我們估計最終SoftArt的瓶頸將主要集中在兩個地方,一個是IO,一個是Shading部分。目前我們只是使用了簡單的shading code,相信在shading code復雜之后,瓶頸會在很大程度上有所轉移。

            對于IO部分的瓶頸主要由紋理和后備緩沖產生。對于現代圖形算法而言,紋理又是重中之重。沒有特殊紋理單元的CPU在這一點上實在是吃了大虧。盡管我們在Cache Hit Rate及消除Function Call上下過一定的功夫,并使用了SSE加速了雙線和Mipmap的紋理插值計算,但是效果仍然達不到我們的預期。一旦引入各向異性過濾,可以預見,在這一部分,還需要我們投入大量的精力來研究并解決這一問題。

            但是由于C++ Shader Code在SIMD特性上的限制,目前我們并沒有設計并實現更加復雜的Shader。這一切都有待SASL(SoftArt Shading Language)編譯器完成之后才能。Minmin為SASL與渲染器連結的Host API部分撰寫了完整的Specification(神人啊,真的是做什么都可以)。盡管目前這一部分在描述上比較簡略,但是與DX11相似,相信大家一定可以比較容易的接受這套API。

            在編譯器方面,主要有Ye負責。目前的編譯器各個階段的接口以及語言特性已經基本成熟。語義和代碼生成部分也在有條不紊的開展。在編譯器設計期間,得到了Zihan Chen在技術上的大力支持,在此特別表示感謝。

            變更清單

            Nov 01,2009 – Nov 29, 2009 (r1 - r10) 此階段的工作主要是將原先在sf.net上的項目,移動到Google code上,并對工程進行了一定的調整,同時移除了一些編譯器警告。

            Dec 01,2009 – Dec 09,2009 (r11 - r29) 此間,Minmin為現有的C++ Shading Code的接口進行了重構,修復了一些Bugs,并進行了一部分的優化工作。

            Dec 10,2009 – Feb 08,2010( r30 – r65) Minmin為SoftArt的頂點和光柵化提供了并行能力。光柵器以Block為粒度對三角形并行光柵化。

            Dec 09,2009 – Feb 21,2010( r27 – r66 ) Ye將SASL的分析器由Spirit 1.8移植到2.1

            posted @ 2010-08-23 18:19 空明流轉 閱讀(1951) | 評論 (1)編輯 收藏

                 摘要: 呃,紀念一段生活,與技術沒什么關系,不過還是想發在首頁TAT  閱讀全文
            posted @ 2010-06-24 23:13 空明流轉 閱讀(5945) | 評論 (14)編輯 收藏

            Python寫的。有哥們兒說,Perl多好,一行就OK了,我囧。我不會那么高深的玩意兒,就只好寫的煩一點。大bug沒有,小bug肯定是有的,湊合著用吧。反正是腳本的,不滿意的同鞋可以慢慢改。。。

            有圖有真相

            image

            好吧,softart可憐兮兮的才15K行代碼,有一半以上都是叛叛貢獻的了可能。這里的統計還包括了一部分的py代碼。

            猛點我下載腳本

            posted @ 2010-06-22 01:18 空明流轉 閱讀(2027) | 評論 (4)編輯 收藏

            SoftArt是一款遵守GPLv2協議的開源軟件渲染器,目的是在CPU上實現Direct3D 11的全部功能。

            項目介紹參見這里

            主頁參見這里

            目前固定管線的工作已經結束,Shading Language的編譯器也在緊張開發中。

            以下是目前的兩個Demo的截圖。

            ComplexMesh

            SampleWindow

            在接下來的工作中,除去核心部分的進展外,性能示例、測試用例和特性展示。我們希望通過這些用戶程序的開發,暴露SoftArt的性能、穩定性、Feature上的優勢和缺陷。

            考慮到Roadmap和目前的人手情況,我們希望招募一些志愿開發者從事Demo的開發工作。我們以極大的熱誠,歡迎您的加盟。我們可以給予您一個良好的學習鍛煉的機會。考慮到主要成員均為在職,可能沒有更多的時間來輔導和培訓,因此我們希望你可以具備一些基本條件:

            * 有一年左右的C++經驗;

            * 對開發和圖形學有鉆研的興趣;

            * 有一定自學能力,在較少的指引下高效的學習;

            * 有恒心,有熱情參與開源項目;

            * 當然,如果您有一定的圖形學基礎,那就更好了。

            項目目前的核心開發成員及顧問,均具有6-12年的開發經驗,供職于業內的頂級企業。為了讓您能夠快速溶于項目中,項目組會視情況組織在線/線下的培訓和交流活動。相信每個成員均可以在本項目的實施過程中獲益匪淺,項目也會因為您的貢獻而更添光彩。

            如果您有這方面的意向,請致Email于 wuye9036@gmail.com

            請在Email注明你的:

            ID:常用的ID,最好包括真實姓名

            Google Account:如果沒有,可以申請一個。因為我們的SVN Repository是建立在Google Code上的)

            聯系方式:IM(QQ,MSN,GTALK)和Email,有手機最好

            自我介紹:包括擅長的技術啦,項目經驗啦,閑扯也可,呵呵

            希望參與的工作

            其他要求:任何要求皆可

            我們會在第一時間與您聯系,商討具體事宜。真誠期待您的加盟!

            posted @ 2010-06-12 16:19 空明流轉 閱讀(2008) | 評論 (6)編輯 收藏

            Visual Studio 2010開了一整天,敲了不到10行代碼,然后幾秒鐘就被Ctrl + Z掉了。將三方協議寄出之后,難免有些松懈與混沌。周四體檢結果出來,一切也就塵埃落定了。既然沒心思干活,那可以隨便寫點什么,總結一下自三月份求職以來的種種經歷,打發一下時間。

            這幾個月求職對我來說,還算是比較順利的。到現在為止,MSRA的電話面試應該算是全部通過了,V公司也到了談Offer的階段。不過由于時間限制、興趣、職位等種種因素,最終我還是選擇了A公司的Offer。這點要向被我放了鴿子的朋友和公司道歉。有些事情,真的要看緣分和運氣。待遇、職位、工作內容、工作地點,對我來說都比較適合,而且又有認識的多位前輩在其中供職,對能有這份工作,我是很高興的。

            我收到面試的機會不算特別多,MSRA三次中文的電話面試,A公司的一次電話和兩次Face-to-face,V的Face-to-face,還有一個做GIS的單位G的Face-to-face的面試。

            最早接受的,是G單位的面試。G單位采取的面試方式是一個Introduction,就是介紹下自己做過什么工作,然后Manager會介紹一下公司主要做哪些方面的工作。由于沒什么問題,所以面下來,氣氛很好。不過最后我一個在公司里工作的朋友告訴我,我被拒了。為什么不知道,連正式通知都沒有。所以我也不好說什么的。不過大體上,這次面試就拉開了我被面的序幕。

            MSRA三輪電話面試倒是各有特色。第一輪主要問我做過什么,對職業有什么規劃,傾向于什么。然后簡單的問了兩個技術問題。第二輪是個單純的技術面試。問我一個Large-scale的圖片瀏覽系統應該怎么設計。然后我就在他的引導下,一步一步的深入,最后還算是比較順利的紙上談兵的解決了問題。反正嘛,不外乎就是Tune-Opt這樣的順序。對于這類數據訪問型的數據,本質上就是運用Cache解決訪問速度的問題。解決的好不好,面試這么短時間內,也是問不出來的。所以對付面試,有充分的分析問題的能力比較好。至于解決問題,那個面試很難考察的清楚。然后有一個徹底把我打垮的問題:操作系統的常用內核對象有哪些?我直接長大了嘴,然后過了好幾分鐘,干凈利落的回答,不知道。然后是一些C++的問題。比方說struct和class有沒有什么相同和不同啦一類的。或者是一些很概念性的,諸如Template用在哪些場合。第三輪電話面試比較郁悶。有個哥們兒一口咬定,我不適合做研究。然后27min中的面試有10min是他在接別人電話,還有至少10分鐘,是糾結在我不適合做研究的問題上。問題是我本來就申請的是RSDE,哪有多少研究的。

            V是我第二個Face-to-face的面試。面試我的是一個挺能侃的哥們兒,看樣子是Team Leader。先讓我做了一套Cpp的題目,我在博客里面也總結了,這里就不再多說了。然后就是一些公司發展啊,職業發展啊,定位啊一類的。圖形方面問道的題目不多,倒是一些諸如不同調用協議之間的區別一類的匯編級的問題被問的很多。我對這些僅僅就了解了一個皮毛,因此回答的也很勉強,很復雜的問題,例如為什么cdecl下,參數是自右向左進棧這樣的問題,就很難回答的上來了。不過整體上,從他的侃大山里,學到了不少東西。

            A的兩次,是典型的大公司的兩次面試。第一次面試的是做QA的Team,最后因為和我的期望職位不適合,所以他們的Leader沒有給我Offer。第二次就是現在拿Offer的這一次。

            一般來說,這類大公司面試,就是分為技術面試和Communication兩個部分。

            第一個部分就是考察你技術怎么樣。技術考察一般分為以下步驟:首先,你做過什么,簡要的介紹一下。有什么動機,運用了哪些技術,效果如何,你主要做了寫什么。這個時候比較好辦,吹水就可以了。遇到了什么問題,怎么解決的。

            其次,一些專業技術性的問題,比方說算法一類的。這一類問題底子好就比較容易搞,因為細節不多。但是要注意回答到點子上。比方說上一次被人問了Mipmap究竟是什么含義。我偏導來、偏導去的解釋了半天,最后才算是猛的想起來,回答是預計算的降采樣,面試我的哥們兒點點頭我才算過了關。

            再次就是工程學問題。讓你寫段代碼示例。這中間要注意很多方面,比方說Guard Code。不是說我不重視這些東西。但是我對于在白板這樣的思想交流工具上表達實現這么具體的東西很反感。有時候還會考一些基礎但是具體的算法實現。這一項上,我比較薄弱。不是算法本身就真的差到什么程度,主要還是因為我是手冊黨。沒有手冊,你讓我寫一個完全正確的算法,很困難。點到直線距離就讓我為難了好半天。這種基礎的東西,荒廢久了,還真難記得什么。所以代碼什么的漏洞百出,還讓面試我的前輩多少有點不太高興。這點還是因為我太年輕,頗有些沖動和自以為是了。我一個朋友對我說,你有什么不重要,關鍵是,要是別人需要的,你都有,這才牛逼。我就把這句話當做座右銘了,可惜目前的實施情況實在太不盡如人意。以后進公司,這方面還是要注意一點比較好。

            第二個部分就是你的IQ啊,EQ啊,語言能力啊、交流能力啊一類的。這些比較寬泛,也很難有準繩可以衡量。比方說我第一次在A面試的時候,就遇到了HR給我出智商題。我就直言說我這個人智商比較低。然后2道題就作出來1道,說明我大體上是個誠實的人。50%的正確率,大概和弱智沒多少區別了。第二次面試就沒有,直接面了英語。然后HR Z就說,我的英語太搓,云云。當然比這個說法婉轉。這個沒辦法,我得承認。我的英語確實完全不靠譜。這個以后去了公司,還要多練練。

            就我不多的面試經驗來看。面試比我預先想的難度低。畢竟面試是允許不完美的,大差不差就可以了,不用把自己弄得太緊張。大公司也沒有一般人想象的那么難進,只要你能力上差不多,對得起一年10W左右的薪水(絕大部分外企的薪酬都在這個左右浮動),就肯定能進去。當然,也是看緣分的。有時候沒有合適的職位,那也沒辦法,只要耐心一點等待就好了。

            最后祝將要找工作的同學一切順利。

            posted @ 2010-05-29 21:59 空明流轉 閱讀(2937) | 評論 (7)編輯 收藏

            對于C++一系的語言,Name Mangling主要用于同名函數,同名類型和同名變量的重載。編譯器可以在編譯期將同名函數的不同簽名形式區分開來。Name Mangling經常用于以下場合:函數同名稱不同簽名(函數重載);跨編譯單元的變量、函數引用;動態鏈接庫或其他形式的函數、變量導出。

            盡管現階段SASL不打算支持Member Function等比較復雜的行為,甚至暫時不考慮函數重載。但是作為現代語言編譯的基本要素,SASL在語義分析階段,仍然提供了較為完善的Name Mangling機制,為以后的編譯器特性擴充打下基礎。

            SASL的Mangling語法如下:
            mangled_name = 'M' basic_name '@' return_value_type parameter_type_list '@' 'Z'
            basic_name = string '@'
            return_value_type = value_type
            parameter_type_list = ( value_type )*
            value_type = qualifier_code type_code
            qualifier_code = "UN" | "CN" | "NN" | "UC"
            type_code = buildin_typecode | struct_class_typecode | array_type_code
            buildin_typecode = dimension_code basic_type
            dimension_code = scalar | vector | matrix
            scalar = 'B'
            vector = 'V' (1|2|3|4)
            matrix = 'M' (1|2|3|4){2}
            basic_type =
              'S1' | 'U1' | 'S2' | 'U2' | 'S4' | 'U4' | 'S8' | 'U8' | 'F' | 'D' | 'V' | 'B'
            struct_class_typecode = 'S' string '@@'
            array_class_typecode = 'A' type_code size '@@'

            和主流語言相比,本Mangling暫時不支持Qualifier(Class Member,Namespace Qualifiers)。以后在需要Qualifier的時候再酌情添加。也就是說暫時不會考慮現有版本和以后版本在二進制上的兼容性。

            以下是一個mangling的例子:

            double foo();  => Mfoo@@NNBD@Z

            posted @ 2010-05-24 23:00 空明流轉 閱讀(1575) | 評論 (7)編輯 收藏

            SALVIA的近期計劃主要集中在工程方面。開發組希望能在年底前放出第一個Release。在年底之前,大致的安排如下:

            6月份,Code Review Standard。大體上參照Boost和Google的Standard來制定。

            6月底之前,Roadmap。Roadmap將按照兩個階段分別制定項目計劃表。第一個階段到年底,即第一個Release發布之前。第二個階段為2011年之后。

            在6月份和12月份,項目組將分別撰寫一份工作報告。工作報告預計包含 For Developer, For User, For Manager, For Roadmap四個部分。For Developer主要總結開發進展,針對部分有代表性或關鍵代碼的Code Review撰寫報告,并對下個階段的項目實施提出建議。For User將主要總結API和文檔在這一階段的變化情況,并提供一份性能、功能、安全性、健壯性和Bug部分的用戶指南。For Manager將對半年來的配置管理、任務分配等一系列的工作進行整理、匯報和評價,提出下一階段的工作的綱要和工作指導。For Roadmap將對Roadmap的實施程度、變更情況加以解釋和說明,并對Roadmap進行修正,提出完整的下一階段工作計劃。

            12月底之前,Wiki、Forum和FAQ的建設。

            12月底之前,用戶文檔開發者文檔的整理編寫工作。我們將盡量使用戶文檔能夠在Release時發布,但是囿于人手,項目組暫時不能對文檔的進度予以承諾。

            同時,SALVIA開發者的招募工作仍然在繼續當中詳情可以參見本博的置頂帖。

            最后,項目組成員感謝您對本公告的關注,并真誠希望您的參與!

            posted @ 2010-05-12 18:56 空明流轉 閱讀(1618) | 評論 (2)編輯 收藏

                 摘要: 感謝那些在碩士期間幫助過我的淫們~  閱讀全文
            posted @ 2010-04-29 16:00 空明流轉 閱讀(5294) | 評論 (14)編輯 收藏

            僅列出標題
            共12頁: 1 2 3 4 5 6 7 8 9 Last 
            狠狠色丁香久久婷婷综合| 一本色综合久久| 国产精品久久久99| 欧美午夜A∨大片久久 | 国产婷婷成人久久Av免费高清| 久久狠狠高潮亚洲精品| 66精品综合久久久久久久| 久久久黄片| 香蕉久久夜色精品国产小说| 久久无码一区二区三区少妇 | MM131亚洲国产美女久久| 国产精品免费久久久久影院| 狠狠色婷婷久久综合频道日韩| 99久久亚洲综合精品网站| 亚洲精品乱码久久久久66| 久久久久亚洲AV无码专区桃色| 久久99精品国产自在现线小黄鸭| 久久伊人影视| 99久久婷婷国产一区二区| 国产成人精品久久免费动漫| 久久婷婷色香五月综合激情| 精品久久久久久久久久久久久久久| 婷婷久久久亚洲欧洲日产国码AV | 午夜人妻久久久久久久久| 国产精品伦理久久久久久| 久久精品亚洲精品国产色婷| 久久精品卫校国产小美女| 亚洲国产精品狼友中文久久久| 国产精品青草久久久久福利99| 久久国产精品-久久精品| 亚洲AV无码一区东京热久久| 久久99热这里只有精品国产| 精品国产日韩久久亚洲| 一级a性色生活片久久无| 青青热久久国产久精品| 久久精品成人欧美大片| 久久久久国色AV免费观看| 久久综合九色欧美综合狠狠| 久久久精品波多野结衣| 一本大道久久香蕉成人网| 久久精品人妻中文系列|