ããã¯ãã·ãªãŒãºã90幎代åŸåã®3Dã«ãŒãå°é察çãã®2çªç®ã®èšäºã§ãã æåã®éšåã§ã¯ã1996幎æ«ã®
RenditionVérité1000ãšvQuakeãšåŒã°ããç¹å¥ãªã²ãŒã ããŒãã調ã¹ãŸããã ã¬ã³ãã£ã·ã§ã³ã¯ãQuakeããŒã±ããã®ãã¹ãŠã®äººãæã¡è² ããããšãã§ããŸããã ãã°ããã®éãããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãåããid Softwareãããã¯ãã¹ã¿ãŒãèµ·åã§ããå¯äžã®ããŒãã§ããã
ããããid SoftwareãGLQuakeãšåŒã°ããQuakeã®æ°ããããŒãžã§ã³ããªãªãŒã¹ãã1997幎1æã«ãã¹ãŠãå€ãããŸããã ããŒãã¯miniGLïŒOpenGL 1.1æšæºã®ãµãã»ããïŒã䜿çšããŠäœæãããŠãããããããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã¿ã®ã¡ãŒã«ãŒã¯miniGLãã©ã€ããŒãäœæãã3Dã«ãŒãã¬ãŒã¹ã«åå ã§ããŸãã ãã®ç¬éããã競äºã®å¯èœæ§ã¯èª°ã«ã§ãéãããŸããã ç®æšã¯ãã§ããã ãå€ãã®ãã¬ãŒã ãæ¯ç§çæããããšã§ããã å ±é
¬ã¯ã顧客ã®å声ãšãéã§ããã æŽå²ãæçã«ç 究ããçµæãåœæã®2ã€ã®åœå±ãå±±ã®çã§ãã2人ã®çç£è
ãçã£ãŠããããšã¯ééããããŸããã
ãããŸã§ã®ãšãããçãäœå°ã¯ãããŸãããQuakeã®äžçã¯Voodooã«ãã£ãŠæ¯é
ãããŠããŸãã ãŸããQuakeã¯ã²ãŒã ã®äžçãæ¯é
ããŠãããããã²ãŒããŒã«ãšã£ãŠ3Dfx Voodooã®è³Œå
¥ã¯ã»ãŒé¿ããããŸããã
-ãã ã®ããŒããŠã§ã¢ã1997幎11æ30æ¥
3DFX Voodoo 1
-ä»ã®ãã¹ãŠã®ã«ãŒãã®æž¬å®åºæºã
-John Carmack .planãã¡ã€ã«ã 1998幎2æ12æ¥ [2]
50ã¡ã¬ãã¯ã»ã«/ç§ã®å
å¡«çã瀺ããä»æ§
[3]ãèŠãŠãããã«ãã®ã«ãŒãã調ã¹ãŠããã®ãããªåŒ·åãªè£œåãäœæããããã«3dfxãäœãããããç解ããããšæããŸããã
3dfx Interactive
ãã¹ã»ã¹ãã¹ãã¹ã³ããã»ã»ã©ãŒãºãã²ã€ãªãŒã»ã¿ããªã¯ãSGIã§äžç·ã«åãããšãã«äŒã£ã
[4] ã Pellucidã§å°ãä»äºãããåŸãPCçšã®IrisVisionããŒãã販売ããããšããŸããïŒ1994幎ã«ã¯ã1æããã4000ãã«ããããŸããïŒãååã¯Gordy Campbell TechFarmã®æ¯æŽãåããŠèªç€Ÿãèšç«ããŸããã ã«ãªãã©ã«ãã¢å·ãµã³ããŒã«æ¬ç€Ÿã眮ã3dfx Interactiveã¯ã1994幎ã«èšç«ãããŸããã
åœåãå瀟ã¯ã¢ãŒã±ãŒããã·ã³åãã®åŒ·åãªããŒããŠã§ã¢ã·ã¹ãã ãäœæããããšãæå³ããŠããŸããããPCããŒããéçºããããšã§æ¹éãå€ããŸããã ããã«ã¯3ã€ã®çç±ããããŸããã
- RAMã®ããªãäœãäŸ¡æ Œã
- FastPage RAMããå§ããŠã次ã«EDO RAMã§å§ããŠãRAMã®åŸ
ã¡æéã¯30ïŒ
æžå°ããŸããã ããã§ãã¡ã¢ãªã¯æ倧50 MHzã®åšæ³¢æ°ã§åäœããŸãã
- 3DïŒãŸãã¯æ¬äŒŒ3DïŒã®ã²ãŒã ã¯ãŸããŸã人æ°ãé«ãŸã£ãŠããŸãã DOOMãDescentãWing Commander IIIãªã©ã®ã²ãŒã ã®æåã¯ã3Dã¢ã¯ã»ã©ã¬ãŒã¿ã®åžå ŽããŸããªãåºçŸããããšã瀺ããŠããŸãã
äŒç€Ÿã®åµèšè
ã¯ãã²ãŒã åãã«èšèšãããå°å£²äŸ¡æ Œã300ã400ãã«ã®åŒ·åãªãã®ãäœæããå¿
èŠãããããšã«æ°ä»ããŸããã 1996幎ãå瀟ã¯SST1ã¢ãŒããã¯ãã£ïŒåµæ¥è
ã«ã¡ãªãã§åä»ãããã-Sellers-Smith-Tarolli-1ïŒã®äœæãçºè¡šããããã«DiamondãCanopusãInnovisionãColorMAXãªã©ã®ããã€ãã®OEMã«ãã£ãŠã©ã€ã»ã³ã¹ãããŸããã 圌ãã®åµé ã®ããã«ã圌ãã¯ãã®éæ³ã®ããã©ãŒãã³ã¹ã匷調ããããŒã±ãã£ã³ã°åãVoodoo1ããæãã€ããŸããã
V1000ã®å Žåã®ããã«ãã«ãŒããäœæãããšããã¡ãŒã«ãŒã¯ãéžæããã¿ã€ãã®RAMïŒEDOãŸãã¯DRAMïŒãããŒãã®è²ãããã³ãããã®ç©ççãªé
眮ã®ã¿ãå€æŽã§ããŸããã ä»ã®ã»ãšãã©ãã¹ãŠãæšæºåãããŸããã
ãã€ã€ã¢ã³ãã¢ã³ã¹ã¿ãŒ3Dãvgamuseum.infoããã®ç»åãCanopus Pure3Dãvgamuseum.infoããã®ç»åãBIOSTAR Venus 3Dãvgamuseum.infoããæ®åœ±ããç»åãORCHID Righteous 3Dãvgamuseum.infoããã®ç»åãSST1ããŒããèŠããšã競åä»ç€Ÿã§ããRendition Verite 1000ããã³NVidia NV1ãšã®éããéç«ã£ãŠããŸããã
ãŸãã3dfxã¯2Dã¬ã³ããªã³ã°ã®ãµããŒããæŸæ£ããŠå€§èãªäžæ©ãèžã¿åºããŸããã Voodoo1ã«ã¯2ã€ã®VGAããŒããããã1ã€ã¯åºåãšããŠäœ¿çšããããã1ã€ã¯å
¥åãšããŠäœ¿çšãããŸããã ãã®ã«ãŒãã¯è¿œå ãšããŠéçºããããã®ã§ãã³ã³ãã¥ãŒã¿ãŒã«ãã§ã«ã€ã³ã¹ããŒã«ãããŠãã2次å
VGAã«ãŒãããã®åºåãå
¥åãšããŠåãåããŸããã ãŠãŒã¶ãŒããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ïŒDOSãŸãã¯WindowsïŒã§äœæ¥ãããšãVoodoo1ã¯åã«VGAå
¥åããVGAåºåã«ä¿¡å·ããªãã€ã¬ã¯ãããŸããã 3Dã¢ãŒãã«åãæ¿ãããšãVoodoo1ã¯VGAåºåãå¶åŸ¡ããVGAå
¥åããã®ä¿¡å·ãç¡èŠããŸããã äžéšã®ããŒãã«ã¯ã2Dã¢ãŒããš3Dã¢ãŒããåãæ¿ãããšãã«ã¯ãªãã¯ããæ©æ¢°çãªã¹ã€ããããããŸããã ãã®æ±ºå®ã«ãããã«ãŒãã¯ãã«ã¹ã¯ãªãŒã³ã¬ã³ããªã³ã°ã«ã®ã¿äœ¿çšã§ããããŠã£ã³ããŠãã¢ãŒãã¯ãããŸããã§ããã
SST1ã®2çªç®ã®æ³šç®ãã¹ãåŽé¢ã¯ã1ã€ã®CPUã§ã¯ãªãã2ã€ã®éããã°ã©ããã«ASICïŒç¹å®çšéåãéç©åè·¯ãç¹æ®çšééç©åè·¯ïŒããäœæãããããšã§ãã ã¿ã€ã€ãã©ãã¯ã«æ²¿ã£ãŠæ©ããšããTMUãããã³ãFBIããšããã©ãã«ã®ä»ããåãããã«ç¬èªã®RAMãããããšãããããŸãã ã¡ã¢ãªã«ãŒãã§ã¯ã4ã¡ããã€ãã®RAMãåçã«åå²ãããŸããïŒãã¯ã¹ãã£ãæ ŒçŽããããã®2ã¡ããã€ãTMUãšãã«ã©ãŒãããã¡ãŒããã³zãããã¡ãŒãæ ŒçŽããããã®2ã¡ããã€ãFBIãå€ã¯ãããã16ãããRGBAããã³16ãããæŽæ°/ããŒãæµ®åå°æ°ç¹ãšããŠæ ŒçŽãããŸããã 4ã¡ã¬ãã€ãã®ã¡ã¢ãªã«ãŒãã¯ãæ倧640x480ïŒããã«ãããã¡ãªã³ã°çšã«2ã€ã®ã«ã©ãŒãããã¡ïŒ640x480x2ïŒ+ 1ã€ã®æ·±åºŠãããã¡ïŒ640x480x2ïŒ= 1 843 200ïŒããµããŒãããŸãã 4ã¡ããã€ãã®FBI RAMãæèŒããåŸã®ã¢ãã«ã§ã¯ãæ倧800x600ïŒ2x800x600x2 + 800x600x2 = 2,880,000ïŒãŸã§ã®è§£å床ã䜿çšã§ããŸããã
SST1ã¬ã³ããªã³ã°ãã€ãã©ã€ã³
ã³ã³ãã¢ã¯ä»æ§æžã«ã¯è©³ãã説æãããŠããŸããã ç§ã®è§£éã«ãããšãäžè§åœ¢ã®å¯¿åœã¯5ã€ã®æ®µéã§æ§æãããŠããŸããã
- äžè§åœ¢ãäœæãããã³ã³ãã¥ãŒã¿ãŒã®ã¡ã€ã³ããã»ããµïŒéåžžã¯PentiumïŒã§å€æãããŸãã ãã®ãããªæäœã«ã¯ãã¢ãã«/æ圱空éã®ãããªãã¯ã¹ã«ããä¹ç®ãåãæšãŠãé ç¹ã®é è¿æ³ã®åå²ãå次座æšã®åæãããã³èŠéã®å€æãå«ãŸããŸãã ãã®ããã»ã¹ã®æåŸã§ã¯ãç»é¢ã¹ããŒã¹ã®è¡šç€ºãããŠããäžè§åœ¢ã®ã¿ãæ®ããŸãïŒã¯ãªããã³ã°ã®ããã1ã€ã®äžè§åœ¢ã2ã€ã«ãªãããšããããŸãïŒã
- triangleCMDã³ãã³ãã䜿çšãããšãäžè§åœ¢ãPCIãã¹ãä»ããŠãã¬ãŒã ãããã¡ãŒã€ã³ã¿ãŒãã§ã€ã¹ïŒFBIïŒã«è»¢éãããŸãã ãããã¯ããã¯ã¹ãã£ãããã³ã°ãŠãããã«ãã£ãŠäœæãããã©ã¹ã¿ãŒæååã¯ãšãªã«å€æãããŸãã éçºè
ããã€ãªãã¢ãã£ã«ã¿ãªã³ã°ãå¿
èŠãšããå Žåãã©ã¹ã¿ãŒã©ã€ã³ã®åèŠçŽ ïŒãã©ã°ã¡ã³ããšåŒã°ããïŒã«å¯ŸããŠãTMUã¯ãã¯ã»ã«ããšã«æ倧4ã€ã®æ€çŽ¢ã¯ãšãªãå®è¡ããŸãã ãã©ã°ã¡ã³ãåãããããŒã¹ãã¯ãã£ãåå²ãTMUã§å®è¡ãããŸãã
- TMUã¯ããã©ã°ã¡ã³ãåããã16ãããRGBAã«ã©ãŒå€+ 16ãããZå€ãšããŠFBIã«ãã©ã°ã¡ã³ããéä¿¡ããŸãã
- FBIã¯zãããã¡ãŒã§ãã©ã°ã¡ã³ããã¹ããå®è¡ãããããããã¬ãŒã ãããã¡ãŒã®RGBAå€ãšzå€ãä¿åããå°çšRAMãšæ¯èŒããŸãã
- æåŸã«ãç
§æã¯ãã®è²å±æ§ãš64èŠçŽ ã®ãã©ã°ããŒãã«ã§ã®æ€çŽ¢ã«åºã¥ããŠãã©ã°ã¡ã³ãã«é©çšãããŸãã ããã·ã³ã°ãå¿
èŠãªå ŽåãFBIã¯çµæã®ãã©ã°ã¡ã³ããã«ã©ãŒãããã¡ãŒã«æ¢ã«ãããã®ãšçµåããŸãã
èå³æ·±ãäºå®ïŒããªãã3Dã®æ奜家ãªããããããå
ã®Quake 3ã³ãŒãã®ãããã§æåã«ãªã£ãé«ééå¹³æ¹æ ¹ã³ãŒãã«ã€ããŠç¥ã£ãŠããã§ãããïŒ
float Q_rsqrt(float number) { long i; float x2, y; const float threehalfs = 1.5f; x2 = number * 0.5f; y = number; i = * (long*) &y;
[5]ãæ¢ããŠããœãããŠã§ã¢ã®ãœãŒã¹Q_rsqrt RysãGary Tarolliã«é£çµ¡ããŸãããGaryTarolliã¯ãSGIã§ã®äœæ¥äžã«ãã®ã³ãŒãã䜿çšãããšèšããŸããã ãããã£ãŠãSST1ãã€ãã©ã€ã³ã§ã䜿çšããããšæ³å®ããã®ã¯åŠ¥åœã§ãã
äœããäžèŽããŸãã
ã³ã³ãã¢ã«ç²Ÿéããåã³ã³ããŒãã³ãïŒTMUãFBIãEDO RAMïŒã50 MHzã®åšæ³¢æ°ã§åäœããããšãç¥ã£ãŠãããšãèšç®ã«äœããã®ãšã©ãŒããããã«ãŒãã50ã¡ã¬ãã¯ã»ã«/ç§ã®é床ã«å°éã§ããªãããšãããããŸãã ããã§2ã€ã®åé¡ã解決ããå¿
èŠããããŸããã
ãŸããTMUã¯ãã€ãªãã¢ãã¯ã¹ãã£ãã£ã«ã¿ãªã³ã°ãå®è¡ããããã«4ã€ã®ãã¯ã»ã«ãèªã¿åãå¿
èŠããããŸããã ããã¯ãRAMãžã®4ãµã€ã¯ã«ã®ã¢ã¯ã»ã¹ãå¿
èŠã§ããããšãæå³ããTMUã®ããŒã¿ãäžè¶³ãã50/4 = 12.5ã¡ã¬ãã¯ã»ã«/ç§ã®å
å¡«çã«ãªããŸãã
FBIã¬ãã«ã«ã¯å¥ã®ããã«ããã¯ããããŸãã Zãããã¡æ€èšŒãæå¹ã«ãªã£ãŠããå Žåãæžã蟌ã¿ãŸãã¯ç Žæ£ããåã«ããã©ã°ã¡ã³ãã®çä¿¡Zå€ããZãããã¡ã«ãã§ã«ãããã®ãšæ¯èŒããå¿
èŠããããŸãã ãã¹ããæåããå Žåãå€ãèšé²ããå¿
èŠããããŸãã ãããã¯RAMã䜿çšãã2ã€ã®æäœã§ããããã£ã«ã¬ãŒããååã«ãªããŸããïŒ50/2 = 25ã¡ã¬ãã¯ã»ã«/ç§ã
4ãŠã§ã€ã€ã³ã¿ãŒãªãŒãTMU
TMUã¹ããŒãžã§ã®4ã€ã®ãµã³ãã«åé¡ã®è§£æ±ºçã¯ãSST1ä»æ§ã«èšèŒãããŠããŸãã
ãã¯ã¹ãã£ã¡ã¢ãªã®ããŒã¿ãã¹ã«å®å
šãªã€ã³ã¿ãŒãªãŒããå®è£
ãããŠãããããä»ã®ãã³ã¯ã®ããŒã¿ãžã®ã¢ã¯ã»ã¹ã«äœ¿çšãããã¢ãã¬ã¹ã«é¢ä¿ãªããåã
ã®ãã³ã¯ãããŒã¿ã«ã¢ã¯ã»ã¹ã§ããŸãã
-ä»æ§SST1
ãã¹ãã¢ãã¬ã¹å€éåã䜿çšããããäžè¬çãªããŒã¿ããã³ã¢ãã¬ã¹ãã¹ã䜿çšãããã¯ç€ºããŸããã å€éåããã«åé¢ããã«æç»ããæ¹ãããããããã§ãã
詳现ã«é¢ä¿ãªããTMUã¢ãŒããã¯ãã£ã¯ãµã€ã¯ã«ããšã«4 x 16ããããã¯ã»ã«ãåä¿¡ã§ããŸããã å
¥åããŒã¿ãæ£ããåšæ³¢æ°ã«å°éãããšãTMUã¯wã«ãããã©ã°ã¡ã³ãåäœã®é€ç®ãå®è¡ããFBIã«éä¿¡ããããã©ã°ã¡ã³ãã®zå€ïŒ16ãããïŒãšãã©ã°ã¡ã³ãã®è²ïŒ16ãããïŒãçæã§ããŸãã
åæ¹åã€ã³ã¿ãŒãªãŒãFBI
FBIã¹ããŒãžã§ã®2ã€ã®RAMã¢ã¯ã»ã¹æäœã®åé¡ã«å¯Ÿãã解決çããä»æ§ã«ã¯èšèŒãããŠããŸããã ãã ããããã¥ã¡ã³ãã§ã¯ããµã€ã¯ã«ããšã«2ãã¯ã»ã«ãèšé²ã§ãããããglClearã§éæããã100ã¡ã¬ãã¯ã»ã«/ç§ã®ãã£ã«ã¬ãŒãã«èšåããŠãããããã«ããåæ¹åã€ã³ã¿ãŒã¬ãŒã¹ãããã§äœ¿çšãããŠããããšãããããŸãã
FBIã¯äžåºŠã«2ãã¯ã»ã«ã®èªã¿åããšæžã蟌ã¿ãè¡ããŸããïŒ16ãããã«ã©ãŒãš16ãããz = 64ãããã§æ§æããã2 x 1ãã¯ã»ã«ïŒã ãããè¡ãããã«ã21ãããã¢ãã¬ã¹ã¯2ã€ã®20ãããã¢ãã¬ã¹ãçæãã2ã€ã®ãã¯ã»ã«ãé çªã«èªã¿æžãããããã«æäžäœããããç Žæ£ãããŸãã æ°Žå¹³ç·ã®æžã蟌ã¿/èªã¿åãã«å¿
èŠãªã©ã¹ã¿ã©ã€ã³ã¢ã«ãŽãªãºã ã¯å·Šããå³ã«ç§»åãããããäžåºŠã«2ã€ã®åºæ°ãã¯ã»ã«ãèªã¿åããšéåžžã«ããŸãæ©èœããŸããã
64ããããã¹TMU-> FBI
ããºã«ã®æåŸã®ããŒã¹ã¯ã64ãããFBI-TMUãã¹ã§ãã ä»æ§ã«ã¯ã»ãšãã©äœãæžãããŠããŸãããããã®åäœã¯FBIãæ¶è²»ããããŒã¿ã«ãã£ãŠç解ã§ããŸãã FBIã¯äžåºŠã«2ãã¯ã»ã«ãåŠçãããããTMUã¯ãã¯ã»ã«ãã§ããã ãæ©ãéä¿¡ããã2ã€ã2ã€ã®16ãããã«ã©ãŒ+ 16ãããZå€ãšããŠçµåãããšä»®å®ããã®ã劥åœã§ãã
Voodoo1ã®ããã°ã©ãã³ã°
æäžäœã¬ãã«ã§ã¯ãVoodoo1ããã°ã©ãã³ã°ã¯ã¡ã¢ãªãããã¬ãžã¹ã¿ã䜿çšããŠè¡ãããŸããã APIã¯é©ãã»ã©å°æ°ã®ã³ãã³ãã§æ§æããããããã®5ã€ã®ã¿ããããŸãïŒTRIANGLECMDïŒåºå®å°æ°ç¹ä»ãïŒãFTRIANGLECMDïŒæµ®åå°æ°ç¹ä»ãïŒãNOPCMDïŒno-opïŒãFASTFILLCMDïŒãããã¡ãŒã¯ãªã¢ïŒãããã³ããã·ã³ã°èšå®çšã®ããŒã¿ã¬ãžã¹ã¿ã®èªã¿èŸŒã¿ã«é¢é£ããSWAPBUFFERCMD Zãã¹ãããã©ã°ã«ã©ãŒã®ããŠã³ããŒããªã©ã VRAMã§ã®ãââã¯ã¹ãã£ã®ããŒãã¯ãã¡ã¢ãªãããã³ã°ãåãã8ã¡ããã€ãã®æžã蟌ã¿å°çšPCI RAMãä»ããŠè¡ãããŸããã
ïŒå®éã®ïŒVoodoo1ããã°ã©ãã³ã°
éçºè
ã¯ãGlide APIãä»ããŠVoodoo1ãããã°ã©ãã³ã°ããŸãã
[6] ã APIãã¶ã€ã³ããžãã¯ã¯IRIS GL / OpenGLã«è§Šçºããããã¹ãŠã«ã¹ããŒããã·ã³ãšãã¬ãã£ãã¯ã¹ã䜿çšããŸããïŒãglãã®ä»£ããã«ãgrãã®ã¿ã䜿çšãããããã°ã©ãã¯Vulkanã§è¡ãããŠããããã«VRAMãå¶åŸ¡ããå¿
èŠããããŸããïŒã
#include <glide.h> void main( void ) { GrHwConfiguration hwconfig; grGlideInit(void); grSstSelect( 0 ); grSstQueryHardware(&hwconfig); grSstSelect(0); grSstWinOpen(null, GR_RESOLUTION_640x480, GR_REFRESH_60HZ, GR_COLORFORMAT_RGBA, GR_ORIGIN_LOWER_LEFT, 2, 0); grBufferClear(0, 0, 0); GrVertex A, B, C; ... // Init A, B, and C. guColorCombineFunction( GR_COLORCOMBINE_ITRGB ); grDrawTriangle(&A, &B, &C); grBufferSwap( 1 ); grGlideShutdown(); }
ãæšæºãMiniGL
MiniGLã¯OpenGL 1.1æšæºã®ãµãã»ããã§ããããä»æ§ã¯ãªãªãŒã¹ãããŸããã§ããã MiniGLã¯ãQuakeã䜿çšããæ©èœã®ã¿ãã§ããã quake.exeãã€ããªã«å¯ŸããŠobjdumpãå®è¡ãããšããå
¬åŒããªã¹ããç°¡åã«äœæã§ããŸãã
$ objdump -p glquake.exe | grep "gl"
glAlphaFunc glDepthMask glLoadIdentity glShadeModel
glBegin glDepthRange glLoadMatrixf glTexCoord2f
glBlendFunc glDisable glMatrixMode glTexEnvf
glClear glDrawBuffer glOrtho glTexImage2D
glClearColor glEnable glPolygonMode glTexParameterf
glColor3f glEnd glPopMatrix glTexSubImage2D
glColor3ubv glFinish glPushMatrix glTranslatef
glColor4f glFrustum glReadBuffer glVertex2f
glColor4fv glGetFloatv glReadPixels glVertex3f
glCullFace glGetString glRotatef glVertex3fv
glDepthFunc glHint glScalef glViewport
æè¿OpenGLã®åŠç¿ãå§ããã®ã§ããã°ãglColor3fãglTexCoord2fãglVertex3fãglTranslatefãglBeginãglEndãªã©ã®é¢æ°åã«èå³ãããã¯ãã§ãã ãããã¯ãå³æã¢ãŒãããšåŒã°ããã¢ãŒãã§äœ¿çšãããé ç¹åº§æšããã¯ã¹ãã£åº§æšããããªãã¯ã¹æäœãããã³è²ãäžåºŠã«1ã€ã®é¢æ°åŒã³åºãã§ç€ºãããŸãã
ããã¯ããåœæããã°ãŒããŒã®äžè§åœ¢ã«ãã£ãŠãã¯ã¹ãã£ãŒãšã·ã§ãŒãã£ã³ã°ãè¡ãããæ¹æ³ã§ãã
void Render { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_TEXTURE_2D); glShadeModel(GL_SMOOTH); glBindTexture(GL_TEXTURE_2D, 1);
GLQuake
50ã¡ã¬ãã¯ã»ã«/ç§ã®çè«äžã®æ倧ãã£ã«ã¬ãŒãã¯ã640x480ã®è§£å床ã§æ¯ç§ã»ãŒ50ãã¬ãŒã ãæäŸããããšã«ãªã£ãŠããŸãã ãã ããQuakeã¯ãµãŒãã§ã¹ããšã«2ã€ã®ãã¯ã¹ãã£ã¬ã€ã€ãŒïŒã«ã©ãŒçšãã©ã€ããããçšïŒãçµã¿åããããããSST1ãããã¯2åç®ã®ãã¹ã§è¿œå ã®ãã¬ã³ãã䜿çšããŠåãã¬ãŒã ã2åæç»ããå¿
èŠããããŸããã ãã®çµæãQuakeã¯P166Mhzã§26 fpsã§å®è¡ãããŸããã
åããã·ã³ã§è§£å床ã512x384ã«äžããããšã§ãã¹ã ãŒãºãª41 fps
[7]ãéæããããšãã§ããŸããããåœæã¯ç«¶åä»ç€Ÿããã¯æäŸã§ããŸããã§ããã
ãœãããŠã§ã¢ã¬ã³ããªã³ã°GLQUAKE VOODOO1
èå³æ·±ãäºå®ïŒ SST1ã¯äžäººåãã§ã¯ãããŸããã§ããã äžéšã®äººã
ã¯ãã¯ã»ã«ã奜ãã§ããã€ãªãã¢ãã£ã«ã¿ãªã³ã°ãããŒããããŠããããšã«æ°ä»ããŸããã ãã®ä»ã¯ãã¬ã³ãè£æ£ã®æ倱ã«æ©ãŸãããŠããŸããã
Glquakeã¯ããããã«èŠããŸãã 誰ããããã«ã€ããŠè°è«ã§ãããšæããŸãããèªããŸããã-ç¹ã«NVidiaã«ãŒãã§ã¯ã²ã©ãèŠããŸãã 3dfxããŒãã§ã¯ããã¹ãŠãããã»ã©æªãã¯ãããŸãã...ããããè²ã¯ãŸã ãŒãããŠããŸãã TNT2ã§ã¯ãåçã¯å«ã§ãã 圌女ã¯æãããŠæ鬱ã§ãã
-@Fribãéå
¬åŒGlquakeããã³QWã¬ã€ã [8]
3fdx Voodoo 2
1996幎ãã1998幎ãŸã§ã®åžå Žã§3dfxã«ãŒã«ãé©çšããããšèšã£ãå Žåãæ§ãããªè¡šçŸã«ãªããŸãã SST1ã®åŸãVoodoo
2ãã¯ãããžãŒã¯ã100 MHz EDO RAMã90 MHzã®åšæ³¢æ°ã®ASICã1ã€ã ãã§ãªã2ã€ã®TMUã®ãããã§ãããã«é«ãæ°ŽæºãéæããŸããã ãã®æè¡ã¯æ¬åœã®æªç©ã§ãããã°ã©ãã£ãã¯ã«ãŒãèªäœã豪è¯ã«èŠããŸããã
Voodoo
2ã®å
å¡«é床ã¯ã»ãŒ2åã«ãªãã90ã¡ã¬ãã¯ã»ã«/ç§ã«éããŸããã Quakeãã³ãããŒã¯ã¯ãPentium II 266 MMXã§èŠäºãª80 fpsïŒVoodoo1ã§56 fpsãšæ¯èŒããŠïŒã«æ¥äžæããæ¬è³ªçã«ã²ãŒã ããžãã¯ãšã¢ãã¿ãŒæ©èœã®éçã«éããŸããã
Super Voodoo 2 12MBãvgamuseum.infoããã®ç»åãæ®å¿µãªããã1999幎ã«Voodoo3ããªãªãŒã¹ãããåŸã3dfxã¯æ¥è»¢ããŸããã 圌女ã¯ç¬èªã®ãŠãããŒãµã«ã«ãŒãã®éçºã«åãçµã¿å§ãã競äºã®æ¿åã«çŽé¢ããŠOEMãã¯ãããžãŒã®è²©å£²ãåæ¢ããŸããã
ãã®ç§»è¡ã¯æåŸ
ã©ããã«å®äºãããVoodoo3ã®ããã©ãŒãã³ã¹ã¯ãããŒããŠã§ã¢ã®ããã»ã¬ãŒã·ã§ã³ãšç
§æãæäŸã§ããNVidiaã®GeForce 256ãšæ¯èŒããŠãã£ããããŸããïŒPentiumã¯ãã®éšåããã€ãã©ã€ã³ã§è¡ããŸããïŒã
NVidiaã«å¯Ÿå¿ããŠã3dfxã¯Voodoo4ã®éçºããã£ã³ã»ã«ããVSA-100ïŒVoodooã¹ã±ãŒã©ãã«ã¢ãŒããã¯ãã£ïŒãã¯ãããžãŒã䜿çšããŠVoodoo5ã®æ§ç¯ãéå§ããŸããã çµæã¯äºæ³å€ã§ããããNapalmãïŒã«ãŒãã®ã³ãŒãåïŒã®ãªãªãŒã¹åŸã圌女ã¯ãã匷åãªNVidia GeForce 2ããã³ATI Radeonã«ãŒãã«ééããŸããã æåŸã«ã2000幎3æ28æ¥ã«3dfxã¯ç Žç£ãç³è«ããNVidiaã«è²·åãããŸããã
90幎代åŸåã«äœãã§ããŠVoodoo1ãŸãã¯Voodoo2ããã¬ã€ããåã³ãæã£ãŠãã人ã«ãšã£ãŠã3dfxã¯åè¶æ§ã象城ããç»æçãªäŒç€Ÿã®ãŸãŸã§ãã 圌女ã¯åæ°ãååºããæèœãå€åãã«ãã£ãŠéæãããåœç¶ã®æåãžã®successæã«ãªããŸããã ã¿ããªããããšãïŒ
åç
§è³æ
[1]åºå
žïŒ
RenditionVérité1000ã®ã¹ããŒãªãŒ[2]åºå
žïŒ
John Carmack .planã 1998幎2æ12æ¥[3]åºå
žïŒ
SST-1ã3Dã²ãŒã ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³çšã®é«æ§èœã°ã©ãã£ãã¯ãšã³ãžã³[4]åºå
žïŒ
3dfxãªãŒã©ã«ãã¹ããªãŒããã«[5]åºå
žïŒ
Quake3ã®é«éInvSqrtã®èµ·æºïŒïŒ[6]åºå
žïŒ
Glideããã°ã©ãã³ã°ã¬ã€ã[7]åºå
žïŒ
Voodooããã³Voodoo 2 3Dã«ãŒãã䜿çšããGLQuakeã®ãã¬ãŒã ã¬ãŒãã®æ¯èŒ[8]åºå
žïŒ
Fribãéå
¬åŒGlquakeããã³QWã¬ã€ã[9]åºå
žïŒ
VOODOO2 GRAPHICSé«æ§èœã°ã©ãã£ãã¯ãšã³ãžã³ã®3Dã²ãŒã ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³