Компьютерлік 3D-графиканы? негізгі т?сініктері, альфа-ы?ысу Alpha blending эффектісі
Компьютерлік 3D-графиканың негізгі түсініктері, альфа-ығысу Alpha blending эффектісі
Артефакты (Artefacts)
Артефакт – бейнеде кездесетін жетіспеушілік, бұзылу эффектісі, анықсыздық. Төменде көп кездесетін артефакттардық атаулары келтірілген (бұл атаулар түсіндірулерімен келтірілген), және олардың ағылшын тіліндегі эквиваленттері келтірілген. Толығымен алғанда атаулар шартты түрде алынған – көптеген заттардың стандартты аттаулары жоқ. Альфа-ығысу (Alpha blending)
Альфа-ығысу – фрейм-буфердегі пиксель мен түпкі писельдерді қосу арқылы жартылай көрінгіштік эффектісін жасау. Әр пикселге әдетте өздеріне сәйкес қызыл, жасыл және көк түстердің (R,G,B) қатынастарының мәндері қойылады. Егер де тағы да альфа- мәні қойылатын болса, онда пиксельді сонымен қатар альфа-канал (яғни, А компоненті RGBA схемасының ішінде) деп те атайды. Альфа-мән нақты сол пиксельдің жартылай көрінгіштік қасиетінің мәнін анықтайтын. Объектілер әртүрлі жартылай көрінгіштік қасиетке ие, мысалы шыны алатын болсақ, оның көрінгіштік қасиеті өте жоғары (яғни, соған байланысты оның альфа-мәні де төмен), ал желені алып қарастыратын болсақ, онда оның көрінгіштік қасиетін орташа. Сонымен альфа-ығысу – олардың альфа-каналдарын есептей отырып, экранда екі объектінің бір-бірімен қосылу процессін айтамыз.
Альфа-ығысу антиалиасингаға, көрінгіштікке, көлеңке жасауда, терезелер, туманды жасауда қолданылады.
Антиалиасинг (Anti-aliasing)
Алиасинг – сэмплинг нәтижесі, яғни үздіксіз бейнені дискреттік түрге түрлендіруді айтамыз. Алиасинг әдетте бейненің сапасын төмендету арқылы әртүрлі артефактыларға әкеп соқтырады: лестничный эффект, муар и шум. Антиалиасинг осындай артефактылық құбылысты жойып және оның сапасын арттыру үшін. Өзінің қызметі бойынша антиалиасинг: шеткі және толық болып екіге бөлінеді.
Шеткі антиалиасинг – лестничный эффектпен күресу механизмі болып табылады. Шеткі антиалиасинг шеткі полигондар мен диогоналды сызықтарды сглаживать ету үшін қолданылады. Шеткі антиалиасинг. Шеткі антиалисанг Voodoo Graphics, Voodoo 2, Verite V2000 3D-жылдамдатқыштарында қолданылады.
Осы шеткілік антиалиасингті іске асыру үшін ауданы бойынша ораташлау (area averaging) әдісі қолданылады. Пиксель түсі осы пиксельді әр полигон қаншалықты жауып тұрғандығының негізінде анықталады. Мысалы, төмендегі суретте көрсетілгендей, пиксельді екі полигон: А және В жауып тұр. Ауданы бойынша орташалау әдісі полигондар орналасқан, көрінетін облсытарды анықтайды, ол полигондар пиксельмен «беттесіп» жатады, және де осы беттісіп жатқан көрінетін адандар негізінде нәтиже түс есептелінеді (яғни, пиксельге де, полигонға да тиісті). Айталық А полигоны пиксель ауданының 40%-ын алып жатыр делік, ал В полигоны - 60%-ын. Нәтижелік түс мұнда А және В түстерімен анықталады және сәйкесінше салмақтық коэфиценттері 40% және 60%-ды құрайды (яғни, альфа-ығысу операциясы орындалады). Сондай-ақ сызықтар мен нүктелер үшін де әдіс тура осындай, бұл жағдайда, сызықтар мен нүктелер ауданы нөлге тең емес деп есептеледі.
Өкінішке орай, шеткілік антиалиасингтегі альфа-ығысу bleeding (тура мағынасы "қан ағу") атты артефактың пайда болуына әкеліп соғады. Bleeding – бұл ішкі қабырғаларды фонның түсіне боя, ол осы бұрыштардың арасындағы жұқа тесіктердің пайда болуымен байланысты. Сондықтан бағдарлама өзі қай қабырға мен сызықтарды сглаживат ету керектігін білуі қажет. Осыған байланысты шеткі антиалиасингке программа жазу өте қиын.
Толық антиалиасинг, шеткіге қарағанда, алиасингті толық түрде жоюға бағытталған. Жалғыз толық антиалиасингтің түрі болып – субпиксельді антиалиасинг табылады. Ол PVNG, Intel740, nVidia Rival 128 және TNT 3D-жылдамдатқыштарында қолданылады, сонымен қатар барлық профессионалдық OpenGL-жылдамдатқыштарында.
Intel740 және nVidia Riva TNT-дағы субпиксельді антиалиасинг негізінен суперсэмплинг техникасының базасына негізделеді. Суперсэмплинг – барлық сцена алдымен бір үлкен виртуалдық кеңейтуде түрлендіріліп, содан кейін бастапқы кеңейтілуіне дейін қысылады. Жалпы жағдайда виртуалдық және бастапқы кеңейтулер тең болмауы мүмкін. Суперсэмплинг техникасы мүмкін, олар tile-based архитектурасындағы жылдамдатқыштарды қолданғаннан болар. Дәстүрлі архитектуралы жылдамдатқышқа өте көп мөлшерде жады қажет болар еді (виртуалды кеңейту 1600х1200 – 8 Мб-тан жоғары). Ал tile-based архитектурасының жылдамдатқыштары толық фрейм-буферлермен жұмыс жасамайды, олар тек жеке фрагменттермен (tiles) жұмыс жасайды. Және де ол барлық субпиксельдер жайлы ақпараттың тек дәл осы уақыттағы фрагменті үшін ғана сақтайды.
3DLabs–тың Glint сериялы 3D-жылдамдатқыштары басқа әдісті қолданады, ол маска сақтауға негізделінген. 1 пиксель 16 (4х4) субпиксельге бөлінген жағдайын қарастырайық (бұл техника мультисэмплинг деп аталады), ал полигондар front-to-back-қа орналастырылады.
Антиалиасингтің арғы жағы – ол front-to-back полигондарының сұрыпталу керектігі және әр пиксель үшін масканы сақтау қажеттілігі. Екінші шартты да, әр субпиксель үшін z-координаталарын сақтай отырып айналып өтуге болады. Бірақта барлық экрандағы субпиксельдердің координаттарын сақтау мүмкін емес, ол өте көп мөлшердегі жадыны қажет етеді. Осы z-буферизациялы субпиксельді антиалиасингті аккумулятор деген техника іске асырады. Оның мғынасы, мұнда әр пиксель үшін түрлендіру тізбектей орындалады және сол үшін бір ғана жады қолданылады. Кемшілігі: тізбектей түрлендірілетін болғандықтан аппараттық параллелдеу мүмкіндігі жоқ және бұл өз кезегінде өнімділікті бір писельдегі себпиксельдер санына төмендетеді. Мысалы, 4х4 өлшемді субпиксельді антиалиасинг өнімділікті 16 есе төмендетеді, немесе басқаша айтқанда Fillrate-ті 16 есе көбейтеді.