深床ãããã¡
座æšç³»ã®ã¬ãã¹ã³ã§ã¯ã深床ãããã¡ã䜿çšããŠ3次å ã®ã³ã³ãããã¬ã³ããªã³ã°ããŸãããããã«ãããä»ã®äººã®èåŸã«ããé¡ã®èª€ã£ã衚瀺ãé²æ¢ãããŸããã ãã®ã¬ãã¹ã³ã§ã¯ãããã¹ãããã¡ãŒïŒãŸãã¯zãããã¡ãŒïŒãšããã«æ ŒçŽãããŠããå€ã詳ãã調ã¹ããã©ã°ã¡ã³ããä»ã®ãã©ã°ã¡ã³ããããé ããŠããå Žåã«ãã§ãã¯ãã©ã®çšåºŠæ£ç¢ºã«ééãããã調ã¹ãŸãã
å
容
ããŒã1.ã¯ããã«
ããŒã2.åºæ¬çãªç §æ
ããŒã3. 3Dã¢ãã«ãããŠã³ããŒããã
ããŒã4.é«åºŠãªOpenGLæ©èœ
ããŒã5.é«åºŠãªç §æ
ããŒã6. PBR
- Opengl
- ãŠã£ã³ããŠäœæ
- ããã«ã¡ã¯ãŠã£ã³ããŠ
- ããã«ã¡ã¯ãã©ã€ã¢ã³ã°ã«
- ã·ã§ãŒããŒ
- ãã¯ã¹ãã£ãŒ
- å€æ
- 座æšç³»
- ã«ã¡ã©
ããŒã2.åºæ¬çãªç §æ
ããŒã3. 3Dã¢ãã«ãããŠã³ããŒããã
ããŒã4.é«åºŠãªOpenGLæ©èœ
- 深床ãã¹ã
- ã¹ãã³ã·ã«ãã¹ã
- è²æ··å
- é¡ã®ã¯ãªããã³ã°
- ãã¬ãŒã ãããã¡
- ãã¥ãŒããã¯ã«ãŒã
- é«åºŠãªããŒã¿åŠç
- é«åºŠãªGLSL
- 幟äœåŠã·ã§ãŒããŒ
- ã€ã³ã¹ã¿ã³ã¹å
- ã¹ã ãŒãžã³ã°
ããŒã5.é«åºŠãªç §æ
- é«åºŠãªç §æã Blinn-Fongã¢ãã«ã
- ã¬ã³ãè£æ£
- ã·ã£ããŠã«ãŒã
- å šæ¹åã·ã£ããŠããã
- æ³ç·ãããã³ã°
- èŠå·®ãããã³ã°
- HDR
- ãã«ãŒã
- é 延ã¬ã³ããªã³ã°
- SSAO
ããŒã6. PBR
ããã¹ãããã¡ã¯ãã«ã©ãŒãããã¡ïŒãã¹ãŠã®ãã©ã°ã¡ã³ãã®è²âå¯èŠç»åãæ ŒçŽããïŒãšåæ§ã«ãåãã©ã°ã¡ã³ãã®ç¹å®ã®æ å ±ãæ ŒçŽããéåžžã¯ã«ã©ãŒãããã¡ãšåããµã€ãºãæã¡ãŸãã 深床ãããã¡ã¯ãOSãŠã£ã³ããŠã·ã¹ãã ã«ãã£ãŠèªåçã«äœæããã16ãããã24ãããããŸãã¯32ãããã®æµ®åå°æ°ç¹æ°ã®åœ¢åŒã§å€ãæ ŒçŽããŸãã ã»ãšãã©ã®ã·ã¹ãã ã§ã¯ã24ãããã®ç²ŸåºŠã®ãããã¡ãŒãããã©ã«ãã§äœæãããŸãã
深床ãã¹ããæå¹ã«ãªã£ãŠããå ŽåãOpenGLã¯ãåŠçãããåãã©ã°ã¡ã³ãã®æ·±åºŠããããã¡ã«ä¿åãããŠããããŒã¿ãšç §åããŸãã ãã¹ãã«åæ ŒãããšãåŠçããããã©ã°ã¡ã³ãã®æ·±ãå€ã§ãããã¡ã®å 容ãæŽæ°ããããã¹ãã倱æããå Žåãä¿åãããå€ã¯åããŸãŸã«ãªãããã©ã°ã¡ã³ãã¯ç Žæ£ãããŸãã
深床ãã¹ãã¯ããã©ã°ã¡ã³ãã·ã§ãŒããŒãå®è¡ãããåŸïŒããã³æ¬¡ã®ã¬ãã¹ã³ã§èª¬æããã¹ãã³ã·ã«ãã¹ãã®åŸïŒãç»é¢ã¹ããŒã¹ã§å®è¡ãããŸãã ç»é¢åº§æšã¯glViewporté¢æ°ã§æå®ããããã¥ãŒããŒãã®ãã©ã¡ãŒã¿ãŒã«çŽæ¥é¢é£ããŠããããã©ã°ã¡ã³ãã·ã§ãŒããŒã³ãŒãã®GLSLçµã¿èŸŒã¿å€æ°gl_FragCoordããã¢ã¯ã»ã¹ã§ããŸãã ãã®å€æ°ã®xããã³yã³ã³ããŒãã³ãã¯ããã¥ãŒããŒãå ã®ãã©ã°ã¡ã³ãã®åº§æšã§ãïŒãŠã£ã³ããŠã®å·Šäžé ã«ã¯åº§æšïŒ0ã0ïŒããããŸãïŒã Gl_FragCoordã«ã¯3çªç®ã®ã³ã³ããŒãã³ãããããå®éã«ã¯ãã©ã°ã¡ã³ãã®æ·±ãã®å€ãå«ãŸããŠããŸãã ãã®zã³ã³ããŒãã³ãã¯ã深床ãããã¡ã®å€ãšæ¯èŒããããã«äœ¿çšãããŸãã
ææ°ã®GPUã¯ãã»ãšãã©ãã¹ãŠãåæ深床ãã¹ããšåŒã°ããããªãã¯ã䜿çšããŠããŸãã ãã®ææ³ã«ããããã©ã°ã¡ã³ãã·ã§ãŒããŒãå®è¡ããåã«æ·±åºŠãã¹ããå®è¡ã§ããŸãã ãã®ãã©ã°ã¡ã³ããã©ã®ããã«ãèŠããªãïŒä»ã®ãªããžã§ã¯ãã«ãã£ãŠãããã¯ãããŠããïŒããšã«æ°ä»ããå Žåãã·ã§ãŒãã£ã³ã°ã¹ããŒãžãŸã§ãããç Žæ£ã§ããŸãã
ãã©ã°ã¡ã³ãã·ã§ãŒããŒã¯èšç®éãå€ããããæå³ã®ãªãå Žæã§ã¯å®è¡ããªãã§ãã ããã ãã®ãã¯ããã¯ã«ã¯1ã€ã®å¶éãããããŸããããã©ã°ã¡ã³ãã·ã§ãŒããŒã¯ãã©ã°ã¡ã³ã深床ã®å€ãå€æŽããªãã§ãã ããã ãã®å ŽåãOpenGLã¯åŠçæžã¿ãã©ã°ã¡ã³ãã®æ·±åºŠå€ãäºåã«æ±ºå®ã§ããªããããããã¯æããã§ãã
ããã©ã«ãã§ã¯ã深床ãã¹ãã¯ç¡å¹ã«ãªã£ãŠããŸãã ãªã³ã«ããŸãïŒ
glEnable(GL_DEPTH_TEST);
深床ãã¹ãããªã³ã«ãããšãOpenGLã¯ãã¹ãã«åæ Œãããã¹ãŠã®ãã©ã°ã¡ã³ãã®æ·±åºŠå€ãèªåçã«ä¿åããåæ Œããªãã£ããã©ã°ã¡ã³ããç Žæ£ããŸãã
深床ãã¹ããæå¹ã«ããã«ã¯ãåãã¬ãŒã ã®å€ãå€ãããããã¡ãã¯ãªã¢ããå¿ èŠããããŸãã æ°ãããã©ã°GL_DEPTH_BUFFER_BITãããªãã¿ã®glClearé¢æ°ã«è¿œå ãããŸãã
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
ç¹å®ã®ç¶æ³ã§ã¯ããããã¡èªäœã®å 容ãæŽæ°ããã«ããã¹ãçµæã«åŸã£ãŠç Žæ£ããŠåŠçæžã¿ãã©ã°ã¡ã³ãã®æ·±åºŠãã¹ããå®è¡ããå¿ èŠãããå ŽåããããŸãã ããªãã¡ èªã¿åãå°çšã¢ãŒããããã¡ãžã®å²ãåœãŠã 深床ãã¹ã¯ãGL_FALSEã«èšå®ãããšããããã¡ãžã®æžã蟌ã¿ãç¡å¹ã«ãªããŸãã
glDepthMask(GL_FALSE);
ããã¯ã深床ãã¹ãããªã³ã®å Žåã«ã®ã¿æå³ãããããšã«æ³šæããŠãã ããã
深床ãã¹ãæ©èœ
OpenGLã§ã¯ã深床ãã¹ãã§äœ¿çšãããæ¯èŒæŒç®åãåå®çŸ©ã§ããŸããããã«ãããåŠçãããã©ã°ã¡ã³ããç Žæ£ãããã©ã°ã¡ã³ããããã³æ·±åºŠãããã¡ãæŽæ°ããã±ãŒã¹ã现ããå¶åŸ¡ã§ããŸãã ãã®ã¹ããŒãã¡ã³ãã¯ã glDepthFuncé¢æ°ãåŒã³åºãããšã§èšå®ãããŸãã
glDepthFunc(GL_LESS);
ãã®é¢æ°ã¯ããã®ãªã¹ãããæ¯èŒæŒç®åã®èå¥åãåãå ¥ããŸãã
ããã©ã«ãã§ã¯GL_LESSã䜿çšãããŸããããã¯ããããã¡ã«æ ŒçŽãããŠãã深床å€ä»¥äžã®æ·±åºŠãæã€ãã¹ãŠã®ãã©ã°ã¡ã³ããç Žæ£ããããšãæå³ããŸãã
ããŸããŸãªæ¯èŒæŒç®åãã¢ããªã±ãŒã·ã§ã³ã®åºåã«ã©ã®ããã«åœ±é¿ããããè©ŠããŠã¿ãŸãããã ç§ãã¡ã¯ãç §æã䜿çšããã«ãåºã«ç«ã€2ã€ã®ãã¯ã¹ãã£ãã¥ãŒãã§ã·ãŒã³ãèšå®ããæ°ãããããžã§ã¯ãã䜿çšããŠããŸãã ãœãŒã¹ã³ãŒãã¯ãã¡ãã§ãã ãŸããæŒç®åãGL_ALWAYSã«å€æŽããŸã ã
glEnable(GL_DEPTH_TEST); glDepthFunc(GL_ALWAYS);
ãã®èšå®ã¯ã深床ãã¹ããç¡å¹ã«ããããšãšåçã§ãã深床ãã¹ãã§ã¯ãããšãåæ¯ã«ããã¯ãã§ãã£ããšããŠããå ã«åŠçããããã©ã°ã¡ã³ãã®äžã«ãåŸã§åŠçããããã©ã°ã¡ã³ãã衚瀺ãããŸãã ãããŠæåŸã«åºãæãã®ã§ããã®æçã¯ä»¥åã«è¡šç€ºãããç«æ¹äœã®ãã¹ãŠã®æçãšéãªããŸããïŒ
GL_LESSæŒç®åãè¿ããšãæ£ããã·ãŒã³ãåŸãããŸãã
深床å€ã®ç²ŸåºŠã®åé¡
深床ãããã¡ã®å€ã¯éé[0.0ã1.0]ã«å¶éããããããã«å¯ŸããŠããã¹ãŠã®ã·ãŒã³ãªããžã§ã¯ãã®zã³ã³ããŒãã³ãã芳枬è ã®èŠç¹ãããã§ãã¯ãããŸãã ãã®å Žåã皮空éå ã®ãªããžã§ã¯ãã®zã³ã³ããŒãã³ãã¯ãéé[zNearãzFar]ã®ä»»æã®å€ãåãããšãã§ããŸããããã«ãããæ圱ãã©ãããïŒ æ圱éå° ïŒã®è¿å¢çãšé å¢çã決ãŸããŸãã ãã®ççŸã解æ¶ããã«ã¯ã皮空éã®zæåã®å€ãåºé[0.0ã1.0]ã«å€æããæ¹æ³ãå¿ èŠã§ãã æåã®åçŽãªæ¹æ³ã¯ãåçŽãªç·åœ¢å€æã§ãã
ããã§ãzNearãšzFarã¯ãå¯èŠæ§ãã©ããããå®çŸ©ããæ圱è¡åã®äœæã«äœ¿çšããnearããã³farãã©ã¡ãŒã¿ãŒã®å€ã§ãïŒ åº§æšç³»ãåç §ïŒã ãã®äŸåé¢ä¿ã¯ãå¯èŠæ§ãã©ãããå ã«ããzã®å€ããã©ã¡ãŒã¿ãŒãšããŠåãåãããããéé[0.0ã1.0]ã«å€æããŸãã zå€ãšçµæã®æ·±åºŠå€ãšã®é¢ä¿ã¯ãã°ã©ãã§ç¢ºèªã§ããŸãã
èæ ®ããããã¹ãŠã®äŸåé¢ä¿ã¯ãè¿ããªããžã§ã¯ãã§ã¯0.0ã«ãªããé ãã¯ãªããã³ã°å¹³é¢ã®è¿ãã«ãããªããžã§ã¯ãã§ã¯1.0ã«ãªãåŸåãããå€ã«ãªããŸãã
ãã ããå®éã«ã¯ãç·åœ¢æ·±åºŠãããã¡ã¯å®éã«ã¯äœ¿çšãããŸããã é«å質ã®æ圱çµæãåŸãã«ã¯ã1 / zã«æ¯äŸããäŸåé¢ä¿ã䜿çšãããŸãã ãã®äŸåé¢ä¿ã䜿çšãããšãzãå°ããå Žåã¯æ·±åºŠå€ã®ç²ŸåºŠãé«ããªããzã倧ããå Žåã¯ç²ŸåºŠãã¯ããã«äœããªããŸãã ãã®åäœã®æå³ã«ã€ããŠèããŠãã ããããªãã¶ãŒããŒããæ°ååäœã®ãªããžã§ã¯ããããªãã¶ãŒããŒã®ããåã«ãã詳现ãªãªããžã§ã¯ãã®å Žåã深床å€ã®ç²ŸåºŠã¯æ¬åœã«éèŠã§ããïŒ ç·åœ¢å€æã䜿çšããå Žåããã®åé¡ã¯èæ ®ãããŸããã
éç·åœ¢å€æã¯1 / zã«æ¯äŸãããããåºé[1.0ã2.0]ã®zå€ã«å¯ŸããŠãåºé[1.0ã0.5]ã®æ·±åºŠå€ãååŸããŸããããã¯ãfloatåã®ååã®ç²ŸåºŠãæ¢ã«ã«ããŒããå°ããªzã«éåžžã«é«ã粟床ãæäŸããŸãã éé[50.0ã100.0]ããã®zå€ã¯ãfloatåã®äœ¿çšå¯èœãªç²ŸåºŠã®2ïŒ ã ãã§æäŸãããŸãããããã¯ãŸãã«å¿ èŠãªãã®ã§ãã ãã®ãããå°åœ±è¡åã®ãã©ã¡ãŒã¿ãŒzNearãšzFarãèæ ®ããããšãå«ããæ°ããäŸåé¢ä¿ïŒ
ãã®è¡šçŸãå ·äœçã«äœãæå³ããã®ãããããªããŠãå¿é ããªãã§ãã ããã äž»ãªããšã¯ã深床ãããã¡ã«æ ŒçŽãããŠããå€ãã¹ã¯ãªãŒã³ç©ºéã§éç·åœ¢ã§ããããšãèŠããŠããããšã§ãïŒãã¥ãŒç©ºéã§ã¯ãå°åœ±è¡åãé©çšããåã¯ç·åœ¢ã§ãïŒã ãããã¡ãŒã®å€0.5ã¯ããªããžã§ã¯ããå¯èŠæ§ã®ãã©ãããã®çãäžã«ããããšãæå³ãããã®ã§ã¯ãããŸããã å®éããã®æ·±åºŠã察å¿ãããã€ã³ãã¯ããã¢ã¯ãªããã³ã°ãã¬ãŒã³ã«ããªãè¿ãã§ãã 以äžã®ã°ã©ãã¯ãzæåã®åæå€ã«å¯Ÿããéç·åœ¢æ·±åºŠå€ã®äŸåé¢ä¿ã瀺ããŠããŸãã
ã芧ã®ãšãããå ¥åå€zãå°ãããšæ·±åºŠå€ã倧ããç°ãªããããã¯ãªããã³ã°ãã¬ãŒã³ã«è¿ãé åã®ç²ŸåºŠãåäžããŸãã ïŒèŠ³æž¬è ã®èŠç¹ããã®ïŒzå€ã®å€æã®åŒã¯ãå°åœ±è¡åã®æ§é ã«åã蟌ãŸããŸãã ãããã£ãŠãé ç¹ã®åº§æšããã¥ãŒç©ºéããã¯ãªãã空éã«å€æããŠããã¹ã¯ãªãŒã³ç©ºéã«å€æãããšããzå€ã®éç·åœ¢å€æã䜿çšããŸãã æ圱è¡åã®ã¡ã«ããºã ã詳现ã«ç解ãããå Žåã¯ããã®çŽ æŽãããèšäºããå§ãããŸã ã
深床ãããã¡ãèŠèŠåããããšãããšãéç·åœ¢æ§ã®åœ±é¿ã«æ°ä»ãããããªããŸãã
深床ãããã¡å€ã®èŠèŠçè¡šçŸã
ãã®ãããé ç¹ã·ã§ãŒããŒã§ã¯ãçµã¿èŸŒã¿å€æ°gl_FragCoordã®zã³ã³ããŒãã³ããä»ããŠãã©ã°ã¡ã³ã深床å€ã䜿çšã§ããŸãã ãã®å€ãè²ã®å€ãšããŠåºåãããšãçŸåšã®æ·±åºŠãããã¡ãŒã®å 容ãèŠèŠåã§ããŸãã
void main() { FragColor = vec4(vec3(gl_FragCoord.z), 1.0); }
ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããããšãããšãã»ãšãã©ã®å Žåããã¹ãŠãçœã§ãã£ã±ãã«ãªãããã¹ãŠã®ãªããžã§ã¯ãã®æ·±ãã1.0ïŒå¯èœãªæ倧å€ïŒã§ãããšããå°è±¡ãäžããŸãã æ·±ãããŒãã«è¿ã¥ãæãé åã衚瀺ãããªãã®ã¯ãªãã§ããïŒ
åã®ã»ã¯ã·ã§ã³ãããç»é¢ã¹ããŒã¹ã§ã¯æ·±åºŠãããã¡ãŒã®å€ãéç·åœ¢ã§ãããã€ãŸã zãå°ããå Žåã¯ç²ŸåºŠãé«ããzã倧ããå Žåã¯å°ãããªããŸãã ã»ãšãã©ãã¹ãŠã®é ç¹ã1.0ã«è¿ã深床ã«ãã°ããå°éããããã深床å€ã¯ã·ãŒã³å ã®è·é¢ãšãšãã«éåžžã«æ¥éã«å¢å ããŸãã ãªããžã§ã¯ãã®1ã€ã«æ³šææ·±ãè¿ã¥ããšãæçµçã«ã¯ãzã®å€ãæžå°ããããšã§ãè¿ãéšåãæããªãã®ãåºå¥ã§ããŸãã
ããã§ã¯ã深床å€ã®éç·åœ¢æ§ãã¯ã£ãããšèŠããŸãã è¿ãã®ãªããžã§ã¯ãã§ã¯ãæ·±ãã®å€ã¯é ãã®ãªããžã§ã¯ããããã¯ããã«éãå€åããŸãã ã«ã¡ã©ã®ããããªåãã«ãããè²ãã»ãŒé»ããçã£çœã«å€ãããŸãã
ãã ãããã©ã°ã¡ã³ã深床ã®éç·åœ¢å€ãç·åœ¢ååžå€ã«å€æããæ©äŒããããŸãã ãããè¡ãã«ã¯ãæ圱ããã»ã¹ãæåéãéã«ããå¿ èŠããããŸãããæ·±ãã®å€ã«ã€ããŠã®ã¿ã§ãã æåã®ã¹ãããã¯ãæ·±ãã®å€ããå€ã®éé[0.0ã1.0]ãããã¯ãªããã³ã°ç©ºéã®æ£èŠåããã€ã¹åº§æšïŒ NDCãæ£èŠåããã€ã¹åº§æš ïŒã«å¯Ÿå¿ããéé[-1.0ã1.0]ã«å€æãçŽãããšã§ãã 次ã«ãéç·åœ¢åŒïŒ2ïŒã®éåŒãå°åºããååŸãã深床å€ã«é©çšããŸãã çµæã¯ç·åœ¢ã®æ·±ãå€ã§ãã ç§ãã¡ã®èœåã¯éåžžã«é«ããšæããŸããïŒ
ãããã£ãŠããŸãæåã«ã深床å€ãNDCã«å€æããŸãã
float z = depth * 2.0 - 1.0;
次ã«ãéé¢ä¿ïŒ2ïŒã䜿çšããŠãååŸããzã®å€ãç·åœ¢ã®å€ã«å€æããŸãã
float linearDepth = (2.0 * zNear * zFar) / (zFar + zNear - z * (zFar - zNear));
ãã®åŒã¯ã深床å€ã®éç·åœ¢å€æã®ããã«åŒïŒ2ïŒã䜿çšããŠå°åœ±è¡åã«å¯ŸããŠååŸãããããããåºé[zNearãzFar]ã«å¶éããããšãæãåºããŸãã åã³ãå°åœ±è¡åã®å éšæ§é ã®æ°åŠç詳现ã«æºã¡ãèšäºãžã®ãªã³ã¯ãæäŸããŸãã äžèšã®è¡šçŸãç±æ¥ããèšäºãããç解ã§ããŸãã
ç»é¢ç©ºéã§éç·åœ¢æ·±åºŠãç·åœ¢å€ã«å€æãããã©ã°ã¡ã³ãã·ã§ãŒããŒã®å šæïŒ
#version 330 core out vec4 FragColor; float zNear = 0.1; float zFar = 100.0; float LinearizeDepth(float depth) { // NDC float z = depth * 2.0 - 1.0; return (2.0 * zNear * zFar) / (zFar + zNear - z * (zFar - zNear)); } void main() { // zFar float depth = LinearizeDepth(gl_FragCoord.z) / zFar; FragColor = vec4(vec3(depth), 1.0); }
ç·åœ¢åããã深床ã¯zNearå¢çãšzFarå¢çã®éã«ãããããã»ãšãã©ã®å€ã¯1.0ãã倧ãããªããçŽç²ãªçœã§è¡šç€ºãããŸãã ã¡ã€ã³é¢æ°ã³ãŒãã§ç·åœ¢æ·±åºŠå€ãzFarã§é€ç®ããŠããããã[ââ0.0ã1.0]ã®ééã«ããŸãã ããã«ãããæ圱ãã©ãããã®é æ¹é¢ã«è¿ã¥ããšãã·ãŒã³ãªããžã§ã¯ãã®æããã®æ»ãããªå¢å ã芳å¯ã§ããŸãã
ä»åã¢ããªã±ãŒã·ã§ã³ãèµ·åããããšã«ãããè·é¢ã«ããæ·±ãã®å€åã®ç·åœ¢æ§ãæ€èšŒã§ããŸãã ã·ãŒã³ãããŸãããå€åã芳å¯ããŠã¿ãŠãã ããã
深床å€ã¯zNear = 0.1ããzFar = 100.0ãŸã§çŽç·çã«å€åãããããã·ãŒã³ã¯ã»ãŒå®å šã«é»ã§å¡ãã€ã¶ãããŸãããã®å Žåãããã¯ããªãé ãã«ãããŸãã ãããŠãæ圱ãã©ãããã®ãã¢ãã¬ãŒã³ã«è¿ãããã深床ãšããã«å¿ããèŒåºŠå€ã¯éåžžã«å°ãããªããŸãã
éããã粟床ã®ãããã¡æ·±åºŠã¢ãŒãã£ãã¡ã¯ã
2ã€ã®å¹³é¢ãŸãã¯2ã€ã®äžè§åœ¢ãéåžžã«æ¥è¿ããŠéãªãåã£ãŠããããã深床ãããã¡ã®ç²ŸåºŠããããã®ãªããžã§ã¯ãã®é åºãæ確ã«è§£æ±ºããã«ã¯äžååã§ããå Žåãããªãäžè¬çãªèŠèŠã¢ãŒãã£ãã¡ã¯ãã衚瀺ãããŸãã ãã®ãããŸããã®çµæãšããŠããããã®ãªããžã§ã¯ãã®æçã¯åžžã«é 眮ãå€æŽããèŠèŠçãªãã€ãºãšãã¿ãŒã³ãäœæããŠããããã«èŠããŸãã ãã®çŸè±¡ã¯zãã¡ã€ãã£ã³ã°ãšåŒã°ããŸããããã¯ã衚瀺ãããŠããæ°åãä»ã®æ°åãšéè€ããå¯èœæ§ãæ±ããŠæŠã£ãŠããããã«èŠããããã§ãã
䜿çšãããã·ãŒã³ã§ã¯ãZãã¡ã€ãã£ã³ã°ãé¡èã§ããååãªå ŽæããããŸããã³ã³ããã¯ç¹å¥ã«åºãšåãé«ãã«é 眮ãããã³ã³ãããšã³ã³ããã®åºé¢ãåãå¹³é¢ã«ããããšãä¿èšŒããŸãã ãŸããããã¯ãæ·±ãã®å€ãäž¡æ¹ã®ãã¬ãŒã³ã§çããããšãæå³ããŸããããã«ãããæ·±ããããã¡ãŒã䜿çšããŠãããã®ãã¬ãŒã³ã®ã·ãŒã±ã³ã¹ãé åºä»ããããšãã§ããªããªããŸãã
ã«ã¡ã©ãããããã®ã³ã³ããã«å ¥ãããšãå¹æããã¹ãŠã®æ å ã«çŸããŸãã ããã¢ãã¬ãŒã³ã®ç ŽçãåŒãåºãã®åºã絶ããããæããè¿·æãªç Žãããã¿ãŒã³ãäœæããæ§åãèŠãããšãã§ããŸãïŒZãã¡ã€ãã£ã³ã°ã¯æ·±åºŠãããã¡ãŒã䜿çšããå Žåã«äžè¬çãªåé¡ã§ãããé ãã®ãªããžã§ã¯ãã§ã¯äžè¬çã«ç®ç«ã¡ãŸãïŒãããã¡ãŒã®ç²ŸåºŠãé ããªããšäœäžããããïŒã ãã®çŸè±¡ãå®å šã«åé¿ããããšã¯ã§ããŸããããéçºè ã®æŠåšã«ã¯ãç¹å®ã®ã·ãŒã³ã§Zãã¡ã€ãã£ã³ã°ãæžããããå®å šã«åãé€ãããã€ãã®ã¢ãããŒãããããŸãã
察åŠæ¹æ³
æåã®ããããŠããããæãéèŠãªãã³ãã¯ã ãªããžã§ã¯ããäºãã«è¿ã¥ããããŠãäžè§åœ¢ãéããå±éºãåããªãããšã§ãã ãŠãŒã¶ãŒã«ç®ç«ããªãããã«å°ããªãªããžã§ã¯ããè¿œå ããããšã«ããããªããžã§ã¯ãéã®ãªãã»ããã«ããzãã¡ã€ãã£ã³ã°ããã®èªç±ã確ä¿ãããŸãã é£è¡æ©ãšã³ã³ããã®å Žåãã³ã³ãããæ£ã®è»žYã®æ¹åã«ç§»åããã ãã§ååã§ããååã«å°ããå€äœã¯æç¥ã§ããŸããããã¢ãŒãã£ãã¡ã¯ããåãé€ãã«ã¯ååã§ãã ãã ãããã®æ¹æ³ã§ã¯ãã·ãŒã³ãæåã§ä¿®æ£ããã·ãŒã³ã«zãã¡ã€ãã£ã³ã°ã®å åããªãããšã確èªããããã®å³å¯ãªãã¹ããå¿ èŠã§ãã
å¥ã®ã¢ãããŒãã¯ãå¯èœãªéãè¿ãã¯ãªããã³ã°ãã¬ãŒã³ãèšå®ããããšã§ãã äžèšã®ããã«ãzNearå¹³é¢ã®è¿ãã§ããªãã®ç²ŸåºŠãæäŸãããŸãã ãããã£ãŠã芳枬è ããè¿ãå¹³é¢ã移åãããšãèŠçã®ãã©ãããã®ããªã¥ãŒã å šäœã®ç²ŸåºŠãåäžããŸãã ãã ãããã¢ãã¬ãŒã³ã®é床ã®å€äœã¯ãè¿åã®ãªããžã§ã¯ãã®é¡èãªåãæšãŠã«ã€ãªããå¯èœæ§ãããããšãèŠããŠãã䟡å€ããããŸãã ãããã£ãŠããã®ã¢ãããŒãã§ã¯ãzNearå€ãæ£åžžã«éžæããããã«ãäžå®éã®ãµã³ãã«ãšé©åãå¿ èŠã§ãã
3çªç®ã®æ¹æ³ã¯ããã粟床ã®é«ã深床ãããã¡ãŒåœ¢åŒã䜿çšããããšãåã«ææ¡ãããããããã©ãŒãã³ã¹ã®äžéšãæ¯æãå¿ èŠããããŸãã ã»ãšãã©ã®å Žåã24ãããã®ç²ŸåºŠã®ãããã¡ãŒã䜿çšãããŸãããææ°ã®ãããªã«ãŒãã§ã¯æ·±åºŠãããã¡ãŒã«32ãããã®ç²ŸåºŠã䜿çšã§ããŸãã 粟床ãäžãããšZãã¡ã€ãã£ã³ã°ã®å¹æãæžããŸãããã¹ããŒããç ç²ã«ãªããŸãã
Zãã¡ã€ãã£ã³ã°ãåãé€ãããã®ããã3ã€ã®ææ³ã¯ãæãäžè¬çã§å®è£ ãç°¡åã§ãã ããæéããããä»ã®æ¹æ³ããããŸãããããã§ãåé¡ã®å®å šãªè§£æ±ºãä¿èšŒãããã®ã§ã¯ãããŸããã å®éãzãã¡ã€ãã£ã³ã°ã¯å žåçãªåé¡ã§ãããäžèšã®ææ³ãæ éã«äœ¿çšããã°ããã®ã¢ãŒãã£ãã¡ã¯ãã®å åã«ãŸã£ãã察åŠããå¿ èŠã¯ãªãã§ãããã
PS ïŒå ã®èšäºã®ã³ã¡ã³ããŒã¿ãŒã®1人ããzãã¡ã€ãã£ã³ã°ã100ïŒ æé€ãã2ã€ã®æ¹æ³ã«ã€ããŠã®ãã³ããæäŸããŠããŸãã ãããŠãSGIX_reference_plainæ¡åŒµã䜿çšããŸãã