é«åºŠãªããã°ã©ãã³ã°èšèªã®1ã€ã§éçºããçµéšããããã³ã³ãã¥ãŒã¿ãŒãµã€ãšã³ã¹ã®ããŸããŸãªåéã®ã¿ã¹ã¯ã«èå³ããããããå¥ã®ããŒã«ã§ããCããã°ã©ãã³ã°èšèªãç¿åŸããæ©äŒãããããèŠã€ãããŸããã ãã®ãããã¬ã€ãã¬ãŒã·ã³ã°ã¬ã³ããªã³ã°ããŒãããå®è£
ããããšã«ããŸããïŒåŠæ ¡æä»£ããã³ã³ãã¥ãŒã¿ãŒã°ã©ãã£ãã¯ã¹ã奜ãã ã£ãããïŒã
ãã®èšäºã§ã¯ãç§èªèº«ã®ã¢ãããŒããšçµæãå
±æããããšæããŸãã

ã¬ã€ãã¬ãŒã·ã³ã°ã«é¢ããããã€ãã®èšè
ã«ã¡ã©ãæã£ãŠãããšæ³åããŠãã ããïŒç°¡åã«ããããã«ãã«ã¡ã©ã¯éèŠãªãã€ã³ãã§ãããšä»®å®ããŸãïŒã ãŸãããã¯ã»ã«ã®ã»ããã§ãããã¶ã€ã³ãã¬ãŒã³ããããŸãã æ¬¡ã«ãã«ã¡ã©ãããæåœ±é¢ã®åãã¯ã»ã«ã«ãã¯ãã«ïŒ
ãã©ã€ããªå
ç· ïŒãæç»ãã
å
ç·ããšã«ã亀差ããæãè¿ãã·ãŒã³ãªããžã§ã¯ããèŠã€ããŸãã 亀ç¹ã«å¯Ÿå¿ããè²ã䜿çšããŠããã¶ã€ã³ãã¬ãŒã³äžã®å¯Ÿå¿ãããã¯ã»ã«ãå¡ãã€ã¶ãããšãã§ããŸãã ãã¶ã€ã³ãã¬ãŒã³ã®ãã¹ãŠã®ãã€ã³ãã«å¯ŸããŠãã®æé ãç¹°ãè¿ããšã3次å
ã·ãŒã³ã®ç»åãåŸãããŸãã ãããã®æäœã®ã¿ã«å¶éããå Žåãçµæã®ã¢ã«ãŽãªãºã ã¯
ã¬ã€ãã£ã¹ãã£ã³ã°ãšåŒã°ããŸãã
ååž°çã¬ã€ãã£ã¹ãã£ã³ã°==ã¬ã€ãã¬ãŒã·ã³ã°
- ãã©ã€ããªã¬ã€ãšã·ãŒã³ãªããžã§ã¯ãã®äº€ç¹ãããã»ã«ã³ããªã¬ã€ãæŸãããšãã§ããŸãâå
æºã«åããããŸãã ã·ãŒã³å
ã®ãªããžã§ã¯ããšäº€å·®ããå Žåããªããžã§ã¯ãã®ç¹å®ã®ãã€ã³ãã¯åœ±ã«ãªããŸãã ãã®ãã¯ããã¯ã«ããã 幟äœåŠçã«æ£ãã圱ãåŸãããšãã§ããŸãã
- ãªããžã§ã¯ãã«é¡é¢ãããå Žåã幟äœå
åŠã®æ³åã«åŸã£ãŠãåå°å
ç·ãèšç®ãããã®ã«ãŒãã£ã³ã°æé ãïŒååž°çã«ïŒéå§ã§ããŸãã æ¬¡ã«ãé¡é¢åå°ããåŸãããè²ãšè¡šé¢ã®åºæã®è²ãæ··ããŸãã ãã®ææ³ã«ããã ãã©ãŒãµãŒãã§ã¹ãã·ãã¥ã¬ãŒãã§ããŸãïŒåæ§ã«ã éæãªãµãŒãã§ã¹ãã·ãã¥ã¬ãŒãã§ããŸã ïŒã
- ã«ã¡ã©ããããŒã ãšã·ãŒã³ãªããžã§ã¯ããšã®äº€ç¹ãŸã§ã®è·é¢ãèšç®ã§ããŸãã è·é¢ã®å€ã䜿çšããŠãã©ã°ãã¢ããªã³ã°ã§ããŸãããªããžã§ã¯ããã«ã¡ã©ããé ãã»ã©ãè²ã®åŒ·åºŠãäœããªããŸãïŒèšç®ã§ã¯ãåŒ·åºŠãæžå°ãããææ°é¢æ°ãªã©ã䜿çšã§ããŸãïŒã

äžèšã®ææ³ãçµã¿åãããããšã§ãéåžžã«ãªã¢ã«ãªç»åãååŸã§ããŸãã ãŸããã¢ã«ãŽãªãºã ã®æ¬¡ã®æ©èœã«ã泚ç®ããŸãã
- åãã¯ã»ã«ã®è²ã¯ãä»ã®ãã¯ã»ã«ãšã¯ç¬ç«ããŠèšç®ã§ããŸãïŒã«ã¡ã©ããæŸåºãããå
ç·ã¯äºãã«åœ±é¿ãäžããªãããã䞊è¡ããŠåŠçã§ããããïŒ
- ã¢ã«ãŽãªãºã ã«ã¯ããªããžã§ã¯ãã®ãžãªã¡ããªã«å¯Ÿããå¶éãå«ãŸããŠããŸããïŒãã¬ãŒã³ãçãåæ±ãªã©ã®è±å¯ãªããªããã£ãã»ããã䜿çšã§ããŸãïŒã
ã¬ã³ããªã³ã°ã¢ãŒããã¯ãã£
ãã¹ãŠã®ãªããžã§ã¯ãã¯ããŒãã«æ ŒçŽãããŸãã ã¬ã³ããªã³ã°ã¯ã3Dãªããžã§ã¯ããžã®ãã€ã³ã¿ãŒã®é
åã§åäœããŸãïŒå®éããã¹ãŠã®ãªããžã§ã¯ãã¯ãŸã kdããªãŒã«ããã±ãŒãžåãããŠããŸãããçŸæç¹ã§ã¯ãããªãŒãååšããªããšæ³å®ããŠããŸãïŒã çŸæç¹ã§ã¯ãäžè§åœ¢ãšçã®2çš®é¡ã®ããªããã£ãããããŸãã
ããŸããŸãªããªããã£ãã§åäœããããã«ã¬ã³ããŒãæããæ¹æ³ã¯ïŒ
ã¬ã€ãã¬ãŒã·ã³ã°ã¢ã«ãŽãªãºã ã¯ãªããžã§ã¯ãã®ãžãªã¡ããªã«äŸåããŸããããªããžã§ã¯ãã®æ§é ã¯ã¬ã³ãã©ãŒã«ãšã£ãŠéèŠã§ã¯ãããŸãããå®éã«ã¯ãå³åœ¢ãšå
ç·ã®äº€ç¹ãèšç®ããããã«å¿
èŠãªã®ã¯é¢æ°ã®ã¿ã§ãã
OOPã®èгç¹ã§ã¯ãããã¯
ã€ã³ã¿ãŒãã§ã€ã¹ã®æŠå¿µã䜿çšããŠå®è£
ã§ã
ãŸã ãåãªããžã§ã¯ãã¯å¯Ÿå¿ããã¡ãœããã®å®è£
ãæäŸããããŸããŸãªããªããã£ããçµ±äžçãªæ¹æ³ã§åŠçã§ããŸãã
Cããã°ã©ãã³ã°èšèªã«ã¯ãOOPãã©ãã€ã ã§ããã°ã©ãã³ã°ããããã®æ§ææ§é ã¯ãããŸãã
ãããã®å Žåãæ§é ãšé¢æ°ãã€ã³ã¿ãŒãå©ãã«ãªããŸãã
ã¬ã³ããªã³ã°ã¯ã3Dãªããžã§ã¯ãã®å®éã®ãã©ã¡ãŒã¿ãŒãæ ŒçŽãããŠããããŒã¿é åãžã®ãã€ã³ã¿ãŒãšããã®ããŒã¿é åãæ£ããåŠçã§ãã颿°ãžã®ãã€ã³ã¿ãŒãå«ãäžè¬åãããæ§é ïŒObject3dïŒã§åäœããŸãã
ã¬ã³ããªã³ã°ãœãŒã¹ããã®Object3dæ§é ã®èª¬æ 
ãã®ã¢ãããŒãã«ãããå3Dããªããã£ãã«é¢é£ããã³ãŒããåå¥ã®ãã¡ã€ã«ã«ããŒã«ã©ã€ãºã§ããŸãã ãããã£ãŠã3Dãªããžã§ã¯ãã®æ§é ã倿ŽããïŒããšãã°ããã¯ã¹ãã£ãæ³ç·ãããã®ãµããŒãã远å ããïŒããšããæ°ãã3Dããªããã£ãã远å ããããšãéåžžã«ç°¡åã§ãã ãã®å Žå-ã¬ã³ããªã³ã°ã³ãŒãã倿Žããå¿
èŠã¯ãããŸããã
ã«ãã»ã«åã®ãããªãã®ã«ãªããŸããã
äŸïŒã¬ã³ããªã³ã°ãœãŒã¹ããã®çäœã³ãŒã å®è£
ã«é¢ä¿ãªããããŸããŸãªããªããã£ããæäœããæ¹æ³ã®äŸ void example(void) { Object3d * objects[2];
æ£çŸ©ã®ããã«ããã®ãããªã¢ãŒããã¯ãã£ã¯ãã€ã³ã¿ãšã®å€ãã®ãžã£ã°ãªã³ã°ã䌎ãããšã«æ³šæãã䟡å€ããããŸãã
ã¬ã³ããªã³ã°é床
ãã¹ãã®äŸãšããŠãã·ã§ã«ãã³ã¹ããŒãã©ããããã©ã¯ã¿ã«ãé¡çããã¯ã¹ãã£ã¹ã¿ã³ãã§ã·ãŒã³ãèŠèŠåããããšã«ããŸããã ã·ã§ã«ãã³ã¹ããŒã®ãã©ãããã¯ãã¬ã³ããªã³ã°é床ã®ãã¹ãã«éåžžã«äŸ¿å©ã§ãã ç°ãªãã¬ãã«ã®ååž°ãèšå®ããããšã«ãããç°ãªãæ°ã®äžè§åœ¢ãçæã§ããŸãã

åœåãã¬ã³ããªã³ã°é床ã¯1000ããªãŽã³æªæºã®ã·ãŒã³ã§ã®ã¿æºè¶³ã®ãããã®ã§ããã 4ã³ã¢ããã»ããµã䜿çšããŠããããã䞊ååã«ããã¬ã³ããªã³ã°ã®é«éåãæ±ºå®ãããŸããã
POSIXã¹ã¬ãã
第äžå°è±¡ïŒJavaã¹ã¬ããã®ã»ãã³ãã£ã¯ã¹ã¯pthreadã«éåžžã«è¿ãã§ãã ãããã£ãŠãPOSIXã¹ã¬ããã¢ãã«ã®çè§£ã«ç¹å¥ãªåé¡ã¯ãããŸããã§ããã ã¹ã¬ããããŒã«ããã¡ã€ã«ããããšã決å®ãããŸãã:-)
ã¹ã¬ããããŒã«ã«ã¯ã¿ã¹ã¯ã®ãã¥ãŒãå«ãŸããŠããŸããã åã¿ã¹ã¯ã¯ãå®è¡ããã颿°ãžã®ãªã³ã¯ãšåŒæ°ã®ãªã¹ããžã®ãªã³ã¯ãå«ãæ§é äœã§ããã ã¿ã¹ã¯ãã¥ãŒãžã®ã¢ã¯ã»ã¹ã¯ããã¥ãŒããã¯ã¹ãšæ¡ä»¶å€æ°ã«ãã£ãŠèŠå¶ãããŠããŸããã 䟿å®äžãã¬ã³ããªã³ã°å
šäœãå¥ã®é¢æ°ã«ã«ãã»ã«åãããŸããåŒæ°ã®1ã€ã¯ã¹ã¬ããã®æ°ã§ãïŒ
ã«ãã»ã«å颿°ã·ã°ããã£ã®ã¬ã³ããªã³ã° void render_scene(const Scene * const scene, const Camera * const camera, Canvas * canvas, const int num_threads);
ãã®é¢æ°ã«ã¯ãã¬ã³ããªã³ã°ãµã€ã¯ã«ãšã¹ã¬ããããŒã«ãæ¥ç¶ããã³ãŒããå«ãŸããŠããŸããã
- ãã£ã³ãã¹ãããã€ãã®éšåã«åå²ããŸã
- ãã£ã³ãã¹ã®åéšåã«å¯ŸããŠãã¬ã³ããªã³ã°ã®ããã®åå¥ã®ã¿ã¹ã¯ã圢æããŸã
- ãã¹ãŠã®ã¿ã¹ã¯ãããŒã«ã«éä¿¡ããå®äºãåŸ
ã€
ããããæ®å¿µãªããã2ã³ã¢ã®ã©ãããããã§ã¯ãã¬ã³ããªã³ã°ã宿çã«ã¯ã©ãã·ã¥ããããAbort trap 6ãšã©ãŒã§ã¯ã©ãã·ã¥ããŸããïŒ4ã³ã¢ã®ã©ãããããã§ã¯æ±ºããŠèµ·ãããŸããã§ããïŒã ãã®æ²ãããã°ãä¿®æ£ããããšããŸããããããã«ãã£ãšé
åçãªè§£æ±ºçãèŠã€ããŸããã
Openmp
OpenMPã¯ãã¿ã¹ã¯ã®äœæãšé
åžãåŠçããã¬ã³ããªã³ã°ã®å®äºãåŸ
æ©ããéå£ãç·šæããŸãã ã·ã³ã°ã«ã¹ã¬ããã®ã³ãŒãã䞊ååãããã£ã¬ã¯ãã£ããããã€ã远å ããã ãã§ååã§ãããããªã³ã°ã®ãã°ã¯ãªããªããŸãã:-)
ãœãŒã¹ã¬ã³ããªã³ã°æ©èœ void render_scene(const Scene * const scene, const Camera * const camera, Canvas * canvas, const int num_threads) { const int width = canvas->width; const int height = canvas->height; const Float focus = camera->focus;
ã¬ã³ããªã³ã°ã¯å°ãå éããŸããããæ®å¿µãªããã1000ãè¶
ããããªããã£ããå«ãã·ãŒã³ã¯äŸç¶ãšããŠéåžžã«ãã£ãããšã¬ã³ããªã³ã°ãããŠããŸããã
å
ç·ãšããªããã£ãã®äº€å·®ã®èª€èšç®ã¯ãæ¯èŒçãªãœãŒã¹ãæ¶è²»ããæé ã§ãã åé¡ã¯ãã·ãŒã³ã®
ãã¹ãŠã®ããªããã£ããšã®åå
ç·ã®äº€å·®ç¹ããã§ãã¯ãããããšã§ãïŒå
ç·ã亀差ããæãè¿ãããªããã£ããæ€çŽ¢ãããŸãïŒã å
ç·ãæ£ç¢ºã«äº€å·®ããªããªããžã§ã¯ããäœããã®æ¹æ³ã§é€å€ããããšã¯å¯èœã§ããïŒ
KdããªãŒ
ãªããžã§ã¯ãã®ããã·ãŒã³ããå·Šããšãå³ãã®2ã€ã®éšåã«åå²ããŸãããïŒããããLãšRãšããŠç€ºããŸãïŒã

ã·ãŒã³ã座æšè»žã«å¹³è¡ãªéšåã«åå²ãããããã¬ã€ã亀差ããã·ãŒã³ã®éšåãæ¯èŒçè¿
éã«èšç®ã§ããŸãã æ¬¡ã®ãªãã·ã§ã³ãå¯èœã§ãã
- ããŒã ã¯ã·ãŒã³Lã®äžéšã®ã¿ãééããŸã
ããŒãRã«å«ãŸãããªããžã§ã¯ãã¯è¡šç€ºã§ããŸãã
ïŒåçã®ããŒã 1ïŒ
- ããŒã ã¯ã·ãŒã³Rã®äžéšã®ã¿ã暪åã
ããŒãLã«å«ãŸãããªããžã§ã¯ãã¯è¡šç€ºã§ããŸãã
ïŒåçã®ããŒã 3ïŒ
- ããŒã ã¯æåã«ã·ãŒã³Lã®äžéšãééããæ¬¡ã«ã·ãŒã³Rã®äžéšãééããŸã
ãŸããã·ãŒã³Lã®äžéšã«å±ãããªããžã§ã¯ãã調ã¹ãŸãã亀差ç¹ãèŠã€ãã£ãå Žåãã·ãŒã³Rã®äžéšã«å±ãããªããžã§ã¯ãã¯è¡šç€ºã§ããŸããã ã¬ã€ãããŒãLã®ãªããžã§ã¯ããšäº€å·®ããªãå ŽåãããŒãRã®ãªããžã§ã¯ãã衚瀺ããå¿
èŠããããŸã
ïŒåçã®ããŒã 2ïŒ
- å
ç·ã¯æåã«ã·ãŒã³Rã®äžéšãééããæ¬¡ã«ã·ãŒã³Lã®äžéšãééããŸã
åããŒãžã§ã³ãšåãäº€å·®ç¹æ€çŽ¢ããžãã¯ïŒæåã«ã·ãŒã³Rã®äžéšãæ€èšããå Žåã®ã¿ïŒ
ãã ãããŸã£ããåãæ¹æ³ã§ã衚瀺ãããããªãŽã³ã®æ°ãæžããããã«ãã·ãŒã³ãååž°çã«å°ããªã»ã¯ã·ã§ã³ã«åå²ãç¶ããããšãã§ããŸãã ã·ãŒã³ã»ã°ã¡ã³ããå«ã¿ãããªããã£ããã¢ã¿ãããããçµæã®éå±€æ§é ã¯ã
kdããªãŒãšåŒã°ã
ãŸã ã
ããšãã°ã
ããŒã 2ããã¬ãŒã¹ããããã»ã¹ãèŠãŠã¿ãŸãããã

- å
ç·ã¯æåã«ã·ãŒã³ã®å·Šã»ã°ã¡ã³ãïŒLïŒãééããæ¬¡ã«å³-R
- ããŒãLãã-å
ç·ã¯LLã»ã°ã¡ã³ãã®ã¿ãééããŸã
- LLã»ã°ã¡ã³ãã«ã¯ãªããžã§ã¯ããå«ãŸããŠããŸãã
- ã·ãŒã³ã®å³ååã«ç§»å-R
- ã·ãŒã³ã®å³ååã§ã¯ãããŒã ã¯æåã«RLã»ã°ã¡ã³ããééããæ¬¡ã«RRã»ã°ã¡ã³ããééããŸã
- RLã·ãŒã³ã®äžéšã§ãããŒã ãšãªããžã§ã¯ãã®äº€å·®ç¹ãèŠã€ãããŸãã
- ãã¬ãŒã¹å®äº
ããªãŒã®ãããªããŒã¿æ§é ã®ç·šæã«ãããããŒã ãšæããã«äº€å·®ããªããªããžã§ã¯ããé€å€ããŸããã ãããããŸã éåžžã«éèŠãªãã¥ã¢ã³ã¹ããããŸã-kdããªãŒã®æå¹æ§ã¯ãã·ãŒã³ãã©ã®ããã«ããŒãã«åå²ãããã«äŸåããŸãã ã·ãŒã³ãåå²ããå Žæãéžæããæ¹æ³ã¯ïŒ
衚é¢ç©ãã¥ãŒãªã¹ãã£ãã¯
ã¬ã€ãã·ãŒã³ã®ã»ã°ã¡ã³ãã«å
¥ã確çã¯ããã®ã»ã°ã¡ã³ãã®é¢ç©ã«æ¯äŸããŸãã ã·ãŒã³ã®ã»ã¯ã·ã§ã³ã«å«ãŸããããªããã£ããå€ãã»ã©ãã¬ã€ããã®ã»ã°ã¡ã³ãã«å°éãããšãã«ãããå€ãã®äº€å·®ç¹ãèšç®ããå¿
èŠããããŸãã ãããã£ãŠãåå²ã®åºæºãå®åŒåã§ããŸããããªããã£ãã®æ°ãšãããããå«ãŸããã»ã°ã¡ã³ãã®é¢ç©ã®ç©ãæå°åããå¿
èŠããããŸãã ãã®åºæºã¯ã
衚é¢ç©ãã¥ãŒãªã¹ãã£ã㯠ïŒSAHïŒãšåŒã°ããŸãã

ç°¡åãªäŸã䜿çšããŠãå®è¡äžã®ãã¥ãŒãªã¹ãã£ãã¯ãèŠãŠã¿ãŸãããã

ãããã£ãŠãSAHã䜿çšãããšã空ã®ã¹ããŒã¹ãš3Dãªããžã§ã¯ãã广çã«åé¢ã§ããŸããããã¯ãã¬ã³ããªã³ã°ããã©ãŒãã³ã¹ã«éåžžã«è¯ã圱é¿ãäžããŸãã
芳å¯
ã¬ã³ããªã³ã°ã§ã¯ãç»åã®1ãã¯ã»ã«ãããã®å¹³å亀差æ°ãèšç®ããæ©èœãå®è£
ãããŠããŸãïŒå
ç·ãšãªããžã§ã¯ãã®äº€å·®ãèšç®ããããã³ã«ãã«ãŠã³ã¿ãŒå€ãå¢å ããã¬ã³ããªã³ã°ã®çµäºæã«ãã«ãŠã³ã¿ãŒå€ãç»åã®ãã¯ã»ã«æ°ã§é€ç®ãããŸãã
åŸãããçµæã¯ã·ãŒã³ã«ãã£ãŠç°ãªããŸãïŒkdããªãŒã®æ§ç¯ã¯ããªããã£ãã®çžå¯Ÿäœçœ®ã«äŸåããããïŒã ã°ã©ãã¯ãããªããã£ãã®æ°ã«å¯Ÿããç»åã®1ãã¯ã»ã«ãããã®å¹³å亀差æ°ã®äŸåæ§ã瀺ããŠããŸãã

ãã®å€ã¯ãã·ãŒã³ã«å«ãŸããããªããã£ãã®æ°ãããã¯ããã«å°ãªãããšã«æ°ä»ãããšãã§ããŸãïŒkdããªãŒããªãå Žåãåã¬ã€ã«ã€ããŠNåãã¹ãŠã®ããªããã£ããšã®äº€å·®ç¹ãæ¢ãå¿
èŠããããããç·åœ¢äŸåæ§ããããŸãïŒã å®éãkdããªãŒã䜿çšããŠãã¬ã€ãã¬ãŒã·ã³ã°ã®ã¢ã«ãŽãªãºã ã®è€éããOïŒNïŒããOïŒlogïŒNïŒïŒã«æžãããŸããã
æ£çŸ©ã®ããã«ããã®ãœãªã¥ãŒã·ã§ã³ã®æ¬ ç¹ã®1ã€ã¯kdããªãŒã®æ§ç¯ã®ãªãœãŒã¹æ¶è²»ã§ããããšã«æ³šæãã䟡å€ããããŸãã ããããéçãªã·ãŒã³ã®å Žå-ããã¯éèŠã§ã¯ãããŸããïŒã·ãŒã³ãããŒãããããªãŒãæ§ç¯ãããã®ãåŸ
ã¡ãŸã-ãããŠãã·ãŒã³ã®åšããã«ã¡ã©ã§ç§»åã§ããŸã:-)
16386ã®äžè§åœ¢ãå«ãã·ãŒã³ïŒ
ã¢ãã«ãããŠã³ããŒããã
倿°ã®ããªããã£ããã¬ã³ããªã³ã°ããããšãåŠãã åŸã3Dã¢ãã«ãããŒãããããšãæãŸããŸããã ããªãã·ã³ãã«ã§åºç¯å²ã®åœ¢åŒãéžæãããŸãã
-OBJ ïŒã¢ãã«ã¯ãé ç¹ã®ãªã¹ããšããªãŽã³ã®ãªã¹ããå«ãããã¹ããã¡ã€ã«ã«æ ŒçŽãããŸãïŒåããªãŽã³ã¯ãé ç¹ã®ãªã¹ãã®ãã€ã³ãã«ãã£ãŠå®çŸ©ãããŸãïŒã
éåžžã«åçŽãªã¢ãã«ã®äŸïŒtetrahedron.objïŒåé¢äœ
ïŒé ç¹ïŒ
v 1.00 1.00 1.00
v 2.00 1.00 1.00
v 1.00 2.00 1.00
v 1.00 1.00 2.00
ïŒäžè§åœ¢ïŒ
f 1 3 2
f 1 4 3
f 1 2 4
f 2 3 4
OBJ圢åŒã®ããŒãµãŒãäœæããéçšã§ãå€ãã®ã¢ãã«ã«ã¯ããªãŽã³ã®åé ç¹ãžã®æ³ç·ã®ãªã¹ããå«ãŸããŠããããšãããããŸããã é ç¹ã®æ³ç·ãã¯ãã«ãè£éããŠãããªãŽã³ã®ä»»æã®ç¹ã§æ³ç·ãã¯ãã«ãååŸã§ããŸã-ãã®ææ³ã«ãããæ»ãããªè¡šé¢ãã·ãã¥ã¬ãŒãã§ããŸãïŒ
ãã©ã³ã·ã§ãŒãã£ã³ã°ãåç
§ïŒã ãã®æ©èœã¯ãçŸåšã®ã¬ã³ããŒã¢ãŒããã¯ãã£ã®ãã¬ãŒã ã¯ãŒã¯å
ã§éåžžã«ç°¡åã«å®è£
ã§ããŸããïŒTriangle3dæ§é ã«æ³ç·ãã¯ãã«ã远å ããããªãŽã³ã®ä»»æã®ãã€ã³ãã«å¯ŸããŠããããè£éãã颿°ãèšè¿°ããå¿
èŠããããŸããïŒã
ã¬ã³ããªã³ã°ãœãŒã¹ããã®Triangle3dæ§é çŽ19,000åã®ããªãŽã³ãå«ãã¬ã³ããªã³ã°ã·ãŒã³ã®äŸïŒ
çŽ22,000ã®ããªãŽã³ãå«ãã¬ã³ããªã³ã°ãããã·ãŒã³ã®äŸïŒ
楜ãã¿ã®ããã«ã
ã¹ã«ã€ããã¯ã¹ã远å ããŠè»ã®ã¢ãã«ãããŒãããããšã«ããŸããã
ã·ãŒã³ã«ã¯çŽ100,000åã®ããªãŽã³ãå«ãŸããŠããŸãïŒkdããªãŒã¯æ°åã§æ§ç¯ãããŸããïŒ ãããã«
Cã®åŠç¿äžã«ãã®ã¿ã¹ã¯ãéžæããããšã¯å¬ããã§ããèšèªã®ãšã³ã·ã¹ãã ã®ããŸããŸãªåŽé¢ãåŠã³ãçŸããçµæãåŸãããšãã§ããããã§ãã
Githubã¬ã³ããªã³ã°ãœãŒã¹ïŒ
github.com/lagodiuk/raytracing-render ïŒãããžã§ã¯ãã®èª¬æ-ãã¢ã®éå§æ¹æ³ïŒã
å匷ã®éçšã§ã2åã®æ¬ãç§ã倧ãã«å©ããŠãããŸããã
- ãã©ã€ã¢ã³ã»ã«ãŒãã¬ã³ãããã¹ã»ãªãããŒ-Cããã°ã©ãã³ã°èšèª -ã¯åœåããã®æ¬ãèªãã®ã«å€å°ã®å°é£ããããŸããã ããããHead First Cãèªãã åŸãç§ã¯åã³ãã®æ¬ã«æ»ããŸããã ãã®æ¬ã«ã¯ãç ç©¶ã«åœ¹ç«ã£ãå€ãã®äŸãšã¿ã¹ã¯ããããŸãã
- Dawn GriffithsãDawn Griffiths-Head First C -Cãšã³ã·ã¹ãã ã®äžè¬çãªããžã§ã³ïŒã¡ã¢ãªã®é
çœ®æ¹æ³ãOSã¬ãã«ã§ã®åäœãmakeãvalgrindãPOSIXã¹ããªãŒã ããŠããããã¹ããäžè¬çãªçšèªã§èª¬æãããŠããããïŒ ãArduinoã«ã€ããŠã¯æ°ããŒãžããããŸãïŒ
ãŸããCã®ãã¥ã¢ã³ã¹ã®ããã€ãã«ã€ããŠã®ã¢ããã€ã¹ãããã³ïŒGLUTã䜿çšããïŒã¬ã³ããªã³ã°çšã®èšè¿°ãããããã³ããšã³ãã«ã€ããŠããŠã£ã³ããŠã«ã·ãŒã³ã衚瀺ããããŒããŒãã䜿çšããŠã«ã¡ã©ãç§»åããã³å転ããã
dmytrishã«æè¬ããŸãã
ãŸããéåžžã«äŸ¿å©ãªãªãœãŒã¹ããå§ãããŸãïŒ
ray -
tracing.ru-ããã§ã¯ãã¢ã¯ã»ã¹å¯èœãªåœ¢åŒã§ããã©ããªã¢ãªã¹ãã£ãã¯ã¬ã³ããªã³ã°ã«äœ¿çšãããããŸããŸãªã¢ã«ãŽãªãºã ã䜿çšãããŸãïŒç¹ã«kdããªãŒãšSAHïŒã
PSã¬ã³ããªã³ã°ã®éçºäžã«äœæãããããã€ãã®ãããªïŒ
é§ã®äžã®ã·ã§ã«ãã³ã¹ããŒã®ãã©ããã
ãã¥ãŒããç·ãã©ã³ã¿ã³ããã£ãŒããããã·ã§ã«ãã³ã¹ããŒãã©ããã:-)
UPDïŒããªãŒã®æ§ç¯ãå éããããšã倿ããŸããã ã³ã¡ã³ãã¹ã¬ããã®è©³çްïŒ
habrahabr.ru/post/187720/#comment_6580722UPD 2ïŒãã®ã³ã¡ã³ãã¹ã¬ããã§è°è«ããåŸïŒ
habrahabr.ru/post/187720/#comment_6579384-ã¢ã³ããšã€ãªã¢ã¹ãå®è£
ãããŸããã ã¢ã€ãã¢ãããããšãã ã¬ã³ããªã³ã°ãããç»åã¯ãããã«ãªããŸãã:)
