рдкреЗрд╢ рд╣реИ рд╡реЛрдХреНрд╕рд▓ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕
GameDev рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЯрдХрд░рд╛рд╡ рдХреА рдЧрдгрдирд╛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рдЦреЛрдЬ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореИрдВ idTech 6 рдЗрдВрдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд▓реЗрдЦ рднрд░ рдЖрдпрд╛ рдФрд░ рд╡реЛрдХреНрд╕рд▓ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд▓рдЧрд╛, рдЬреЛ рдХрд┐ рдмрд╣реБрднреБрдЬ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рд╡рд┐рдкрд░реАрдд рд╣реИрдВ, рдЬрд┐рд╕ рдкрд░ рд▓рдЧрднрдЧ рд╕рднреА рдХрдВрдкреНрдпреВрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЕрдм рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдХ рд╡реЙрдХреНрд╕реЗрд▓ "рд╡реЙрд▓реНрдпреВрдореЗрдЯреНрд░рд┐рдХ рдкрд┐рдХреНрд╕реЗрд▓" рдХреЗ рд▓рд┐рдП рдЦрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдПрдХ рд╡реЙрдХреНрд╕рд▓ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдЖрджрд┐рдо рд╣реИ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдПрдХ рдХреНрдпреВрдм рдпрд╛ рдЖрдпрддрд╛рдХрд╛рд░ рдмреЙрдХреНрд╕ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдФрд░ рд░рдВрдЧ рд╣реЛрддрд╛ рд╣реИред IdTech 6 рдореЗрдВ рдФрд░ рдХреЗрди рд╕рд┐рд▓реНрд╡рд░рдореИрди рд╡реЛрдХреНрд╕рд▓реИрдк рдЗрдВрдЬрди рдореЗрдВ, рд╡реЗ рдПрдХ рд╡рд┐рд░рд▓ рд╡реЛрдХреНрд╕рд▓ рдСрдХреНрдЯреНрд░реА (SVO) рдореЗрдВ рд╕рдВрдЧреНрд░рд╣рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдореЗрдореЛрд░реА рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИ рдФрд░ "рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╕реНрддрд░" рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред
рд╡реЛрдХреЗрд▓ рд╕реНрдиреЛрдореИрди рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╕реНрд╡рд░ рдРрд╕реЗ рд▓реЗрдЧреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╡рд┐рднрд┐рдиреНрди рдЖрдХрд╛рд░реЛрдВ рдХреЗ рдПрдХ рд╣реА рд╣рд┐рд╕реНрд╕реЗ (рд╕рд╛рде рд╣реА рдЫреЛрдЯреЗ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдмрдбрд╝реЗ рд▓реЛрдЧреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛) рд╕реЗ рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдореЙрдбрд▓, рдЖрдВрдХрдбрд╝реЗ рдЖрджрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкреЙрд▓реАрдЧреЙрди рдкрд░ рд╕реНрд╡рд░реЛрдВ рдХреЗ рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рд▓рд╛рднреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдирд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдХрд╛рд░реНрдпрдХреНрд░рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рд╕реНрд╡рд░ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдирд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЫреЛрдЯреЗ рд╕реНрд╡рд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЙрдирдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд╕рдорд╛рди рд╕рд╛рдордЧреНрд░реА рд╕реЗ рд╣реЛрдЧрд╛ред
Voxlap рдЗрдВрдЬрди рдкрд░ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЦреЗрд▓ рдореЗрдВ рд╡рд┐рдирд╛рд╢ рдкрд╣рд▓реЗ рдкреНрд░рдпрд╛рд╕
рдореИрдВрдиреЗ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рддреАрди рдЖрдпрд╛рдореА рд╕реНрдерд╛рди рдкрд░ рддреВрдлрд╛рди рдХрд░рдиреЗ рдХреА рд╣рд┐рдореНрдордд рдирд╣реАрдВ рдХреА - рд╕реВрддреНрд░реЛрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдЬрд┐рд╕реЗ рдореБрдЭреЗ рдорд╛рд╕реНрдЯрд░ рдХрд░рдирд╛ рдерд╛ (рд╡реЗ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ) рдмрд╣реБрдд рднрдпрд╛рд╡рд╣ рд▓рдЧ рд░рд╣рд╛ рдерд╛, рдФрд░ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдорд░ "рдмреЙрдХреНрд╕" - рд╡рд░реНрдЧ, рдФрд░ рддрджрдиреБрд╕рд╛рд░ рдПрдХ рд╡рд┐рд░рд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рди рд╣реЛрдВред рдПрдХ рдЕрд╖реНрдЯ рдкреЗрдбрд╝, рдФрд░ рдПрдХ рд╡рд┐рд░рд▓ рдкреЗрдбрд╝ рдореЗрдВред
рдкрд╣рд▓рд╛ рдХреЛрдб рднрдпрд╛рдирдХ рдерд╛ - рдПрдХ рдкреЗрдбрд╝ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рднреА рдХрд╛рд░реНрдп, рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдкреЗрдбрд╝ рдХреЛ рд╣рдЯрд╛рдирд╛, рдПрдХ рдкреЗрдбрд╝ рдХреЛ рдХрд╛рдЯрдирд╛, рдиреЛрдбреНрд╕ рдмрдирд╛рдирд╛, рдХреНрд╡рд╛рдЯрд░рдЯреНрд░реА рдХреНрд▓рд╛рд╕ рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдХрд╛рд░реНрдп рдереЗред рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдХрдХреНрд╖рд╛ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рднреВрдорд┐рдХрд╛ рдирд╣реАрдВ рдирд┐рднрд╛рддрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдмрд╛рдж рдореЗрдВ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдмрд╣реБрдд рд▓рд╛рдн рд╣реЛрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдЗрди рдкрд╣рд▓реЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЛ рдЙрдкрдпреЛрдЧреА рдмрдирд╛рддреА рд╣реИ, рд╡рд╣ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╡рд┐рд╡рд░рдг рдерд╛ рдХрд┐ рдореБрдЭреЗ рдХрд┐рди рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕реА ++ рдкреЗрдбрд╝реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдмрд╛рдж рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдХреА рдФрд░ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ, рдЕрднреА рднреА рдорджрдж рдорд┐рд▓реЗрдЧреАред рдФрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рдкрд╣рд▓рд╛ рдкреНрд░рдпрд╛рд╕ рдерд╛ рдЬрд┐рд╕рдиреЗ рд╣рдореЗрдВ рдУрдкрдирдЬреАрдПрд▓ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ Direct2D рдХреЛ рдкрд╣рд▓реЗ рдмрд╣рдХрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЬрд▓реНрджреА рдЗрд╕рдореЗрдВ рдирд┐рд░рд╛рд╢ рд╣реЛ рдЧрдП)ред
рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдЖрдпрддрди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди
рдореИрдВрдиреЗ NeHe gamedev рдкрд░ OpenGL рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдХрд┐рд╕реА рддрд░рд╣ рдмрд╣реБрдд рддреЗрдЬрд╝реА рд╕реЗ рддреАрди-рдЖрдпрд╛рдореА рд╕реНрдерд╛рди рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рдХреНрд╡реЗрдХ-рдЬреИрд╕реЗ рдЧреЗрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЬрди рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рд▓рдЧрд╛ред рдХреНрд╡рд╛рдб рдЯреНрд░реА рдХреЛ рдСрдХреНрдЯреНрд░реА рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдФрд░ рдкрд╣рд▓реА рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рд╢реБрд░реВ рд╣реБрдИрдВред рдСрдХреНрдЯреЛ-рдЯреНрд░реА рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рднрд▓реЗ рд╣реА рд╕рднреА рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдп рдкреБрдирд░рд╛рд╡рд░реНрддреА рдмрди рдЧрдП рд╣реЛрдВ, рдлрд┐рд░ рднреА рд╡реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордп рдФрд░ рд╕реНрдореГрддрд┐ рдмрд┐рддрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
рдореЗрдореЛрд░реА рдЕрдиреБрдХреВрд▓рди
рдСрдХреНрдЯреНрд░реА рдореЗрдВ, рдЕрдХреНрд╕рд░ рдирдП / рд╣рдЯрд╛рдП рдЧрдП рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдбрд╛рдпрдиреЗрдорд┐рдХ рдореЗрдореЛрд░реА (рд╣реАрдк) рдореЗрдВ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдбрд╛рдпрдиреЗрдорд┐рдХ рдореЗрдореЛрд░реА рд╕реНрдЯреИрдЯрд┐рдХ (рд╕реНрдЯреИрдХ) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдореА рд╣реИ, рдФрд░ рдирдП / рдбрд┐рд▓реАрдЯ рдлрдВрдХреНрд╢рдВрд╕ рдЦреБрдж рднреА рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдзреАрдореЗ рдереЗред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ MemoryPool рд╡рд░реНрдЧ рдФрд░ mem_pool_tree рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓рд┐рдЦреЗ рдЧрдП рдереЗред
mem_pool_tree рдПрдХ BST рдЯреНрд░реА рдХреА рдЫрд╛рдк рдХреЗ рддрд╣рдд рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдореБрдЭреЗ T. Corman рдХреА рдкреБрд╕реНрддрдХ "Algorithmsред рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдПрдВрдб рдПрдирд╛рд▓рд┐рд╕рд┐рд╕" рд╕реЗ рдорд┐рд▓рд╛ рдерд╛, рдФрд░ рдпрд╣ рд╕реАрдзреЗ рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдмрд╛рдж рдореЗрдВ рд╕рд░рдгреА рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рд╢рд┐рдлреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдерд┐рд░ рд╕реНрдореГрддрд┐ рдХреНрд╖реЗрддреНрд░ред рд╡рд┐рд▓реЛрдкрди рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рд╕реНрдореГрддрд┐ рдХреЗ "рд╕рд╣реА" рдЯреБрдХрдбрд╝реЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдерд╛, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдмреАрдПрд╕рдПрд╕ рдХреЗ рдкреЗрдбрд╝ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдФрд░ рдореЛрдбрд╝ рд▓рд┐рдпрд╛ рдФрд░ "рдЕрд╡рд░реБрджреНрдз" рдЬреЛрдбрд╝ рджрд┐рдпрд╛ - рдореЗрдо_рдкреБрд▓_рдЯреНрд░реА рд╕реНрдЯреЛрд░ рдиреЛрдбреНрд╕ рдЬрд┐рд╕рдореЗрдВ рдмреНрд▓реЙрдХ рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рдореЗрдВ рд╕реНрдЯреЛрд░ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рджреЛ рдФрд░ рдЪрд░ - рдХрдмреНрдЬреЗ рд╡рд╛рд▓реЗ рд╕реНрдерд╛рди рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрддред рдпрджрд┐ рдХрдмреНрдЬреЗ рд╡рд╛рд▓реА рдЬрдЧрд╣ рдХреЗ рдмреАрдЪ рдореЗрдВ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдиреЛрдб рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрджрд┐ рдХрд┐рд╕реА рдЯреБрдХрдбрд╝реЗ рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдРрд╕реЗ рдмреНрд▓реЙрдХ рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЕрдВрддрд░рд┐рдХреНрд╖ рдХрд╛ рдЖрд╡рдВрдЯрди рдЗрд╕реЗ рдкрдбрд╝реЛрд╕реА рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдФрд░ рд╕рдВрддреБрд▓рди рд╕рдорд╛рд░реЛрд╣ рдХреЛ рд╕рдордп-рд╕рдордп рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдмрд╣реБ рд╕реВрддреНрд░рдг
рдкреЗрдбрд╝ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдХрд╛рд░рдг, рдЬрд┐рд╕рдореЗрдВ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдиреЛрдб рдореЗрдВ рдЖрда рдмрд╛рд▓ рдиреЛрдбреНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рд╣реЛрддрд╛ рд╣реИ, рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдЯреНрд░реА рд╡реЙрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдЬреИрд╕реЗ рдХрд┐ рдкреВрд░реЗ рдкреЗрдбрд╝ рдХреЛ рд╣рдЯрд╛рдирд╛, рдЕрдирд╛рд╡рд╢реНрдпрдХ рддрддреНрд╡реЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛, рдФрд╕рдд рд╕реНрд╡рд░реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛, рдЖрджрд┐) рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред OpenMP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреЗрдбрд╝ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрда рдмрдЪреНрдЪреЗ рдиреЛрдбреНрд╕ рдХреЛ рдХреНрдпреЛрдВ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ, рдпрджрд┐ рдЖрдк рдЙрдирдХреЗ рд░рдВрдЧ рдХреЛ рдореВрд▓ рдиреЛрдб рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ)ред рд╣рдореЗрдВ рдПрд╣рд╕рд╛рд╕ рд╣реЛрддрд╛ рд╣реИ:
class Octree { class Node { Node * son; void Optimize(); }; void Optimize() { #pragma omp parallel { #pragma omp for for(int n = 0; n<8; ++n) { son[n].Optimize(); } } } };
рдЪреВрдВрдХрд┐ рдмрдЪреНрдЪреЗ рдХреЗ рдиреЛрдбреНрд╕ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЖрдкрд╕ рдореЗрдВ рдЬреБрдбрд╝реЗ рд╣реБрдП рдирд╣реАрдВ рд╣реИрдВ, рдРрд╕реЗ рдСрдкрд░реЗрд╢рди рдореЗрдВ рдореНрдпреВрдЯреЗрдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдиреНрдпреВрдирддрдо рд╕реНрдореГрддрд┐ рд▓рд╛рдЧрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╕реНрд╡рд░ рдХреА рдмрдЪрдд
рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реНрд╡рд░реЛрдВ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреА рдЗрд╖реНрдЯрддрдо рд╡рд┐рдзрд┐ рддрд▓рд╛рд╢рдиреА рдереА - рдХреНрдпреЛрдВрдХрд┐ рдРрд╕реА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЬрдм рд░реИрдо рдореВрд▓реНрдпрд╡рд╛рди рд╣реИ, рд░реИрдо рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрд╡рд░реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдПрдХ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд▓рдХреНрдЬрд░реА рд╣реИред рдмрд╣реБрдд рдЦреЛрдЬ рдХреЗ рдмрд╛рдж, рдкрд╕рдВрдж SQLite3 рдерд╛, рдЬрд┐рд╕рдореЗрдВ рдХреИрд╢рд┐рдВрдЧ рд╣реИ, рд╕рд╛рде рд╣реА рдХреЗрд╡рд▓ рдЙрди рд╕реНрд╡рд░реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ рдЬреЛ "рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╕реНрддрд░" рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред SQLite3 рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдХрд╛рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдФрд░ рдЖрддреНрдо-рд╕рдВрдХрд▓рди рдореЗрдВ sqlite3 рд╕реНрд░реЛрдд рдХреЛрдб рдПрдореНрдмреЗрдб рдХрд░рддреЗ рд╕рдордп рд╣реБрдЖ (рдореБрдЭреЗ рд╕рдЯреАрдХ рд╕рдВрдЦреНрдпрд╛ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди 200-250 рдПрдордПрд╕ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛ рдорд┐рд▓рд┐рдпрди рдЪрд░ рдФрд░ рдЗрдВрдЯреЗрд▓ рдПрдЯрдо рдХреЗ рд╕рд╛рде рдиреЗрдЯрдмреБрдХ рдкрд░ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ)ред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, SQLite3 "рд╢реБрд░реБрдЖрддреА рд▓реЗрдирджреЗрди?", "рдкреНрд░рддрд┐рдмрджреНрдз рд▓реЗрди-рджреЗрди;", "PRAGMA journal_mode = MEMORY;", "PRAGMA рд╕рд┐рдВрдХреНрд░реЛрдирд╕ = рдСрдлрд╝;" рдЖрджрд┐
рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ
рджрд░рдЕрд╕рд▓, рдпрд╣рд╛рдВ рдореИрдВ рдЫреЛрдЯреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рджрд┐рдЦрд╛рдКрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб рдХрд╛ рд╡рд░реНрдгрди рдЬреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЪрд░рдг рдореЗрдВ рд╣реИ, рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИред рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕, рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рд╕рд╛рдорд╛рдиреНрдп рдЬрдЯрд┐рд▓ рдореЙрдбрд▓ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдпрд╛ рдореМрдЬреВрджрд╛ рд▓реЛрдЧреЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣рд╛рде рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпреЗ рдмрд╣реБрдд рдкрд╣рд▓реЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╣реИрдВ, рдФрд░ рд░реЗрдЦрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП GDI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдЫреЛрдЯрд╛ рдХреЛрдб рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, OpenGL рдирд╣реАрдВ, рдФрд░ рд░реЗ рдЕрдиреБрд░реЗрдЦрдг рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдЪрдХреНрд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рд╕реАрдкреАрдпреВ рдкрд░ рд░реЛрдЯреЗрд╢рди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧрдгрдирд╛ рдФрд░ рдЕрдиреНрдп рдЧрдгрдирд╛ рдХреА рдЧрдИ рдереАред
рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╡рд░реНрддрдорд╛рди рдЪреБрдиреМрддрд┐рдпрд╛рдВ рдФрд░ рдирд┐рд╖реНрдХрд░реНрд╖
рдмрд╣реБрд░реВрдкрддрд╛
рдЕрдм рдСрдХреНрдЯреНрд░реА рдХреЛ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдмрд╣реБрд░реВрдкрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдкреЗрдбрд╝ рдХреЛ рд╢реБрджреНрдз рдСрдХреНрдЯреНрд░реА рдкреЗрдбрд╝ рдирд╣реАрдВ рдмрдирд╛рдирд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдХреЗрдбреА-рдЯреНрд░реА (рдПрдХ рдкреЗрдбрд╝ рдЬрд┐рд╕рдореЗрдВ 8 рдЫреЛрдЯреЗ рд╕реНрд╡рд░реЛрдВ рдореЗрдВ рдПрдХ рд╕реНрд╡рд░ рдХрд╛ рд╡рд┐рднрд╛рдЬрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрдиреБрдкрд╛рдд рдФрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рджреЛ рд╕реНрд╡рд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИ), рдФрд░ рдЕрдиреНрдп рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдХреНрд░реЙрд╕ рд╣реИред
RayCasting
рдСрдХреНрдЯреНрд░реА рдЯреНрд░реА рд░реЗ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ , "рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХрд┐рд░рдгреЛрдВ" рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореИрдВ рдЕрдм рдПрдХ рд░реИрд╕реНрдЯрд░рд╛рдЗрдЬрд╝рд░ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдУрдкрдирдЬреАрдПрд▓ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╕рд░рдгреА рд╕реЗ рдмрдирд╛рд╡рдЯ рдкреАрдврд╝реА рдФрд░ рдмрд╣реБрднреБрдЬ рдкрд░ рдЗрд╕рдХрд╛ рдкреНрд░рджрд░реНрд╢рди), "рд╕рдореВрд╣ рдЕрдиреБрд░реЗрдЦрдг" рдФрд░ рд╕реА ++ рдПрдПрдордкреА ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ r-tracing.ru рдкрд░ рдмрддрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред
рдирд┐рд╖реНрдХрд░реНрд╖
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╡рд┐рд╖рдп рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдФрд░ рдЖрдк рдЗрд╕ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдПрдЯрдореЙрдиреНрдЯреЗрдЬ рдЗрдВрдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдм рдкрд░ рдПрдХ рд▓реЗрдЦ рдФрд░ рдПрд╕рдЖрдИрдЬреАрдЖрд░рдПрдкреАрдПрдЪ 2012 рдХреЗ рд╕рд╛рде рдПрд╕рд╡реАрдУ рддрдХрдиреАрдХ рдХреА рдкреНрд░рд╕реНрддреБрддрд┐ ред
рдпреБрдкреАрдбреА
рд╕реНрдореГрддрд┐ рдЖрдмрдВрдЯрди рд╡рд░реНрдЧ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рд╕реНрдерд┐рд░ рдореЗрдореЛрд░реА рдореЗрдВ рдПрдХ рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦрд╛ рдерд╛, рдорд╛рдк рдХреЗ рдмрд╛рдж, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбреЗрдЯрд╛ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд┐рдпрд╛:
- 100 рдмрд╛рдЗрдЯреНрд╕ рдХреА 20 рдорд┐рд▓рд┐рдпрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╣рдЯрд╛рдирд╛ (рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдпрд╣ рд╕рдм 220 рдПрдордмреА рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЧрдпрд╛) 2-3 рд╕реЗрдХрдВрдб рд▓рдЧреЗ (рдмреЗрд╢рдХ, рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)
- рдореИрдВрдиреЗ рд╕реНрдореГрддрд┐ рдХреЗ рдЖрд╡рдВрдЯрди рдХреЛ рдорд╛рдкрдиреЗ рдореЗрдВ рдПрдХ рд▓рдВрдмрд╛ рд╕рдордп рдмрд┐рддрд╛рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо 4-5 рд╕реЗрдХрдВрдб рдореЗрдВ 8 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ 50 рдорд┐рд▓рд┐рдпрди рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рддреАрдд рд╣реБрдП
- рдкрдврд╝рдирд╛ рддреЗрдЬ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдЯреИрдХ рдореЗрдореЛрд░реА рдвреЗрд░ рдореЗрдореЛрд░реА рд╕реЗ рддреЗрдЬ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдореИрдВ рдФрд╕рдд рдЧрддрд┐ рдЕрдВрддрд░ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
- рдЬрдм рдореИрдВрдиреЗ 50 рдорд┐рд▓рд┐рдпрди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдбрд╛рдпрдиреЗрдорд┐рдХ рдореЗрдореЛрд░реА рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдирдП рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдиреЗ рдореБрдЭреЗ рдЕрдкрд╡рд╛рдж std :: bad_alloc рдлреЗрдВрдХ рджрд┐рдпрд╛, рдФрд░ рдЬрдм рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд╛рдИ-рдХреИрдЪ рд▓рд┐рдЦрд╛, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдиреЗ рдореЗрдореЛрд░реА рд▓реЛрдб рдХрд░ рджреА рддрд╛рдХрд┐ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд▓рдЧрднрдЧ рд╕рднреА рд░рдирд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд░реИрд╢ рд╣реЛ рдЧрдП ред