рдбрд┐рдЬреНрдиреА рдХрд╛рд░реНрдЯреВрди "рдореЛрдЖрдирд╛" рд╕реЗ рдПрдХ рджреГрд╢реНрдп рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд╛ рдЕрдиреБрдХреВрд▓рдиред рднрд╛рдЧ реи

рдЫрд╡рд┐

рдбрд┐рдЬреНрдиреА рдХреА рдореЛрдЖрдирд╛ рдХрд╛рд░реНрдЯреВрди рд╕реЗ рдПрдХ рджреНрд╡реАрдк рдХреЗ рджреГрд╢реНрдп рдХреЗ рд╡рд░реНрдгрди рдХреЗ рд╕рд╛рде рдкрд╣рд▓реА рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдЬреАрдд рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реЛрдХрд░, рдореИрдВ рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ рдХреЗ рдЕрдзреНрдпрдпрди рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝ рдЧрдпрд╛ред рдЕрднреА рднреА рдореБрдЦреНрдп рд╕рдордп рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдХреБрдЫ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдореИрдВрдиреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЖрдБрдХрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде рд░рдирдЯрд╛рдЗрдо рдЬрд╛рдВрдЪ рд╢реБрд░реВ рдХреА; pbrt рдореЗрдВ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореЗрдореЛрд░реА рдПрд▓реЛрдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдореИрдиреНрдпреБрдЕрд▓ рд╕реЗрдЯрд┐рдВрдЧ рд╣реИ, рдФрд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдкреВрд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рд░рд┐рдкреЛрд░реНрдЯ рдХреНрдпрд╛ рд╣реИ:


BVH- 9,01
1,44
MIP- 2,00
11,02


рд░рдирдЯрд╛рдЗрдо рдХреЗ рд▓рд┐рдП, рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЖрдБрдХрдбрд╝реЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдФрд░ рдХреЗрд╡рд▓ 24 рдЬреАрдмреА рдЖрдХрд╛рд░ рдХреА рдЬреНрдЮрд╛рдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдХреА рд╕реВрдЪрдирд╛ рджреЗрддреЗ рд╣реИрдВред top рдиреЗ рдХрд╣рд╛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рдЧрднрдЧ 70 рдЬреАрдмреА рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЕрд░реНрдерд╛рдд, рдЖрдВрдХрдбрд╝реЛрдВ рдореЗрдВ 45 рдЬреАрдмреА рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдЫреЛрдЯреЗ рд╡рд┐рдЪрд▓рди рдХрд╛рдлреА рд╕рдордЭ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ: рдЧрддрд┐рд╢реАрд▓ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрди рдЙрдкрдпреЛрдЧ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдХреБрдЫ рд╡рд┐рдЦрдВрдбрди рдХреЗ рдХрд╛рд░рдг рдЦреЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рд▓реЗрдХрд┐рди 45 рдЬреАрдмреА? рдХреБрдЫ рдмреБрд░рд╛ рдЬрд░реВрд░ рдпрд╣рд╛рдВ рдЫрд┐рдкрд╛ рд╣реИред

рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдпрд╛рдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдордиреЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рд╣реИ), рдореИрдВрдиреЗ рдЧрддрд┐рд╢реАрд▓ рдореЗрдореЛрд░реА рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрд╡рдВрдЯрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рд╕рд┐рдл рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдпрд╣ рдзреАрдорд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдкреБрд░рд╛рддрди


рдЬрдм рдореИрдВрдиреЗ рджреНрд░рд╡реНрдпрдорд╛рди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рддреЛ рдкрд╣рд▓реА рдЪреАрдЬрд╝ рдХреЛрдб рдХреА рджреЛ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдереА рдЬреЛ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ Primitive рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЧрдИ рдереА, рдЬреЛ рдХрд┐ рдЖрдВрдХрдбрд╝реЛрдВ рдореЗрдВ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдирд┐рд░реАрдХреНрд╖рдг рдЬрд┐рд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ ред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦрддреЗ рд╣реИрдВ:

Primitives 24,67

рдУрд╣-рд╡рд╣ред рддреЛ рдПрдХ рдЖрджрд┐рдо рдХреНрдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╕рдм рд╕реНрдореГрддрд┐ рдХреНрдпреЛрдВ рд╣реИ?

pbrt Shape рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╢реБрджреНрдз рдЬреНрдпрд╛рдорд┐рддрд┐ (рдЧреЛрд▓рд╛, рддреНрд░рд┐рднреБрдЬ, рдЖрджрд┐) рдФрд░ Primitive , рдЬреЛ рдЬреНрдпрд╛рдорд┐рддрд┐, рд╕рд╛рдордЧреНрд░реА, рдХрднреА-рдХрднреА рд╡рд┐рдХрд┐рд░рдг рдХрд╛ рдХрд╛рд░реНрдп рдФрд░ рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреА рд╕рддрд╣ рдХреЗ рдЕрдВрджрд░ рдФрд░ рдмрд╛рд╣рд░ рд╢рд╛рдорд┐рд▓ рдорд╛рдзреНрдпрдо рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╣реИред

Primitive рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ: GeometricPrimitive , рдЬреЛ рдПрдХ рдорд╛рдирдХ рдорд╛рдорд▓рд╛ рд╣реИ: рдЬреНрдпрд╛рдорд┐рддрд┐, рд╕рд╛рдордЧреНрд░реА, рдЖрджрд┐ рдХрд╛ рдПрдХ "рд╡реИрдирд┐рд▓рд╛" рд╕рдВрдпреЛрдЬрди, рд╕рд╛рде рд╣реА рд╕рд╛рде TransformedPrimitive , рдЬреЛ рдЗрд╕ рдкрд░ рд▓рд╛рдЧреВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрджрд┐рдо рд╣реИ, рдпрд╛ рддреЛ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╛ рдкреНрд░рд╛рдЗрдореЗрдЯрд┐рд╡ рдХреЗ рд▓рд┐рдПред рд╕рдордп рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рд╡рд╛рд▓реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рдеред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЗрд╕ рджреГрд╢реНрдп рдореЗрдВ рдпреЗ рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░ рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреА рдмрд░реНрдмрд╛рджреА рд╣реИрдВред

рдЬрд┐рдпреЛрдореЗрдЯреНрд░рд┐рдХрдкреНрд░рд┐рдореЗрдЯрд┐рдХ: 50% рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдерд╛рди


рдиреЛрдЯ: рдЗрд╕ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЗрдВ рдХреБрдЫ рдЧрд▓рдд рдзрд╛рд░рдгрд╛рдПрдВ рдмрдиреА рд╣реИрдВ; рдЙрдиреНрд╣реЗрдВ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдЪреМрдереЗ рдкрдж рдореЗрдВ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

4.3 рдЬреАрдмреА рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ GeometricPrimitive рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ GeometricPrimitive ред рдпрд╣ рдПрдХ рдРрд╕реА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрд╝реЗрджрд╛рд░ рд╣реИ рдЬрд╣рд╛рдБ 4.3 рдЬреАрдмреА рдХреА рд░реИрдо рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдЖрдкрдХреА рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ 4.3 рдЬреАрдмреА рдХрд╛ GeometricPrimitive рдХрд╣рд╛рдВ рд╕реЗ рдорд┐рд▓рд╛ред рдпрд╣рд╛рдБ рд╡рд░реНрдЧ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рднрд╛рдЧ рджрд┐рдП рдЧрдП рд╣реИрдВ:

 class GeometricPrimitive : public Primitive { std::shared_ptr<Shape> shape; std::shared_ptr<Material> material; std::shared_ptr<AreaLight> areaLight; MediumInterface mediumInterface; }; 

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ MediumInterface рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд╣реИ , рддреАрди рдФрд░ рдкреЙрдЗрдВрдЯрд░реНрд╕ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдПрдХ MediumInterface рдЬрд┐рд╕рдореЗрдВ 48 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдХреБрд▓ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рджреЛ рдФрд░ рдкреЙрдЗрдВрдЯрд░реНрд╕ рд╣реИрдВред рдЗрд╕ рджреГрд╢реНрдп рдореЗрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рдкреНрд░рдХрд╛рд╢ рдЙрддреНрд╕рд░реНрдЬрдХ рдореЗрд╖ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП areaLight рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдПрдХ рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ рд╣реИ, рдФрд░ рджреГрд╢реНрдп рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рд╡рд╛рддрд╛рд╡рд░рдг рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рджреЛрдиреЛрдВ mediumInterface рд╕реВрдЪрдХ mediumInterface рднреА рдЕрд╢рдХреНрдд рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Primitive рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдерд╛, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдХрд┐рд░рдг рдФрд░ рдордзреНрдпрдо рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛, рддреЛ рд╣рдо рд▓рдЧрднрдЧ 2 GB - GeometricPrimitive рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬрд╛ рдХреА рдЧрдИ рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреЛ рдмрдЪрд╛рдПрдВрдЧреЗ - рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд▓рдЧрднрдЧ 2 рдЬреАрдмреАред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВрдиреЗ рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рдирдП Primitive рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ред рд╣рдо рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдЧреАрдердм рдФрд░ рдореЗрд░реА рдХрд┐рддрд╛рдм рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдкреНрд░рдгрд╛рд▓реА рдкрд░ pbrt-v3 рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ - рдЙрдиреНрд╣реЗрдВ рд╕рд┐рдВрдХ рдореЗрдВ рд░рдЦрдиреЗ рд╕реЗ рдкреБрд╕реНрддрдХ рдХреЛ рдкрдврд╝рдирд╛ рдФрд░ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдХрд┐рддрд╛рдм рдореЗрдВ рдХрднреА рднреА рдЙрд▓реНрд▓реЗрдЦрд┐рдд Primitive рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрдВрддрд░ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдлрд┐рдХреНрд╕ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ pbrt рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред

рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВ:


рдлрд┐рд▓реНрдо "рдореЛрдЖрдирд╛" рд╕реЗ рджреНрд╡реАрдк рд╕реЗ рд╕рдореБрджреНрд░ рддрдЯ 2048x858 рдХреЗ рд╕рдВрдХрд▓реНрдк рдХреЗ рд╕рд╛рде pbrt-v3 рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдореЗрдВ 256 рдирдореВрдиреЗ рд╣реИрдВред Google рдХрдВрдкреНрдпреВрдЯ рдЗрдВрдЬрди рдХреЗ 12-рдХреЛрд░ / 24-рдереНрд░реЗрдб рдЙрджрд╛рд╣рд░рдг рдкрд░ 2 GHz рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде pbrt-v3 рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХреБрд▓ рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕рдордп 2 рдШрдВрдЯреЗ 25 рдорд┐рдирдЯ 43 рд╕реЗрдХрдВрдб рдерд╛ред

рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдордкреНрд░реИрдЯрд┐рд╡: 95% рдмрд░реНрдмрд╛рдж рдЕрдВрддрд░рд┐рдХреНрд╖


4.3 рдЬреАрдмреА GeometricPrimitive рддрд╣рдд рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдХрд╛рдлреА рджрд░реНрджрдирд╛рдХ рд╣рд┐рдЯ рдереА, рд▓реЗрдХрд┐рди TransformedPrimitive рддрд╣рдд 17.4 рдЬреАрдмреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?

рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, TransformedPrimitive рдЙрдкрдпреЛрдЧ рд╕рдордп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╣рдореЗрдВ рдореМрдЬреВрджрд╛ Primitive рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред TransformedPrimitive рд╡рд░реНрдЧ рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рд╕рджрд╕реНрдп рд╣реИрдВ:

  std::shared_ptr<Primitive> primitive; const AnimatedTransform PrimitiveToWorld; 

рдЕрдм рддрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ: рдПрдХ рдЖрджрд┐рдо рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ рдФрд░ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рдЬреЛ рд╕рдордп рдХреЗ рд╕рд╛рде рдмрджрд▓рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ AnimatedTransform рдореЗрдВ рдХреНрдпрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ?

  const Transform *startTransform, *endTransform; const Float startTime, endTime; const bool actuallyAnimated; Vector3f T[2]; Quaternion R[2]; Matrix4x4 S[2]; bool hasRotation; struct DerivativeTerm { // ... Float kc, kx, ky, kz; }; DerivativeTerm c1[3], c2[3], c3[3], c4[3], c5[3]; 

рджреЛ рд╕рдВрдХреНрд░рдордг рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рд╕рдордп рдХреЗ рд╕рдВрдХреЗрдд рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ, рд░реЛрдЯреЗрд╢рди рдФрд░ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдШрдЯрдХреЛрдВ рдореЗрдВ рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХрд╛ рдЕрдкрдШрдЯрди рднреА рд╣реЛрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдореВрд╡рд┐рдВрдЧ рдмреЙрдХреНрд╕реЛрдВ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд┐рдП рдЧрдП рд╡реЙрд▓реНрдпреВрдо рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреВрд░реНрд╡-рдкрд░рд┐рдХрд▓рд┐рдд рдорд╛рди рд╣рдорд╛рд░реА рдкреБрд╕реНрддрдХ рдХреЗ 2.4.9 рдЕрдиреБрднрд╛рдЧ рджреЗрдЦреЗрдВред рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рддрд┐рдкрд╛рджрди )ред рдпрд╣ рд╕рдм 456 рдмрд╛рдЗрдЯ рддрдХ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдЗрд╕ рд╕реАрди рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдЪрд▓рддрд╛ рд╣реИред рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рд╣рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЕрдкрдШрдЯрди рдФрд░ рдЬрдВрдЧрдо рдмрд╛рдЙрдВрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред (рд╡рд╣ рд╣реИ, рдХреЗрд╡рд▓ 8 рдмрд╛рдЗрдЯреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред рдпрджрд┐ рдЖрдк рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдирд┐рд╢реНрдЪрд┐рдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ Primitive рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ 17.4 рдЬреАрдмреА рдХреБрд▓ 900 рдПрдордмреА (!) рдореЗрдВ рд╕рдВрдХреБрдЪрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред

GeometricPrimitive рд░реВрдк рдореЗрдВ, рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдПрдХ рдЧреИрд░-рддреБрдЪреНрдЫ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ рдЬреЛ рдкреБрд╕реНрддрдХ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рднреА рд╕реНрдердЧрд┐рдд рдХрд░ рджреЗрдВрдЧреЗред рдХрдо рд╕реЗ рдХрдо рдЕрдм рд╣рдо рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ 24.7 рдЬреАрдмреА рдХреА Primitive рдореЗрдореЛрд░реА рдХреЗ рдЕрд░рд╛рдЬрдХрддрд╛ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред

рд░реВрдкрд╛рдВрддрд░рдг рдХреИрд╢ рдХреЗ рд╕рд╛рде рдкрд░реЗрд╢рд╛рдиреА


рдорд╛рд╕рд┐рдл рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдмреЗрд╣рд┐рд╕рд╛рдм рдореЗрдореЛрд░реА рдХрд╛ рдЕрдЧрд▓рд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдмреНрд▓реЙрдХ TransformCache рдерд╛, рдЬрд┐рд╕рдиреЗ рд▓рдЧрднрдЧ 16 рдЬреАрдмреА рдХрд╛ рдХрдмреНрдЬрд╛ рдХрд┐рдпрд╛ рдерд╛ред (рдпрд╣рд╛рдВ рдореВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдПрдХ рдХрдбрд╝реА рд╣реИред) рдпрд╣ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдПрдХ рд╣реА рдкрд░рд┐рд╡рд░реНрддрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ рджреГрд╢реНрдп рдореЗрдВ рдХрдИ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдореЗрдореЛрд░реА рдореЗрдВ рдЗрд╕рдХреА рдПрдХ рдкреНрд░рддрд┐ рд░рдЦрдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рддрддреНрд╡ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ рд░реВрдкрд╛рдВрддрд░рдгред

TransformCache рдиреЗ рдХреИрд╢ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП std::map рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ рдорд╛рд╕рд┐рдл рдиреЗ рдмрддрд╛рдпрд╛ рдХрд┐ 16 GB рдореЗрдВ рд╕реЗ 6 рдХрд╛ рдЙрдкрдпреЛрдЧ std::map рдореЗрдВ рдмреНрд▓реИрдХ-рд░реЗрдб рдЯреНрд░реА рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рднрдпрд╛рдирдХ рд╣реИ: рдЗрд╕ рдорд╛рддреНрд░рд╛ рдХрд╛ 60% рд╕реНрд╡рдпрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЗрдП рдЗрд╕ рд╡рд┐рддрд░рдг рдХреА рдШреЛрд╖рдгрд╛ рдХреЛ рджреЗрдЦреЗрдВ:

 std::map<Transform, std::pair<Transform *, Transform *>> cache; 

рдпрд╣рд╛рдВ, рдХрд╛рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: Transform рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рднреА рдмреЗрд╣рддрд░, pbrt Transform рджреЛ 4x4 рдореИрдЯреНрд░рд┐рд╕реЗрд╕ (рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдореЗрд╢рди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдФрд░ рдЗрд╕рдХреЗ рдЙрд▓реНрдЯреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕) рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреЗрдбрд╝ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдореЗрдВ 128 рдмрд╛рдЗрдЯреНрд╕ рдЬрдорд╛ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рд╕рдм рдЙрд╕рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣реАрдд рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИред

рд╢рд╛рдпрдж рдРрд╕реА рд╕рдВрд░рдЪрдирд╛ рдПрдХ рдРрд╕реА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдЬрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдПрдХ рд╣реА рдкрд░рд┐рд╡рд░реНрддрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕реИрдХрдбрд╝реЛрдВ рдпрд╛ рд╣рдЬрд╛рд░реЛрдВ рдкреНрд░рд╛рдЗрдореЗрдЯрд┐рд╡реНрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдХрдИ рдкрд░рд┐рд╡рд░реНрддрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬреНрдпрд╛рджрд╛рддрд░ рдЕрдиреВрдареЗ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдореЗрд╢рди рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдПрдХ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рднрдпрд╛рдирдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред

рдЗрд╕ рддрдереНрдп рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐ рдЕрдВрддрд░рд┐рдХреНрд╖ рдЪрд╛рдмрд┐рдпреЛрдВ рдкрд░ рдмрд░реНрдмрд╛рдж рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд▓рд╛рд▓-рдХрд╛рд▓реЗ рдкреЗрдбрд╝ рдХреЛ рдкреАрдЫреЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП std::map рдореЗрдВ рдПрдХ рдЦреЛрдЬ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕реВрдЪрдХ рд╕рдВрдЪрд╛рд▓рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдпрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХрд╕рдВрдЧрдд рд▓рдЧрддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдкреБрд╕реНрддрдХ рдореЗрдВ TransformCache рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред

рдФрд░ рдЕрдВрддрд┐рдо, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдЖрд░рдВрдн рдХрд░реЗрдВ: Lookup() рдкрджреНрдзрддрд┐ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддреА рд╣реИ:

 void Lookup(const Transform &t, Transform **tCached, Transform **tCachedInverse) 

рдЬрдм рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди Transform рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХреИрд╢ рд╕рд╣реЗрдЬрддрд╛ рд╣реИ рдФрд░ рд░реВрдкрд╛рдВрддрд░рдг рдмрд┐рдВрджреБ рдХреЛ рдПрдХ рдкрд╛рд╕ рдХреЗ рдмрд░рд╛рдмрд░ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд▓рдЯрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рднреА рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рдВрднрд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдЬрдм рдХреИрд╢ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╡реНрдпреБрддреНрдХреНрд░рдо рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣рдореЗрд╢рд╛ рдЧрдгрдирд╛ рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

рдпрд╣рд╛рдБ рдмреЗрд╡рдХреВрдлреА рдХреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдбрд╛рдпрд▓ рдкреАрдпрд░ рдЬреЛ рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЙрд▓рдЯрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдХреНрд╡реЗрд░реА рдпрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рд╕реНрдореГрддрд┐ рдЕрдиреБрдЪрд┐рдд рд╡реНрдпреБрддреНрдХреНрд░рдо рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдкрд░ рдмрд░реНрдмрд╛рдж рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдирдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ , рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реБрдзрд╛рд░ рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВ:

  • рдпрд╣ рдЦреЛрдЬ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрд╢ рдЯреЗрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП Transform * рдПрд░реЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЪреАрдЬ рдХреЗ рд╕реНрдЯреЛрд░реЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЬреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╕рднреА Transform рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдореВрд▓реНрдп рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред
  • рдЦреЛрдЬ рд╡рд┐рдзрд┐ рдХрд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЕрдм Transform *Lookup(const Transform
    &t)
    рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ Transform *Lookup(const Transform
    &t)
    Transform *Lookup(const Transform
    &t)
    ; рдПрдХ рдЬрдЧрд╣ рдЬрд╣рд╛рдВ рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреИрд╢ рд╕реЗ рдЙрд▓рдЯрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл Lookup() рджреЛ рдмрд╛рд░ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред

рд╣реИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди FNV1a рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рд╣реИрд╢ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдЕрд░рд╛рд╕ рдХрд╛ рдкрдж рдорд┐рд▓рд╛; рд╢рд╛рдпрдж рдореБрдЭреЗ рд╕рд┐рд░реНрдл xxHash рдпрд╛ CityHash рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдмреЗрд╣рддрд░ рд╣реИ; рд╢рд╛рдпрдж рдХрд┐рд╕реА рджрд┐рди рдореЗрд░реА рд╢рд░реНрдо рдЬреАрдд рдЬрд╛рдПрдЧреА рдФрд░ рдореИрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджреВрдВрдЧрд╛ред

рдирдП TransformCache рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХреБрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдореЗрдВ рдХрд╛рдлреА рдХрдореА рдЖрдИ рд╣реИ - 21 рдорд┐рдирдЯ 42 рдПрд╕ рддрдХред рдпрд╣реА рд╣реИ, рд╣рдордиреЗ рдПрдХ рдФрд░ 5 рдорд┐рдирдЯ 7 рд╕реЗрдХрдВрдб рдмрдЪрд╛рдпрд╛, рдпрд╛ 1.27 рдмрд╛рд░ рддреНрд╡рд░рд┐рдд рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрдореЛрд░реА рдХреЗ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдЙрдкрдпреЛрдЧ рдиреЗ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдореЗрд╢рди рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬрд╛ рдХрд┐рдП рдЧрдП рд╕реНрдерд╛рди рдХреЛ 16 рд╕реЗ 5.7 рдЬреАрдмреА рддрдХ рдХрдо рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдЬреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдХреЗ рд▓рдЧрднрдЧ рдмрд░рд╛рдмрд░ рд╣реИред рдЗрд╕рдиреЗ рд╣рдореЗрдВ рдЗрд╕ рддрдереНрдп рдХрд╛ рдлрд╛рдпрджрд╛ рдЙрдард╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдХрд┐ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдиреБрдорд╛рдирд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ 4x4 рдХреЗ рдмрдЬрд╛рдп 3x4 рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред (рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдорд╣рддреНрд╡ рдкрд░ рд╕рдВрджреЗрд╣ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдпрд╣ рд╣рдореЗрдВ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рд╕реЗ рдЕрдзрд┐рдХ рдмрдЪрд╛рдПрдЧрд╛ - рдмрд╣реБрдд рд╕рд╛рд░реА рдореЗрдореЛрд░реА! рдпрд╣ рдЙрддреНрдкрд╛рджрди рд░реЗрдВрдбрд░рд░ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред)

рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдЯреЗ рдкреНрд░рджрд░реНрд╢рди рдЕрдиреБрдХреВрд▓рди


рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд TransformedPrimitive рд╕рдВрд░рдЪрдирд╛ рд╣рдореЗрдВ рд╕реНрдореГрддрд┐ рдФрд░ рд╕рдордп рджреЛрдиреЛрдВ рдХреА рд▓рд╛рдЧрдд рджреЗрддреА рд╣реИ: рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдиреЗ рдХрд╣рд╛ рдХрд┐ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдореЗрдВ рд╕рдордп рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ AnimatedTransform::Decompose() рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдХреНрд╡рд╛рдЯрд░рдирд┐рдпрди рд░реЛрдЯреЗрд╢рди, рдЯреНрд░рд╛рдВрд╕рдлрд░ рдФрд░ рд╕реНрдХреЗрд▓ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдЪреВрдБрдХрд┐ рдЗрд╕ рджреГрд╢реНрдп рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдХрд╛рд░реНрдп рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИ, рдФрд░ рдПрдирд┐рдореЗрдЯрдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЧрд╣рди рдЬрд╛рдБрдЪ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдПрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрджрд┐ рджреЛ рдкрд░рд┐рд╡рд░реНрддрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд╛рди рд╣реИрдВред

рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рддрд╛рдХрд┐ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреЗ рд╡рд┐рдШрдЯрди рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рддрдм рди рд╣реЛ рдЬрдм рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ, рд╣рдордиреЗ рдкреНрд░рд╛рд░рдВрдн рд╕рдордп рд╕реЗ рдПрдХ рдФрд░ 1 рдорд┐рдирдЯ 31 рдмрдЪрд╛ рд▓рд┐рдпрд╛: рдирддреАрдЬрддрди, рд╣рдо 20 рдорд┐рдирдЯ 9 рд╕реЗрдХреЗрдВрдб рдкрд░ рдЖ рдЧрдП, рдЕрд░реНрдерд╛рдд рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ 1.73 рдЧреБрдирд╛ рд╡реГрджреНрдзрд┐ рдХреАред

рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдкрд╛рд░реНрд╕рд░ рдХреЛ рдЙрдард╛рдПрдВрдЧреЗ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рдЧрдпрд╛ рдЬрдм рд╣рдордиреЗ рдЕрдиреНрдп рднрд╛рдЧреЛрдВ рдХреЗ рдХрд╛рдо рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдИред

Source: https://habr.com/ru/post/hi417445/


All Articles