рдЖрдкрдХрд╛ рдореБрдЦреНрдп рдЫрд╡рд┐ рдлрд╝рд┐рд▓реНрдЯрд░ рд▓реЗрдЦрди

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


рдХреЛрд░ рдЫрд╡рд┐


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

рдХреЛрд░ рдЫрд╡рд┐ рдлрд╝рд┐рд▓реНрдЯрд░


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

рдХрд╕реНрдЯрдо рдлрд╝рд┐рд▓реНрдЯрд░


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

рдФрд░ рдЪрдпрди рдХрд░реЗрдВ: рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ -> рд╕рд┐рд╕реНрдЯрдо рдкреНрд▓рдЧ-рдЗрди - рдЗрдореЗрдЬ рдпреВрдирд┐рдЯ рдкреНрд▓рдЧ-рдЗрди:

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

рдЕрдВрджрд░ рдХрд╛ рдирдЬрд╛рд░рд╛
рдПрдХ рдирдпрд╛ рдкреНрд▓рдЧрдЗрди рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреНрд░реА рдореЗрдВ <plugin name> рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдирд┐рдореНрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:


рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рдХрд╛рд▓реЗрдВ
рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЙрд╕реЗ рд╣рдорд╛рд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдлрд┐рд▓реНрдЯрд░ рдореЗрдВ 2 рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрдВрдЧреЗ: рдореБрдЦреНрдп рдЫрд╡рд┐ (рдмрд╛рдПрдВ) рдФрд░ рджрд╛рдПрдВред рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рд╕рдВрдпреБрдХреНрдд рдПрдирд╛рдЧреНрд▓рд┐рдлрд╝ рдЗрдореЗрдЬ рд╣реЛрдЧреАред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреЗрд╡рд▓ рдЙрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред AnaglyphFilterFilter.h рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рдореНрди рдкреНрд░рдкрддреНрд░ рдХреЗ рд▓рд┐рдП AnaglyphFilterFilter рд╡рд░реНрдЧ рдХрд╛рд╕реНрдЯ рдХрд░реЗрдВ:
@interface AnaglyphFilterFilter : Cifilter
{
CIImage * inputImage; // рдЗрдирдкреБрдЯ рдЫрд╡рд┐ (рдмрд╛рдПрдВ)
CIImage * rightImage; // рд╕рд╣реА рдЫрд╡рд┐
}
@end

AnaglyphFilterFilter.m рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ рд╣реИрдВ, рдореИрдВ рдПрдХ рд╡рд┐рд╡рд░рдг рджреЗрддрд╛ рд╣реВрдБ:


CIKL рдХрд╛рд░реНрдпрдХреНрд░рдо
рдпрд╣ CIKL рднрд╛рд╖рд╛ рдХрд╛ рдПрдХ рдХреЛрдб рд╣реИ, рдЬреЛ OpenGL рдЫрд╛рдпрд╛рдВрдХрди рднрд╛рд╖рд╛ рдХрд╛ рдПрдХ рд░реВрдкрд╛рдВрддрд░ рд╣реИред рдореБрдЦреНрдп рд░реВрдЯ рд╕реЗ рдЬрд┐рди рд░реВрдЯреАрдиреЛрдВ рдХреЛ рд╣рдо рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗ, рд╡реЗ рдХреБрдВрдЬреА рд╢рдмреНрдж рдХрд░реНрдиреЗрд▓ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ CIK рдХрд░реНрдиреЗрд▓ рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рд╕рдВрдкрддреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрд░рдВрднреАрдХрд░рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ (init рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ):
_AnaglyphFilterFilterKernel = [ [ рдЧреБрдард▓реА рд╡рд╕реНрддреБрдПрдЯрдЗрдВрдбреЗрдХреНрд╕ : 0 ] рдмрд░рдХрд░рд╛рд░ ] ;
рдЗрд╕реА рддрд░рд╣, рдЖрдк рдирд╛рдо рд╕реЗ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
_AnaglyphFilterFilterKernel = [ [ рдХрд░реНрдиреЗрд▓ рдЦреЛрдЬ рдХрд░реНрдиреЗрд▓рдмреАрдирд╛рдо : @ "рдкреНрд░рдХреНрд░рд┐рдпрд╛рдирд╛рдо" ] рдмрд░рдХрд░рд╛рд░ ] ;
.C рдХрд░реНрдиреЗрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрд╣реБрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
рдХрд░реНрдиреЗрд▓ vec4 рдХрд╛рд░реНрдпрд╡рд┐рдзрд┐ рдирд╛рдо ( рдирдореВрдирд╛ рдмрд╛рдПрдВ рдмрд╛рдПрдВ , рдирдореВрдирд╛ рджрд╛рдпрд╛рдВ рд╕рдорд░реВрдк )
{
// рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб
// рдкрд░рд┐рдгрд╛рдо рд╡рд╛рдкрд╕ рдХрд░реЗрдВ
}


anaglyph
рд╡рд┐рднрд┐рдиреНрди рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдЕрдиреИрдЧрд┐рд▓реНрдл рдЪрд┐рддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреВрд░реНрдг-рд░рдВрдЧ рдЫрд╡рд┐ рдУрд╡рд░рд▓реЗ рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:

рдПрдХ CIKL рд╕рдмрд░реВрдЯреАрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
рдХрд░реНрдиреЗрд▓ vec4 anaglyphRedCyan ( sampler leftSamp , sampler rightSamp )
{
// рдмрд╛рдИрдВ рдЫрд╡рд┐ рдХреЗ рдкрд┐рдХреНрд╕реЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
vec4 l = рдирдореВрдирд╛ ( leftSamp , samplerCoord ( leftSamp ) ) ;
// рд╣рд░реЗ рдФрд░ рдиреАрд▓реЗ рдЪреИрдирд▓реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ
рдПрд▓ ред рдЬреА = рдПрд▓ ред рдмреА = 0.0 ;
// рд╕рд╣реА рдЫрд╡рд┐ рдХрд╛ рдкрд┐рдХреНрд╕реЗрд▓ рдорд┐рд▓рддрд╛ рд╣реИ
vec4 r = рдирдореВрдирд╛ ( rightSamp , samplerCoord ( rightSamp ) ) ;
// рд▓рд╛рд▓ рдЪреИрдирд▓ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ
рдЖрд░ ред рдЖрд░ = 0.0 ;
// "рд╕реНрдХреНрд░реАрди" рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рдУрд╡рд░рд▓реЗ
vec4 рд░рд┐рдЯ ;
// рд▓рд╛рд▓ рдЪреИрдирд▓
рд░рд┐рдЯрд╛рдпрд░ ред r = 1.0 - ( 1.0 - l ред r ) * ( 1.0 - r ред r ) ;
// рдЧреНрд░реАрди рдЪреИрдирд▓
рд░рд┐рдЯрд╛рдпрд░ ред g = 1.0 - ( 1.0 - l ред g ) * ( 1.0 - r ред g ) ;
// рдмреНрд▓реВ рдЪреИрдирд▓
рд░рд┐рдЯрд╛рдпрд░ ред b = 1.0 - ( 1.0 - l ред b ) * ( 1.0 - r ред b ) ;
// рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рд░рд┐рдЯрд╛рдпрд░ ред a = 1.0 ;
// рдкрд░рд┐рдгрд╛рдо
рд╡рд╛рдкрд╕реА ;
}


рд╣рдо рдПрдХ рдлрд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ
рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рд╡рд╣ рдХреЛрдб рдбрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рд╣рдорд╛рд░реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рд▓реЛрдб рдХрд░реЗрдЧрд╛ (рдЗрд╕ рддрдереНрдп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХрд┐ рд╣рдо рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ:
- ( рд╢реВрдиреНрдп ) loadCoreImageFilters
{
NSString * path = [ [ NSBundle mainBundle ] pathForResource : @ "AnaglyphFilter" ofType : @ "plugin" ] ;
[ CIPlugIn loadPlugIn : [ NSURL fileURLWithPath : path ] allowExecutableCode : YES ] ;
}
рдЕрдм рдЖрдк рдЕрдиреНрдп рдлрд┐рд▓реНрдЯрд░ рдХреА рддрд░рд╣ рд╣реА рдлрд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
Cifilter * anaglyphFilter = [ CIFilter filterWithName : @ "AnaglyphFilter" ] ;
[ anaglyphFilter setDefaults ] ;
[ anaglyphFilter setValue : leftImage forKey : @ "inputImage" ] ;
[ anaglyphFilter setValue : rightImage forKey : @ "rightImage" ] ;
CIImage * anaglyphImage = [ anaglyphFilter valueForKey : @ "outputImage" ] ;


рдирд┐рд╖реНрдХрд░реНрд╖

рдХреЛрд░ рдЗрдореЗрдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЙрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рдерд╛ рдЬрд┐рддрдирд╛ рдХрд┐ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдпрд╣рд╛рдБ рдХрд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ:

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


All Articles