UnrealãœãŒã¹ã³ãŒããæ¢ããŠã 人æ°ã®ããã²ãŒã ããã¬ãŒã ãã¬ã³ããªã³ã°ããæ¹æ³ã®åªããåæã«è§ŠçºãããŠïŒHabré ã®èšäºã®ç¿»èš³ ïŒããšã³ãžã³ããã¬ãŒã ãã¬ã³ããªã³ã°ããæ¹æ³ãåŠã¶ããã«ãããšäŒŒããããªããšãããããšã決ããŸããïŒã·ãŒã³ã®ãã©ã¡ãŒã¿ãŒãšèšå®ããã©ã«ãïŒã
ãœãŒã¹ã³ãŒãã«ã¢ã¯ã»ã¹ã§ãããããã¬ã³ãã©ãŒã®ãœãŒã¹ã³ãŒãã調ã¹ãŠããããäœãããã®ããç解ã§ããŸãããããã¯ãšã³ãžã³ã®ããªãã®éšåã§ãããã¬ã³ããªã³ã°ãã¹ã¯éåžžã«ã³ã³ããã¹ãã«äŸåããŠãããããçŽç²ãªäœã¬ãã«APIïŒã³ãŒãã調ã¹ãããšããããŸãïŒç©ºçœãåããŸãïŒã
ããã€ãã®éçããã³åçãªå°éå ·ãããã€ãã®å æºãããªã¥ãŒã¡ããªãã¯ãã©ã°ãéæãªãªããžã§ã¯ããããŒãã£ã¯ã«ãšãã§ã¯ããå«ãã·ã³ãã«ãªã·ãŒã³ãäœæããååãªç¯å²ã®ãããªã¢ã«ãšã¬ã³ããªã³ã°æ¹æ³ã䜿çšããŸããã
ããã§ã RenderDocãä»ããŠEditorãã¹ããããããã£ããã£ããªã³ã«ããŸããã ããããããã¯å®éã®ã²ãŒã ã®ãã¬ãŒã ãã©ã®ããã«èŠãããã«ããŸã䌌ãŠããªããããããŸããããã¢ã³ãªã¢ã«ãã©ã®ããã«æšæºãã¬ãŒã ãã¬ã³ããªã³ã°ãããã®ããããã®ã¢ã€ãã¢ãæäŸããŸãïŒèšå®ãå€æŽãããPCã®æ倧å質ãéžæããŸããïŒïŒ
泚ïŒåæã¯ããããªããã»ããµæ å ±ã®ãã£ããã£ãšã¬ã³ãã©ãŒã®ãœãŒã¹ã³ãŒãïŒ ããŒãžã§ã³4.17.1 ïŒã«åºã¥ããŠããŸãã ãã®ãããžã§ã¯ãã®åã¯ãUnrealã®çµéšã¯ããŸããããŸããã§ããã ç§ãäœããéããããäœããééããå Žåã¯ãã³ã¡ã³ãã§ç¥ãããŠãã ããã
幞ããªããšã«ãUnrealã¬ã³ããªã³ã°ã³ãŒã«ãªã¹ãã¯æ確ã§æ³šéãä»ããããŠãããããäœæ¥ãç°¡åã«ãªããŸãã ã·ãŒã³ã«ãšã³ãã£ãã£/ãããªã¢ã«ããªãå ŽåããŸãã¯ããäœãå質ãéžæããå Žåããªã¹ãã¯ç°ãªã£ãŠèŠããå ŽåããããŸãã ããšãã°ãããŒãã£ã¯ã«ãªãã§ã¬ã³ããªã³ã°ããå Žåã ParticleSimulationãã¹ã¯ãããŸããã
SlateUIã¬ã³ããªã³ã°ãã¹ã«ã¯ãUIãã¬ã³ããªã³ã°ããããã«Unreal Editorã«ãã£ãŠè¡ããããã¹ãŠã®APIåŒã³åºããå«ãŸããŠããããããããã¹ãããããŠã ã·ãŒã³ã»ã¯ã·ã§ã³ã®ãã¹ãŠã®ãã¹ã«çŠç¹ãåœãŠãŸãã
ç²åã·ãã¥ã¬ãŒã·ã§ã³
ãã¬ãŒã ã¯ã ParticleSimulationãã¹ã§å§ãŸããŸãã RGBA32_FloatïŒäœçœ®ã¯ããã«èšè¿°ãããŠããŸãïŒããã³RGBA16_FloatïŒé床ïŒïŒããã³æé/寿åœé¢é£ããŒã¿ã®ãã¢ïŒã®2ã€ã®ã¿ãŒã²ããã¬ã³ããŒã«ã€ããŠããããªããã»ããµã®ç²åã®åããšã·ãŒã³å ã®åç²åãšããã¿ãŒã®ãã®ä»ã®ããããã£ãèšç®ããŸãã ããã§ã¯ãããšãã°ãã¿ãŒã²ããã®åºåã¯RGBA32_Floatãã¬ã³ããªã³ã°ããŸããåãã¯ã»ã«ã¯ã¯ãŒã«ãå ã®ã¹ãã©ã€ãã®äœçœ®ã«å¯Ÿå¿ããŸãã
ãã®å Žåãã·ãŒã³ã«è¿œå ããããŒãã£ã¯ã«ãšãã§ã¯ãã«ã¯ãè¡çªãèšç®ããã«ãããªããã»ããµã§ã·ãã¥ã¬ãŒã·ã§ã³ãå¿ èŠãšãã2ã€ã®ãšããã¿ãããããã察å¿ããã¬ã³ããªã³ã°ãã¹ããã¬ãŒã äœæã®åæ段éã§å®è¡ã§ããŸãã
Zãããã¡ã®äºåãã¹
次ã¯Pre - Passã¬ã³ããªã³ã°ãã¹ã§ã ãããã¯z-bufferãã¬ãã¥ãŒãã¹ã§ãã ãã¹ãŠã®äžéæãªããªãŽã³ã¡ãã·ã¥ïŒã¡ãã·ã¥ïŒãR24G8ããã¹ãããã¡ãŒã«ã¬ã³ããªã³ã°ããŸãã
ã¢ã³ãªã¢ã«ã§ã¯ã深床ãããã¡ãŒã«ã¬ã³ããªã³ã°ãããšãã«ã ãªããŒã¹Zãããã¡ãŒïŒreverse-ZïŒã䜿çšãããããšã«æ³šæããŠãã ããã ããã¯ããã¢ãã¬ãŒã³ã«å€1ãå²ãåœãŠããããã¡ãŒãã¬ãŒã³ã«å€1ãå²ãåœãŠãããããšãæå³ããŸããããã«ããã深床ç¯å²ã«æ²¿ã£ã粟床ãåäžããé¢ããã°ãªããã®z競åã®æ°ãæžå°ããŸãã ã¬ã³ããŒãã¹ã®ååã¯ããã¹ãDBufferãããã¡ãŒã«ãã£ãŠããªã¬ãŒãããããšãæå³ããŸãã ããã¯ãUnreal Engineãä¿çäžã®ãã«ãŒã«ãã¬ã³ããªã³ã°ããããã«äœ¿çšãããã«ãŒã«ãããã¡ã®ååã§ãã ã·ãŒã³ã®æ·±åºŠãå¿ èŠãªã®ã§ãZãããã¡ã®äºåãã¹ãã¢ã¯ãã£ãã«ãªããŸãã ãã ãã以äžã§èª¬æããããã«ãZãããã¡ã¯ä»ã®ã³ã³ããã¹ãã§ã䜿çšãããŸããããšãã°ãç»é¢ç©ºéã§ã®ãªã¯ã«ãŒãžã§ã³ãšãªãã¬ã¯ã·ã§ã³ã®èšç®ã«äœ¿çšãããŸãã
ãªã¹ãå ã®äžéšã®ã¬ã³ããªã³ã°ããã»ãŒãžã¯ç©ºã§ãã ããšãã°ã ResolveSceneDepthã¯ãã¿ãŒã²ããã¬ã³ããŒããã¯ã¹ãã£ãšããŠäœ¿çšããåã«ïŒPCã§ã¯å¿ èŠãããŸããïŒãã¿ãŒã²ããã¬ã³ããŒã®ãæ·±ãã®è§£æ±ºããå®éã«å¿ èŠãšãããã©ãããã©ãŒã ã«å¿ èŠã§ãããšèããŠããŸãããŸãã空çœã®ããŒã«ãŒã®ããã«èŠããShadowFrustumQuerieså®éã®ã·ã£ããŠãªãŒããŒã©ãããã¹ãã¯æ¬¡ã®ã¬ã³ããŒãã¹ã§å®è¡ãããããã§ãã
éè€ãã§ãã¯
BeginOcclusionTestsã¯ããã¬ãŒã å ã®ãã¹ãŠã®ãªãŒããŒã©ãããã§ãã¯ãåŠçããŸãã ããã©ã«ãã§ã¯ãUnrealã¯ããŒããŠã§ã¢ãªã¯ã«ãŒãžã§ã³ã¯ãšãªã䜿çšããŠãªãŒããŒã©ããããã§ãã¯ããŸãã ã€ãŸãã次ã®3ã€ã®æ®µéã§å®è¡ãããŸãã
- ãªãŒããŒã©ãããªããžã§ã¯ãïŒããšãã°ã倧ããªäžéæãªã¡ãã·ã¥ïŒãšããŠèªèããããã¹ãŠã深床ãããã¡ãŒã«ã¬ã³ããªã³ã°ããŸãã
- ãªãŒããŒã©ãããªã¯ãšã¹ããäœæããŠæž¡ãããªãŒããŒã©ãããå®çŸ©ããå°éå ·ãã¬ã³ããªã³ã°ããŸãã ããã¯ãzãã¹ããšã¹ããã1ã§äœæããã深床ãããã¡ãŒã䜿çšããŠå®è£ ãããŸããã¯ãšãªã¯ãzãã¹ãã«åæ Œãããã¯ã»ã«æ°ãè¿ããŸããã€ãŸããå€ããŒãã®å Žåãå°éå ·ã¯å®å šã«äžéæãªã°ãªããã®åŸãã«ããããšãæå³ããŸãã ãªãŒããŒã©ããã®ããã«å°éå ·ã°ãªããå šäœãã¬ã³ããªã³ã°ããã®ã¯ã³ã¹ãããããå¯èœæ§ãããããããã®å°éå ·ã®ããŠã³ãã£ã³ã°ããã¯ã¹ã代ããã«äœ¿çšããŸãã ãããèŠããªãå Žåãå°éå ·ãééããªãèŠããŸããã
- ã¯ãšãªçµæããããªããã»ããµã«èªã¿æ»ããã¬ã³ããªã³ã°ããããã¯ã»ã«ã®æ°ã«åºã¥ããŠãã¬ã³ããªã³ã°ã®ããã«å°éå ·ãéä¿¡ãããã©ãããéžæã§ããŸãïŒããšãå°æ°ã®ãã¯ã»ã«ã衚瀺ãããŠããŠããå°éå ·ãã¬ã³ããªã³ã°ãã䟡å€ããªããšå€æã§ããŸãïŒã
ã¢ã³ãªã¢ã«ã¯ãã³ã³ããã¹ãã«å¿ããŠãããŸããŸãªã¿ã€ãã®ãªãŒããŒã©ãããªã¯ãšã¹ãã䜿çšããŸãã
ããŒããŠã§ã¢ãªãŒããŒã©ãããªã¯ãšã¹ãã«ã¯æ¬ ç¹ããããŸã-ãããŒã³ãŒã«ããããã§ãã ããã¯ããªãŒããŒã©ãããå®çŸ©ããã°ãªããïŒãŸãã¯ã°ãªããã°ã«ãŒãïŒããšã«1ã€ã®æç»åŒã³åºããå®è¡ããã¬ã³ãã©ãŒãå¿ èŠã§ããããšãæå³ããŸãã ãã¬ãŒã ããšã®æç»åŒã³åºãã®æ°ãå€§å¹ ã«å¢ãããCPUã«èªã¿æ»ãå¿ èŠããããŸããããã«ãããCPUãšãããªããã»ããµã®éã«åæãã€ã³ããè¿œå ããããããªããã»ããµãèŠæ±ã®åŠçãå®äºãããŸã§CPUãåŸ æ©ããŸãã ãããã¯ã¯ããŒã³åããããžãªã¡ããªã«ã¯ããŸãé©ããŠããŸããããä»ã®ãšããããã«æ³šæãæããŸããã
Unrealã¯ããªã¯ãšã¹ãã䜿çšããä»ã®ãšã³ãžã³ãšåæ§ã«ãCPUãšãããªããã»ããµã®åæãã€ã³ãã®åé¡ã解決ããŸã-ããã€ãã®ãã¬ãŒã ã§é 延ãããªã¯ãšã¹ãããŒã¿ãèªã¿åããŸãã ãã®ã¢ãããŒãã¯æ©èœããŸãããã«ã¡ã©ãé«éã§ç§»åãããšãã«ç»é¢ã®å°éå ·ãããžã£ã³ããããåé¡ãè¿œå ã§ããŸãïŒå®éã«ã¯ãå¢çå¹³è¡å é¢äœã䜿çšããŠãªãŒããŒã©ãããåãåãã®ã¯æ§ããã§ãããããããã¯æ·±å»ãªåé¡ã§ã¯ãªãå¯èœæ§ããããŸããå®éã«è¡šç€ºãããåã§ã衚瀺ãããŸãïŒã ãã ããäžå¿ èŠãªã¬ã³ããªã³ã°åŒã³åºãã®åé¡ã¯æ®ãã解決ããã®ã¯ããã»ã©ç°¡åã§ã¯ãããŸããã ã¢ã³ãªã¢ã«ã¯ãã¯ãšãªã次ã®ããã«ã°ã«ãŒãåããããšã«ããããã®åœ±é¿ã軜æžããããšããŸãããŸãããã¹ãŠã®äžéæãªãžãªã¡ããªãzãããã¡ã«ã¬ã³ããªã³ã°ããŸãïŒäžèšã®Zãããã¡ã®äºåãã¹ïŒã 次ã«ããªãŒããŒã©ããããã§ãã¯ããå¿ èŠã®ããåããããã«åå¥ã®ãªã¯ãšã¹ããæž¡ããŸãã ãã¬ãŒã ã®æåŸã§ãåã®ïŒãŸãã¯ããã«æ©ãïŒãã¬ãŒã ããèŠæ±ããŒã¿ãåä¿¡ããå°éå ·ã®å¯èŠæ§ã®åé¡ã解決ããŸãã 衚瀺ãããŠããå Žåããšã³ãžã³ã¯æ¬¡ã®ãã¬ãŒã ã§ã¬ã³ããªã³ã°ããããã«ããŒã¯ããŸãã äžæ¹ãé衚瀺ã®å Žåããšã³ãžã³ã¯ããããã°ã«ãŒãåãã¯ãšãªã«è¿œå ããå°éå ·ïŒæ倧8åã®ãªããžã§ã¯ãïŒãå¢çå¹³è¡å é¢äœã®ã°ã«ãŒãã«çµåããããã䜿çšããŠæ¬¡ã®ãã¬ãŒã ã®å¯èŠæ§ã決å®ããŸãã 次ã®ãã¬ãŒã ã§ã°ã«ãŒããïŒå šäœãšããŠïŒè¡šç€ºãããããã«ãªããšããšã³ãžã³ã¯ãããäžæããåã ã®ãªã¯ãšã¹ããå床éä¿¡ããŸãã ã«ã¡ã©ãšãããããéæ¢ããŠããïŒãŸãã¯ãã£ãããšåããŠããïŒå Žåããã®ã¢ãããŒãã¯å¿ èŠãªãªãŒããŒã©ãããªã¯ãšã¹ãã®æ°ã8åæžãããŸãã éãªã£ãŠããå°éå ·ã®ã°ã«ãŒãåïŒãããåŠçïŒã§æ°ä»ããå¯äžã®å¥åŠãªç¹ã¯ãã©ã³ãã ã«èŠããå°éå ·å士ã®ç©ºéçãªè¿æ¥æ§ã«äŸåããªãããšã§ãã
ãã®ããã»ã¹ã¯ãäžèšã®ã¬ã³ããŒãã¹ã®ãªã¹ãå ã®IndividualQueriesããã³GroupedQueriesããŒã¯ã³ãšäžèŽããŸãã åã®ãã¬ãŒã ã§ãšã³ãžã³ãã¯ãšãªãäœæã§ããªãã£ãããã GroupedQueriesã®äžéšã¯ç©ºã§ãã
ãªãŒããŒã©ããã®ééãå®äºããããã«ã ShadowFrustumQueriesã¯ããªãŒããŒã©ããããããŒã«ã«å¢çãããã¯ãŒã¯ïŒãã€ã³ããŸãã¯æ¹åïŒã®ããŒããŠã§ã¢ãªã¯ãšã¹ããéä¿¡ããŸãïŒãã£ã¹ãã£ã³ã°ã®ååã«åããŠã圱ãèœãšããŠãã£ã¹ãããŸããïŒã ããããéãªã£ãŠããå Žåããããã®ç §æ/圱ã®èšç®ãå®è¡ããããšã¯æå³ããããŸããã ïŒãã¬ãŒã ããšã«ã·ã£ããŠããããèšç®ããå¿ èŠãããïŒåœ±ãèœãšãã·ãŒã³ã«4ã€ã®ããŒã«ã«å æºãååšããã«ããããããã ShadowFrustumQueriesã§ã®æç»åŒã³åºãã®æ°ã¯3ã€ã§ãã ããã¯ããœãŒã¹ã®1ã€ã®å¶éããªã¥ãŒã ãã«ã¡ã©ã®ãã¢ãã¬ãŒã³ã暪åãããã«çºçããã®ã§ã¯ãªãããšæãããŸãããã®ãããUnrealã¯ããããŸã èŠãããšä¿¡ããŠããŸãã ãŸããç«æ¹äœã®ã·ã£ããŠããããèšç®ããããã€ãããã¯ã©ã€ãã£ã³ã°ã®å Žåãçäœã転éããŠãªãŒããŒã©ããã確èªãã
ãŸããUnrealãåãªããžã§ã¯ãã®åœ±ã«å¯ŸããŠèšç®ããéçåçã©ã€ãã£ã³ã°ïŒããã«ã€ããŠã¯ä»¥äžã§è©³ãã説æããŸãïŒã§ã¯ããã©ããããéä¿¡ãããŸãã
æåŸã«ã PlanarReflectionQueriesã¯ãå¹³é¢åå°ãèšç®ãããšãã«å®è¡ããããªãŒããŒã©ãããã¹ããåç §ãããšä»®å®ããŸã ïŒã«ã¡ã©ãåå°å¹³é¢ã®åŸã/åã«ç§»åããã°ãªãããåæç»ããããšã«ãã£ãŠäœæãããŸãïŒã
Hi-Zãããã¡ãŒçæ
次ã«ãUnrealã¯16ãããæµ®åå°æ°ç¹æ°ïŒR16_Floatãã¯ã¹ãã£ãã©ãŒãããïŒãšããŠä¿åãããHi-Zãããã¡ãŒïŒ HZB SetupMipXXãæž¡ã ïŒãäœæããŸãã Zãããã¡ãŒã®äºåãã¹äžã«äœæããã深床ãããã¡ãŒãå ¥åãšããŠåãåãã深床ã®ããããã§ãŒã³ãäœæããŸãïŒã€ãŸãã解å床ãåŸã ã«äœäžããŸãïŒã ãŸãã䟿å®äžãæåã®ãããã2ã®ã¹ãä¹ã«ãªãµã³ããªã³ã°ããããã§ãïŒ
åè¿°ã®ããã«ãUnrealã¯éZãããã¡ãŒã䜿çšããããããã¯ã»ã«ã·ã§ãŒããŒã¯minæŒç®åã䜿çšããŠå±éãåæžããŸãã
ã·ã£ããŠãããã¬ã³ããªã³ã°
次ã«ãã·ã£ããŠãããã®èšç®ã®ã¬ã³ããªã³ã°ãã¹ïŒ ShadowDepths ïŒã«åŸããŸãã
ãéæ¢ãæåæ§å æºã2ã€ã®ãå¯åãç¹å æºã2ã€ã®éæ¢ç¹å æºãããã³ãéçãç¹å æºãã·ãŒã³ã«è¿œå ããŸããã ãããã¯ãã¹ãŠåœ±ãèœãšããŸãïŒ
éæ¢ãœãŒã¹ã®å Žåãã¬ã³ãã©ãŒã¯éçããããã®ã·ã£ããŠããã€ã¯åŠçããåçïŒç§»åïŒããããã®ã·ã£ããŠã®ã¿ãèšç®ããŸãã 移åãããœãŒã¹ã®å Žåããã¹ãŠããã³åãã¬ãŒã ã®åœ±ãèšç®ããŸãïŒå®å šã«åçïŒã æåŸã«ãéçãœãŒã¹ã®å Žåãã¬ã³ããªã³ã°äžã«è¡šç€ºãããªãããã«ãã©ã€ãã£ã³ã°ãããã®ã©ã€ãã£ã³ã°+ã·ã£ããŠããã€ã¯åŠçããŸãã
æåæ§å æºã®å Žåã3ã€ã®ã¹ããªãããå«ãã«ã¹ã±ãŒãã·ã£ããŠããããè¿œå ããŠãUnrealãããããåŠçããæ¹æ³ã確èªããŸããã Unrealã¯ã·ã£ããŠãã¬ãŒã R16_TYPELESSïŒ3ã€ã®ã¿ã€ã«ãåã¹ããªããã«1ã€ã®ã¿ã€ã«ïŒã®ãã¯ã¹ãã£ãäœæããŸããããã¯åãã¬ãŒã ã§ãªã»ãããããŸãïŒãããã£ãŠããšã³ãžã³ã¯è·é¢ã«åºã¥ãã·ã£ããŠãããã¹ããªããã®åŒãè£ãããæŽæ°ãæã¡ãŸããïŒã 次ã«ãééAtlas0ã®æ®µéã§ããšã³ãžã³ã¯ãã¹ãŠã®äžéæãªå°éå ·ã察å¿ããã·ã£ããŠãããã¿ã€ã«ã«ã¬ã³ããªã³ã°ããŸãã
äžèšã®åŒã³åºããªã¹ãã確èªããããã«ãSplit0ã®ã¿ãã¬ã³ããªã³ã°çšã®ãžãªã¡ããªãæã£ãŠãããããæ®ãã®ã¿ã€ã«ã¯ç©ºã§ãã ã·ã£ããŠãããã¯ããã¯ã»ã«ã·ã§ãŒããŒã䜿çšããã«ã¬ã³ããªã³ã°ãããŸããããã«ãããã·ã£ããŠãããã®çæé床ã2åã«ãªããŸãã 泚ç®ã«å€ããŸãïŒéæ¢å æºãšç§»åå¯èœå æºã®åé¢ã¯ãæåæ§ïŒæåæ§ïŒå æºã§ã¯ä¿åãããªãããã§ããã¬ã³ãã©ãŒã¯ãã¹ãŠã®å°éå ·ïŒéçãå«ãïŒãã·ã£ããŠãããã«ã¬ã³ããªã³ã°ããŸãã
次ã«ãAtlas1ããã»ãŒãžããããŸããããã¯ããã¹ãŠã®åºå®ã©ã€ãã®ã·ã£ããŠããããã¬ã³ããªã³ã°ããŸãã ç§ã®ã·ãŒã³ã§ã¯ãå°éå ·ãç³ãã ããåããŠããïŒåçïŒãšããŒã¯ãããŠããŸãã åºå®ãœãŒã¹ãšåçããããã®å ŽåãUnrealã¯ãã¯ã¹ãã£ã¢ãã©ã¹ã«ä¿åãããŠãããªããžã§ã¯ãããŒã¹ã®ã·ã£ããŠãããã䜿çšããŸãã ããã¯ãåãœãŒã¹ããã³åçãªå°éå ·ã«å¯ŸããŠ1ã€ã®ã·ã£ããŠãããã¿ã€ã«ãã¬ã³ããªã³ã°ããããšãæå³ããŸãã
ãããŠæåŸã«ãååçïŒå¯åïŒå æºã«å¯ŸããŠãUnrealã¯åŸæ¥ã®ç«æ¹äœã·ã£ããŠãããïŒ Cubemap XXãã¹ïŒãäœæãã幟äœåŠçã·ã§ãŒããŒã䜿çšããŠã¬ã³ããªã³ã°ããç«æ¹äœã®é¢ãéžæããŸãïŒæç»åŒã³åºãã®åæ°ãæžãããŸãïŒã ãã®äžã§ã圌ã¯éç/éæ¢ããããã®ã·ã£ããŠããããã£ãã·ã³ã°ã䜿çšããŠãåçããããã®ã¿ãã¬ã³ããªã³ã°ããŸãã CopyCachedShadowMapããã»ãŒãžã¯ããã£ãã·ã¥ããããã¥ãŒããã¯ã·ã£ããŠããããã³ããŒããŸãããã®åŸããã€ãããã¯ããããã·ã£ããŠãããã®æ·±ãããã®äžã«ã¬ã³ããªã³ã°ãããŸãã ããšãã°ãåçå æºçšã®ãã£ãã·ã¥ãããç«æ¹äœã·ã£ããŠãããã®é¢ã¯æ¬¡ã®ãšããã§ãïŒCopyCachedShadowMapåºåïŒã
ãããŠãããã§åœŒå¥³ã¯ã¬ã³ããªã³ã°ãããåçãªå°éå ·ãç³ããšäžç·ã§ãïŒ
éçãžãªã¡ããªã®ãã¥ãŒããã¯ãããã¯ãã£ãã·ã¥ããããã¹ãŠã®ãã¬ãŒã ã§äœæãããããã§ã¯ãããŸãããã¬ã³ãã©ãŒã¯ãå æºãå®éã«ã¯åããŠããªãããšãç¥ã£ãŠããããã§ãïŒãã ããMovableãšããŒã¯ãããŠããŸãïŒã ãœãŒã¹ãã¢ãã¡ãŒã·ã§ã³åãããŠããå Žåãåãã¬ãŒã ã¬ã³ãã©ãŒã¯ãã¹ãŠã®éç/éæ¢ãžãªã¡ããªã§ããã£ãã·ã¥ãããããã¥ãŒããã¯ããããã¬ã³ããªã³ã°ãããã®åŸãã·ã£ããŠãããã«åçãããããè¿œå ããŸãïŒãã®å³ã¯ãããã確èªããããã«ç¹å¥ã«äœæããå¥ã®ãã¹ãããã®ãã®ã§ãïŒïŒ
æç»åŒã³åºããªã¹ãã«ã¯ãéçå æºã®ã¿ããŸã£ãã衚瀺ãããŸããã ããã«ãããåçããããã«ã¯åœ±é¿ããããã€ã¯åŠçãããã©ã€ãã£ã³ã°ããããä»ããŠéçããããã®ã¿ã«åœ±é¿ããããšã確èªãããŸãã
ã¢ããã€ã¹ãæäŸããŸãïŒã·ãŒã³ã«åºå®å æºãããå Žåã¯ããšãã£ã¿ãŒã§ãããã¡ã€ãªã³ã°ãå®è¡ããåã«ãã¹ãŠã®ã©ã€ãããã€ã¯ããŸãïŒå°ãªããšããã²ãŒã ããã¹ã¿ã³ãã¢ãã³ããšããŠèµ·åããçç±ã¯ããããŸããïŒã ãã以å€ã®å ŽåãUnrealã¯ããããåçãœãŒã¹ãšããŠæ±ããåãªããžã§ã¯ãã«åœ±ã䜿çšãã代ããã«ç«æ¹äœããããäœæããããã§ãã
次ã«ãã©ã€ãã£ã³ã°ã°ãªããã®çæãgãããã¡ã®äºåééãã©ã€ãã£ã³ã°ãèæ ®ããŠãUnrealãšã³ãžã³ã§ãã¬ãŒã ãã¬ã³ããªã³ã°ããããã»ã¹ã®ç 究ãç¶ããŸãã
ç §æç®ç
次ã«ãã¬ã³ãã©ãŒã¯èšç®ã·ã§ãŒããŒã«åãæ¿ãããã¯ã©ã¹ã¿ãŒã·ã§ãŒãã£ã³ã°ãšåæ§ã®æ¹æ³ã§ç §æã3Dã°ãªããã«ãã€ã³ãããŸãïŒ ComputeLightGridãã¹ïŒã ãã®ç §æã°ãªããã䜿çšããŠããã®äœçœ®ã«å¿ããŠè¡šé¢ã«åœ±é¿ãäžããå æºããã°ããç¹å®ã§ããŸãã
éè·¯ã®ååã瀺ãããã«ãå¯èŠç §æã°ãªããã®å¯žæ³ã¯29x16x32ã§ãã Unrealã¯ã64Ã64ãã¯ã»ã«ã®ã¹ã¯ãªãŒã³ã¹ããŒã¹ã¿ã€ã«ãš32ã®Z深床ããŒãã䜿çšããŸãã ããã¯ãXYç §æã°ãªããã®æ¬¡å æ°ãç»é¢ã®è§£å床ã«äŸåããããšãæå³ããŸãã ããã«ãååããå€æããŠã9ã€ã®å æºãš2ã€ã®åå°ãããŒããå²ãåœãŠãŸãã åå°ãããŒãã¯ãåšå²ã®ç°å¢ãèªã¿åãäœçœ®ãšååŸãæã€ããšã³ãã£ãã£ãã§ãããå°éå ·ã§åå°ãäœæããããã«äœ¿çšãããŸãã
ãœãŒã¹ã³ãŒãã³ã³ãã¥ãŒãã£ã³ã°ã·ã§ãŒããŒïŒLightGridInjection.usfïŒã«ãããšãåé¢ã¯ææ°é¢æ°çã«å®è¡ãããŸããã€ãŸããå¯èŠç©ºéå ã®åã¡ãã·ã¥ã»ã«ã®zãµã€ãºã¯ãã«ã¡ã©ããã®è·é¢ãšãšãã«å€§ãããªããŸãã ããã«ã座æšè»žäžã«é 眮ãããåã»ã«ã®å¹³è¡å é¢äœã䜿çšããŠãå æºã®å¢çããªã¥ãŒã ã®äº€å·®ãå®è¡ããŸãã å æºã®ã€ã³ããã¯ã¹ãä¿åããããã«ããªã³ã¯ããããªã¹ãã䜿çšãããŸããããã¯ãã³ã³ãã¯ãããã»ãŒãžã§é£ç¶é åã«å€æãããŸãã
ãã®ç §æã°ãªããã¯ãããªã¥ãŒã ãã©ã°èšç®ãã¹ã§äœ¿çšããããã©ã°ãã¢ã³ããšã³ãåå°ãã¹ãããã³åéæã¬ã³ããªã³ã°ãã¹ã§å æ£ä¹±ãè¿œå ããŸãã
å¥ã®èå³æ·±ãäºå®ã«æ°ä»ããŸãããCullLightsãã¹ã¯ãç §æããŒã¿ã®Unordered Accessãã¥ãŒãã¯ãªã¢ããããšããå§ãŸããŸããã3ã€ã®UAVã®ãã¡2ã€ã ãã«ClearUnorderedAccessViewUintã䜿çšããŸãã æ®ãã«ã€ããŠã¯ãå€ãæåã§èšå®ããèšç®ã·ã§ãŒããŒã䜿çšããŸãïŒäžèšã®ãªã¹ãã®æåã®DispatchïŒã æããã«ã1024ãã€ããè¶ ãããããã¡ã®å ŽåããœãŒã¹ã³ãŒãã¯APIã¯ãªãŒã³ã¢ããã³ãŒã«ã䜿çšãã代ããã«ãã³ã³ãã¥ãŒãã·ã§ãŒããŒã§ã¯ãªãŒã³ã¢ããã䜿çšããããšã奜ã¿ãŸãã
äœç©é§
以äžã¯ããªã¥ãŒã ãã©ã°ã®èšç®ã§ãããèšç®ã·ã§ãŒããŒã·ã§ãŒããŒãåã³äœ¿çšããŸãã
ãã®ããã»ãŒãžã§ã¯ãããªã¥ãŒã ãã¯ã¹ãã£å ã®å ã®ééæ§ãšæ£ä¹±ãèšç®ãããŠä¿åãããããããµãŒãã§ã¹ã®äœçœ®ã®ã¿ã䜿çšããŠãã©ã°ãç°¡åã«èšç®ã§ããŸãã 以åã«å®æããç §æå ã®éè·¯ãšåæ§ã«ãããªã¥ãŒã ã¯8Ã8ã¿ã€ã«ãš128ã®æ·±åºŠã°ã©ããŒã·ã§ã³ã䜿çšããŠãå¯èŠæ§ã®ãã©ãããã«ãé©åãããŸãã 深床ã°ã©ããŒã·ã§ã³ã¯ææ°é¢æ°çã«ååžããŠããŸãã ã«ã¡ã©ã«è¿ãå€æ°ã®å°ããªã»ã«ãé¿ããããã«ããã¢ãã¬ãŒã³ããããã«ç§»åããŸãïŒããã¯ã Avalanche Studios ã¯ã©ã¹ã¿ãŒã·ã§ãŒãã£ã³ã°ã·ã¹ãã ã«äŒŒãŠããŸã ïŒã
Assassinã®Creed IVããã³Frostbiteãšã³ãžã³ã®ããªã¥ãŒã ãã©ã°ïŒLINKïŒãã¯ãããžãŒãšåæ§ã«ããã©ã°ã¯3ã€ã®ãã¹ã§èšç®ãããŸãã ã 2çªç®ã®ãã¹ïŒ LightScattering ïŒã¯ãåã»ã«ã®å ã®æ£ä¹±ãšæžè¡°ãèšç®ãã圱ä»ãã®æåæ§ç §æãå€©ç©ºç §æãããã³ComputeLightGridéè·¯ã®ç §æã®ããªã¥ãŒã ã®ãã¯ã¹ãã£ã«å²ãåœãŠãããããŒã«ã«å æºãçµã¿åãããŸãã 圌ã¯ãŸããããèªäœã3Dãã¯ã¹ãã£ã§ããå±¥æŽãããã¡ãŒã䜿çšããŠãèšç®ã·ã§ãŒããŒã®åºåïŒã©ã€ãã¹ãã£ãã¿ãŒãªã³ã°ãæ¶æ» ïŒã«ã¢ã³ããšã€ãªã¢ã¹ïŒAAïŒãé©çšããã°ãªããã»ã«ã®æ¡æ£ç §æã®å質ãåäžãããŸãã æçµãã¹ïŒ FinalIntegration ïŒã¯ãZ軞ã«æ²¿ã£ãŠ3Dãã¯ã¹ãã£ã®ã¬ã€ããŒãã³ã°ãå®è¡ããæ¡æ£ç §æãšééæ§ãèç©ããŠãããã»ã¹ã®çµæã察å¿ããã¡ãã·ã¥ã»ã«ã«ä¿åããŸãã
å æ£ä¹±ã䌎ãå®æããããªã¥ãŒã ãããã¡ãŒã¯æ¬¡ã®ãšããã§ãã é§ã®äžã«æ£åšããæåæ§å æºãšå±æå æºã«ããå ã®æ±ãèŠãããšãã§ããŸãã
Gãããã¡ã®äºåãã¹
以äžã¯ãé 延ã¬ã³ããªã³ã°ã¢ãŒããã¯ãã£ã§é垞䜿çšããããUnrealãšã³ãžã³ã®Gãããã¡ããªãã¹ã®ç¬èªããŒãžã§ã³ã§ãã ãã®ããã»ãŒãžã¯ãã©ã€ãã£ã³ã°ãšã·ã§ãŒãã£ã³ã°ã®ã³ã¹ãã®ãããèšç®äžã®åæç»ãæžããããã«ãããŸããŸãªã¿ãŒã²ããã¬ã³ããªã³ã°ã§ãããªã¢ã«ã®ããããã£ããã£ãã·ã¥ããããã«å¿ èŠã§ãã
ãã®æç« ã§ã¯ããã¹ãŠã®äžéæãªå°éå ·ïŒéçã移åãªã©ïŒãéåžžã¬ã³ããªã³ã°ãããŸãã Unrealã®å Žåãäž»ã«ç©ºãã¬ã³ããªã³ã°ããŸãïŒ ã»ãšãã©ã®å Žåãããã¯æªã決å®ã§ãããªããªãã空ã¯åŸã§ã«ã¡ã©ã«è¿ãä»ã®å°éå ·ã«ãã£ãŠåæç»ãããããã§ããã€ãŸããäœæ¥ã¯äžå¿ èŠã§ããããšãããããŸãã ãã ãããã®å Žåãããã¯éåžžã«æ£åžžã§ããããã¯ãã¬ã³ãã©ãŒã«ãã£ãŠä»¥åã«å®è¡ãããZãããã¡ãŒã®äºåãã¹ã«ããã空ã®åæç»ïŒããã³å°ãªããšãäžéæãªå°éå ·ã®å Žåã¯å šäœã®åæç»ã®å€§éšåïŒããªããªãããã§ãã
以äžã¯ãg-bufferãæžã蟌ã¿ãäºåã«æž¡ãã¿ãŒã²ããã¬ã³ããªã³ã°ã®ãªã¹ãã§ãã
ããã¹ãããã¡ã¯zãã¹ãã«ã®ã¿äœ¿çšãããzãããã¡ã®äºåãã¹ã§æ¢ã«æºããããŠãããããã¬ã³ãã©ãŒã¯äœãæžã蟌ã¿ãŸããããã ããã¬ã³ãã©ãŒã¯ã¹ãã³ã·ã«ãããã¡ã«æžã蟌ã¿ãã¬ã³ããªã³ã°ãããäžéæãªãžãªã¡ããªã«å±ããââãã¯ã»ã«ãããŒã¯ããŸãã
g-bufferã®å 容ã¯ãã¬ã³ããªã³ã°èšå®ã«äŸåããå ŽåããããŸããããšãã°ãã¬ã³ãã©ãŒãg-bufferã«é床ãæžã蟌ãå¿ èŠãããå ŽåãGBufferDãå¿ èŠã«ãªããããŒã¿ã移åããŸããã·ãŒã³ãšã¬ã³ããªã³ã°ãã¹ã«ã€ããŠãg-bufferã«ã¯æ¬¡ã®ã¹ããŒã ããããŸãã
SceneColorDeferredïŒéæ¥ç §æãå«ãŸããŠããŸã | GBufferAïŒRGB10A2_UNORMãšããŠä¿åãããã¯ãŒã«ã空éæ³ç·ããšã³ã³ãŒãã£ã³ã°ã¯äœ¿çšãããŠããªãããã§ã |
æªã¿ïŒããŸããŸãªææç¹æ§ïŒéå±æ§ãç²ããåå°åŒ·åºŠãã·ã§ãŒãã£ã³ã°ã¢ãã«ïŒ | GBufferCïŒRGBã®ã¢ã«ãããã¢ã«ãã¡ã®AO |
GBufferEïŒã·ã§ãŒããŒã¢ãã«ã«å¿ããç¬èªã®ããŒã¿ïŒäŸïŒè¡šé¢äžã®è²ãŸãã¯æ¥ç·ãã¯ãã«ïŒã | GBufferDïŒãã€ã¯ãã·ã§ãŒãã£ã³ã°ã€ã³ãžã±ãŒã¿ãŒ |
äžéæãªå°éå ·ã«ã¿ã°ãä»ããããã®ã¹ãã³ã·ã« |
ã·ãŒã³å ã®ãã¹ãŠã®äžéæãªå°éå ·ïŒåãç³ãšç©ºãé€ãïŒããæŸå°ç §åºŠã圱ãããã³è¡šé¢æ³ç·ããã£ãã·ã¥ãããããã¬ãã«ãæã€3ã€ã®ã¢ãã©ã¹ããç §ææ å ±ããµã³ããªã³ã°ããããšã¯æ³šç®ã«å€ããŸãã
ç¹°ãè¿ãã«ãªã
ãŸãããããŒãã£ã¯ã«ã·ãã¥ã¬ãŒã·ã§ã³ã¯ããã¬ãŒã å ã§å®è¡ãããæåã®ã¢ã¯ã·ã§ã³ã§ãããäžçã®äœçœ®ãšããŒãã£ã¯ã«ã¹ãã©ã€ãã®é床ãèšé²ããéè·¯ã§ããããã¬ãŒã å ã§éåžžã«æ©ã段éã§çºçãããããã¬ã³ãã©ãŒã¯ãããªããã»ããµã§è¡çªãèšç®ããããã®æ·±åºŠãããã¡ãšéåžžã®ãããã¡ã«ã¢ã¯ã»ã¹ã§ããªãããããããå¿ èŠãšããããŒãã£ã¯ã«ã®ã·ãã¥ã¬ãŒã·ã§ã³ãè¿ããŠåå®è¡ããå¿ èŠããããŸãã
ã¬ã³ããªã³ã°é床
ããã©ã«ãã§ã¯ãUnrealã¯R16G16圢åŒã®å¥ã®ãããã¡ãŒã«å°éå ·ã移åããé床ãæžã蟌ã¿ãŸããå°æ¥çã«ã¯ãã¢ãŒã·ã§ã³ãã©ãŒãšãåæ圱ãå¿ èŠãšãããã¹ãŠã®ãšãã§ã¯ãïŒããšãã°ãäžæçãªã¹ã ãŒãžã³ã°ïŒã«é床ã䜿çšãããŸãããã®ã·ãŒã³ã§ã¯ã移åãªããžã§ã¯ããšããŠããŒã¯ãããŠããã®ã¯ç³ã ããªã®ã§ãã¹ããŒããããã¡ã«ã¬ã³ããªã³ã°ãããã®ã¯ããã ãã§ãã
ã¢ã³ããšã³ããªã¯ã«ãŒãžã§ã³
ãããªã¢ã«ã«é¢ãããã¹ãŠã®æ å ±ãåãåã£ãã¬ã³ãã©ãŒã¯ãã©ã€ãã£ã³ã°ã¹ããŒãžã«é²ãæºåãããŠããŸããããããæåã«ã圌ã¯æåã«ç»é¢ç©ºéã®ã¢ã³ããšã³ããªã¯ã«ãŒãžã§ã³ãèšç®ããå¿ èŠããããŸãã
ã·ãŒã³ã«é 延ãã«ãŒã«ã¯ãããŸããããããå Žåã¯ã空ã®DeferredDecalsããã»ãŒãžãg-bufferã®äžéšã®ãããªã¢ã«ã®ããããã£ãå€æŽããããšããå§ãããŸããç»é¢ç©ºéã®ã¢ã³ããšã³ããªã¯ã«ãŒãžã§ã³ã¯ã解å床ã®4åã®1ãšãã«ã¹ã¯ãªãŒã³ã§ã®2ã€ã®ãã¹ã§èšç®ãããŸããAmbientOcclusionPS 908Ã488ãã¹ã¯ãAmbientOcclusionSetupãã¹ã§äœæããã1/4解å床ã®æšæºãããã¡ãŒãã¬ã³ãã©ãŒã«ãã£ãŠä»¥åã«äœæãããHi-Zãããã¡ãŒãããã³æ·±åºŠ/æšæºãããã¡ãŒããµã³ããªã³ã°ãããã©ã³ãã ãã¯ãã«ãã¯ã¹ãã£ã䜿çšããŠAOãèšç®ããŸããããã«ãã©ã³ãã ãã¯ãã«ãããã¯ã¹ãã£ããµã³ããªã³ã°ããå Žåãã·ã§ãŒããŒã¯åãã¬ãŒã ã«å°ããªæªã¿ãè¿œå ããŠãã¹ãŒããŒãµã³ããªã³ã°ãããšãã¥ã¬ãŒãããAOã®å質ãåŸã ã«åäžãããŸãã
次ã«ãAmbientOcclusionPS 1815Ã976ãã¹ã¯ãAOã䜿çšããŠå šç»é¢ãé«è§£å床ãèšç®ãã1/4解å床ãããã¡ãŒãšçµã¿åãããŸãããŒãããã¹ã䜿çšããªããŠããçµæã¯ååè¯å¥œã§ãã
æåŸã«ããã«è§£å床ã®AOãããã¡ãŒãSceneColourDeferredãããã¡ãŒïŒåè¿°ã®Gãããã¡ãŒã®äžéšïŒã«é©çšãããŸããããã¯ããããŸã§ã®ãšããã·ãŒã³ã®éæ¥ïŒåšå²ïŒç §æãå«ãã§ããŸãã
ç §æ
ç §æã«ã€ããŠèª¬æããåã«ãå°ãé¢ããŠãUnrealãåéæã®ãªããžã§ã¯ããã©ã®ããã«ç §ãããã«ã€ããŠç°¡åã«èª¬æãã䟡å€ããããŸããåéæã®è¡šé¢ãç §ããã¢ã³ãªã¢ã«ã®ã¢ãããŒãã¯ãRGBA16_FLOAT圢åŒã®64x64x64ããªã¥ãŒã ã®2ã€ã®ãã¯ã¹ãã£ã«ç §æãå°å ¥ããããšã§ãã 2ã€ã®ãã¯ã¹ãã£ã«ã¯ãåããªã¥ãŒã ã»ã«ïŒTranslucentVolumeXãã¯ã¹ãã£ïŒã«å°éããåå æºããã®å ã®ç§»åæ¹åã«è¿ãçé¢èª¿åé¢æ°ïŒTranslucentVolumeDirXãã¯ã¹ãã£ïŒã®åœ¢ã®ç §æïŒé°åœ±+匱åïŒãå«ãŸããŠããŸããã¬ã³ãã©ãŒã¯ã2çµã®ãã®ãããªãã¯ã¹ãã£ãä¿åããŸãã1ã€ã¯é«è§£ååºŠç §æãå¿ èŠãšããã«ã¡ã©ã«è¿ãå°éå ·çšã§ããã1ã€ã¯é«è§£ååºŠç §æãããã»ã©éèŠã§ã¯ãªãé ããªããžã§ã¯ãçšã§ããåæ§ã®ã¢ãããŒãã䜿çšããã€ãŸããã«ã¹ã±ãŒãã·ã£ããŠãããã«èšé²ããŸãããã®ãããã§ã¯ãã«ã¡ã©ããã®è·é¢ãããã«ã¡ã©ã«è¿ããã¯ã»ã«ãå€ããªããŸãã
ããã¯ãïŒã·ã§ãŒãã£ã³ã°ãããïŒæ¹åæ§ãœãŒã¹ã®ã¿ãæã€ã«ã¡ã©ã®è¿ãã®åéæç §æã®ããªã¥ãŒã ãã¯ã¹ãã£ã®äŸã§ãã
åéæã®ç §æã®ãããã®ããªã¥ãŒã ã¯ãäžéæãªããããã«åœ±é¿ãäžããŸãã;ãããã¯ãåŸã§åéæã®ãããããšãšãã§ã¯ãïŒããŒãã£ã¯ã«ãªã©ïŒãç §ããããã«äœ¿çšãããŸãããã ãããããã¯ç §æéè·¯ã§åããããŸãã
äžéæãªå°éå ·ã®çŽæ¥ç §æã«æ»ããšãã¬ã³ãã©ãŒã¯ç §æãèšç®ããŠã·ãŒã³ã«é©çšã§ããããã«ãªããŸãããå€æ°ã®å æºãããå Žåããã®æç»åŒã³åºãã®ãªã¹ãã¯éåžžã«é·ããªãå¯èœæ§ããããŸããæãéèŠãªéšåã®ã¿ãå±éããŸããã
å æºã¯2ã€ã®ã°ã«ãŒãã«åŠçããNonShadowedLightsãšShadowedLightsã NonShadowedLightsã°ã«ãŒãã«ã¯ãããŒãã£ã¯ã«ãšãã§ã¯ãã«äœ¿çšãããå æºããã·ãŒã³å ã®éã·ã§ãŒãã£ã³ã°ã®åŸæ¥ã®å æºãªã©ãåçŽãªå æºãå«ãŸããŠããŸãããããã®éãã¯ãåŸæ¥ã®ã·ãŒã³ç §æãœãŒã¹ã¯ãã¬ã³ããªã³ã°æã«æ·±åºŠå¢çãã¹ãã䜿çšããŠãããããã®ç §æéå€ã®ãã¯ã»ã«ã®ç §æãé¿ããããšã§ããããã¯ãå°çšã®ãã©ã€ããŒæ¡åŒµæ©èœã䜿çšããŠå®è£ ãããŸãããäžèšã®SceneColourDeferredã«ç §æãèç©ãããŸããå¥ã®éãã¯ãåçŽãªå æºãåéæã®ç §æã®ããªã¥ãŒã ã«ãŸã£ããæžã蟌ãŸãªãããšã§ãïŒãã ããããã¯ã¬ã³ãã©ãŒã³ãŒãã§å¯èœãšæãããããããã®ãªãã·ã§ã³ãã©ããã§ãªã³ã«ã§ããŸãïŒã
èå³æ·±ãããšã«ãã·ãŒã³å ã®éã·ã§ãŒãã£ã³ã°ïŒããã³ééçïŒå¯èŠå æºã®æ°ã80ãè¶ ããå Žåãã¬ã³ãã©ãŒã¯åŸæ¥ã®é 延ã·ã§ãŒãã£ã³ã°ã¢ãŒãããã¿ã€ã«é 延ã©ã€ãã£ã³ã°ã¢ãŒãã«åãæ¿ãããŸãã
ãã®å Žåãã¬ã³ãã©ãŒã¯ã³ã³ãã¥ãŒãã£ã³ã°ã·ã§ãŒããŒã䜿çšããŠã©ã€ãã£ã³ã°ãèšç®ãïŒãã®ãããªå æºã®ã¿ïŒãå®æ°ãããã¡ãŒãä»ããŠã©ã€ãã£ã³ã°ããŒã¿ãã·ã§ãŒããŒã«æž¡ããŸãïŒãããæ瀺ããŠãããwand deã«æè¬ããŸãïŒãããã«ãã¿ã€ã«é å»¶ç §æã«åãæ¿ããã³ã³ãã¥ãŒãã£ã³ã°ã·ã§ãŒããŒã䜿çšããŠåäžãã¹ã§ãã¹ãŠã®å æºãé©çšãããšãçŽæ¥ç §æã®ã¿ã«åœ±é¿ããããã§ããInjectNonShadowedTranscluscentLightingãã¹ã¯ããã¹ãŠã®å æºãåéæã®ç §æã®ããªã¥ãŒã ã«åå¥ã«è¿œå ããŸãïŒããããã«å¯ŸããŠãåå¥ã®æç»åŒã³åºããäœæãããŸãïŒã
ShadowedLightsããã»ãŒãžã¯ãéæ¢ããã³ç§»åã®äž¡æ¹ã®åœ±ãèœãšããã¹ãŠã®å æºãåŠçããŸããããã©ã«ãã§ã¯ãUnrealã¯3ã€ã®ã¹ãããã§ãã¹ãŠã®ã·ã£ããŠãã£ã¹ãå æºãåŠçããŸãã
ãŸããç»é¢ç©ºéã®åœ±ãèšç®ãïŒShadowProjectionOnOpaqueïŒãåéæã®ç §æã®éã«ç §æã®åœ±é¿ãè¿œå ãïŒInjectTranslucentVolumeïŒãæåŸã«ã·ãŒã³ã®ç §æãèšç®ããŸãïŒStandardDeferredLightingïŒã
åè¿°ã®ããã«ããã®ã·ãŒã³ã§ã¯ãæåæ§ç §æã®å ŽåãSplit0ã®ã¿ãã·ã£ããŠã«é¢ããæ å ±ãå«ã¿ãŸãã圱ã®èšç®çµæã¯ãç»é¢ã®ãµã€ãºã«åãããŠRGBA8ãããã¡ãŒã«æžã蟌ãŸããŸãã
次ã®ã¹ãããïŒInjectTranslucentVolumeïŒã¯ãäžèšã®åéæç §æã®éã®äž¡æ¹ã®æ®µéã®æåæ§ç §æã®åœ±é¿ãèšé²ããŸãïŒInjectTranslucentVolumeãã¹ã®2ã€ã®åŒã³åºãïŒãæåŸã«ãStandardDeferredLightingãã¹ã¯ãã¹ã¯ãªãŒã³ã¹ããŒã¹ã®ã·ã£ããŠãããã¡ãŒã®ãã¹ã¯ã«ããã©ã€ãã£ã³ã°ãèšç®ããSceneColorDeferredãããã¡ãŒã«æžã蟌ã¿ãŸãã
ããŒã«ã«ãœãŒã¹ã¯åãé åºã䜿çšããŠã¹ã¯ãªãŒã³ã¹ããŒã¹ãããã¡ãŒã«åœ±ãæ圱ããåéæã®ç §æã®éã«ç §æãè¿œå ããSceneColorDeferredãããã¡ãŒã«æžã蟌ãŸããç §æãèšç®ããŠããããã§ãã
äž¡æ¹ã®ã¿ã€ãã¯ã»ãŒåãæ¹æ³ã§åŠçãããŸãã移åãã/éæ¢ããããŒã«ã«ãœãŒã¹ã®éãã¯ãã·ãã¿ãŒãåéæã®ç §æã®éã«åœ±ä»ãã®ç §æãè¿œå ããããšã§ãããã¡ããã圱ã®å Žåã圱ä»ãã®ç§»åããçŽ æã¯ãã£ãŒãã£ã¢ãã©ã¹ã䜿çšããŸããããç«æ¹äœãããã
ãã¹ãŠã®å æºã¯ãã¹ã¯ãªãŒã³ã¹ããŒã¹ã®ã·ã£ããŠãããã¡ãŒã®1ã€ã®ã¿ãŒã²ããã¬ã³ããªã³ã°ã䜿çšããŠãåãœãŒã¹ã®ã·ã£ããŠã«å¯Ÿå¿ããéšåãã¯ãªã¢ããŸãïŒããã¯ã¡ã¢ãªãç¯çŽããããã«è¡ããããšæããŸãïŒã
ã©ã€ãã£ã³ã°ãã¹ãå®äºãããšãSceneColorDeferredã«ã¯ã·ãŒã³ã®ãã¹ãŠã®çŽ¯ç©ãã€ã¬ã¯ãã©ã€ãã£ã³ã°ãå«ãŸããŸãã
ã¬ã³ãã©ãŒãã°ã«ãŒãå/ã¯ã©ã¹ã¿ãŒåãããããŒã¿ã®æ§é ãäºåã«äœæãããšããäºå®ïŒç §æå²ãåœãŠãã¹ïŒã«ãããããããäžéæãªãžãªã¡ããªã®ç §æç §æã®æ®µéã§ã¯äœ¿çšãããã代ããã«åå æºã®åå¥ã®ã¬ã³ããªã³ã°ã䜿çšããåŸæ¥ã®é 延ã·ã§ãŒãã£ã³ã°ã䜿çšããããšã«æ³šæããŠãã ããã
æåŸã®ã¹ããããšããŠãåéæã®å°éå ·/å¹æã®ç §æã®æªã¿ãæããããã«ãåéæã®ç §æã®ããªã¥ãŒã ããã£ã«ã¿ãªã³ã°ãããŸãïŒäž¡æ¹ã®æ®µéã§ïŒã
ç»å空éã§ã®ç §æ
次ã«ãç»é¢ç©ºéã§ã®å šç»é¢åå°ãèšç®ãããŸãïŒã¿ãŒã²ããã¬ã³ããªã³ã°åœ¢åŒã¯RGBA16_FLOATã§ãïŒã
ã·ã§ãŒããŒã¯ããã¬ãŒã ã®å é ã§èšç®ãããHi-Zãããã¡ãŒã䜿çšããŠããµãŒãã§ã¹ã®ç²ãã«åºã¥ããŠã¬ã€ããŒãã³ã°ãããšãã«Hi-Zãããã¡ãŒã®ãããã¬ãã«ãéžæããããšã«ããã亀差ã®èšç®ãé«éåããŸãïŒã€ãŸããç²ããµãŒãã§ã¹ã®ã¬ã€ãã¬ãŒã·ã³ã°ãããç²ããã®åå°ã§ç®ã«èŠããªãïŒãæåŸã«ãåãã¬ãŒã ã§ãæ¯åãããŒã ã®åæäœçœ®ã«è¿œå ãããäžæçãªå¹³æ»åãšçµã¿åãããŠãåå°è¡šç€ºã®å質ãåäžããŸãã
ã·ã§ãŒããŒã¯åã®ãã¬ãŒã ã®ã¿ãŒã²ããã¬ã³ããŒã䜿çšããŠãã¬ã€ããŒãã³ã°äžã«è¡çªãæ€åºããããšãã«è²ããµã³ããªã³ã°ããŸããããã¯ãåå°ã®ããªã¥ãŒã ãã©ã°ãšåå°ããéæãªå°éå ·ïŒã¹ã¿ãã¥ãŒïŒã§ç¢ºèªã§ããŸãããŸããæ€ åã®äžã®å³åŽã«ã¯ãããŒãã£ã¯ã«å¹æã®çè·¡ããããŸãã ïŒæ£ããè¡çªãèšç®ããããã«ïŒéæãªãµãŒãã§ã¹ã®æ£ãã深床ããªããããåå°ã¯éåžžåŒã䌞ã°ãããŸãããå€ãã®å Žåãå¹æã¯éåžžã«èª¬åŸåããããŸãã
èšç®ã·ã§ãŒããŒã䜿çšããŠãç»é¢ã®åå°ãã¡ã€ã³ã¿ãŒã²ããã¬ã³ããŒã«é©çšãããŸãïŒReflectionEnvironment pass ïŒããã®ã·ã§ãŒããŒã¯ãã·ãŒã³å ã®2ã€ã®åå°ãããŒãã«ãã£ãŠãã£ããã£ãããç°å¢åå°ãé©çšããŸããåãããŒãã®åå°ã¯ããããã¬ãã«ã®ãã¥ãŒããã¯ãããã«ä¿åãããŸãã
ã²ãŒã ã®éå§æã«ã¢ã³ããšã³ããªãã¬ã¯ã·ã§ã³ãããŒããçæãããéç/éæ¢ãžãªã¡ããªã®ã¿ããã£ããã£ãããŸãïŒäžèšã®ç«æ¹äœãããã§ã¯ãã¢ãã¡ãŒã·ã§ã³åãããå°éå ·ãç³ããæ¬ èœããŠããããšã«æ³šæããŠãã ããïŒã
ç»é¢ã¹ããŒã¹ã«åå°ãé©çšãããã·ãŒã³ãšç°å¢ã®åå°ã¯ããã®ããã«ãªããŸããã
é§ãšå€§æ°ã®å¹æé§ãšå€§æ°ã®å¹æ
ãã·ãŒã³ã«å«ãŸããŠããå Žåããããã¯æ¬¡ã®ãšããã§ãã
æåã«ãéè€ããå ã®æ±ã®ãã¹ã¯ã解å床ã®4åã®1ã§äœæãããŸããããã«ãããç §æããŒã«ãåãåããã¯ã»ã«ã決ãŸããŸãïŒã·ãŒã³å ã®æåæ§ç §æã«ã®ã¿é©çšãããŸãïŒã
次ã«ãã¬ã³ãã©ãŒã¯äžæçãªã¹ã ãŒãžã³ã°ã䜿çšããŠãã¹ã¯ã®å質ã®æ¹åãéå§ãã3ã€ã®ãŒãããã¹ãé©çšããŠãã®ãã¹ã¯ãäœæããŸãïŒãã¹ã¯ã¯ã»ãŒå®å šã«çœã ã£ããããåŠçããå¿ èŠããããŸããïŒã
ãã®ãããªããã»ããµã®ã¢ã¯ã·ã§ã³ã®ãã£ããã£ããããŒããã®åã«äžæçãªAAããã¹ã¯ã«é©çšãããçç±ã¯æ確ã§ã¯ãããŸãããæçµçµæã®è§£å床ãéåžžã«äœãããã§ãããããããããæ確ã«ããããã«ãç°ãªãç°å¢ã§ã®äœ¿çšäŸãããã«å¿ èŠã«ãªããŸãã
ãã©ã°ãšã©ã€ãã£ã³ã°ããŒã«ãã·ãŒã³ã«è¿œå ããåã«ãã¬ã³ãã©ãŒã¯ããèªäœã«ãã¬ãŒã¯ãäžããã¡ã€ã³ã¿ãŒã²ããã¬ã³ããŒã«å€§æ°å¹æïŒãã«è§£å床ïŒãé©çšããŸãã
Brunetonã®ç 究ãšåæ§ã«ãäºåã«èšç®ãããééçãç §å°ãããã³å éšæ£ä¹±ã䜿çšããå®å šãªæ£ä¹±èšç®ã®ããã«èŠããŸãã
ç§ãã¡ã®ã·ãŒã³ã¯éšå±ã®äžã«ããã®ã§ãæ®å¿µãªãããã·ãã¥ã¬ãŒã·ã§ã³ã®å¹æã¯ããŸãç®ç«ã¡ãŸããã
æåŸã«ãã¬ã³ãã©ãŒã¯ã·ãŒã³å ã§ææ°é¢æ°çãªãã©ã°ãšç §æããŒã«ã䜿çšããŸãã
ã·ã§ãŒããŒã¯ãããã€ãã®nadaãã¹ã«ãã£ãŠäœæãããããªã¥ãŒã ãã©ã°ããªã¥ãŒã ãã¯ã¹ãã£ã䜿çšããäžéæãªãžãªã¡ããªã®äœçœ®ã«åºã¥ããŠãµã³ããªã³ã°ããŸãã圌女ã¯ãäžèšã§èšç®ããç §ææ±ãã¹ã¯ãé©çšããŸãã
éæ床ã®ã¬ã³ããªã³ã°
äžéæãªå°éå ·ã«é§ãé©çšããåŸãåéæã®ãžãªã¡ããªãšå¹æã®ããã«ã¬ã³ãã©ãŒã䜿çšãããŸãã
ã¡ã€ã³ã®ã¿ãŒã²ããã¬ã³ããŒã®äžã«éåžžã®ã¢ã«ãã¡ãã¬ã³ãã£ã³ã°ã䜿çšããŠãæåã«ã¬ã³ããŒããã2ã€ã®ã¬ã©ã¹åãã·ãŒã³ã«è¿œå ããŸããã
ãããã®2ã€ã®éæãªå°éå ·ã¯ã·ãŒã³å ã®é©åãªäœçœ®ã«ãããããŒã«ã«ããã³æåæ§ã®å æºãåšå²ã®åå°ãé§ãªã©ã®åœ±é¿ãåããŸãã ããã©ã«ãã§ã¯ãã¬ã³ãã©ãŒã¯é«å質ã·ã§ãŒããŒã䜿çšããŠéæãªå°éå ·ãã¬ã³ããªã³ã°ããŸããããã¯ããšããããäºåã«èšç®ããã倧æ°ã·ãã¥ã¬ãŒã·ã§ã³ãã¯ã¹ãã£ããã€ã¯ãããã©ã€ããããããã®ããŒã¿ãåéæã®ç §æã®ããªã¥ãŒã ãæåæ§ããã³ããŒã«ã«å æºããã®ç §æãã©ã€ããããŒãã®ç«æ¹äœãããããµã³ããªã³ã°ããŸãã ããã¯ãã¹ãŠãç §æã®èšç®ã«äœ¿çšãããŸãã ãã ããã·ã§ãŒããŒãããªã¥ã¡ããªãã¯ãã©ã°ã®ããªã¥ãŒã ã®ãã¯ã¹ãã£ãèªã¿åãããšã¯ãããŸããã§ãããé«ã/è·é¢ã«åºã¥ããŠãã©ã°ã®ã¿ãèšç®ããŠããããã§ãããã®ãã©ã¡ãŒã¿ãŒãã©ããã§èŠéããŠããå¯èœæ§ããããŸãã 倧æ°æ£ä¹±ã®ãããªè·é¢äŸåã®ãã©ã°ã¯ãé ç¹ã·ã§ãŒããŒã§èšç®ãããŸãã
ããŒãã£ã¯ã«ãšãã§ã¯ãã¬ã³ãã©ãŒã¯ãåå¥ã®ã¿ãŒã²ããã¬ã³ããŒã«æžã蟌ã¿ãŸãïŒãã«è§£å床ïŒã
éæãªå°éå ·ãšåæ§ã«ã倧æ°ã®æ£ä¹±ãšé§ã¯é ç¹ã·ã§ãŒããŒã§èšç®ãããŸãã ããã«ãããŒãã£ã¯ã«ã·ã¹ãã ã®ç¹å®ã®èšå®ã«ãããã¬ã³ãã©ãŒã¯åéæã®ç §æã®ããªã¥ãŒã ã䜿çšããŠããŒãã£ã¯ã«ãç §ããããšãã§ããŸãïŒãã¯ã»ã«ã·ã§ãŒããŒã§ãããè¡ãæ¹æ³ã®1ã€ãèŠãŸããïŒã
ééåŠçãå®äºããåã«ãã¬ã³ãã©ãŒã¯å±æãèšç®ããããã«å¥ã®ãã¹ãå®è¡ããŸãã
éæãªå°éå ·ãšç²åïŒå±æãæäŸããå¿ èŠããããŸãïŒã®äž¡æ¹ãåã³ã¬ã³ããªã³ã°ãããŠãæªã¿ãã¯ãã«ãšãšãã«ãã«è§£å床ãããã¡ãŒã«æžã蟌ãŸããŸããããã¯åŸã§å±æãèšç®ããããã«äœ¿çšãããŸãïŒãã¯ãã«ãããé¡èã«ãªãããã«ç»åãåŠçããŸããïŒã ã¹ãã³ã·ã«ãããã¡ããã®ããã»ãŒãžã§ã¢ã¯ãã£ãã«ãªããå±æãå¿ èŠãšãããã¯ã»ã«ãããŒã¯ããŸãã
DistortionApplyãã¹äžã«ãã¬ã³ãã©ãŒã¯ã¡ã€ã³ã¿ãŒã²ããã¬ã³ããŒã®ã³ã³ãã³ãïŒçŸåšã®ã¬ã³ããŒïŒãšæªã¿ãã¯ãã«ãèªã¿åããå¥åŠãªå±æãã¯ã¹ãã£ãæžã蟌ã¿ãŸãã
å±æãããã¯ã»ã«ãããŒã¯ããã¹ãã³ã·ã«ãããã¡ãã¢ã¯ãã£ããªã®ã§ãã¬ã³ãã©ãŒã¯ãã¯ã¹ãã£ãã¯ãªã¢ããå¿ èŠã¯ãããŸããã
ãã§ã«è¿°ã¹ãããã«ãå±æã®æåŸã®ãã¹ã¯ãã¹ãã³ã·ã«ãããã¡ã䜿çšããŠå±æã®ãã¯ã¹ãã£ãã¡ã€ã³ã¿ãŒã²ããã¬ã³ããŒã«åçŽã«ã³ããŒããŸãã
å³åŽã®ã¢ãŒã ãã§ã¢ã§ããŸã é©çšããŠããªãããŒãã£ã¯ã«ã«ãã£ãŠåŒãèµ·ããããå±æã«ãã§ã«æ°ã¥ããŠãããããããŸããã éæãªå°éå ·ã®å Žåãå±æã¯å°éå ·ã®ã¬ã³ããªã³ã°åŸã«ã¬ã³ããªã³ã°ãããŸãã
次ã®ããã»ãŒãžïŒ BokehDOFRecombine ïŒã¯ãæçµçã«ã·ãŒã³ã«ããŒãã£ã¯ã«ãé©çšããŸãã ããã¯ãããã»ãŒãžã®ååããå€æã§ããªãã»ã©åçŽãªã·ã§ãŒããŒã§ãïŒãããããã¬ã³ããªã³ã°èšå®ã«äŸåããŸãïŒã
åŸåŠç
ãã¬ãŒã åŠçããã»ã¹ã®æåŸã®éšåã«ã¯ãããã€ãã®åŸåŠçãã¹ãå«ãŸããŠããŸããããã«ã€ããŠç°¡åã«èª¬æããŸãã
ã·ãŒã³ãèšå®ãããšããã¬ã³ãã©ãŒã¯æéçãªå¹³æ»åãã¢ãŒã·ã§ã³ãã©ãŒãèªåé²åºããã«ãŒã ãããŒã³ãããã³ã°ã®èšç®ãã¡ã€ã³ã¿ãŒã²ããã¬ã³ããŒã«é©çšããŸãã
äžæçãªã¹ã ãŒãžã³ã°Unrealã¯å±¥æŽãããã¡ãŒã䜿çšããŠãµã³ãã«ãåŸã ã«èç©ãããã®åŸ2ã€ã®ãã¹ã§ã¬ã³ããªã³ã°ããŸãã æåã®ãã¹ã§ã¯ãã¹ãã³ã·ã«ãããã¡ãŒã«ãªããã¯ã»ã«ïŒãã®å Žåããããã¯äžéšã®ç²åã§ãïŒã«ãã¡ã€ã³ã¿ãŒã²ããã¬ã³ããŒãå±¥æŽãããã¡ãŒãåæ圱çšã®é床ãããã¡ãŒã䜿çšããŠäžæçãªAAãé©çšãããŸãã
次ã«ãã¹ãã³ã·ã«ãããã¡å ã®ããŒãã«å¯ŸããŠåæ§ã®äžæçãªAAãã¹ãå®è¡ãããã¹ã ãŒãžã³ã°ãããå®æããç»åãäœæãããŸãã
äžæçãªAAã®ããã2ã€ã®ãã¹ã®éãã¯ãæåã¯ãã¹ããªãããã¡ãŒãšçŸåšã®ã¿ãŒã²ããã¬ã³ããŒéã®æ··åä¿æ°ïŒãã£ãŒãããã¯ïŒã䜿çšããããšã§ããããã¯å¯å€ã§ããããã¯ã»ã«ã®ç §æããŠã§ã€ãã®ã¬ã³ãã©ãŒã«ãã£ãŠéä¿¡ãããè·é¢ãªã©ã«äŸåããå ŽåããããŸãã ïŒãã©ã¡ãŒã¿ã«åºã¥ããŠïŒã2çªç®ã®ãã¹ã¯0.25ã®äžå®ã®æ··åä¿æ°ã䜿çšããŸããããã¯ãã¹ã ãŒãžã³ã°ã®ããæçµãã¯ã»ã«ãäž»ã«çŸåšã®ãµã³ãã«ã§æ§æãããããšãæå³ããŸãã ããã¯ãé床æ å ±ã®ãªãé«éã§ç§»åããããŒãã£ã¯ã«ã®ããã¡ã³ãã ãå¹æãæžããããã«è¡ããããšæããŸãã
ãã®åŸãã¢ãŒã·ã§ã³ãã©ãŒã®äœæã«ç¶ããã¬ããªã³ã°ãšé床ã®å¢å ãç¶ããŸãã
ç§ãã¡ã®å Žåãã¢ãŒã·ã§ã³ã®ãã©ãŒå¹æã¯ããŸãç®ç«ã¡ãŸããããªããªããã«ã¡ã©ã¯éçã§ãé床ãæã€å¯äžã®åããŠããå°éå ·ã¯ç³ã ããã§ãïŒãããŠãåããšäžæçãªã¹ã ãŒãžã³ã°ã®ããã«ãã§ã«å°ããŒãããŠããŸãïŒã
èªåé²åºïŒç®ã®é å¿ïŒãå®è£ ããããã«ãèšç®ã·ã§ãŒããŒã䜿çšããã¬ã³ãã©ãŒã¯ãçŸåšã®ã·ãŒã³ã®ç §æã®ãã¹ãã°ã©ã ãäœæããŸãã ãã¹ãã°ã©ã ã¯ããã¯ã»ã«ã®èŒåºŠãã°ã«ãŒãåããåèŒåºŠã°ã«ãŒãã«å±ãããã¯ã»ã«ã®æ°ãèšç®ããŸãã
ãã®ã¢ãããŒãã®å©ç¹ã¯ãéåžžã«æããŸãã¯éåžžã«æããå€ãããç»åã®é åãç°¡åã«ã¹ãããããŠãã·ãŒã³ã®å¹³åç §æã®ããåççãªè¿äŒŒãäœæã§ããããšã§ãã ãã®å¹³åç §æã䜿çšããŠãã¬ã³ãã©ãŒã¯é²åºãããã«å¿ããŠèª¿æŽããããšã«ãããç®ã®é å¿ãèšç®ã§ããŸãïŒæããç»åã§ã¯é²åºãäœããªããæãç»åã§ã¯é²åºã倧ãããªããŸãïŒã
ãã«ãŒã å¹æãå®è£ ããã«ã¯ãããã€ãã®è§£å床åæžãã¹ã䜿çšããŸãããã®ãã¹ã§ã¯ãã¬ãŠã¹ãã£ã«ã¿ãªã³ã°ã䜿çšããããã®åŸã解å床ãšçµã¿åãããå¢å ãããããã€ãã®æäœãè¡ãããŸãïŒé²åºå¶åŸ¡ãªãã§ç»åãããèŠããããªãããã«ç»åãå€æŽãããŸãïŒã
PostProcessCombineLUTsãã¹ã§ã¯ããžãªã¡ããªã·ã§ãŒããŒãšããªãé·ããã¯ã»ã«ã·ã§ãŒããŒã䜿çšããŠãã«ã©ãŒã¹ã±ãŒã«ã«ãã¯ã¢ããããŒãã«ïŒããªã¥ãŒã ãã¯ã¹ãã£32x32x32 RGB10A2ïŒãäœæããŸãã ã«ãã¯ã¢ããããŒãã«ã¯ãããŒã³ãããã³ã°ã®æ®µéã§äœ¿çšãããŸãã
æåŸã®ãã¬ãŒã ãã¹ïŒ Tonemapper ïŒã¯ã以åã«èšç®ããããã«ãŒã ãšã¡ã€ã³ã¿ãŒã²ããã¬ã³ããŒãçµã¿åããã以åã«é©å¿ãããç®ã®é©å¿ã䜿çšããŠç»åã®é²åºã調æŽããã«ã©ãŒã¹ã±ãŒã«ã«ãã¯ã¢ããããŒãã«ãä»ããŠè²ã転éããŠæçµãã¯ã»ã«ã«ã©ãŒãäœæããŸãïŒ
ãŸãšãããš
ããã¯ã¬ã³ããªã³ã°ã®1ã€ã®æ¹æ³ã«ããããå€ãã®ãã©ã¡ãŒã¿ãŒãšèšå®ã®åœ±é¿ãåããå¯èœæ§ãããããšã匷調ããå¿ èŠããããŸããå®éãéåžžã«åºæ¬çãªããšã調ã¹ãŸããã
äžè¬ã«ãã¬ã³ãã©ãŒãäœããã ãã§ã¯ãªããã¬ã³ãã©ãŒãäœãããããèŠã€ãããšããäºå®ã«ãããããããããã¯èå³æ·±ã掻åã§ããããšãå€æããŸããã ãŸã å€ãã®æªèª¿æ»ãæ®ã£ãŠããã®ã§ãããäžåºŠãã®ãããã¯ã«æ»ããããšæããŸãã
Unrealã®ãœãŒã¹ã³ãŒãã¯ååã«ææžåãããŠããŸããããããªãæ確ã§ããããããã§ãã æç»åŒã³åºãã®ãªã¹ãã«åŸã£ãŠãããã«äžèŽããã³ãŒããç°¡åã«èŠã€ããããšãã§ããŸãã ãã ããå€ãã®å ŽåããœãŒã¹ã³ãŒãããã·ã§ãŒããŒãäœãè¡ãããç解ããã®ã¯ããªãå°é£ã§ãããã·ã§ãŒããŒã§ã¯æ¡ä»¶ä»ãã³ã³ãã€ã«ãç©æ¥µçã«äœ¿çšãããŠããããã§ãã ããã©ãŒãã³ã¹ã®èª¿æ»ãšãããã¡ã€ãªã³ã°ã®å©äŸ¿æ§ã®ããã«ãåŠçæžã¿ã®ç¹å¥ãªã·ã§ãŒããŒïŒååãæç»åŒã³åºãã®ãªã¹ãã«è¿œå ãããïŒãã³ã³ãã€ã«ããæºåãã§ããäœããã®äžéãã£ãã·ã¥ããããšäŸ¿å©ã§ãã
ããã©ã«ãã§ã¯ãUnrealã¬ã³ãã©ãŒã¯é«å質ã®ç»åã®äœæã«çŠç¹ãåãããŠããããã§ãã 圌ã¯ãã€ãã³ã°ããŒã¿ïŒç°å¢ãç §æãããªã¥ãŒã ãªã©ïŒãç©æ¥µçã«äœ¿çšããäžæçãªã¹ã ãŒãžã³ã°ãé©çšããŠç»è³ªãå€§å¹ ã«åäžãããŸãã
ã·ãŒã³ã«å°éå ·ãããããããããããããããã¯ããæ©äŒãããŸããªãå ŽåïŒããšãã°ãå€æ°ã®å€§ããªãªãŒããŒã©ãããªããžã§ã¯ããããå ŽåïŒããªãŒããŒã©ãããèšç®ããããã®ããã»ãŒãžãæ éã«æ€èšããå¿ èŠããããŸãã ããã«ãéæãªå°éå ·ãšããŒãã£ã¯ã«ã®å±æã«ãããäºéã¬ã³ããªã³ã°ãçºçããŸãã æåŸã«ãå€ãã®åºå®ãŸãã¯ç§»åããããŒã«ã«å æºã¯ãåå¥ã«ã¬ã³ããªã³ã°ããããããç §æã¹ããŒãžã«åœ±é¿ããŸãïŒéæå¹æãšããªã¥ãŒã å¹æã®ããã«ç §æãè¿œå ããéã®ã³ã¹ãã«å¯äžããŸãïŒã
çµè«ãšããŠãåªããRenderDocããŒã«ãæäŸããŠãããBaldurkãšã䜿çšãåŠç¿ããã¬ãŒãã³ã°ã®ããã®UnrealãœãŒã¹ã³ãŒããå ¬éããŠãããEpicã«æè¬ããŸãã