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

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

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

рд╕реВрдХреНрд╖реНрдо рд╕реНрддрд░ рдкрд░, рдмрд┐рд▓реНрдХреБрд▓ рдЪрд┐рдХрдиреА рд╕рддрд╣ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╕реВрдХреНрд╖реНрдо рдЪреЗрд╣рд░реЗ рдХрд╛рдлреА рдЫреЛрдЯреЗ рд╣реИрдВ рдФрд░ рд╣рдо рдЕрдкрдиреЗ рдкрд┐рдХреНрд╕реЗрд▓ рд╕реНрдерд╛рди рдХреЗ рднреАрддрд░ рдЙрдирдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо рдПрдХ рдЦреБрд░рджрд░рд╛рдкрди рдЧреБрдгрд╛рдВрдХ рдкреЗрд╢ рдХрд░рдХреЗ рд╕рддрд╣ рдЦреБрд░рджрд░рд╛рдкрди рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдЧреБрдгрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡реЗрдХреНрдЯрд░ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдЙрдиреНрдореБрдЦ рд╕реВрдХреНрд╖реНрдо рдЪреЗрд╣рд░реЛрдВ рдХреЗ рдЕрдВрд╢ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬ ред рдпрд╣ рд╕рджрд┐рд╢ рдЬ рдШрдЯрдирд╛ рдкреНрд░рдХрд╛рд╢ рдХреА рджрд┐рд╢рд╛ рдХреЗ рдмреАрдЪ рдмреАрдЪ рдореЗрдВ рдкрдбрд╝реЗ рдПрдХ рдордзреНрдпрдпреБрдЧреАрди рд╡реЗрдХреНрдЯрд░ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рд▓ рдФрд░ рдкреНрд░реЗрдХреНрд╖рдХ рдХреА рджрд┐рд╢рд╛ рд╡ реА ред рд╣рдордиреЗ рдкрд╣рд▓реЗ рдЙрдиреНрдирдд рдкреНрд░рдХрд╛рд╢ рд╡реНрдпрд╡рд╕реНрдерд╛ рдкрд░ рдПрдХ рдкрд╛рда рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА, рдЬрд╣рд╛рдВ рд╣рдордиреЗ рдЗрд╕реЗ рд╡реИрдХреНрдЯрд░ рдХреЗ рдпреЛрдЧ рдХреЗ рдЕрдиреБрдкрд╛рдд рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рд▓ рдФрд░ рд╡ реА рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╡реЗрдХреНрдЯрд░ рдХреА рд▓рдВрдмрд╛рдИ:
h = f r a c l + v | | рдПрд▓ + рд╡реА | |
рдордВрдЭрд▓рд╛ рд╡реЗрдХреНрдЯрд░ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рд╕реВрдХреНрд╖реНрдо рдЪреЗрд╣рд░реЗ рдЙрдиреНрдореБрдЦ рд╣реЛрдВрдЧреЗ, рдЙрддрдирд╛ рд╣реА рддреЗрдЬ рдФрд░ рдЪрдордХреАрд▓рд╛ рд╕реНрдкреЗрдХреНрдпреБрд▓рд░ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рд╣реЛрдЧрд╛ред рдЦреБрд░рджрд░рд╛рдкрди рдЧреБрдгрд╛рдВрдХ рдХреЗ рдХрд╛рд░рдг, рдЬреЛ 0 рдФрд░ 1 рдХреЗ рдмреАрдЪ рд╕реНрдерд┐рдд рд╣реИ, рд╣рдо рд╕реВрдХреНрд╖реНрдо рдЪреЗрд╣рд░реЗ рдХреЗ рдЙрдиреНрдореБрдЦреАрдХрд░рдг рдХреЛ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдЕрдиреБрдорд╛рдирд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЦреБрд░рджрд░рд╛рдкрди рдЧреБрдгрд╛рдВрдХ рдХрд╛ рдПрдХ рдЙрдЪреНрдЪ рдореВрд▓реНрдп рдЪрд┐рдХрдиреА рд╕рддрд╣реЛрдВ рдкрд░ рдПрдХ рдЫреЛрдЯреЗ рдФрд░ рддреЗрдЬ рд╕реНрдерд╛рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдмрдбрд╝реЗ рдЖрдХрд╛рд░ рдХрд╛ рдПрдХ рдорд┐рд░рд░ рдлреНрд▓реЗрдпрд░ рд╕реНрдкреЙрдЯ рджреЗрддрд╛ рд╣реИред
рдКрд░реНрдЬрд╛ рд╕рдВрд░рдХреНрд╖рдгред
рд╕реВрдХреНрд╖реНрдо рдЪреЗрд╣рд░реЗ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рд╕рдиреНрдирд┐рдХрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдКрд░реНрдЬрд╛ рд╕рдВрд░рдХреНрд╖рдг рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╣реЛрддрд╛ рд╣реИ: рдкрд░рд╛рд╡рд░реНрддрд┐рдд рдкреНрд░рдХрд╛рд╢ рдХреА рдКрд░реНрдЬрд╛ рдХрднреА рднреА рдкреНрд░рдХрд╛рд╢ рдХреА рдКрд░реНрдЬрд╛ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдЧреА (рдпрджрд┐ рд╕рддрд╣ рдЦреБрдж рд╕реЗ рдЪрдордХрддреА рдирд╣реАрдВ рд╣реИ)ред рдКрдкрд░ рдХреА рдЫрд╡рд┐ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рддрд╣ рдХреА рдЦреБрд░рджрд░рд╛рдкрди рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде, рдкрд░рд╛рд╡рд░реНрддрд┐рдд рдкреНрд░рдХрд╛рд╢ рдХрд╛ рд╕реНрдерд╛рди рдмрдврд╝рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЗрд╕рдХреА рдЪрдордХ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдкрд░рд╛рд╡рд░реНрддрд┐рдд рдкреНрд░рдХрд╛рд╢ рдХреА рддреАрд╡реНрд░рддрд╛ рд╕реНрдкреЙрдЯ рдХреЗ рдЖрдХрд╛рд░ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рднреА рдкрд┐рдХреНрд╕рд▓ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдереА, рддреЛ рдореЛрдЯреЗ рддреМрд░ рдкрд░ рд╕рддрд╣ рдЕрдзрд┐рдХ рдКрд░реНрдЬрд╛ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░реЗрдЧреА, рдЬреЛ рдКрд░реНрдЬрд╛ рдХреЗ рд╕рдВрд░рдХреНрд╖рдг рдХреЗ рдХрд╛рдиреВрди рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░реЗрдЧреАред рдЗрд╕рд▓рд┐рдП, рд╕реНрдкреЗрдХреНрдпреБрд▓рд░ рдкрд░рд╛рд╡рд░реНрддрди рдЪрд┐рдХрдиреА рд╕рддрд╣реЛрдВ рдкрд░ рдЪрдордХреАрд▓реЗ рдФрд░ рдЦреБрд░рджрд░реА рд╕рддрд╣реЛрдВ рдкрд░ рдордВрдж рд╣реЛрддреЗ рд╣реИрдВред
рдКрд░реНрдЬрд╛ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдлреИрд▓рд╛рдирд╛ рдФрд░ рджрд░реНрдкрдг рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрдкрд╖реНрдЯ рдЕрд▓рдЧрд╛рд╡ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрд╕ рдХреНрд╖рдг рдореЗрдВ, рдЬрдм рдкреНрд░рдХрд╛рд╢ рдХреА рдПрдХ рдХрд┐рд░рдг рд╕рддрд╣ рддрдХ рдкрд╣реБрдВрдЪрддреА рд╣реИ, рддреЛ рдпрд╣ рдкрд░рд╛рд╡рд░реНрддрд┐рдд рдФрд░ рдЕрдкрд╡рд░реНрддрд┐рдд рдШрдЯрдХреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрддреА рд╣реИ ред рдкрд░рд╛рд╡рд░реНрддрд┐рдд рдШрдЯрдХ рдкреНрд░рдХрд╛рд╢ рдкрд░рд╛рд╡рд░реНрддрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╕рддрд╣ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ; рд╣рдо рдЗрд╕реЗ рдкреНрд░рдХрд╛рд╢ рдХреЗ рджрд░реНрдкрдг рдШрдЯрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред рдЕрдкрд╡рд░реНрддрд┐рдд рдШрдЯрдХ рдкреНрд░рдХрд╛рд╢ рд╣реИ рдЬреЛ рд╕рддрд╣ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд╢реЛрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИ - рдпрд╣ рд╣рдореЗрдВ рдкреНрд░рдХрд╛рд╢ рдХреЗ рдлреИрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдШрдЯрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдкреНрд░рдХрд╛рд╢ рдХреЗ рдЕрд╡рд╢реЛрд╖рдг рд╕реЗ рдЬреБрдбрд╝реА рдХреБрдЫ рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╣реИрдВ - рдпрд╣ рддреБрд░рдВрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рд╣реА рдкреНрд░рдХрд╛рд╢ рд╕рддрд╣ рдХреЛ рдЫреВрддрд╛ рд╣реИред рднреМрддрд┐рдХреА рдХреЗ рдкрд╛рдареНрдпрдХреНрд░рдо рд╕реЗ, рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рдХрд╛рд╢ рдХреЛ рдКрд░реНрдЬрд╛ рдХреЗ рд╕рд╛рде рдлреЛрдЯреЛрди рдХреЗ рдПрдХ рдмреАрдо рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕реАрдзреА рд░реЗрдЦрд╛ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдмрд╛рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЯрдХрд░рд╛рд╡ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рднреА рдКрд░реНрдЬрд╛ рдЦреЛ рджреЗрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдорд╛рдЗрдХреНрд░реЛрдкрд╛рд░реНрдЯрд┐рдХрд▓реНрд╕ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░рдХрд╛рд╢ рдХреА рдХрд┐рд░рдг рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рдХреА рдЖрдХреГрддрд┐ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпреЗ рдХрдг рд╣рд░ рдЯрдХрд░рд╛рд╡ рдореЗрдВ рдкреНрд░рдХрд╛рд╢ рдХреА рдКрд░реНрдЬрд╛ рдХреЗ рднрд╛рдЧ рдпрд╛ рд╕рднреА рдХреЛ рдЕрд╡рд╢реЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдЧрд░реНрдореА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕рднреА рдКрд░реНрдЬрд╛ рдЕрд╡рд╢реЛрд╖рд┐рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдФрд░ рдкреНрд░рдХрд╛рд╢ рд▓рдЧрд╛рддрд╛рд░ (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ) рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рдмрд┐рдЦрд░рддрд╛ рд░рд╣рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдпрд╣ рдлрд┐рд░ рд╕реЗ рдЕрдиреНрдп рдХрдгреЛрдВ рд╕реЗ рдЯрдХрд░рд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдКрд░реНрдЬрд╛ рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдирд┐рдХрд▓рддрд╛ рд╣реИ рдпрд╛ рдлрд┐рд░ рд╕рддрд╣ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рддрд╣ рдкреНрд░рдХрд╛рд╢ рдХрд┐рд░рдгреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рд╕рддрд╣ рдХреЗ рдордирд╛рдпрд╛ (рдлреИрд▓рд╛рдирд╛) рд░рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрддрд╛ рд╣реИред рдкреАрдмреАрдЖрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рд╕рд░рд▓ рдзрд╛рд░рдгрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рдЕрдкрд╡рд░реНрддрд┐рдд рдкреНрд░рдХрд╛рд╢ рдкреНрд░рднрд╛рд╡ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЕрд╡рд╢реЛрд╖рд┐рдд рдФрд░ рдмрд┐рдЦрд░реЗ рд╣реБрдП рд╣реИрдВ, рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рджреВрд░реА рдкрд░ рд╕рддрд╣ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдмрд┐рдЦрд░реЗ рд╣реБрдП рдкреНрд░рдХрд╛рд╢ рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ shader рддрдХрдиреАрдХ рдЬреЛ рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдЙрдкрд╕рддрд╣ рдмрд┐рдЦрд░рдиреЗ рд╡рд╛рд▓реА рддрдХрдиреАрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдиреА рдЬрд╛рддреА рд╣реИрдВ, рдЪрдордбрд╝реЗ, рд╕рдВрдЧрдорд░рдорд░, рдореЛрдо рдЬреИрд╕реА рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреА рджреГрд╢реНрдп рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рдмрд╣реБрдд рдмрдврд╝рд╛рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдорд╣рдВрдЧреА рд╣реИрдВред
рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реВрдХреНрд╖реНрдорддрд╛рдПрдВ рддрдм рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ рдЬрдм рдкреНрд░рдХрд╛рд╢ рдХрд╛ рдЕрдкрд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдзрд╛рддреБ рдХреА рд╕рддрд╣реЛрдВ рдкрд░ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдзрд╛рддреБ рдХреА рд╕рддрд╣реЗрдВ рдЧреИрд░-рдзрд╛рддреНрд╡рд┐рдХ (рдпрд╛рдиреА, рдбрд╛рдЗрд▓реЗрдЯреНрд░рд┐рдХреНрд╕) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреНрд░рдХрд╛рд╢ рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ - рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рддреА рд╣реИрдВред рд╡реЗ рдЕрдкрд╡рд░реНрддрди рдФрд░ рдкрд░рд╛рд╡рд░реНрддрди рдХреЗ рд╕рдорд╛рди рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде: рд╕рднреА рдЕрдкрд╡рд░реНрддрд┐рдд рдкреНрд░рдХрд╛рд╢ рдХреЛ рдмрд┐рдЦрд░рдиреЗ рдХреЗ рдмрд┐рдирд╛ рд╕рддрд╣ рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд╢реЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рджрд░реНрдкрдг-рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдкреНрд░рдХрд╛рд╢ рдЕрд╡рд╢реЗрд╖; рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдзрд╛рддреБ рдХреА рд╕рддрд╣реЛрдВ рдХрд╛ рд░рдВрдЧ рдлреИрд▓рддрд╛ рдирд╣реАрдВ рд╣реИред рдзрд╛рддреБрдУрдВ рдФрд░ рдбрд╛рдЗрд▓реЗрдХреНрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдмреАрдЪ рдЗрд╕ рд╕реНрдкрд╖реНрдЯ рдЕрдВрддрд░ рдХреЗ рдХрд╛рд░рдг, рдЙрдиреНрд╣реЗрдВ PBR рдХрдиреНрд╡реЗрдпрд░ рдореЗрдВ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЛ рдФрд░ рдиреАрдЪреЗ рд▓реЗ рдЬрд╛рдПрдВрдЧреЗред
рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдФрд░ рдЕрдкрд╡рд░реНрддрд┐рдд рдкреНрд░рдХрд╛рд╢ рдХреЗ рдмреАрдЪ рдпрд╣ рдЕрдВрддрд░ рд╣рдореЗрдВ рдКрд░реНрдЬрд╛ рд╕рдВрд░рдХреНрд╖рдг рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдПрдХ рдФрд░ рдЕрд╡рд▓реЛрдХрди рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ: рдЙрдирдХреЗ рдореВрд▓реНрдп рдкрд░рд╕реНрдкрд░ рдЕрдирдиреНрдп рд╣реИрдВред рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдкреНрд░рдХрд╛рд╢ рдХреА рдКрд░реНрдЬрд╛ рдХреЛ рд╕рд╛рдордЧреНрд░реА рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд╢реЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкрд░рд╛рд╡рд░реНрддрд┐рдд рдкреНрд░рдХрд╛рд╢ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рддрд╣ рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд╢реЛрд╖рд┐рдд рдКрд░реНрдЬрд╛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдкреНрд░рдХрд╛рд╢ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦрд╛рдВрдХрди рдХреЗ рдмрд╛рдж рд╢реЗрд╖ рдКрд░реНрдЬрд╛ рд╣реИред
рд╣рдо рдЗрд╕ рдЕрдиреБрдкрд╛рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╕рддрд╣ рджреНрд╡рд╛рд░рд╛ рдкрд░рд╛рд╡рд░реНрддрд┐рдд рдХрд┐рд░рдгреЛрдВ рдХреА рдКрд░реНрдЬрд╛ рдХреЗ рдкреНрд░рддрд┐рд╢рдд рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рд▓реЗ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рднрд╛рдЧ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдкрд░рд╛рд╡рд░реНрддрд┐рдд рдкреНрд░рдХрд╛рд╢ рдХрд╛ рдЕрдВрд╢ рд╕реАрдзреЗ рдкрд░рд╛рд╡рд░реНрддрд┐рдд рд╕реЗ, рдЬреИрд╕реЗ:
float kS = calculateSpecularComponent(...); // / float kD = 1.0 - kS; // /
рдЗрд╕ рддрд░рд╣ рд╣рдо рдКрд░реНрдЬрд╛ рдХреЗ рд╕рдВрд░рдХреНрд╖рдг рдХреЗ рдирд┐рдпрдо рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рдФрд░ рдЕрдкрд╡рд░реНрддрд┐рдд рджреЛрдиреЛрдВ рднрд╛рдЧреЛрдВ рдХреЗ рдЕрд░реНрде рд╕реАрдЦрддреЗ рд╣реИрдВред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рди рддреЛ рдЕрдкрд╡рд░реНрддрд┐рдд (рдлреИрд▓рд╛рдирд╛) рдФрд░ рди рд╣реА рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рднрд╛рдЧ 1.0 рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдЙрдирдХреА рдХреБрд▓ рдКрд░реНрдЬрд╛ рдШрдЯрдирд╛ рдкреНрд░рдХрд╛рд╢ рдКрд░реНрдЬрд╛ рдХреЗ рдореВрд▓реНрдп рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдкрд┐рдЫрд▓реЗ рдкрд╛рдареЛрдВ рдореЗрдВ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд▓реЗ рд╕рдХрддреЗ рдереЗред
рдкрд░рд╛рд╡рд░реНрддрди рд╕рдореАрдХрд░рдг
рдЙрдкрд░реЛрдХреНрдд рд╣рдореЗрдВ рддрдерд╛рдХрдерд┐рдд рдкреНрд░рддрд┐рдкрд╛рджрди рд╕рдореАрдХрд░рдг рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ : рдмрд╣реБрдд рд╕реНрдорд╛рд░реНрдЯ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рдЬрдЯрд┐рд▓ рд╕рдореАрдХрд░рдг, рдФрд░ рдЖрдЬ рдпрд╣ рдЕрдиреБрдХрд░рдг рдкреНрд░рдХрд╛рд╢ рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдореЙрдбрд▓ рд╣реИред PBR рдЗрд╕ рд╕рдореАрдХрд░рдг рдХреЗ рдХрдбрд╝рд╛рдИ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╕рдореАрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ ред PBR рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╕рдореАрдХрд░рдг рдХреА рдкреВрд░реА рд╕рдордЭ рд╣реЛрдирд╛ рдЬрд░реВрд░реА рд╣реИ:
Lo(p, omegao)= int limit Omegafr(p, omegai, omegao)Li(p, omegai)n cdot omegaid omegai
рдкрд╣рд▓реЗ рддреЛ рдпрд╣ рдбрд░рд╛рд╡рдирд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдзреАрд░реЗ-рдзреАрд░реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдзреАрд░реЗ-рдзреАрд░реЗ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрдиреЗ рд▓рдЧреЗрдЧрд╛ред рдЗрд╕ рд╕рдореАрдХрд░рдг рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рд░реЗрдбрд┐рдпреЛрдореЗрдЯреНрд░реА рдореЗрдВ рдереЛрдбрд╝рд╛ рдЧрд╣рд░рд╛ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ред рд░реЗрдбрд┐рдпреЛрдореАрдЯреНрд░рд┐рдХ рд╡рд┐рджреНрдпреБрдд рдЪреБрдореНрдмрдХреАрдп рд╡рд┐рдХрд┐рд░рдг (рджреГрд╢реНрдп рдкреНрд░рдХрд╛рд╢ рд╕рд╣рд┐рдд) рдХреЛ рдорд╛рдкрдиреЗ рдХрд╛ рд╡рд┐рдЬреНрдЮрд╛рди рд╣реИред рдХрдИ рд░реЗрдбрд┐рдпреЛрдореЗрдЯреНрд░рд┐рдХ рдорд╛рддреНрд░рд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рд░реЛрд╢рдиреА рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╕рдореАрдХрд░рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ рдПрдирд░реНрдЬреА рд▓реНрдпреВрдорд┐рдиреЗрдВрд╕ (рдЕрдВрдЧреНрд░реЗрдЬреА рдореВрд▓рдХ) рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдпрд╣рд╛рдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрд▓рдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рдХрд╛рд╢ рдХреА рддреАрд╡реНрд░рддрд╛ рдпрд╛ рддреАрд╡реНрд░рддрд╛ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рджрд┐рд╢рд╛ рд╕реЗ рдЖ рд░рд╣рд╛ рд╣реИред EJ, рдмрджрд▓реЗ рдореЗрдВ, рдХрдИ рднреМрддрд┐рдХ рд░рд╛рд╢рд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдпреЛрдЬрди рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реИ, рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред
рджреАрдкреНрддрд┐рдорд╛рди рдкреНрд░рд╡рд╛рд╣
рд╡рд┐рдХрд┐рд░рдг рдкреНрд░рд╡рд╛рд╣ ( Phi ) рдкреНрд░рдХрд╛рд╢-рд╕рдВрдЪрд░рд┐рдд рдКрд░реНрдЬрд╛ рдХреА рд╢рдХреНрддрд┐ рд╣реИ, рдЬрд┐рд╕реЗ рд╡рд╛рдЯ рдореЗрдВ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рдХрд╛рд╢ рдХреА рдХреБрд▓ рдКрд░реНрдЬрд╛ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рддрд░рдВрдЧ рджреИрд░реНрдзреНрдп рдХреЗ рд▓рд┐рдП рдХрдИ рд╢рдмреНрдж рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдкреЗрдХреНрдЯреНрд░рдо рдХреЗ рдЕрдкрдиреЗ рд░рдВрдЧ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдкреНрд░рдХрд╛рд╢ рд╕реНрд░реЛрдд рджреНрд╡рд╛рд░рд╛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдКрд░реНрдЬрд╛, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрди рд╕рднреА рддрд░рдВрдЧ рджреИрд░реНрдзреНрдп рдХреЗ рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред 390nm рд╕реЗ 700nm рддрдХ рдХреА рддрд░рдВрдЧ рджреИрд░реНрдзреНрдп рд╕реНрдкреЗрдХреНрдЯреНрд░рдо рдХреЗ рджреГрд╢реНрдп рднрд╛рдЧ рдХреЛ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рдЗрд╕ рд╕реАрдорд╛ рдореЗрдВ рд╡рд┐рдХрд┐рд░рдг рдХреЛ рдорд╛рдирд╡ рдЖрдВрдЦ рджреНрд╡рд╛рд░рд╛ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдиреАрдЪреЗ рджреА рдЧрдИ рдЫрд╡рд┐ рдореЗрдВ рдЖрдк рд╡рд┐рднрд┐рдиреНрди рддрд░рдВрдЧ рджреИрд░реНрдзреНрдп рдХреЗ рд▓рд┐рдП рдКрд░реНрдЬрд╛ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рджрд┐рди рдХреЗ рдЙрдЬрд╛рд▓реЗ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

рд╡рд┐рдХрд┐рд░рдг рддрд░рдВрдЧ рд╕рднреА рддрд░рдВрдЧ рджреИрд░реНрдзреНрдп рдХреЗ рд▓рд┐рдП рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЧреНрд░рд╛рдл рдХреЗ рддрд╣рдд рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдХрдВрдкреНрдпреВрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдореЗрдВ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрд╛рд╢ рдХреА рддрд░рдВрдЧ рджреИрд░реНрдзреНрдп рдХрд╛ рдкреНрд░рддреНрдпрдХреНрд╖ рдЙрдкрдпреЛрдЧ рдЕрд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рднреА рддрд░рдВрдЧрджреИрд░реНрдзреНрдп рдХреЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╡рд┐рдХрд┐рд░рдг рдХреЗ рд╕рд░рд▓реАрдХреГрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗрддреЗ рд╣реИрдВ, рд░рдВрдЧреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣, рдЬрд┐рд╕реЗ RGB (рдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЖрдорддреМрд░ рдкрд░ рдЗрд╕реЗ рдкреНрд░рдХрд╛рд╢ рдХрд╛ рд░рдВрдЧ рдХрд╣рддреЗ рд╣реИрдВ) рдХрд╣рддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рджреГрд╢реНрдп рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдХреБрдЫ рдиреБрдХрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреВрд░реЗ рдкрд░ рдпрд╣ рдЕрдВрддрд┐рдо рддрд╕реНрд╡реАрд░ рдХреЛ рдереЛрдбрд╝рд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ред
рдареЛрд╕ рдХреЛрдг
рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реВрдкрд┐рдд рдареЛрд╕ рдХреЛрдг рдУрдореЗрдЧрд╛ рд╣рдореЗрдВ рдЗрдХрд╛рдИ рдХреНрд╖реЗрддреНрд░ рдкрд░ рдЕрдиреБрдорд╛рдирд┐рдд рдЖрдХреГрддрд┐ рдХрд╛ рдЖрдХрд╛рд░ рдпрд╛ рдХреНрд╖реЗрддреНрд░ рджреЗрддрд╛ рд╣реИред рдЖрдк рдЗрд╕рдХреА рдПрдХ рджрд┐рд╢рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдк рдПрдХ рдЧреЛрд▓реЗ рдХреЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рд╣реИрдВ рдФрд░ рдЖрдХреГрддрд┐ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рд┐рд▓реНрд╣реВрдЯ рдХрд╛ рдЖрдХрд╛рд░ рдПрдХ рдареЛрд╕ рдХреЛрдг рд╣реЛрдЧрд╛ред
рд╡рд┐рдХрд┐рд░рдг рдХреА рддреАрд╡реНрд░рддрд╛
рд╡рд┐рдХрд┐рд░рдг рд╢рдХреНрддрд┐ рдареЛрд╕ рдХреЛрдг рдкреНрд░рддрд┐ рд╡рд┐рдХрд┐рд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреА рдорд╛рддреНрд░рд╛ рдпрд╛ рдареЛрд╕ рдХреЛрдг рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рддрд┐ рдЗрдХрд╛рдИ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд╢ рд╕реНрд░реЛрдд рдХреА рддрд╛рдХрдд рдХреЛ рдорд╛рдкрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд░реНрд╡рд╡реНрдпрд╛рдкреА рдкреНрд░рдХрд╛рд╢ рд╕реНрд░реЛрдд рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╕рднреА рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рдирд┐рдХрд▓рддрд╛ рд╣реИ, рд╡рд┐рдХрд┐рд░рдг рдмрд▓ рдХрд╛ рдЕрд░реНрде рд╣реИ рдкреНрд░рддрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд╖реЗрддреНрд░ (рдареЛрд╕ рдХреЛрдг) рдкреНрд░рдХрд╛рд╢ рдХреА рдКрд░реНрдЬрд╛:
рд╡рд┐рдХрд┐рд░рдг рдХреА рддрд╛рдХрдд рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╕рдореАрдХрд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
I= fracd Phid omega
, рдЬрд╣рд╛рдВ рдореИрдВ рдкреНрд░рддрд┐ рдареЛрд╕ рдХреЛрдг рдкрд░ рд╡рд┐рдХрд┐рд░рдг рдкреНрд░рд╡рд╛рд╣ f рд╣реИ d omega
рд╡рд┐рдХрд┐рд░рдг рдкреНрд░рд╡рд╛рд╣, рдмрд▓ рдФрд░ рдареЛрд╕ рдХреЛрдг рдХреЛ рдЬрд╛рдирдХрд░, рд╣рдо рдКрд░реНрдЬрд╛ рдЪрдордХ рд╕рдореАрдХрд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдХреНрд╖реЗрддреНрд░ A рдореЗрдВ рдХреБрд▓ рджреЗрдЦреА рдЧрдИ рдКрд░реНрдЬрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдмрд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдХрд╛рд╢ рдХреЗ рд▓рд┐рдП рдареЛрд╕ рдХреЛрдг O рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рд╣реИред Phi
L= fracd2 PhidAd omega cos theta

рдКрд░реНрдЬрд╛ рдЪрдордХ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкреНрд░рдХрд╛рд╢ рдХреА рд╡рд┐рдХрд┐рд░рдгрдорд┐рддреАрдп рдорд╛рддреНрд░рд╛ рд╣реИ рдЬреЛ рдШрдЯрдирд╛ рдкреНрд░рдХрд╛рд╢ рдХреЗ рдХреЛрдг рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред $рдереАрдЯрд╛ (рдкреНрд░рдХрд╛рд╢ рдХреА рджрд┐рд╢рд╛ рдФрд░ рд╕рддрд╣ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдХреЗ рдмреАрдЪ рдХрд╛ рдХреЛрдг) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ cos рдереАрдЯрд╛ : рд╕рддрд╣ рдХреЗ рд╕рд╛рде рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдХрдордЬреЛрд░ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЬрдм рдпрд╣ рд▓рдВрдмрд╡рдд рд╣реЛрддрд╛ рд╣реИ рддреЛ рдордЬрдмреВрдд рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рдХрд╛рд╢ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рдкрд░ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдкреНрд░рдХрд╛рд╢ рдлреИрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдЧрдгрдирд╛ рдХреЗ рд╕рдорд╛рди рд╣реИ cos рдереАрдЯрд╛ рдкреНрд░рдХрд╛рд╢ рдХреА рджрд┐рд╢рд╛ рдФрд░ рд╕рддрд╣ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╡реЗрдХреНрдЯрд░ рдХреЗ рдмреАрдЪ рдПрдХ рдЕрджрд┐рд╢ рдЙрддреНрдкрд╛рдж рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ:
float cosTheta = dot(lightDir, N);
рдКрд░реНрдЬрд╛ рдХреА рдЪрдордХ рдХрд╛ рд╕рдореАрдХрд░рдг рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рднреМрддрд┐рдХ рдорд╛рддреНрд░рд╛рдПрдБ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рд░реБрдЪрд┐ рджреЗрддреА рд╣реИрдВред рдпрджрд┐ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдареЛрд╕ рдХреЛрдг solid рдФрд░ рдХреНрд╖реЗрддреНрд░ A рдЕрдирдВрдд рд╣реИ, рддреЛ рд╣рдо рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдкреНрд░рддрд┐ рдПрдХ рдмрд┐рдВрджреБ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдХреА рдПрдХ рдХрд┐рд░рдг рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП EE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╣рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ (рдЦрдВрдб) рдкрд░ рдПрдХрд▓ рдкреНрд░рдХрд╛рд╢ рдХрд┐рд░рдг рдЕрднрд┐рдирдп рдХреЗ рдИрдЖрдИ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛; рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдареЛрд╕ рдХреЛрдг рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВ рдУрдореЗрдЧрд╛ рджрд┐рд╢рд╛ рдореЗрдВ рд╡реЗрдХреНрдЯрд░ рдУрдореЗрдЧрд╛ рдФрд░ рдП рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдкреА ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЯреБрдХрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдПрдХрд▓ рдкреНрд░рдХрд╛рд╢ рдХрд┐рд░рдг рдХреЗ рдпреЛрдЧрджрд╛рди рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдЕрдкрдиреЗ рд╢реЗрдб рдореЗрдВ рдИрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЬрдм рдИрдИ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рд╣рдо рдЖрдо рддреМрд░ рдкрд░ рдкреЙрдЗрдВрдЯ рдкреА рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реА рд╕рднреА рд╣рд▓реНрдХреА рдШрдЯрдирд╛рдУрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдЬреЛ рдкреВрд░реЗ рдИрдИ рдХрд╛ рдпреЛрдЧ рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╡рд┐рдХрд┐рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдИрдЖрдИ рдФрд░ рд╡рд┐рдХрд┐рд░рдг рдХреЛ рдЬрд╛рдирдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╕рдореАрдХрд░рдг рдкрд░ рд▓реМрдЯ рд╕рдХрддреЗ рд╣реИрдВ:
Lo(p, omegao)= int limit Omegafr(p, omegai, omegao)Li(p, omegai)n cdot omegaid omegai
рдЕрдм рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдПрд▓ рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕рдореАрдХрд░рдг рдореЗрдВ рд╕рддрд╣ рдкреА рдкрд░ рдХреБрдЫ рдмрд┐рдВрджреБ рдФрд░ рдЖрдиреЗ рд╡рд╛рд▓реА рд░реЛрд╢рдиреА рдХреЗ рдХреБрдЫ рдЕрд╕реАрдо рдЫреЛрдЯреЗ рдареЛрд╕ рдХреЛрдг рдХреЗ рд▓рд┐рдП рдИрдЖрдИ рд╣реИ omegai , рдЬрд┐рд╕реЗ рдЗрдирдкреБрдЯ рдирд┐рд░реНрджреЗрд╢ рд╡реЗрдХреНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ omegai ред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдКрд░реНрдЬрд╛ рдХрдИ рдЧреБрдирд╛ рд╣реИ cos рдереАрдЯрд╛ - рдкреНрд░рдХрд╛рд╢ рдХреА рдШрдЯрдирд╛ рдФрд░ рд╕рддрд╣ рдкрд░ рд╕рд╛рдорд╛рдиреНрдп рдХреА рджрд┐рд╢рд╛ рдХреЗ рдмреАрдЪ рдХрд╛ рдХреЛрдг, рдЬреЛ рдЙрддреНрдкрд╛рдж рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рд╕рдореАрдХрд░рдг рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ n cdot omegai ред рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╕рдореАрдХрд░рдг рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рдИрдЖрдИ рдХреЗ рдпреЛрдЧ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ Lo(p, omegao) рдмрд┐рдВрджреБ рдкреА рдХреА рджрд┐рд╢рд╛ рдореЗрдВ ╧Йo , рдЬреЛ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХреЗ рд▓рд┐рдП рдирд┐рд╡рд░реНрддрдорд╛рди рджрд┐рд╢рд╛ рд╣реИред рд╡рд░рдирд╛: Lo рдПрдХ рдмрд┐рдВрджреБ рдХреЗ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рд╡рд┐рдХрд┐рд░рдг рдХреЛ рдорд╛рдкрддрд╛ рд╣реИ рдкреА рдЕрдЧрд░ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛рдП omegao ред
рдЪреВрдВрдХрд┐ рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╕рдореАрдХрд░рдг рд╡рд┐рдХрд┐рд░рдг рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬреЛ рд╕рднреА рдЖрдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдХрд┐рд░рдг рдХрд╛ рдпреЛрдЧ рд╣реИ, рд╣рдо рдкреНрд░рдХрд╛рд╢ рдХреЛ рди рдХреЗрд╡рд▓ рдПрдХ рдЖрдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХрд╛рд╢ рджрд┐рд╢рд╛, рдмрд▓реНрдХрд┐ рдЧреЛрд▓рд╛рд░реНрдз рдХреЗ рднреАрддрд░ рдЖрдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдкреНрд░рдХрд╛рд╢ рджрд┐рд╢рд╛рдУрдВ рд╕реЗ рдорд╛рдкрддреЗ рд╣реИрдВ рдУрдореЗрдЧрд╛ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ рдкреА ред рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рддрд╣ рдХреЗ рд╕рд╛рде рдЖрдзрд╛ рдЧреЛрд▓рд╛рдХрд╛рд░ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдПрди :

рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЕрдВрджрд░ рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХреЗ рдпреЛрдЧ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдЧреЛрд▓рд╛рд░реНрдз рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рд╕рднреА рдЖрдиреЗ рд╡рд╛рд▓реА рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рд╕рдореАрдХрд░рдг рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВред d omegai рдЧреЛрд▓рд╛рд░реНрдз рдХреЗ рднреАрддрд░ рдУрдореЗрдЧрд╛ ред рдЪреВрдВрдХрд┐ рд░реЗрдВрдбрд░ рд╕рдореАрдХрд░рдг рдФрд░ рдкрд░рд╛рд╡рд░реНрддрди рд╕рдореАрдХрд░рдг рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЕрднрд┐рдиреНрди рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд░реЗрдВрдЧреЗред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдЧреЛрд▓рд╛рд░реНрдз рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╕рдореАрдХрд░рдг рдХреЗ рдЫреЛрдЯреЗ рдЕрд╕рддрдд рдЪрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ рдУрдореЗрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЪрд░рдг рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдФрд╕рдд рдХрд░реЗрдВред рдЗрд╕реЗ рд░реАрдореИрди рдпреЛрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЗ рд╕рд╛рде рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
int steps = 100; float sum = 0.0f; vec3 P = ...; vec3 Wo = ...; vec3 N = ...; float dW = 1.0f / steps; for(int i = 0; i < steps; ++i) { vec3 Wi = getNextIncomingLightDir(i); sum += Fr(P, Wi, Wo) * L(P, Wi) * dot(N, Wi) * dW; }
рдкреНрд░рддреНрдпреЗрдХ рдЕрд╕рддрдд рдХрджрдо рдХреЗ рд▓рд┐рдП dW рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ d omegai рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╕рдореАрдХрд░рдг рдореЗрдВред рдЧрдгрд┐рддреАрдп d omegai рд╡рд╣ рдЕрдВрддрд░ рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рдо рдЕрднрд┐рдиреНрди рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрджреНрдпрдкрд┐ рдпрд╣ рдХреЛрдб рдореЗрдВ dW рдХреЗ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд░реАрдореИрди рдпреЛрдЧ рдХрд╛ рдПрдХ рдЕрд╕рддрдд рдХрджрдо рд╣реИ), рд╣рдо рдЧрдгрдирд╛ рдХреА рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВред рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдЕрд╕рддрдд рдЪрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдореЗрд╢рд╛ рд╣рдореЗрдВ рдПрдХ рдЕрдиреБрдорд╛рдирд┐рдд рд░рд╛рд╢рд┐ рджреЗрдЧрд╛, рди рдХрд┐ рдЕрднрд┐рдиреНрди рдореВрд▓реНрдп рдХрд╛ред рдПрдХ рдЪреМрдХрд╕ рдкрд╛рдардХ рдзреНрдпрд╛рди рджреЗрдЧрд╛ рдХрд┐ рд╣рдо рдЪрд░рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдХрд░ рд░реАрдореИрди рдпреЛрдЧ рдХреА рд╕рдЯреАрдХрддрд╛ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд░рд╛рд╡рд░реНрддрди рд╕рдореАрдХрд░рдг рд╕рднреА рдЖрдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХрд╛рд╢ рджрд┐рд╢рд╛рдУрдВ рдХрд╛ рд╡рд┐рдХрд┐рд░рдг рд╕рдорд╛рдкреНтАНрдд рдХрд░рддрд╛ рд╣реИ omegai рдЧреЛрд▓рд╛рд░реНрджреНрдз рд╕реЗ рдЕрдзрд┐рдХ рдУрдореЗрдЧрд╛ рдЙрд╕ рдмрд┐рдВрджреБ рддрдХ рдкрд╣реБрдБрдЪрддрд╛ рд╣реИ рдкреА рдФрд░ рдкрд░рд╛рд╡рд░реНрддрд┐рдд рдкреНрд░рдХрд╛рд╢ рдХреА рдорд╛рддреНрд░рд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ Lo рджрд░реНрд╢рдХ рдХреА рдУрд░ред рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рдХрд┐рд░рдг рдкреНрд░рдХрд╛рд╢ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдЖ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд╕рд╛рде рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рдпрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдирдХреНрд╢реЗ рд╕реЗ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдЖрдиреЗ рд╡рд╛рд▓реА рджрд┐рд╢рд╛ рдХрд╛ рдИрдЖрдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо IBL рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред
рдЕрдм рдмрд╛рдИрдВ рдУрд░ рдХреЗрд╡рд▓ рдЕрдЬреНрдЮрд╛рдд рд╣реА рдкреНрд░рддреАрдХ рд╣реИ fr BRDF рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рджреЛ-рдмреАрдо рдкрд░рд╛рд╡рд░реНрддрди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕рддрд╣ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рдХрд┐рд░рдг рдХреЗ рдореВрд▓реНрдп рдХреЛ рдорд╛рдкрддрд╛ рд╣реИ (рдпрд╛ рддреМрд▓рддрд╛ рд╣реИ)ред
BRDF
BRDF рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдШрдЯрдирд╛ рдкреНрд░рдХрд╛рд╢ рдХреА рджрд┐рд╢рд╛ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред omegai , рдкреНрд░реЗрдХреНрд╖рдХ рдХреЛ рджрд┐рд╢рд╛ omegao рд╕рддрд╣ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдПрди рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ , рдЬреЛ рд╕рддрд╣ рдЦреБрд░рджрд░рд╛рдкрди рд╣реИред BRDF рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдкреНрд░рдХрд╛рд╢ рдкреБрдВрдЬ рдХрд┐рддрдирд╛ рд╣реИ omegai рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдПрдХ рдЕрдкрд╛рд░рджрд░реНрд╢реА рд╕рддрд╣ рдХреЗ рдЕрдВрддрд┐рдо рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдкреНрд░рдХрд╛рд╢ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╕рддрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЪрд┐рдХрдиреА рд╣реИ (рд▓рдЧрднрдЧ рдПрдХ рджрд░реНрдкрдг рдХреА рддрд░рд╣), BRDF рдлрд╝рдВрдХреНрд╢рди рд╕рднреА рдЖрдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХрд╛рд╢ рдХрд┐рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП 0.0 рд▓реМрдЯреЗрдЧрд╛ omegai рдмреАрдо рдХреЗ рд╕рдорд╛рди рдХреЛрдг (рдкрд░рд╛рд╡рд░реНрддрди рдХреЗ рдмрд╛рдж) рдХреЛ рдЫреЛрдбрд╝рдХрд░ omegao рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди 1.0 рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред
BRDF рд╕реВрдХреНрд╖реНрдо рдЪреЗрд╣рд░реЛрдВ рдХреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдФрд░ рдЕрдкрд╡рд░реНрддрдХ рдЧреБрдгреЛрдВ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реИред BRDF рдХреЛ рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд╢рдВрд╕рдиреАрдп рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдКрд░реНрдЬрд╛ рдХреЗ рд╕рдВрд░рдХреНрд╖рдг рдХреЗ рдирд┐рдпрдо рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рдд рдкрд░рд╛рд╡рд░реНрддрд┐рдд рдкреНрд░рдХрд╛рд╢ рдХреА рдХреБрд▓ рдКрд░реНрдЬрд╛ рдХрднреА рднреА рдкреНрд░рдХрд╛рд╢ рдХреА рдКрд░реНрдЬрд╛ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдмреНрд▓рд╛рдЗрди-рдлреЛрдВрдЧ рдореЙрдбрд▓ рдХреЛ рдПрдХ BRDF рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ omegai рдФрд░ omegao рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рдкрд░ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдмреНрд▓рд┐рди-рдлреЛрдВрдЧ рдореЙрдбрд▓ рдХреЛ рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╣реА рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдКрд░реНрдЬрд╛ рдХреЗ рд╕рдВрд░рдХреНрд╖рдг рдХреЗ рдХрд╛рдиреВрди рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдкреНрд░рдХрд╛рд╢ рдХреА рд╕рддрд╣ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдиреБрдорд╛рдирд┐рдд рд░реВрдк рд╕реЗ рдХрдИ рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╣реА рдмреАрдЖрд░рдбреАрдПрдл рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд▓рдЧрднрдЧ рд╕рднреА рд░реАрдпрд▓-рдЯрд╛рдЗрдо рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдкрд╛рдЗрдкрд▓рд╛рдЗрди BRDF рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдХреБрдХ-рдЯреЙрд░реЗрдВрд╕ BRDF рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХреБрдХ-рдЯреЙрд░реЗрдВрд╕ рдмреАрдЖрд░рдбреАрдПрдл рдореЗрдВ рдПрдХ рдлреИрд▓рд╛рдирд╛ рдФрд░ рдПрдХ рджрд░реНрдкрдг рднрд╛рдЧ рджреЛрдиреЛрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
fr=kdflambert+ksfрдХреБрдХтИТрдЯреЛрд░реЗрдВрд╕
рдпрд╣рд╛рдВ kd - рдЖрдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХрд╛рд╢ рдКрд░реНрдЬрд╛ рдХрд╛ рдЕрдкрд╡рд░реНрддрд┐рдд рдЕрдВрд╢, ks - рдкрд░рд┐рд▓рдХреНрд╖рд┐рддред BRDF рдХреЗ рдмрд╛рдИрдВ рдУрд░ рд╕рдореАрдХрд░рдг рдХреЗ рдлреИрд▓рд╛рдирд╛ рднрд╛рдЧ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдпрд╣рд╛рдБ рдкрд░ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ fрд▓рд╛рдореНрдмрд░реНрдЯ ред рдпрд╣ рддрдерд╛рдХрдерд┐рдд рд▓реИрдореНрдмрд░реНрдЯ рдмрд┐рдЦрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдпрд╣ рд╡реИрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕рд╛ рд╣рдордиреЗ рдбрд┐рдлреНрдпреВрдЬрд╝ рд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдерд╛, рдФрд░ рд╕реНрдерд┐рд░ рд╣реИ:
fрд▓реИрдВрдмрд░реНрдЯ= fracc pi
рдЬрд╣рд╛рдБ рд╕реА - рдЕрд▓реНрдмреЗрдбреЛ рдпрд╛ рд╕рддрд╣ рдХрд╛ рд░рдВрдЧ (рдлреИрд▓рд╛рдирд╛ рд╕рддрд╣ рдмрдирд╛рд╡рдЯ)ред рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрди рдХрд░реЗрдВ pi рдмрд┐рдЦрд░реА рд╣реБрдИ рд░реЛрд╢рдиреА рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реЗ рд╕рдВрдХреЗрддрд┐рдд рдЕрднрд┐рдиреНрди рдмреАрдЖрд░рдбреАрдПрдл рдпреБрдХреНрдд рдЧреБрдгрд╛ рд╕реЗ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ pi (рд╣рдо рдЗрд╕реЗ IBL рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ)ред
рдЖрдк рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд▓реИрдВрдмрд░реНрдЯрд┐рдпрди рдкреНрд░рдХреАрд░реНрдгрди рдХреИрд╕реЗ рдлреИрд▓рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХрд╛рд╢ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рдорд┐рд▓рддрд╛-рдЬреБрд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдерд╛: рд╕рддрд╣ рдХреЗ рд░рдВрдЧ рдХреЛ рд╕реНрдХреЗрд▓рд░ рдЙрддреНрдкрд╛рдж рджреНрд╡рд╛рд░рд╛ рд╕рддрд╣ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдкреНрд░рдХрд╛рд╢ рдХреА рджрд┐рд╢рд╛ рдХреЗ рдмреАрдЪ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдХреЗрд▓рд░ рдЙрддреНрдкрд╛рдж рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмреАрдЖрд░рдбреАрдПрдл рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ n cdot omegai рдЕрднрд┐рдиреНрди рдореЗрдВ Lo ред
BRDF рдХреЗ рдлреИрд▓рд╛рдирд╛ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╕рдореАрдХрд░рдг рд╣реИрдВ рдЬреЛ рдЕрдзрд┐рдХ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рд▓рдЧрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдорд╣рдВрдЧреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреИрд╕рд╛ рдХрд┐ рдорд╣рд╛рдХрд╛рд╡реНрдп рдЦреЗрд▓реЛрдВ рдиреЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рд╛ рд╣реИ: рд▓реИрдВрдмрд░реНрдЯрд┐рдпрди рдкреНрд░рдХреАрд░реНрдгрди рд╕рдмрд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдкреНрд░рддрд┐рдкрд╛рджрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдХреБрдХ-рдЯреЙрд░реЗрдВрд╕ рдмреАрдЖрд░рдбреАрдПрдл рдХрд╛ рджрд░реНрдкрдг рднрд╛рдЧ рдереЛрдбрд╝рд╛ рд╕реБрдзрд░рд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
fрдХреБрдХтИТtorrance= fracDFG4( omegao cdotn)( omegai cdotn)
рдЗрд╕рдореЗрдВ рддреАрди рдХрд╛рд░реНрдп рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд╣рд░ рдореЗрдВ рдПрдХ рдорд╛рдирдХреАрдХрд░рдг рдЧреБрдгрд╛рдВрдХ рд╣реЛрддрд╛ рд╣реИред рдбреА, рдПрдл, рдФрд░ рдЬреА рдЕрдХреНрд╖рд░реЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рддрд╣ рдХреЗ рдкрд░рд╛рд╡рд░реНрддрдХ рдЧреБрдгреЛрдВ рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╣рд┐рд╕реНрд╕реЗ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рддрд░рдг рдлрд╝рдВрдХреНрд╢рди (NDF), рдлреНрд░реЗрд╕реНрдиреЗрд▓ рд╕рдореАрдХрд░рдг рдФрд░ рдЬреНрдпрд╛рдорд┐рддрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ:
- рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рддрд░рдг рд╕рдорд╛рд░реЛрд╣: рд╕рддрд╣ рдЦреБрд░рджрд░рд╛рдкрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдордзреНрдпрдпреБрдЧреАрди рд╡реЗрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдЙрдиреНрдореБрдЦ рд╕рддрд╣ рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрд░реНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реИ; рдпрд╣ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рд╣реИ рдЬреЛ рд╕реВрдХреНрд╖реНрдо рдЪреЗрд╣рд░реЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред
- рдЬреНрдпрд╛рдорд┐рддрд┐ рд╕рдорд╛рд░реЛрд╣: рд╕реВрдХреНрд╖реНрдо рдЪреЗрд╣рд░реЗ рдХреА рдЖрддреНрдо-рдЫрд╛рдпрд╛рдВрдХрди рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдЬрдм рд╕рддрд╣ рдмрд▓реНрдХрд┐ рдЦреБрд░рджрд░реА рд╣реЛрддреА рд╣реИ, рддреЛ рд╕рддрд╣ рдХреЗ рдХреБрдЫ рд╕реВрдХреНрд╖реНрдо рдЪреЗрд╣рд░реЗ рджреВрд╕рд░реЛрдВ рдХреЛ рдУрд╡рд░рд▓реИрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╕рддрд╣ рд╕реЗ рдкрд░рд╛рд╡рд░реНрддрд┐рдд рдкреНрд░рдХрд╛рд╢ рдХреА рдорд╛рддреНрд░рд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред
- рдлреНрд░реЗрд╕реНрдиреЗрд▓ рд╕рдореАрдХрд░рдг: рд╡рд┐рднрд┐рдиреНрди рдХреЛрдгреЛрдВ рдкрд░ рд╕рддрд╣ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рдЧреБрдгрд╛рдВрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред
рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрдирдХреЗ рднреМрддрд┐рдХ рд╕рдордХрдХреНрд╖ рдХрд╛ рдПрдХ рдЕрдиреБрдорд╛рди рд╣реИ, рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рднреМрддрд┐рдХ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╕рдиреНрдирд┐рдХрдЯрди рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВ; рдХреБрдЫ рдФрд░ рдЕрдзрд┐рдХ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдкрд░рд┐рдгрд╛рдо рджреЗрддреЗ рд╣реИрдВ, рдЕрдиреНрдп рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА рд╣реЛрддреЗ рд╣реИрдВред рдПрдкрд┐рдХ рдЧреЗрдореНрд╕ рдХреЗ рдмреНрд░рд╛рдпрди рдХрд╛рд░рд┐рд╕ рдиреЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдорд╛рдиреЛрдВ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╢реЛрдз рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рдпрд╣рд╛рдВ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдПрдкрд┐рдХ рдЧреЗрдореНрд╕ рд╕реЗ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди 4 рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЕрд░реНрдерд╛рддреН: рдбреА рдХреЗ рд▓рд┐рдП рдЯреНрд░реЙрдмреНрд░рд┐рдЬ-рд░реЗрдЗрдЯреНрдЬ рдЬреАрдЬреАрдПрдХреНрд╕ , рдПрдл рдХреЗ рд▓рд┐рдП рдлреНрд░реЗрд╕реНрдиреЗрд▓- рд╕реНрдХреНрд▓рд┐рдХ рд╕рдиреНрдирд┐рдХрдЯрди рдФрд░ рдЬреА рдХреЗ рд▓рд┐рдП рд╕реНрдорд┐рде рдХреЗ рд╢реНрд▓рд┐рдХ-рдЬреАрдЬреАрдПрдХреНрд╕ ред
рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рддрд░рдг рд╕рдорд╛рд░реЛрд╣
рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рддрд░рдг рдлрд╝рдВрдХреНрд╢рди рдбреА рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рд╕реВрдХреНрд╖реНрдо рдЪреЗрд╣рд░реЛрдВ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕рддрд╣ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реИ рдЬреЛ рдордзреНрдп рд╡реЗрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдареАрдХ рдЙрдиреНрдореБрдЦ рд╣реЛрддреЗ рд╣реИрдВ рдЬ ред рдХрдИ рдПрдирдбреАрдПрдл рд╣реИрдВ рдЬреЛ рдХреБрдЫ рдЦреБрд░рджрд░рд╛рдкрди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рд╕реВрдХреНрд╖реНрдо рдЪреЗрд╣рд░реЗ рдХреЗ рд╕рдордЧреНрд░ рд╕рдВрд░реЗрдЦрдг рдХреЗ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдЕрдиреБрдорд╛рди рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдПрдХ Trowbridge-Reitz GGX рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рдПрдЧрд╛:
NDFGGXTR(n,h, alpha)= frac Alpha2 pi((n cdoth)2( рдЕрд▓реНрдлрд╛2тИТ1)+1)2
рдпрд╣рд╛рдВ рдЬ рдордзреНрдпрдпреБрдЧреАрди рд╡реЗрдХреНрдЯрд░ рд╣реИ, рдЕрд▓реНрдлрд╛ - рд╕рддрд╣ рдЦреБрд░рджрд░рд╛рдкрди рдХрд╛ рдореВрд▓реНрдпред рдЕрдЧрд░ рд╣рдо рдЪреБрдирддреЗ рд╣реИрдВ рдЬ рд╕рддрд╣ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдкреНрд░рдХрд╛рд╢ рдХреА рджрд┐рд╢рд╛ рдХреЗ рдмреАрдЪ рдХреЗ рдордзреНрдп рд╡реЗрдХреНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдлрд┐рд░ рдЦреБрд░рджрд░рд╛рдкрди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдмрджрд▓рддреЗ рд╣реБрдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд┐рддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

рдЬрдм рдЦреБрд░рджрд░рд╛рдкрди рдЫреЛрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ (рдпрд╛рдиреА, рд╕рддрд╣ рдЪрд┐рдХрдиреА рд╣реЛрддреА рд╣реИ), рдорд╛рдзреНрдп рд╡реЗрдХреНрдЯрд░ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдЙрдиреНрдореБрдЦ рд╕реВрдХреНрд╖реНрдо рдЪреЗрд╣рд░реЗ рдПрдХ рдЫреЛрдЯреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдХреЗрдВрджреНрд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕ рдЙрдЪреНрдЪ рдПрдХрд╛рдЧреНрд░рддрд╛ рдХреЗ рдХрд╛рд░рдг, рдПрдирдбреАрдПрдл рдПрдХ рдмрд╣реБрдд рдЙрдЬреНрдЬреНрд╡рд▓ рд╕реНрдерд╛рди рджреЗрддрд╛ рд╣реИред рдПрдХ рдЦреБрд░рджрд░реА рд╕рддрд╣ рдкрд░, рдЬрд╣рд╛рдБ рд╕реВрдХреНрд╖реНрдо рдЪреЗрд╣рд░реЗ рдЕрдзрд┐рдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рдЙрдиреНрдореБрдЦ рд╣реЛрддреЗ рд╣реИрдВ, рдЖрдк рдордзреНрдпрдпреБрдЧреАрди рд╡реЗрдХреНрдЯрд░ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдЙрдиреНрдореБрдЦ рд╕реВрдХреНрд╖реНрдо рдЪреЗрд╣рд░реЗ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдкрд╛рдПрдВрдЧреЗред рдЬ рд▓реЗрдХрд┐рди рдПрдХ рдмрдбрд╝реЗ рджрд╛рдпрд░реЗ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ, рдЬреЛ рд╕реНрдкреЙрдЯ рдХреЗ рд░рдВрдЧ рдХреЛ рдЕрдзрд┐рдХ рдЧреНрд░реЗ рдмрдирд╛рддрд╛ рд╣реИред
GLSL рдХреЛрдб рдореЗрдВ, Trowbridge-Reitz GGX рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рддрд░рдг рдлрд╝рдВрдХреНрд╢рди рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
float DistributionGGX(vec3 N, vec3 H, float a) { float a2 = a*a; float NdotH = max(dot(N, H), 0.0); float NdotH2 = NdotH*NdotH; float nom = a2; float denom = (NdotH2 * (a2 - 1.0) + 1.0); denom = PI * denom * denom; return nom / denom; }
рдЬреНрдпрд╛рдорд┐рддрд┐ рд╕рдорд╛рд░реЛрд╣
рдЬреНрдпрд╛рдорд┐рддрд┐ рдлрд╝рдВрдХреНрд╢рди рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕рддрд╣ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЗрд╕рдХреА рд╕реВрдХреНрд╖реНрдо рдЕрдирд┐рдпрдорд┐рддрддрд╛ рдУрд╡рд░рд▓реИрдк рд╣реЛрддреА рд╣реИ, рдЬреЛ рдкреНрд░рдХрд╛рд╢ рдХрд┐рд░рдгреЛрдВ рдХреЛ рдШреБрд╕рдиреЗ рд╕реЗ рд░реЛрдХрддреА рд╣реИред

рдПрдирдбреАрдПрдл рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬреНрдпрд╛рдорд┐рддрд┐ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рддрд╣ рдЦреБрд░рджрд░рд╛рдкрди рдЧреБрдгрд╛рдВрдХ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдорддрд▓рдм рд╣реИ: рдЦреБрд░рджрд░реА рд╕рддрд╣реЛрдВ рдореЗрдВ рд╕реВрдХреНрд╖реНрдо-рдЪреЗрд╣рд░реЛрдВ рдХреЗ рдЫрд╛рдпрд╛рдВрдХрди рдХреА рдЙрдЪреНрдЪ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реЛрдЧреАред рдЬреНрдпрд╛рдорд┐рддрд┐ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд╡рд╣ GGX рдФрд░ Schlick-Beckmann рд╕рдиреНрдирд┐рдХрдЯрди рдХрд╛ рдПрдХ рд╕рдВрдпреЛрдЬрди рд╣реИ, рдФрд░ рдЗрд╕реЗ Schlick-GGX рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ:
G_ {SchlickGGX} (n, v, k) = \ frac {n \ _ cdot v} {{(n \ _ cdot v) (1 - k) + k}
рдпрд╣рд╛рдВ k рдПрдХ рдирдпрд╛ рд╕реНрд╡рд░реВрдк рд╣реИ рдЕрд▓реНрдлрд╛ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рд╣рдо рдкреНрд░рддреНрдпрдХреНрд╖ рдкреНрд░рдХрд╛рд╢ рд╡реНрдпрд╡рд╕реНрдерд╛ рдпрд╛ IBL рдкреНрд░рдХрд╛рд╢ рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреЗ рд▓рд┐рдП рдЬреНрдпрд╛рдорд┐рддрд┐ рд╕рдорд╛рд░реЛрд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
kрдкреНрд░рддреНрдпрдХреНрд╖= frac(рдЕрд▓реНрдлрд╛+1)28
kIBL= frac рдЕрд▓реНрдлрд╛22
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореВрд▓реНрдп рдЕрд▓реНрдлрд╛ рдЖрдкрдХреЗ рдЗрдВрдЬрди рдореЗрдВ рдЦреБрд░рджрд░рд╛рдкрди рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЕрд▓реНрдлрд╛ ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд╛рдареЛрдВ рдореЗрдВ рд╣рдо рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдкреБрдирд░реНрдореВрд▓реНрдпрд╛рдВрдХрди рдХреИрд╕реЗ рдФрд░ рдХрд╣рд╛рдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред
рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдЕрдиреБрдорд╛рдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рджреГрд╢реНрдп рдХреА рджрд┐рд╢рд╛ (рдЕрддрд┐рд╡реНрдпрд╛рдкреА рдЬреНрдпрд╛рдорд┐рддрд┐) рдФрд░ рдкреНрд░рдХрд╛рд╢ рдХреА рджрд┐рд╢рд╛ рд╡реЗрдХреНрдЯрд░ (рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреА рдЖрддреНрдо-рдЫрд╛рдпрд╛рдВрдХрди) рджреЛрдиреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред рд╣рдо рд╕реНрдорд┐рде рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
G(n,v,l,k)=GрдЙрдк(n,v,k)GрдЙрдк(n,l,k)
Schlick-GGX рдХреЗ рд╕рд╛рде рд╕реНрдорд┐рде рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ GрдЙрдк рдЕрд▓рдЧ рдЦреБрд░рджрд░рд╛рдкрди рдЖрд░ рдХреЗ рд╕рд╛рде рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд┐рддреНрд░ рджреЗрддрд╛ рд╣реИ:
рдЬреНрдпрд╛рдорд┐рддрд┐ рдлрд╝рдВрдХреНрд╢рди [0.0, 1.0] рдХреЗ рдмреАрдЪ рдХрд╛ рдПрдХ рдХрд╛рд░рдХ рд╣реИ, рдЬрд╣рд╛рдВ рд╕рдлреЗрдж (рдпрд╛ 1.0) рдХрд╛ рдорддрд▓рдм рд╕реВрдХреНрд╖реНрдо-рдЪреЗрд╣рд░реЛрдВ рдХреА рдЫрд╛рдпрд╛рдВрдХрди рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХрд╛рд▓реЗ (рдпрд╛ 0.0) рдХрд╛ рдорддрд▓рдм рд╕реВрдХреНрд╖реНрдо-рдЪреЗрд╣рд░реЛрдВ рдХреА рдкреВрд░реНрдг рдЫрд╛рдпрд╛рдВрдХрди рд╣реИред
GLSL рдореЗрдВ, рдПрдХ рдЬреНрдпрд╛рдорд┐рддрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рдореНрди рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
float GeometrySchlickGGX(float NdotV, float k) { float nom = NdotV; float denom = NdotV * (1.0 - k) + k; return nom / denom; } float GeometrySmith(vec3 N, vec3 V, vec3 L, float k) { float NdotV = max(dot(N, V), 0.0); float NdotL = max(dot(N, L), 0.0); float ggx1 = GeometrySchlickGGX(NdotV, k); float ggx2 = GeometrySchlickGGX(NdotL, k); return ggx1 * ggx2; }
рдлреНрд░реЗрд╕реНрдиреЗрд▓ рд╕рдореАрдХрд░рдг
рдлреНрд░реЗрд╕реНрдиреЗрд▓ рд╕рдореАрдХрд░рдг рдкрд░рд╛рд╡рд░реНрддрд┐рдд рдФрд░ рдЕрдкрд╡рд░реНрддрд┐рдд рдкреНрд░рдХрд╛рд╢ рдХреЗ рдЕрдиреБрдкрд╛рдд рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЙрд╕ рдХреЛрдг рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╣рдо рд╕рддрд╣ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рдЬрдм рдкреНрд░рдХрд╛рд╢ рдХрд┐рд╕реА рд╕рддрд╣ рд╕реЗ рдЯрдХрд░рд╛рддрд╛ рд╣реИ, рддреЛ рдлреНрд░реЗрд╕реНрдиреЗрд▓ рд╕рдореАрдХрд░рдг рд╣рдореЗрдВ рдЙрд╕ рдХреЛрдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрд░рд╛рд╡рд░реНрддрд┐рдд рдкреНрд░рдХрд╛рд╢ рдХрд╛ рдкреНрд░рддрд┐рд╢рдд рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╣рдо рдЗрд╕ рд╕рддрд╣ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рдЗрд╕ рдЕрдиреБрдкрд╛рдд рдФрд░ рдКрд░реНрдЬрд╛ рдХреЗ рд╕рдВрд░рдХреНрд╖рдг рдХреЗ рдирд┐рдпрдо рд╕реЗ, рд╣рдо рд╕реАрдзреЗ рдкреНрд░рдХрд╛рд╢ рдХреЗ рдЕрдкрд╡рд░реНрддрд┐рдд рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╢реЗрд╖ рдКрд░реНрдЬрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ред
рдкреНрд░рддреНрдпреЗрдХ рд╕рддрд╣ рдпрд╛ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдЪрд┐рдВрддрдирд╢реАрд▓рддрд╛ рдХрд╛ рдПрдХ рд╕реНрддрд░ рд╣реЛрддрд╛ рд╣реИ , рдЬреЛ рд╕рддрд╣ рдХреЛ рд╕реАрдзреЗ рджреЗрдЦрддреЗ рд╣реБрдП рдордирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рд╕рддрд╣ рдХреЛ рдПрдХ рдХреЛрдг рдкрд░ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╕рднреА рдкреНрд░рддрд┐рдмрд┐рдВрдм рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдЖрдк рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рд╕рдВрднрд╡рддрдГ рд▓рдХрдбрд╝реА рдпрд╛ рдзрд╛рддреБ рдХреА рдореЗрдЬ рдХреЛ рдкрд╣рд▓реЗ рд▓рдВрдмрд╡рдд рд░реВрдк рд╕реЗ рдФрд░ рдлрд┐рд░ 90 рдбрд┐рдЧреНрд░реА рдХреЗ рдХрд░реАрдм рдХреЗ рдХреЛрдг рдкрд░ рджреЗрдЦрдХрд░ рд╕реНрд╡рдпрдВ рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдмрд╣реБрдд рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рд╕рднреА рд╕рддрд╣реЛрдВ, рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, 90 рдбрд┐рдЧреНрд░реА рдХреЗ рдПрдХ рдЖрджрд░реНрд╢ рдХреЛрдг рдкрд░ рдЙрдирд╕реЗ рджреЗрдЦреЗ рдЬрд╛рдиреЗ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рднрд╛рд╡ рдХреЛ рдлреНрд░реЗрд╕реНрдиреЗрд▓ рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдлреНрд░реЗрдЬрд╝реЗрд▓ рд╕рдореАрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╣реИ ред
Fresnel рд╕рдореАрдХрд░рдг рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ Fresnel-Schlick рд╕рдиреНрдирд┐рдХрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
FSchlick(h,v,F0)=F0+(1тИТF0)(1c(h cdotv))5
F0 рд╕рддрд╣ рдХреА рдореВрд▓ рдкрд░рд╛рд╡рд░реНрддрдирддрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдЕрдкрд╡рд░реНрддрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдпрд╛ IORs (рдЕрдкрд╡рд░реНрддрди рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ) рдирд╛рдордХ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЧреЛрд▓рд╛рдХрд╛рд░ рдХреА рд╕рддрд╣ рдкрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рджреГрд╢реНрдп рдХреНрд╖реЗрддреНрд░ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рдХрд░реАрдм рджреЗрдЦрдиреЗ рдХреА рджрд┐рд╢рд╛ (рджреЗрдЦрдиреЗ рдХреА рджрд┐рд╢рд╛ рдФрд░ рдордзреНрдп рдХреЗ рдмреАрдЪ рдХрд╛ рдХреЛрдг) 90 ), , , :
, . , - . (), , . , ( F0 ) ( 0 , ) -, , .
. , , :
: 0.17, , , ( ) 0.5 1.0. , тАЬтАЭ, F0 RGB ( ).
, metallic workflow: , (metalness), , .
: , ; , . , 0.0 1.0. - , , , . , .
F0 , , - , , . :
vec3 F0 = vec3(0.04); F0 = mix(F0, surfaceColor.rgb, metalness);
, . , F0 . 0.04 . , , , F0 . , , .
- :
vec3 fresnelSchlick(float cosTheta, vec3 F0) { return F0 + (1.0 - F0) * pow(1.0 - cosTheta, 5.0); }
cosTheta .
-
BRDF - :
Lo(p,╧Йo)=тИл╬й(kdc╧А+ksDFG4(╧ЙoтЛЕn)(╧ЙiтЛЕn))Li(p,╧Йi)nтЛЕ╧Йid╧Йi
. , , F . ks , , ks ред , :
Lo(p,╧Йo)=тИл╬й(kdc╧А+DFG4(╧ЙoтЛЕn)(╧ЙiтЛЕn))Li(p,╧Йi)nтЛЕ╧Йid╧Йi
, PBR. , , . , , .
PBR
, PBR, , , PBR. , PBR, . , : , .
, PBR, :
: , . , . , ; .
: , , . , , .
: . , PBR-, , : .
: , . . , . PBR- , , (1.0 тАФ ) .
AO (ambient occlusion) : AO . , , . AO , . . , 3D-.
. PBR, , . , PBR, PBR-, , , .
- Background: Physics and Math of Shading by Naty Hoffmann: , , ; PBR, must-read .
- Real shading in Unreal Engine 4 : PBR, Epic Games Unreal Engine 4. PBR, , .
- Marmoset: PBR Theory : PBR. , , , .
- Coding Labs: Physically based rendering : , PBR.
- Coding Labs: Physically Based Rendering тАФ CookтАУTorrance : BRDF -
- Wolfire Games тАФ Physically based rendering : PBR Lukas Orsv├дrn.
- [SH17C] Physically Based Shading : shadertoy (: ) Krzysztof Narkowi, PBR.