GPU рдмрд╛рдзреНрдпред рднрд╛рдЧ рджреЛ рдЕрдВрддрд╣реАрди рдЬрдВрдЧрд▓



рд▓рдЧрднрдЧ рд╣рд░ рдЦреЗрд▓ рдореЗрдВ, рдЖрднрд╛рд╕реА рджреБрдирд┐рдпрд╛ рдХреА рджреГрд╢реНрдп рд╕рдореГрджреНрдзрд┐, рд╕реБрдВрджрд░рддрд╛ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рдХреЗ рд╕реНрддрд░ рдХреЛ рднрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдХреЛрдИ рднреА рдЦреБрд▓реА рджреБрдирд┐рдпрд╛ рдХрд╛ рдЦреЗрд▓ рд▓реЛред рд╡рд╣рд╛рдБ рдкреЗрдбрд╝, рдШрд╛рд╕, рдкреГрдереНрд╡реА рдФрд░ рдкрд╛рдиреА рдЪрд┐рддреНрд░ рдХреЗ рдореБрдЦреНрдп "рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░" рд╣реИрдВред рдЖрдЬ рдмрд╣реБрдд рдХрдо GPGPU рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдкрдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЬрдм рдЖрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рддреЛ рдлреНрд░реЗрдо рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреЗрдбрд╝ рдФрд░ рдкрддреНрдерд░ рдХреИрд╕реЗ рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

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

рддреЛ, рдХрд╛рд░реНрдп: рдЖрдкрдХреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЬрдВрдЧрд▓ рдЦреАрдВрдЪрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЧреЗрдо рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрдбрд╝реЗ рд╕реНрддрд░ (30x30 рдХрд┐рдореА) рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреА рд░рдгрдиреАрддрд┐ (рдЖрд░рдЯреАрдПрд╕) рд╣реИ, рдФрд░ рдпрд╣ рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ:

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

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

рдкреНрд░рддрд┐рдкрд╛рджрди


рдЖрдЗрдП рдПрдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╕рдм рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдкреАрдбрдЯреНрд░реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдЗрддрдирд╛ рдмреБрд░рд╛ рд╣реИ:



рдпрд╣рд╛рдВ рдордВрдЪ рдкрд░ рд▓рдЧрднрдЧ 2,000 рдкреЗрдбрд╝ рд╣реИрдВред рд╕рдм рдХреБрдЫ рд░реЗрдВрдбрд░ рдХреЗ рд╕рд╛рде рд╣реИ, рд╡рд╣рд╛рдБ рдкреЗрдбрд╝реЛрдВ рдХреЛ рдмреИрдЪреЛрдВ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реАрдкреАрдпреВ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдЦрд░рд╛рдм рд╣реИред рдХреИрдорд░рд╛ рд░реЗрдВрдбрд░ рдХрд░рддреЗ рд╕рдордп рдЖрдзрд╛ рдардВрдбрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдФрд░ рд╣рдореЗрдВ рд╕реИрдХрдбрд╝реЛрдВ рд╣рдЬрд╛рд░реЛрдВ рдЪрд╛рд╣рд┐рдПред рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ GameObjects рдХреЛ рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдм рд╣рдореЗрдВ рд╕реНрдкреАрдбрдЯреНрд░реА рдореЙрдбрд▓ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ, рдПрд▓рдУрдбреА рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдФрд░ рд╣реИрдВрдбрд▓ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╕реНрдкреАрдбрдЯреНрд░реА рдЯреНрд░реА рдореЗрдВ рдХрдИ рдПрд▓рдУрдбреА (рдЖрдорддреМрд░ рдкрд░ 4) рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЕрдВрддрд┐рдо рдПрдХ рдмрд┐рд▓рдмреЛрд░реНрдб рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдмрд╛рдХреА рд╕рднреА рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рдмрджрд▓рддреА рдбрд┐рдЧреНрд░реА рдХреА рдЬреНрдпрд╛рдорд┐рддрд┐ рд╣реЛрддреЗ рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдХрдИ рд╕рдмрдореЗрд╢ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рдХреА рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде:


рдпрд╣ рд╕реНрдкреАрдбрдЯреНрд░реА рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдирд╣реАрдВ рд╣реИред рдХрд┐рд╕реА рднреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдРрд╕реА рд╕рдВрд░рдЪрдирд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред LOD рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рджреЛ рдЙрдкрд▓рдмреНрдз рдореЛрдб рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ:

  1. рдХреНрд░реЙрд╕ рдлреАрдХрд╛:

  2. рд╕реНрдкреАрдб рдЯреНрд░реА:


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

рд╕реНрдкреАрдбрдЯреНрд░реА (LOD_FADE_PERCENTAGE) рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреЗрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИ рд╣реИред рдореБрдЦреНрдп рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд░реНрддрдорд╛рди рдПрд▓рдУрдбреА рд╕реНрддрд░ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХрдирд┐рд╖реНрдард┐рдХрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкрддреНрддрд┐рдпреЛрдВ, рд╢рд╛рдЦрд╛рдУрдВ рдФрд░ рдЯреНрд░рдВрдХ рдХреА рдЬреНрдпрд╛рдорд┐рддрд┐ рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдПрдХ рд╕реНрддрд░ рд╕реЗ рджреВрд╕рд░реЗ рд╕реНрддрд░ рдкрд░ рд╕рдВрдХреНрд░рдордг рдХреА рдбрд┐рдЧреНрд░реА рдЗрди рджреЛ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд░реИрдЦрд┐рдХ рдкреНрд░рдХреНрд╖реЗрдк рдХреЗ рд▓рд┐рдП рд╡рдЬрди рдореВрд▓реНрдп рд╣реИред рдмрд┐рд▓рдмреЛрд░реНрдб рд╕реЗ / рдХреЗ рдкрд╛рд╕ рдЬрд╛рдирд╛ CrossFade рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

рд╡рди рдЬрдирдХ


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



рд╕реНрддрд░ рдкрд░ рджрд┐рдП рдЧрдП рдмрд┐рдВрджреБ рдкрд░, рдХреНрдпрд╛ рдпрд╣рд╛рдВ рдкреЗрдбрд╝ рд▓рдЧрд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ? "рдЬрдВрдЧрд▓реА" рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдореБрдЦреМрдЯрд╛, рд╕реНрддрд░ рдбрд┐рдЬрд╛рдЗрдирд░ рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд╣рд▓реЗ рддреЛ рдкреВрд░реА рдмрд╛рдд CPU рдФрд░ C # рдкрд░ рдереАред рдЬрдирд░реЗрдЯрд░ рдиреЗ рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд╛рдо рдХрд┐рдпрд╛, рдФрд░ рд╕реНрддрд░реЛрдВ рдХрд╛ рдЖрдХрд╛рд░ рдЗрддрдирд╛ рдмрдврд╝ рдЧрдпрд╛ рдХрд┐ рдХрдИ рджрд╕рд┐рдпреЛрдВ рдорд┐рдирдЯреЛрдВ рддрдХ рдЙрддреНрдерд╛рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рддрдирд╛рд╡рдкреВрд░реНрдг рд╣реЛ рдЧрдИред рдпрд╣ рдЬрдирд░реЗрдЯрд░ рдХреЛ GPU рдФрд░ рдХрдВрдкреНрдпреВрдЯ shader рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣рд╛рдБ рднреА, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рд╣рдореЗрдВ рдЬрдореАрди рдХреА рдКрдВрдЪрд╛рдИ, рдкреЗрдбрд╝ рд▓рдЧрд╛рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рд╕реНрдХ рдФрд░ рдПрдкреЗрдВрдбрд╕реНрдЯреНрд░рдХреНрдЪрд░рд░ рдмрдлрд╝рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╣рдо рдЙрддреНрдкрдиреНрди рдкреЗрдбрд╝ (рд╕реНрдерд┐рддрд┐ рдФрд░ рдЖрдИрдбреА, рдпрд╣ рд╕рдм рдбреЗрдЯрд╛ рд╣реИ) рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

рдкреНрд░рдореБрдЦ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╣рд╛рде рдХреЗ рдкреЗрдбрд╝реЛрдВ рд╕реЗ рд╕реБрд╕рдЬреНрдЬрд┐рдд, рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдо рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдЦреАрдВрдЪрддреА рд╣реИ рдФрд░ рджреГрд╢реНрдп рд╕реЗ рдореВрд▓ рд╡рд╕реНрддреБ рдХреЛ рд╣рдЯрд╛ рджреЗрддреА рд╣реИред

рдЦреАрдВрдЪрдирд╛ рдФрд░ LOD рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛


рдПрдХ рдкреНрд░рднрд╛рд╡реА рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЗрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдкреНрд░рдХрд╛рд░ рдЬрд╛рдирдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рд░реЗрдВрдбрд░ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдХреМрди рд╕реА рд╡рд╕реНрддреБрдПрдВ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИрдВ рдФрд░ рдХреМрди рд╕рд╛ рдПрд▓рдУрдбреА (рдЯреНрд░рд╛рдВрдЬрд┐рд╢рди рд▓реЙрдЬрд┐рдХ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП)ред

рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЧрдгрдирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╢реЗрдбрд░ рднреА рдРрд╕рд╛ рдХрд░реЗрдЧрд╛ред рдкреНрд░рддреНрдпреЗрдХ рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП, рдлреНрд░рд╕реНрдЯрдо рдХрд▓рд┐рдВрдЧ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


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

рдЖрдзреБрдирд┐рдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдПрдкреАрдЖрдИ рдореЗрдВ рдЕрджреНрднреБрдд рдХрд╛рд░реНрдп рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдбреНрд░реЙ рдХреЙрд▓ рдореЗрдВ рдЬрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдбреНрд░рд╛рдлрд╝реНрдЯ рдмрдлрд░ рдореЗрдВ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ID3D11DeviceContext :: DrawIndexedInstancedIndirect to D3D11)ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдХрдореНрдкреНрдпреВрдЯ рдмрдлрд░ рдХреЛ GPU рдкрд░ рднреА рднрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реАрдкреАрдпреВ рд╕реНрд╡рддрдВрддреНрд░ рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдХрд▓рддрд╛ рд╣реИ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдмрд╕ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЛ рдмреБрд▓рд╛рдУред DrawMeshInstancedIndirect)ред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ sabmesh рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рджрд░реНрдЬ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╢реЗрд╖ рдЬрд╛рдирдХрд╛рд░реА (рдЬрд╛рд▓ рдФрд░ рдСрдлрд╕реЗрдЯ рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛) рд╕реНрдерд┐рд░ рд╣реИред

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

рдпрд╣рд╛рдБ рдпрд╣ рдХреИрд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдореЗрдВ рджрд┐рдЦрддрд╛ рд╣реИ:


GPU рд░реЛрдбрд╝рд╛ culling рд╕реНрдкрд╖реНрдЯ рдЕрдЧрд▓рд╛ рдХрджрдо рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдХреИрдорд░рд╛ рдХреЗ рд╕рд╛рде RTS рдХреЗ рд▓рд┐рдП, рдФрд░ рдмрд╣реБрдд рдмрдбрд╝реА рдкрд╣рд╛рдбрд╝рд┐рдпреЛрдВ рдирд╣реАрдВ, рдЬреАрдд рдЗрддрдиреА рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИрдВ (рдФрд░ рдпрд╣рд╛рдБ рдпрд╣ рдЙрди рджрд┐рд▓рдЪрд╕реНрдкреА рдХреЗ рд▓рд┐рдП рд╣реИ)ред рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

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

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

CBUFFER_START(SpeedTreeWind) float4 _ST_WindVector; float4 _ST_WindGlobal; float4 _ST_WindBranch; float4 _ST_WindBranchTwitch; float4 _ST_WindBranchWhip; float4 _ST_WindBranchAnchor; float4 _ST_WindBranchAdherences; float4 _ST_WindTurbulences; float4 _ST_WindLeaf1Ripple; float4 _ST_WindLeaf1Tumble; float4 _ST_WindLeaf1Twitch; float4 _ST_WindLeaf2Ripple; float4 _ST_WindLeaf2Tumble; float4 _ST_WindLeaf2Twitch; float4 _ST_WindFrondRipple; float4 _ST_WindAnimation; CBUFFER_END 

рд╣рдо рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓реЗрдВрдЧреЗ? рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреЗрдбрд╝ рдХреЗ рд▓рд┐рдП, рд╣рдо рдореВрд▓ рд╕реНрдкреАрдбрдЯреНрд░реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рдЕрджреГрд╢реНрдп рд╕реНрдерд╛рди рдкрд░ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВрдЧреЗ (рдпрд╛ рдмрд▓реНрдХрд┐, рдПрдХрддрд╛ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреИрдорд░реЗ рдореЗрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ)ред рдпрд╣ рдмрд╛рдЙрдВрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдХреЛ рдмрд╣реБрдд рдмрдврд╝рд╛рдХрд░ рдФрд░ рдХреИрдорд░реЗ рдХреЗ рдкреАрдЫреЗ рд╡рд╕реНрддреБ рдХреЛ рд░рдЦрдХрд░) рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдлрд╝реНрд░реЗрдо рдХреЛ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╡рд╛рдВрдЫрд┐рдд рд╕реЗрдЯ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЧреЗрдЯрд╡реЗрдХреНрдЯрд░ (...)ред

рддреЛ, рдкреЗрдбрд╝ рд╣рд╡рд╛ рдореЗрдВ рдмрд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд┐рд▓рдмреЛрд░реНрдб рдХрд╛ рд╢реАрд░реНрд╖ рджреГрд╢реНрдп рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИ:


Shader рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде BILLBOARD_FACE_CAMERA_POS рдФрд░ рднреА рдмрджрддрд░:


рд╣рдореЗрдВ рдХреНрд╖реИрддрд┐рдЬ (рдКрдкрд░-рдиреАрдЪреЗ) рдмрд┐рд▓рдмреЛрд░реНрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд░рд╛рдЬрд╛ рдордЯрд░ рдХреЗ рд╕рдордп рд╕реЗ рдпрд╣ рдПрдХ рдорд╛рдирдХ рд╕реНрдкреАрдбрдЯреНрд░реА рд╕реБрд╡рд┐рдзрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдордВрдЪреЛрдВ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣ рдЕрднреА рднреА рдПрдХрддрд╛ рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реИред рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕реНрдкреАрдбрдЯреНрд░реА рдлреЛрд░рдо рд╕реЗ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ: "рдПрдХрддрд╛ рдПрдХреАрдХрд░рдг рдиреЗ рдХрднреА рднреА рдХреНрд╖реИрддрд┐рдЬ рдмрд┐рд▓рдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ред" рд╣рдо рдЕрдкрдирд╛ рд╣рд╛рде рддреЗрдЬрд╝ рдХрд░реЗрдВрдЧреЗред рдЬреНрдпрд╛рдорд┐рддрд┐ рд╕реНрд╡рдпрдВ рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдЯрд▓рд╕ рдореЗрдВ рдПрдХ рдкреНрд░реЗрдд рдХреЗ рдпреВрд╡реА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреИрд╕реЗ рдкрддрд╛ рдХрд░реЗрдВ?


рд╣рдореЗрдВ рдкреБрд░рд╛рдирд╛ SpeedTreeRT SDK рдорд┐рд▓рддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╕рдВрд░рдЪрдирд╛ рдкрд╛рддреЗ рд╣реИрдВ:

 struct SBillboard { bool m_bIsActive; const float* m_pTexCoords; const float* m_pCoords; float m_fAlphaTestValue; }; 

"M_pTexCurds 4 рдХреЗ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ (s, t) рдмрдирд╛рд╡рдЯ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЬреЛ рдмрд┐рд▓рдмреЛрд░реНрдб рдкрд░ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред m_pTexCoords рдореЗрдВ 8 рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рд╣реИрдВред тАЭ, рдпрд╣ рдПрдХ рд╡рд┐рджреЗрд╢реА рднрд╛рд╖рд╛ рдореЗрдВ рдХрд╣рддрд╛ рд╣реИред рдЦреИрд░, рд╣рдо рдПрдХ рдмрд╛рдЗрдирд░реА рд╕реНрдкрдо рдлрд╝рд╛рдЗрд▓ рдореЗрдВ 4 рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рд╡реИрд▓реНрдпреВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд░реЗрдВрдЬ [0..1] рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдкреНрд░рд╣рд╛рд░ рдХреА рд╡рд┐рдзрд┐ рд╕реЗ, рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рдВрдЫрд┐рдд рдЕрдиреБрдХреНрд░рдо рдкреИрдЯрд░реНрди рдХреЗ рдЕрдиреБрд░реВрдк рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рд╕рд╛рде 12 рдлреНрд▓реЛрдЯ рдХреЗ рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рдордиреЗ рд╣реИ:

 float signs[] = { -1, 1, -1, 1, 1, -1, 1, 1, 1, -1, 1, 1 }; 

рд╣рдо рдкреЗрд╢реЗрд╡рд░реЛрдВ рдкрд░ рдПрдХ рдЫреЛрдЯреА рдХрдВрд╕реЛрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬреЛ рд╕рднреА рдПрд╕рдкреАрдПрдо рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрддреА рд╣реИ, рдФрд░ рдЙрди рдореЗрдВ рдХреНрд╖реИрддрд┐рдЬ рд╣реЛрд░реНрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдпреВрд╡реА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рддрд▓рд╛рд╢ рдХрд░рддрд╛ рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рдРрд╕рд╛ CSV рд▓реЗрдмрд▓ рд╣реИ:

 Azalea_Desktop.spm: 0, 1, 0.333333, 1, 0.333333, 0.666667, 0, 0.666667, Azalea_Desktop_Flowers_1.spm: 0, 1, 0.333333, 1, 0.333333, 0.666667, 0, 0.666667, Azalea_Desktop_Flowers_2.spm: 0, 1, 0.333333, 1, 0.333333, 0.666667, 0, 0.666667, Leaf_Map_Maker_Desktop_1_Modeler_Use_Only.spm: Pattern not found! Leaf_Map_Maker_Desktop_2_Modeler_Use_Only.spm: Pattern not found! BarrelCactus_Cluster_Desktop_1.spm: 0, 0.592376, 0.407624, 0.592376, 0.407624, 0.184752, 0, 0.184752, BarrelCactus_Cluster_Desktop_2.spm: 0, 1, 0.499988, 1, 0.499988, 0.500012, 0, 0.500012, BarrelCactus_Desktop_1.spm: 0, 0.2208, 0.220748, 0.2208, 0.220748, 5.29885e-05, 0, 5.29885e-05, BarrelCactus_Desktop_2.spm: 0, 1, 0.301392, 1, 0.301392, 0.698608, 0, 0.698608, 

рдХреНрд╖реИрддрд┐рдЬ рдмрд┐рд▓рдмреЛрд░реНрдб рдХреА рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЛ рдмрдирд╛рд╡рдЯ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡рд╛рдВрдЫрд┐рдд рд░рд┐рдХреЙрд░реНрдб рдкрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВред

рдЕрдм рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╣реИ:


рдЕрднреА рднреА рдмрд╣реБрдд рдирд╣реАрдВ рд╣реИред рдЕрд▓реНрдлрд╛ рдЯреЗрд╕реНрдЯ рдереНрд░реЗрд╢реЛрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдмрд┐рд▓рдмреЛрд░реНрдб рдХреЛ рдХреЛрдг рд╕реЗ рдХреИрдорд░реЗ рддрдХ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдореЗрдВ рдлреАрдХрд╛ рдХрд░реЗрдВрдЧреЗ:



рдкрд░рд┐рдгрд╛рдо

Profiler рдЧрддрд┐рд╢реАрд▓ рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ (рдХрд┐рддрдиреА рдЪреАрдЬреЗрдВ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛ рд░рд╣реА рд╣реИрдВ) рдФрд░ рд╕реНрдереИрддрд┐рдХ (рдХрд┐рддрдиреА рд╡рд╕реНрддреБрдПрдВ рдФрд░ рдЙрдирдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рджреГрд╢реНрдп рдкрд░ рд╣реИрдВ) рдЖрдБрдХрдбрд╝реЗ:


рдЦреИрд░, рдЕрдВрддрд┐рдо рд╕реБрдВрджрд░ рд╡реАрдбрд┐рдпреЛ (рджреВрд╕рд░реА рдЫрдорд╛рд╣реА рдЧреБрдгрд╡рддреНрддрд╛ рд╕реНрддрд░реЛрдВ рдХреЗ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ):


рдЕрдВрдд рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИ:

  • рд╕рд┐рд╕реНрдЯрдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реАрдкреАрдпреВ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред
  • рдпрд╣ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
  • рдпрд╣ рд░реЗрдбреА-рдореЗрдб рд╕реНрдкреАрдбрдЯреНрд░реА рдПрд╕реЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЦрд░реАрдж рд╕рдХрддреЗ рд╣реИрдВред
  • рдмреЗрд╢рдХ, рдореИрдВрдиреЗ рдЙрд╕рдХреЗ рджреЛрд╕реНрддреЛрдВ рдХреЛ рдХрд┐рд╕реА рднреА LODGroup рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛, рди рдХреЗрд╡рд▓ рд╕реНрдкреАрдбрдЯреНрд░реАред рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдХрдВрдХрдбрд╝ рдЕрдм рд╕рдВрднрд╡ рднреА рд╣реИрдВред

рдХрдорд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рд░реЛрдирд╛ culling рдХреА рдХрдореА рдФрд░ рдЕрднреА рднреА рдмрд╣реБрдд рдЕрд░реНрдердкреВрд░реНрдг рд╣реЛрд░реНрдбрд┐рдВрдЧ рдирд╣реАрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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


All Articles