Кіріспе

Қалыпсыз Z буфері — нақты уақыт 3D компьютерлік графикада көріну мәселесін шешуге арналған алгоритм. Ол классикалық Z буферімен байланысты, себебі ол әрбір бейне үлгісі үшін тереңдік мәнін сақтайды және оларды көріністегі қай геометриялық элементтердің көрінетінін анықтау үшін пайдаланады. Дегенмен, классикалық Z буфері мен қалыпсыз Z буферінің басты айырмашылығы — соңғысы бейне үлгілерін бейне жазықтығында кез келген орналасқан жерге қоюға мүмкіндік береді, ал алғашқысы үлгілерді реттелген торға орналастыруды қажет етеді. Бұл тереңдік үлгілері екі өлшемді кеңістіктік дерек құрылымында нақты сақталады. Растрлеу кезінде үшбұрыштар әдеттегідей бейне жазықтығына проекцияланады, ал дерек құрылымы әрбір проекцияланған үшбұрыштың қай үлгілермен қиылысатынын анықтау үшін сұралады. Ақырында, әрбір қиылысқан үлгі үшін стандартты Z салыстыру және (шартты) кадр буферін жаңарту орындалады.

Іске асыру

Классикалық растерлеу алгоритмі әрбір көпбұрышты бейне жазықтығына проекциялайды және проекцияланған көпбұрыш ішінде тұрақты аралықтағы жиыннан қандай үлгі нүктелері бар екенін анықтайды. Бұл үлгілердің орналасуы (яғни пиксельдер) ашық болғандықтан, бұл анықтауды жиектерді үлгі нүктелерінің ашық торымен салыстыру арқылы жасауға болады. Егер үлгі нүктелерінің орналасуы тұрақты аралықта болмаса және формуладан есептеуге болмаса, онда бұл тәсіл жұмыс істемейді. Қалыпсыз Z буфері бұл мәселені екі өлшемді кеңістіктік деректер құрылымында үлгілердің орналасуын нақты сақтау арқылы шешеді, содан кейін осы құрылымды сұрау арқылы проекцияланған үшбұрыш ішінде қандай үлгілер бар екенін анықтайды. Бұл соңғы қадам "қалыпсыз растерлеу" деп аталады. Қолданылатын нақты деректер құрылымы іске асырудан іске асыруға өзгеруі мүмкін, бірақ зерттелген екі тәсіл – kd ағашы және байланысты тізімдер желісі. Теңгерілген kd ағашын іске асыру O(log(N)) қол жеткізуді кепілдейді. Оның басты кемшілігі – kd ағашын параллель құру қиын болуы мүмкін, ал оны бағдарлауда қымбат тармақталу нұсқаулары қажет. Тізімдер желісінің артықшылығы – оны классикалық Z буфері үшін арналған GPU аппараттық құралдарында тиімдірек іске асыруға болады. CUDA пайда болуымен қазіргі графикалық аппараттардың бағдарламалану мүмкіндігі күрт жақсарды. "CUDA-да қалыпсыз Z буферін пайдалана отырып, жылдам үшбұрышты растерлеу" (сыртқы сілтемелерді қараңыз) магистрлік диссертациясы CUDA-да қалыпсыз Z буферге негізделген көлеңке карталау бағдарламалық жасақтамасын толық сипаттайды. Рендеринг жүйесі толығымен GPU-да жұмыс істейді. Ол секундына он миллион үшбұрыштан астам жылдамдықпен антиалиасингті көлеңкелерді жасауға қабілетті.

Қолданбалар

Қалыпсыз Z буфері бейне жазықтығының кез келген нүктесінде көрінуді есептеуді қажет ететін кез келген қолданба үшін қолданылуы мүмкін. Ол әсіресе көлеңке картасын жасауда тиімді, бұл қатты көлеңкелерді көрсетуге арналған бейне кеңістігіндегі алгоритм. Көлеңкелерді көрсетуден басқа, потенциалды қолданыстарға адаптивті антиалиазинг, қимылды үлгі алу және қоршаған ортаны бейнелеу кіреді.