• <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>
            posts - 94, comments - 250, trackbacks - 0, articles - 0
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            經(jīng)過(guò)半小時(shí)下載,終于下載完成了VSTS2010Beta版,以下是安裝截圖:

            sshot-1 sshot-3 sshot-4 sshot-5  未標(biāo)題-2 未標(biāo)題-3 未標(biāo)題-4 未標(biāo)題-5sshot-9 未標(biāo)題-6

            第一次啟動(dòng)VSTS2010

            未標(biāo)題-9 未標(biāo)題-10 未標(biāo)題-11

            這個(gè)就是新個(gè)界面了,在這個(gè)版本中微軟正式加入了F#

            未標(biāo)題-12 未標(biāo)題-13 未標(biāo)題-14 未標(biāo)題-15

            新功能太多了,去MSDN BLOG上看吧.

            posted @ 2009-05-21 17:54 Condor 閱讀(589) | 評(píng)論 (0)編輯 收藏

            作為高級(jí)程序員,以至于系統(tǒng)分析員,也就是對(duì)于一個(gè)程序項(xiàng)目的設(shè)計(jì)者而言,除了應(yīng)該具備上述全部素質(zhì)之外,還需要具備以下素質(zhì):

            第一,需求分析能力

              對(duì)于程序員而言,理解需求就可以完成合格的代碼,但是對(duì)于研發(fā)項(xiàng)目的組織和管理者,他們不但要理解客戶需求,更多時(shí)候還要自行制定一些需求,為什么這么說(shuō)呢?

              一般而言,進(jìn)行研發(fā)任務(wù),也許是客戶提出需求,也許是市場(chǎng)和營(yíng)銷部門(mén)提出的需求,這時(shí)候?qū)τ谘邪l(fā)部門(mén),他們看到的不是一個(gè)完整的需求,通常而言,該需求僅僅是一些功能上的要求,或者更正規(guī)些,可能獲得一個(gè)完整的用戶視圖;但是這都不夠,因?yàn)榭蛻粲捎诜羌夹g(shù)因素多一些,他們可能很難提出完整和清晰,或者說(shuō)專業(yè)性的性能需求,但是對(duì)于項(xiàng)目組織者和規(guī)劃者,他必須能夠清醒認(rèn)識(shí)到這些需求的存在并在完成需求分析報(bào)告的時(shí)候適當(dāng)?shù)奶岢觯瑫r(shí)要完整和清晰的體現(xiàn)在設(shè)計(jì)說(shuō)明書(shū)里面,以便于程序員編碼時(shí)不會(huì)失去這些準(zhǔn)則。

              程序設(shè)計(jì)者必須正確理解用戶需求所處的環(huán)境,并針對(duì)性做出需求的分析,舉例而言,同樣一個(gè)軟件通過(guò)ASP租用方式發(fā)布和通過(guò)License方式發(fā)布,性能需求可能就是有區(qū)別的,前者強(qiáng)調(diào)的是更好的支撐能力和穩(wěn)定性,而后者則可能更強(qiáng)調(diào)在各種平臺(tái)下的普適性和安裝使用的簡(jiǎn)捷性。

            第二,項(xiàng)目設(shè)計(jì)方法和流程處理能力

              程序設(shè)計(jì)者必須能夠掌握不少于兩到三種的項(xiàng)目設(shè)計(jì)方法(比如自頂至下的設(shè)計(jì)方法,比如快速原型法等等),并能夠根據(jù)項(xiàng)目需求和資源搭配來(lái)選擇合適的設(shè)計(jì)方法進(jìn)行項(xiàng)目的整體設(shè)計(jì)。

              設(shè)計(jì)方法上選擇不當(dāng),就會(huì)耽誤研發(fā)周期,浪費(fèi)研發(fā)資源,甚至影響研發(fā)效果。

              一個(gè)程序設(shè)計(jì)者還需要把很多功夫用在流程圖的設(shè)計(jì)和處理上,他需要做數(shù)據(jù)流圖以確立數(shù)據(jù)詞典;他需要加工邏輯流圖以形成整體的系統(tǒng)處理流程。

              一個(gè)流程有問(wèn)題的系統(tǒng),就算代碼多漂亮,每個(gè)模塊多精致,也不會(huì)成為一個(gè)好的系統(tǒng)。當(dāng)然,做好流程分析并選擇好項(xiàng)目設(shè)計(jì)方法,都需要在需求分析能力上具有足夠的把握。

            第三,復(fù)用設(shè)計(jì)和模塊化分解能力

              這個(gè)似乎又是老調(diào)重談,前面基本素質(zhì)上不是已經(jīng)說(shuō)明了這個(gè)問(wèn)題嗎?

              作為一個(gè)從事模塊任務(wù)的程序員,他需要對(duì)他所面對(duì)的特定功能模塊的復(fù)用性進(jìn)行考慮,而作為一個(gè)系統(tǒng)分析人員,他要面對(duì)的問(wèn)題復(fù)雜的多,需要對(duì)整體系統(tǒng)按照一種模塊化的分析能力分解為很多可復(fù)用的功能模塊和函數(shù),并針對(duì)每一模塊形成一個(gè)獨(dú)立的設(shè)計(jì)需求。舉個(gè)例子,好比是汽車生產(chǎn),最早每輛汽車都是獨(dú)立安裝的,每個(gè)部件都是量身定做的,但是后來(lái)不一樣了,機(jī)器化大生產(chǎn)了,一個(gè)汽車廠開(kāi)始通過(guò)流水線來(lái)生產(chǎn)汽車,獨(dú)立部件開(kāi)始具有一定的復(fù)用性,在后來(lái)標(biāo)準(zhǔn)化成為大趨勢(shì),不同型號(hào),品牌甚至不同廠商的汽車部件也可以進(jìn)行方便的換裝和升級(jí),這時(shí)候,汽車生產(chǎn)的效率達(dá)到最大化。軟件工程也是同樣的道理,一個(gè)成熟的軟件行業(yè),在一些相關(guān)項(xiàng)目和系統(tǒng)中,不同的部件是可以隨意換裝的,比如微軟的許多桌面軟件,在很多操作模塊(如打開(kāi)文件,保存文件等等)都是復(fù)用的同一套功能模塊,而這些接口又通過(guò)一些類庫(kù)提供給了桌面應(yīng)用程序開(kāi)發(fā)者方便掛接,這就是復(fù)用化的模塊設(shè)計(jì)明顯的一個(gè)佐證。

              將一個(gè)大型的,錯(cuò)綜復(fù)雜的應(yīng)用系統(tǒng)分解成一些相對(duì)獨(dú)立的,具有高度復(fù)用性的,并能僅僅依靠幾個(gè)參數(shù)完成數(shù)據(jù)聯(lián)系的模塊組合,是作為高級(jí)程序員和系統(tǒng)分析員一項(xiàng)最重要的工作,合適的項(xiàng)目設(shè)計(jì)方法,清晰的流程圖,是實(shí)現(xiàn)這一目標(biāo)的重要保證。

            第四,整體項(xiàng)目評(píng)估能力

              作為系統(tǒng)設(shè)計(jì)人員,必須能夠從全局出發(fā),對(duì)項(xiàng)目又整體的清醒認(rèn)識(shí),比如公司的資源配置是否合理和到位,比如工程進(jìn)度安排是否能最大化體現(xiàn)效率又不至于無(wú)法按期完成。評(píng)估項(xiàng)目整體和各個(gè)模塊的工作量,評(píng)估項(xiàng)目所需的資源,評(píng)估項(xiàng)目可能遇到的困難,都需要大量的經(jīng)驗(yàn)積累,換言之,這是一種不斷總結(jié)的累計(jì)才能達(dá)到的境界。在西方一些軟件系統(tǒng)設(shè)計(jì)的帶頭人都是很年長(zhǎng)的,比如4,50歲,甚至更老,他們?cè)诰幋a方面已經(jīng)遠(yuǎn)遠(yuǎn)不如年輕人那樣活絡(luò),但是就項(xiàng)目評(píng)估而言,他們幾十年的經(jīng)驗(yàn)積累就是最重要和寶貴的財(cái)富。中國(guó)缺這么一代程序員,主要還不是缺那種年紀(jì)的程序員,而是那種年紀(jì)的程序員基本上都是研究單位作出來(lái)的,都不是從專業(yè)的產(chǎn)品化軟件研發(fā)作出來(lái)的,他們沒(méi)有能積累那種產(chǎn)品化研發(fā)的經(jīng)驗(yàn),這也是沒(méi)有辦法的事情。

            第五,團(tuán)隊(duì)組織管理能力

              完成一個(gè)項(xiàng)目工程,需要團(tuán)隊(duì)的齊心協(xié)力,作為項(xiàng)目設(shè)計(jì)者或研發(fā)的主管人,就應(yīng)當(dāng)有能力最大化發(fā)揮團(tuán)隊(duì)的整體力量,技術(shù)管理由于其專業(yè)性質(zhì),不大同于一般的人事管理,因?yàn)檫@里面設(shè)計(jì)了一些技術(shù)性的指標(biāo)和因素。
            首先是工作的量化,沒(méi)有量化就很難做到合適的績(jī)效考核,而程序量化又不是簡(jiǎn)單的代碼行數(shù)可以計(jì)算的,因此要求技術(shù)管理人員需要能真正評(píng)估一個(gè)模塊的復(fù)雜性和工作量。

              其次是對(duì)團(tuán)隊(duì)協(xié)作模式的調(diào)整,一般而言,程序開(kāi)發(fā)的協(xié)作通常分為小組進(jìn)行,小組有主程序員方式的,也有民主方式的,根據(jù)程序員之間的能力水平差距,以及根據(jù)項(xiàng)目研發(fā)的需求,選擇合適的組隊(duì)方式,并能將責(zé)權(quán)和成員的工作任務(wù)緊密結(jié)合,這樣才能最大發(fā)揮組隊(duì)的效率。

              一個(gè)代碼水平高的人,未必能成為一個(gè)合格的項(xiàng)目研發(fā)主管,這方面的能力欠缺往往是容易被忽視的。

              綜上可以看到,作為一個(gè)主管研發(fā)的負(fù)責(zé)人,一個(gè)項(xiàng)目設(shè)計(jì)者,所需要具備的素質(zhì)和能力并不是程序代碼編寫(xiě)的能力,當(dāng)然一般情況下,一個(gè)程序員通過(guò)不斷的總結(jié)提高達(dá)到了這種素質(zhì)的時(shí)候,他所具有的代碼編寫(xiě)能力也已經(jīng)相當(dāng)不簡(jiǎn)單了,但是請(qǐng)注意這里面的因果關(guān)系,一個(gè)高水平的項(xiàng)目設(shè)計(jì)者通常已經(jīng)是代碼編寫(xiě)相當(dāng)優(yōu)秀的人了,但是并不是一個(gè)代碼相當(dāng)優(yōu)秀的程序員就可以勝任項(xiàng)目設(shè)計(jì)的工作,這里面存在的也不是智商和課本的問(wèn)題,還是在于一個(gè)程序員在積累經(jīng)驗(yàn),逐步提升的時(shí)候沒(méi)有意識(shí)到應(yīng)當(dāng)思考哪方面的東西,沒(méi)有有意識(shí)的就項(xiàng)目的組織和復(fù)用設(shè)計(jì)進(jìn)行揣摩,沒(méi)有經(jīng)常性的文檔習(xí)慣和總結(jié)習(xí)慣,不改變這些,我們的合格的項(xiàng)目設(shè)計(jì)者還是非常欠缺。

              另外,為防止有無(wú)聊的人和我較真,補(bǔ)充一點(diǎn),本文針對(duì)目標(biāo)是作商業(yè)化的軟件項(xiàng)目和工程,那些科研機(jī)構(gòu)的編程高手,比如算法高手,比如圖象處理高手,他們的工作是研究課題而非直接完成商業(yè)軟件(當(dāng)然最終間接成為商業(yè)產(chǎn)品,比如微軟研究院在作的研究課題),因此他們強(qiáng)調(diào)的素質(zhì)可能是另外的東西,這些人(專家),并不能說(shuō)是程序員,不能用程序員的標(biāo)準(zhǔn)去衡量。

            posted @ 2009-05-20 10:36 Condor 閱讀(776) | 評(píng)論 (2)編輯 收藏

            一個(gè)犁牛半塊田,收也憑天,荒也憑天
            粗茶淡飯飽三餐,早也香甜,晚也香甜
            布衣得暖勝絲綿,長(zhǎng)也可穿,短也可穿
            草舍茅屋有幾間,行也安然,待也安然
            雨過(guò)天青駕小船,魚(yú)在一邊,酒在一邊
            夜歸兒女話燈前,今也有言,古也有言
            日上三竿我獨(dú)眠,誰(shuí)是神仙,我是神仙
            南山空谷書(shū)一卷,瘋也癡癲,狂也癡癲

            posted @ 2009-05-19 21:35 Condor 閱讀(510) | 評(píng)論 (0)編輯 收藏

            最近沒(méi)啥好八卦的,拿這個(gè)來(lái)充數(shù).HOHO.0day在文章最后面.

            |=---------------------------------------------------------------------------=|
            |=----------------------=[       專訪wordexp       ]=---------------------=|
            |=---------------------------------------------------------------------------=|
            |=---------------------------------------------------------------------------=|
            |=-------------------=[           By wordexp            ]=------------------=|
            |=---------------------------------------------------------------------------=|

            [目錄](méi)
            1. 據(jù)您所知現(xiàn)在都還有哪些嚴(yán)重的0DAY沒(méi)被公開(kāi)?
            2. 挖漏洞有什么竅門(mén)?可以具體談?wù)刦uzzer怎樣構(gòu)造樣本么?
            3. 請(qǐng)問(wèn)您對(duì)0day市場(chǎng)有什么看法?
            4. 您建立wordexp這個(gè)blog的初衷是什么?為什么叫wordexp,而不是pdfexp或者是exclexp?
            5. 請(qǐng)問(wèn)0day是咋來(lái)的?
            6. 請(qǐng)問(wèn)在安全圈子誰(shuí)是您的偶像?
            7. 請(qǐng)問(wèn)溢出這面紅旗還能打多久?
            8. 您對(duì)我們雜志以及我們小組的發(fā)展有什么建議?
            一、據(jù)您所知現(xiàn)在都還有哪些嚴(yán)重的0DAY沒(méi)被公開(kāi)?
                主流應(yīng)用軟件方面目前微軟公司的IE6/7和PPT 2003 SP3前一陣子就有EXP在外面跑了,
            adobe公司的FLASH產(chǎn)品中也有一個(gè)能被利用的漏洞,拿到的人應(yīng)該也不少,往后的一到三個(gè)月
            內(nèi)就應(yīng)該出補(bǔ)丁或是有相關(guān)新聞,當(dāng)然以我們目前的視界能看到的只有很少很少的一部分,其
            實(shí)國(guó)外的很多安全機(jī)構(gòu)比如:idefense和zdi可以確定還有不少?zèng)]被公開(kāi)的漏洞,只是這些漏
            洞可能并不是我們想象的那么通用,成功率也許有限。
                其實(shí)經(jīng)常聽(tīng)到朋友問(wèn)這個(gè)問(wèn)題,說(shuō)白了就是個(gè)消息的打聽(tīng),這個(gè)一方面要提高自已的敏感
            度,注意隨時(shí)關(guān)注國(guó)內(nèi)外相關(guān)網(wǎng)站的新聞,比如NORTON和MCAFEE的網(wǎng)站經(jīng)常有一些抓到的0DAY
            樣本的新聞,有時(shí)還有一些細(xì)節(jié)。還有就是消息的共享,你提前能知道消息并告知朋友,以后
            也許人家也會(huì)這樣對(duì)你。
            二、挖漏洞有什么竅門(mén)?可以具體談?wù)刦uzzer怎樣構(gòu)造樣本么?
                這個(gè)問(wèn)題太為難我了,很多人比我更有資格回答這個(gè)問(wèn)題。我只是斗膽胡說(shuō)幾句。
                要說(shuō)竅門(mén),應(yīng)該是不同軟件的洞竅門(mén)還不一樣,然后還要看挖洞的目的,如果是為了出名
            在bugtraq之類的郵件列表上能多露幾次臉,那么可以盡可能的找那種用戶少關(guān)注少的軟件特
            別是WEB腳本程序的洞。如果是公司有任務(wù)必須往CVE、MS上報(bào)多少條漏洞那么可以找大公司
            的二三線產(chǎn)品的漏洞或是有一定用戶數(shù)但版本很久不更新的軟件的洞,而且這些洞是不一定
            要可利用的。如果是為了混zdi、idefense那么可以把fuzz到的POC只要看起來(lái)有可能被利用
            的都提交上去,也可以找默認(rèn)情況下不支持的功能的洞,多少可以騙點(diǎn)錢(qián)。
                如果是要挖賣得出去也能利用的洞,比較通用的一些竅門(mén)我能想到的是:
                1. 找大眾軟件生僻功能,生僻協(xié)議/文件格式的洞
                2. 找?guī)缀鯖](méi)有文檔化的功能的洞
                3. 新版本軟件為了向下兼容所支持的老協(xié)議/老文件格式的洞
                4. 新版本軟件增加的新功能/新格式
                5. 不容易fuzz到的洞,比如數(shù)據(jù)是加密/壓縮/編碼過(guò)的,或是有驗(yàn)效的
                6. 某軟件某功能剛出了漏洞,馬上測(cè)試其它同類軟件同類功能是否有類似漏洞
                7. 多分析老漏洞,善于總結(jié)前人挖漏洞的經(jīng)驗(yàn)技巧,很多不同的洞其實(shí)都有相類似的發(fā)
                掘方式和思路
                第二個(gè)問(wèn)題,我以文件型漏洞舉例子,fuzz樣本的構(gòu)造,首先是按照上述幾個(gè)竅門(mén)來(lái)生成
            原始模版,這樣相對(duì)可以弄出一些人家不太容易fuzz到的數(shù)據(jù)格式結(jié)構(gòu),當(dāng)然在生成原始模版
            的前期功課也是很花時(shí)間的。做好樣本后就是寫(xiě)具體的fuzz程序, 如果對(duì)文件格式比較熟,
            那么可以節(jié)約很多的時(shí)間,我比較喜歡的一個(gè)辦法是fuzz某一些功能的洞,那么就先看格式,
            把數(shù)據(jù)在文件中的位置先手工定位,然后小粒度的測(cè)試,要注意的是可能與某功能相關(guān)聯(lián)的數(shù)
            據(jù)比較雜亂數(shù)據(jù)很可能并不是連續(xù)存放的。一般1-4KB的數(shù)據(jù)要不了多少時(shí)間就可以手工測(cè)
            試完畢。另外具體測(cè)試時(shí),數(shù)據(jù)替換的長(zhǎng)度(一次替換幾個(gè)字節(jié)),替換的內(nèi)容也是非常重要的。
            為此我們將提供一個(gè)PPT 2003 sp3的“0day”poc,在這個(gè)“0day”中數(shù)據(jù)替換的步進(jìn)就必須為1
            字節(jié),而且值也必須為一個(gè)固定的值才能觸發(fā)出錯(cuò)。最后要注意的就是錯(cuò)誤的捕捉,有些洞是
            打開(kāi)就退出進(jìn)程,有些是打開(kāi)要停頓一定時(shí)間才退出進(jìn)程,有些是CPU 100%程序掛起,有些是
            關(guān)閉時(shí)觸發(fā),甚至有些是文檔打開(kāi)后進(jìn)行某種操作才會(huì)觸發(fā),當(dāng)然還有一種情況進(jìn)程不退出,
            也沒(méi)有提示,也不出錯(cuò),象這種情況一般依靠進(jìn)程/窗口/CPU來(lái)檢測(cè)錯(cuò)誤的fuzz就失效了。
            三、請(qǐng)問(wèn)您對(duì)0day市場(chǎng)有什么看法?
                很復(fù)雜的一個(gè)圈子,搞技術(shù)的不搞技術(shù)的啥人都有,不過(guò)目前看來(lái)很多都是為了各種利益
            混這個(gè)圈子。簡(jiǎn)單說(shuō)就是:
                池塘不大但人雜,水深。
            四、您建立wordexp這個(gè)blog的初衷是什么?為什么叫wordexp,而不是pdfexp或者是exclexp?
                初衷就是團(tuán)隊(duì)成員工作之余發(fā)發(fā)勞騷,聊聊八卦的地方,希望大家別見(jiàn)怪。另外這個(gè)名字
            是因?yàn)槲覀儙讉€(gè)人搞客戶端的漏洞都比較多,所以隨便就取了這么個(gè)名字。
            五、請(qǐng)問(wèn)0day是咋來(lái)的?
                最初當(dāng)然是某個(gè)人找出來(lái)的。從這個(gè)0DAY的發(fā)掘者到最終的用戶中間可能會(huì)只有一層關(guān)
            系,也可能會(huì)有N層關(guān)系,也許直到這個(gè)0DAY被補(bǔ)上,使用者也不知道洞是誰(shuí)挖到的。下面舉幾
            個(gè)例子吧:
                情況一:A挖到一個(gè)0day,但對(duì)黑產(chǎn)沒(méi)有了解或接觸,或者也不想靠這個(gè)賺錢(qián),或者覺(jué)得漏
            洞不值錢(qián),或者壓根以為漏洞不能夠被利用,那么A有可能把這個(gè)漏洞公開(kāi)給類似PST的網(wǎng)站,
            網(wǎng)站上的代碼通常是POC或是只有一部分細(xì)節(jié)。這時(shí)黑產(chǎn)中的漏洞研究者B,很快會(huì)看到這個(gè)
            消息,并且分析POC然后寫(xiě)出EXP。隨后B再聯(lián)系具體的使用者C或是自已使用。最終或是因?yàn)?br>這個(gè)0DAY的POC被公開(kāi),也或許因?yàn)镋XP被殺毒軟件公司抓到樣本等等,軟件廠商推出補(bǔ)丁。在
            這個(gè)過(guò)程中B可能是一個(gè)人也可能是很多水平各不相同的人,所以公開(kāi)的0DAY的EXP有時(shí)是千
            差萬(wàn)別,有的好用,有的很差。
                情況二:A是黑產(chǎn)中的一員,挖到一個(gè)0DAY并賣給X,或是接受使用者X的定制并找到0DAY,
            X偷偷的使用0DAY,這樣的情況一般0DAY的生存期會(huì)比較長(zhǎng)一些,因?yàn)檫@才算是真正的私洞,知
            道的人不多。但是在X的使用中,EXP可能被別的黑產(chǎn)從業(yè)者Y抓到樣本,然后Y把樣本提供給技
            術(shù)員T分析并重新寫(xiě)出EXP,而成果Y和T分享。這時(shí)T可能再次把EXP賣給其它的黑產(chǎn)使用者W,
            同樣X(jué)或Y在使用一段時(shí)間后也可能交換或者再出手給其它的買家,而且這個(gè)過(guò)程是可以無(wú)限
            次重復(fù)的,當(dāng)然時(shí)間越久知道的人越多,0DAY就越掉價(jià)。
                情況三:白帽子A挖到一個(gè)0day,并提交給軟件廠商B。假設(shè)A是個(gè)真真正正的白帽子,也假
            設(shè)這個(gè)0day的確也只被A發(fā)現(xiàn)了,但0day到了廠商B那兒,最終會(huì)找公司內(nèi)負(fù)責(zé)安全的部門(mén)對(duì)漏
            洞進(jìn)行研究,假設(shè)這個(gè)公司內(nèi)部的研究者是C,C有可能在圈子中也有其它從事黑產(chǎn)的朋友或是
            自已本身就偷偷的在參與黑產(chǎn),那么在金錢(qián)或是感情的作用下C完全有可能違背道德,寫(xiě)出EXP
            出售或是使用。象這種情況,0day可能剛出來(lái)沒(méi)幾天就被補(bǔ)上了,或者圈子里的很多人根本就
            沒(méi)機(jī)會(huì)見(jiàn)到0day,知道有這么個(gè)東東的時(shí)候早就被補(bǔ)上了。
                情況四:軟件廠商B在代碼審計(jì)或軟件測(cè)試過(guò)程中發(fā)現(xiàn)了漏洞,自已在新版本中偷偷的補(bǔ)
            上了漏洞,但并沒(méi)有在相對(duì)老的版本中打補(bǔ)丁,也沒(méi)有公開(kāi)任何細(xì)節(jié)和公告。 研究人員A通過(guò)
            補(bǔ)丁比較,直接定位出老版本中的漏洞位置,然后動(dòng)態(tài)調(diào)試找到觸發(fā)方式,并寫(xiě)出EXP,由于很
            多情況下老版本的軟件反而用戶更多,所以這樣的0day還是有一定的價(jià)值。
                情況五:研究員A挖到了一個(gè)Nday而這個(gè)Nday以前在圈內(nèi)并不為人所知,或是研究員A研究
            出某Nday的新利用方式,比如說(shuō)可以和某某軟件結(jié)合看起來(lái)和以前的EXP完全不一樣,或是成
            功率有很大的提高。研究員A以較低的價(jià)格出售給中間人B。B拿到EXP后,發(fā)現(xiàn)圈內(nèi)還沒(méi)人有,
            成功率各方面也還不錯(cuò),于是號(hào)稱0day到處叫賣。如果買家發(fā)現(xiàn)問(wèn)題,B就裝傻說(shuō)自已也上當(dāng)
            了。現(xiàn)在象B這樣的人其實(shí)也是不少的, 因?yàn)楹芏嘧罱K用戶對(duì)技術(shù)并不是特別懂,而且有些
            Nday測(cè)試起來(lái)也不是那么簡(jiǎn)單,如果剛好EXP效果不錯(cuò),可能就忽悠過(guò)去了。那么我們能看到
            的情況就是,江湖傳言又出了個(gè)0day,或是某某手上有0day,但等呀等就是見(jiàn)不到東東,最終傳
            言不了了之或是被人家揭發(fā)出來(lái)。
                所以要搞到0day可以自已挖,可以補(bǔ)丁比較,也可以分析已公開(kāi)信息快速寫(xiě)出EXP,可以買,
            也可以換,不要命也可以偷搶騙,技術(shù)手段非技術(shù)手段都是可能的。也正是因?yàn)樯鲜銮闆r的多
            樣性,所以經(jīng)常有不怎么搞技術(shù)的人,手上也有些0day。
            六、請(qǐng)問(wèn)在安全圈子誰(shuí)是您的偶像?
                我的偶象是那種啥技術(shù)不懂,還能發(fā)大財(cái)?shù)模籔F不行。
            七、請(qǐng)問(wèn)溢出這面紅旗還能打多久?
                僅僅是溢出這塊,我們團(tuán)隊(duì)里面意見(jiàn)也大不相同,另外幾個(gè)成員還是比較樂(lè)觀的,如果比
            較全面的分析這個(gè)問(wèn)題,首先要看站在什么人的角度來(lái)看這個(gè)問(wèn)題,是黑產(chǎn)工作者是安全公司
            還是軟件生產(chǎn)商。假設(shè)以黑產(chǎn)工作者的角度來(lái)看,那么我是非常非常悲觀的,因?yàn)橐绯雎┒磸?br>技術(shù)角度上說(shuō):有一個(gè)通用性和成功率的問(wèn)題,直觀的說(shuō)就是有一個(gè)效果的問(wèn)題,再深一點(diǎn)說(shuō)
            就是經(jīng)濟(jì)成本的問(wèn)題。往后走溢出漏洞單從個(gè)數(shù)上說(shuō)還是會(huì)有很多的。但是現(xiàn)在從編譯器和
            OS(/GS、/SafeSEH、/DYNAMICBASE、DEP、PEB隨機(jī)等等)到CPU(NX),軟件公司和硬件廠商已
            經(jīng)越來(lái)越關(guān)注安全問(wèn)題,幾十年來(lái)溢出漏洞最關(guān)鍵的命脈無(wú)非是數(shù)據(jù)能夠被當(dāng)做代碼來(lái)執(zhí)行,
            以前這一點(diǎn)基本上不被軟硬件廠商所重視,這幾年來(lái)人家開(kāi)始重視了,開(kāi)始從體系上解決這個(gè)
            問(wèn)題,那么這個(gè)命脈也將因?yàn)楦鞣N防范檢測(cè)技術(shù)的運(yùn)用被卡得越來(lái)越死,另外現(xiàn)在很多軟件也
            有自動(dòng)升級(jí)功能了。
                往后走是個(gè)什么樣的情況,我想應(yīng)該是上面提到的各種技術(shù)隨著新型CPU和OS的占有率越
            來(lái)越高,被越來(lái)越多的應(yīng)用。一個(gè)溢出漏洞的成功率將會(huì)大大下降,再加上主流軟件公司的產(chǎn)
            品也越來(lái)越安全,以后那種一個(gè)漏洞打天下的局面將會(huì)越來(lái)越少(現(xiàn)在黑產(chǎn)工作者的網(wǎng)馬都是
            漏洞合集了,無(wú)非就是提高成功率),具體的情況也許就是現(xiàn)在我有一個(gè)IE的0DAY,100個(gè)人看
            也許能中10-20個(gè),以后可能手上能用的就變成某個(gè)第三方控件的0DAY,100個(gè)人看網(wǎng)頁(yè)就能中
            1-2個(gè)吧。當(dāng)你使用溢出漏洞的時(shí)間,人力,金錢(qián)成本和產(chǎn)出完全不成正比的時(shí)候,也基本上算
            溢出這面紅旗倒下的時(shí)候。
                估計(jì)也就三四年以后,具體指標(biāo)就是上面提到的各種檢測(cè)技術(shù)的普及率,至少往后的發(fā)展
            不會(huì)是車到山前必有路。如果把挖溢出漏洞當(dāng)成一個(gè)產(chǎn)業(yè),也就是個(gè)夕陽(yáng)產(chǎn)業(yè)。
            八、您對(duì)我們雜志以及我們小組的發(fā)展有什么建議?
                不走商業(yè)路線是正確的,反正你們那群人也不差錢(qián),就不定期搞搞科普工作吧,為普及中
            國(guó)安全事業(yè)做點(diǎn)貢獻(xiàn),同時(shí)也可以鍛煉你們各方面的能力,繼續(xù)努力!
            -EOF-

            posted @ 2009-05-15 19:08 Condor 閱讀(252) | 評(píng)論 (0)編輯 收藏

            某類領(lǐng)導(dǎo)
            在我們眼里,他們沒(méi)文化,沒(méi)水平,沒(méi)魄力,他一無(wú)是處
            但是他對(duì)上級(jí)忠誠(chéng),唯命是從,鞍前馬后,忠誠(chéng)得像一條哈巴狗
            憑借著這種忠誠(chéng),甚至是卑賤,他總是有骨頭啃,總是能明目張膽地拿著雞毛當(dāng)令箭
            這種人創(chuàng)造的,往往都是一種非常壓抑的氣氛
            他不停地給你找事做,他盡可能剝奪你學(xué)習(xí)時(shí)間和上進(jìn)的機(jī)會(huì),他不希望任何他能影響的人,變得比他聰明
            你若反對(duì)他,他就變成狼狗,悄悄地卻狠狠地咬你,咬你的時(shí)候他還裝作自己也很受傷的樣子
            若有告狀的,上級(jí)領(lǐng)導(dǎo)就會(huì)出來(lái)說(shuō):“xx其實(shí)是個(gè)好人,他也不容易,相互理解支持嘛”
            年底,xx必然有各種獎(jiǎng)狀,“勤勤懇懇、大膽潑辣、敢于管理”
            等到某一天,xx求我辦事
            這事跟他切身利益直接相關(guān),我一手把握的,我才突然感覺(jué)他很可憐
            但是,誰(shuí)又來(lái)可憐我呢
            山不轉(zhuǎn)路轉(zhuǎn),路不轉(zhuǎn)水轉(zhuǎn),水不轉(zhuǎn)人轉(zhuǎn),終于轉(zhuǎn)到老子手上
            呵呵,不符合游戲規(guī)則的,沒(méi)辦法處理的,統(tǒng)統(tǒng)法辦
            相信你肯定可以理解我的
            就像當(dāng)年我可以理解你的那樣
            組織,是有胸懷的
            每一個(gè)人,總是要有覺(jué)悟和勇氣為自己的所作所為付出代價(jià)的
            不能把握的東西,你還不如不去占有

            評(píng)論:出來(lái)混總是要還的。這種領(lǐng)導(dǎo)一般還有一些特性,比如中飽私囊、成事不足敗事有余。

            posted @ 2009-05-14 17:40 Condor 閱讀(508) | 評(píng)論 (0)編輯 收藏

                 摘要: 1.缺乏信任       該問(wèn)題源于成員大都害怕成為別人攻擊的對(duì)象。大家不愿意互相敞開(kāi)心扉,承認(rèn)自己的缺點(diǎn)和弱項(xiàng),導(dǎo)致無(wú)法建立相互信任的基礎(chǔ) 2.懼怕沖突       缺乏信任的團(tuán)隊(duì)無(wú)法進(jìn)行直接而熱烈的思想交鋒,取而代之的是毫無(wú)針對(duì)性的討論一級(jí)無(wú)關(guān)痛癢的意見(jiàn)。 3.欠缺投入   ...  閱讀全文

            posted @ 2009-05-06 20:27 Condor 閱讀(1396) | 評(píng)論 (2)編輯 收藏

            《榮枯鑒》 

            馮道 著
            東東槍 譯
             
            ·圓通卷一
             
            善惡有名,智者不拘也。
            善惡這種事兒都有個(gè)定義,但真正有智慧的人根本不理會(huì)。
             
            天理有常,明者不棄也。
            世上什么事兒都有個(gè)規(guī)律,真正的明白人不會(huì)隨意視而不見(jiàn)、自以為是。
             
            道之靡通,易者無(wú)虞也。
            是不是合乎道理,順應(yīng)變化的人根本也不關(guān)心這個(gè)。
             
            惜名者傷其名,惜身者全其身。
            珍視名聲者,名譽(yù)易損,愛(ài)惜自己者,保全自身。
             
            名利無(wú)咎,逐之非罪,過(guò)乃人也。
            名利不是壞事,追名逐利也不是罪過(guò),以此為惡是人的主觀想法而已。
             
            君子非貴,小人非賤,貴賤莫以名世。
            君子沒(méi)什么可自以為尊貴的,小人也沒(méi)什么低賤的,尊貴還是低賤都是虛名,不足以稱道一世。
             
            君子無(wú)得,小人無(wú)失,得失無(wú)由心也。
            君子不一定就能得到什么,小人也不一定會(huì)失去什么,得到、失去,跟思想境界也毫無(wú)關(guān)系。
             
            名者皆虛,利者惑人,人所難拒哉。
            名譽(yù)都是虛的,利益才能真正誘人,是人就難以抗拒。
             
            榮或?yàn)榫樱荼貫樾∪恕?/div>
            事成顯貴的,有可能會(huì)被傳頌為君子;身敗落魄的,必定會(huì)被當(dāng)作小人。
             
            君子無(wú)及,小人乃眾,眾不可敵矣。
            因此,君子永遠(yuǎn)是少數(shù)(因?yàn)榧词钩晒σ膊欢际蔷樱∪擞肋h(yuǎn)是多數(shù),多數(shù)人的力量,無(wú)可抗拒。
             
            名可易事難易也,心可易命難易也,人不患君子,何患小人焉?
            名譽(yù)容易轉(zhuǎn)變,思想境界可以變化,但事情的成敗、人生的命運(yùn),卻難以更改。反正君子小人不是根本問(wèn)題,你覺(jué)得當(dāng)君子受苦沒(méi)有什么不好,當(dāng)小人來(lái)享福又有什么可怕的呢?反正名譽(yù)根本都不靠譜。
             
             
            ·聞達(dá)卷二
             
            仕不計(jì)善惡,遷無(wú)論奸小。
            做官不做官,升職不升職這類事情,根本不是以善還是惡、君子還是小人來(lái)作為判斷標(biāo)準(zhǔn)的。
             
            悅上者榮,悅下者蹇。
            讓上邊的領(lǐng)導(dǎo)高興的,日子必定好過(guò);讓下邊的群眾高興的,碰到的困難卻會(huì)更多。
             
            君子悅下,上不惑名。
            君子讓下邊的群眾高興,可上頭的領(lǐng)導(dǎo)并不覺(jué)得你在群眾里的好名聲有什么意義。
             
            小人悅上,下不懲惡。
            小人討好上頭的領(lǐng)導(dǎo),下邊的群眾可能會(huì)反感,但是,這樣的反感并不能對(duì)你有任何損傷。
             
            下以直為美,上以媚為忠。
            下邊的群眾以道德高尚剛正不阿為美德,上頭的領(lǐng)導(dǎo)會(huì)把諂媚順應(yīng)當(dāng)做忠誠(chéng)。
             
            直而無(wú)媚,上疑也;媚而無(wú)直,下棄也。
            道德高尚,但是毫不順應(yīng)領(lǐng)導(dǎo),上頭就該不信任你了;順應(yīng)領(lǐng)導(dǎo),但是讓下頭人覺(jué)得你不地道,下頭人就該反對(duì)你了。
             
            上疑禍本,下棄毀譽(yù),榮者皆有小人之謂,蓋固本而舍末也。
            可是,上頭不信任你,你就完了——這是根本,下頭反對(duì)你,頂多是給你來(lái)個(gè)壞名譽(yù)——無(wú)所謂的事兒。因此,那些功成名就大富大貴的人都難免被人稱作小人,就是因?yàn)樗麄冞x擇了保住根本,顧不得那些沒(méi)有意義的名譽(yù)了。
             
            富貴有常,其道乃實(shí)。
            想富貴么?規(guī)律很簡(jiǎn)單:一切從實(shí)際出發(fā)。
             
            福禍非命,其道乃察。
            禍福其實(shí)并非命運(yùn)注定,也有規(guī)律可循:看你是否善于觀察和判斷。
             
            實(shí)不為虛名所羈,察不以奸行為恥。
            一切從實(shí)際出發(fā),就別受那些毫無(wú)實(shí)際意義的虛名的束縛。善于觀察判斷,就別老以壞人壞事為恥辱,那會(huì)搞得很不客觀。
             
            無(wú)羈無(wú)恥,榮之義也。
            沒(méi)有名譽(yù)的羈絆,沒(méi)有恥辱感的束縛,你離顯貴發(fā)達(dá)也就不遠(yuǎn)了。
             
            求名者莫仕,位非名也。
            要是真想追求名譽(yù),你就別去當(dāng)官,好名譽(yù)不是當(dāng)官兒可以當(dāng)出來(lái)的。
             
            求官者莫名,德非榮也。
            要是真想當(dāng)官,你就別管什么名譽(yù)了,道德高尚跟富貴榮華是兩碼事兒。
            君子言心,小人攻心,其道不同,其效自異哉。
            君子講的是道德、理念,小人則專門(mén)對(duì)付這種道德理念,價(jià)值觀不同,行為不同,結(jié)果自然不同。
             
             
            ·解厄卷三
             
            無(wú)憂則患烈也。
            什么都不操心,你就離倒霉不遠(yuǎn)了。
             
            憂國(guó)者失身,憂己者安命。
            不過(guò),操心根操心不一樣。為國(guó)家操心的人,只能把自己搭上;為自己操心的人,卻能樂(lè)享安然。
             
            禍之人拒,然亦人納;禍之人怨,然亦人遇。
            禍?zhǔn)率侨瞬幌胍模彩侨俗哉业模巳硕加憛捰械準(zhǔn)拢巳硕茧y免碰上。
             
            君子非惡,患事無(wú)休;小人不賢,余慶弗絕。
            君子不做壞事兒,但倒霉事兒一個(gè)接一個(gè),小人不干什么好事兒,卻能夠常年樂(lè)樂(lè)呵呵。
             
            上不離心,非小人難為;下不結(jié)怨,非君子勿論。
            讓上頭領(lǐng)導(dǎo)對(duì)自己完全放心,不是小人就難以做到;讓下頭群眾不怨恨自己,不是君子您就別想了。
             
            禍于上,無(wú)辯自罪者全。禍于下,爭(zhēng)而罪人者免。
            上頭要找別扭的時(shí)候,只有裝孫子認(rèn)罪才能保全自己;要是下頭起了負(fù)面意見(jiàn),就只有搶先把責(zé)任推到別人頭上,裝好人,才能免去責(zé)任。
             
            君子不黨,其禍無(wú)援也。小人利交,其利人助也。
            君子不愛(ài)拉幫結(jié)伙,所以,真有了禍?zhǔn)拢瑳](méi)人會(huì)幫助君子。小人有一大幫酒肉朋友,成事解圍,全都靠這幫人幫助。
             
            道義失之無(wú)懲,禍無(wú)解處必困,君子莫能改之,小人或可諒矣。
            不講道義不會(huì)造成什么實(shí)際的惡果,有了禍?zhǔn)聸](méi)人幫可就必然倒霉。做君子倒了霉只能束手無(wú)措,所以,大家選擇做小人,也就是可以理解的了。
             
             
            ·交結(jié)卷四
             
            智不拒賢,明不遠(yuǎn)惡,善惡咸用也。
            真正的聰明人不拒絕好人,也不疏遠(yuǎn)壞人,這兩款都有用。
             
            順則為友,逆則為敵,敵友常易也。
            都是拿順應(yīng)自己的人當(dāng)朋友,拿反對(duì)自己的人當(dāng)敵人——敵人朋友是隨時(shí)可以轉(zhuǎn)化的。
             
            貴以識(shí)人者貴,賤以養(yǎng)奸者賤。
            用尊重的態(tài)度看待別人的人,日后將發(fā)達(dá)顯貴,用輕賤的態(tài)度對(duì)待別人,日后難免潦倒。
             
            貴不自貴,賤不自賤,貴賤易焉。
            顯貴的人不自重,不知道擺出個(gè)尊貴的樣子來(lái),而潦倒的人不做輕賤別人的賤事兒,貴賤就該掉個(gè)兒了。
             
            貴不賤人,賤不貴人,貴賤久焉。
            顯貴的人永遠(yuǎn)不輕視別人,潦倒的人永遠(yuǎn)不尊重別人,貴賤就這么一直下去了。
             
            人冀人愚而自明,示人以愚,其謀乃大。
            人盼著別人傻自己聰明,但還是成天裝傻給人看,這是真正有主意的人。
             
            人忌人明而自愚,智無(wú)潛藏,其害無(wú)止。
            不樂(lè)意別人機(jī)靈自己傻,就玩兒命抖機(jī)靈,這就純屬作死。
             
            明不接愚,愚者勿長(zhǎng)其明。
            聰明的人不接觸傻子,接觸傻子不會(huì)讓聰明人變得更聰明。
             
            智不結(jié)怨,仇者無(wú)懼其智。
            有智慧的人不跟人結(jié)仇,仇人不會(huì)因?yàn)槟懵斆骶团履恪?/span>
             
            君子仁交,惟憂仁不盡善。小人陰結(jié),惟患陰不制的。
            君子人用仁義與人交往,生怕自己不夠仁義;小人滿懷陰損與人交往,生怕陰損的不夠,達(dá)不到目的。
             
            君子弗勝小人,殆于此也。
            君子注定吃小人的虧,就是因?yàn)檫@個(gè)。
             
            ·節(jié)儀卷五
             
            外君子而內(nèi)小人者,真小人也。
            外表君子作派,內(nèi)心小人肚腸的,這是真小人。
             
            外小人而內(nèi)君子者,真君子也。
            行事手段并不比小人差,內(nèi)心卻有君子情懷的,這才配稱真君子。
             
            德高者不矜,義重者輕害。
            道德高尚的人以道德高自居,就不太知道保重自己,看重仁義的人太重仁義,總是忽視自己面對(duì)的危害。
             
            人慕君子,行則小人,君子難為也。
            人們滿嘴說(shuō)的都是仰慕君子,辦出來(lái)的卻還都是小人事兒,那誰(shuí)要真當(dāng)君子,誰(shuí)就該倒霉了。
             
            人怨小人,實(shí)則忘義,小人無(wú)羈也。
            人們口口聲聲憎惡小人,實(shí)際上做事情還是不仁不義,也就是說(shuō),做小人其實(shí)是沒(méi)有任何阻礙的——憎惡全是空喊。
             
            難為獲寡,無(wú)羈利豐,是以人皆小人也。
            可誰(shuí)也不愿意當(dāng)?shù)姑沟埃驗(yàn)榈姑沟氨葎e人倒霉,誰(shuí)都愿意沒(méi)有任何阻礙,因?yàn)闆](méi)有任何阻礙就比別人牛B,所以,所有人就都成了小人了。
             
            位高節(jié)低,人賤義薄。
            社會(huì)階層越高,氣節(jié)越低——因?yàn)橐b孫子;人越貧賤,義氣越是狗屁——因?yàn)橄纫钪?/span>
             
            君子不堪辱其志,小人不堪壞其身。
            君子最受不了的是精神屈辱,小人最受不了的是身體上的困苦。
             
            君子避于亂也,小人達(dá)于朝堂。
            所以,一有亂子,君子就躲起來(lái)自保高潔去了,小人卻常能當(dāng)上國(guó)家領(lǐng)導(dǎo)。
             
            節(jié)不抵金,人困難為君子。
            氣節(jié)比不上金錢(qián)實(shí)在,所以,人一窮了,就做不成君子——因?yàn)橹v不起氣節(jié)。
             
            義不抵命,勢(shì)危難拒小人。
            義氣也不如生命重要,所以,身處危困就沒(méi)辦法不當(dāng)小人,因?yàn)榛蠲匾?/span>
             
            不畏人言,惟計(jì)利害,此非節(jié)義之道,然生之道焉。
            不管別人如何夸獎(jiǎng)或批評(píng),只管自己的利益存亡,這不是追求氣節(jié)仁義的道理,卻是能讓你安身立命、生存下來(lái)的道理。
             
             
            ·明鑒卷六   
             
            福不察非福,禍不預(yù)必禍。
            有福氣,可你自己不知道,這就白費(fèi)。有禍?zhǔn)拢阕约翰荒茴A(yù)先避免,那就準(zhǔn)得倒霉。
             
            福禍先知,事盡濟(jì)耳。
            要是福禍都能提前預(yù)知,那就牛B了。
             
            施小信而大詐逞,窺小處而大謀定。
            偶爾裝裝實(shí)在,大陰謀就能得逞;多偷偷看看細(xì)節(jié),大的決策就能搞定。
             
            事不可絕,言不能盡,至親亦戒也。
            做事情要留后路,說(shuō)話要留半句,縱然是親爹也得防著點(diǎn)兒。
             
            佯懼實(shí)忍,外恭內(nèi)忌,奸人亦惑也。
            心里頭有火兒也要憋著,假裝畏懼,心里頭滿是仇恨也得藏著,假裝恭敬,您要能這么辦,壞心眼兒再多的人也得上當(dāng)。
             
            知戒近福,惑人遠(yuǎn)禍,俟變則存矣。
            知道克制自己的表現(xiàn)、學(xué)會(huì)迷惑人,就可以少惹事兒、多成事兒了——反正就是得會(huì)變化、會(huì)掩飾,您就放心大膽的活著吧。
             
            私人惟用,其利致遠(yuǎn)。
            只跟用得上的人套近乎,講交情,這是可以長(zhǎng)遠(yuǎn)地對(duì)你有利的。
             
            天恩難測(cè),惟財(cái)可恃。
            別指望領(lǐng)導(dǎo)的保護(hù),包括領(lǐng)導(dǎo)在內(nèi)的一切都是錢(qián)的孫子。
             
            以奸治奸,奸滅自安。
            用壞人治壞人,壞人被整死了,整人的那位自己也知道了厲害,也就老實(shí)了。
             
            伏惡勿善,其患不生。
            別干什么壞事兒,但也別傻了吧唧干什么好事兒,這樣就能永遠(yuǎn)不惹事兒。
             
            計(jì)非金者莫施,人非智者弗謀,愚者當(dāng)戒哉。
            計(jì)策不牛逼,就別一條道走到黑;要是知道誰(shuí)傻B,就別跟丫商量事兒,珍惜生命,遠(yuǎn)離傻B——如果您自己腦子就不怎么好使,那就更得注意以上這兩條兒。
             
             
            ·謗言卷七
             
            人微不諍,才庸不薦。
            職位低賤的人,沒(méi)必要老給他提意見(jiàn)幫助他成長(zhǎng),真沒(méi)什么本事的那些貨,也別到處瞎推薦,推了也沒(méi)用——該整的要整,該毀的要?dú)А?/span>
             
            攻其人忌,人難容也。
            攻擊一個(gè)人,就找他最遭人羨慕嫉妒恨的那一點(diǎn),大伙兒就都幫你毀他了。
             
            陷其窘地人自污,謗之易也。
            或者把他推到一個(gè)進(jìn)退兩難怎么辦都只有難辦的境地,別人就會(huì)替你開(kāi)始戳他脊梁骨了,這是簡(jiǎn)易誹謗法。
             
            善其仇者人莫識(shí),謗之奇也。
            好好對(duì)待那些跟他有仇的人,他們?cè)缤頃?huì)跳出來(lái)毀他,而別人又不知道跟你有關(guān)系,這就又上一個(gè)層次,算是奇招了。
             
            究其末事人未察,謗之實(shí)也。
            把別人不知道的他干過(guò)的各種小事兒揪出來(lái),挑出毛病公諸于世,這是實(shí)在有效的毀謗法。
             
            設(shè)其惡言人弗辯,謗之成也。
            把關(guān)于他的種種壞話全給散播出去,真真假假的誰(shuí)也分辨不了,這算直接毀謗成功了。
             
            謗而不辯,其事自明,人惡稍減也。
            被人毀謗,要是不爭(zhēng)辯,只等事實(shí)慢慢兒冒出來(lái),旁人的厭惡或許還能稍微減少一些。
             
            謗而強(qiáng)辯,其事反濁,人怨益增也。
            可要是他非爭(zhēng)辯不可,只能是越描越黑,純屬找死。
             
            失之上者,下必毀之;失之下者,上必疑之。
            上頭對(duì)誰(shuí)印象不好了,你看著吧,很快下邊的人也該開(kāi)始?xì)恕M瑯樱窍骂^的人對(duì)誰(shuí)不滿意了,上頭很快也將對(duì)這人產(chǎn)生懷疑。
             
            假天責(zé)人掩私,假民言事見(jiàn)信,人者盡惑焉。
            借助上頭的意見(jiàn)打壓別人實(shí)現(xiàn)自己的目的,或者借助下頭的輿論來(lái)說(shuō)事兒討取上頭的信任,任誰(shuí)都得上當(dāng)。
             
             
            ·示偽卷八
             
            無(wú)偽則無(wú)真也。
            沒(méi)有虛假,也就沒(méi)有真實(shí)。
             
            真不忌偽,偽不代真,忌其莫辯。
            真的不怕假的,因?yàn)榧俚臒o(wú)論如何也真不了,怕的是真真假假摻合一塊兒分不清楚。
             
            偽不足自禍,真無(wú)忌人惡。
            虛偽卻又虛偽的不夠,那就會(huì)給自己惹禍;真誠(chéng)要是真誠(chéng)到毫無(wú)忌諱,那就是缺心眼兒。
             
            順其上者,偽非過(guò)焉。
            順應(yīng)上頭的意思,哪怕是裝的,也不是什么過(guò)錯(cuò)。
             
            逆其上者,真亦罪焉。
            悖逆上頭的意思,哪怕是真誠(chéng),也是找倒霉。
             
            求忌直也,曲之乃得。
            要求什么東西,別說(shuō)的太直了,用點(diǎn)技巧含蓄點(diǎn),才容易成功。
             
            拒忌明也,婉之無(wú)失。
            拒絕什么東西,也別有什么說(shuō)什么,委婉點(diǎn)兒,照樣能達(dá)到目的。
             
            忠主仁也,君子仁不棄舊。
            往往會(huì)指向,仁厚的人不忍棄舊,自然也就忠了;
             
            仁主行也,小人行弗懷恩。
            往往就要起而行之,君子知道通過(guò)行動(dòng)來(lái)感恩,這就是仁,而小人就不會(huì)這樣。
             
            君子困不惑人,小人達(dá)則背主,偽之故,非困達(dá)也。
            君子落魄了也不會(huì)騙人,小人一發(fā)達(dá)了就開(kāi)始在主子背后耍花活,這是因?yàn)榫硬惶搨巍⑿∪颂搨危l(fā)達(dá)不發(fā)達(dá)毫無(wú)關(guān)系。
             
            俗禮,不拘者非偽;事惡,守諾者非信。物異而情易矣。
            如果是虛禮俗套,一副渾不吝偏不服就跟別人不一樣的姿態(tài),也不算什么虛偽,明明是壞事兒,還說(shuō)一不二一條道走到黑的,也算不上什么實(shí)誠(chéng),得具體問(wèn)題具體分析。

             
            ·降心卷九
             
            以智治人,智窮人背也。
            用智慧來(lái)管理下屬,智慧什么時(shí)候枯竭了,那些人也就都背棄你了。
             
            伏人懾心,其志無(wú)改矣。
            改用攻心,讓他們從心里、從靈魂深處被懾服住,那么無(wú)論什么時(shí)候他們也不會(huì)改變方向了。
             
            上寵者弗明貴,上怨者休暗結(jié)。
            被上頭寵信的人,別太拿自己當(dāng)回事兒;被上頭瞧不上的,也別私下解黨與上頭作對(duì)。
             
            術(shù)不顯則功成,謀暗用則致勝。
            權(quán)謀手段,隱蔽的好才能成功,要悄悄地來(lái),打槍地不要。
             
            君子制于親,親為質(zhì)自從也。
            君子的弱點(diǎn)在于他們珍愛(ài)親屬,拿他們親屬做人質(zhì)相要挾,也就從了。
             
            小人畏于烈,奸恒施自敗也。
            小人的弱點(diǎn)在于害怕比他們更狠的,你就比他們更惡毒,他們就服了。
             
            理不直言,諫非善辯,無(wú)嫌乃及焉。
            說(shuō)理、勸諫不一定是有什么說(shuō)什么或者跟人爭(zhēng)辯,別遭人恨才能達(dá)到目的。
             
            情非彰示,事不昭顯,順變乃就焉。
            有什么態(tài)度、做什么事情,也沒(méi)必要先弄得天下人都知道,順應(yīng)形勢(shì)該藏著就藏著才能成功。
             
            仁堪誅君子,義不滅小人,仁義戒濫也。
            仁義二字,能夠拖累死君子,卻滅不掉小人,還是不要濫施仁義,適度才好。
             
            恩莫棄賢者,威亦施奸惡,恩威戒偏也。
            施好處別忘了那些你以為不喜歡好處的好人,懲罰措施也別忘了給那些諂媚的壞人來(lái)點(diǎn)兒,好事兒壞事兒得摻合者來(lái),得讓吃肉的也挨挨板子,挨板子的也來(lái)點(diǎn)兒肉嘗嘗。
             
             
            ·揣知卷十
             
            善察者知人,善思者知心。
            善于觀察,就能了解人,善于思考,你才能理解人。
             
            知人不懼,知心堪御。
            了解了他們,你就不會(huì)怕他們了;理解了他們,你就已經(jīng)能搞定他們了。
             
            知不示人,示人者禍也。
            智慧別讓別人看見(jiàn),讓別人看見(jiàn)就會(huì)惹禍。
             
            密而測(cè)之,人忌處解矣。
            偷偷地猜度、揣測(cè),不讓他們知道,人們對(duì)你的嫉恨就會(huì)消除掉。
             
            君子惑于微,不惑于大。
            君子總是在大事兒上明白,小事兒上糊涂。
             
            小人慮于近,不慮于遠(yuǎn)。
            小人總是在眼前事兒上考慮多,未來(lái)的事兒上考慮少。
             
            設(shè)疑而惑,真?zhèn)慰设b焉。
            掌握了這個(gè)規(guī)律,制造些問(wèn)題給他們,看看他們的反應(yīng),你就知道誰(shuí)真誠(chéng)誰(shuí)虛偽,誰(shuí)是君子誰(shuí)是小人了。
             
            附貴而緣,殃禍可避焉。
            然后認(rèn)準(zhǔn)你覺(jué)得有前途的、能富貴的,攀附一下,以后的禍?zhǔn)戮涂梢员苊饬恕?/span>
             
            結(jié)左右以觀情,無(wú)不知也。
            結(jié)交各路朋友,留神各路的消息和反映,那就什么事兒也瞞不過(guò)你了。
             
            置險(xiǎn)難以絕念,無(wú)不破哉。
            常如身處險(xiǎn)境般心存憂患,拋掉無(wú)關(guān)的累贅想法——恭喜您,您已經(jīng)神光護(hù)體,攻無(wú)不克了。
             
            <完>

            posted @ 2009-05-06 17:36 Condor 閱讀(263) | 評(píng)論 (0)編輯 收藏

            建議準(zhǔn)備做項(xiàng)目和正在做項(xiàng)目的都來(lái)看看,吸取一下教訓(xùn)。

            1.過(guò)多的工作壓到了同一個(gè)人身上

            在很多小公司[或小項(xiàng)目組]里,總有那么一個(gè)核心程序員,負(fù)擔(dān)了幾乎所有的編程任務(wù)。這個(gè)人即使是個(gè)天才,也會(huì)被繁重的工作壓的沒(méi)有學(xué)習(xí)和自我提高的時(shí)間。

            比如設(shè)計(jì)模式這樣的思考方式也是近幾年才在中國(guó)普及開(kāi)來(lái),卻并非那么容易學(xué)習(xí)。整天迫于項(xiàng)目壓力,就無(wú)法領(lǐng)悟新的東西,去用更好的方法解決問(wèn)題。

            獨(dú)自一個(gè)人總攬大局,在項(xiàng)目后期很容易因?yàn)橄朐琰c(diǎn)結(jié)束,而把整個(gè)代碼補(bǔ)丁打得滿目滄夷,只求能解決眼前碰到的BUG而不為長(zhǎng)遠(yuǎn)的結(jié)構(gòu)穩(wěn)定去考慮了。

            結(jié)果整個(gè)工程無(wú)法分出明顯的模塊,各部分耦合度太高,牽一發(fā)而動(dòng)全身,一直到新的BUG出來(lái)后無(wú)可救藥。

            2.過(guò)分的彈性工作制

            游戲程序員好似天生追求自由的一群人,白天辦公室里經(jīng)常看不到幾個(gè)人,晚上通宵達(dá)旦地在電腦前奮戰(zhàn)。不否認(rèn)好的程序員在精神興奮的時(shí)候可以連續(xù)工作寫(xiě)出質(zhì)量不錯(cuò)的代碼,但是停下來(lái)時(shí)幾天沒(méi)有進(jìn)展也是時(shí)有發(fā)生。尤其到了項(xiàng)目后期,一旦BUG重重,程序員備受挫折,仿佛眼前的活永遠(yuǎn)都干不完,而且調(diào)試程序也失去了編寫(xiě)程序時(shí)的新鮮感,最終假借彈性工作制的名義,消極怠工拖垮項(xiàng)目的先例已經(jīng)有很多了。

            彈性工作制不等于沒(méi)有計(jì)劃,不等于可以隨意為之。在項(xiàng)目沒(méi)有進(jìn)展,而程序員卻整天不干正經(jīng)事,只知道聊天,瀏覽網(wǎng)頁(yè)的時(shí)候,程序員并非沒(méi)有心理壓力,他可能只是不知道下一步該怎么做,或是問(wèn)題太多已無(wú)從入手,這說(shuō)明項(xiàng)目已經(jīng)失控了。

            3.沒(méi)完沒(méi)了的變化,沒(méi)完沒(méi)了的返工

            大家都想把自己的作品做的更好,往往正在做的還是自己的處女作。自己的游戲做了一半,看見(jiàn)新上市的游戲有了什么新玩法,新東西,都想抄到自己的東西里來(lái)。

            新發(fā)現(xiàn)什么技術(shù)可以讓畫(huà)面效果更絢,就迫不及待地實(shí)現(xiàn)出來(lái)看看。又或者,新做出來(lái)的東西老是不滿意,三天兩頭地放棄重做,力求完美。最終,游戲老是做不完,看不到盡頭。如果從投資方來(lái)了時(shí)間壓力,最后一咬牙將有缺漏的版本交出去,等待著的是玩家沒(méi)完沒(méi)了的投訴電話。

            4.沒(méi)有及時(shí)的測(cè)試

            誰(shuí)都知道軟件做完了是需要做測(cè)試的,測(cè)試出問(wèn)題就應(yīng)該修正,這似乎是天經(jīng)地義的事情,但是落到實(shí)處,早期的國(guó)產(chǎn)游戲卻很少有嚴(yán)格的測(cè)試。因?yàn)楹芏嗳撕雎粤艘稽c(diǎn),無(wú)論是哪種軟件開(kāi)發(fā)方法,測(cè)試都不是在軟件全部開(kāi)發(fā)完畢后才進(jìn)行的。等到大家看到項(xiàng)目好像已經(jīng)完工,這時(shí)候?qū)τ螒蜃稣w的測(cè)試已經(jīng)完了。必定發(fā)現(xiàn)一大堆的BUG,已經(jīng)到了無(wú)處著手的地方,如果只是頭痛醫(yī)頭腳痛醫(yī)腳那還真的不如借這次的經(jīng)驗(yàn)教訓(xùn),把程序推倒重來(lái)做個(gè)更好的設(shè)計(jì)呢。

            5.項(xiàng)目的主導(dǎo)嚴(yán)重地偏向了某一個(gè)職位上

            早期的游戲大多是程序員主導(dǎo)整個(gè)游戲的設(shè)計(jì)的,程序員說(shuō)應(yīng)該怎么做就怎么做,說(shuō)今天要怎么改就怎么改,甚至沒(méi)有單獨(dú)的游戲策劃一職,全部由程序員包辦。

            這對(duì)小型游戲倒沒(méi)什么,對(duì)于規(guī)模較大的游戲,最終即使游戲程序本身沒(méi)有大的問(wèn)題,但是在游戲性方面卻讓玩家難以接受。作為技術(shù)人員,很容易把目光注視到技術(shù)的枝節(jié)上,而忽略了玩家的感受,大多數(shù)情況玩家并不把技術(shù)人員洋洋得意的地方放在眼里,游戲畢竟是給人玩的。

            后來(lái)又出現(xiàn)了策劃為主導(dǎo)的游戲,策劃拍腦袋一想,我們應(yīng)該加點(diǎn)什么,那么程序員就日日夜夜地加班完成。如果實(shí)在是技術(shù)解決不了的還就算了,最怕的是,本來(lái)技術(shù)解決有問(wèn)題,可能新加的設(shè)計(jì)會(huì)影響到整體的框架結(jié)構(gòu)、對(duì)硬件的過(guò)分要求等,暫時(shí)像貼皮膏藥一樣把功能補(bǔ)上去看起來(lái)工作得很好,可是早早地就給日后的持續(xù)開(kāi)發(fā)留下了隱患。程序員在實(shí)現(xiàn)的時(shí)候盲目聽(tīng)從策劃的安排,沒(méi)有仔細(xì)地全面思考,造成了項(xiàng)目無(wú)法完成。

            我也聽(tīng)說(shuō)過(guò)美術(shù)甚至市場(chǎng)人員為主導(dǎo)的項(xiàng)目,但并沒(méi)有接觸過(guò)這樣的團(tuán)隊(duì),就不太清楚會(huì)出現(xiàn)什么問(wèn)題了。

            總而言之,游戲開(kāi)發(fā)是一個(gè)需要大家共同努力的事情。我們應(yīng)該把自己的思考都帶入到開(kāi)發(fā)中,盲目地跟從別人的想法或固執(zhí)地堅(jiān)持自己都有可能影響整個(gè)項(xiàng)目。

            posted @ 2009-04-29 10:42 Condor 閱讀(628) | 評(píng)論 (1)編輯 收藏

            引言:

            GameBryo擁有一套復(fù)雜的材質(zhì)系統(tǒng),這套材質(zhì)系統(tǒng)可以根據(jù)渲染對(duì)象的狀態(tài)和屬性生成不同的shader代碼,提高了渲染流程的適應(yīng)性,可以使你定義一套材質(zhì)能適應(yīng)多種渲染對(duì)象。同時(shí),GameByro將shader的初始化和使用插件化,方便與美術(shù)工具集成,并且實(shí)現(xiàn)了平臺(tái)無(wú)關(guān)性。為了實(shí)現(xiàn)這些目的,GameByro使用了一套復(fù)雜的機(jī)制,本文主要解析GameByro如何生成、編譯并使用shader代碼。

            Shader

            GameBryo的shader的接口封裝在NiShader中,頂點(diǎn)數(shù)據(jù)流聲明,常量表的訪問(wèn),渲染狀態(tài)的設(shè)置都是通過(guò)這個(gè)類(有點(diǎn)類似于D3Deffect)。在程序運(yùn)行NiShader是由NiShaderFactory負(fù)責(zé)管理的,NiShaderFactory通過(guò)NiShaderLibrary從文件中創(chuàng)建shader,用全局性的map管理起來(lái)。NiShaderLibrary通過(guò)解析shader文本創(chuàng)建NiShader對(duì)象,并調(diào)用3D圖形接口編譯shader代碼,將這個(gè)類以dll的形式封裝,就可以作為插件來(lái)使用。NiShader類的創(chuàng)建可以通過(guò)解析文件來(lái)進(jìn)行,也可以通過(guò)C++的類來(lái)定制,只需從NiShader上繼承即可。GameByro為PC平臺(tái)提供了一個(gè)NiD3DXEffectShaderLib庫(kù),這個(gè)庫(kù)提供了解析shader文件和初始化shader對(duì)象的功能。用戶只需按GameByro定義的格式編寫(xiě)shader代碼的語(yǔ)意和注釋,NiD3DXEffectShaderLibrary就會(huì)根據(jù)文本來(lái)創(chuàng)建NiD3Dshader對(duì)象,在應(yīng)用程序中就可以通過(guò)Techinqe的名稱來(lái)訪問(wèn)這個(gè)對(duì)象。通過(guò)這種機(jī)制,我們將shader文本文件放在相關(guān)美術(shù)工具指定的目錄下,在工具中就可以使用這些shader,并且能夠通過(guò)shader的語(yǔ)意和注釋為相關(guān)參數(shù)和變量生成UI,方便美術(shù)調(diào)試。

            WIN平臺(tái)上的整個(gè)流程如下:

            1. 應(yīng)用程序在啟動(dòng)時(shí)會(huì)先初始化整個(gè)shader系統(tǒng),接下來(lái)導(dǎo)入Shader解析庫(kù)和加載庫(kù)(dll的形式)。

            2. 接下來(lái)應(yīng)用程序?qū)iD3DShader的初始化工作委托給NiShaderLibrary來(lái)處理,NiShaderLibrary首先通過(guò)NiD3DXEffectLoader載入所有的shader文本文件,并通過(guò)NiD3DXEffectParser解析文本生成NiD3DXEffectFile對(duì)象,同時(shí)NiD3DXEffectLoader還負(fù)責(zé)將shader代碼編譯成二進(jìn)制形式的GPU程序。

            3. 最后由NiD3DXEffectTechnique負(fù)責(zé)通過(guò)NiD3DXEffectFile上的信息生成NiD3Dshader對(duì)象。

            4. 所有的shader對(duì)象創(chuàng)建后,NiShaderLibrary的初始化就結(jié)束了,最后由NiShaderFactory負(fù)責(zé)統(tǒng)一管理。

            材質(zhì):

            NiMaterial為渲染對(duì)象生成和定義Shader,NiMaterialInstance為渲染對(duì)象分配 和Cach Shader。NiFragmentMaterial提供了一個(gè)Shader Tree框架,在它的繼承類中可以使用這個(gè)框架搭建shader tree。這個(gè)機(jī)制允許NiFragmentMaterial根據(jù)對(duì)象不同的渲染狀態(tài)生成不同的shader代碼,Cach在內(nèi)存中,并保存到磁盤(pán)文件。GameByro描述符的概念大量使用,包括前面提到的Shader解析過(guò)程也是通過(guò)描述符來(lái)傳遞信息。在材質(zhì)系統(tǒng)中主要使用了NiMaterialDescriptor和NiGPUProgramDescriptor這個(gè)兩個(gè)類做描述符,這兩個(gè)類中保存的信息是兼容的,都是為了描述某種材質(zhì)在渲染對(duì)象的某一特定渲染狀態(tài)下所對(duì)應(yīng)的GPU程序的特征。NiFragmentMaterial通過(guò)渲染目標(biāo)的狀態(tài)和屬性生成NiMaterialDescriptor,并通過(guò)NiMaterialDescriptor查找匹配的shader,如果找不到,則通過(guò)shader tree生成相應(yīng)的shader程序,并保存到磁盤(pán)文件中。當(dāng)下一次應(yīng)用程序啟動(dòng)時(shí)就可以通過(guò)這個(gè)文件直接創(chuàng)建NiShader對(duì)象。可以說(shuō)通過(guò)NiFragmentMaterial生成的shader代碼是為特定的渲染對(duì)象在特定的情況下量身打造的。

            整個(gè)過(guò)程的詳細(xì)流程如下:

            1. 在每次渲染一個(gè)物體之前,NiMaterialInstance會(huì)先判斷這個(gè)物體的shader程序是否需要更新,如果不需要更新,就直接返回當(dāng)前Cach的NiShader;如果需要更新, NiMaterialInstance首先會(huì)根據(jù)物體的渲染狀態(tài)為其生成一個(gè)NiMaterialDescriptor,然后將這個(gè)NiMaterialDescriptor和當(dāng)前Cach住的NiShader進(jìn)行比較,如果匹配仍然返回當(dāng)前Cach的NiShader,如果不匹配,將獲得shader的工作轉(zhuǎn)交給NiMaterial進(jìn)行。

            2. NiMaterial首先通過(guò)這個(gè)NiShaderFactory 查詢匹配這個(gè)NiMaterialDescriptor的NiShader,如果找不到,就通過(guò)NiMaterialDescriptor生成NiShader,同時(shí)生成一段Shader代碼,并保存到以shader描述符中的特征碼來(lái)命名對(duì)應(yīng)的shader文件。

            3. 當(dāng)獲得相應(yīng)的NiShader對(duì)象后,NiMaterialInstance會(huì)調(diào)用NiShader的SetupGeometry接口,在這個(gè)接口中會(huì)進(jìn)行頂點(diǎn)聲明。

            以下是NiMaterialInstance為Geometry選擇shader的代碼:

            NiShader* NiMaterialInstance::GetCurrentShader(NiRenderObject* pkGeometry,

            const NiPropertyState* pkState,

            const NiDynamicEffectState* pkEffects)

            {

            if (m_spMaterial)

            {

            bool bGetNewShader = m_eNeedsUpdate == DIRTY;

            if (m_eNeedsUpdate == UNKNOWN)

            bGetNewShader = pkGeometry->GetMaterialNeedsUpdateDefault();

            // Check if shader is still current

            if (bGetNewShader && m_spCachedShader)

            {

            bGetNewShader = !m_spMaterial->IsShaderCurrent(m_spCachedShader,

            pkGeometry, pkState, pkEffects, m_uiMaterialExtraData);

            }

            // Get a new shader

            if (bGetNewShader)

            {

            NiShader* pkNewShader = m_spMaterial->GetCurrentShader(

            pkGeometry, pkState, pkEffects, m_uiMaterialExtraData);

            if (pkNewShader)

            {

            NIASSERT(m_spCachedShader != pkNewShader);

            ClearCachedShader();

            m_spCachedShader = pkNewShader;

            if (!pkNewShader->SetupGeometry(pkGeometry, this))

            ClearCachedShader();

            }

            else

            {

            ClearCachedShader();

            }

            }

            m_eNeedsUpdate = UNKNOWN;

            }

            return m_spCachedShader;

            }

            如果想通過(guò)NiFragmentMaterial實(shí)現(xiàn)自己的shader tree就需要在NiFragmentMaterial提供的接口中實(shí)現(xiàn)自己拼裝代碼的邏輯,代碼塊由NiMaterialLibraryNode封裝,NiMaterialLibraryNode既可以直接寫(xiě)C++代碼來(lái)定義,也可以先寫(xiě)成XML腳本,再由專門(mén)的解析工具轉(zhuǎn)換成C++代碼。

            由NiStandardMaterial生成的shader代碼文件如下圖所示:

            clip_image002

            文件名就是NiMaterialDescriptor的掩碼,用來(lái)標(biāo)識(shí)的shader代碼的行為。

            Shader代碼的行為描述如下:

            Shader description:

            APPLYMODE = 1

            WORLDPOSITION = 0

            WORLDNORMAL = 0

            WORLDNBT = 0

            WORLDVIEW = 0

            NORMALMAPTYPE = 0

            PARALLAXMAPCOUNT = 0

            BASEMAPCOUNT = 1

            NORMALMAPCOUNT = 0

            DARKMAPCOUNT = 0

            DETAILMAPCOUNT = 0

            BUMPMAPCOUNT = 0

            GLOSSMAPCOUNT = 0

            GLOWMAPCOUNT = 0

            CUSTOMMAP00COUNT = 0

            CUSTOMMAP01COUNT = 0

            CUSTOMMAP02COUNT = 0

            CUSTOMMAP03COUNT = 0

            CUSTOMMAP04COUNT = 0

            DECALMAPCOUNT = 0

            FOGENABLED = 0

            ENVMAPTYPE = 0

            PROJLIGHTMAPCOUNT = 0

            PROJLIGHTMAPTYPES = 0

            PROJLIGHTMAPCLIPPED = 0

            PROJSHADOWMAPCOUNT = 0

            PROJSHADOWMAPTYPES = 0

            PROJSHADOWMAPCLIPPED = 0

            PERVERTEXLIGHTING = 1

            UVSETFORMAP00 = 0

            UVSETFORMAP01 = 0

            UVSETFORMAP02 = 0

            UVSETFORMAP03 = 0

            UVSETFORMAP04 = 0

            UVSETFORMAP05 = 0

            UVSETFORMAP06 = 0

            UVSETFORMAP07 = 0

            UVSETFORMAP08 = 0

            UVSETFORMAP09 = 0

            UVSETFORMAP10 = 0

            UVSETFORMAP11 = 0

            POINTLIGHTCOUNT = 0

            SPOTLIGHTCOUNT = 0

            DIRLIGHTCOUNT = 0

            SHADOWMAPFORLIGHT = 0

            SPECULAR = 1

            AMBDIFFEMISSIVE = 0

            LIGHTINGMODE = 1

            APPLYAMBIENT = 0

            BASEMAPALPHAONLY = 0

            APPLYEMISSIVE = 0

            SHADOWTECHNIQUE = 0

            ALPHATEST = 0

            NiStanderMaterial就是根據(jù)這些掩碼的數(shù)據(jù)來(lái)生成shader代碼,用戶可以通過(guò)重載GenerateVertexShadeTree、GeneratePixelShadeTree、CreateShader這些接口來(lái)定義自己的shader生成規(guī)則。

            增加自己的渲染效果:

            通過(guò)前幾節(jié)我們可以了解到,想定義自己的材質(zhì),一是通過(guò)編寫(xiě)shader代碼完成。在應(yīng)用程序初始化的時(shí)候,這些shader代碼會(huì)被初始化成NiShader對(duì)象,進(jìn)一步的通過(guò)NiShader對(duì)象來(lái)初始化NiSingleShaderMaterial對(duì)象,并分配給渲染對(duì)象。在GameByro默認(rèn)的渲染流程中,這些步驟都是自動(dòng)進(jìn)行的,美術(shù)只需在3DMAX插件中為幾何體的材質(zhì)指定Shader程序,導(dǎo)出到nif文件,應(yīng)用程序就能正確加載并渲染;二是定義自己的NiMaterialFragment類,在類中定義如何生成shader,在應(yīng)用程序運(yùn)行時(shí)只要將這個(gè)類的實(shí)例指派給幾何體,這個(gè)類就會(huì)自動(dòng)為幾何體生成shader。這兩種方式對(duì)于美術(shù)人員來(lái)說(shuō),主要區(qū)別在于,采用第一種方法定義的材質(zhì),其渲染數(shù)據(jù)的設(shè)置必須嚴(yán)格符合shader代碼中所需的數(shù)據(jù),否則就會(huì)報(bào)錯(cuò)。(比如說(shuō),頂點(diǎn)數(shù)據(jù)流必須嚴(yán)格符合shader程序的定義,必須為shader中每個(gè)采樣器提供格式正確的紋理);而采用第二種方法定義的材質(zhì),就有很高的容錯(cuò)和適應(yīng)性,但是這種容錯(cuò)性和適應(yīng)性需要自己寫(xiě)代碼來(lái)完成,GameByro提供的NiStanderMaterial就提供了這套完整的機(jī)制。每個(gè)貼圖槽內(nèi)的貼圖如果你設(shè)置就會(huì)生成相應(yīng)的貼圖處理流程,如果不設(shè)置,就沒(méi)有這張貼圖的處理流程。

            為了驗(yàn)證這個(gè)過(guò)程,筆者嘗試增加了一個(gè)自己的shader特效——SubSurfaceScattering,簡(jiǎn)稱3s,其原理是模擬光在半透明物體中散射的效果。由于該效果無(wú)須預(yù)處理過(guò)程,所有的貼圖均來(lái)自磁盤(pán)文件,所以比較容易融合到GameByro工作流中。

            筆者將在FX COMPOSER中調(diào)試通過(guò)的fx文件放入SDK中的SDK\Win32\Shaders\Data目錄下,在3DMAX的材質(zhì)面板選擇GameByroShader,然后就可在顯示shader的組合框中看到文件中定義的Techinqe,選擇點(diǎn)擊apply按鈕,就會(huì)出現(xiàn)自定義的參數(shù)調(diào)整界面。

            clip_image004

            clip_image006

            通過(guò)調(diào)整參數(shù),最終得到皮膚和玉器的渲染效果如下:

            clip_image007

            皮膚

            clip_image009

            玉器

            總結(jié)

            GameByro的這套開(kāi)發(fā)流程非常方便直觀,但是美術(shù)僅能為shader程序分配靜態(tài)的數(shù)據(jù)源,比如說(shuō)光照?qǐng)D等,CubeMap等;而一些在程序中實(shí)時(shí)生成的紋理數(shù)據(jù)則無(wú)法整合到美術(shù)工具中,比如說(shuō)陰影圖、折射圖、反射圖等,這些都需要程序?qū)懘a來(lái)實(shí)現(xiàn)。調(diào)試起來(lái)就不大方便了。大部分情況下,我們只需要使用GameByro提供的NiStanderMaterial就可以完成大部分材質(zhì)的需求,特殊的效果可以自己寫(xiě)shader或者通過(guò)引擎提供的shader庫(kù)來(lái)完成,只有當(dāng)我們需要即根據(jù)復(fù)雜的情況做很多不同的處理時(shí),我們才需要重載NiFragmentMaterial搭建自己的shader tree。不過(guò)搭建shader tree的程序一般比較復(fù)雜,編寫(xiě)難度大,雖然引擎允許通過(guò)XML文件來(lái)編寫(xiě)材質(zhì)節(jié)點(diǎn),但是使用起來(lái)仍然不方便。GameByro并沒(méi)有提供相關(guān)的后期處理的開(kāi)發(fā)工具,后期處理的特效并不能所見(jiàn)即所得,這方面還需完善。

            GameByro為幾何體在特定的環(huán)境下生成專用的shader代碼,具有一定的靈活性,但是也付出了以下代價(jià):

            l 分析幾何體的屬性和當(dāng)前狀態(tài),為其生成shader代碼的過(guò)程有性能損耗。

            l Shader代碼生成后會(huì)保存到磁盤(pán)文件中,這個(gè)過(guò)程如果不使用異步,可能會(huì)引起阻塞。

            l 生成的NiShader對(duì)象會(huì)有內(nèi)存消耗。由于GameByro默認(rèn)的實(shí)現(xiàn)是將所有的shader文件初始化成NiShader對(duì)象,所以當(dāng)游戲運(yùn)行的時(shí)間久了以后會(huì)生成大量的shader文件,這時(shí)候內(nèi)存的消耗可能會(huì)很可觀,同時(shí)加載的時(shí)間也會(huì)增加。不過(guò)可以自己控制加載的流程,在這里進(jìn)行性能優(yōu)化。

            作者:葉起漣漪

            posted @ 2009-04-22 11:18 Condor 閱讀(1872) | 評(píng)論 (0)編輯 收藏

            引言

            GameByro是一款成熟的商業(yè)引擎,已經(jīng)被許多成功的商業(yè)項(xiàng)目所使用,不僅包括文明4、上古卷軸4,輻射3等跨平臺(tái)知名單機(jī)游戲,還有EA的大型3DMMORPG戰(zhàn)錘online。GameByro完全基于面對(duì)對(duì)象設(shè)計(jì),結(jié)構(gòu)清晰,便于使用和擴(kuò)展。靈活的可編程渲染架構(gòu)使它比較容易支持最新的圖形技術(shù)。另一方面,由于強(qiáng)調(diào)通用性,GameByro并沒(méi)有對(duì)上層應(yīng)用做太多的支持,其工具和插件大多僅具有一些通用功能,所以它更像是一個(gè)游戲開(kāi)發(fā)套件而不是一個(gè)完整的FrameWork。

            引擎特性概覽:

            · 跨平臺(tái)(PC,XBOX360,PS3)

            · 場(chǎng)景圖表現(xiàn)為層次化的結(jié)構(gòu)

            · 同目前主要的建模工具集成(插件支持)

            · 高效的可視性裁剪

            · 在所有的平臺(tái)上支持高級(jí)3D硬件加速

            · 高級(jí)紋理和著色效果

            · 動(dòng)態(tài)碰撞檢測(cè)

            · 細(xì)節(jié)分級(jí)表現(xiàn)(LOD)

            · 靈活的渲染,排序和裁剪算法

            對(duì)象系統(tǒng)

            GameByro的對(duì)象系統(tǒng)的使用遍及整個(gè)引擎,其主要實(shí)現(xiàn)如對(duì)象管理,引用計(jì)數(shù),對(duì)象生存期等功能。可以通過(guò)對(duì)幾個(gè)基類的繼承來(lái)使用對(duì)象系。

            其主要特性主要有:

            1. 智能指針(引用計(jì)數(shù))

            2. 運(yùn)行時(shí)類識(shí)別(RTTI)

            3. 場(chǎng)景對(duì)象復(fù)制

            4. 序列化(對(duì)象文檔化)

            5. 對(duì)象命名

            6. 對(duì)象擴(kuò)展數(shù)據(jù)的管理

            7. 定時(shí)器(主要用于動(dòng)畫(huà))

            8. 多線程操作

            驅(qū)動(dòng)層

            GameByro對(duì)圖形接口進(jìn)行了封裝,將圖形API從引擎的渲染系統(tǒng)中剝離出來(lái),在PC系統(tǒng)上,GameByro同時(shí)支持DX9和DX10兩種接口。

            DX9渲染器特性

            l GameByro不允許多個(gè)DX9Renderer對(duì)象同時(shí)存在,且不能與DX10Renderer共存。但在同一幀內(nèi),GameByro的DX9Renderer可以同時(shí)渲染多個(gè)窗口。

            l GameByro的DX9渲染器支持對(duì)資源的多線程訪問(wèn),同時(shí)也支持對(duì)資源的預(yù)載,但是多線程的操作仍然受到嚴(yán)格的限制。

            l DX9Renderer 的固定管線蒙皮操作最少支持4塊骨骼(矩陣),同時(shí)基于shader的蒙皮操作支持30塊骨骼。

            l DX9Renderer通過(guò)對(duì)后臺(tái)緩沖的多重采樣支持全屏抗鋸齒,范圍在2倍到4倍之間。

            l 大多數(shù)硬件在DX9下對(duì)幾何體的一個(gè)單一的piece所能接受的光照數(shù)量都有一定的限制(指渲染的一個(gè)批),如果超過(guò)這個(gè)限制,GameByro會(huì)根據(jù)距離或者是影響因子放棄一些光照。正因如此,在應(yīng)用程序中,當(dāng)8個(gè)以上的逐頂點(diǎn)光照作用于同一對(duì)象時(shí),就會(huì)有一些被拋棄。

            l DX9Renderer提供了視口的左右反向功能,用于實(shí)現(xiàn)后視鏡、立方體貼圖表面繪制等功能。

            l DX9Renderer支持頂點(diǎn)霧,可以通過(guò)相關(guān)接口設(shè)置霧的最大值。

            l DX9Renderer完全支持DX的紋理格式。應(yīng)用程序可以將自己的Direct3D textures提供給GameByro,引擎會(huì)自動(dòng)將其封裝到自己的材質(zhì)對(duì)象中并允許添加屬性和特效。通過(guò)提供自己的DX的紋理格式,GameByro能夠正確的使用自并非天然支持的紋理格式。

            l 紋理相關(guān)特性和限制:DX9Renderer需要顯卡支持在同一pass中至少使用兩個(gè)紋理,否則渲染器則不會(huì)創(chuàng)建成功。此外受限于硬件的功能還有:

            1. Cube Mapping(立方體紋理)

            2. Specular Bump Mapping(凹凸鏡面貼圖)

            3. Diffuse Bump Mapping(凹凸反射貼圖)

            4. Non-Power-of-Two Texture Size(編長(zhǎng)非二整數(shù)冪的紋理):使用這種紋理有如下限制:紋理尋址模式必須設(shè)置為clamp,Mipmapping不能使用。

            5. Texture Downsizing(紋理精度縮減)

            6. Texture Compression(壓縮紋理),DX9Renderer支持載入經(jīng)過(guò)壓縮的紋理格式,并提供了紋理即時(shí)壓縮的功能。如果硬件支持壓縮紋理,DX9Renderer可以將經(jīng)過(guò)壓縮的紋理數(shù)據(jù)直接交給硬件處理,否則DX9Renderer會(huì)自動(dòng)將數(shù)據(jù)解壓后再交給硬件。

            7. Texture Apply Modes Supported:DX9Renderer不支持APPLY_DECAL紋理應(yīng)用模式。

            8. Texture Format Requests(紋理格式要求):精確的紋理像素映射依賴于目標(biāo)硬件和顯示器像素位寬。

            9. Palettized Texture Formats(調(diào)色板紋理格式的支持)。

            10. Sphere Mapping(球面映射):GameByro中所有的渲染器都支持世界空間中的球面映射。

            11. DX9Renderer支持加載包括DDS、TGA、BMP格式的文件。Cube textures和volume textures都能被正確的加載,但是只能通過(guò)三維坐標(biāo)尋址。

            12. GameByro的編輯器支持導(dǎo)出DX原格式的紋理,并在加載的時(shí)候不進(jìn)行格式轉(zhuǎn)換。將DX格式的紋理直接交給DX處理。

            引擎渲染系統(tǒng)分析

            GameByro的渲染是由幀渲染系統(tǒng)(Frame Rendering System) 控制的,幀渲染系統(tǒng)封裝了每一個(gè)批次的繪制過(guò)程,這樣可以方便的控制整個(gè)渲染流程。

            陰影系統(tǒng):

            GameByro的陰影系統(tǒng)是使用幀渲染系統(tǒng)的典范,通過(guò)對(duì)已有的類以繼承的方式進(jìn)行功能擴(kuò)展,實(shí)現(xiàn)了靈活的陰影渲染功能。GameByro自身支持三種光源的陰影圖生成,分別為點(diǎn)光源(全方向光)、平行光、聚光燈。

            陰影系統(tǒng)統(tǒng)一由一個(gè)管理器負(fù)責(zé)控制。陰影的算法被封裝成了一個(gè)個(gè)類對(duì)象中。系統(tǒng)中同時(shí)存在著幾種陰影技術(shù),即可以選擇使用,也可以同時(shí)使用幾種陰影技術(shù)作用于同一幾何體。陰影系統(tǒng)會(huì)自動(dòng)裁剪掉那些沒(méi)有陰影接受體的光源,同時(shí)在計(jì)算每個(gè)光源所產(chǎn)生的陰影時(shí),會(huì)裁剪掉那些不受此光源影響的幾何體,達(dá)到性能優(yōu)化的目的。用戶很容易對(duì)陰影系統(tǒng)進(jìn)行擴(kuò)展,實(shí)現(xiàn)自己的陰影算法。

            GameByro的陰影主要是基于shadowMap技術(shù),點(diǎn)光源使用了立方體陰影圖,軟陰影則使用了方差陰影圖技術(shù)(VSM)。

            GameByro的陰影系統(tǒng)集成到了場(chǎng)景編輯器中,可以在編輯器中直接為光源指定陰影效果,所見(jiàn)即所得,提高了開(kāi)發(fā)效率。

            clip_image002

            (如圖所示,在編輯器中同時(shí)使用點(diǎn)光源陰影和方向光產(chǎn)生的軟陰影)

            地形系統(tǒng):

            GameByro的terrain是簡(jiǎn)單易用的,并且方便為其擴(kuò)展,用以滿足項(xiàng)目的其他功能需求。

            地形系統(tǒng)由以下幾部分組成:

            clip_image004

            1. NiTerrainComponent:是整個(gè)地形系統(tǒng)的入口,通過(guò)Terrain Interactor可以像訪問(wèn)容器一樣訪問(wèn)NiTerrainComponent所有的sub-component。

            2. Terrain Interactor 地形迭代器,通過(guò)Terrain Interactor可以啟動(dòng)所有的數(shù)據(jù)查詢,比如簡(jiǎn)單的碰撞檢測(cè),meta-data查詢,高度圖導(dǎo)入和文件加載。幾乎所有基于terrain系統(tǒng)的操作都是通過(guò)Terrain Interactor完成的。

            3. NiTerrainSectorComponent 的內(nèi)部主要包含一個(gè)負(fù)責(zé)組織地形數(shù)據(jù)塊的四叉樹(shù)。此對(duì)象負(fù)責(zé)從磁盤(pán)加載執(zhí)行物體與地形的射線相交查詢,轉(zhuǎn)換地形幾何體,管理內(nèi)部資源(包括共享的頂點(diǎn)流和shader)。同時(shí)NiTerrainSectorComponent還負(fù)責(zé)進(jìn)行四叉樹(shù)的遮擋查詢和生成可見(jiàn)集。

            4. Data Leaves and Blocks 四叉樹(shù)的切分等級(jí)是通過(guò)NiTerrainComponent設(shè)置的,四叉樹(shù)的每個(gè)節(jié)點(diǎn)都包含一個(gè)地形塊,塊的邊長(zhǎng)必須是2的整數(shù)冪。四叉樹(shù)的根節(jié)點(diǎn)等級(jí)為N,葉節(jié)點(diǎn)為0,由高到底細(xì)節(jié)依次增加,等級(jí)為0的葉節(jié)點(diǎn)所包含的地形塊擁有最高的細(xì)節(jié)。

            clip_image006

            5. Material Layers:地形系統(tǒng)通過(guò)掩碼圖來(lái)為地形指定材質(zhì)。掩碼的數(shù)據(jù)指定了地表的每個(gè)部分所對(duì)應(yīng)的材質(zhì)。同一地表最多支持四種材質(zhì),根據(jù)各自的權(quán)重進(jìn)行混合,權(quán)重?cái)?shù)據(jù)也是通過(guò)掩碼來(lái)獲得。

            材質(zhì)在地形的渲染系統(tǒng)中扮演著很特殊的角色,可以通過(guò)對(duì)材質(zhì)指定meta-data來(lái)附載其他的信息(比如在雪地行走的聲音),同時(shí)也可以通過(guò)對(duì)材質(zhì)的紋理貼圖為地表增加頂點(diǎn)或像素著色程序。此外每種材質(zhì)可以包含如下指定類型的紋理貼圖:

            l Diffuse/Base Map 反射貼圖,通過(guò)3或4個(gè)通道決定反射光的顏色。

            l Detail Map 細(xì)節(jié)貼圖,為反射貼圖提供Alpha值。

            l Normal Map 法線貼圖。

            l Parallax Map 視差貼圖,用來(lái)保存表面像素的高度偏移信息。

            此外GameByro還提供了簡(jiǎn)單的地形射線追蹤和水面渲染。地形射線追蹤目前的實(shí)現(xiàn)很簡(jiǎn)單,就是用一個(gè)射線查詢地表的三角形,以后會(huì)與Physics進(jìn)行集成,支持通過(guò)物理引擎l實(shí)現(xiàn)物體與地表的碰撞檢測(cè)。水面渲染主要是用兩張紋理動(dòng)畫(huà)混合而成,通過(guò)凹凸貼圖來(lái)表現(xiàn)水波。引擎為水面所在的地表生成一個(gè)灰度圖,保存地表距離水面的高度。這里預(yù)先定義了兩種顏色,深水顏色和淺水顏色,如果水面以下沒(méi)有地表就直接使用深水顏色。再像素著色器中可以對(duì)高度圖進(jìn)行采樣,從而得出當(dāng)前像素的水深,然后根據(jù)這個(gè)深度在深色和淺色之間進(jìn)行差值,得到最終水的顏色。不過(guò)這個(gè)效果并不是很理想,如需更好的效果,還需要對(duì)其進(jìn)行擴(kuò)展,比如說(shuō),增加反射和折射等。

            clip_image008

            材質(zhì)

            GameByro的材質(zhì)主要是通過(guò)3DMAX的插件進(jìn)行編輯的,并提供了標(biāo)準(zhǔn)的材質(zhì)節(jié)點(diǎn)。

            (在GameByro中,材質(zhì)節(jié)點(diǎn)的主要作用是負(fù)責(zé)根據(jù)著色過(guò)程生成相應(yīng)的shader代碼)這個(gè)節(jié)點(diǎn)一共有9個(gè)通道,并提供了大量可供調(diào)整的參數(shù),這樣就可以讓美術(shù)方便的使用逐像素光照、視差貼圖、環(huán)境體貼圖這些效果,在游戲中,GameByro通過(guò)不同的材質(zhì)屬性和不同的光照環(huán)境編譯出不同的shader代碼,以二進(jìn)制的形式保存在磁盤(pán)上,下次啟動(dòng)時(shí)載入內(nèi)存,這樣就不用重復(fù)編譯,但在第一次進(jìn)入游戲中時(shí)會(huì)有些延遲。靈活強(qiáng)大的材質(zhì)是次世代引擎的重要特征,GameByro在這方面做到了靈活,但是美術(shù)仍然不能通過(guò)可視化工具控制材質(zhì)的處理過(guò)程,只能編輯資源和修改參數(shù),編輯性還不夠強(qiáng)大。

            Shader

            GameByro提供了一個(gè)極具擴(kuò)展性的shader系統(tǒng),并將它與藝術(shù)創(chuàng)作工具緊密結(jié)合。GameByro定義了自己的shader格式,基于文本的.NSF文件和基于二進(jìn)制的.NSB文件,.NSF文件編譯后生成.NSB文件,這個(gè)過(guò)程即可以在開(kāi)發(fā)時(shí)完成,也可以在運(yùn)行時(shí)進(jìn)行。 .NSF文件使用的是GameByro自定義的語(yǔ)法,并使用自己的語(yǔ)法分析器將其編譯成相關(guān)平臺(tái)的代碼。實(shí)際上,GameByro的shader系統(tǒng)在應(yīng)用程序和GPU程序之間做了一層封裝,屏蔽了不同平臺(tái)之間的差異,使得應(yīng)用程序可以用相同的接口來(lái)與GPU之間進(jìn)行交互,而GPU程序最終還是通過(guò)cg或hlsl來(lái)實(shí)現(xiàn)的,這樣做的好處是,當(dāng)平臺(tái)發(fā)生改變時(shí),只需要根據(jù)具體的平臺(tái)來(lái)編寫(xiě)相應(yīng)的shader程序,而不需要去修改應(yīng)用程序。當(dāng)然,shader系統(tǒng)也直接支持cg和hlsl格式的文件,使用方法同NSF、NSB文件相似。GameByro的Shader系統(tǒng)提供了一套完整的查錯(cuò)機(jī)制,方便使用者對(duì)程序進(jìn)行debug。

            GameByro的shader系統(tǒng)集成到了所有的配套開(kāi)發(fā)工具中,這樣就實(shí)現(xiàn)了所見(jiàn)即所得,美術(shù)在工具中就可以直接看到資源在游戲中的效果,從而提高了開(kāi)發(fā)效率。

            GameByro通過(guò)引入自己的shader文件格式為跨平臺(tái)提供了方便,同時(shí)也增加了系統(tǒng)的復(fù)雜性,使用起來(lái)稍微有點(diǎn)繁瑣,開(kāi)發(fā)人員又不得不去熟悉它的語(yǔ)法,如果開(kāi)發(fā)中不考慮跨平臺(tái)的話,想要自己開(kāi)發(fā)特效,也可以不使用NSF文件,直接使用fx格式的文件。

            引擎自帶的特殊材質(zhì)

            AdditiveLightMapsMaterial(附加光照?qǐng)D材質(zhì),使用額外的光照?qǐng)D紋理來(lái)混合當(dāng)前場(chǎng)景光照計(jì)算的結(jié)果。下面的插圖是使用投射光照?qǐng)D紋理的渲染效果。)

            clip_image010

            AlphaTextureBlender(紋理Alpha混合)

            clip_image012

            Aniso(各向異性光照,左下的飛機(jī))、Halo(光暈效果。上面的飛機(jī))

            clip_image014

            ASMSkinningLighting(參與光照計(jì)算的骨骼動(dòng)畫(huà)蒙皮)

            ASMSkinningNoLighting(不參與光照計(jì)算的骨骼動(dòng)畫(huà)蒙皮,效率經(jīng)過(guò)了優(yōu)化)

            BaseBumpWithSpatialGlow(帶有輝光效果的凹凸貼圖)

            clip_image016

            Chrome(金屬外表,使用基本紋理、漫反射cube map、鏡面反射cube map、法線貼圖等效果實(shí)現(xiàn)類似于金屬表面的光澤和質(zhì)感,并支持基于此效果的蒙皮操作)

            clip_image018

            Colorize(使用一個(gè)自定義的屬性來(lái)動(dòng)態(tài)的設(shè)置或者修改顏色)

            clip_image020

            FXSkinning and HLSLSkinning(使用可編程渲染管線進(jìn)行骨骼動(dòng)畫(huà)的蒙皮)

            GeneralGlow(普通輝光效果)

            GeneralDiffuseSpecularGlow(普通鏡面反射高光輝光)

            clip_image022

            GeneralDiffuseSpecular(普通鏡面反射高光,支持蒙皮操作)

            clip_image024

            Dot3BumpMap(凹凸貼圖,右圖為蒙皮效果)

            clip_image026

            Glass (玻璃效果)

            clip_image028

            OilyFilm(油狀薄膜)

            clip_image030

            LuminanceTransfer(類似于熱源偵測(cè)儀的效果)

            clip_image032

            Outlining(藍(lán)圖或草圖)

            clip_image034

            ParallaxMapping(視差貼圖,下面右圖是使用了ParallaxMapping的效果)

            clip_image036

            PerPixelLighting(逐像素光照,同時(shí)支持固定管線和可編程渲染管線)

            clip_image038

            SkinnedToonShadingWithOutline(卡通渲染,支持骨骼蒙皮、描邊)

            clip_image040

            紋理

            GameByro的紋理系統(tǒng)支持多重紋理、投射紋理、動(dòng)態(tài)紋理、特效紋理,并且使用紋理的一些高級(jí)特性是平臺(tái)無(wú)關(guān)的。當(dāng)然GameByro中紋理的功能仍然受限于硬件特征。主要特性和限制見(jiàn)渲染器。

            工具及插件:

            GameByro提供了場(chǎng)景編輯器,資源瀏覽器,資源的物理模型瀏覽器、動(dòng)畫(huà)編輯工具,字體創(chuàng)建工具,以及3DMAX、MAYA插件,材質(zhì)編輯是在插件中進(jìn)行的,這套工具包含了完整的3D資源開(kāi)發(fā)流程。

            物理系統(tǒng)

            GameByro通過(guò)PhysX提供物理仿真模擬,只需幾行簡(jiǎn)單的代碼就可以將GameByro的場(chǎng)景和PhysX建立起聯(lián)系,不過(guò)需要在顯式的調(diào)用相關(guān)接口來(lái)進(jìn)行物理仿真對(duì)象和場(chǎng)景對(duì)象間的同步,即將物理仿真的結(jié)果作用于場(chǎng)景中的對(duì)象。同時(shí),還可以通過(guò)參數(shù)來(lái)決定是否需要等待物理仿真運(yùn)算的結(jié)果。這就保證了一定的靈活性,例如,用戶可以不對(duì)靜態(tài)物體進(jìn)行同步,達(dá)到優(yōu)化的目的。還可以通過(guò)把更新的接口放在下一次循環(huán)開(kāi)始的時(shí)候調(diào)用,這樣可以減少由于等待物體仿真模擬造成線程的阻塞,充分的利用了CPU資源。

            粒子系統(tǒng)

            GameByro的粒子系統(tǒng)為3ds max 和 Maya等粒子生成工具提供了完整的插件系統(tǒng),并完全支持軟粒子,即粒子會(huì)受到力的影響。

            clip_image042

            流處理引擎

            GameByro實(shí)現(xiàn)了一個(gè)完全跨平臺(tái)的流處理引擎。使用者可以方便的利用它完成多線程任務(wù),如資源的加載等,完全發(fā)揮多處理器平臺(tái)的威力,而不用關(guān)注底層細(xì)節(jié)。

            效率分析:

            為了對(duì)GameByro進(jìn)行全面的評(píng)估,筆者試著對(duì)GameByro的渲染效率進(jìn)行了簡(jiǎn)單的測(cè)試,本人的機(jī)器配置如下:

            l CPU:E2180

            l GPU:2400PRO

            l 內(nèi)存:2GB

            基本可以代表當(dāng)前中低端玩家的配置。

            場(chǎng)景一

            下圖為一個(gè)大的室外地形場(chǎng)景,包括建筑物、水面,地表使用了法線貼圖,除了植被以外,基本包含MMORPG的大部分室外場(chǎng)景要素。最后測(cè)試的結(jié)果平均幀數(shù)為21幀。幀數(shù)偏低的原因是整個(gè)場(chǎng)景使用了逐像素光照,同時(shí)沒(méi)有采用LOD進(jìn)行優(yōu)化。

            clip_image044

            場(chǎng)景二

            如圖所示場(chǎng)景中有100個(gè)角色在做不同的動(dòng)畫(huà),每個(gè)角色有51個(gè)骨骼,整個(gè)場(chǎng)景共有287900個(gè)多邊形和556600個(gè)頂點(diǎn),并且場(chǎng)景中有一個(gè)點(diǎn)光源和平行光源,在沒(méi)有陰影的情況下幀數(shù)大約在27~28幀左右。這些骨骼動(dòng)畫(huà)使用了GameByro提供的骨骼動(dòng)畫(huà)優(yōu)化方法,性能有一定提升。

            clip_image046

            由以上結(jié)果可以看出,GameByro的骨骼動(dòng)畫(huà)渲染效率尚可,而室外地形渲染系統(tǒng)的性能稍顯不足,再?zèng)]有角色和植被的情況下,僅能達(dá)到22幀左右,如果在實(shí)際的游戲環(huán)境還要算上其他游戲系統(tǒng)(網(wǎng)絡(luò)、邏輯、UI等)的性能消耗,這是不足以讓玩家流暢進(jìn)行游戲的,還需進(jìn)一步手動(dòng)的優(yōu)化。

            總結(jié)

            GameByro擁有一套靈活的架構(gòu),便于使用和擴(kuò)展,易于上手;配套的開(kāi)發(fā)工具比較齊全,擁有完整的美術(shù)開(kāi)發(fā)流程;完全支持跨平臺(tái),便于游戲的移植;同時(shí)由于為了保證靈活性,在設(shè)計(jì)上面比較偏重于功能和擴(kuò)展,而不是性能。

            高度的可定制性帶來(lái)的是較低的整合,GameByro沒(méi)有提供游戲框架,地圖編輯器也僅僅實(shí)現(xiàn)了最通用的功能,即地表和物件的擺放。這就說(shuō)明,如果要使用GameByro開(kāi)發(fā)產(chǎn)品,就需要自己整合GameByro,并對(duì)其進(jìn)行一定的修改和擴(kuò)展。這也是它與UnrealEngine3區(qū)別最大的地方。

             

            作者:葉起漣漪

            posted @ 2009-04-22 10:42 Condor 閱讀(2825) | 評(píng)論 (2)編輯 收藏

            僅列出標(biāo)題
            共10頁(yè): 1 2 3 4 5 6 7 8 9 Last 
            久久福利资源国产精品999| 亚洲国产精品成人久久| 无码人妻久久久一区二区三区| 国产精品久久久天天影视| 无码国内精品久久人妻麻豆按摩| 看久久久久久a级毛片| 久久久久久久综合日本| 久久免费精品一区二区| 久久精品国产久精国产一老狼| 国产成人精品久久| 国产精品久久久久影院色 | 少妇久久久久久被弄高潮| 精品无码久久久久久久动漫 | 久久伊人五月丁香狠狠色| 99久久免费国产精品| 久久亚洲欧美国产精品| 噜噜噜色噜噜噜久久| 国产精品成人99久久久久| 人妻无码久久一区二区三区免费| 亚洲精品成人网久久久久久| 国产一区二区三精品久久久无广告| 色偷偷偷久久伊人大杳蕉| 囯产极品美女高潮无套久久久 | 久久精品国产免费一区| 久久婷婷五月综合色高清| 伊人久久大香线蕉AV色婷婷色| 久久人人添人人爽添人人片牛牛| 久久久久亚洲AV无码专区网站| 国产亚洲色婷婷久久99精品91| 久久精品男人影院| 91精品国产91热久久久久福利| 久久精品国产91久久综合麻豆自制 | 久久精品成人欧美大片| 国产99久久久国产精品~~牛| 精品久久久久久国产三级| 老司机国内精品久久久久| 日韩久久无码免费毛片软件| 久久精品国产72国产精福利| 国产精品成人99久久久久91gav| 日本一区精品久久久久影院| 天天爽天天爽天天片a久久网|