Кіріспе

Штемпель буфері – қазіргі заманғы графикалық аппараттарда түстік буфер мен Z буферіне қосымша болатын қосымша дерек буфері. Буфер пикселге шаққандағы және бүтін сандармен жұмыс істейді, әдетте пикселге бір байт тереңдігімен. Z буфері мен штемпель буфері графикалық аппараттың жадысында (RAM) көбінесе бірдей аумақты бөліседі. Ең қарапайым жағдайда, штемпель буфері рендеринг аумағын шектеу үшін қолданылады (штемпельдеу). Штемпель буферін пайдаланудың жетілдірілген түрі рендерингтік құбыржолдағы Z буфері мен штемпель буфері арасындағы тығыз байланысты пайдаланады. Мысалы, тереңдік тестінен өткен немесе өтпеген әрбір пиксел үшін штемпель мәндерін автоматты түрде арттыруға/азайтуға болады. Тереңдік тестісі мен штемпель модификаторларының қарапайым үйлесімі көптеген эффектілерді мүмкін етеді (мысалы, штемпель көлеңке көлемдері, екі жақты штемпель, композициялау, декальдер, еріту, жоғалу, сырғыту, силуэттер, контурлық сурет салу немесе күрделі примитивтер арасындағы қиылыстарды бөліп көрсету), бірақ олар көбінесе бірнеше рендеринг кезеңін қажет етеді және осылайша графикалық аппаратқа үлкен жүктеме түсіруі мүмкін. Көбінесе қолданылатын тәсіл – 3D қосымшаларға көлеңкелер қосу. Ол жазықтық шағылыстар үшін де қолданылады. Портал рендеринг сияқты басқа рендеринг техникалары штемпель буферін басқаша пайдаланады; мысалы, ол порталмен жасырылған экранның ауданын анықтау және осы пикселдерді дұрыс қайта рендерингтеу үшін қолданылуы мүмкін. Штемпель буфері мен оның модификаторларына OpenGL, Direct3D немесе Vulkan сияқты API-лер арқылы компьютерлік графикада қол жеткізуге болады.

Сәулет

Штемпель буфері әдетте Z буферімен бірдей жад кеңістігін бөліседі, және қатынасы көбінесе Z буфері үшін 24 бит + штемпель буфері үшін 8 бит, немесе бұрын Z буфері үшін 15 бит + штемпель буфері үшін 1 бит болатын. Тағы бір нұсқасы – 4 + 24, онда 32 биттің 28-і қолданылады, ал 4-і назарға алынбайды. Штемпель және Z буферлері фрейм буферінің құрамында болады және түс буферімен байланыстырылған. Көбінесе нарыққа қолжетімді болған алғашқы чип – 3Dlabs Permedia II, ол бір биттік штемпель буферін қолдады. Штемпель буферіне бөлінген биттер [0, 2n-1] диапазонындағы сандық мәндерді көрсету үшін, сондай-ақ Бульдік матрица ретінде (n – бөлінген биттердің саны) пайдаланылуы мүмкін, олардың әрқайсысы сахнаның нақты бөлігін басқаруға арналуы мүмкін. Қолданылатын жадты пайдаланудың осы екі тәсілінің кез келген комбинациясы да мүмкін.

Z-қақтығыстар

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

Сахнаның тереңдігін шектеу үшін алыс жазықтықты жақындатыңыз, осылайша Z буферінің дәлдігін арттырыңыз немесе сахнадағы объектілердің көріну қашықтығын азайтыңыз. Z буферіне бөлінген биттер санын арттыруға болады, бірақ бұл штамп буферінің жадын кемітеді. Көпбұрыштарды бір-бірінен алыстатыңыз, бұл суретшінің күрделі сахна жасау мүмкіндігін шектейді. Бұл тәсілдердің барлығы Z-аралық қақтығыс ықтималдығын ғана азайтады және жалпы жағдайда толыққанды шешімге кепілдік бермейді. Штамп буферін қолданатын шешім, қай көпбұрыш басқаларының алдында болуы керектігін білуге ​​негізделген. Алдыңғы көпбұрыштың силуэті штамп буферіне салынады. Содан кейін сахнаның қалған бөлігі тек силуэт теріс мәнге ие болған жерлерде ғана көрсетіледі, осылайша алдыңғы көпбұрышпен қақтығыс болмайды.

Көлеңке көлемі

Көлеңке көлемі — 3D компьютерлік графикада көрсетілген көрініске көлеңкелер қосу үшін қолданылатын әдіс. Оны алғаш 1977 жылы Фрэнк Кроу жарық көзінен жасырылған кеңістіктің үш өлшемді пішінін сипаттайтын геометрия ретінде ұсынған. Көлеңке көлемі виртуальді әлемді екіге бөледі: көлеңкедегі және көлеңкеден тыс аймақтарға. Көлеңке көлемдерін штамп буфері арқылы іске асыру, қазіргі заманғы 3D графикалық құралдарда қолдануға болатын ең тиімді және жалпы мақсаттағы нақты уақыт көлеңкелендіру техникасы саналады. Бұл әдіс Doom 3 видео ойыны арқылы кеңінен танымал болды, ал осы ойында қолданылған әдістің ерекше түрі Кармактың кері көлеңкесі деп аталды.

Ғарыштық көлеңкелер

Штемпель буферін пайдаланатын кеңістіктік көлеңкелер – геометриялық дененің көлеңкесі, оның көлемі сахнаның бір бөлігін қамтиды. Егер сахнаның кез келген бөлігі осы көлемге тиесілі болса, ол жарықтандырылмайды, әйтпесе жарықтандырылады. Бұл мәселе жарықтардың санының артуымен күрделенеді, бірақ көлеңкелер түсетін аймақтардың санын ескермейді. Мәселені шешудің бірнеше жолы бар, бірақ біз келесі алгоритмді қолдандық: 1. Жарықсыз сахнаны салыңыз. 2. Z буферін және түс буферін құлыптап қойыңыз, осылайша олар өзгерістер жасай алмайды. Әр жарық үшін: 1. Сахна туралы тереңдік ақпаратын (Z буферін) пайдаланып, көлеңке көлемі жоқ немесе қазіргі ғимараттардан көрінбейтін сахна бөліктеріне ғана штемпель буферін толтырыңыз. 2. Түс буферін ашыңыз және Z буферінің функциясын тек қанағы тереңдік мәніне тең болған жағдайларда өзгертуге рұқсат ету үшін реттеңіз. 3. Осы жарықпен ғана жарықтандырылған сахнаны салыңыз, бірақ тек штемпель тестінен өткен сахна бөлігі үшін.

Бұл әр қадамда таза штемпель буферін пайдалануға болады. Көлеңкелерге қатысты, бұл техника күшті жарық астындағы кеңістік бөліктерін жарықтандыру үшін қолданылуы мүмкін. Мысалы, ауада шаң көп болған қараңғы бөлмедегі прожектордың жарықтығы тиісті кеңістік көлемін жарықтандырғандай көрінеді.

Басқа қолданбалар

Тағы бір мысал – әдепкі көлеңке деп аталатын нәрсе, онда көріністің жарықтанған және көлеңкелі бөлігі арасындағы өту фокуссыз болады. Атап айтқанда, мұндай эффектіге қол жеткізудің бір жолы – стилист буферін пайдалану, көлеңкенің көлемін көбейту, ал көшірмелері геометриялық прогрессия бойынша төмендетілген масштабта, мысалы, 1.04 санымен ұлғайтылады. Масштабтау орталығы жоғарғы көлемді көрсететін көпбұрыштың ауырлық центрі болуы мүмкін. Бұл өзінен-өзі қалаған эффект беретін бірнеше біріккен көлеңкелерді тудырады. Басқа бір орындалуы – қатты денелерді модельдеу техникасын қолдану кезіндегі визуализация саласына қатысты, яғни Конструктивті қатты геометрия (CSG), онда стилист буфері Z буферімен бірге SOLiD-тің Буль операцияларының мәселелерін табысты шеше алады.