Кіріспе

3Dc (FourCC: ATI2), сондай-ақ DXN, BC5 немесе Block Compression 5 деп белгілі, – бұл ATI компаниясы ойлап тапқан және алғаш рет қолданған нормальдық карталар үшін жоғалтулы деректерді қысу алгоритмі. Ол бұрынғы DXT5 алгоритміне негізделген және ашық стандарт болып табылады. Қазіргі таңда 3Dc алгоритмін ATI және Nvidia екеуі де қолданады.

Мақсатты қолдану

Нысаналы қолданба – нормальды карталау – бұл геометриялық беттердегі жарықтандыруды текстуралық картаға ұқсас тіктөртбұрышты тордан беттік нормаларды оқу арқылы имитациялайтын bump mapping-тің кеңейтілген түрі, соның арқасында қарапайым модельдерге күрделілік сезімі тудырылады. Дегенмен, бұл қосымша канал графикалық жүйенің жад еніне жүктемені арттырады. Тұтынушылардың 3D аппараттарында бұрын қолданылған жоғалтулы сығылу алгоритмдері нормальды карталарды көзге көрінетін артефактілерсіз қайта жасайтын қажетті дәлдікке ие болмады, бұл 3Dc-ні әзірлеуді қажет етті.

Алгоритм

Жер бетінің нормальдары – бірлік ұзындығы бар үш өлшемді векторлар. Ұзындығының шектеулі болуына байланысты, кез келген нормальдың тек екі элементін сақтау жеткілікті. Сондықтан, кіріс деректер екі өлшемді мәндер массиві болып табылады. Сығу 4x4 блоктар арқылы жүзеге асырылады. Әрбір блокта әр мәннің екі компоненті жеке-жеке сығылады. Әрбір блок үшін екі компоненттің әрқайсысы 8 мәннен тұратын палитраға ие. Палитралар сызықтың бастапқы және соңғы нүктелерін көрсететін екі мәннен құралады, ал қалған алты мән бастапқы және соңғы мәндердің сызықтық комбинациясы ретінде жасалады. Сығу, сығылатын 16 пикселдің ең төменгі және ең жоғары мәндерін анықтап, оларды 8 биттік сан ретінде сақтау арқылы жүзеге асырылады. 4x4 блоктарындағы жеке элементтер әрқайсысы 3 битпен сақталады, бұл олардың ең төменгі мәннен ең жоғары мәнге дейінгі 8 қадамдық сызықтық шкаладағы орнын көрсетеді. Әрбір пикселдің 3 биттік мәні (палитра индексі) бастапқы мәндерге ең жақын палитра элементін таңдау арқылы анықталады. Екі бастапқы компонентті ескергенде, 4x4 блок үшін жалпы сақтау көлемі 128 бит құрайды. 8 биттік дәлдікпен салыстырылатын сығылмаған схемада, бірдей аумақ үшін 32 8 биттік мән қажет болады, бұл 256 бит алады. Осылайша, алгоритм 2:1 сығу қатынасын қамтамасыз етеді. Сығу қатынасы кейде "4:1-ге дейін" деп аталады, себебі кіріс деректері үшін 8 бит емес, 16 биттік дәлдік қолданылуы жиі кездеседі. Бұл кіріс деректерінен 1/4 көлемдегі сығылған шығысқа әкеледі, бірақ бұл дәлдік деңгейімен салыстыруға келмейді.

3Dc+

3Dc+ (FourCC: ATI1) (BC4 немесе Block Compression 4) текстураларды, яғни жарық карталарын, көлеңке карталарын, HDR текстураларын және материал қасиеттерін қысуға мүмкіндік береді. 3Dc+ бір компонентті (DXT5 alpha) 8 биттік бүтін санды текстуралар үшін 2:1 қысу коэффициентін, ал қалыпты карталар мен екі 8 биттік бүтін санды компоненттен тұратын текстуралар үшін 4:1 қысу коэффициентін ұсынады.