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

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

рдпрд╣ рдорд╛рдирд╡ рдЖрдВрдЦ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд╕рдорд╛рди рд╣реИред рдкреНрд░рдХрд╛рд╢ рдХреА рдХрдореА рдХреЗ рд╕рд╛рде, рдЖрдВрдЦ рдХрд╛ рдкрд╛рд▓рди рд╣реЛрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЕрдВрдзреЗрд░реЗ рд╡рд┐рд╡рд░рдг рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдВ, рдФрд░ рдЗрд╕реА рддрд░рд╣ рдЙрдЬреНрдЬреНрд╡рд▓ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдПред рдпрд╣ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рджреГрд╢реНрдп рдХреА рдЪрдордХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдорд╛рдирд╡ рдЖрдВрдЦ рдХрд╛ рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЬреЛрдЦрд┐рдо рдирд┐рдпрдВрддреНрд░рдг рд╣реЛрддрд╛ рд╣реИред
рдПрдЪрдбреАрдЖрд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЬрдм рд╣рдо рджреГрд╢реНрдп рдХреЗ рдЙрдЬреНрдЬреНрд╡рд▓ рдФрд░ рдЕрдВрдзреЗрд░реЗ рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрдордХ рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд░реЗрдВрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдВрдд рдореЗрдВ рд╣рдо рдПрдЪрдбреАрдЖрд░ рд░реЗрдВрдЬ рд╕реЗ рдорд╛рдиреЛрдВ рдХреЛ рдПрд▓рдбреАрдЖрд░ (рдХрдо рдЧрддрд┐рд╢реАрд▓ рд╕реАрдорд╛, 0 рд╕реЗ 1 рддрдХ рд╕реАрдорд╛) рдореЗрдВ рдмрджрд▓ рджреЗрдВрдЧреЗред рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЯреЛрди рдореИрдкрд┐рдВрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрд▓рдбреАрдЖрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЫрд╡рд┐ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИрдВред рдЗрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рдЕрдХреНрд╕рд░ рдПрдХ рдПрдХреНрд╕рдкреЛрдЬрд░ рд╕реЗрдЯрд┐рдВрдЧ рд╣реЛрддреА рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдЫрд╡рд┐ рдХреЗ рдЙрдЬреНрдЬреНрд╡рд▓ рдпрд╛ рдЕрдВрдзреЗрд░реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рджрд┐рдЦрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
рдПрдЪрдбреАрдЖрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЬрдм рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╣рдореЗрдВ 0 рд╕реЗ 1 рддрдХ рдХреЗрд╡рд▓ рдПрд▓рдбреАрдЖрд░ рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдиреЗ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рдЫрд╡рд┐ рд╡рд┐рд╡рд░рдг рдмрдЪрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рдХрд╛рд╢ рд╕реНрд░реЛрддреЛрдВ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЪрдордХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реВрд░рдЬ рдореЗрдВ рдЯреЙрд░реНрдЪ рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреНрд░рдХрд╛рд╢ рдХреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЪрдордХ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реВрд░реНрдп рдХреЛ рдЗрд╕ рдкрд░ рд╕реЗрдЯ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ 10.0 рдХреА рдЪрдордХ рджреЗрдВ)? рдпрд╣ рд╣рдореЗрдВ рдЕрдзрд┐рдХ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдЪрдордХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рджреГрд╢реНрдп рдХреА рд░реЛрд╢рдиреА рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдЬреЛ рдХрд┐ рдПрд▓рдбреАрдЖрд░ рдкреНрд░рддрд┐рдкрд╛рджрди рдФрд░ 0 рд╕реЗ 1 рддрдХ рдПрдХ рдЪрдордХ рд░реЗрдВрдЬ рдХреЗ рд╕рд╛рде рдЕрд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред
рдЪреВрдВрдХрд┐ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЗрд╡рд▓ 0 рд╕реЗ 1 рддрдХ рдЪрдордХ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рд╣рдо рдореЙрдирд┐рдЯрд░ рдХреА рд░реЗрдВрдЬ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдПрдЪрдбреАрдЖрд░ рдорд╛рдиреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рд╕реАрдорд╛ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реИрдВред рдмрд╕ рд╕реАрдорд╛ рдХреЛ рд╕реНрдХреЗрд▓ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрдЬреНрдЬреНрд╡рд▓ рдХреНрд╖реЗрддреНрд░ рдЫрд╡рд┐ рдкрд░ рд╣рд╛рд╡реА рд╣реЛрдиреЗ рд▓рдЧреЗрдВрдЧреЗред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдо рдПрдЪрдбреАрдЖрд░ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдПрд▓рдбреАрдЖрд░ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╕рдореАрдХрд░рдгреЛрдВ рдпрд╛ рдШрдЯрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рджреГрд╢реНрдп рдХреА рдЪрдордХ рдкрд░ рдкреВрд░рд╛ рдирд┐рдпрдВрддреНрд░рдг рджреЗрдЧрд╛ред рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЯреЛрди рдореИрдкрд┐рдВрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдПрдЪрдбреАрдЖрд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд╛ рдЕрдВрддрд┐рдо рдЪрд░рдг рд╣реИред
рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдлреНрд░реЗрдордмрдлрд╝рд░
рдПрдЪрдбреАрдЖрд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдорд╛рдиреЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░рд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдХрд┐ рдЦрдВрдб 1 рд╕реЗ 1 рддрдХ рд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдлрд╝реНрд░реЗрдордмрдлрд╝рд░ рд░рдВрдЧреАрди рдмрдлрд╝рд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдирд┐рд╢реНрдЪрд┐рдд-рдмрд┐рдВрджреБ рдкреНрд░рд╛рд░реВрдк (GL_RGB) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ OpenGL рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдлрд╝реНрд░реЗрдордмрдлрд╝рд░ рдкрд░ рд╕рд╣реЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рддрд┐рдмрдВрдз рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдлрд╝реНрд░реЗрдордмрдлрд╝рд░ рдкреНрд░рд╛рд░реВрдкреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред
рд░реЗрдВрдЬ [0.0..1.0] рдХреЗ рдмрд╛рд╣рд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдиреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрди рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд░рдВрдЧреАрди рдмрдлрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: GL_RGB16F, GL_RGBA16F, GL_RGB32F or GL_RGBA32F
ред рдпрд╣ hdr рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрдлрд░ рдХреЛ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдлреНрд░реЗрдордмрдлрд╝рд░ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
рдПрдХ рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдмрдлрд╝рд░ рдмрдирд╛рдирд╛ рдПрдХ рдирд┐рдпрдорд┐рдд рдмрдлрд╝рд░ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдпрд╣ рдПрдХ рднрд┐рдиреНрди рдЖрдВрддрд░рд┐рдХ рд╕реНрд╡рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
glBindTexture(GL_TEXTURE_2D, colorBuffer); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F, SCR_WIDTH, SCR_HEIGHT, 0, GL_RGBA, GL_FLOAT, NULL);
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ OpenGL рдлреНрд░реЗрдордмрдлрд╝рд░ рдкреНрд░рддреНрдпреЗрдХ рд░рдВрдЧ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ 8 рдмрд┐рдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред GL_RGB32F
рдпрд╛ GL_RGBA32F
рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ GL_RGBA32F
, рдкреНрд░рддреНрдпреЗрдХ рд░рдВрдЧ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 32 рдмрд┐рдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - 4 рдЧреБрдирд╛ рдЕрдзрд┐рдХред рдпрджрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдЯреАрдХрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ GL_RGBA16F
рдкреНрд░рд╛рд░реВрдк рдХрд╛рдлреА рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред
рдпрджрд┐ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдмрдлрд░ рдлреНрд░реЗрдордмрдлрд╝рд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕рдореЗрдВ рджреГрд╢реНрдп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд░рдВрдЧ рдорд╛рди 0 рд╕реЗ 1 рддрдХ рдХреА рд╕реАрдорд╛ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдореЗрдВ, рд╣рдо рдкрд╣рд▓реЗ рджреГрд╢реНрдп рдХреЛ рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдлреНрд░реЗрдордмрдлрд╝рд░ рдореЗрдВ рдЬрдорд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдЖрдзрд╛ рд╕реНрдХреНрд░реАрди рдЖрдпрдд рдкрд░ рд░рдВрдЧ рдмрдлрд╝рд░реНрд╕ред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
glBindFramebuffer(GL_FRAMEBUFFER, hdrFBO); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // [...] hdr glBindFramebuffer(GL_FRAMEBUFFER, 0); // hdr 2 hdrShader.use(); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, hdrColorBufferTexture); RenderQuad();
рдпрд╣рд╛рдБ рд░рдВрдЧ рдмрдлрд░ рдореЗрдВ рдирд┐рд╣рд┐рдд рд░рдВрдЧ рдорд╛рди 1 рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП, рдПрдХ рджреГрд╢реНрдп рдПрдХ рдмрдбрд╝реЗ рд▓рдореНрдмреА рдХреНрдпреВрдм рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдкреНрд░рдХрд╛рд╢ рдХреЗ рдЪрд╛рд░ рдмрд┐рдВрджреБ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реБрд░рдВрдЧ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдПрдХ рд╕реБрд░рдВрдЧ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╢рд╛рдирджрд╛рд░ рдЪрдордХ рд╣реИред
std::vector<glm::vec3> lightColors; lightColors.push_back(glm::vec3(200.0f, 200.0f, 200.0f)); lightColors.push_back(glm::vec3(0.1f, 0.0f, 0.0f)); lightColors.push_back(glm::vec3(0.0f, 0.0f, 0.2f)); lightColors.push_back(glm::vec3(0.0f, 0.1f, 0.0f));
рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдмрдлрд░ рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рдирд╛ рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕реЗ рд╣рдо рд╕реАрди рдХреЛ рд░реЗрдЧреБрд▓рд░ рдлреНрд░реЗрдордмрдлрд╝рд░ рдХреЛ рджреЗ рд░рд╣реЗ рдереЗред рдХреЗрд╡рд▓ рдирдИ рдЪреАрдЬ рдЦрдВрдбрд┐рдд рдПрдЪрдбреАрдЖрд░ рд╢реЗрдбрд░ рд╣реИ, рдЬреЛ рдПрдХ рдмрдирд╛рд╡рдЯ рд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреВрд░реНрдг-рд╕реНрдХреНрд░реАрди рдЖрдпрдд рдХреА рдПрдХ рд╕рд░рд▓ рдЫрд╛рдпрд╛рдВрдХрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдЬреЛ рдПрдХ рдлреНрд▓реЛрдЯрд┐рдВрдЧ-рдкреЙрдЗрдВрдЯ рд░рдВрдЧ рдмрдлрд░ рд╣реИред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рд╢реЗрдбрд░ рд▓рд┐рдЦреЗрдВ рдЬреЛ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ:
#version 330 core out vec4 FragColor; in vec2 TexCoords; uniform sampler2D hdrBuffer; void main() { vec3 hdrColor = texture(hdrBuffer, TexCoords).rgb; FragColor = vec4(hdrColor, 1.0); }
рд╣рдо рд░рдВрдЧреАрди рдмрдлрд░ рдХреЗ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рд╕реЗ рдЗрдирдкреБрдЯ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ shader рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЪреВрдВрдХрд┐ 2D рдЖрдпрдд рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдлреНрд░реЗрдордмрдлрд╝рд░ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП shader рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдорд╛рди 0 рд╕реЗ 1 рддрдХ рдЕрдВрддрд░рд╛рд▓ рддрдХ рд╕реАрдорд┐рдд рд░рд╣реЗрдЧрд╛, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдорд╛рди 1 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВред

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реБрд░рдВрдЧ рдХреЗ рдЕрдВрдд рдореЗрдВ рдмрд╣реБрдд рдмрдбрд╝реЗ рд░рдВрдЧ рдореВрд▓реНрдп рдПрдХрддрд╛ рддрдХ рд╕реАрдорд┐рдд рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЫрд╡рд┐ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдлреЗрдж рд╣реИ, рдФрд░ рд╣рдо рдЫрд╡рд┐ рд╡рд┐рд╡рд░рдг рдЦреЛ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХрддрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЙрдЬреНрдЬрд╡рд▓ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╣рдо рдПрдЪрдбреАрдЖрд░ рдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдзреЗ рдПрд▓рдбреАрдЖрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдЪрдбреАрдЖрд░ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЫрд╡рд┐ рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╡рд░рдг рдЦреЛрдП рдмрд┐рдирд╛ 0 рд╕реЗ 1 рдХреЗ рдмреАрдЪ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рдВрдЧ рдорд╛рдиреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рджрд┐рдЦрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддрд╛рдирд╡рд╛рд▓рд╛ рд╕рдВрдкреАрдбрд╝рди рд▓рд╛рдЧреВ рдХрд░реЗрдВред
рдЯреЛрди рд╕рдВрдкреАрдбрд╝рди
рдЯреЛрди рд╕рдВрдкреАрдбрд╝рди рд░рдВрдЧ рдорд╛рдиреЛрдВ рдХрд╛ рд░реВрдкрд╛рдВрддрд░рдг рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдЫрд╡рд┐ рд╡рд┐рд╡рд░рдг рдЦреЛрдП рдмрд┐рдирд╛ 0 рд╕реЗ 1 рддрдХ рдХреА рд╕реАрдорд╛ рдореЗрдВ рдлрд┐рдЯ рдХрд░рддрд╛ рд╣реИ, рдЕрдХреНрд╕рд░ рдЫрд╡рд┐ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рд╕рдлреЗрдж рд╕рдВрддреБрд▓рди рджреЗрдиреЗ рдХреЗ рд╕рдВрдпреЛрдЬрди рдореЗрдВред
рд╕рд░рд▓рддрдо рдЯреЛрди рдореИрдкрд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд░реЗрдЗрдирд╣рд╛рд░реНрдб рдЯреЛрди рдореИрдкрд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ LDR рд░реЗрдВрдЬ рдореЗрдВ рдХрд┐рд╕реА рднреА HDR рдорд╛рди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдкрд┐рдЫрд▓реЗ рдЯреБрдХрдбрд╝реЗ shader рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдФрд░ рдЧрд╛рдорд╛ рд╕реБрдзрд╛рд░ (рдФрд░ SRGB рдмрдирд╛рд╡рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ) рднреА рд▓рд╛рдЧреВ рдХрд░реЗрдВред
void main() { const float gamma = 2.2; vec3 hdrColor = texture(hdrBuffer, TexCoords).rgb; // vec3 mapped = hdrColor / (hdrColor + vec3(1.0)); // - mapped = pow(mapped, vec3(1.0 / gamma)); FragColor = vec4(mapped, 1.0); }
рд▓рдЧрднрдЧред рдкреНрд░рддрд┐ред - x рдХреЗ рдЫреЛрдЯреЗ рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди x / (1 + x) рд▓рдЧрднрдЧ x рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдмрдбрд╝реЗ x рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХрддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдлрдВрдХреНрд╢рди рдЧреНрд░рд╛рдл:

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

рдпрд╣рд╛рдВ рдЖрдк рдлрд┐рд░ рд╕реЗ рд▓рдХрдбрд╝реА рдХреЗ рдмрдирд╛рд╡рдЯ рдЬреИрд╕реЗ рдЫрд╡рд┐ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╡рд┐рд╡рд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╕рд╛рде, рд╣рдо рдПрдЪрдбреАрдЖрд░ рд░реЗрдВрдЬ рд╕реЗ рдХрд┐рд╕реА рднреА рд░рдВрдЧ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЫрд╡рд┐ рд╡рд┐рд╡рд░рдг рдЦреЛрдП рдмрд┐рдирд╛ рджреГрд╢реНрдп рдХреА рд░реЛрд╢рдиреА рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╣рдо рдкреНрд░рдХрд╛рд╢ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ shader рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕реАрдзреЗ рддрд╛рдирд╡рд╛рд▓рд╛ рд╕рдВрдкреАрдбрд╝рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд╣рдореЗрдВ рдПрдХ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдлреНрд░реЗрдордмрдлрд╝рд░ рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рджреГрд╢реНрдпреЛрдВ рдореЗрдВ, рдЖрдк рдЕрдХреНрд╕рд░ рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдмрдлрд╝рд░реНрд╕ рдореЗрдВ рдордзреНрдпрд╡рд░реНрддреА рдПрдЪрдбреАрдЖрд░ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХрд╛рдо рдореЗрдВ рдЖрдПрдЧрд╛ред
рдЯреЛрди рд╕рдВрдкреАрдбрд╝рди рдХреА рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рдПрдХ рдПрдХреНрд╕рдкреЛрдЬрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИред рдЖрдкрдХреЛ рдпрд╛рдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╡рд░рдг рд╡рд┐рднрд┐рдиреНрди рдЬреЛрдЦрд┐рдо рдореВрд▓реНрдпреЛрдВ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реЗ рдереЗред рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рджреГрд╢реНрдп рд╣реИ рдЬрд┐рд╕рдореЗрдВ рджрд┐рди рдФрд░ рд░рд╛рдд рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рджрд┐рди рдХреЗ рджреМрд░рд╛рди рдХрдо рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд░рд╛рдд рдореЗрдВ рдЙрдЪреНрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЬреЛ рдорд╛рдирд╡ рдЖрдВрдЦ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рдорд╛рди рд╣реИред рдЗрд╕ рдПрдХреНрд╕рдкреЛрдЬрд╝рд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде, рд╣рдо рдкреНрд░рдХрд╛рд╢ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд╢ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рддрд╣рдд рджрд┐рди рдФрд░ рд░рд╛рдд рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред
рдПрдХреНрд╕рдкреЛрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рддрд╛рдирд╡рд╛рд▓рд╛ рд╕рдВрдкреАрдбрд╝рди рдПрд▓реНрдЧреЛрд░рд┐рдердо рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
uniform float exposure; void main() { const float gamma = 2.2; vec3 hdrColor = texture(hdrBuffer, TexCoords).rgb; // vec3 mapped = vec3(1.0) - exp(-hdrColor * exposure); // - mapped = pow(mapped, vec3(1.0 / gamma)); FragColor = vec4(mapped, 1.0); }
рд▓рдЧрднрдЧред рдкреНрд░рддрд┐: 1 рдФрд░ 2 рдПрдХреНрд╕рдкреЛрдЬрд╝рд░ рд╡рд╛рд▓реЗ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреНрд░рд╛рдлрд╝ рдЬреЛрдбрд╝реЗрдВ:

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

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