рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ pbrt рд╢рд╛рдЦрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВ рдирдП рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реВрдВ, рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рд▓реЗрдЦреЛрдВ рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдЙрди рд╕рднреА рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЖрдорддреМрд░ рдкрд░
рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рддрд┐рдкрд╛рджрди рдкреБрд╕реНрддрдХ рдХреЗ рдПрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред
Pbrt-v3 рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬрд┐рд╕реЗ рд╣рдо рдкреБрд╕реНрддрдХ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдХрд░реАрдм рд░рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рд╣рдо рдХреБрдЫ рднреА рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЬ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдбрд┐рдЬреНрдиреА рдХрд╛рд░реНрдЯреВрди
"рдореЛрдЖрдирд╛" рд╕реЗ рджреНрд╡реАрдк рдХреЗ рд╕рд╛рде рджреГрд╢реНрдп рдореЗрдВ рд╕реНрдореГрддрд┐ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдХреИрд╕реЗ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ: рдкрд┐рдЫрд▓реЗ рддреАрди рдкрджреЛрдВ рдореЗрдВ, рд╕рднреА рдЖрдБрдХрдбрд╝реЗ рдЙрд╕ рджреГрд╢реНрдп рдХреЗ WIP рд╕рдВрд╕реНрдХрд░рдг (рд╡рд░реНрдХ рдЗрди рдкреНрд░реЛрдЧреНрд░реЗрд╕) рдХреЗ рд▓рд┐рдП рдорд╛рдкрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдХреЗ рд░рд┐рд▓реАрдЬ рд╕реЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдерд╛ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗ, рдЬреЛ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред
рдореЛрдЖрдирд╛ рд╕реЗ рдЕрдВрддрд┐рдо рджреНрд╡реАрдк рджреГрд╢реНрдп рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд░рддреЗ рд╕рдордп, 81 GB RAM рдХрд╛ рдЙрдкрдпреЛрдЧ pbrt-v3 рдХреЗ рджреГрд╢реНрдп рд╡рд┐рд╡рд░рдг рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, pbrt-next 41 GB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - рд▓рдЧрднрдЧ рдЖрдзрд╛ред рдЗрд╕ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЫреЛрдЯреЗ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдерд╛ рдЬреЛ рдХреЛрдб рдХреА рдХрдИ рд╕реМ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдлреИрд▓рд╛ рд╣реБрдЖ рдерд╛ред
рдкреНрд░рд╛рдЗрдорд░реА рдХреЛ рдХрдо рдХрд┐рдпрд╛
рдЖрдЗрдП рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ pbrt рдореЗрдВ
Primitive
рдЬреНрдпрд╛рдорд┐рддрд┐, рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА, рд╡рд┐рдХрд┐рд░рдг рдлрд╝рдВрдХреНрд╢рди (рдпрджрд┐ рдпрд╣ рдПрдХ рдкреНрд░рдХрд╛рд╢ рд╕реНрд░реЛрдд рд╣реИ) рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╣реИ рдФрд░ рд╕рддрд╣ рдХреЗ рдЕрдВрджрд░ рдФрд░ рдмрд╛рд╣рд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реИред Pbrt-v3 рдореЗрдВ,
GeometricPrimitive
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ:
std::shared_ptr<Shape> shape; std::shared_ptr<Material> material; std::shared_ptr<AreaLight> areaLight; MediumInterface mediumInterface;
рдЬреИрд╕рд╛
рдХрд┐ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ , рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп
areaLight
nullptr
, рдФрд░
MediumInterface
рдореЗрдВ
MediumInterface
рдПрдХ рдЬреЛрдбрд╝реА рд╣реИред рдЗрд╕рд▓рд┐рдП pbrt-next рдореЗрдВ рдореИрдВрдиреЗ
SimplePrimitive
рдирд╛рдордХ рдПрдХ
Primitive
рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рд╛, рдЬреЛ рдХреЗрд╡рд▓ рдЬреНрдпрд╛рдорд┐рддрд┐ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИред рдЬрд╣рд╛рдВ рд╕рдВрднрд╡ рд╣реЛ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ
GeometricPrimitive
рдмрдЬрд╛рдп
GeometricPrimitive
рд╕рдВрднрд╡ рд╣реЛ:
class SimplePrimitive : public Primitive {
рдЧреИрд░-рдПрдирд┐рдореЗрдЯреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ рдХреЗ рд▓рд┐рдП, рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕
TransformedPrimitive
, рдЬреЛ рдХреЗрд╡рд▓ рдкреНрд░рд┐рдорд┐рдЯрд┐рд╡ рдФрд░ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдореЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рд▓рдЧрднрдЧ 500 рдмрд╛рдЗрдЯ рдХреА
рдмрд░реНрдмрд╛рджреА рдХреА рдЬрдЧрд╣ рдмрдЪрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ
AnimatedTransform
рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ
TransformedPrimitive
рд░реЗрдВрдбрд░рд░ pbrt-v3 рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред
class TransformedPrimitive : public Primitive {
(рдпрджрд┐ рдЖрдкрдХреЛ pbrt-next рдореЗрдВ рдПрдирд┐рдореЗрдЯреЗрдб рд░реВрдкрд╛рдВрддрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ
AnimatedPrimitive
рд╣реИред)
рдЗрди рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рдж, рдЖрдВрдХрдбрд╝реЗ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреЗрд╡рд▓ 7.8 рдЬреАрдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ
Primitive
рддрд╣рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп 28.9 рдЬреАрдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ pbrt-v3 рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ 21 рдЬреАрдмреА рдмрдЪрд╛ рд▓рд┐рдпрд╛, рдпрд╣ рдЗрддрдирд╛ рдХрдо рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рд╣рдо рдкрд┐рдЫрд▓реЗ рдЕрдиреБрдорд╛рдиреЛрдВ рд╕реЗ рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рд╣рдо рдЗрд╕ рднрд╛рдЧ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЗрд╕ рд╡рд┐рд╕рдВрдЧрддрд┐ рдкрд░ рд▓реМрдЯреЗрдВрдЧреЗред
рдХрдо рдЬреНрдпрд╛рдорд┐рддрд┐
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, pbrt-next рдиреЗ рдЬреНрдпрд╛рдорд┐рддрд┐ рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬрд╛ рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рджрд┐рдпрд╛: рдореЗрд╖ рддреНрд░рд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЬрдЧрд╣ 19.4 рдЬреАрдмреА рд╕реЗ рдШрдЯрдХрд░ 9.9 рдЬреАрдмреА рд╣реЛ рдЧрдИ, рдФрд░ 1.4 рд╕реЗ 1.1 рдЬреАрдмреА рддрдХ рдШрдЯрддрд╛ рд╣реИред рдмрд╕ рдЗрд╕ рдЖрдзреЗ рд╕реЗ рдЕрдзрд┐рдХ рдмрдЪрдд рдЖрдзрд╛рд░
Shape
рдХреНрд▓рд╛рд╕ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рд╕реЗ рд╣реБрдИред
Pbrt-v3 рдореЗрдВ,
Shape
рд╕рд╛рде рдХрдИ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рд▓рд╛рддрд╛ рд╣реИ рдЬреЛ рд╕рднреА
Shape
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ - рдпреЗ рдХрдИ рдРрд╕реЗ рдкрд╣рд▓реВ рд╣реИрдВ рдЬреЛ
Shape
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВред
class Shape {
рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЗрди рд╕рджрд╕реНрдп рдЪрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдХреНрдпреЛрдВ рд╣реИрдВ, рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреА рдХрд┐ рддреНрд░рд┐рдХреЛрдг рдХреЗ рдорд▓рдмреЗ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ,
TriangleMesh
рд╡рд░реНрдЧ рд╣реИ, рдЬреЛ рдкреВрд░реЗ рдЬрд╛рд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдиреЗ рдФрд░ рд╕реВрдЪрдХрд╛рдВрдХ рдмрдлрд╝рд░реНрд╕ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ:
struct TriangleMesh { int nTriangles, nVertices; std::vector<int> vertexIndices; std::unique_ptr<Point3f[]> p; std::unique_ptr<Normal3f[]> n;
рдореЗрд╖ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рддреНрд░рд┐рдХреЛрдг рдХреЛ
Triangle
рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ
Shape
рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред
Triangle
рдХреЛ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЫреЛрдЯрд╛ рд░рдЦрдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ: рд╡реЗ рдХреЗрд╡рд▓ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдЙрд╕ рдЬрд╛рд▓реА рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд╡реЗ рдПрдХ рднрд╛рдЧ рд╣реИрдВ, рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдмрдлрд░ рдореЗрдВ рдСрдлрд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЗрд╕рдХреЗ рдХреЛрдиреЗ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ:
class Triangle : public Shape {
рдЬрдм
Triangle
рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЕрдкрдиреЗ рд╢реАрд░реНрд╖ рдХреЗ рдкрджреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рддреНрд░рд┐рднреБрдЬрдореЗрд╢ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрдХреНрд░рдордг рдХрд░рддрд╛ рд╣реИред
Shape
pbrt-v3 рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдорд╛рди рдореЗрд╖ рдХреЗ рд╕рднреА рддреНрд░рд┐рдХреЛрдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рддреНрд░рд┐рднреБрдЬрдореЗрд╢ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреВрд░реЗ рдЬрд╛рд▓ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдиреЛрдВ рдХреА рдПрдХрд▓ рдкреНрд░рддрд┐ рдореЗрдВ
Triangle
рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░реЗрдВред
рдпрд╣ рд╕рдорд╕реНрдпрд╛ pbrt-next рдореЗрдВ рддрдп рдХреА рдЧрдИ рдереА: pbrt-next рдореЗрдВ рдЖрдзрд╛рд░
Shape
рдХреНрд▓рд╛рд╕ рдореЗрдВ рдРрд╕реЗ рд╕рджрд╕реНрдп рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ
Triangle
24 рдмрд╛рдЗрдЯреНрд╕ рдХрдо рд╣реЛрддрд╛ рд╣реИред рдЬреНрдпрд╛рдорд┐рддрд┐
Curve
рдПрдХ рд╕рдорд╛рди рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ
Shape
рд╕реЗ рднреА рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛрддрд╛ рд╣реИред
рд╕рд╛рдЭрд╛ рддреНрд░рд┐рдХреЛрдг рдмрдлрд╝рд░реНрд╕
рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐
рдореЛрдЖрдирд╛ рджреНрд╡реАрдк рджреГрд╢реНрдп рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБ рддрд╛рддреНрдХрд╛рд▓рд┐рдХрддрд╛ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рдЙрдкрдпреЛрдЧ
рдХрд░рддрд╛ рд╣реИ, рдореИрдВ рдЙрддреНрд╕реБрдХ рдерд╛ рдХрд┐ рдХрд┐рддрдиреА рдмрд╛рд░ рд╕реВрдЪрдХрд╛рдВрдХ рдмрдлрд╝рд░реНрд╕ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрдирд╛рд╡рдЯ рдмрдлрд╝рд░реНрд╕ рдХреЛ рд╕рдордиреНрд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ рд╡рд┐рднрд┐рдиреНрди рддреНрд░рд┐рдХреЛрдг рдореЗрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯрд╛ рд╡рд░реНрдЧ рд▓рд┐рдЦрд╛ рд╣реИ рдЬреЛ рдЗрди рдмрдлрд╝рд░реНрд╕ рдХреЛ рд░рд╕реАрдж рдкрд░ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреИрд╢ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░
TriangleMesh
рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдХреИрд╢ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗ рдФрд░ рдХрд┐рд╕реА рднреА рдЕрдирд╛рд╡рд╢реНрдпрдХ рдмрдлрд░ рдХреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╣реЗрдЬреЗ рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд▓рд╛рдн рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдерд╛: рдореИрдВ 4.7 рдЬреАрдмреА рдЕрддрд┐рд░рд┐рдХреНрдд рдорд╛рддреНрд░рд╛ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, рдЬреЛ рдХрд┐ рдореЗрд░реА рдЙрдореНрдореАрдж рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИред
рдХреНрд░реИрд╢ рдХреЗ рд╕рд╛рде std :: рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛
рдЗрди рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рдж, рдЖрдБрдХрдбрд╝реЗ 36 рдЬреАрдмреА рдХреА рдЬреНрдЮрд╛рдд рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ,
top
53 рдЬреАрдмреА рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдкреНрд░рдХрд░рдгред
рдореБрдЭреЗ
massif
рдХреА рдзреАрдореА рдЧрддрд┐ рдХреА рдПрдХ рдФрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ рдбрд░ рдерд╛ рдХрд┐ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЖрдВрдХрдбрд╝реЛрдВ рдореЗрдВ рдХреМрди рд╕реА рдЖрд╡рдВрдЯрд┐рдд рд╕реНрдореГрддрд┐ рдЧрд╛рдпрдм рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореЗрд░реЗ рдЗрдирдмреЙрдХреНрд╕ рдореЗрдВ
рдЖрд░реНрд╕реЗрдиреА рдХрдкреБрд▓рдХрд┐рди рдХрд╛ рдПрдХ рдкрддреНрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдЖрд░реНрд╕реЗрдиреА рдиреЗ рдореБрдЭреЗ рд╕рдордЭрд╛рдпрд╛ рдХрд┐
рдореЗрд░реЗ GeometricPrimitive
рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ рдХреЗ
рдкрд┐рдЫрд▓реЗ рдЕрдиреБрдорд╛рди рдмрд╣реБрдд рдЧрд▓рдд рдереЗред рдореБрдЭреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдкрдбрд╝рд╛, рд▓реЗрдХрд┐рди рддрдм рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ; рддреНрд░реБрдЯрд┐ рдФрд░ рд╡рд┐рд╕реНрддреГрдд рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЖрд░реНрд╕реЗрдиреА рдХреЛ рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред
рдЖрд░реНрд╕реЗрдиреА рдХреЛ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ
std::shared_ptr
рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдХрд▓реНрдкрдирд╛ рдХреА
std::shared_ptr
рдХрд┐рдпрд╛ рдЧрдпрд╛: рдЗрд╕ рд░реВрдк рдореЗрдВ
std::shared_ptr
рдХрд┐рдпрд╛: рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рд╣реИ рдЬреЛ рд╕рдВрджрд░реНрдн рдЧрдгрдирд╛ рдФрд░ рдПрдХ рд╕рдВрдХреЗрддрдХ рдХреЛ рд╕реНрд╡рдпрдВ рд░рдЦреА рдЧрдИ рд╡рд╕реНрддреБ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ:
template <typename T> class shared_ptr_info { std::atomic<int> refCount; T *ptr; };
рддрдм рдореИрдВрдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐
shared_ptr
рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗрд╡рд▓ рдЗрд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
template <typename T> class shared_ptr {
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдореИрдВрдиреЗ рдорд╛рди рд▓рд┐рдпрд╛ рдХрд┐
sizeof(shared_ptr<>)
рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕рд╛рдЭрд╛ рдкреЙрдЗрдВрдЯрд░ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХрд╛ 16 рдмрд╛рдЗрдЯ рдмрд░реНрдмрд╛рдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд╣реИ рдирд╣реАрдВред
рдореЗрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рд╕рд╛рдорд╛рдиреНрдп рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдЖрдХрд╛рд░ рдореЗрдВ 32 рдмрд╛рдЗрдЯреНрд╕ рдФрд░ рдЖрдХрд╛рд░ рдореЗрдВ 16 рдмрд╛рдЗрдЯреНрд╕
sizeof(shared_ptr<>)
ред рдЗрд╕рд▓рд┐рдП,
GeometricPrimitive
, рдЬрд┐рд╕рдореЗрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ
std::shared_ptr
, рдореЗрд░реЗ рдЕрдиреБрдорд╛рдиреЛрдВ рд╕реЗ рд▓рдЧрднрдЧ рджреЛрдЧреБрдирд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реБрдЖ, рддреЛ рдпреЗ рджреЛ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкреЛрд╕реНрдЯ рдорд╣рд╛рди рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдХрд╛рд░рдг рдмрддрд╛рддреЗ рд╣реИрдВ:
1 рдФрд░
2 ред
рд▓рдЧрднрдЧ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, pbrt-next рдореЗрдВ
std::shared_ptr
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдЭрд╛ рдкреЙрдЗрдВрдЯрд░реНрд╕ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдХреНрд░реЗрдЬреА рд╣реИрдХрд┐рдВрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рд╕рдм рдХреБрдЫ рдмрджрд▓ рджрд┐рдпрд╛ рдЬреЛ рдореИрдВ
std::unique_ptr
рд╕рд╛рде рдХрд░ рд╕рдХрддрд╛ рдерд╛, рдЬрд┐рд╕рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдирд┐рдпрдорд┐рдд рдкреЙрдЗрдВрдЯрд░ рдХреЗ рд╕рдорд╛рди рдЖрдХрд╛рд░ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ
SimplePrimitive
рдЕрдм рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛
SimplePrimitive
:
class SimplePrimitive : public Primitive {
рдЗрдирд╛рдо рдореЗрд░реА рдЕрдкреЗрдХреНрд╖рд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЧрдпрд╛: рдкреНрд░рддрд┐рдкрд╛рджрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ 53 рдЬреАрдмреА рд╕реЗ рдШрдЯрдХрд░ 41 рдЬреАрдмреА рд╣реЛ рдЧрдпрд╛ - 12 рдЬреАрдмреА рдХреА рдмрдЪрдд, рдХреБрдЫ рджрд┐рдиреЛрдВ рдкрд╣рд▓реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд, рдФрд░ рдХреБрд▓ рд░рд╛рд╢рд┐ рд▓рдЧрднрдЧ рдЖрдзреА рд╣реИ рдЬреЛ рдХрд┐ pbrt-v3 рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИред рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛!
рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдЕрдВрдд рдореЗрдВ рд▓реЗрдЦреЛрдВ рдХреА рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВрдЧреЗ - рдЗрд╕ рджреГрд╢реНрдп рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╕реНрдореГрддрд┐ рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП pbrt-next рдореЗрдВ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреА рдЧрддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдФрд░ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░реЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВред
рднрд╛рдЧ 5
рд▓реЗрдЦреЛрдВ рдХреА рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо pbrt-next - pbrt рд╢рд╛рдЦрд╛ рдореЗрдВ рдбрд┐рдЬреНрдиреА рдХрд╛рд░реНрдЯреВрди
"рдореЛрдЖрдирд╛" рд╕реЗ рджреНрд╡реАрдк рджреГрд╢реНрдп рдХреА рдкреНрд░рддрд┐рдкрд╛рджрди рдЧрддрд┐ рдХреА рдЦреЛрдЬ рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВ рдирдП рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реВрдВред рд╣рдо pbrt-v3 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдореМрд▓рд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рд╣рдорд╛рд░реА рдкреБрд╕реНрддрдХ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо рдЖрдЧреЗ рдХреЗ рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рдЪрд░реНрдЪрд╛ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕реЗ рдереЛрдбрд╝рд╛ рдЪрд░рдо рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред
рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЯрд╛рдЗрдо
Pbrt-next рдиреЗ рд▓рд╛рдЗрдЯ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рдХрдИ рдмрджрд▓рд╛рд╡ рдХрд┐рдП, рдЬрд┐рд╕рдореЗрдВ рдмреАрдПрд╕рдбреАрдПрдл рд╕реИрдВрдкрд▓рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдФрд░ рд░реВрд╕реА рд░реВрд▓реЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рд╕реБрдзрд╛рд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдирддреАрдЬрддрди, рдпрд╣ рдЗрд╕ рджреГрд╢реНрдп рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП pbrt-v3 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХрд┐рд░рдгреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрди рджреЛ рд░реЗрдВрдбрд░рд░реНрд╕ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреА рд╕реАрдзреЗ рддреБрд▓рдирд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдЧрддрд┐ рдЖрдо рддреМрд░ рдкрд░ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рд╣реЛрддреА рд╣реИ: рдЬрдм
рдореЛрдЖрдирд╛ рд╕реЗ рдПрдХ рджреНрд╡реАрдк рджреГрд╢реНрдп рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, pbrt-v3 рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХрд╛ 14.5%
ptex рдмрдирд╛рд╡рдЯ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдореБрдЭреЗ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд▓рдЧрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ 2.2% рд╣реА pbrt-next рдЦрд░реНрдЪ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рд╕рдм рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред
рдЖрдБрдХрдбрд╝реЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ
1 рдорд┐рд▓рддрд╛ рд╣реИ:
pbrt-v3:
Ptex 20828624
Ptex 712324767
pbrt-next:
Ptex 3378524
Ptex 825826507
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо pbrt-v3 рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ 34 рдмрдирд╛рд╡рдЯ рдЦреЛрдЬреЛрдВ рдореЗрдВ ptex рдмрдирд╛рд╡рдЯ рдХреЛ рдбрд┐рд╕реНрдХ рд╕реЗ рдФрд╕рддрди рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред Pbrt-next рдореЗрдВ, рдпрд╣ рд╣рд░ 244 рдЦреЛрдЬреЛрдВ рдХреЗ рдмрд╛рдж рд╣реА рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЕрд░реНрдерд╛рдд, рдбрд┐рд╕реНрдХ I / O рд▓рдЧрднрдЧ 7 рдЧреБрдирд╛ рдХрдо рд╣реЛ рдЧрдпрд╛ рд╣реИред рдореИрдВрдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ pbrt-next рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдХрд┐рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рд░рдг рдХреЗ рдЕрдВрддрд░реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рдмрдирд╛рд╡рдЯ рдХреЗ рдЙрдЪреНрдЪ MIP рд╕реНрддрд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдмрдирддреА рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ ptex рдмрдирд╛рд╡рдЯ рдХреИрд╢ рддрдХ рдЕрдзрд┐рдХ рдПрдХреАрдХреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрдирд╛рддрд╛ рд╣реИ, рдХреИрд╢ рдорд┐рд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП I / O рдСрдкрд░реЗрд╢рди
2 рдХреА рд╕рдВрдЦреНрдпрд╛ред рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЬрд╛рдБрдЪ рдиреЗ рдореЗрд░реЗ рдЕрдиреБрдорд╛рди рдХреА рдкреБрд╖реНрдЯрд┐ рдХреА: рдЬрдм рдмреАрдо рдЕрдВрддрд░ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ ptex рдХреА рдЧрддрд┐ рдмрд╣реБрдд рдЦрд░рд╛рдм рд╣реЛ рдЧрдИ рдереАред
Ptex рдХреА рдЧрддрд┐ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдиреЗ рди рдХреЗрд╡рд▓ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреА рд▓рд╛рдЧрдд рдФрд░ I / O рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рд╣реИред 32-рд╕реАрдкреАрдпреВ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ, pbrt-v3 рдХреЗрд╡рд▓ рджреГрд╢реНрдп рд╡рд┐рд╡рд░рдг рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж 14.9 рдмрд╛рд░ рддреНрд╡рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред pbrt рдЖрдорддреМрд░ рдкрд░ рд░реИрдЦрд┐рдХ рд╕рдорд╛рдирд╛рдВрддрд░ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рдХрд░реАрдм рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдиреЗ рдореБрдЭреЗ рдмрд╣реБрдд рдирд┐рд░рд╛рд╢ рдХрд┐рдпрд╛ред Ptex рдореЗрдВ рддрд╛рд▓реЗ рдХреЗ рджреМрд░рд╛рди рдмрд╣реБрдд рдХрдо рд╕рдВрдШрд░реНрд╖реЛрдВ рдХреЗ рдХрд╛рд░рдг, pbrt-next рд╕рдВрд╕реНрдХрд░рдг 32 CPUs рдХреЗ рд╕рд╛рде рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ 29.2 рдЧреБрдирд╛ рддреЗрдЬ рдФрд░ 96 CPUs рдХреЗ рд╕рд╛рде рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ 94.9 рдЧреБрдирд╛ рддреЗрдЬ рдерд╛ - рд╣рдо рдЙрди рд╕рдВрдХреЗрддрдХреЛрдВ рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЧрдП рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╣реИрдВред

рдореЛрдЖрдБ рджреНрд╡реАрдк рджреГрд╢реНрдп рд╕реЗ рдЬрдбрд╝реЗрдВ рдкреНрд░рддрд┐ рдкрд┐рдХреНрд╕реЗрд▓ 256 рдирдореВрдиреЛрдВ рдкрд░ 2048x858 рдХреЗ рд╕рдВрдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдорд╡рд╛рдж рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЧрдИ рд╣реИрдВред Pbrt-next рдореЗрдВ 2 GHz рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде 96 рд╡рд░реНрдЪреБрдЕрд▓ CPU рдХреЗ рд╕рд╛рде Google рдХрдВрдкреНрдпреВрдЯ рдЗрдВрдЬрди рдЙрджрд╛рд╣рд░рдг рдкрд░ рдХреБрд▓ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд╛ рд╕рдордп 41 рдорд┐рдирдЯ 22 s рд╣реИред рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдореМрд▓рд┐рдерд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рддреНрд╡рд░рдг 94.9 рдЧреБрдирд╛ рдерд╛ред (рдореИрдВ рдХрд╛рдлреА рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдмрдВрдк рдореИрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред)рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдВ
рдЗрд╕ рддрд░рд╣ рдХреЗ рдЬрдЯрд┐рд▓ рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реНрдореГрддрд┐ рдХреА рдорд╛рддреНрд░рд╛ рдХрдо рд╣реЛрдирд╛ рдПрдХ рд░реЛрдорд╛рдВрдЪрдХ рдЕрдиреБрднрд╡ рд╣реИ: рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рдПрдХ рд╕рд░рд▓ рджреГрд╢реНрдп рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдЧрдП рдореЗрдЧрд╛рдмрд╛рдЗрдЯреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрдЦрдж рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕реАрдЦрдиреЗ рдХреА рдЬреЛ рдЙрдореНрдореАрдж рд╣реИ, рдЙрд╕рдХреА рдПрдХ рдЕрдЪреНрдЫреА рд╕реВрдЪреА рд╣реИ, рдЕрдЧрд░ рд╕рдордп рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рддреНрд╡рд░рд┐рдд рдЕрд╡рд▓реЛрдХрди рд╣реИред
рдЖрдЧреЗ рдЪрд▓рдХрд░ рддреНрд░рд┐рдХреЛрдг рдмрдлрд░ рдореЗрдореЛрд░реА
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдмрдлрд╝рд░ рдХреЗ рдмрд╛рд░-рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рдЬреЛ рдХрдИ рддреНрд░рд┐рдХреЛрдг рдореЗрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдорд╛рди рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ, рдмрд╣реБрдд рд╕рд╛рд░реА рдореЗрдореЛрд░реА рдЕрднреА рднреА рддреНрд░рд┐рдХреЛрдг рдмрдлрд╝рд░реНрд╕ рдХреЗ рддрд╣рдд рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣рд╛рдБ рджреГрд╢реНрдп рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рддреНрд░рд┐рдХреЛрдг рдмрдлрд╝рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдХрд╛ рдЯреВрдЯрдирд╛ рд╣реИ:
рдЯрд╛рдЗрдк | рд╕реНрдореГрддрд┐ |
---|
рд▓рд╛рдЗрди рдЖрдЗрдЯрдо | 2.5 рдЬреАрдмреА |
normals | 2.5 рдЬреАрдмреА |
рдпреВрд╡реА | 98 рдПрдордмреА |
рд╕реВрдЪрдХрд╛рдВрдХ | 252 рдПрдордмреА |
рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░реЗрд╖рд┐рдд рд╢реАрд░реНрд╖ рдкрджреЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдмрдЪрдд рд╣реИред
рдореЗрдореЛрд░реА-рдХреБрд╢рд▓ рд░реВрдк рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд╡реИрдХреНрдЯрд░реЛрдВ рдХреЗ рдХрдИ
рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рд░реВрдкрдг рд╣реИрдВ рдЬреЛ рдореЗрдореЛрд░реА рд╕рд╛рдЗрдЬ / рдЧрдгрдирд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмреАрдЪ рд╡рд┐рднрд┐рдиреНрди рдЯреНрд░реЗрдб-рдСрдл рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред 24-рдмрд┐рдЯ рдпрд╛ 32-рдмрд┐рдЯ рдЕрднреНрдпрд╛рд╡реЗрджрди рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдорд╛рдирджрдВрдб рд╕реЗ 663 рдПрдордмреА рдФрд░ 864 рдПрдордмреА рддрдХ рдХрд╛ рд╕реНрдерд╛рди рдХрдо рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рд╣рдореЗрдВ 1.5 рдЬреАрдмреА рд╕реЗ рдЕрдзрд┐рдХ рд░реИрдо рдмрдЪрд╛рдПрдЧрд╛ред
рдЗрд╕ рджреГрд╢реНрдп рдореЗрдВ, рдмрдирд╛рд╡рдЯ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдФрд░ рд╕реВрдЪрдХрд╛рдВрдХ рдмрдлрд╝рд░реНрд╕ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реНрдореГрддрд┐ рдХреА рдорд╛рддреНрд░рд╛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдЫреЛрдЯреА рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреГрд╢реНрдп рдореЗрдВ рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдкреМрдзреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг рдРрд╕рд╛ рд╣реБрдЖ рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╣реА рдкреМрдзреЗ рдХреЗ рд╕рднреА рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдПрдХ рд╣реА рдЯреЛрдкреЛрд▓реЙрдЬреА (рдФрд░ рдЗрд╕рд▓рд┐рдП рд╕реВрдЪрдХрд╛рдВрдХ рдмрдлрд░) рдХрд╛ рдорд╛рдирдХреАрдХрд░рдг рд╣реЛрддрд╛ рд╣реИ (рдФрд░ рдЗрд╕рд▓рд┐рдП рдпреВрд╡реА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ)ред рдмрджрд▓реЗ рдореЗрдВ, рдорд┐рд▓рд╛рди рд╡рд╛рд▓реЗ рдмрдлрд╝рд░реНрд╕ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд╛рдлреА рдХреБрд╢рд▓ рд╣реИред
рдЕрдиреНрдп рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдмрдирд╛рд╡рдЯ рдХреЗ 16-рдмрд┐рдЯ рдпреВрд╡реА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд╛ рдирдореВрдирд╛рдХрд░рдг рдХрд░рдирд╛ рдпрд╛ рдЙрдирдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реАрдорд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдзреЗ-рд╕рдЯреАрдХ рдлреНрд▓реЛрдЯ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдХрд╛рдлреА рдЙрдкрдпреБрдХреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рджреГрд╢реНрдп рдореЗрдВ, рд╕рднреА рдмрдирд╛рд╡рдЯ рд╕рдордиреНрд╡рдп рдореВрд▓реНрдп рд╢реВрдиреНрдп рдпрд╛ рдПрдХ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдПрдХ
рдмрд┐рдЯ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЕрд░реНрдерд╛рдд, 32 рдмрд╛рд░ рд╕реЗ рдХрдмреНрдЬреЗ рд╡рд╛рд▓реА рд╕реНрдореГрддрд┐ рдХреЛ рдХрдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдорд╛рдорд▓реЛрдВ рдХреА рдпрд╣ рд╕реНрдерд┐рддрд┐ рд╕рдВрднрд╡рдд: рдмрдирд╛рд╡рдЯ рдХреЗ рд▓рд┐рдП ptex рдкреНрд░рд╛рд░реВрдк рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг рдЙрддреНрдкрдиреНрди рд╣реБрдИ, рдЬреЛ рдпреВрд╡реА atlases рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддреА рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдмрдирд╛рд╡рдЯ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬрд╛ рдХреА рдЧрдИ рдЫреЛрдЯреА рд░рд╛рд╢рд┐ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЗрд╕ рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред
pbrt рд╣рдореЗрд╢рд╛ рд╕реВрдЪрдХрд╛рдВрдХ рдмрдлрд╝рд░реНрд╕ рдХреЗ рд▓рд┐рдП 32-рдмрд┐рдЯ рдкреВрд░реНрдгрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред 256 рдХреЛрдиреЗ рд╕реЗ рдХрдо рдХреЗ рдЫреЛрдЯреЗ рдЬрд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддрд┐ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗрд╡рд▓ 8 рдмрд┐рдЯреНрд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ, рдФрд░ 65,536 рд╕реЗ рдХрдо рдХреЛрдиреЗ рд╡рд╛рд▓реЗ рдореЗрд╖реЛрдВ рдХреЗ рд▓рд┐рдП, 16 рдмрд┐рдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП pbrt рдХреЛ рдмрджрд▓рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрджрд┐ рд╣рдо рдЕрдзрд┐рдХрддрдо рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╕реАрдорд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдмрд┐рдЯреНрд╕ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдХреАрдордд рдЙрдирдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧреАред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдЕрдм рдореЗрдореЛрд░реА рдХреЗ рдПрдХ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдЪреМрдерд╛рдИ рд╣рд┐рд╕реНрд╕рд╛ рд╢реАрд░реНрд╖ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдХрд╛рд░реНрдп рджреВрд╕рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред
рдкреАрдХ рдмреАрд╡реАрдПрдЪ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдореЗрдореЛрд░реА рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдПрдХ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдкрд░ рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рдХреА: рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ, 10 рдЬреАрдмреА рдХреА рдПрдХ рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рдЪреЛрдЯреА рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореЗрдореЛрд░реА рд╣реЛрддреА рд╣реИред рдпрд╣ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдкреВрд░реЗ рджреГрд╢реНрдп рдХрд╛ (рдмрдбрд╝рд╛) рдмреАрд╡реАрдПрдЪ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Pbrt рд░реЗрдВрдбрд░рд░ рдХреЗ BVH рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рджреЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдкрд╣рд▓рд╛, рдпрд╣
рдкрд╛рд░рдВрдкрд░рд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд╕рд╛рде BVH рдмрдирд╛рддрд╛ рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдХреЗ рд▓рд┐рдП рджреЛ рдЪрд╛рдЗрд▓реНрдб рдкреЙрдЗрдВрдЯрд░реНрд╕ред рдкреЗрдбрд╝ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ
рдПрдХ рдореЗрдореЛрд░реА рдХреБрд╢рд▓ рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛
рд╣реИ , рдЬрд┐рд╕рдореЗрдВ рдиреЛрдб рдХрд╛ рдкрд╣рд▓рд╛ рдмрдЪреНрдЪрд╛ рдореЗрдореЛрд░реА рдореЗрдВ рд╕реАрдзреЗ рдЗрд╕рдХреЗ рдкреАрдЫреЗ рд╕реНрдерд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реЗ рдмрдЪреНрдЪреЗ рдХреЛ рдСрдлрд╕реЗрдЯ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЫрд╛рддреНрд░реЛрдВ рдХреЛ рдкрдврд╝рд╛рдиреЗ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдРрд╕рд╛ рдЕрд▓рдЧрд╛рд╡ рдЖрд╡рд╢реНрдпрдХ рдерд╛ - рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдкреЗрдбрд╝ рдХреЛ рдПрдХ рдХреЙрдореНрдкреИрдХреНрдЯ рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЬреБрдбрд╝реЗ рдЕрд░рд╛рдЬрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ BVH рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд╕рдордЭрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдерд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдкрд░рд┐рдгрд╛рдо рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЪрд░рдо рд╣реИ; рджреГрд╢реНрдп рдкрд░ рдЗрд╕рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЙрдиреНрдореВрд▓рди рдЖрдХрд░реНрд╖рдХ рд▓рдЧрддрд╛ рд╣реИред
рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рдкреВрд░реНрдгрд╛рдВрдХ рдореЗрдВ рдмрджрд▓реЗрдВ
рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ, рдХрдИ 64-рдмрд┐рдЯ рдкреЙрдЗрдВрдЯрд░реНрд╕ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ 32-рдмрд┐рдЯ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ
SimplePrimitive
рдореЗрдВ рдПрдХ
Material
рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ рд╣реЛрддрд╛ рд╣реИред
Material
рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрджрд╛рд╣рд░рдг рджреГрд╢реНрдп рдореЗрдВ рдХрдИ рдкреНрд░рдзрд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВ рдФрд░ рдХреБрдЫ рд╣рдЬрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рдХрднреА рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ; рдЗрд╕рд▓рд┐рдП, рд╣рдо рд╕рднреА рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЗ рдПрдХрд▓ рд╡реИрд╢реНрд╡рд┐рдХ рд╡реЗрдХреНрдЯрд░
vector
рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
std::vector<Material *> allMaterials;
рдФрд░
SimplePrimitive
рдореЗрдВ рдЗрд╕ рд╡реЗрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл 32-рдмрд┐рдЯ рдкреВрд░реНрдгрд╛рдВрдХ рдСрдлрд╕реЗрдЯ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ, рдЬреЛ рд╣рдореЗрдВ 4 рдмрд╛рдЗрдЯреНрд╕ рдмрдЪрд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ
Triangle
рдореЗрдВ
Triangle
рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдХрдИ рдЕрдиреНрдп рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рднреА рдЗрд╕реА рдЯреНрд░рд┐рдХ рдХреЛ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рдж, рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рдереЛрдбрд╝реА рдЕрддрд┐рд░реЗрдХ рд╣реЛрдЧрд╛, рдФрд░ рдпрд╣ рдкреНрд░рдгрд╛рд▓реА рдЕрдкрдиреЗ рдХрд╛рдо рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдХрдо рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдмрди рдЬрд╛рдПрдЧреА; рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕рдВрднрд╡рддрдГ рдРрд╕рд╛ рдорд╛рдорд▓рд╛ рд╣реИ, рдЬрдм рдорд╡рд╛рдж рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ рдХреЗ рдЕрдзреВрд░реЗ рдЕрдиреБрдХреВрд▓рди рдХреА рдХреАрдордд рдкрд░ред
рдПрд░реЗрдирд╛рд╕ (рдХреНрд╖реЗрддреНрд░реЛрдВ) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрд╡рд╛рд╕
рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐
Triangle
рдФрд░ рдЖрджрд┐рдо рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд▓рдЧ рдХреЙрд▓
new
(рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ
make_unique
, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╣реА рд╣реИ) рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд╕рд╛рдзрди рд▓реЗрдЦрд╛рдВрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рд┐рд╕рд╛рдм рдкрд╛рдБрдЪ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдореЗрдореЛрд░реА рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдРрд╕реА рд╕рднреА рдирд┐рдпреБрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЬреАрд╡рдирдХрд╛рд▓ рдПрдХ рд╣реА рд╣реИ - рдЬрдм рддрдХ рдХрд┐ рдкреНрд░рддрд┐рдкрд╛рджрди рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ - рд╣рдо рдЙрдиреНрд╣реЗрдВ
рд╕реНрдореГрддрд┐ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдЪреБрдирдХрд░ рдЗрд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓реЗрдЦрд╛рдВрдХрди рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЦрд╛рдХреА рд╡рдВрджрдиреАрдп
рдореЗрд░рд╛ рдЕрдВрддрд┐рдо рд╡рд┐рдЪрд╛рд░ рднрдпрд╛рдирдХ рд╣реИ, рдФрд░ рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЙрд╕рдиреЗ рдореБрдЭреЗ рдзрдордХреА рджреАред
рджреГрд╢реНрдп рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рддреНрд░рд┐рднреБрдЬ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рджреЛ
SimplePrimitive
рдХрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рднрд╛рд░ рд╣реЛрддрд╛ рд╣реИ: рдПрдХ
Triangle
, рдФрд░ рджреВрд╕рд░рд╛
SimplePrimitive
ред рдпрд╣ 16 рдмрд╛рдЗрдЯреНрд╕ рд╣реИред
рдореЛрдЖрдирд╛ рджреНрд╡реАрдк рджреГрд╢реНрдп рдореЗрдВ рдХреБрд▓ 162 162 124 рдЕрджреНрд╡рд┐рддреАрдп рддреНрд░рд┐рднреБрдЬ рд╣реИрдВ, рдЬреЛ рд▓рдЧрднрдЧ 2.2 рдЬреАрдмреА рдмреЗрдорд╛рдиреА рд╕рдВрдХреЗрдд рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕
Shape
рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЬреНрдпрд╛рдорд┐рддрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдирд╣реАрдВ рдерд╛, рдЬреЛ рдХреБрдЫ рднреА рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛? рдпрд╣ рд╣рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдЬрдЧрд╣ рдмрдЪрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЬрдм рдПрдХ рд╕реВрдЪрдХ рдХреЛ рдПрдХ рдЬреНрдпрд╛рдорд┐рддрд┐ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдирд╣реАрдВ рдкрддрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЬреНрдпрд╛рдорд┐рддрд┐ рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрд╣ рдмреЗрдХрд╛рд░ рд╣реЛрдЧрд╛ред
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЖрдзреБрдирд┐рдХ x86 рд╕реАрдкреАрдпреВ рдкрд░
, 64-рдмрд┐рдЯ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЗ рдХреЗрд╡рд▓ 48 рдмрд┐рдЯреНрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ
рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ ред рдЗрд╕рд▓рд┐рдП, рдЕрддрд┐рд░рд┐рдХреНрдд 16 рдмрд┐рдЯреНрд╕ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдзрд╛рд░ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ ... рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ рдХрд┐ рд╣рдо рдЬрд┐рд╕ рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдмрджрд▓реЗ рдореЗрдВ, рдереЛрдбрд╝рд╛ рд╕рд╛ рдХрд╛рдо рдЬреЛрдбрд╝рдХрд░, рд╣рдо рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдкрд░ рдХреЙрд▓ рдХрд╛ рдПрдирд╛рд▓реЙрдЧ рдмрдирд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкрд░ рдПрдХ рд░рд╛рд╕реНрддрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╣реЛрдЧрд╛: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╣рдо рдПрдХ
ShapeMethods
рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐
3 :
struct ShapeMethods { Bounds3f (*WorldBound)(void *);
рдкреНрд░рддреНрдпреЗрдХ рдЬреНрдпрд╛рдорд┐рддрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдХ рдмрд╛рдзрд╛ рд╕рдорд╛рд░реЛрд╣, рдПрдХ рдЪреМрд░рд╛рд╣реЗ рд╕рдорд╛рд░реЛрд╣, рдФрд░ рдЗрд╕реА рддрд░рд╣,
this
рд╕реВрдЪрдХ рдХреЗ рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛:
Bounds3f TriangleWorldBound(void *t) {
рд╣рдорд╛рд░реЗ рдкрд╛рд╕
ShapeMethods
рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реЛрдЧреА, рдЬрд┐рд╕рдореЗрдВ
n n рддрддреНрд╡ рд╕реВрдЪрдХрд╛рдВрдХ
n рдХреЗ рд╕рд╛рде рдПрдХ рдЬреНрдпрд╛рдорд┐рддрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛:
ShapeMethods shapeMethods[] = { { TriangleWorldBound, }, { CurveWorldBound, };
рдЬреНрдпрд╛рдорд┐рддрд┐ рдмрдирд╛рддреЗ рд╕рдордп, рд╣рдо рд░рд┐рдЯрд░реНрди рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдЕрдкреНрд░рдпреБрдХреНрдд рдмрд┐рдЯреНрд╕ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдореЗрдВ рдЗрд╕рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдХреВрдЯрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд░, рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдЬрд┐рд╕рдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЙрд▓ рд╣рдо рдкреНрд░рджрд░реНрд╢рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╣рдо рдкреЙрдЗрдВрдЯрд░ рд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ
shapeMethods
рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ
shapeMethods
рдореЗрдВ рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рд╣рдо рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕реНрд╡рдпрдВ рдкреНрд░реЗрд╖рдгред рдпрджрд┐ рд╣рдордиреЗ рдЬреНрдпрд╛рдорд┐рддрд┐ рдФрд░ рдЖрджрд┐рдо рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдо 16 рдмрд╛рдЗрдЯреНрд╕ рдкреНрд░рддрд┐
Triangle
рдХреЛ рдмрдЪрд╛рдПрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рд╣рдордиреЗ рдПрдХ рдХрдард┐рди рд░рд╛рд╕реНрддрд╛ рдмрдирд╛ рджрд┐рдпрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓ рдлрдВрдХреНрд╢рди рдореИрдиреЗрдЬрдореЗрдВрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреА рд╣реИрдХ рдирдИ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЗрд╕рдХреЗ рд▓рд┐рдВрдХ рдирд╣реАрдВ рдорд┐рд▓реЗред рдпрд╣рд╛рдВ
рдЯреИрдЧ рдХрд┐рдП рдЧрдП рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкреЗрдЬ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд▓рд┐рдВрдХ рдХрд╛рдЙрдВрдЯреНрд╕ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рдмреЗрд╣рддрд░ рд▓рд┐рдВрдХ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдПрдХ рдкрддреНрд░ рднреЗрдЬреЗрдВред
рдЗрд╕ рдЕрдЬреАрдм рд╣реИрдХ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдХреЗ, рдореИрдВ рдкрджреЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдлрд┐рд░, рдЗрд╕ рджреГрд╢реНрдп рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рдиреА рдХреЛ рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдордЬрд╝реЗрджрд╛рд░ рдерд╛; рдореЗрд░реЗ рд╕рд┐рд░ рдореЗрдВ рдЧрд┐рдпрд░ рдШреВрдорддреЗ рд░рд╣рддреЗ рд╣реИрдВред
рдиреЛрдЯ
- рдЕрдВрдд рдореЗрдВ, рдЗрд╕ рджреГрд╢реНрдп рдореЗрдВ pbrt-v3 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ pbrt-next рдирд┐рд╢рд╛рди рдЕрдзрд┐рдХ рдХрд┐рд░рдгреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрднрд╡рддрдГ рдЦреЛрдЬ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред
- Pbrt-рдЕрдЧрд▓реЗ рдореЗрдВ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдХрд┐рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рд░рдг рдЕрдВрддрд░ рдХреА рдЧрдгрдирд╛ pbrt-v3 рдХреЗ рд▓рд┐рдП рдмрдирд╛рд╡рдЯ рдХреИрд╢ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдПрдХ рд╣реА рд╣реИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреА рдЬрд╛рддреА рд╣реИред , , .
- Rayshade . , C . Rayshade .