锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产欧美日韩一区,国产在线精品一区二区夜色,国产精品社区http://www.shnenglu.com/lingjingqiu/archive/2014/01/14/205354.html絀烘槑嫻佽漿絀烘槑嫻佽漿Tue, 14 Jan 2014 02:07:00 GMThttp://www.shnenglu.com/lingjingqiu/archive/2014/01/14/205354.htmlhttp://www.shnenglu.com/lingjingqiu/comments/205354.htmlhttp://www.shnenglu.com/lingjingqiu/archive/2014/01/14/205354.html#Feedback6http://www.shnenglu.com/lingjingqiu/comments/commentRss/205354.htmlhttp://www.shnenglu.com/lingjingqiu/services/trackbacks/205354.html

絀烘槑嫻佽漿 2014-01-14 10:07 鍙戣〃璇勮
]]>
SALVIA 0.5.2浼樺寲璋?/title><link>http://www.shnenglu.com/lingjingqiu/archive/2013/02/11/197800.html</link><dc:creator>絀烘槑嫻佽漿</dc:creator><author>絀烘槑嫻佽漿</author><pubDate>Mon, 11 Feb 2013 12:09:00 GMT</pubDate><guid>http://www.shnenglu.com/lingjingqiu/archive/2013/02/11/197800.html</guid><wfw:comment>http://www.shnenglu.com/lingjingqiu/comments/197800.html</wfw:comment><comments>http://www.shnenglu.com/lingjingqiu/archive/2013/02/11/197800.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/lingjingqiu/comments/commentRss/197800.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lingjingqiu/services/trackbacks/197800.html</trackback:ping><description><![CDATA[<h1>姊楁</h1> <p>SALVIA 0.5.2 鐨勪紭鍖栫粡鍘嗘槸涓涓滆穼瀹曡搗浼忊濈殑榪囩▼銆傝繖涓繃紼嬬殑緇撴灉寰堢畝鍗曪細</p> <p>鍦–ore 2 Duo T5800(2.0GHz x 2)涓婏紝Sponza鐨勬ц兘鎻愬崌浜?0%錛孋omplexMesh鎬ц兘鎻愬崌浜?6%銆?/p> <h1> </h1> <h1>鑳屾櫙</h1> <p>SALVIA鐨勬暣涓覆鏌撴祦紼嬩富瑕佹槸浠ヤ笅鍑犻儴鍒嗭細</p> <ul> <li>鏍規嵁Index Buffer鑾峰緱闇瑕佽繘琛屽彉鎹㈢殑欏剁偣錛?/li> <li>灝嗛《鐐瑰埄鐢╒ertex Shader榪涜鍙樻崲錛?/li> <li>灝嗗彉鎹㈠悗鐨勯《鐐癸紝杈撳嚭鎴愯嫢騫蹭釜float4錛?/li> <li>灝嗕笁瑙掑艦鍏夋爡鍖栥係ALVIA鐨勫厜鏍呭寲鏄皢涓夎褰㈡媶鍒嗘垚4x4鐨勫儚绱犲潡鑻ュ共錛屼笉婊$殑鍧楁湁鎺╃爜鏉ュ鐞嗭紱</li> <li>灝嗗儚绱犺繘琛屾彃鍊鹼紱</li> <li>鎻掑畬鍊煎悗鎶婂儚绱犻佸埌Pixel Shader涓鐞嗕竴瓚燂紱</li> <li>澶勭悊瀹岀殑緇撴灉鐢˙lend Shader濉炲埌Back buffer閲岄潰鍘匯?/li></ul> <p>鐢ㄤ簬嫻嬭瘯鐨勫満鏅細</p> <ul> <li>Sponza 26涓囦釜闈紝20涓乏鍙崇殑Diffuse綰圭悊錛?024x1024錛夛紱</li> <li>PartOfSponza 綰?00涓潰錛?涓狣iffuse綰圭悊錛?024x1024錛夛紱</li> <li>ComplexMesh 涓や竾涓潰錛屾棤綰圭悊錛屾湁涓兘閲忎繚瀹堢殑鍏夌収銆?/li></ul> <p>鏈鍒濈殑鐗堟湰錛圴1231錛変腑錛屾ц兘鐨勪富瑕佺摱棰堝湪鎻掑奸樁孌碉紝鍚勭鑰楁椂鏋楁灄鎬繪誨崰浜嗕竴鍗婁互涓婏紙50% - 70%錛夈?/p> <p>鐩告瘮涔嬩笅鍏朵粬闃舵瀵規ц兘鐨勫獎鍝嶈涔堟湁闄愶紝瑕佷箞娌℃湁澶氬皯浼樺寲絀洪棿銆傛墍浠ユ渶榪戜竴鍛ㄧ殑浼樺寲錛屽氨閮介泦涓湪浜嗏滄彃鍊尖濅笂銆?/p> <h1> </h1> <h1>鎻掑肩畻娉?/h1> <p><strong>綰挎х殑鎻掑肩畻娉?/strong>甯歌鐨勫疄鐜版湁涓ょ錛?/p> <p>絎竴縐嶆槸鎷縐V鎻掑鹼紝絎簩縐嶆槸鐢╠dx鍜宒dy绱Н銆?/p> <p>UV鏄厛璁$畻鍍忕礌鐨剈鍜寁錛堝熀鏈柟娉曟槸鐢ㄩ潰縐瘮錛屼笉璁板緱灝卞涔犱竴涓嬩腑瀛﹀嚑浣曞惂錛夛紝鐒跺悗鐢ㄦ彃鍊煎叕寮忥細</p> <p>pixel = v0 * u + v1 * v + v2 * (1-u-v)</p> <p>鍚庤呯殑姝ラ鏄変竴涓富欏剁偣錛岀劧鍚庤綆楄繖涓《鐐圭殑ddx鍜宒dy錛屾渶鍚庣敤</p> <p>pixel = v0 + ddx * offset_x + ddy * offset_y</p> <p>璁$畻鍑虹浉搴旈《鐐廣?/p> <p>浣嗘槸鍦ㄥ浘褰㈠涓紝鎴戜滑榪橀渶瑕佸鎻掑艱繘琛岄忚淇錛岃幏寰楀湪3D絀洪棿涓嚎鎬х殑鎻掑肩粨鏋溿?/p> <p>鎴戜滑灝嗘楠や慨姝e埌<strong>閫忚絀洪棿</strong>錛?/p> <p>鍏堝皢v0錛寁1錛寁2寮勫埌閫忚絀洪棿涓紝鍙樻垚projected_v0, projected_v1, projected_v2</p> <p>瀵逛簬UV鐨勬彃鍊兼槸</p> <p>pixel = ( projected_v0*u + projected_v1*v + projected_v2 * (1-u-v) ) / pixel_w</p> <p>瀵逛簬鐢╠dx鍜宒dy鐨勭瘡縐叕寮忔槸錛?/p> <p>pixel = ( projected_v0 + projected_ddx * offset_x + projected_ddy * offset_y ) / pixel_w</p> <h1> </h1> <h1>鎻掑肩畻娉曠殑閫夋嫨</h1> <p>浣曞拸錛圙raphixer錛夊ぇ紲炰箣鍓嶄篃鍐欎簡涓涓覆鏌撳櫒錛屾瘮鎴戝揩璁稿錛堝ぇ姒傛槸4-6鍊嶏級錛岀敤鐨勬槸UV錛?/p> <p>gameKnife澶х涓や釜紺兼嫓鍐欐垚鐨勬覆鏌撳櫒錛岄熷害姣旀垜鐢ㄤ簲騫村啓鍑烘潵鐨勫崐鎴愬搧瑕佸揩7鍊嶏紝鐢ㄧ殑鍔炴硶鏄疞erp鍒癝canline涓婏紝鍐峀erp鍒板儚绱犮?/p> <p>SALVIA閲囩敤浜嗙瘡縐硶錛?/p><pre class="brush: cpp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;">struct transformed_vertex { float4 attributes[MAX_ATTRIBUTE_COUNT]; };</pre><pre class="brush: cpp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;">transformed_vertex projected_corner; // 璁$畻瑙掔偣鐨勫潗鏍? projected_scanline_start = projected_v0 + projected_ddx * offset_x + projected_ddy * offset_y; // 鍍忕礌鐨勯忚淇鍊? float inv_w; // 鏈緇堣緭鍑虹殑4x4涓儚绱? pixel_input px_in[4][4]; for(int i = 0; i < 4; ++i) { projected_pixel = projected_scanline_start; for(int j = 0; j < 4; ++j) { // 閫忚絀洪棿杞崲鍒扮嚎鎬х┖闂村茍杈撳嚭鍒皃x_in涓? px_in[i][j] = unproject( projected_pixel ); // 绱姞x鏂瑰悜涓婄殑鍊鹼紙閫忚絀洪棿錛? projected_pixel += projected_ddx; } // 绱姞y鏂瑰悜涓婄殑鍊鹼紙閫忚絀洪棿錛? projected_scanline_start += projected_ddy; }</pre> <h1> </h1> <h1>鏈疆浼樺寲涔嬪墠瀵規彃鍊肩畻娉曠殑浼樺寲灝濊瘯</h1> <p>娉ㄦ剰閭d釜MAX_ATTRIBUTE_COUNT錛岃繖涓奸氬父姣旇緝澶э紝鍦╲1231涓紝瀹冩槸32銆?/p> <p>涓嶈繃錛屾樉鐒舵垜浠笉闇瑕佸鎵鏈夌殑灞炴ц繘琛岃綆椼傛晱鏁忓湪榪欓噷榪愮敤浜嗕竴鐐瑰皬灝忕殑鎶宸ц繘琛屼簡浼樺寲錛氬彧璁$畻蹇呰鐨勫睘鎬с傚悓鏃訛紝涓轟簡鍑忓皯鍒嗘敮鐨勪嬌鐢紝浠栫敋鑷崇敤</p><pre class="brush: cpp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;">template <int N> void sub_n(out, v0, v1 ) { for(int i = 0; i < N; ++i) { out.attributes[i] = v0.attributes[i] 鈥?v1.attributes[i]; } }</pre> <p>騫墮厤鍚堝嚱鏁版寚閽堢殑鏂規硶錛屼互淇冧嬌緙栬瘧鍣ㄥ睍寮寰幆錛屽噺灝戝垎鏀?/p> <p>涓嶈繃浠庡疄闄呯敓鎴愮殑姹囩紪鏉ョ湅錛岃繖涓儴鍒嗗茍娌℃湁琚睍寮鍒版湡鏈涚殑褰㈠紡錛屽彲鑳芥槸緙栬瘧鍣ㄨ涓簒86鐨凚ranch Predication鎬ц兘宸茬粡瓚沖楂樹簡鍚с?/p> <p>榪欎釜鈥滀紭鍖栤濆湪v1231涓氨宸茬粡鍏峰浜嗐?/p> <h1> </h1> <h1>棣栬疆浼樺寲錛歶nproject鍑芥暟錛宱perator += 涓?operator =</h1> <p>絎竴涓狿rofiling鏄敤BenchmarkPartOfSponza鍜孲ponza璺戠殑錛泆nproject錛宱perator +=鍜宱perator = 鍔犲湪涓璧峰ぇ綰﹀崰鐢ㄤ簡15-20%鐨勬椂闂淬傚崟鐙殑unproject</p> <p>鏈鍒濈殑瀹炵幇灝辨槸鏅氱殑鏍囬噺銆傛棦涓嶈姹傚榻愶紝涔熸病鏈変嬌鐢⊿IMD銆?/p> <p>鎵浠ュ綋鐒朵細浠ヤ負鐢ㄤ簡SIMD鍚庯紝浼樺寲鏁堟灉浼氬緢濂姐備簬鏄湪v1232涓紝涓棿欏剁偣鍜屽儚绱犺緭鍏ョ殑鍒嗛厤閮戒互16瀛楄妭瀵歸綈錛寀nproj錛?=鍜?涔熼兘浣跨敤浜哠SE榪涜浜嗛噸鍐欍?/p> <p>浠庤窇鍒嗘潵鐪嬶紝PartOfSponza鎬ц兘鎻愬崌浜?0%銆備絾鏄紝鍦ㄦ祴璇旵omplexMesh鍜孲ponza鏃訛紝騫舵湭鍙戠幇甯х巼鏈夋樉钁楁彁鍗囥?/p> <p>鍏跺疄鍦ㄨ繘琛屼紭鍖栦箣鍓嶏紝浣曞拸灝卞憡璇繃鎴戯紝鍥犱負鐜頒唬CPU鐨勪竴浜涙妧鏈紝姣旀柟璇磋秴鏍囬噺鍟ョ殑錛屽洓涓暟鎹搴︾殑SSE鍜屾爣閲忚繍綆楃浉姣旓紝灝卞彧鏈?0%鐨勬ц兘宸窛銆?/p> <p>騫朵笖榪欎簺鍑芥暟鐨勬寚浠ゅ凡緇忔瀬涓虹畝鍗曪紝鐡墮涔熷緢鏄庣‘鐨勮惤鍦ㄨ綆楁寚浠や笂銆備緥濡俇nproject浼樺寲鍚庯紝鎬ц兘鐒︾偣灝辮惤鍦╛mm_mul_ps涓婏紙3.7%錛夛紝鍑犳棤浼樺寲浣欏湴銆?/p> <p> </p> <h1>浜岃疆浼樺寲錛氭彃鍊肩畻娉曠殑璋冩暣</h1> <p>鍦ㄨ繘琛岀浜岃疆浼樺寲涔嬪墠鍚屾牱榪愯浜嗕竴嬈rofiling銆傚洜涓哄PartOfSponza鎬ц兘鍩烘湰婊℃剰錛屽洜姝よ繖嬈′紭鍖栫殑鐩爣涓昏鍦⊿ponza涓娿?/p> <p>鎺掑悕鍓嶅嚑浣嶇殑灝忓嚱鏁幫紝鍒嗗埆鏄痵ub_n錛寀nproj錛?= 鍜宼ex2D銆傚sub_n渚嬭浼樺寲鍚庯紝鎬ц兘娌′粈涔堝彉鍖栥傚綋鐒訛紝榪欎篃鏄剰鏂欎箣涓殑浜嬫儏浜嗐?/p> <p>鍥犳錛岀浜岃疆浼樺寲渚跨潃閲嶈冭檻鍦ㄦ彃鍊肩畻娉曟湰韜笂銆?/p> <p>鍦ㄤ紭鍖栦箣鍓嶏紝鎴戝皾璇曞浠g爜鎴愭湰鍋氫釜綺楃暐鐨勮瘎浼幫細</p> <p>鍦ㄧ幇鏈夌畻娉曚笅錛屽亣璁炬瘡涓儚绱犳湁N涓渶瑕佹彃鍊肩殑灞炴э紝鍒欏鉤鍧囨瘡涓儚绱犳湁</p> <p>錛坈orner錛?N/16涓 + 2N/16涓箻娉?+ 2N/16涓姞娉?+ N/16涓啓</p> <p>錛坸錛?=錛?N涓 + N涓姞娉?+ N涓啓</p> <p>錛坸錛?錛?nbsp; N涓 + 1涓爣閲忛櫎娉?+ N涓箻娉?+ N涓啓</p> <p>錛坹錛?=錛?N/4涓 + N/4涓姞娉?+ N/4涓啓</p> <p>錛坹錛?錛?N/4涓 + N/4涓啓</p> <p>鍥犱負姣忎釜閮芥槸鍑芥暟鎸囬拡錛屾墍浠ヨ繖浜涢兘鏄紭鍖栦笉鎺夌殑銆傚洜姝ら鍏堝皢涓浜涙搷浣滃悎騫朵簡涓涓嬶紝姣斿鎶?= 鍜?鍚堝茍浠ュ噺灝戜竴涓嬭鍐欐搷浣溿傚彧鍙儨鏁堟灉涔熶笉鏄緢鏄庢樉銆?/p> <p> </p> <p>絎簩鍒灝辯爫鍒扮畻娉曠殑澶翠笂銆傚洜涓虹瘡鍔犳湰韜槸涓轟簡鍑忓皯涔樻硶鐨勮繍鐢紝浣嗘槸榪欏彲鑳藉甫鏉ヤ簡澶氫綑鐨勫瓨鍙栧紑閿銆?/p> <p>鍥犳鐩存帴濂楃敤鍏紡錛?/p> <p>pixel = ( projected_v0 + projected_ddx * offset_x + projected_ddy * offset_y ) / pixel_w</p> <p>榪欐牱灝辨湁錛?N璇伙紝2N涔樻硶錛?N鍔犳硶錛孨涓箻娉曞拰N涓啓錛堝亣璁懼瘎瀛樺櫒澶熺敤鐨勮瘽錛夈備笉綆桟orner鐨勮綆楁垚鏈紝榪欐牱姣旇緝涓涓嬶紝灝辯瓑浜庢槸3N/4涓錛孨/2+N涓啓錛孨/4涓姞娉曟潵鎹㈠彇2N涓箻娉曠殑鏃墮棿銆傛湰鏉ヤ互涓轟綔涓篒O鐡墮鐨勫簲鐢紝榪欐牱鍙互鎻愰珮涓浜涙ц兘銆備笉榪囩粨鏋滆瘉瀹炶繖涓拱鍗栧疄鍦ㄦ槸寰堜笉鍒掔畻錛屾暣浣撴ц兘涓嶅鍙嶅噺銆?/p> <p> </p> <h1>涓夎疆浼樺寲錛氬噺灝戝唴瀛樺崰鐢紝鏌蟲殫鑺辨槑</h1> <p>铏界劧鎵鏈夌殑鎿嶄綔鍙拡瀵瑰凡浣跨敤鐨勫睘鎬э紝浣嗘槸絀洪棿涓婅繕鏄氮璐逛簡璁稿銆?/p> <p>鑰冭檻鍒板唴瀛樺崰鐢ㄨ緝澶т篃浼氬鑷翠竴浜涙ц兘鎹熷け錛屼簬鏄皢MAX_ATTRIBUTE_COUNT浠?2涓嬭皟鍒頒簡8銆?/p> <p>緇撴灉浠や漢澶ц穼鐪奸暅銆傛ц兘鐬棿鎻愬崌浜?0-30%涔嬪銆?/p> <p>鍐嶅姞涓奡SE涔熶笉鐭ラ亾涓轟粈涔堝紑濮嬪彂鍔涗簡錛屼嬌鐢ㄤ笂涔嬪悗鎬ц兘澶х害鍙堟湁浜?0-15%鐨勬彁鍗囥?/p> <p>鎴戠寽嫻嬪彲鑳芥槸鍥犱負鎹㈤〉棰戠巼涓嬮檷錛屼互鍙奀ache鐨勫懡涓巼鎻愬崌銆備笉榪囨墜涓婃病鏈塚Tune榪欑宸ュ叿錛屾墍浠ヤ篃涓嶅お濂介獙璇併?/p> <p> </p> <h1>鍥涜疆浼樺寲錛氱簿搴︽晱鎰熸т笅闄嶇殑棰濆綰㈠埄</h1> <p>鍦ㄨ繖杞紭鍖栦箣鍚庯紝PartOfSponza鍑虹幇浜嗙簿搴﹂棶棰樸傚洜涓鴻閿ヤ綋鐨勪笂涓嬪乏鍙沖洓涓潰閮芥病鏈塁lip錛屾墍浠ュ彲鑳戒細鍑虹幇闈炲父澶х殑涓夎褰€傝繖鏍風瘡縐殑鏃跺欎竴鏃﹁搗濮嬬偣閫夋嫨鐨勪笉濂斤紝灝變細鍑虹幇姣旇緝澶х殑璇樊銆傚湪涔嬪墠鐗堟湰涓紝浣跨敤/fp: precise鏉ュ噺灝戣繖涓闂鍑虹幇鐨勬満浼氥備絾鏄洜涓轟嬌鐢ㄤ簡SSE錛屼篃璁╄繖涓棶棰樺啀闅捐В鍐熾傚洜姝ゆ垜閫夌敤浜嗕竴浜涘姙娉曪紝鏉ユ敼鍠勭簿搴﹂棶棰樸傚湪澶ч棶棰橀兘淇浠ュ悗錛屾崲鐢?fp: fast鏉ョ紪璇戞暣涓猄ALVIA錛屾渶緇堜篃鑾峰緱浜?-10%宸﹀彸鐨勬ц兘鏀剁泭銆?/p> <h1> </h1> <h1>緇撹</h1> <p>瀵逛簬榪愮畻鍜孖O閮藉瘑闆嗙殑紼嬪簭鏉ヨ錛屼紭鍖栫湡鍙兘鏄壍涓鍙戣屽姩鍏ㄨ韓鐨勯棶棰樸傛瘮濡傚湪鎴戠殑渚嬪瓙涓紝鎵鏈夌寽嫻嬫槸鎬ц兘鐡墮鐨勫湴鏂癸紝閮芥病鏈夊緱鍒伴鎯充腑鐨勬敼鍠勩?/p> <p>鍊掓槸鍦ㄥ唴瀛樺崰鐢ㄨ繖涓湴鏂規棤蹇冩彃鏌籌紝鎵嶅緱浠ユ煶鏆楄姳鏄庯紝鑰屼笖榪樿鍒殑浼樺寲鏂規浣撶幇浜嗕環鍊箋傛墍浠ュ鏋滀綘涓嶅儚qiaojie澶х墰閭f牱瀵箈86浜嗗鎸囨帉錛岃繕鏄涔犳儻浜庝粠澶氭柟闈㈢寽嫻嬶紝渚嬪鍐呭瓨鍗犵敤錛屽榻愭垨绱х緝錛岃綆楀己搴︼紝璁垮瓨瀵嗗害錛屽茍琛屽害絳夊涓搴﹁繘琛岃鎯沖茍鐢ㄥ疄璺靛幓楠岃瘉銆傚敖綆″彲鑳戒細閬囧埌寰堝鎸姌錛屼絾鏄紝鍙鏄洿瑙変笂鏈変紭鍖栫殑浣欏湴錛屼竴鑸兘鍙互鎵懼埌鍚堥傜殑鏂規銆?/p><img src ="http://www.shnenglu.com/lingjingqiu/aggbug/197800.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lingjingqiu/" target="_blank">絀烘槑嫻佽漿</a> 2013-02-11 20:09 <a href="http://www.shnenglu.com/lingjingqiu/archive/2013/02/11/197800.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>寮婧愬厜鏍呭寲娓叉煋鍣⊿ALVIA鐨勬極闀夸簲騫達紙鍑?amp;middot;騫茶揣錛?/title><link>http://www.shnenglu.com/lingjingqiu/archive/2013/01/13/197224.html</link><dc:creator>絀烘槑嫻佽漿</dc:creator><author>絀烘槑嫻佽漿</author><pubDate>Sat, 12 Jan 2013 21:00:00 GMT</pubDate><guid>http://www.shnenglu.com/lingjingqiu/archive/2013/01/13/197224.html</guid><wfw:comment>http://www.shnenglu.com/lingjingqiu/comments/197224.html</wfw:comment><comments>http://www.shnenglu.com/lingjingqiu/archive/2013/01/13/197224.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.shnenglu.com/lingjingqiu/comments/commentRss/197224.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lingjingqiu/services/trackbacks/197224.html</trackback:ping><description><![CDATA[<p>SALVIA鏄粠07騫村簳寮濮嬪紑鍙戠殑銆傚巻緇忎簲騫達紝鏃犺鏄璁$洰鏍囷紝榪樻槸浣跨敤鍒扮殑涓浜涙柟娉曪紝閮藉拰鏈鍒濆樊鍒緢澶с?<p>璋ㄤ互姝ゆ枃錛岀邯蹇墊垜鍦ㄤ簲騫翠腑浣滃嚭鏉ョ殑鍚勭鍌婚煎喅瀹氥?<p>  <h1>1. 2007騫?鏈?- 2007騫?2鏈堬細鍙瑧鐨勫姩鏈猴紝鍙瑧鐨勯洀褰?/h1> <h2>鍔ㄦ満涓庡師鍨?/h2> <p>SALVIA鍑虹幇鐨勫師鍥犲叾瀹炲緢鍙瑧銆?7騫村簳鐨勬椂鍊欐垜姝e湪鍐欎竴綃噋aper錛岃GP-GPU鐨勩傞偅涓椂鍊欒繕娌℃湁CUDA涓綾葷殑涓滆タ錛屼竴鍒囬兘瑕侀潬Shader鏉ャ傛湰鏉ユ垜鎵嬩笂鐨勬樉鍗℃槸涓鍧?550鐨凷DRAM鐨勭畝鐗堛備絾鏄鏂囧揩緇撴潫鐨勬椂鍊欙紝紿佺劧榪欏崱鐨勯鎵囧氨緗㈠伐浜嗐傜劧鍚庢垜闄嶉鐢ㄤ簡澶ф涓涓鏈堬紝鍗′篃搴熸帀浜嗐傚洜涓烘病閽變拱鏂版樉鍗★紝鎴戝氨鎵撶畻鍐欎竴涓瘮D3D REF蹇殑杞歡娓叉煋鍣ㄣ?/p> <p>07騫村簳鐨勬椂鍊欙紝瀹炵幇浜嗙涓鐗堢殑SALVIA錛屽綋鏃惰繕鍙玈oftArt銆傜涓鐗堢殑SALVIA鍏跺疄榪樼畻涓嶉敊錛屾祦姘寸嚎鐨勫畬鏁寸▼搴﹀埌鐜板湪閮借繕娌¤秴榪囷紝鍖呮嫭Cpp鐨刅ertex Shader鍜孭ixel Shader銆佺汗鐞嗛噰鏍楓佸厜鐓т粈涔堢殑涓搴斾勘鍏ㄣ傚湪寮鍙戣繃紼嬩腑錛屼富瑕佸弬鑰僄L 2.0鐨凷pecification錛屼篃闃呰浜嗕竴浜涘悓綾誨瀷杞歡鐨勪唬鐮侊紝渚嬪Muli3D鍜孧esa銆?/p> <p>涓浜涘綆$嚎鑷沖叧閲嶈鐨勬蹇碉紝渚嬪閫忚淇銆佸浐瀹氱綰夸笂綰圭悊閲囨牱鐨凩oD Level銆丆lip閮芥槸鍊熷姪浜嶴pec鍜岃繖浜涘疄鐜板緩绔嬬殑銆?/p> <h2>涓轟粈涔堣鏈塖hader Compiler</h2> <p>濡傛灉鏄浐瀹氱綰跨殑璇濓紝閭d箞SALVIA鍋氬埌榪欎簺鐗規т篃灝辮凍澶熶簡銆備絾鏄粠SALVIA涓寮濮嬶紝鎴戝氨甯屾湜璁╁畠鎴愪負涓涓狿ure Shader鐨勭綰匡紝鍥哄畾綆$嚎鐨勯偅浜涚姸鎬佸疄鍦ㄥお鐑︿漢浜嗐傛湰鏉pp瀹炵幇鐨凷hading language鑳芥弧瓚崇粷澶ч儴鍒嗙殑闇瑕佷簡錛屼絾鏄湁涓涓壒鎬у交搴曢毦鍊掍簡鎴戯細Pixel Shader鐨勫樊鍒嗗嚱鏁癲dx/ddy銆?/p> <p>榪欎釜涓滆タ鐨勫伐浣滃師鐞嗘槸榪欐牱鐨勶細</p> <p>姣旀柟璇存垜鏈変竴孌祍hader鍑芥暟錛?/p><pre class="brush: cpp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;">float shading_pixel( ... ): COLOR0 { float x; // Expression for calculating x return ddx(x); }</pre> <p>鍦≒ixel Shader榪愯鐨勬椂鍊欙紝瀹冧竴嬈℃ф墽琛?x2鐨勪竴涓皬鍧楋紝鎵鏈夌殑鎸囦護瀵逛簬鏁翠釜鍧楀唴閮芥槸鍚屾鎵ц鐨勩傞亣鍒癲dx(x)鍚庯紝鍥涗釜鍍忕礌閮芥濂芥墽琛屽埌榪欓噷錛岀劧鍚庢妸x鏂瑰悜涓婄殑鐩擱偦涓や釜鍍忕礌鐨勫眬閮ㄥ彉閲弜姹備釜宸紝灝卞彲浠ュ緱鍑篸dx浜嗐?/p> <p>榪欎釜瑕佹眰鍦–++涓緢闅懼疄鐜般?/p> <ol> <li>涓嶅ソ璁〤++鐨勫洓涓嚱鏁伴兘鍦ㄥ悓涓涓湴鏂笿oin錛?/li> <li>鎴戜笉濂藉幓鑾峰緱鐩擱偦鍑芥暟鐨勬爤涓婄殑鍊箋?/li></ol> <p>鍏跺疄濡傛灉瑕佽緝鐪燂紝褰撶劧榪樻槸鏈夊姙娉曠殑錛?/p> <ol> <li>瀵逛簬Join闂錛岃搗鐮佹湁涓ょ鏂規錛?/li> <ul> <li>鑷繁鎼炰竴涓狥iber Manager錛岀洿鎺ユ帶鍒朵唬鐮佺殑鏍堢殑Switch銆傛瘡涓猵ixel閮芥湁涓涓狥iber錛屽埌浜咲DX/DDY灝辨崲鍒頒笅涓涓狥iber鎵ц錛岀洿鍒版墍鏈夌殑Fiber閮芥墽琛屽畬姣曞悗錛岃綆梔dx錛屽啓鍏ユ爤鍙橀噺錛屽啀緇х畫鎵ц錛?/li> <li>鐩存帴鐢ㄧ嚎紼嬶紝Join錛岃綆楋紝鐒跺悗緇х畫鎵ц銆?/li></ul> <li>瀵逛簬鏍堝彉閲忕殑鍦板潃闂錛屼篃鏈夊姙娉曪細</li> <ul> <li>鍦ㄥ垏鎹㈢嚎紼嬬殑鏃跺欑洿鎺ヤ繚瀛樹復鏃跺彉閲忕殑鍦板潃銆?/li></ul></ol> <p>浣嗘槸榪欎簺瀹炵幇錛岃涔堝洜涓哄垏鎹笂涓嬫枃鑰屽彉寰楀鎱㈡棤姣旓紱瑕佷箞灝辨槸瀹屽叏娌℃湁騫沖彴縐繪鎬с傛兂鏉ユ兂鍘伙紝榪樻槸瑕佽浠g爜鎸夌収紜歡鐨勬柟寮廠IMD鎵ц銆?/p> <p>鎵浠ユ垜鏈緇堟í涓嬩竴鏉″績錛氳涓哄畠鍋歋hading Language Compiler銆傜劧鍚庡紑濮嬩簡婕暱鐨凜ompiler寮鍙戙傚悗鏉ユ垜鐪嬪洟闀塊偅涓婃極鏃犳澧冪殑鍏湀銆嬬殑鏃跺欙紝綆鐩村氨鏄鐫闀滃瓙鐓ц嚜宸辯殑鍌婚箋傛墍浠ユ垜鎵嶆洿榛戝洟闀褲?/p> <h1>2. 2008騫村垵 - 2009騫?2鏈堬細榛庢槑鍓嶇殑榛戞殫</h1> <h2>Shader鐨勬枃娉?/h2> <p>08騫村埌09騫存垜閮藉湪澶栭潰瀹炰範錛屼竴鍛ㄤ笂鍏ぉ鐝紝涓澶╁緱騫蹭笂鍗佷釜澶氬皬鏃躲備粠2008騫村垵鍒?鏈堜喚錛屾垜閮戒竴鐩村湪鐪嬬紪璇戝師鐞嗗拰鎴愮啛鐨勮娉曞簱銆傚簳瀛愯杽錛岀湅璧鋒潵寰堝悆鍔涖傚埌浜?鏈堜喚寮濮嬭璁hader鐨凟BNF銆傝璁¤璦錛屼笉澶栦箮鏄笁涓柟闈細搴旂敤鍦烘櫙銆佽娉曞拰搴撶殑鏀寔銆傚敖綆℃湁鐜版垚鐨凥LSL鍜孏LSL浣滃弬鑰冿紝浣嗗浜庢垜浠?寮濮嬭璁¤璦鏉ヨ錛岃繖浜涜璦鐨勮娉曞拰璇箟閮借繃浜庡鏉備簡銆傛垜闇瑕佽璇█鐗規ф參鎱㈢殑娣誨姞榪涙潵銆?/p> <p>鑰冭檻鍒癏LSL鍜孋姣旇緝鎺ヨ繎錛孋鐨勬枃娉曞弬鑰冭祫鏂欏張寰堝錛屼簬鏄垜閫夋嫨浜嗕粠C寮濮嬭鍓娉曘備絾鏄枃娉曡繖涓笢瑗匡紝騫朵笉綆綆鍗曞崟鏄爲鐘剁殑緇撴瀯錛屾爲涓婄殑浠諱綍涓涓娉曡妭鐐癸紝閮藉彲鑳戒細寮曠敤鍒板叾瀹冪殑鏂囨硶瑙勫垯銆傚洜姝や慨鏀逛簡涓鏉¤鍒欏悗錛屼綘浼氬彂鐜板畠鍙兘浼氬拰鍏跺畠瑙勫垯鍐茬獊浜嗭紝浜屼箟浜嗐備簬鏄鍓鍒掑畬铔嬩簡銆?/p> <p>褰撶劧錛屽鏋滄垜鐜板湪鏉ヨ璁¤娉曪紝鑲畾浼氬拰闄堟眽瀛愪竴鏍鳳紝鐩存帴浠嶶se Case灝辮兘鎶奅BNF鍐欏嚭鏉ワ紝鍐嶇◢寰鑼冧竴涓嬶紝涓闂ㄤ笉閭d箞澶嶆潅鐨勮璦灝辨垚浜嗐傚綋鐒跺儚C++榪欑鍙樻佽璦錛岃繖鏍峰仛鏄仛涓嶅嚭鏉ョ殑銆備絾褰撴椂鎴戞樉鐒朵笉鍏峰閭f牱鐨勮兘鍔涖備粠涓冩湀浠藉紑濮嬪氨紓曠緇婄粖鍦拌鍓簡涓浜涜娉曠壒鎬т箣鍚庣殑璇█錛屽埌浜嗗叓鏈堜喚鎵嶅嚭浜嗕釜鍗冪柈鐧懼瓟鐨勬柟妗堛?/p> <h2>紲烇細Boost.Spirit</h2> <p>浣滀負瀹屽叏涓嶆噦緙栬瘧鍣ㄧ殑鐭揣錛岃璁¤璦涓瀹氳鍜岀紪璇戝櫒鐨勫紑鍙戞斁鍦ㄤ竴璧鋒墠鑳芥湁鐐規敹鑾楓傛垜鐢ㄨ繃Flex/Bison錛岀敤榪嘇NTLR銆備絾鏄綋鏃舵垜瀵圭紪璇戝櫒鐗瑰埆鐨勯檶鐢燂紝緇勭粐Build鐨勮兘鍔涗篃姣旇緝寮憋紝鍥犳瀹冧滑鍦ㄤ嬌鐢ㄤ笂綣佺悙鍜岄毦浜庤皟璇曠粰鎴戝甫鏉ヤ簡寰堝ぇ鐨勫洶鎵般備笉榪囬偅鏃舵垜瀵規ā鏉褲佸厓緙栫▼鍜孊oost灝卞凡緇忕浉褰撶啛鎮変簡錛屾棤璁烘槸寮鍙戙侀槄璇諱唬鐮佽繕鏄疍ebug閮借兘杞繪澗搴斾粯錛屾墍浠ユ垜鎸戜簡鍗婂ぉ錛岄変簡Boost.Spirit銆?/p> <p>Boost.Spirit鏄釜寰堝钁╃殑涓滆タ銆傚畠鎯沖湪C++閲岄潰鎻愪緵涓涓被浼間簬EBNF銆佸彲浠ュ畾涔夎娉曞垎鏋愯鍒欑殑鏂硅█銆傝璁〤++鐪嬭搗鏉ュ儚涓涓柟璦錛屽綋鐒舵槸瑕佷嬌鐢ㄧ鍑洪娌$殑鎿嶄綔絎﹂噸杞姐傚綋鐒訛紝鍗充究鏄慨楗板悗鐨勮娉曪紝鐪嬭搗鏉ヤ篃榪樻槸浼氭湁鐐規殑銆侲BNF涓殑瑙勫垯</p><pre class="brush: cpp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;">Rule ::= Token SubRule0 [OptionalSubRule1]</pre> <p>鍦–pp涓渶綆鍗曞彲浠ヨ〃紺烘垚</p><pre class="brush: cpp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;">rule = token >> subrule0 >> optional(OptionalSubRule1)</pre> <p>铏界劧鐪嬭搗鏉ユ湁鐐逛笐闄嬶紝浣嗘槸瀹冨凡緇忓畬鍏ㄦ弧瓚充竴涓狣SL鐨勮姹備簡錛氱洿瑙傜殑闈㈠悜瑙e喅鏂規銆?/p> <p>涓嶈繃濡傛灉鐗墊秹鍒板疄鐜扮粏鑺傦紝鍦–++閲岄潰瑕佸啓涓涓張綆鍗曘佸張鍙敤Parser Generator錛岄偅鍑犱箮鏄笉鍙兘瀹屾垚鐨勪換鍔°傝搗鐮佸浜嶤ombinator-based Parser鏉ヨ錛屽畠澶熺畝鍗曪紝浣嗘槸娌℃湁CPS鐨勬敮鎸佷細浠ら敊璇仮澶嶈繖涓綾葷殑鍛ㄩ伃璁捐鍙樺緱鏋佷負鍙曪紱濡傛灉Rule鍙槸grammar definition錛屼笉鐗墊秹鍒頒換浣昉arser鐨勬瀯閫狅紝閭hВ鏋愯繖涓猟efinition鐨勫鏉傚害鍜岃皟璇曢毦搴﹀張涓嶄簹浜嶢NTLR鎴栬匶acc榪欐牱鏈夊崟鐙剼鏈殑宸ュ叿銆傛墍浠ヨ繖欏瑰伐浣滐紝榪樻槸浜ょ粰Haskell榪欐牱鐨勮璦鏉ュ畬鎴愬惂銆?/p> <p>閫氳繃浣跨敤Spirit銆佽璁$紪璇戝櫒銆佹姌鑵炬枃娉曪紝璁╂垜瀵笴ompiler鍜孋pp鐨勭悊瑙i兘閫掕繘浜嗕竴澶ф銆傚啀鍔犱笂08騫村叏騫撮兘鍦ㄥ仛GUI鐩稿叧鐨勪笢瑗匡紝涔熻鎴戝緙栬瘧鍣ㄧ殑鐞嗚В鏈夋墍鍔犳繁銆?/p> <p>09騫翠笅鍗婂勾鎴戜竴鐩撮兘姣旇緝鍔ㄨ崱錛屼笉榪囧埌騫村簳鎬葷畻鏄畨瀹氫簡涓嬫潵銆?/p> <h1>3. 2009騫?2鏈堚?010騫?鏈堬細闀垮緛鐨勫紑濮?/h1> <h2>鍚庣涓庡墠绔?/h2> <p>09騫?2鏈堜喚鐨勬椂鍊欙紝Boost鍗囩駭浜嗭紝Spirit涔熷埌浜哣2銆傚埌浜?鏈堜喚錛屾垜璐逛簡鐐瑰姛澶紝鎶奦2鐨凷pirit鎶樿吘鍒癝ALVIA鐨勫墠绔笂銆侾arser涔熸湁鎵鍙樺寲錛氬墠涓鐗堢殑Parser榪樻瘮杈冭崏鐜囷紝榪欎竴鐗堢殑Parser鎴戝嚑涔庢槸瀹屽叏鎸夌収Spirit鐨凞emo涓殑鏂規榪涜鐨勩傛鏃舵垜涔熷紑濮嬪皾璇曠潃鎾板啓璇箟鍒嗘瀽銆傛庝箞鍋氬嚱鏁伴噸杞介兘鏄湪閭d釜鏃跺欏紑濮嬬偣鐨勬妧鑳芥爲錛岃櫧鐒跺湪鐜板湪鐪嬫潵閮芥槸姝殑銆備負浜嗘墽琛岀敓鎴愮殑浠g爜錛屾垜璁捐浜嗗崐涓櫄鎷熸満錛岀劧鍚庤繕鍑嗗鍐欑偣鏁欑▼銆備絾鏄垜鎬濆墠鎯沖悗錛屽浜嶴hader榪欐牱涓縐掗挓瑕佽皟鐢?0M嬈$殑鍑芥暟錛屾棤璁哄浣曡櫄鎷熸満閮芥槸涓嶅悎閫傜殑銆?/p> <p>鎵浠ユ垜灝卞紑濮嬬澶囪嚜宸辯殑鍚庣銆傝姹傚氨鏄竴涓瓧錛氬揩銆傞偅涓椂鍊欙紝闄堟眽瀛愭鍦ㄥ鎬庝箞鍐檟86鐨凧IT銆備絾鏄垜鐨勮璦鍒皒86鏈夊緢闀跨殑璺璧般傛庝箞鍘誨垎閰嶅瘎瀛樺櫒錛屾庝箞鎶婄被鍨嬭漿鎹㈠埌x86鐨凬ative錛屾庝箞閫夋嫨鎸囦護錛屾垜閮芥槸涓鐭ュ崐瑙g殑銆傚嚟鎴戝綋鏃剁殑鐭ヨ瘑錛岃繖涓瀹氭槸涓嶅彲鑳藉畬鎴愮殑銆?/p> <p>浜庢槸鍦ㄩ槄璇誨畬Intel Architecture鎵嬪唽鍜屼紭鍖栨寚鍗楀悗錛屾垜鍐沖畾鍘繪壘涓涓悎鐢ㄧ殑鍚庣銆傝冭檻榪囧緢澶氬彲閫夌殑鍔炴硶錛屼緥濡傜敓鎴怌++鐨凜ode鐒跺悗緙栬瘧鎴怐LL錛涗嬌鐢═iny C錛圱CC錛夛紱鎴栬呮槸JIT銆備絾鏄畠浠己鐐歸兘鏄緢鏄庢樉鐨勩傜紪璇戞垚DLL蹇呴』瑕佽嚜宸辮鍓竴涓狦CC鍑烘潵錛汿iny C鐨勬晥鐜囧茍涓嶆槸寰堝ソ錛汮IT寰堝鏉傦紙璧風爜鍦ㄩ偅涓椂鍊欐槸榪欐牱錛夈備笉榪?鏈堜喚鐨勬椂鍊欙紝鏁忔晱榪樻槸璋佹寚鐐逛簡鎴戜竴涓嬶紝璇翠綘鍙互鍘葷湅鐪婰LVM銆傜劧鍚庢垜鍘諱竴鐪嬶紝鐗涢鹼紝灝辨槸鎴戣鐨勪笢瑗匡紒鐒跺悗鎴戝氨寮濮嬪LLVM銆侺LVM鐨処R寰堝ソ瀛︼紝涓涓笅鍗堝氨鎼炰簡涓狧ello world銆?/p> <p>榪欎釜鏃跺欙紝minmin涔熷湪SALVIA涓婂疄鐜頒簡Half-Space鐨勫厜鏍呭寲綆楁硶銆?/p> <p>閭d釜鏃跺欐垜韙岃簢婊″織錛屾剰姘旈鍙戯紝涓夋湀璧惰嫳錛屼簲鏈堣秴緹庛?/p> <p>鍙病鎯崇潃灝辮繖涔堟帀鍧戦噷闈㈠幓浜嗐?/p> <h1>4. 2010騫?鏈堚?011騫存柊騫達細鑻﹂毦鐨勮鍐?/h1> <h2>鑻﹂毦錛氬鏉傜殑闂</h2> <p>涓諱綋澶т漢鐪熸槸紲烇紝浜斾釜瀛楀氨姒傛嫭浜嗘垜2010騫翠竴騫寸殑鍔姏銆?/p> <ul> <li>minmin鍋氱殑SALVIA鐨凥alf-Space綆楁硶騫朵笉姣旀垜鏈寸礌鐨凾op-Bottom鐨勫厜鏍呭寲寮猴紱</li> <li>綰圭悊涓婄殑浼樺寲灝界浣跨敤浜哠SE浣嗘槸浠嶇劧鏀硅繘鏈夐檺錛?/li> <li>Shader緙栬瘧鍣ㄦ湰韜殑緙栬瘧鏃墮棿鐢變簬Spirit鐨勫瓨鍦ㄨ屽疄鍦ㄦ極闀匡紱</li> <li>Shader緙栬瘧鍣ㄥ拰Pipeline濡備綍鍏寵仈鍙堟棤浠庝笅鎵嬶紱</li> <li>LLVM鐨勯泦鎴愪篃鍥犱負鍓嶇鑰屾湁鎵鑰芥悂錛屽彟澶栧洜涓哄悇縐嶉敊璇眰鍑轟笉絀鳳紝璁╂暣涓紑鍙戣繘搴﹀彉寰楅緹閫熴?/li></ul> <p>鎵浠ユ暣涓竴騫翠腑錛孲ALVIA鐨勫紑鍙戝氨鏄啓鍐欏仠鍋滐紝鍋滃仠鍐欏啓銆傚彲浠ヨ08騫村垵鐨勯攼姘旓紝宸茬粡娑堢(鐨勫樊涓嶅浜嗐傚埌浜?鏈堜喚鐨勬椂鍊欙紝鎴戞瘯涓氫簡錛屾柊宸ヤ綔涔熷熀鏈笂紜畾鍜岀啛鎮変簡錛屾垜灝卞拰minmin璇達紝浠庣幇鍦ㄥ紑濮嬫垜鍐欏崐騫存姤鍚э紝璁茶堪涓涓嬪崐騫存潵鐨勮繘灞曘備簬鏄究鏈変簡絎竴綃囬」鐩畝鎶ャ?/p> <h2>琛屽啗錛氫簺寰殑榪涘睍</h2> <p>涔熸鏄粠閭d釜鏃跺欙紝鎴戝喅瀹氳鎶奡ALVIA浣滀負涓嬈懼疄楠屽搧鏉ュ寰咃紝鐢ㄤ笂鎵鏈夋垜涓嶄細鐨勬垨鑰呮柊瀛︾殑涓滆タ銆傚崟鍏冩祴璇曪紝CMake宸ュ叿閾撅紝涓篠hader璁捐鐨凱ipeline錛岃涔夊垎鏋愬拰鍚庣鐨勫師鍨嬮兘鍦ㄩ偅涓騫村姞鍏ヤ簡SALVIA銆傝櫧鐒朵粠瀹炵幇涓婂畠浠凡緇忎笌鐜板湪鐩歌窛鐢氳繙錛屼絾鏄搗鐮佷竴鍒囬兘榪樻槸寰濂界殑鏂瑰悜鍙戝睍銆?/p> <p>鍙﹀錛?8騫村埌09騫存湡闂村湪瀹炰範鐨勬椂鍊欑Н绱殑鏁欒寮濮嬫參鎱㈢殑閰濋吙鍜屽彂閰碉紝鏁忔嵎涔熼愭笎鎴愪負浜嗘垜寮鍙戣繃紼嬩腑鐨勪富瑕佹寚鍗椼?/p> <p>鍩烘湰涓婏紝閭d釜鏃跺欑Н绱簡寰堝蹇呰鐨勭粡楠屽拰鏁欒銆傚綋鐒剁粷澶у鏁版槸鏁欒銆?/p> <h1>5. 2011騫?鏈堚?011騫?鏈堬細鏂癝hader鐨勮搗鐐?/h1> <h2>鍧戠錛欱oost.Spirit鐨勭伃浜?/h2> <p>鍦?1騫寸殑鏄ヨ妭鏈熼棿錛屾垜緇堜簬鏃犳硶蹇嶅彈Spirit鐨勯夯鐑︿簡錛?/p> <ul> <li>涓孌?00琛屼笉鍒扮殑浠g爜錛屽湪鎴戠殑鏈哄櫒涓婇渶瑕佺紪璇?0鍒嗛挓錛?/li> <li>Object File闇瑕佸崰鐢?.9G鐨勭‖鐩橈紱</li> <li>Mangling name杞繪澗瓚呰繃4K瀛楃鐨勯檺鍒訛紱</li> <li>杞繪槗鎾戠垎obj鏂囦歡鐨剆ymbol table錛岄渶瑕佺敤/bigobj鎵嶈兘澶熺紪璇戦氳繃錛?/li> <li>鐢氳嚦鍦ㄧ紪璇戠殑鏃跺欎細杞繪槗鐨勮32浣嶇殑MSVC CL out of memory銆?/li></ul> <p>瑕佺煡閬擄紝浠ヤ笂榪欎簺榪樻槸搴旂敤浜哠pirit鎸囧崡涓殑緙栬瘧閫熷害浼樺寲鏂規涔嬪悗鐨勭粨鏋溿?/p> <p>榪欎竴鍒囧師鍥狅紝閮芥槸鍥犱負Boost.Spirit瀵逛簬Parser Tree錛屾槸鐢ㄤ簡瀹屽叏闈欐佺殑鍒嗘瀽鏍戠粨鏋勩傛瘡鏉¤鍒欑殑榪斿洖鍊奸兘浼氭槸瀹屽叏涓嶅悓鐨勭被鍨嬨傝繖鐩存帴瀵艱嚧綾誨瀷鏁伴噺鏋佷負搴炲ぇ錛屼唬鐮佽啫鑳鐨勫帀瀹熾?/p> <p>浜庢槸11騫寸殑瀵掑亣鎴戣姳浜?澶╃殑鏃墮棿閲嶆柊灞卞浜嗕竴涓枃娉曞垎鏋愬櫒鐨勪駭鐢熷櫒錛屽茍鍋氬埌DSL鍑犱箮瀹屽叏鍜孲pirit涓鑷淬傚彧涓嶈繃Parser Tree涓嶅啀鏄潤鎬佺被鍨嬶紱妯℃澘鐨勭敤閲忎篃鍑忚交浜嗗緢澶氥?/p> <h2>Shader鐨勯樁孌墊ф垚鏋?/h2> <p>鍒頒簡鍥涙湀浠界殑鏃跺欙紝Shading Language Semantic/System Value宸茬粡鍦ㄨ娉曚笂鏀寔浜嗭紝璇箟涓婁篃鑳藉垎鏋愬嚭鍝簺鍙橀噺鏄疭ystem Value錛屽摢浜涘彉閲忔槸Uniform鐨勩傚茍涓旈氳繃鐢熸垚鐗規畩鐨勫嚱鏁扮鍚嶏紝Shader婊¤凍浜嗕互涓嬪嚑涓渶姹傦細</p> <ol> <li>Shader瑕佽繑鍥炰竴涓嚱鏁幫紱</li> <li>榪欎釜鍑芥暟鏄彲閲嶅叆鐨勶紙鍥犱負瑕佸茍鍙戯級錛?/li> <li>鏁版嵁鑳芥紜殑浠嶱ipeline浼犲叆鍒癝hader鐨勫嚱鏁頒腑錛屼篃鑳芥紜殑榪斿洖錛?/li> <li>Shader涓浜嶱ipeline鏁版嵁寮曠敤瑕佽兘姝g‘鐨勭敓鎴愬湴鍧銆?/li></ol> <p>鍒頒簡11騫?鏈堜喚鐨勬椂鍊欙紝緇堜簬鎶奡hader鍏ㄧ嚎璐氥傝櫧鐒跺緢澶歄perator鍜孖nstrinsic榪樹笉鏀寔錛屼絾鏄搗鐮佹湁浜嗕釜鍙互鐪嬬殑Demo銆?/p> <h2>絎竴涓増鏈笌鍙戝竷鍓嶇殑瀹屽杽宸ヤ綔</h2> <p>LLVM鐢ㄤ笂浜嗭紱VS瀹屾暣浜嗭紝PS涔熸湁浜嗕釜闆忓艦錛涢澶勭悊鍣ㄤ粈涔堢殑閮芥湁浜嗐?/p> <p>Unit Test涔熸湁浜嗗師鍨嬨傛垜涓烘瘡涓猄tage閮藉仛浜哢nit test錛歅arser錛孲emantic錛孋odeGen鍜孞IT銆?/p> <p>鏌愮鎰忎箟涓婃潵璇達紝榪欏嚑涓湀鏉ュ湪鍚庣涓婇『鍒╄繘灞曪紝璁╂垜澶氬皯鏈夌偣寰楁剰蹇樺艦銆傚啀鍔犱笂姊佹葷殑甯姪錛孲oftArt榪欎釜鍚嶅瓧鏀規垚SALVIA錛孡OGO涔熸湁浜嗭紝鎴戝湪閮ㄩ棬鍐呴儴鍋氱殑涓浜汭ntroduction涔熷府鍔╂垜姊崇悊浜嗘濊礬銆備簬鏄粠4鏈堜喚寮濮嬶紝鎴戝氨絳瑰鐫瑕佹妸SALVIA姝e紡鍙戝竷鍑哄幓銆?/p> <p>11騫?鏈?鍙鳳紝SALVIA Milestone 1.0 鍙戝竷銆傛湁Change Log錛屾湁Binary Demo錛屾湁Snapshot銆?/p> <p>涓夊懆鍚庯紝鍙戝竷浜嗙涓涓湁Vertex Shader鐨凞emo</p> <h1>6. 2011騫?鏈堚?012騫?鏈堬細鍧傞亾銇?.0</h1> <h2>Pixel Shader錛氶渶姹備笌璁捐</h2> <p>鍦∕ilestone 1.0鍙戝竷鍚庯紝鎴戝紑濮嬪仛Pixel Shader鐨勭壒鎬с傛湰浠ヤ負鍗婂勾涔嬪唴灝辮兘鎼炲畾錛屽彂涓?.0鎵湁鍚愭皵涓涓嬨備絾鏄疄璺佃瘉鏄庯紝鎴戠湡鏄粬濡堢殑澶洸鐩箰瑙備簡銆?/p> <p>鎴戝厛鏉ヨ涓璇碢ixel Shader鐨勭壒鐐瑰拰闇姹傘傛瘮鏂硅鎴戞湁鍥涗釜pixel錛屾瘡涓猵ixel閮芥槸涓涓猣loat銆?/p><pre class="brush: cpp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;">struct pixel_input { float data; }; pixel_input pixel_block[4];</pre> <p>鐒跺悗鎴戣璁$畻涓涓嬶紝榪欎釜data鍔犱笂1.0涔嬪悗鏄灝戙傛垜鍓嶉潰璇磋繃錛屾垜瑕佽鎸囦護鐪嬭搗鏉ユ槸鍥涗釜鍍忕礌鍚屼竴鏃跺埢鎵ц鐨勶紝閭d箞鏄劇劧鎴戠敓鎴愮殑浠g爜灝變細綾諱技浜庤繖鏍鳳細</p><pre class="brush: cpp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;">struct pixel_input { float data; }; struct pixel_output { float data; }; void shading_pixel(pixel_input* in_data, pixel_output* out_data) { // TMP = IN_DATA.DATA + 1.0 float tmp0 = in_data[0].data + 1.0; float tmp1 = in_data[1].data + 1.0; float tmp2 = in_data[2].data + 1.0; float tmp3 = in_data[3].data + 1.0; // OUT_DATA.DATA = TMP out_data[0].data = tmp0; out_data[1].data = tmp1; out_data[2].data = tmp2; out_data[3].data = tmp3; }</pre> <h2>Pixel Shader錛氫紭鍖栦笌闂</h2> <p>鏄劇劧榪欓噷鏄彲浠ヤ紭鍖栫殑錛氬皢鍥涙潯鎸囦護騫朵綔涓鏉IMD鎸囦護銆?/p> <p>閭d箞榪欎釜鏃跺欙紝鏈変袱涓渶姹傛槸瑕佹弧瓚崇殑錛?/p> <ol> <li>鍚屾牱鐨剆truct member涓瀹氳鏄偦鎺ュ湪涓璧楓?/li> <li>寰楁牴鎹甋IMD鐨勮姹傛暟鎹榻愩?/li></ol> <p>鍙湁涓涓煙褰撶劧濂藉姙銆傚鏋渟truct寰堝鏉傚憿錛屾瘮鏂硅涓嬮潰榪欐牱錛?/p><pre class="brush: cpp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;">struct { float; float2; int3; struct { float2[3]; float; }; };</pre> <p>閭e氨浼氳鐢熷嚭鍚勭闂錛?/p> <ul> <li>閭h涓嶈鎶婃瘡涓煙閮藉睍騫沖憿錛?/li> <li>灞曞鉤鍒頒粈涔堢▼搴︼紵</li> <li>璁╂瘡涓狟uiltin Type Member鐩擱偦錛岃繕鏄姣忎釜Float/Int鐩擱偦錛?/li> <li>閭i亣鍒板姩鎬佸鍧錛屾庝箞鍔烇紵</li> <li>灞曞鉤鍚庣殑浠g爜錛屼笌VS涓殑浠g爜鑳介氱敤鍚楋紵</li></ul> <p>姣忎釜鏂規閮戒竴瀹氳兘瀹屾垚錛屾瘡涓柟妗堥兘鏈夋槑鏄劇殑緙洪櫡銆傛渶鍒濇垜鏄兂灝濊瘯鍥涗釜鍍忕礌瀹屽叏鐙珛鐨勫姙娉曪紝榪欐牱瀹炵幇璧鋒潵鏈鏂逛究銆備絾鏄嚭浜庡鎬ц兘鐨勮拷姹傦紝鎴戝張鎯沖仛灞曞鉤鐨勩傚睍騫崇殑鏂規鍋氬埌涓鍗婏紝鍙戠幇澶鏉備簡銆?/p> <h2>鍧戠II錛歀LVM</h2> <p>姝ゅ錛岃繕鏈夊嚑涓潪甯鎬弗閲嶇殑闂錛屽彂鐢熷湪LLVM涓娿?/p> <p>涓涓槸ABI銆備竴涓鍚圕 Calling Convention鐨凩LVM鍑芥暟錛屽畠瀵瑰爢鏍堢殑鐞嗚В涓嶸S瀹屽叏涓嶅悓錛岀壒鍒槸鍙傛暟浼犲叆鎴栬呰繑鍥濻truct鐨勬椂鍊欍傝繖鏍鳳紝鐩存帴鐢↙LVM鐨勫嚱鏁癊xport鍑烘潵鍚庯紝璁¬C鍘籆all瀹冨氨涓瀹氫細澶辮觸銆備負浜嗚В鍐沖畠錛屾垜鑺變簡榪戜袱鍛ㄧ殑鏃墮棿錛岃璁′簡涓涓狿roxy錛岃鍑芥暟閬垮厤鐢⊿truct鏉ヤ紶閫掞紝涓鍒囨暟鎹紝闄や簡鍜屽瘎瀛樺櫒鍚屾牱澶у皬鐨刦loat鍜宨nt錛屽叾浣欐暟鎹兘閫氳繃鎸囬拡鏉ュ仛銆傚悓鏃訛紝鎴戦渶瑕佸皢涓浜涘嚱鏁版敞鍏ュ埌LLVM涓紝姣旀柟璇寸汗鐞嗛噰鏍鳳紝姝ゆ椂ABI鍚屾牱鏄釜紲告偅銆備負浜嗚Code Gen姝g‘鐨勮瘑鍒嚱鏁版槸LLVM鐨勮皟鐢ㄥ崗璁繕鏄垜鑷繁瀹氬埗鐨勮皟鐢ㄥ崗璁紝騫朵駭鐢熸紜殑浠g爜銆傛垜鍋氫簡鍚勭濂囪懇鍜屽偦閫肩殑鏂規銆傛湁涓浜涙柟妗堣搴熷純浜嗭紝浣嗘槸涓昏鐨処dea錛屼粛鐒舵部鐢ㄥ埌鐜板湪銆?/p> <p>涓涓槸涓存椂鍙橀噺錛堝寘鎷琒piller錛夌殑瀵歸綈銆傚湪Linux/GCC涓婏紝鏍堥《鍜屾爤鍩烘寚閽堜竴瀹氭槸16瀛楄妭瀵歸綈鐨勩傚鏋滅紪璇戝櫒闇瑕佸垎閰嶄竴涓復鏃跺彉閲忥紝閭d箞瀹冨彧瑕侀氳繃ESP - 0x10*n灝辮兘鑾峰緱涓涓榻愮殑鍦板潃銆備絾鏄湪VC涓紝x86涓嬪畬鍏ㄦ病鏈夎繖鏍風殑闄愬埗錛堥櫎闈炲嚱鏁頒腑浣跨敤浜哶_m128錛岃繖涓椂鍊欏湪榪涘叆Frame涔嬪悗浼氭湁涓涓猄UB/AND鐨勬寚浠ゆ妸鏍堥《鎼炲埌16瀛楄妭瀵歸綈銆傦級銆備絾LLVM鐢熸垚鐨勬墍鏈変唬鐮侊紝鍙堟槸鍩轟簬GCC鐨勫亣璁俱係ALVIA鐢熸垚鐨勫眬閮ㄥ彉閲忥紝榪樺彲浠ユ帶鍒跺湴鍧錛屼絾鏄浜庣紪璇戝櫒涓存椂鐢熸垚鐨勫彉閲忔潵璇達紝灝卞畬鍏ㄤ笉鍙帶浜嗐傚湪3.1涔嬪悗鍥犱負寮曞叆浜咥VX錛岄渶瑕?2瀛楄妭瀵歸綈錛岃繖涓棶棰樺氨鏇村姞鍙樻湰鍔犲帀浜嗐傚湪x86涓婏紝鎴戣繕鍙互閫氳繃宓屽叆姹囩紪錛屾潵寮哄埗璋冩暣鏍堝撫銆備絾鏄湪x64涓婏紝鍙堝惎鍔ㄤ簡AVX鐨勬儏鍐典笅錛屾垜灝卞交搴曟病鏈夊姙娉曚簡銆傝繖涓棶棰樹竴鐩村歡緇埌鐜板湪錛屽鏋滄垜涓嶅姩鎵嬪幓Debug LLVM鐨勮瘽錛屽氨鍙兘絳変粬浠粈涔堟椂鍊欐兂璧鋒潵淇榪欎釜闂浜嗐?/p> <h2>SIMD鎵ц妯″瀷涓嬪垎鏀殑澶勭悊</h2> <p>Pixel Shader鐨勬墽琛屾ā鍨嬫槸SIMD鐨勶紝榪欒姹傛瘡涓儚绱犱笂鍚屼竴鏃跺埢閮芥墽琛岀浉鍚岀殑鎸囦護銆傚鏋滄病鏈夊垎鏀紝閭h嚜鐒舵槸綆鍗曟棤姣斻備竴鏃︽湁浜嗗垎鏀氨鎵撶牬浜嗚繖涓害瀹氥傚湪DX9.0b鍙婁箣鍓嶏紝榪欏綋鐒舵病闂銆?/p> <p>浣嗘槸Shader Model 3.0姝e紡鏀寔Dynamic Branch寮濮嬶紝榪欎釜闂灝卞嚫鐜板嚭鏉ヤ簡錛氬垎鏀鎬庝箞澶勭悊錛?/p> <p>瀵逛簬Pixel Shader鏉ヨ錛屼細闈復涓夌鍒嗘敮錛氶潤鎬佸垎鏀紝鍑嗛潤鎬佸垎鏀紙榪欎釜鍚嶅瓧鏄垜鐬庤搗鐨勶級鍜屽姩鎬佸垎鏀?/p><pre class="brush: cpp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;">float branches( uniform float udata, float vdata: POSITION): COLOR0 { const float zero = 0.0; if(zero < 1.0) { // Static branch } if(udata) { // Semi-Static Branch (鎴戣嚜宸遍犵殑) } if(vdata) { // Dynamic Branch } } </pre> <p>鎴戜滑鏉ュ垎鎯呭喌璁ㄨ涓涓嬶細</p> <ul> <li>瀵逛簬闈欐佸垎鏀潵璇達紝鍥犱負紜畾鍒嗘敮鐨勬槸涓涓父閲忥紝閭d箞鏄劇劧鍦ㄧ紪璇戦樁孌靛氨鑳藉鐭ラ亾鍒嗘敮鎵ц涓庡惁錛岀洿鎺ョ敓鎴愬搴旂殑浠g爜灝卞彲浠ヤ簡銆?/li> <li>瀵逛簬uniform浣滀負鍒ゆ柇鏉′歡鐨勫垎鏀潵璇達紝鍦╯hader緙栬瘧鐨勬椂鍊欙紝騫朵笉鐭ラ亾榪欎釜鍒嗘敮鏄惁浼氭墽琛屻備絾鏄憿錛孶niform浼氬湪Shader鎵ц鍓嶈緗紝鍜屼唬鐮佹墽琛岀浉姣旓紝Uniform璁劇疆鐨勬瘮渚嬮潪甯鎬綆銆傝繖涓椂鍊欐垜浠彲浠ュ厛璁蹭唬鐮佺紪璇戞垚涓棿琛ㄨ揪錛岃繖涓腑闂磋〃杈句細鐭ラ亾涓涓彉閲忔槸涓嶆槸Uniform鐨勩傚湪Uniform璁劇疆濂藉悗錛孲hader鐪熸鎵ц鍓嶏紝鎶奤niform鏇挎崲鎴愰偅涓鹼紝涔熷氨鏄妸Uniform褰撳仛甯擱噺錛屽Shader鍐嶇紪璇戜竴嬈★紝寰楀埌鐪熸鐨勬墽琛屾寚浠ゃ傛墍浠ュ湪鎸囦護鎵ц鐨勬椂鍊欙紝鍑嗛潤鎬佸垎鏀氨鍜岄潤鎬佸垎鏀畬鍏ㄧ浉鍚屼簡銆?/li> <li>鏈鍚庝竴涓紝鍔ㄦ佸垎鏀傚鏋滃垽鏂潯浠跺氨鏄姩鎬佺殑錛岄偅娌″姙娉曪紝濡傛灉瑕佹敮鎸丼M3.0錛屽氨蹇呴』瑕佽兘鏀寔瀹冦傚悓鏃跺浜庝笉鍚岀殑Pixel錛岄兘鍙兘鏈変笉鍚岀殑鍒嗘敮銆傝繖瀵逛簬SIMD鏉ヨ錛屾墠鏄湡姝g殑闅鵑銆?/li></ul> <p>瀹為檯涓婏紝鎴戜滑鐪熸瑕佽В鍐崇殑錛屽氨鏄姩鎬佸垎鏀?/p> <p>瀵逛簬SIMD妯″瀷鏉ヨ錛屽姩鎬佸垎鏀湁涓夌澶勭悊鍔炴硶銆?/p> <ol> <li>璺寵漿鎵ц銆傚儚CUDA 2.0浠ヤ笂閭f牱鐨勬寚浠ら泦鍏峰鏈変竴瀹氱殑璺寵漿鎵ц鑳藉姏銆傜紪璇戝櫒鍙互鎶奡IMD鎷嗗紑錛屾寜鐓ф爣閲忔墽琛屻傛瘡涓兘鎵ц瀹屼簡鍚庯紝鍐嶇戶緇寜鐓IMD鎵ц鍏朵粬鐨勪唬鐮併?/li> <li>鏉′歡鎵ц銆傝繖涔熸槸鍥懼艦紜歡涓婃渶甯歌鐨勬墽琛屾ā寮忋傞氳繃涓涓綅錛屽氨鍙互鍐沖畾GPU涓殑鎵ц鍗曞厓鏄惁鎵ц涓孌典唬鐮併備婦涓笉鍑嗙‘鐨勪緥瀛愶紝濡傛灉鏄釜4騫跺彂鐨勬墽琛屽櫒錛岄偅涔堝洓涓茍鍙戞墽琛屽櫒鐨勬墽琛屾潯浠跺彲浠ヨ緗負1100錛岃繖鏍峰氨鍙湁鍓嶄袱涓崟鍏冪殑鏁版嵁鎵ц錛屽悗涓や釜涓嶆墽琛屼簡銆?/li> <li>鍐欐帺鐮併傝繖涓姙娉曟槸娌℃湁鍔炴硶鐨勫姙娉曘傚畠鐨勫熀鏈悊蹇靛氨鏄細鍙涓嶅啓鍒板唴瀛樹腑鐨勬墽琛岀粨鏋滐紝灝卞彲浠ヨ涓哄畠娌℃墽琛岃繃銆備絾鏄啓鎺╃爜鎬繪槸嫻垂浜嗘寚浠ゃ備笉榪囧ソ姝瑰畠榪樻槸閬垮厤浜嗚煩杞殑銆傛墍浠ュ浜庢棭鏈熺殑ARM榪欐牱娌℃湁鍒嗘敮棰勬祴鐨勭簿綆浣撶郴鏉ヨ錛屼竴鏃︽湁鍒嗘敮鎵ц璧鋒潵灝辨槸姝葷繕緲樸傛墍浠ュ畠鏈夌被浼間簬Select-Store榪欐牱鐨勬寚浠わ紝灝藉彲鑳界殑閬垮厤鍒嗘敮鐨勫嚭鐜般?/li></ol> <p>瀵逛簬SAVLIA鏉ヨ錛岃煩杞墽琛屽拰鍐欐帺鐮佹槸涓や釜鍙兘鐨勯夋嫨銆傚洜涓哄啓鎺╃爜鐨勪唬鐮佺敓鎴愯搗鏉ユ洿鍔犺交鏉句竴浜涳紝鎵浠ョ洰鍓嶇殑SALVIA鐨勫疄鐜版槸鍐欐帺鐮佺殑銆傚湪x86/x64騫沖彴涓婏紝瀵逛簬AVX浠ヤ笂鐨勬寚浠わ紝榪樺彲浠ョ敤blend銆備絾鏄浜庡叾浠栨寚浠よ岃█錛屽熀鏈笂鍙兘鏄氳繃璺寵漿瀹炵幇鍐欐帺鐮併傛墍浠ヨ繖閮ㄥ垎鐨勫紑閿鍏跺疄寰堝ぇ銆傜瓑鍒伴犲嚭浜嗚嚜宸辯殑SSA涔嬪悗錛屽啀鏉ヨ冭檻鍒嗘敮鎵ц鐨勪簨鎯呭惂銆?/p> <p>瀵逛簬鍐欐帺鐮佺殑鎺╃爜瑕佹庝箞璁$畻錛屼竴寮濮嬫垜蹇冮噷鎸烘病璋辯殑銆傜壒鍒槸鏈変簡錛孋ontinue鍜孊reak涔嬪悗錛屾儏鍐靛氨浼氬彉寰楀鏉傝搗鏉ャ備竴寮濮嬫垜娌℃硶紜俊鑷繁鐨勬柟妗堟槸姝g‘鐨勩傚悗鏉ョ湅浜哅ESA鐨凣allinum浠ュ悗錛岀湅瑙佷簡Continue Mask鍜孊reak Mask涓や釜鍙橀噺錛岀灛闂村氨鏄庣櫧浜嗐?/p> <p>鍏蜂綋鎬庝箞鎬濊冪殑涓嶅璇翠簡錛岃繖閲屽啓涓嬪嚑涓粨璁猴細</p> <ol> <li>璇█涓嶈兘鏈塆oto錛堟湁Goto浼氳浠g爜鍙樺緱闈炲父澶嶆潅錛岀敋鑷充笉鍙В錛夛紱</li> <li>鎵闇瑕佺殑鎺╃爜鐨勬暟閲忎細闅忕潃寰幆鐨勫祵濂楀眰鏁扮殑澧炲姞鑰屽鍔狅紱</li> <li>姣忎釜寰幆鏈澶氭湁涓変釜鎺╃爜錛欱reak錛孋ontinue鍜孧ask錛?/li> <li>紼嬪簭鏄浐瀹氱殑璇濓紝鎺╃爜鐨勬暟閲忓氨涓瀹氭槸涓父閲忋傦紙瑕佷笉鐒剁‖浠跺氨娌℃硶鍋氫簡錛?/li> <li>鍐欐帺鐮佺殑浣嶆暟鍙拰鎵ц鍗曞厓鐨勬暟閲忔湁鍏籌紝鍜屽祵濂楁繁搴︽棤鍏熾?/li></ol> <h2>鍧傞亾銇甌est</h2> <p>灝界閬囧埌浜嗗悇縐嶉毦澶勶紝浣嗘槸寰堝鏂規榪樻槸欏哄埄鐨勫仛鍑烘潵浜嗐傛柟妗堝拰鏂規涔嬮棿宸紓寰堝ぇ錛岃鎯抽『鍒╃Щ妞嶏紝蹇呴』瑕佹湁Test銆?/p> <p>涔嬪墠涔熻榪囷紝涓寮濮嬫垜鐨凾est鏄寜鐓arser錛孲emantic錛孋ode Gen錛孞IT鍒嗗紑鍋氱殑銆備絾鏄憿錛岃繖鏍蜂竴鏉ワ紝涓嶅悓Stage涔嬮棿鐨凾est澶嶇敤鎬ч潪甯擱珮銆傝屼笖鍥犱負Stage緇忓父鍙樺寲錛屽寘鎷琒tage鐨勬帴鍙c傝繖鏃跺橳est灝卞畬铔嬩簡銆俆est鏈韓涔熷緢鏋嚗錛堝彉閲忓悕閮戒笉濂借搗錛夛紝鎵浠est閲嶅啓璧鋒潵闅捐繃鐨勮姝匯?/p> <p>浜庢槸鎴戦噸鏂板瑙嗕簡涓涓嬮渶姹傘傚彂鐜版垜鏈緇堝彧鍏沖績JIT緙栬瘧鍑烘潵鐨勫嚱鏁扮殑榪愯緇撴灉錛屽叾瀹炲茍涓嶅叧蹇冧腑闂寸殑榪囩▼銆傝屼笖闅忕潃鎴戝緙栬瘧榪囩▼鐞嗚В鐨勯愭鍙樺寲錛孋ompiler Stages鍑犱箮姣忛殧涓や釜鏈堝氨瑕佽繘琛屾瘮杈冨ぇ鐨勪慨姝c傛祴璇曠殑閲忕◢寰ぇ涓鐐癸紝灝辨病鏈夊姙娉曠淮鎶est Case浜嗐傚茍涓旓紝瀵逛簬鍗曟潯璇彞鎴栬呴潪甯哥煭鐨勫嚱鏁版潵璇達紝浠庤瘝娉曞埌鏈緇圝IT鍑烘潵鐨勫嚱鏁版墍瑕嗙洊鐨勭紪璇戝櫒浠g爜闈炲父涔嬪皯錛屽彲鑳?-4涓嚱鏁幫紝浠g爜灝卞嚭鏉ヤ簡銆傚嵆渚挎湁闂錛屽姣旇繃鍘葷殑鐗堟湰杞繪澗灝辮兘鍒嗘瀽鍑烘潵銆傚啀鍔犱笂澶ч噺鐨凙ssertion錛岃瘖鏂搗鏉ユ洿鍔犲鏄撱?/p> <p>鍥犳錛屽湪榪欏嚑涓湀涓垜瀹屽叏閲嶅啓浜員est Case錛氳JIT鐨勬祴璇曠矑搴︽洿浣庯紝嫻嬭瘯鏇翠赴瀵岋紱鍙栨秷鎵鏈夌殑涓棿Level鐨勬祴璇曘傛柊鐨勬祴璇曞洖褰掕搗鏉ラ潪甯稿鏄擄紝鍑轟簡闂涔熷緢濂芥壘鍒般傚湪Test Case鍐欏畬鍚庯紝姝eソ鐪嬪埌Martin Fowler鍠瘋繃搴DD鐨勯棶棰橈紝鐪熸槸鎰熷悓韜彈銆?/p> <p>嫻嬭瘯闇瑕佸悧錛熷綋鐒墮渶瑕併備絾鏄夋嫨鍚堥傜殑Level錛屽仛鍚堥傜殑嫻嬭瘯鏄潪甯擱噸瑕佺殑銆傜粨鍚堜箣鍓嶅疄涔犵殑鏃跺欑殑Unit Test緇忛獙錛屾湁浠ヤ笅鍑犵偣鎰熷彈錛?/p> <ol> <li>嫻嬭瘯涓瀹氳閫夋嫨灝藉彲鑳戒綆鐨勯潰錛岃繖鏍風壍娑夌殑浠g爜灝卞敖鍙兘灝戯紱</li> <li>鍦ㄧ旱鍚戜笂錛岀矑搴﹁緇嗐傞櫎浜嗗崟涓狝PI鐨凾est錛岃繕瑕佹湁閫傚害鐨勪氦鍙夛紝涓嶈繃澶患鍚堢殑嫻嬭瘯錛岃璁╅泦鎴愭祴璇曠敤渚嬫潵瀹屾垚錛?/li> <li>瑕侀噸瑙嗕唬鐮佽鐩栫巼錛?/li> <li>嫻嬭瘯闈㈠悜鐨凙PI瑕佺ǔ瀹氥傚ぉ澶╁彉寰桝PI浼氳浣犲交搴曞け鍘誨啓Test鐨勪俊蹇冦侫PI瓚婄ǔ瀹氾紝鍦ㄥ畠涓婇潰鍑虹幇闂鐨勬満浼氬氨瓚婂錛屼綘鍐欑殑嫻嬭瘯鎬т環姣斾篃瓚婇珮銆?/li></ol> <h2>鍧¢暱璺繙錛屽皬姝ュ揩璧?/h2> <p>鍦ㄥ畬鎴愪簡Test鐨勬敼閫犲悗錛岀粓浜庢湁浜嗕竴涓悎閫傜殑鍙戝竷鍓嶈瘎浼般傛墍浠ュ埌浜?1騫?1鏈堝悗錛屽彂甯冪殑閫熷害灝辨槑鏄懼彉蹇簡璁稿銆傚揩閫熺殑鍙戝竷瀵逛簬鍋氫竴涓暱鏈熼」鐩潵璇撮潪甯擱噸瑕併傝繖涔熷拰鏁忔嵎鐨勬兂娉曚笉璋嬭屽悎銆備笉綆℃槸浠庡搧璐ㄦ帶鍒朵笂銆佽繕鏄繘搴﹁拷韙笂錛屾垨鑰呮槸璇村寮鍙戣呰嚜淇″績鐨勫寮猴紝閮介渶瑕佹湁鐭鉤蹇殑寮鍙戝懆鏈熴?1騫翠篃姝eソ鏄疉utodesk鎺ㄨ鏁忔嵎鐨勪竴騫淬傚悓浜嬮噷闈㈡湁寰堝鐨勪漢鍙嶅簲璇存晱鎹蜂細瀵艱嚧杞歡鍝佽川鐨勪笅闄嶏紝鐭湡鐩爣浼氬鑷磋繃浜庤拷閫愮溂鍓嶅埄鐩娿?/p> <p>浣嗘槸浠庢垜鐨勭粡楠屾潵鐪嬶紝瀵逛簬涓漢錛屾晱鎹瘋鐭鉤蹇備絾瀵逛簬鍥㈤槦錛屾晱鎹瘋浠庨暱璁¤銆備笉鏄墍鏈夌殑iteration閮介渶瑕佸紑鍙戞柊鐗規э紝蹇呴』瑕佷繚鐣欒凍澶熺殑iteration鏉ュ畬鎴愰噸鏋勩佹暣鐞嗐佽璁℃柟妗堢殑鍙嶇渷鍜岃璁恒傚浜庝互騫翠負鍗曚綅鐨勯暱鍛ㄦ湡浜у搧鏉ヨ錛屽彲浠ユ瘡涓搴︽湁3-5澶╃殑鏃墮棿錛屾瘡涓漢閮芥彁鍑哄妗嗘灦鐨勬敼榪涜鍒掞紱姣忓勾鏈変袱鍛ㄧ殑鏃墮棿錛屽畬鎴愭鏋剁殑閲嶆瀯鍜屼慨姝c傛洿灝忕殑閲嶆瀯錛屽彲浠ュ畨鎺掔殑鏇村姞鐭皬鐨勬椂闂淬?/p> <h2>6. 2012騫?鏈堝強浠ュ悗錛氱幇鍦ㄤ笌鏈潵</h2> <h2>鏂扮壒鎬э紝鏂版濊?/h2> <p>浠?1騫?鏈堜喚寮濮嬪埌鐜板湪錛屽氨涓鐩村湪鍋欴emo銆佷紭鍖栥佺壒鎬х殑瀹屽杽錛涗互鍙婁竴浜涙柊鐗規х殑鎬濊冦?/p> <p>鎬葷殑鏉ヨ錛岃繖涓騫村崐鐨勬椂闂撮噷闈紝寰堝宸ヤ綔宸茬粡涓嶅儚鏃╁厛鍑犲勾鍋氱殑閭d箞鍚冨姏錛屼絾鏄粛鐒跺湪寰堝鐨勭偣涓婃湁鎵鏂╄幏銆?/p> <ul> <li>鏁翠釜緙栬瘧鍣ㄥ悗绔紝鍖呮嫭鍩烘湰鐨勫垎鏋愬拰浼樺寲閮藉凡緇忔湁鎵浜嗚В錛孡LVM涔熺啛鎮変簡璁稿錛?/li> <li>瀵筍hader鐩稿叧鐨凙PI鐨勪簡瑙d篃涓嶅啀鎳墊嚨鎳傛噦錛?/li> <li>瀵逛簬璇█鏈哄埗鐨勭爺絀訛紝鍔犱笂闄堟眽瀛愭椂涓嶆椂鎶涙潵鐨勪竴浜涙濈淮鍙戞暎棰樹護鎴戝璇█鏈変簡鏇存繁鍏ョ殑璁よ瘑錛?/li> <li>璁よ瘑浜哛FX錛屽湪鐭煭鍑犲懆灝卞府鍔╂垜鍦ㄩ槄璇籚8鍜孡LVM鏃剁Н绱殑涓浜涚煡璇嗚漿鍖栨垚浜嗘湁鐢ㄧ殑鐞嗚В銆?/li></ul> <p>鍦?012騫村簳涓篠ALVIA榪涜浜嗗眬閮ㄧ殑閲嶆柊璁捐錛屼篃鏄滃鈥濅笌鈥滀範鈥濈殑鏂頒竴杞滀範鈥濄傛柊鐨凷SA鍙奡hader浼樺寲銆丣IT鍖栫殑綆$嚎銆佸鎬ц兘鏈夎姹傜殑鏂板墠绔佺瀯鍑咲X11浠ヤ笂Shader Model Features銆丣IT鐨勮皟璇曠鍙鳳紝榪欎簺涓瀹氫細緇欐垜甯︽潵璁稿緇炲敖鑴戞眮鎯充笉鏄庣櫧鐨勯棶棰橈紝浣嗗悓鏃舵垜涔熶細瀛︿範鍒般佸疄璺靛埌璁稿鏂扮殑鐭ヨ瘑銆?/p> <p>鎴戠浉淇℃椂闂翠細鏁欑粰鎴戜滑涓鍒囥?/p><img src ="http://www.shnenglu.com/lingjingqiu/aggbug/197224.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lingjingqiu/" target="_blank">絀烘槑嫻佽漿</a> 2013-01-13 05:00 <a href="http://www.shnenglu.com/lingjingqiu/archive/2013/01/13/197224.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>SASL緙栬瘧鍣―iagnostic淇℃伅鐨勭鐞嗐佹牸寮忓寲涓庤緭鍑?/title><link>http://www.shnenglu.com/lingjingqiu/archive/2012/03/08/167444.html</link><dc:creator>絀烘槑嫻佽漿</dc:creator><author>絀烘槑嫻佽漿</author><pubDate>Thu, 08 Mar 2012 13:25:00 GMT</pubDate><guid>http://www.shnenglu.com/lingjingqiu/archive/2012/03/08/167444.html</guid><wfw:comment>http://www.shnenglu.com/lingjingqiu/comments/167444.html</wfw:comment><comments>http://www.shnenglu.com/lingjingqiu/archive/2012/03/08/167444.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/lingjingqiu/comments/commentRss/167444.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lingjingqiu/services/trackbacks/167444.html</trackback:ping><description><![CDATA[<p>1. Diagnostic闇瑕佹彁渚涘摢浜涙暟鎹?/p> <p>鍑洪敊澶勭悊鍜岄敊璇彁紺猴紝鏄紪璇戝櫒寮鍙戣繃紼嬩腑閲嶈鑰岀箒鐞愮殑閮ㄥ垎銆?/p> <p>璇婃柇淇℃伅鐨勬牸寮忓洜緙栬瘧鍣ㄥ拰IDE鑰屼笉鍚屻?/p> <p>SALVIA灝嗛噰鐢╒isual Studio鐨勬牸寮忥紝鍗?<u>鏂囦歡 + 琛屽垪 + 綾誨埆錛堢瓑綰э級 + 緙栧彿 + 鍑洪敊淇℃伅</u>銆備緥濡傦細</p> <p>d:\programming\salvia\sasl\test\cgllvm_test\function_test_basic.cpp(16): error C2061: syntax error : identifier 'te'</p> <p>鍥犳鍦ㄥ嚭閿欏垎鏋愮殑鏃跺欙紝涔熼渶瑕佹彁渚涘涓婄殑涓浜涗俊鎭?/p> <p><br>2. 璇婃柇淇℃伅Diagnostic Item</p> <p>鍦ㄤ互涓婁俊鎭腑錛屾枃浠跺悕鍜岃鍒楀彿鍙互鍦ㄨ瘝娉曞垎鏋愮殑鏃跺欒幏寰楋紝鎴戜滑灝嗗畠浣滀負灞炴ч檮鍔犲湪Token涓?/p> <p>綾誨埆鍜岀紪鍙鳳紝瀵逛簬鍚屼竴涓紪璇戝櫒鑰岃█鏄浉瀵瑰浐瀹氱殑錛屽敖綆℃垜浠彲浠ョ敤ID鏉ヨ〃紺猴紝浣嗘槸瀹冨茍涓嶇洿瑙傦紝緙栬瘧鍣ㄦ鏌ヤ篃杈冨皯銆備笌鍙傛暟鍖歸厤鏃訛紝涔熸瘮杈冨鏄撳嚭閿欍?/p> <p>SASL涓殑璇婃柇淇℃伅灝嗘瘡涓敊璇兘浣跨敤涓涓被鍨嬫潵琛ㄨ揪錛?/p><pre class="code"><span style="background: white; color: #8000ff">class</span><span style="background: white"> </span><span style="background: white; color: black">diagnostic_item </span><span style="background: white"></span><span style="background: white; color: navy">{ </span><span style="background: white"></span><span style="background: white; color: navy">}; </span><span style="background: white"> </span><span style="background: white; color: #8000ff">class</span><span style="background: white"> </span><span style="background: white; color: black">unrecognized_identifier</span><span style="background: white; color: navy">:</span><span style="background: white"> </span><span style="background: white; color: #8000ff">public</span><span style="background: white"> </span><span style="background: white; color: black">diagnostic_item </span><span style="background: white"></span><span style="background: white; color: navy">{ </span><span style="background: white"></span><span style="background: white; color: #8000ff">public</span><span style="background: white; color: navy">: </span><span style="background: white"> </span><span style="background: white; color: black">unrecognized_identifier</span><span style="background: white; color: navy">&</span><span style="background: white"> </span><span style="background: white; color: black">token</span><span style="background: white; color: navy">(</span><span style="background: white"> </span><span style="background: white; color: black">token_t</span><span style="background: white"> </span><span style="background: white; color: black">tok</span><span style="background: white"> </span><span style="background: white; color: navy">); </span><span style="background: white"> </span><span style="background: white; color: #8000ff">private</span><span style="background: white; color: navy">: </span><span style="background: white"> </span><span style="background: white; color: #8000ff">static</span><span style="background: white"> </span><span style="background: white; color: #8000ff">int</span><span style="background: white"> </span><span style="background: white; color: black">level</span><span style="background: white; color: navy">; </span><span style="background: white"> </span><span style="background: white; color: #8000ff">static</span><span style="background: white"> </span><span style="background: white; color: #8000ff">int</span><span style="background: white"> </span><span style="background: white; color: black">id</span><span style="background: white; color: navy">;</span><span style="background: white; color: navy"> </span><span style="background: white"> </span><span style="background: white; color: #8000ff">static</span><span style="background: white"> </span><span style="background: white; color: black">std</span><span style="background: white; color: navy">::</span><span style="background: white; color: black">string</span><span style="background: white"> </span><span style="background: white; color: black">description_template</span><span style="background: white; color: navy">; </span><span style="background: white"> </span><span style="background: white; color: #8000ff">private</span><span style="background: white; color: navy">: </span><span style="background: white"> </span><span style="background: white; color: black">std</span><span style="background: white; color: navy">::</span><span style="background: white; color: black">string</span><span style="background: white"> </span><span style="background: white; color: black">ident</span><span style="background: white; color: navy">; </span><span style="background: white"> </span><span style="background: white; color: black">size_t</span><span style="background: white"> </span><span style="background: white; color: black">row</span><span style="background: white; color: navy">,</span><span style="background: white"> </span><span style="background: white; color: black">col</span><span style="background: white; color: navy">; </span><span style="background: white"> </span><span style="background: white; color: green">// Other properties </span><span style="background: white; color: navy">};</span></pre> <p>榪欐牱鐨勫ソ澶勫湪浜庡彲浠ョ敤Combinator鐨勯鏍兼潵鎾板啓閿欒淇℃伅銆備緥濡傝繖鏍鳳細</p> <p>diagnostic_chat.report<unrecognized_identifier>().token( err_tok ); <p>騫朵笖鐢變簬緙栬瘧鍣ㄧ殑淇濊瘉涔熸瘮杈冧笉瀹規槗鍐欓敊銆? <p>  <p>浣嗘槸榪欑鍐欐硶涔熸湁涓涓緢鍏抽敭鐨勯棶棰橈紝闇瑕佷負姣忎釜閿欒閮藉畾涔変竴涓被錛屽伐浣滈噺寰堝ぇ銆係ASL瀵硅繖涓闂鐨勫鐞嗭紝鑷劧鏄紶緇熺殑澶ф潃鍣細榪愮敤鑴氭湰榪涜鐢熸垚銆? <p>Clang浣跨敤浜嗗畠鍐呯疆鐨勪唬鐮佺敓鎴愬伐鍏穞d鏉ュ畬鎴愮敓鎴愮殑宸ヤ綔銆? <p>  <p>3. 璇婃柇淇℃伅綆$悊鍣―iagnostic Chat <p>Chat鏄瘖鏂俊鎭殑綆$悊宸ュ叿銆傚畠涓昏瑕佸畬鎴愪互涓嬮渶姹傦細娣誨姞鍜屾竻鐞嗚瘖鏂俊鎭紝浠ュ強鍦ㄨ瘖鏂俊鎭殑娣誨姞娓呯悊鏃舵彁渚涘洖璋冩搷浣溿? <p>鍚庤呮槸寰堟湁鐢ㄧ殑錛屽挨鍏舵槸鍦ㄨ皟璇曠紪璇戝櫒鐨勬椂鍊欍備綘寰楀垎娓呮絀剁珶鏄湡姝g殑紼嬪簭閿欒鍛紝榪樻槸緙栬瘧鍣ㄥ嚭浜嗛敊銆? <p>Diagnostic Chat鐨勫師鍨嬪涓嬶細<pre class="code"><span style="background: white; color: #8000ff">class</span><span style="background: white"> </span><span style="background: white; color: black">diagnostic_chat </span><span style="background: white"></span><span style="background: white; color: navy">{ </span><span style="background: white"></span><span style="background: white; color: #8000ff">public</span><span style="background: white; color: navy">: </span><span style="background: white"> </span><span style="background: white; color: #8000ff">template</span><span style="background: white"> </span><span style="background: white; color: navy"><</span><span style="background: white; color: #8000ff">typename</span><span style="background: white"> </span><span style="background: white; color: black">T</span><span style="background: white; color: navy">></span><span style="background: white"> </span><span style="background: white; color: black">T</span><span style="background: white; color: navy">&</span><span style="background: white"> </span><span style="background: white; color: black">report</span><span style="background: white; color: navy">(); </span><span style="background: white"> </span><span style="background: white; color: #8000ff">void</span><span style="background: white"> </span><span style="background: white; color: black">add_report_diagnostic_handler</span><span style="background: white; color: navy">(</span><span style="background: white"> </span><span style="background: white; color: black">DiagnosticHandlerT</span><span style="background: white"> </span><span style="background: white; color: black">handler</span><span style="background: white"> </span><span style="background: white; color: navy">); </span><span style="background: white"></span><span style="background: white; color: navy">};</span></pre> <p>鍚屾椂錛屾垜浠篃灝員reat Warning As Error錛孍rror Count錛孌isable Warning錛孲top compiling when error occurs絳夌姸鎬佸拰鍔熻兘鎵闇瑕佺殑鏀寔娣誨姞鍒癈hat涓? <p>鎵浠ワ紝Chat闄や簡鎻愪緵綆$悊涔嬪錛屼篃瑕佸叿鏈夌浉搴旂殑璇婃柇淇℃伅鐨勭粺璁″姛鑳姐? <p>  <p>4. 榪囨護鍣―iagnostic Filter <p>Filter涓昏閰嶅悎IDE浣跨敤錛屼粠Chat涓彇鍑虹鍚堟潯浠剁殑璇婃柇淇℃伅銆侲rror Count鍜孌isable Warnings絳夊姛鑳戒篃鍙互閫氳繃瀹冩潵瀹屾垚銆? <p>  <p>5. Formatter <p>Formatter鐢ㄤ簬灝咲iagnosticItems涓殑淇℃伅杞崲鎴愪漢鍙鐨勫瓧絎︿覆銆傜洰鍓峉ASL鍙墦綆楁敮鎸乂isual Studio鐨勬牸寮忥紝浣嗘槸鐩鎬俊鏀寔GCC鐨勬牸寮忎互鏇村ソ鐨勫拰Eclipse絳夌涓夋柟IDE闆嗘垚騫朵笉鍥伴毦銆? <p>鍦–#閲岄潰錛屾垜浠彲浠ョ敤鈥淲e need 鈥榹0}鈥?not 鈥榹1}鈥?鈥濊繖鏍風殑鏂瑰紡鏉ュ垎紱籨escription template騫跺歡鏈熺殑浜х敓鏍煎紡鍖栫殑瀛楃涓層備絾鏄湪C++涓紝榪欑鍋氭硶騫朵笉瀹規槗銆侰鐨剆printf寰堥毦鍏鋒湁寤舵湡銆佹笎澧炵殑緇戝畾妯℃澘鐨勭壒瀹氾紝瀵硅嚜瀹氫箟綾誨瀷鐨勫瓧絎︿覆鍖栫殑鏀寔涔熶笉瓚籌紝綾誨瀷瀹夊叏涔熸瘮杈冨樊錛涜宻tream鐨勮瘽錛屼篃浼氶潰涓寸潃灝嗗ソ绔鐨勬牸寮忓寲瀛楃涓插壊瑁傜殑闂銆係ASL浣跨敤浜哹oost.format錛屼粠涓瀹氱▼搴︿笂鎼炲畾浜嗚繖涓や釜闂錛屼粠鑰屽儚C#涓鏍鳳紝浣跨敤鏍煎紡鍖栧瓧絎︿覆鐨勫姛鑳姐?/p><img src ="http://www.shnenglu.com/lingjingqiu/aggbug/167444.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lingjingqiu/" target="_blank">絀烘槑嫻佽漿</a> 2012-03-08 21:25 <a href="http://www.shnenglu.com/lingjingqiu/archive/2012/03/08/167444.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>SALVIA 0.3 鍙戝竷錛歅ixel Shader娣誨姞浜唗ex2D鐨勬敮鎸?/title><link>http://www.shnenglu.com/lingjingqiu/archive/2012/03/06/167256.html</link><dc:creator>絀烘槑嫻佽漿</dc:creator><author>絀烘槑嫻佽漿</author><pubDate>Tue, 06 Mar 2012 09:41:00 GMT</pubDate><guid>http://www.shnenglu.com/lingjingqiu/archive/2012/03/06/167256.html</guid><wfw:comment>http://www.shnenglu.com/lingjingqiu/comments/167256.html</wfw:comment><comments>http://www.shnenglu.com/lingjingqiu/archive/2012/03/06/167256.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/lingjingqiu/comments/commentRss/167256.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lingjingqiu/services/trackbacks/167256.html</trackback:ping><description><![CDATA[<p>SALVIA 0.3 鍑虹倝浜嗭紒</p> <p><font color="#ff0000"><strong>榪欐槸鑷?010騫?鏈堜喚浠ユ潵錛?SALVIA Milestone 1.0涔嬪悗鏈閲嶈鐨勫彂甯冿紒</strong></font></p> <p>0.3寮濮嬶紝SALVIA姝e紡鏀寔浜哖ixel Shader銆?/p> <p>鑷?008騫翠腑寮濮嬬殑Shader璁捐涓庡疄鐜板伐浣滃熀鏈畬鎴愩?/p> <p>鏈潵涓騫村唴錛孲ALVIA鐨勫伐浣滃皢闆嗕腑浠ヤ笅鍑犵偣錛?/p> <ol> <li>鍦⊿hader緙栬瘧鍣ㄧ殑瀹屽杽涓婏紝姣斿鍙嬪杽鐨勮娉曞拰璇箟閿欒鎻愮ず銆?/li> <li>鎻愬崌涓庣綰跨殑闆嗘垚搴︼紝榪涜屽厖鍒嗘彁鍗囨ц兘銆?/li> <li>緙栬瘧鍣ㄥ拰緙栬瘧鍣ㄧ敓鎴愪唬鐮佺殑浼樺寲錛屾彁楂楽hader鐨勭紪璇戦熷害鍜岃繍琛岄熷害銆?/li> <li>鏂扮殑鍥懼艦鐗規э紝濡傚悇鍚戝紓鎬ц繃婊ょ瓑銆?/li></ol> <p>闅忕潃SALVIA鏁翠綋鐨勯愭笎鎴愮啛錛屾垜浠篃甯屾湜鏈夊叾浠栫殑鏈嬪弸鑳芥潵鍙備笌鍜屾敮鎸佽繖涓」鐩紝涓鍚岃繘姝ャ?/p> <p>濡傛灉鎮ㄥ笇鏈涘弬涓庡埌榪欎釜欏圭洰涓紝璇穖ail鑱旂郴鎴戯細wuye9036 __at__ gmail dota com.</p> <p> </p> <p><a href="http://www.shnenglu.com/images/cppblog_com/lingjingqiu/Windows-Live-Writer/SALVIA-0.3-_BB28/tex2D_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="tex2D" border="0" alt="tex2D" src="http://www.shnenglu.com/images/cppblog_com/lingjingqiu/Windows-Live-Writer/SALVIA-0.3-_BB28/tex2D_thumb.png" width="680" height="264"></a></p><img src ="http://www.shnenglu.com/lingjingqiu/aggbug/167256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lingjingqiu/" target="_blank">絀烘槑嫻佽漿</a> 2012-03-06 17:41 <a href="http://www.shnenglu.com/lingjingqiu/archive/2012/03/06/167256.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>寮婧愯蔣浠跺厜鏍呭寲娓叉煋鍣⊿ALVIA 0.2.5鍙戝竷錛氫負Pixel Shader娣誨姞浜嗗垎鏀笌寰幆鐨勬敮鎸?/title><link>http://www.shnenglu.com/lingjingqiu/archive/2012/02/24/166438.html</link><dc:creator>絀烘槑嫻佽漿</dc:creator><author>絀烘槑嫻佽漿</author><pubDate>Fri, 24 Feb 2012 08:56:00 GMT</pubDate><guid>http://www.shnenglu.com/lingjingqiu/archive/2012/02/24/166438.html</guid><wfw:comment>http://www.shnenglu.com/lingjingqiu/comments/166438.html</wfw:comment><comments>http://www.shnenglu.com/lingjingqiu/archive/2012/02/24/166438.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/lingjingqiu/comments/commentRss/166438.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lingjingqiu/services/trackbacks/166438.html</trackback:ping><description><![CDATA[<p>SALVIA 0.2.5 鍙戝竷錛?br></p> <p>欏圭洰涓婚〉錛?<a >http://code.google.com/p/softart/</a><br></p> <p>鏇存柊鍒楄〃濡備笅錛?/p> <p><br><strong>0.2.2 - 0.2.5 (Feb 24, 2012)</strong></p> <ul> <li>鐗堟湰鍚嶇О鍙戠敓鍙樺寲錛屼粠鍘熷厛鐨凪ilestone X fix Y鐨勫懡鍚嶆柟寮忔寮忔洿鏂頒負涓庝富鐗堟湰鐩稿悓鐨勭増鏈彿搴忓垪銆? <li>鍙栨秷浜嗗DirectX鐨勫己鍒朵緷璧栥? <li>娣誨姞浜嗗Visual C++ Express鐨勬敮鎸? <li>Pixel Shader 榪涗竴姝ュ寮猴細</li></ul>          1. 鎻愪緵浜嗗鍒嗘敮璇彞 <strong>if</strong> 鐨勬敮鎸?nbsp;  <br>          2. 鏀寔 <strong>for, while, do-while</strong> 寰幆<br>          3. 娣誨姞浜嗘柊鐨勫唴寤哄嚱鏁幫細<strong>ddx ddy dot cross sqrt</strong><br>          4. 娣誨姞浜嗙汗鐞嗗彇鏍峰嚱鏁?strong>tex2D</strong>鐨勫師鍨? <ul> <li>瀵筊asterizer榪涜浜嗚繘涓姝ョ殑浼樺寲 <li>淇浜嗕互涓嬮棶棰橈細</li></ul>          1. 鍦▁86涓婃墽琛寁ertex shader鏃跺彲鑳戒細Crash鐨勯棶棰?br>          2. 涓嶈兘鍐峛uild閰嶇疆鏂囦歡涓寚瀹欳Make璺緞鐨勯棶棰?br>          3. 涓浜涜〃杈懼紡璋冪敤鏃舵姤鍛婂嚱鏁伴噸杞介敊璇殑闂<img src ="http://www.shnenglu.com/lingjingqiu/aggbug/166438.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lingjingqiu/" target="_blank">絀烘槑嫻佽漿</a> 2012-02-24 16:56 <a href="http://www.shnenglu.com/lingjingqiu/archive/2012/02/24/166438.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>SALVIA姝e紡鏀寔涓绔欏紡緙栬瘧http://www.shnenglu.com/lingjingqiu/archive/2011/12/26/162868.html絀烘槑嫻佽漿絀烘槑嫻佽漿Mon, 26 Dec 2011 13:09:00 GMThttp://www.shnenglu.com/lingjingqiu/archive/2011/12/26/162868.htmlhttp://www.shnenglu.com/lingjingqiu/comments/162868.htmlhttp://www.shnenglu.com/lingjingqiu/archive/2011/12/26/162868.html#Feedback5http://www.shnenglu.com/lingjingqiu/comments/commentRss/162868.htmlhttp://www.shnenglu.com/lingjingqiu/services/trackbacks/162868.htmlSALVIA鍦∕ilestone 1.2 Fix 2涓紝姝e紡鎻愪緵浜嗕竴绔欏紡緙栬瘧鑴氭湰鐨勬敮鎸併?/p>

欏圭洰涓婚〉錛?a title="http://code.google.com/p/softart/" >http://code.google.com/p/softart/

鏂扮殑緙栬瘧姝ラ濡備笅錛?/p>

1. 涓嬭澆鏈鏂扮殑CMake騫跺畨瑁呫?/p>

2. 涓嬭澆Python 2.7騫跺畨瑁呫?/p>

3. 涓嬭澆boost 1.44鎴栨洿鏂扮殑鐗堟湰錛岃В鍘嬪埌鏌愪釜鐩綍涓嬨?/p>

4. Clone鎴栦笅杞絊ALVIA浠g爜鍖咃紝鎵ц鏍圭洰褰曚笅鐨刡uild_all.py鏂囦歡銆傜涓嬈¤繍琛岀殑鏃跺欎細鐢熸垚涓涓猵roject.py錛岀紪杈憄roject.py璁劇疆鐩稿簲灞炴э紝鍖呮嫭boost浠g爜鐩綍錛岀紪璇戝櫒錛宑onfiguration絳夈?/p>

5. 鍐嶆榪愯build_all.py錛岀紪璇戠▼搴忋?/p>

絀烘槑嫻佽漿 2011-12-26 21:09 鍙戣〃璇勮
]]>
LLVM闅忕瑪http://www.shnenglu.com/lingjingqiu/archive/2011/11/22/160736.html絀烘槑嫻佽漿絀烘槑嫻佽漿Tue, 22 Nov 2011 13:04:00 GMThttp://www.shnenglu.com/lingjingqiu/archive/2011/11/22/160736.htmlhttp://www.shnenglu.com/lingjingqiu/comments/160736.htmlhttp://www.shnenglu.com/lingjingqiu/archive/2011/11/22/160736.html#Feedback0http://www.shnenglu.com/lingjingqiu/comments/commentRss/160736.htmlhttp://www.shnenglu.com/lingjingqiu/services/trackbacks/160736.html 1. LLVM鍦▁86鍜寈64涓嬮兘鍜孧icrosft C++ ABI鐨勫惢鍚堢▼搴︿笉澶熴傜洰鍓嶅凡鐭ュ湪浠ヤ笅鎯呭喌涓嬩細鍑洪敊錛?br />
  • 鍙傛暟涓虹粨鏋勪綋鐨?/li>
  • 榪斿洖鍊間負緇撴瀯浣?
浠ヤ笅鎯呭喌鎴戞病鏈夊畬鏁存祴璇曡繃錛?
  • 榪斿洖鍊間負鍗曚釜嫻偣
  • 榪斿洖鍊間負鍚戦噺錛坃m128 / <4 x float>錛?
  • 鍙傛暟涓哄悜閲忥紙_m128 / <4xfloat>錛?
鎵浠ュ緩璁ぇ瀹剁粺涓灝嗘槸緇撴瀯浣撶殑榪斿洖鍊煎拰鍙傛暟浠ュ紩鐢?鎸囬拡鐨勫艦寮忎紶閫掋?br /> 瀵逛簬澶у皬涓?涓垨鑰?涓瓧鑺傜殑緇撴瀯浣撳鏋滃笇鏈涙寜鍊間紶閫掞紝閭d箞闇瑕佸湪LLVM鍑芥暟鐨勭鍚嶄笂浣跨敤i32/i64浣滀負鍙傛暟綾誨瀷錛屽茍浣跨敤bit cast鍦ㄥ嚱鏁頒綋鍐呭己鍒惰漿鎹㈡垚緇撴瀯浣撱?br />
2. LLVM鎻愪緵浜嗗緢澶氱殑Intrinsics錛屼緥濡係SE鎸囦護闆嗐傚畠鍦∕odule涓婃彁渚涗簡涓涓猤etOrCreateTargetIntrinsic錛屼絾瀹為檯涓婅繖涓嚱鏁版槸鍧戠埞鐨勩傛湁涓や釜鏂規硶鍙互姝g‘鐨勫垱寤哄茍鑾峰彇鎸囦護闆嗭細
  • 浣跨敤Module::getOrInsertFunction( intrinsic_name, intrinsic_function_type )銆傚畠浼氳嚜鍔ㄨ瘑鍒玦ntrinsic鐨勫悕縐板茍鍒涘緩function鎴栬呮槸intrinsic銆傛寚浠ら渶瑕佷嬌鐢ㄥ叏鍚嶃備緥濡?llvm.x86.sse.sqrt.ps.
  • 鎴栬呬嬌鐢↖lvm::Intrinsic::getDeclaration( id ) 鏉ュ垱寤恒傝繖涓猧d鍙互鍦╥ntrinsics.gen涓壘鍒般?/li>
鍥犱負LLVM鐢熸垚鐨処ntrinsic鏄叏騫沖彴鐨勶紝鎵浠ュ彲浠ュ湪x86涓婃寚瀹欰RM姹囩紪鐨勭敓鎴愶紝鍙嶄箣浜︾劧銆?br />
3. 榛樿鎯呭喌涓嬶紝LLVM鐨凧IT鏄笉浼氬惎鐢↖nliningPass鐨勶紝Optimization Level鎸囧畾涓篈ggressive涔熶笉浼氥傝繖鎰忓懗鐫inlinehint鍜宎lwaysinline閮芥槸澶辨晥鐨勩傚鏋滈渶瑕乮nlining寰楄嚜宸變慨鏀笿IT鐨勬簮浠g爜銆?br />
4. UndefValue鏄釜濂戒笢瑗褲傝繖涓父閲忓彲浠ヤ嬌鐢熸垚鐨勬眹緙栧皯涓鏉″垵濮嬪寲鎸囦護銆傛瘮鏂硅鐢?鍒濆鍖栵紝鍙兘瀵瑰簲鐨勬眹緙栧氨鏄?xor reg, reg銆傚鏋滅敤浜哢ndef錛岄偅榪欐潯鎸囦護灝辨病浜嗐?br />
5.
TypeBuilder寰堝ソ鐢紝鍙槸涓嶈兘鐢熸垚struct絳夊鏉傜殑綾誨瀷銆備笉榪囦綘鍙互瀵瑰畠鍋氫竴浜涗慨鏀逛互璁╁畠鏀寔struct鍜寁ector銆傝繖涓椂鍊橞oost.MPL灝辮兘媧句笂鐢ㄥ満浜嗐備笉榪囪褰撳績MPL甯︽潵婕暱鐨勭紪璇戞椂闂淬?

絀烘槑嫻佽漿 2011-11-22 21:04 鍙戣〃璇勮
]]>
LLVM鐨勮皟鐢ㄥ崗璁笌鍐呭瓨瀵歸綈http://www.shnenglu.com/lingjingqiu/archive/2011/08/17/153655.html絀烘槑嫻佽漿絀烘槑嫻佽漿Wed, 17 Aug 2011 05:58:00 GMThttp://www.shnenglu.com/lingjingqiu/archive/2011/08/17/153655.htmlhttp://www.shnenglu.com/lingjingqiu/comments/153655.htmlhttp://www.shnenglu.com/lingjingqiu/archive/2011/08/17/153655.html#Feedback3http://www.shnenglu.com/lingjingqiu/comments/commentRss/153655.htmlhttp://www.shnenglu.com/lingjingqiu/services/trackbacks/153655.html鍦ㄨ璁′竴闂ㄨ璦涓庡叾浠栬璦浜や簰鐨凙PI涓嶢BI錛圓pplication Binary Interface錛屼簩榪涘埗鎺ュ彛錛夋椂錛岃皟鐢ㄥ崗璁拰鍐呭瓨瀵歸綈鏄袱涓棤浠庡洖閬跨殑闂銆?/p>

鏈枃灝嗚璁哄浣曞湪LLVM涓婄敓鎴愭紜殑鍐呭瓨瀵歸綈鍜岃皟鐢ㄥ崗璁殑浠g爜銆?/p>

鍦ㄨ繖閲屼負浜嗘柟渚垮拰鏍囧噯璧瘋錛屽亣瀹氬簲鐢↙LVM鐨勮璦鐨凟xtending鍜孍mbedding鐨勫璞¢兘鏄疌銆?/p>

璋冪敤鍗忚

鍏堟潵璁ㄨ璋冪敤鍗忚銆傝皟鐢ㄥ崗璁敤浜庝繚璇佽皟鐢ㄦ柟鍜岃璋冪敤鏂瑰湪浜岃繘鍒?姹囩紪涓綰т笂鏄浉瀹圭殑銆傚悎閫傜殑璋冪敤鍗忚鍙互甯姪鏋勯犲嚭浠ヤ笅浠g爜錛?/p>
// Callee Signature of LLVM code
void __cdecl foo( int a, float b, float4 c);

// C caller
typedef void (__cdecl* fn_ptr)(int, float, float4)
fn_ptr p = static_cast<fn_ptr>( get_jit_function("foo") );
p(1, 1.0, vec);

涓鑸潵璇磋皟鐢ㄥ崗璁寘鎷弬鏁頒紶閫掑拰榪斿洖鍊間紶閫掑拰鍫嗘爤騫寵 涓変釜閮ㄥ垎銆傚湪x86騫沖彴涓婄殑C/C++緙栬瘧鍣ㄤ腑甯歌鐨勮皟鐢ㄥ崗璁湁cdecl, fastcall鍜宻tdcall銆傚叿浣撶殑鍗忚鍐呭璇峰弬瑙丮SDN銆?/p>

鍦–++涓繕鏈変竴綾葷壒孌婄殑璋冪敤鍗忚thiscall錛岀敤浜庤皟鐢ㄥ璞$殑鎴愬憳鍑芥暟銆備絾鏄繖涓綾昏皟鐢ㄥ崗璁笉鍚岀殑騫沖彴錛屼笉鍚岀殑緙栬瘧鍣ㄥ疄鐜扮殕鏈変笉鍚岋紝鏃㈡棤涔﹂潰鏍囧噯錛屼篃鏃犱簨瀹炴爣鍑嗭紝鍐嶅姞涓妚irtual call絳夊鏉傜殑鎯呭喌瀛樺湪錛屽茍涓嶉傚悎鐢ㄤ簬鍋氳法璇█鐨勮皟鐢ㄣ?/p>

瀵逛簬x64騫沖彴鑰岃█錛屽湪windows涓嬪拰linux涓嬪垎鍒湁涓ょ璋冪敤鍗忚銆?/p>

鍏堟潵鐪媥86銆傜敱浜巟86鍦╟decl鍜宖astcall涓婃槸鏈夌潃璺ㄥ鉤鍙扮殑鏍囧噯鐨勶紝鍥犳LLVM瀵瑰畠鐨勬敮鎸佹槸姣旇緝瀹屾暣鐨勩傜▼搴忓彧瑕佸湪鍒涘緩Function鐨勬椂鍊欐寚瀹欳all Convention鍗沖彲銆?/p>

浣嗘槸瀵逛簬x64錛孡LVM鐨勬敮鎸佷究涓嶆槸閭d箞瀹屽杽銆備互windows涓轟緥錛寃indows鐨剎64璋冪敤鍗忚瑕佹眰浠cx錛宺dx錛宺8錛宺9瀵勫瓨鍣ㄤ紶閫掑墠鍥涗釜涓嶅ぇ浜?4bit鐨勫弬鏁幫紝鍏朵綑鍙傛暟鏀懼湪鏍堜笂銆傚鏋滃弬鏁板ぇ浜?4bit錛屽垯瑕佹眰浼犻掑畠鐨勬寚閽堛傛誕鐐逛嬌鐢▁mm0-3鏉ヤ紶閫掋備絾鏄浜嶭LVM鑰岃█錛屼竴鏃﹀弬鏁板ぇ浜?4bit錛屽畠渚夸細灝嗘暣涓璞¤屼笉鏄寚閽堝帇鍒版爤涓婁紶閫掋傚洜姝ゅ湪閬囧埌x64鏃訛紝闇瑕佸皬蹇冨鐞咥PI閮ㄥ垎鐨勮皟鐢ㄥ崗璁?/p>

鍦ㄨ繖閲岋紝鎴戜滑闇瑕佸皢鎵鏈夎秴榪?4bit鐨勭粨鏋勪綋澶勭悊鎴愭寚閽堬紙鎴栬呮嫹璐濆悗澶勭悊鎴愭寚閽堬級浼犻掋?/p>

鍚屾椂錛孡LVM鎻愪緵浜唕eadonly鍜宐yval涓や釜鍙傛暟灞炴э紙Attribute錛夋潵紜繚鍙傛暟鐨勫艱涔夈傚墠鑰呮剰鍛崇潃浼犲叆鐨勬寚閽堟墍鎸囧悜鐨勫兼槸涓嶈淇敼鐨勶紝錛堢被浼間簬T const*錛夛紝鑰屽悗鑰呬細瀵逛紶鍏ョ殑鎸囬拡鍋氫竴浠藉唴瀛樻嫹璐濓紝紜繚鍐欏間笉琚紶閫掑嚭鍑芥暟錛堢被浼間簬鍊兼嫹璐濓級銆傝繖鏍鳳紝LLVM鐢熸垚鐨勫嚱鏁頒究鍙互MSVC鐢熸垚鐨剎64浠g爜姝g‘璋冪敤浜嗐?/p>

鍐呭瓨瀵歸綈

涓庣Щ鍔ㄥ鉤鍙扮殑浣撶郴緇撴瀯鐩告瘮錛寈86瀵瑰唴瀛樺榻愮殑鏉′歡綆楁槸鐩稿綋瀹芥澗鐨勪簡銆傚ぇ閮ㄥ垎鐨勬寚浠ゅ鍐呭瓨瀵歸綈鍩烘湰涓婃槸娌℃湁鐗規畩瑕佹眰鐨勩傚彧鏈変竴浜汼IMD鐨勬寚浠や細瀵瑰唴瀛樺榻愭湁鎵闄愬畾錛屼緥濡俶ovaps銆?/p>

涓轟簡鏂逛究鍚庣鐢熸垚SIMD浠g爜錛孡LVM鎻愪緵浜唙ector綾誨瀷錛屼緥濡倂ector<float, 1>銆傚湪浠g爜鐢熸垚鐨勬椂鍊欙紝vector浼氱紪璇戞垚鏈鏈夊彲鑳界殑SIMD綾誨瀷銆傚洜姝ゅ湪x86騫沖彴涓婏紝vector<float, 1-4>閮借澶勭悊鎴愮被浼間簬__m128鐨勭被鍨嬶紝鏇撮暱鐨剉ector鍒欒鎷嗗垎鎴愬涓猒_m128綾誨瀷銆?/p>

榪欏疄闄呬笂鎰忓懗鐫錛屾墍鏈夌殑vector閮藉簲璇ラ伒寰?6Bytes瀵歸綈鐨勫師鍒欍?/p>

鑰冭檻鍒版垜浠殑闇姹傦紝綾諱技浜巗truct{ float[3]; }榪欐牱鐨勭粨鏋勶紝濡傛灉鑳借〃紺轟負vector<float, 3>鏄劇劧閫傚悎涓浜涙暟瀛﹁繍綆楋紝渚嬪shuffle錛岄愬厓绱犵殑add錛宻ub錛宮ul錛屽悓鏃禠LVM鎸囦護鐨勯夋嫨涔熸洿鍔犵伒媧匯備絾鏄樉鐒訛紝榪欎釜緇撴瀯浣撴湁涓や釜鏉′歡鏄笉婊¤凍鐨勶細16瀛楄妭瀵歸綈鍜?6瀛楄妭鐨勫ぇ灝忥紙movups鍜宮ovaps閮芥槸涓嬈″彇16瀛楄妭錛夈傝繖浼氶犳垚杈圭晫涓嬭鍐欑殑鍐呭瓨瓚婄晫銆傚洜姝ら潪甯稿彲鎯滐紝榪欎簺鏁版嵁蹇呴』琛ㄧず涓簊truct{ float ,float, float }銆傚湪璇誨彇鐨勬椂鍊欙紝涔熶細鐢熸垚姝g‘鐨勬寚浠わ細movss銆?/p>

閭d箞錛屽浜庝竴鑸殑闈炲榻愮殑vec4搴旂敤vector<float,4>琛屼笉琛屽憿錛?/p>

絳旀鏄紝寰堝洶闅俱傚浜嶭LVM鑰岃█錛屼粬浠湪璁捐鐨勬椂鍊欏氨娌℃湁榪囧鐨勮冭檻vector鍦ㄩ潪瀵歸綈鏃跺欑殑搴旂敤銆傚敖綆oad鍜宻tore閮借兘澶熸寚瀹歛lignment浠ョ敓鎴愰潪瀵歸綈鐨勫唴瀛樻搷浣滐紙渚嬪movups錛夊茍涓旂‘瀹炰細璧鋒晥錛屼絾鏄敱浜庝唬鐮佷紭鍖栥佷復鏃跺瓨鍙栫瓑鐗規х殑瀛樺湪錛屽鑷翠竴浜涢潪load鍜宻tore鐨勫唴瀛樻搷浣滀粛鐒舵槸瑕佹眰瀵歸綈鐨勶紙渚嬪鐢熸垚浜哸ddaps xmm, [addr]錛夈傛鏃朵粛鐒舵湁鍙兘涓洪潪瀵歸綈鐨勬暟鎹敓鎴愪簡鍐呭瓨瀵歸綈鐨勬寚浠ゃ?/p>

鍥犳緇煎悎鏉冭 錛孲ASL鍦ˋPI鐣岄潰涓婁嬌鐢ㄤ簡struct{float x,y,z,w;} 榪欐牱鐨凙BI鏉ヨ〃紺烘暟鎹紝鍦ㄤ唬鐮佺敓鎴愭椂錛屼細棣栧厛灝唖truct鐨勬暟鎹漿鎹㈡垚vector錛岀劧鍚庡啀鎵ц鍏跺畠鐨勬搷浣滐紝鍏奸【ABI涓嶴IMD錛涘悓鏃跺浜嶪ntrinsic錛岀敱浜庡茍涓嶆毚闇茬粰Host錛屾墍浠ュ畠浠粛鐒跺敖鍙兘浣跨敤Vector錛屼究浜嶭LVM榪涜浼樺寲銆?/p>

絀烘槑嫻佽漿 2011-08-17 13:58 鍙戣〃璇勮
]]>
SALVIA Milestone 1.1 Fix 1: 鏂癝ponza Demohttp://www.shnenglu.com/lingjingqiu/archive/2011/07/17/151230.html絀烘槑嫻佽漿絀烘槑嫻佽漿Sun, 17 Jul 2011 09:46:00 GMThttp://www.shnenglu.com/lingjingqiu/archive/2011/07/17/151230.htmlhttp://www.shnenglu.com/lingjingqiu/comments/151230.htmlhttp://www.shnenglu.com/lingjingqiu/archive/2011/07/17/151230.html#Feedback0http://www.shnenglu.com/lingjingqiu/comments/commentRss/151230.htmlhttp://www.shnenglu.com/lingjingqiu/services/trackbacks/151230.html欏圭洰涓婚〉錛?/font>

婧愮爜涓嬭澆鍦板潃錛?/font>

  • Zip鏍煎紡錛?a title="https://bitbucket.org/wuye9036/salvia/get/tip.tar.bz2" >https://bitbucket.org/wuye9036/salvia/get/tip.tar.bz2
  • Mercurial鍦板潃1錛?a href="https://wuye9036@bitbucket.org/wuye9036/salvia">https://bitbucket.org/wuye9036/salvia
  • Mercurial鍦板潃2錛?a >https://code.google.com/p/softart/
鐗堟湰錛?/font>
  • Milestone 1.1 Fix 1
鏇存柊璁板綍錛?/font>
  • 娣誨姞浜嗕簡鏂扮殑Demo錛歋ponza
  • Wavefront Obj娣誨姞浜?2浣嶇儲寮曠殑鏀寔銆?
  • 淇浜?Wavefront Obj 閿欒鐨勯《鐐瑰叡浜殑闂銆?
  • 淇浜?Mip-map 璁$畻閿欒鐨勯棶棰樸?
  • 淇浜嗗澶氳竟褰㈤敊璇墧闄ょ殑闂銆?/li>
Demo涓嬭澆錛?/font>

Demo鎴浘錛?/strong>

image

image

image



]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              国产精品一区二区三区成人| 免费人成精品欧美精品| 国产精品视频内| 午夜精品理论片| 亚洲一区二区视频在线| 国产视频观看一区| 久久综合久久综合久久| 欧美3dxxxxhd| 亚洲影院色无极综合| 欧美在线三区| 亚洲美女黄色片| 亚洲专区在线| 亚洲国产一区二区三区高清| 99国产精品视频免费观看| 国产精品一区免费视频| 美女视频一区免费观看| 欧美精品网站| 久久久噜噜噜久久中文字免| 欧美1区视频| 欧美一区永久视频免费观看| 久久综合网色—综合色88| 亚洲天堂av在线免费观看| 欧美在线精品一区| 一区二区三区视频在线 | 久久9热精品视频| 久久人人爽爽爽人久久久| 一区二区三区精密机械公司| 性欧美xxxx大乳国产app| 亚洲毛片网站| 久久大香伊蕉在人线观看热2| 亚洲精品午夜| 久久精品免费观看| 亚洲一区二区在线| 欧美不卡高清| 快射av在线播放一区| 欧美小视频在线| 亚洲承认在线| 国产亚洲精品久久久久动| 日韩午夜高潮| 91久久亚洲| 久久久久高清| 亚洲欧洲av一区二区| 亚洲伦伦在线| 久久久久se| 欧美一区二区三区免费视| 欧美黄色一级视频| 麻豆精品传媒视频| 国内外成人免费激情在线视频| 日韩网站在线看片你懂的| 亚洲精品女av网站| 久久躁日日躁aaaaxxxx| 久久九九99| 国产亚洲精品自拍| 午夜免费日韩视频| 欧美亚洲视频| 国产精品一区二区女厕厕| 亚洲一区二区三区四区五区黄| 日韩视频二区| 欧美精品色网| 亚洲免费电影在线观看| 日韩午夜激情电影| 欧美日本中文| 日韩亚洲不卡在线| 在线视频日韩| 欧美午夜女人视频在线| 一本色道久久88亚洲综合88| 99精品视频网| 欧美视频在线观看视频极品| 99精品热6080yy久久| 国产精品99久久久久久久久久久久| 欧美精品二区| 日韩视频一区二区三区| 亚洲午夜精品福利| 国产精品欧美日韩一区| 欧美一级黄色录像| 老司机午夜精品| 亚洲片在线资源| 欧美日韩国产一区精品一区| 99精品视频免费| 久久成人一区| 亚洲第一天堂无码专区| 欧美精品一区二区三区四区| 一本久道久久久| 欧美中文在线观看| 在线欧美小视频| 欧美精品在线免费| 亚洲欧美精品在线| 久久综合网色—综合色88| 亚洲日韩中文字幕在线播放| 欧美色图一区二区三区| 欧美一区中文字幕| 亚洲精品视频一区| 欧美在线91| 亚洲人成在线观看| 国产精品一二| 欧美aa在线视频| 亚洲综合另类| 最新国产精品拍自在线播放| 欧美亚洲一级| 亚洲精品美女免费| 国产在线精品一区二区夜色| 欧美成人午夜| 欧美在线免费一级片| 亚洲精品视频在线播放| 久久久久久一区二区| 一区二区三区视频在线播放| 一区二区在线视频播放| 国产精品久久激情| 欧美91大片| 久久国产精品毛片| 在线一区视频| 亚洲国产日韩综合一区| 午夜精品美女久久久久av福利| 国产精品久久久久久久久免费| 久久久噜久噜久久综合| 亚洲香蕉网站| 亚洲美女毛片| 亚洲福利视频专区| 久久亚洲不卡| 久久精品国产v日韩v亚洲 | 国外成人在线| 国产欧美日韩在线视频| 欧美日韩综合一区| 欧美激情欧美激情在线五月| 久久久久久国产精品一区| 亚洲欧美日韩精品一区二区| 一本色道久久88综合亚洲精品ⅰ| 欧美国产一区二区| 免费看成人av| 久久综合九色| 久久久久久穴| 久久久久国产精品一区三寸 | 狠狠爱综合网| 国产一区二区三区网站| 国产精品私房写真福利视频| 欧美日韩在线免费观看| 欧美美女视频| 欧美日韩免费观看一区| 欧美日韩精品二区| 欧美日韩麻豆| 国产精品theporn| 国产精品嫩草99a| 国产精品视频区| 国产麻豆成人精品| 国产三级欧美三级日产三级99| 国产精品系列在线| 国产亚洲aⅴaaaaaa毛片| 国产字幕视频一区二区| 樱花yy私人影院亚洲| 亚洲大片免费看| 91久久线看在观草草青青| 日韩西西人体444www| 在线综合欧美| 欧美一级在线视频| 久久久久久穴| 亚洲国产精品成人综合| 亚洲日本在线观看| 亚洲亚洲精品三区日韩精品在线视频| 亚洲一级片在线观看| 午夜国产不卡在线观看视频| 久久国产精品久久久久久久久久| 久久久精品网| 欧美日本国产一区| 国产精品无码专区在线观看| 狠狠操狠狠色综合网| 亚洲理伦在线| 欧美在线网址| 亚洲福利专区| 亚洲女ⅴideoshd黑人| 久久免费视频网| 欧美日韩精品伦理作品在线免费观看| 国产精品国产一区二区| 在线观看日韩专区| 亚洲私拍自拍| 麻豆成人av| 一区二区精品在线| 久久久久久91香蕉国产| 欧美日韩美女在线观看| 激情久久久久久| 亚洲一区二区久久| 欧美va亚洲va国产综合| 亚洲视频成人| 久久精品卡一| 国产精品久久久久久福利一牛影视| 激情av一区二区| 亚洲欧美日韩综合一区| 亚洲成色最大综合在线| 欧美一乱一性一交一视频| 欧美日韩大片| 1000部精品久久久久久久久 | 激情综合中文娱乐网| 亚洲国产精品成人综合色在线婷婷| 国产精品三级视频| 亚洲精品综合在线| 久久精品人人做人人爽| 中日韩视频在线观看| 欧美精品久久天天躁| 伊人婷婷欧美激情| 久久免费偷拍视频| 亚洲欧美日韩视频二区|