
Intelãã©ãããã©ãŒã ã§ã®ãªãœãŒã¹ãã€ã³ãã£ã³ã°ã詳ããèŠãŠã¿ãŸãããã ããã¯ãIntel Coreãã¡ããªãŒïŒSkylakeïŒã®ç¬¬6äžä»£ããã»ããµãŒã®ãªãªãŒã¹ãšã7æ29æ¥ã«è¡ãããWindows 10ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ãªãªãŒã¹ã«é¢é£ããŠç¹ã«åœãŠã¯ãŸããŸãã
åã®èšäºã
Microsoft DirectX * 12ã§ã®
ãªãœãŒã¹ãã€ã³ãã£ã³ã°ã®
æŠèŠ ãã§ã¯ãDirectX
12ã§ãªãœãŒã¹ããã€ã³ãããæ°ããæ¹æ³ã«ã€ããŠèª¬æããŸããããªãœãŒã¹ã®çš®é¡ãšæŽæ°é »åºŠã
ãã®èšäºã§ã¯ãç¹å®ã®Intel GPUã§ã¢ããªã±ãŒã·ã§ã³ãå¹ççã«å®è¡ããããã®ããŸããŸãªãªãœãŒã¹ãã€ã³ãã£ã³ã°ã¡ã«ããºã ã®éžæã«ã€ããŠèª¬æããŸãã
ããŒã«
DirectX 12ã«åºã¥ããŠã²ãŒã ãéçºããã«ã¯ã次ã®ãã®ãå¿
èŠã§ãã
- Windows 10
- Visual Studio * 2013以éã
- Visual Studioã«å«ãŸããŠããDirectX 12 SDKã
- DirectX 12ããµããŒãããGPUãšãã©ã€ããŒã
埩ç¿
èšè¿°åã¯ãGPUåãã®ãäžéæãªã圢åŒã§ãGPUã®ãªããžã§ã¯ããèšè¿°ããããŒã¿ãããã¯ã§ãã DirectX 12ã¯ã以åã¯DirectX 11ã§ããªãœãŒã¹è¡šçŸããšåŒã°ããŠãã次ã®èšè¿°åããµããŒãããŠããŸãã
- å®æ°ãããã¡ãŒè¡šçŸïŒCBVïŒã
- ã·ã§ãŒããŒãªãœãŒã¹è¡šçŸïŒSRVïŒã
- é åºãªãã¢ã¯ã»ã¹è¡šçŸïŒUAVïŒã
- ãµã³ãã©ãŒè¡šçŸïŒSVïŒã
- ã¬ã³ããªã³ã°ã¿ãŒã²ããè¡šçŸïŒRTVïŒã
- 深床ãã³ãã¬ãŒããã¬ãŒã³ããŒã·ã§ã³ïŒDSVïŒã
- ãã®ä»ã
ãããã®èšè¿°åãŸãã¯ãªãœãŒã¹ã®è¡šçŸã¯ãGPUã®ããã³ããšã³ãã«ãã£ãŠæ¶è²»ãããæ§é ïŒãããã¯ïŒãšèŠãªãããšãã§ããŸãã èšè¿°åã®ãµã€ãºã¯çŽ32ã64ãã€ãã§ãã èšè¿°åã«ã¯ããã¯ã¹ãã£ã®ãµã€ãºããã©ãŒããããã¬ã€ã¢ãŠãã«é¢ããæ
å ±ãå«ãŸããŠããŸãã
èšè¿°åã¯èšè¿°åã®ããŒãã«æ ŒçŽãããŸããããã¯ã¡ã¢ãªå
ã®æ§é ã®ã·ãŒã±ã³ã¹ã§ãã
èšè¿°åããŒãã«ã¯ããªãã»ããå€ã䜿çšããŠããŒãå
ã®èšè¿°åãæããŸãã ãã®è¡šã¯ãé£ç¶ããç¯å²ã®èšè¿°åãšã·ã§ãŒããŒã»ã«ãæ¯èŒããã«ãŒãã·ã°ããã£ã䜿çšããŠã¢ã¯ã»ã¹ã§ããããã«ããŸãã ã«ãŒã眲åã«ã¯ãã«ãŒãå®æ°ãã«ãŒãèšè¿°åãããã³éçãµã³ãã©ãŒãå«ããããšãã§ããŸãã
å³1.èšè¿°åãäžé£ã®èšè¿°åãèšè¿°åããŒãã«ãã«ãŒã眲åå³1ã¯ãèšè¿°åãäžé£ã®èšè¿°åãèšè¿°åããŒãã«ãããã³ã«ãŒã眲åã®éã®é¢ä¿ã瀺ããŠããŸãã
å³1ã§èª¬æããã³ãŒãã¯æ¬¡ã®ããã«ãªããŸãã
äžèšã®ãœãŒã¹ã³ãŒãã¯ã2ã€ã®èšè¿°åããŒãã«ã1ã€ã®ã«ãŒãèšè¿°åãš1ã€ã®ã«ãŒãå®æ°ãæã€ããã«ã«ãŒã眲åãèšå®ããŸãã ãŸãããã®ã³ãŒãã¯ãã«ãŒãå®æ°ã«ã¯éæ¥çãªã¢ã¯ã»ã¹æš©ããªãããšã瀺ããŠããã
SetGraphicsRoot32bitConstantsãåŒã³åºãããšã§çŽæ¥æäŸãããŸãã ãããã¯ã·ã§ãŒããŒã¬ãžã¹ã¿ã«çŽæ¥é¢é£ããŠããŸãã å®æ°ãããã¡èªäœããå®æ°ãããã¡èšè¿°åãããã€ã³ãã£ã³ã°ããããŸããã ã«ãŒãèšè¿°åã¯ãã¡ã¢ãªãžã®ãã€ã³ã¿ãä¿åããããïŒèšè¿°å->ã¡ã¢ãªïŒã1ã¬ãã«ã®éæ¥ã¢ã¯ã»ã¹ã®ã¿ãæã¡ãèšè¿°åããŒãã«ã«ã¯2ã¬ãã«ã®éæ¥ã¢ã¯ã»ã¹ïŒèšè¿°åããŒãã«->èšè¿°å->ã¡ã¢ãªïŒããããŸãã
èšè¿°åã¯ãSVãCBV / SRV / UAVãªã©ãã¿ã€ãã«å¿ããŠç°ãªãããŒãã«ãããŸãã ããã¯ãããŒããŠã§ã¢ãã©ãããã©ãŒã ãç°ãªããšã¿ã€ãã®ç°ãªãèšè¿°åã®ãµã€ãºãéåžžã«å€§ããç°ãªãããã§ãã ããŒãã®å€æŽã¯éåžžã«ãªãœãŒã¹ãæ¶è²»ããæäœã«ãªãå¯èœæ§ããããããèšè¿°åããŒãã®ã¿ã€ãããšã«1ã€ã®ããŒãã®ã¿ãå²ãåœãŠãå¿
èŠããããŸãã
äžè¬ã«ãDirectX 12ã¯ã100äžãè¶
ããèšè¿°åã®æ©æå²ãåœãŠããµããŒãããŸããããã¯ãã²ãŒã ã¬ãã«å
šäœã«ååãªéã§ãã DirectXã®ä»¥åã®ããŒãžã§ã³ã§ã¯ããã©ã€ããŒãç¬èªã®ãæ¡ä»¶ãã§å®è¡ãããŠããéã«ãªãœãŒã¹å²ãåœãŠãçºçããDirectX 12ã§ã¯ããªãœãŒã¹å²ãåœãŠããŸã£ããåé¿ã§ããŸããã ããã¯ãèšè¿°åã®å²ãåœãŠãããã©ãŒãã³ã¹ã«åœ±é¿ãäžããªããªã£ãããšãæå³ããŸãã
ã泚æ 第3äžä»£ïŒIvy BridgeïŒããã³ç¬¬4äžä»£ïŒHaswellïŒIntel®Coreâ¢ããã»ããµãŒã§ãDirectX 11ããã³Windowsãã£ã¹ãã¬ã€ãã©ã€ããŒã¢ãã«ïŒWDDMïŒã¢ãŒããã¯ãã£ããŒãžã§ã³1.xã䜿çšããŠããªãœãŒã¹ã¯ãªãœãŒã¹åç
§ã«åºã¥ããŠã¡ã¢ãªã«åçã«ãããã³ã°ãããŸããäžèŽããããŒãžããŒãã«ã®æäœãå«ãã³ãã³ããããã¡å
ã ãã®ãããããŒã¿ã®ã³ããŒãé¿ããããšãã§ããŸããã ãããã®ã¢ãŒããã¯ãã£ã¯GPUã«2 GBã®ã¡ã¢ãªããå²ãåœãŠãªãã£ããããåçãããã³ã°ãéèŠã§ããïŒIntel®Xeon®ããã»ããµãŒE3-1200 v4ïŒBroadwellïŒãã¡ããªãŒã§ã¯ããã«å€ããå²ãåœãŠãããŸããïŒã
DirectX 12ããã³WDDMããŒãžã§ã³2.xã§ã¯ãäœææã«ãªãœãŒã¹ã«éçä»®æ³ã¢ãã¬ã¹ãå²ãåœãŠãå¿
èŠãããããã®ä»®æ³ã¢ãã¬ã¹ã¯äœæåŸã«å€æŽã§ããªããããå¿
èŠã«å¿ããŠãªãœãŒã¹ãGPUã®ä»®æ³ã¢ãã¬ã¹ç©ºéã«åå²ãåœãŠããããšã¯ã§ããªããªããŸããã ãªãœãŒã¹ãGPUã¡ã¢ãªããæåºãããå Žåã§ãããªãœãŒã¹ãåã³åžžé§ããããã«ãªããšãåŸã§ãã®ä»®æ³ã¢ãã¬ã¹ãä¿æãããŸãã
ãããã£ãŠãIvy Bridge / Haswellãã¡ããªã®GPUã«å²ãåœãŠããã2 GBã®åèšã¡ã¢ãªå®¹éãå¶éèŠå ã«ãªãå¯èœæ§ããããŸãã
åã®èšäºã§è¿°ã¹ãããã«ãå®å
šã«ãã©ã³ã¹ã®ãšããã¢ããªã±ãŒã·ã§ã³ã¯ããã¹ãŠã®ã¿ã€ãã®ãã€ã³ãã£ã³ã°ã®çµã¿åããã䜿çšã§ããŸãïŒã«ãŒãå®æ°ãã«ãŒãèšè¿°åãã¬ã³ããªã³ã°åŒã³åºãã®çºè¡æã«ãªã³ã¶ãã©ã€ã§åä¿¡ãããèšè¿°åã®èšè¿°åããŒãã«ãããã³å€§ããªèšè¿°åããŒãã«ã®åçãªã€ã³ããã¯ã¹ä»ãã
èšè¿°åããŒãã«ã䜿çšããå Žåãšæ¯èŒããŠãã«ãŒãå®æ°ãšã«ãŒãèšè¿°åã®å€§ããªã»ããã䜿çšããå ŽåãããŸããŸãªã¢ãŒããã¯ãã£ã®ããã©ãŒãã³ã¹ã¯ç°ãªãå ŽåããããŸãã ãã®ãããã¿ãŒã²ããããŒããŠã§ã¢ãã©ãããã©ãŒã ã«å¿ããŠãã«ãŒããã©ã¡ãŒã¿ãŒãšèšè¿°åããŒãã«ã®é¢ä¿ãæé©ã«æ§æããå¿
èŠãããå ŽåããããŸãã
äºæ³ãããå€æŽ
ã©ã®å€æŽãè¿œå ã®ãªãœãŒã¹ãå¿
èŠãšããããç解ããã«ã¯ããŸãã²ãŒã ãšã³ãžã³ãéåžžã©ã®ããã«ããŒã¿ãèšè¿°åãèšè¿°åããŒãã«ãããã³ã«ãŒã眲åãå€æŽããããæ£ç¢ºã«ç¥ãå¿
èŠããããŸãã
ããããå®æ°ïŒå®æ°ïŒããŒã¿ããå§ããŸãããã ã»ãšãã©ã®ã²ãŒã ã§ã¯ããã¹ãŠã®æ°žç¶ããŒã¿ã¯éåžžãã·ã¹ãã ã¡ã¢ãªãã«ä¿åãããŸãã ã²ãŒã ãšã³ãžã³ã¯ãCPUã§äœ¿çšå¯èœãªã¡ã¢ãªå
ã®ããŒã¿ãå€æŽããŠããããã¬ãŒã å
ã®ããŒã¿ãå€æŽããŸãã æ°žç¶ããŒã¿ã®ãããã¯å
šäœãGPUã¡ã¢ãªã«ã³ããŒãŸãã¯ããããããå®æ°ãããã¡ãŒè¡šçŸãŸãã¯ã«ãŒãèšè¿°åã䜿çšããŠGPUã«ãã£ãŠèªã¿åãããŸãã
SetGraphicsRoot32BitConstantsïŒïŒãã«ãŒãå®æ°ãšããŠäœ¿çšããŠæ°žç¶ããŒã¿ãæäŸãããå Žåãã«ãŒãèšè¿°åã®ãšã³ããªã¯å€æŽãããŸããããããŒã¿ã¯å€æŽã§ããŸãã CBV ==èšè¿°åããã³èšè¿°åããŒãã«ã䜿çšããŠæäŸãããå Žåãèšè¿°åã¯å€æŽãããŸããããããŒã¿ã¯å€æŽãããå ŽåããããŸãã
å®æ°ãããã¡ã®è€æ°ã®è¡šçŸãå¿
èŠãªå ŽåïŒããšãã°ãã¬ã³ããªã³ã°äžã®ããã«ãŸãã¯ããªãã«ãããã¡ãªã³ã°ã®å ŽåïŒãCBVãŸãã¯èšè¿°åã¯ã«ãŒã眲åã®åãã¬ãŒã ã§å€æŽã§ããŸãã
ãããã®ãã¯ã¹ãã£ã§ã¯ãGPUã¡ã¢ãªãèµ·åæã«å²ãåœãŠããããšæ³å®ãããŠããŸãã 次ã«ãSV ==èšè¿°åãäœæãããèšè¿°åããŒãã«ãŸãã¯éçãµã³ãã©ãŒã«ä¿åãããã«ãŒãèšè¿°åã®ãªã³ã¯ããããæããŸãã ãã®åŸãããŒã¿ãšèšè¿°åãŸãã¯éçãµã³ãã©ãŒã¯å€æŽãããŸããã
ãã¯ã¹ãã£ããããã¡ããŒã¿ã®å€æŽãªã©ã®åçããŒã¿ïŒããšãã°ãããŒã«ã©ã€ãºãããããã¹ãã衚瀺ããããã¯ã¹ãã£ãã¢ãã¡ãŒã·ã§ã³åãããé ç¹ãäœæãããã¢ãã«ã®ãããã¡ïŒã®å Žåãã¬ã³ããªã³ã°ã¿ãŒã²ãããŸãã¯ãããã¡ãå²ãåœãŠãRTVãŸãã¯UAVãã€ãŸãèšè¿°åãæäŸããŸãããã®åŸããããã®èšè¿°åå€æŽãããªãå¯èœæ§ããããŸãã ã¬ã³ããŒã¿ãŒã²ãããŸãã¯ãããã¡å
ã®ããŒã¿ãå€æŽãããå ŽåããããŸãã
è€æ°ã®ã¬ã³ããªã³ã°ç®æšãŸãã¯ãããã¡ãå¿
èŠãªå ŽåïŒããšãã°ãã¬ã³ããªã³ã°äžã®ããã«ãŸãã¯ããªãã«ãããã¡ãªã³ã°ã®å ŽåïŒãã«ãŒãã·ã°ããã£ã®åãã¬ãŒã ã®èšè¿°åãå€æŽã§ããŸãã
ãããªãè°è«ã§ã¯ãå€æŽã次ã®ãã®ã«é¢é£ä»ããããŠããå ŽåããªãœãŒã¹ãã€ã³ãã£ã³ã°ã«ãšã£ãŠéèŠã§ãããšèŠãªãããŸãã
- CBVãRTVãUAVãªã©ã®èšè¿°åããŒãã«å
ã®èšè¿°åãå€æŽãŸãã¯çœ®æããŸãã
- ã«ãŒã眲åã®ãšã³ããªãå€æŽããŸãã
Haswell / Broadwellããã»ããµãââã¡ããªã®ãã£ã¹ã¯ãªãã¿ããŒãã«ã®ãã£ã¹ã¯ãªãã¿
Haswell / Broadwellãã©ãããã©ãŒã ã§ã¯ãã«ãŒãã·ã°ããã£ã®1ã€ã®èšè¿°åããŒãã«ãå€æŽãããšããã¹ãŠã®èšè¿°åããŒãã«ãå€æŽããã®ãšåããããã®ãªãœãŒã¹ãæ¶è²»ãããŸãã 1ã€ã®åŒæ°ãå€æŽãããšãæ©åšã¯çŸåšã®ãã¹ãŠã®åŒæ°ã®ã³ããŒïŒããŒãžã§ã³ïŒãäœæããå¿
èŠããããšããäºå®ã«ã€ãªãããŸãã ã«ãŒã眲åã®ã«ãŒããã©ã¡ãŒã¿ã®æ°ã¯ããµãã»ãããå€æŽãããšãã«ãæ©åšãæ°ããããŒãžã§ã³ïŒã€ãŸããå®å
šãªã³ããŒïŒãäœæããå¿
èŠãããããŒã¿ã®éã§ãã
ã泚æ èšè¿°åããŒãããããã¡ãªãœãŒã¹ãªã©ãDirectX 12ã®ä»ã®ãã¹ãŠã®ã¿ã€ãã®ã¡ã¢ãªã§ã¯ãæ©åšã¯æ°ããããŒãžã§ã³ãäœæããŸããã
ã€ãŸãããã¹ãŠã®ãã©ã¡ãŒã¿ãŒãå€æŽããã®ã«ãã»ãŒåããªãœãŒã¹ãè²»ããããŸãïŒ[Loritzen]ããã³[MSDN]ãåç
§ïŒã ãã¡ãããäœãå€æŽãããŠããªãå Žåãæãå°ãªããªãœãŒã¹ãæ¶è²»ãããŸãããããã¯åœ¹ã«ç«ããªãã§ãã
ã泚æ ã¡ã¢ãªãé«éãšäœéã«åå²ãããŠããä»ã®æ©åšã§ã¯ãã«ãŒãåŒæ°ã¹ãã¢ã¯ãåŒæ°ãå€æŽãããæ°ããããŒãžã§ã³ã®ã¡ã¢ãªé åãã€ãŸãé«éé åãŸãã¯äœéé åã®ã¿ãäœæããŸãã
Haswell / Broadwellãã©ãããã©ãŒã ã§ã¯ãæ©åšãã€ã³ãããŒãã«ã®ãµã€ãºãå¶éãããŠãããããèšè¿°åããŒãã«ãå€æŽããããã®è¿œå ã³ã¹ããçºçããå ŽåããããŸãã
ãããã®ããŒããŠã§ã¢ãã©ãããã©ãŒã ã®èšè¿°åããŒãã«ã¯ãããŒããŠã§ã¢ããã€ã³ãã£ã³ã°ããŒãã«ãã䜿çšããŸãã åãã€ã³ãããŒãã«ãšã³ããªã¯ãèšè¿°åããŒãå
ã®ãªãã»ãããšèŠãªãããšãã§ããåäžã®DWORDå€ã§ãã 64 KBã®ãªã³ã°ã«ã¯ããã€ã³ãã£ã³ã°ããŒãã«ã®16,384ã¬ã³ãŒããä¿åã§ããŸãã
ã€ãŸããåæç»åŒã³åºãã§æ¶è²»ãããã¡ã¢ãªã®éã¯ãèšè¿°åããŒãã«ã§ã€ã³ããã¯ã¹ãä»ããããã«ãŒã眲åã§åç
§ãããèšè¿°åã®ç·æ°ã«äŸåããŸãã
ããŒãã«ãšã³ããªã®ãã€ã³ãã«64 KBã®ã¡ã¢ãªãäžè¶³ãããšããã©ã€ããŒã¯å¥ã®64 KBã®ã¡ã¢ãªãã€ã³ãããŒãã«ãå²ãåœãŠãŸãã ãããã®ããŒãã«ãåãæ¿ãããšãå³2ã«ç€ºãããã«ãã³ã³ãã¢ãåæ¢ããŸãã
å³2.ã³ã³ãã€ãŒã®åæ¢ïŒAndrew Loritzenã«ããæç»ïŒã«ãŒã眲åã¯ãèšè¿°åããŒãã«å
ã®64åã®èšè¿°åãåç
§ãããšä»®å®ããŸãã 16 384/64 = 256ã®æç»åŒã³åºãããšã«åæ¢ããŸãã
ã«ãŒã眲åãå€æŽããã«ã¯ããã€ãã®ãªãœãŒã¹ãå¿
èŠãªãããèšè¿°åããŒãã«å
ã®èšè¿°åã®æ°ãå€ãã«ãŒã眲åããããèšè¿°åããŒãã«å
ã®èšè¿°åã®æ°ãå°ãªãå€ãã®ã«ãŒã眲åã䜿çšããããšããå§ãããŸãã
ãããã£ãŠãHaswell / Broadwellãã©ãããã©ãŒã ã§ã¯ãèšè¿°åãžã®åç
§ãã§ããã ãå°ãªãããããšãæãŸããã§ãã
ã¬ã³ããªã³ã°ã«é¢ããŠããã¯ã©ãããæå³ã§ããïŒ åããŒãã«ã§ããå°ãªãèšè¿°åã§ïŒãããã£ãŠãããå€ãã®ã«ãŒã眲åã§ïŒããå€ãã®èšè¿°åããŒãã«ã䜿çšããå Žåããã€ãã©ã€ã³ç¶æ
ãªããžã§ã¯ãïŒPSOïŒã®æ°ã¯ããã®ãããªãªããžã§ã¯ããšã«ãŒã眲åã®éã§1察1ã®é¢ä¿ãç¶æãããããå¢å ããŸãã
ãã€ãã©ã€ã³ç¶æ
ãªããžã§ã¯ãã®æ°ã®å¢å ã¯ãã·ã§ãŒããŒã®æ°ã®å¢å ã«ã€ãªããå¯èœæ§ããããŸãããã®å Žåãäžè¬çãªæšå¥šã«åŸã£ãŠãããåºãç¯å²ã®æ©èœãåããããé·ãã·ã§ãŒããŒã®ä»£ããã«ãããç¹åã§ããŸãã
Haswell / Broadwellããã»ããµãââã¡ããªã®ã«ãŒãã£ã³ã°å®æ°ãšèšè¿°å
äžèšã®ããã«ãæ¶è²»ããããªãœãŒã¹ã®èŠ³ç¹ããã1ã€ã®èšè¿°åããŒãã«ãå€æŽããããšã¯ããã¹ãŠã®èšè¿°åããŒãã«ãå€æŽããããšãšåçã§ãã åæ§ã«ã1ã€ã®ã«ãŒãå®æ°ãŸãã¯ã«ãŒãèšè¿°åã®å€æŽã¯ããã¹ãŠã®å€æŽãšåçã§ãïŒ[Loritzen]ãåç
§ïŒã
ã«ãŒãå®æ°ã¯ãããããŒããã£ã¹ãå®æ°ãã䜿çšããŠå®è£
ãããŸããããã¯ãæ©åšããªãã¬ãŒãã£ã³ã°ãŠãããã¬ãžã¹ã¿ïŒEUïŒã«äºåå
¥åããããã«äœ¿çšãããããã¡ãŒã§ãã å€ã¯EUã¹ããªãŒã ã®éå§çŽåŸã«å©çšã§ãããããèšè¿°åããŒãã«ã§ã¯ãªãã«ãŒãå®æ°ãšããŠæ°žç¶ããŒã¿ãä¿åããããšã«ãããããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã
ã«ãŒãèšè¿°åãããããŒããã£ã¹ãå®æ°ã䜿çšããŠå®è£
ãããŸãã ãããã¯ãéåžžã®ã¡ã¢ãªã¢ã¯ã»ã¹ãã¹ãä»ããŠããŒã¿ãèªã¿åãã·ã§ãŒããŒã«å®æ°ã®åœ¢åŒã§æž¡ããããã€ã³ã¿ãŒã§ãã
èšè¿°åããŒãã«ãšã«ãŒãå®æ°/ Haswell / Broadwellããã»ããµãââã¡ããªã®èšè¿°å
èšè¿°åããŒãã«ãã«ãŒãå®æ°ãããã³èšè¿°åã®å®è£
ã調ã¹ãŸããã ããã§ããã®èšäºã®äž»ãªè³ªåãçãã¯äœã§ããïŒãã«çããããšãã§ããŸãã ããŒããŠã§ã¢ãã€ã³ãã£ã³ã°ããŒãã«ã®ãµã€ãºãå¶éãããŠããããã®å¶éãè¶
ããããšã«é¢é£ããŠåæ¢ããå¯èœæ§ããããããã«ãŒãå®æ°ãšã«ãŒãèšè¿°åã®å€æŽã¯ãããŒããŠã§ã¢ãã€ã³ãã£ã³ã°ããŒãã«ãå¿
èŠãšããªããããHaswell / Broadwellãã©ãããã©ãŒã ã§ã®èŠæ±ãå°ãªãæäœã®ããã§ãã ãã®ååã«åŸãå Žåãæç»ã®åŒã³åºãããšã«ããŒã¿ãå€æŽããããšãæ倧ã®å¹æãåŸãããŸãã
Haswell / Broadwellããã»ããµãââã¡ããªã®ã¹ã¿ãã£ãã¯ãµã³ãã©
åã®èšäºã§èª¬æããããã«ãã«ãŒã眲åã§ãµã³ãã©ãŒãå®çŸ©ããããHLSLã«ãŒã眲åèšèªã䜿çšããŠã·ã§ãŒããŒã§çŽæ¥ãµã³ãã©ãŒãå®çŸ©ã§ããŸãã ãã®ãããªãµã³ãã©ãŒã¯éçãšåŒã°ããŸãã
Haswell / Broadwellãã©ãããã©ãŒã ã§ã¯ããã©ã€ããŒã¯éçãµã³ãã©ãŒããµã³ãã©ãŒã®å®æçãªããŒãã«é
眮ããŸãã ããã¯ãèšè¿°åã«æåã§é
眮ããã®ãšåãã§ãã ä»ã®ããŒããŠã§ã¢ãã©ãããã©ãŒã ã§ã¯ããµã³ãã©ãŒãã·ã§ãŒããŒã¬ãžã¹ã¿ã«é
眮ããããããéçãµã³ãã«ãã·ã§ãŒããŒã«çŽæ¥ã³ã³ãã€ã«ã§ããŸãã
äžè¬ã«ãéçãµã³ãã©ãŒã¯ã©ã®ãã©ãããã©ãŒã ã§ãé«ãããã©ãŒãã³ã¹ãæäŸãããããäºçŽãªãã§äœ¿çšã§ããŸãã ããã§ããHaswell / Broadwellãã©ãããã©ãŒã ã§ã¯ãèšè¿°åããŒãã«å
ã®èšè¿°åã®æ°ãå¢ãããšãããŒããŠã§ã¢èšè¿°åããŒãã«ã«å«ãŸããã»ã«ã16,384ã»ã«ã ãã«ãªãããããã€ãã©ã€ã³ãåæ¢ããå¯èœæ§ãé«ããªããŸãã
HLSLã®éçãµã³ãã©ãŒã®æ§æã¯æ¬¡ã®ãšããã§ãã
StaticSampler( sReg, [ filter = FILTER_ANISOTROPIC, addressU = TEXTURE_ADDRESS_WRAP, addressV = TEXTURE_ADDRESS_WRAP, addressW = TEXTURE_ADDRESS_WRAP, mipLODBias = 0.f, maxAnisotropy = 16, comparisonFunc = COMPARISON_LESS_EQUAL, borderColor = STATIC_BORDER_COLOR_OPAQUE_WHITE, minLOD = 0.f, maxLOD = 3.402823466e+38f, space = 0, visibility = SHADER_VISIBILITY_ALL ])
ã»ãšãã©ã®ãã©ã¡ãŒã¿ãŒã¯ãC ++ã¬ãã«ã§äœ¿çšããããã©ã¡ãŒã¿ãŒãšé¡äŒŒããŠããããã説æãå¿
èŠãšããŸããã äž»ãªéãã¯å¢çç·ã®è²ã§ããC++ã¬ãã«ã§ã¯å
šè²ç¯å²ããµããŒããããŸãããHLSLã¬ãã«ã§ã¯äžéæãªçœãäžéæãªé»ãéæãªé»ã®ã¿ã䜿çšå¯èœã§ãã éçã·ã§ãŒããŒã®äŸã
StaticSampler(s4, filter=FILTER_MIN_MAG_MIP_LINEAR)
ã¹ã«ã€ã¬ã€ã¯
Skylakeã¯ã1ã€ã®èšè¿°åããŒãã«ã§èšè¿°åã®ããŒãå
šäœïŒçŽ100äžã®ãªãœãŒã¹ïŒã®åçãªã€ã³ããã¯ã¹äœæããµããŒãããŠããŸãã ããã¯ãèšè¿°åããŒãã®å©çšå¯èœãªã¡ã¢ãªå
šäœãã€ã³ããã¯ã¹åããã«ã¯ãåäžã®èšè¿°åããŒãã«ã§ååãªå Žåãããããšãæå³ããŸãã
以åã®ã¢ãŒããã¯ãã£ãšæ¯èŒãããšãã«ãŒã眲åã®èšè¿°åããŒãã«ãšã³ããªãé »ç¹ã«å€æŽããå¿
èŠã¯ãããŸããã ããã«ãã«ãŒã眲åã®æ°ãæžããããšãã§ããŸãã ãã¡ãããç°ãªãçŽ æã«ã¯ç°ãªãã·ã§ãŒããŒãå¿
èŠã«ãªããããç°ãªãã³ã³ãã€ãŒç¶æ
ãªããžã§ã¯ãïŒPSOïŒãå¿
èŠã«ãªããŸãã ãã ãããããã®PSOã¯åãã«ãŒã眲åãåç
§ã§ããŸãã
ææ°ã®ã°ã©ãã£ãã¯ãšã³ãžã³ã¯ãDirectX 9ããã³DirectX 11ã®ä»¥åã®ããŒãžã§ã³ãããå°ãªãã·ã§ãŒããŒã䜿çšãããããã·ã§ãŒããŒããã³é¢é£ããç¶æ
ã®å€æŽã«ãªãœãŒã¹ãè²»ããããšãé¿ããã«ãŒãã·ã°ããã£ããã³ïŒãããã£ãŠïŒPSOãªããžã§ã¯ãã®æ°ãæžãããŠãããŒããŠã§ã¢ãã©ãããã©ãŒã ã®ããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã
ãããã«
Haswell / Broadwellããã³Skylakeãã©ãããã©ãŒã ã«ã€ããŠèšãã°ãDirectX 12ã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžãããããã®æšå¥šäºé
ã¯ã䜿çšãããã©ãããã©ãŒã ã«ãã£ãŠç°ãªããŸãã Haswell / Broadwellã®å Žåãèšè¿°åããŒãã«å
ã®èšè¿°åã®æ°ã¯å°ãªãããšãæãŸããã®ã«å¯ŸããSkylakeã®å Žåãèšè¿°åããŒãã«ã«ã¯ã§ããã ãå€ãã®èšè¿°åãå«ããããšããå§ãããŸãããããŒãã«èªäœã¯å°ãªãããå¿
èŠããããŸãã
æé©ãªããã©ãŒãã³ã¹ãåŸãããã«ãã¢ããªã±ãŒã·ã§ã³éçºè
ã¯èµ·åæã«ããŒããŠã§ã¢ãã©ãããã©ãŒã ã®ã¿ã€ãã確èªããããã«å¿ããŠãªãœãŒã¹ãã€ã³ãæ¹æ³ãéžæã§ããŸãã ïŒIntel®ããŒããŠã§ã¢ã®ããŸããŸãªã¢ãŒããã¯ãã£ãæ€åºããæ¹æ³ã瀺ãGPUå®çŸ©ã®äŸã¯ã
ãã¡ãããå
¥æã§ã
ãŸã ãïŒãªãœãŒã¹ãã€ã³ãæ¹æ³ã®éžæã«ãããã·ã¹ãã ã·ã§ãŒããŒã®èšè¿°æ¹æ³ã決ãŸããŸãã
ãªã³ã¯ãšæçšãªè³æ
- [Loritzen] Andrew Loritzenã»ãããIntel Graphicsã§ã®DirectX 12ã«ããå¹æçãªã¬ã³ããªã³ã°ããGDCã2015幎
- [MSDN] MSDNããèšè¿°åããŒãã«ã®äœ¿çšã®åŒ·åã ã
- Microsoft DirectXããã°
- Twitterã®DirectX 12ïŒ @ DirectX12
- Direct3D * 12-PCã§ã®ã³ã³ãœãŒã«APIã®å¹çãšããã©ãŒãã³ã¹
- Microsoft DirectX 12ã°ã©ãã£ãã¯ã¹ã«é¢ãããã¬ãŒãã³ã°è³æïŒYouTubeãã£ã³ãã«ïŒ ã