202
ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ Кваліфікаційна наукова праця на правах рукопису ДУДНИК ОЛЕКСАНДР ОЛЕКСАНДРОВИЧ УДК 004.925.4 ДИСЕРТАЦІЯ МЕТОДИ ТА ЗАСОБИ ПІДВИЩЕННЯ РЕАЛІСТИЧНОСТІ ТА ПРОДУКТИВНОСТІ ТЕКСТУРУВАННЯ У СИСТЕМАХ КОМП'ЮТЕРНОЇ ГРАФІКИ 05.13.05 Комп’ютерні системи та компоненти Технічні науки Подається на здобуття наукового ступеня кандидата технічних наук Дисертація містить результати власних досліджень. Використання ідей, результатів і текстів інших авторів мають посилання на відповідне джерело ___________________________ О. О. Дудник Науковий керівник: доктор технічних наук, професор Романюк Олександр Никифорович Вінниця - 2018

ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

Кваліфікаційна наукова

праця на правах рукопису

ДУДНИК ОЛЕКСАНДР ОЛЕКСАНДРОВИЧ

УДК 004.925.4

ДИСЕРТАЦІЯ

МЕТОДИ ТА ЗАСОБИ ПІДВИЩЕННЯ РЕАЛІСТИЧНОСТІ ТА

ПРОДУКТИВНОСТІ ТЕКСТУРУВАННЯ У СИСТЕМАХ

КОМП'ЮТЕРНОЇ ГРАФІКИ

05.13.05 – Комп’ютерні системи та компоненти

Технічні науки

Подається на здобуття наукового ступеня кандидата технічних наук

Дисертація містить результати власних досліджень. Використання ідей,

результатів і текстів інших авторів мають посилання на відповідне джерело

___________________________ О. О. Дудник

Науковий керівник:

доктор технічних наук, професор

Романюк Олександр Никифорович

Вінниця - 2018

Page 2: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

2

АНОТАЦІЯ

Дудник О. О. Методи та засоби підвищення реалістичності та

продуктивності текстурування у системах комп'ютерної графіки. –

Кваліфікаційна наукова праця на правах рукопису.

Дисертація на здобуття наукового ступеня кандидата технічних наук за

спеціальністю 05.13.05 «Комп’ютерні системи та компоненти». – Вінницький

національний технічний університет. – Вінниця, 2018.

У дисертаційній роботі розвинуто теорію кінцевої візуалізації

тривимірних графічних об’єктів за рахунок розробки нових методів і моделей,

що дозволило підвищити продуктивність формування зображень та їх

реалістичність у системах комп’ютерної графіки при накладанні текстур, їх

фільтрації та імітації нерівностей.

Проведено аналіз сучасних методів і засобів кінцевої візуалізації, зокрема,

на етапі текстурування. Показано, що найвищу реалістичність накладання

текстур забезпечують методи перспективно-коректного текстурвання та

анізотропної фільтрації текстур. Однак вони потребують високих

обчислювальних затрат та не забезпечують прийнятного рівня реалістичності

для ряду випадків. Обгрунтовано, що для підвищення реалістичності та

продуктивності формування графічних зображень актуальною задачею є

розробка нових методів, моделей і засобів текстурування.

Запропоновано математичну модель проекції піксела в текстурній площині,

що враховує зміну форми піксела в результаті перспективних перетворень.

Оскільки при анізотропній фільтрації основу проекції піксела на текстуру

розглядають як витягнутий еліпс, запропоновано як модель проекції піксела

використовувати тіло обертання кривої Гаусса, масштабоване вздовж осей

еліпса таким чином, щоб його основа відповідала формі еліпса. Запропонована

модель використана як вагова функція при усередненні кольорів текселів під

час виконання анізотропної фільтрації текстур, що дозволило підвищити

Page 3: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

3

реалістичність формування графічних зображень.

Запропоновано нові формули визначення об’єму відсікання тіла обертання

кривої Гаусса при виконанні анізотропної фільтрації текстур із субтексельною

точністю, що дало можливість підвищити реалістичність формування графічних

зображень.

Запропоновано використання спеціальних текстурних карт для визначення

вагових коефіцієнтів текселів при виконанні анізотропної фільтрації текстур.

Вибірка попередньо розрахованих вагових коефіцієнтів із текстурної карти

забезпечила підвищення продуктивності анізотропної фільтрації до 25%.

Запропоновано модифікацію методу Хекберта, в якому використано

ітераційні формули для визначення координат текселів, що дозволлило

визначати текстурні координати піксела на основі текстурних координат

попереднього піксела в рядку растеризації. Формули отримані шляхом

скорочень та зміни етапів виконання дій. Доведено можливість виконання

частини дій один раз на полігон, а частини – один раз на рядок растеризації.

Використання нових формул дозволило підвищити продуктивність рендерингу

тривимірних сцен на 26% за рахунок зменшення кількості арифметичних

операцій при визначенні текстурних координат піксела.

Запропоновано нові формули для визначення параметрів рівняння еліпса

при виконанні анізотропної фільтрації, що дозволило визначати значення

параметрів рівняння на основі значень проміжних результатів обчислень для

попереднього піксела в рядку растеризації. Це дозволило зменшити кількість

арифметичних операцій та підвищити продуктивність на 18%.

Вперше запропоновано метод текстурування, особливість якого полягає у

виконанні процедурних операцій в об’єктному просторі та подальшій фільтрації

в площині екрана. Метод передбачає виконання растеризації полігонів у

просторі з подальшим проекціюванням фрагментів на площину екрана. На

відміну від методів із растеризацією в площині екрана, при формуванні

графічних зображень не передбачається виконання анізотропної фільтрації

текстур і, як наслідок, дає можливість підвищити продуктивність рендеригу в

Page 4: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

4

середньому до 30%.

Встановлено причини появи похибок візуалізації при використанні

технології parallax mapping у поєднанні з анізотропною фільтрацією текстур.

Для усунення артефактів запропоновано комбінований метод виконання

рельєфного текстурування із використанням parallax mapping та анізотропної

фільтрації. Метод враховує рельєфні особливості поверхні для вилучення з

процесу анізотропної фільтрації операцій над тими текселями, які відповідають

невидимим для спостерігача ділянкам поверхні моделі. Це дозволило усунути

артефакти, притаманні для зображень, сформованих шляхом поєднання цих

технологій.

Запропоновано модифікований метод parallax mapping з використанням

карти відстаней до поверхні, що відрізняється від класичного використанням

уточненої карти відстаней, яка враховує умови видимості текселів.

Встановлено, що при текстуруванні рельєфних поверхонь із різкими перепадами

висот, видовий вектор, який проходить через конкретний тексель, що лежить

над поверхнею та перетинає поверхню таким чином, що його частина на

проміжку від текселя до поверхні рівна мінімальній відстані від цієї точки до

поверхні, і, при цьому, не перетинає поверхню на проміжку від початку вектора

до цього текселя може не існувати. Доведено, що доцільно зберігати у карті

відстаней найменшу з можливих відстаней від точки до поверхні за умови, що

такий вектор існує. Використання модифікованої карти відстаней до поверхні

дозволяє підвищити продуктивність рельєфного текстурування до 11%.

Розроблено програмну реалізацію запропонованих методів для

комп’ютерних систем рендерингу реального часу з використанням графічних

акселераторів на основі уніфікованої шейдерної архітектури. Розроблено: новий

конвеєр рендеригну для реалізації методу текстрування з використанням

процедурних операцій в об’єктному просторі засобами обчислювальних

шейдерів OpenGL; фрагментні шейдери, що реалізують запропоновані методи

анізотропної фільтрації текстур та рель’єфного текстурування для рендерингу

зображень в реальному часі на GPU; програмне забезпечення для генерації карт

Page 5: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

5

вагових коефіцієнтів та уточнених карт відстаней до поверхні. Проведено

експериментальні дослідженням та порівняльний аналіз отриманих результатів.

На основі запропонованих у роботі методів розроблено систему кінцевої

візуалізації.

Наукова новизна отриманих результатів:

1. Уперше запропоновано метод накладання текстур, особливість якого

полягає у виконанні процедурних операцій в об’єктному просторі та

фільтрації в площині екрана, що не потребує виконання анізотропної

фільтрації текстур, і, як наслідок, дає можливість підвищити продуктивність

формування графічних сцен до 30%.

2. Уперше запропоновано математичну модель проекції екранного піксела в

текстурний простір, яка враховує зміну форми піксела при перспективному

проектуванні для реалізації вагової функції при анізотропній фільтрації

текстур, що дозволило підвищити точність визначення кольорів пікселів.

3. Уперше запропоновано комбінований метод виконання рельєфного

текстурування з використанням технології parallax mapping та анізотропної

фільтрації, що дозволяє підвищити реалістичність формування графічних

сцен за рахунок урахування рельєфу поверхні при анізотропній фільтрації.

4. Запропоновано модифікацію методу Хекберта, у якому використано

ітераційні формули для визначення координат текселів, що дозволило

зменшити кількість операцій додавання та множення для визначення

текстурних координат піксела, і, як наслідок, підвищити продуктивність

методу до 26%.

5. Подальшого розвитку отримав метод анізотропної фільтрації текстур, в

якому при перспективно-коректному текстуруванні використано нові

формули для прискореного обчислення параметрів рівняння еліпса, що

дозволяє підвищити продуктивність анізотропної фільтрації текстур до 18%

за рахунок зменшення кількості арифметичних операцій.

6. Подальшого розвитку отримав метод Донеллі, в якому, на відміну від

існуючого, при формуванні карти відстаней до поверхні враховуються

Page 6: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

6

умови видимості текселів, що дозволило зменшити кількість ітерацій

трасування видового вектора та підвищити продуктивність методу до 11%.

Практичне значення отриманих результатів полягає в тому, що на

основі отриманих в дисертації теоретичних положень запропоновано

алгоритми та розроблено програмні засоби текстурування для комп’ютерних

систем високореалістичної візуалізації тривимірних зображень.

Результати проведених досліджень впроваджено на таких підприємствах і

організаціях: компанія «ДЦ Інжиніринг» для підвищення продуктивності

роботи графічних станцій; ПМВП «Фотоніка Плюс» для підвищення

продуктивності та реалістичності формування зображень у графічних системах;

кафедра програмного забезпечення Вінницького національного технічного

університету для використання у навчальному процесі.

Ключові слова: текстурування, накладання текструр, фільтрація текстур,

перспективно-коректне текстурування, рельєфне текстурування, parallax

mapping.

Page 7: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

7

ABSTRACT

Dudnyk O. O. Methods and tools of increasing the realism and productivity of

texture mapping in computer graphics systems. – Qualification scientific paper as

manuscript.

Thesis for PhD degree in technical sciences on the speciality 05.13.05

«Computer systems and components». – Vinnytsia National Technical University. –

Vinnytsia, 2018.

In this dissertation work the author expanded the theory of rendering three-

dimensional graphic objects by developing new methods and models, which allowed

to improve the performance and realism of texture mapping, texture filtering and

relief mapping in computer graphics systems.

The author analyzes modern methods and tools of rendering, in particular, at

the stage of texture overlay. It is shown that the methods of perspective-correct

texture mapping and anisotropic texture filtering provide the highest realism of

texture mapping. However, they are computationally expensive and do not provide an

acceptable level of realism in many cases. It is proved that to improve the realism and

productivity of the formation of graphic images is an urgent task to develop new

methods, models and tools of texturing.

The author proposed a mathematical model of the pixel projection in the

texture plane, which takes into account the change in the shape of the pixel as a

result of perspective transformations. Since in anisotropic filtering the basis of the

pixel projection on the texture is considered as an elongated ellipse, it is proposed as

a model of the pixel projection to use the body of rotation of the Gauss curve,

scalable along the axes of the ellipse so that the base corresponds to the shape of the

ellipse. The proposed model is used as a weight function for averaging texel colors

during anisotropic texture filtering, which allowed to increase the realism of the

formation of graphic images.

Page 8: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

8

In the thesis the author proposes new formulas for determining the volume of

cutoff of the body of rotation of the Gauss curve when performing anisotropic texture

filtering with subtexel accuracy, which made it possible to increase the realism of the

formation of graphic images.

The use of special texture maps to determine the weight coefficients of texels in

the performance of anisotropic texture filtering is proposed. A sample of pre-

calculated weights from the texture map increased the performance of anisotropic

filtering by up to 25%.

The author proposes a modification of the Heckbert method, which uses

iterative formulas to calculate the texel coordinates, which allowed to determine the

texture coordinates of the pixel based on the texture coordinates of the previous pixel

in the rasterization line. The formulas are obtained by reducing and changing the

stages of operations. Proven ability to perform some operations once on the polygon,

and the parts – once on the line rasterization. The use of new formulas allowed to

increase the performance of rendering three-dimensional scenes by 26% by reducing

the number of arithmetic operations in the calculation of texture coordinates of the

pixel.

In this paper, the author proposed new formulas for calculating the parameters

of the ellipse equation to perform anisotropic filtering, which allowed to calculate

the values of the parameters of the equation based on the values of the intermediate

results of the calculations for the previous pixel in the rasterization string. This

allowed to reduce the number of arithmetic operations and increase productivity by

18%.

The author for the first time proposed a method of texturing, the feature of

which is to perform procedural operations in the object space and further filtering in

the screen plane. The method involves performing rasterization of polygons in space,

followed by projecting the fragments on the screen plane. Unlike methods to be

rasterized in the screen plane, the formation of graphic images not provided for the

implementation of anisotropic filtering of texture and, as a consequence, provides an

opportunity to improve the performance of rendering to an average of 30%.

Page 9: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

9

The author found the reasons for the appearance of visualization errors when

using parallax mapping technology in combination with anisotropic texture filtering.

To eliminate artifacts, the author proposes a combined method of relief texturing

using parallax mapping and anisotropic filtering. The method takes into account the

relief features of the surface to exclude from the process of anisotropic filtering

operations with those texels that correspond to the areas of the model surface invisible

to the observer. This allowed to eliminate artifacts inherent in images formed by

combining these technologies.

The author proposes a modified method parallax mapping using a distance map

to the surface, which differs from the classical method in that it uses a refined distance

map, which takes into account the visibility conditions of texels. The author found

that when applying relief textures with sharp differences in height, the view vector

that passes through a specific texel that lies above the surface and crosses the surface

so that its part on the interval from Texel to the surface is the minimum distance from

this point to the surface, and, at the same time, does not cross the surface on the

interval from the beginning of the vector to this texel may not exist. It is proved that it

is reasonable to keep the smallest possible distance from the point to the surface in the

distance map, provided that such a vector exists. The use of a modified map of

distances to the surface can improve the performance of relief texturing up to 11%.

The author has developed a software implementation of the proposed methods

for computer real-time visualization systems using graphic accelerators based on a

unified Shader architecture. The author has developed: a new render pipeline for the

implementation of the texture mapping method using procedural operations in object

space using OpenGL computing shaders; fragment shaders that implement the

proposed methods of anisotropic texture filtering and relief texture mapping for real-

time image rendering on the GPU; software for generation the map of the weighting

factors and updated maps of the distances to the surface. Also, the author conducted

experimental studies and comparative analysis of the results.

On the basis of the proposed methods, a system of rendering was developed.

Scientific novelty of the results:

Page 10: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

10

1. For the first time for real-time computer graphics systems, a method of texture

mapping, the feature of which is to perform procedural operations in the object

space and filtering in the screen plane is proposed, which does not require

anisotropic texture filtering, and as a result, it makes it possible to increase the

performance of up to 30% .

2. For the first time, a mathematical model of projection of the screen pixel into the

texture space, which takes into account the change in the pixel shape in the

perspective design for the weight function in anisotropic texture filtering is

proposed, which allowed to improve the accuracy of pixel color calculation.

3. For the first time, a combined method of relief texturing using parallax mapping

and anisotropic filtering technology is proposed, which makes it possible to

increase the realism of the formation of graphic scenes by taking into account the

surface relief in anisotropic filtering.

4. A modification of the Heckbert method, which uses iterative formulas to

determine the texel coordinates is proposed, which allows to reduce the number of

addition and multiplication operations to determine the texture coordinates of the

pixel, and, as a consequence, to increase the performance up to 26%.

5. The method of anisotropic texture filtering was further developed, in which new

formulas were used for accelerated calculation of the ellipse equation with

perspective-correct texture mapping, which allows to increase the performance of

anisotropic texture filtering up to 18% by reducing the number of arithmetic

operations.

6. The method for Donnelly was further developed, which, in contrast to the basic

method, the formation of the map of distances to the surface are taken into

account visibility conditions texels, which reduced the number of iterations of the

trace species of the vector and increase productivity up to 11%.

The practical significance of the results is that on the basis of the thesis the

theoretical provisions was proposed the algorithms and was developed the software

tools for overlaying textures in computer systems highly realistic visualization of

three-dimensional images.

Page 11: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

11

The results of the research implemented in the following enterprises and

organizations: LLC "DC Engineering" to improve the performance of graphic

stations; PSPC "Photonica Plus" to improve the performance and realism of image

formation in graphics systems; Software Department of Vinnitsa National technical

University for use in the educational process.

Key words: texturing, texture mapping, texture filtering, anisotropic filtering,

perspective-correct texturing, relief texturing, parallax mapping.

Page 12: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

12

СПИСОК ПУБЛІКАЦІЙ ЗА ТЕМОЮ ДИСЕРТАЦІЇ

[1] О. Н. Романюк, І. В. Абрамчук, О. О. Дудник, та О. В. Мельник,

"Модифікація гаусівської моделі піксела для задач антиаліайзингу", Наукові

праці Донецького національного технічного університету. Серія:

Інформатика, кібернетика та обчислювальна техніка №1, с. 84-88, 2015.

[2] О. Н. Романюк, та О. О. Дудник, "Підвищення реалістичності

зафарбовування тривимірних графічних об'єктів", Вісник ХНТУ № 3, с. 269-

272, 2016.

[3] О. Н. Романюк, та О. О. Дудник, "Анізотропна фільтрація з використанням

текстурних карт вагових коефіцієнтів", Реєстрація, зберігання і обробка

даних № 3, с. 34-41, 2017.

[4] С. О. Романюк, О. О. Дудник, Л. А. Савицька, та О. В. Романюк та ін.,

"Анізотропна фільтрація з використанням вагових функцій", Вестник

Херсонского национального технического университета № 3, 2015, с. 459-

462.

[5] О. Н. Романюк, та О. О. Дудник, "Метод підвищення продуктивності

перспективно-коректного текстурування", Наукові праці ДонНТУ № 1 (22),

с. 43-46, 2016.

[6] О. Н. Романюк, та О. О. Дудник, "Анізотропна фільтрація текстур з

використанням методів кешування", Вісник Вінницького політехнічного

інституту № 6, с. 59-64, 2017.

[7] О. Н. Романюк, та О. О. Дудник, "Підвищення продуктивності

текстурування з виконанням процедурних операцій в об’єктному просторі",

Наукові праці ДонНТУ. Серія “Інформатика, кібернетика та

обчислювальна техніка” № 2 (23), с. 45-51, 2016.

[8] О. Н. Романюк, та О. О. Дудник, "Реалізація альтернативного конвеєра

рендерингу на GPU з використанням обчислювальних шейдерів", Наукові

праці Донецького національного технічного університету Серія:

“Інформатика, кібернетика та обчислювальна техніка”, Покровськ, 2017.

Page 13: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

13

[9] О. Н. Романюк, та О. О. Дудник, "Особливості анізотропної фільтрації

текстур при використанні технології parallax mapping", Вісник

Хмельницького національного університету № 1, с. 245, 2017.

[10] О. Н. Романюк, та О. О. Дудник, "Модифікований метод parallax mapping з

використанням карти відстаней до поверхні", Інформаційні технології та

комп’ютерна інженерія № 1, с. 78-82, 2017.

[11] О. Н. Романюк, та О. О. Дудник, “Використання модифікованої МІР-

піраміди для підвищення продуктивності parallax mapping”, Вісник

Вінницького політехнічного інституту, №1, 112-116, 2018.

[12] S. I. Vyatkin, S. A. Romanyuk, and O. O. Dudnyk, “Geometric modeling with

scalar perturbation functions”, Measuring and computing equipment in

technological processes, № 4, pp. 45-50, 2014.

[13] S. I. Vyatkin, A. N. Romanyuk, and O. O. Dudnyk, "Function-based gpu

architecture", Вимірювальна та обчислювальна техніка в технологічних

процесах № 1, р. 139-144, 2015.

[14] A. N. Romanyuk, and O. O. Dudnyk, "Ways to improve performance of

anisotropic texture filtering", Control and Communications (SIBCON), 2017

International Siberian Conference on. IEEE, 2017, [Online]. Available:

https://ieeexplore.ieee.org/document/7998589/

[15] О. Н. Романюк, та О. О. Дудник, "Розробка методів текстурування для

задач фотореалістичного рендерингу", Матеріали сьомої міжнародної

науково-технічної конференції "Моделювання і комп’ютерна графіка", 18-24

вересня 2017 р, с. 26-33.

[16] О. Н. Романюк, та О. О. Дудник "Неортогональна растеризація при

перспективнокоректному текстуруванні", VI Международная конференция

«Моделирование и компьютерная графика», м. Красноармійськ, 25-29

травня 2015 р., с. 174-178.

[17] О. Н. Романюк, та О. О. Дудник, "Еволюція конвеєра рендерингу в

відеокартах", Збірник матеріалів міжнародної науково-практичної

Page 14: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

14

Інтернет-конференції «Електронні інформаційні ресурси: створення,

використання, доступ», 24-25 жовтня 2016 р., с. 440-448.

[18] О. О. Дудник, та О. Н. Романюк, "Аналіз методів фільтрації текстур"

Матеріали міжнародної науково-практичної Інтернет-конференції

"Молодь в технічних науках:дослідження, проблеми, перспективи (МТН-

2015), Вінниця, 16-17 квітня 2015 р., [Електронний ресурс]. Доступно:

http://conf.inmad.vntu.edu.ua/fm/index.php?page=materials&line=11&mat=115

[19] Романюк О. Н, та О. О. Дудник, "Математичні моделі Піксела" Збірник

матеріалів Всеукраїнської науково-практичної конференції "Електронні

інформаційні ресурси в освіті і науці: створення, використання, доступ",

Вінниця, 2014, с. 3-8,.

[20] О. Н Романюк, О. О. Дудник, та С. В. Вяткін, "Шляхи підвищення

продуктивності анізотропної фільтрації", Матеріали міжнародної науково-

практичної Інтернет-конференції "Молодь в технічних

науках:дослідження, проблеми, перспективи (МТН-2016), 2016,

[Електронный ресурс]. Доступно: http://conf.inmad.vntu.edu.ua/fm/index.php?

page=materials&line=20&mat=343

[21] О. О. Дудник, “Аналіз методів рельєфного текстурування”, Електронні

інформаційні ресурси: створення, використання, доступ: Збірник

матеріалів Міжнародної науково-практичної Інтернет- конференції.,

Вінниця, 2017, c. 230-236.

[22] О. Н. Романюк, та О. О. Дудник, "Анізотропна фільтрація з

використанням вагової функції на основі Гаусівської моделі пікселя",

Вимірювальна та обчислювальна техніка в технологічних процесах № 2:

117-121, 2016.

[23] О. Н. Романюк, та О. О. Дудник, "Підвищення продуктивності

перспективно-коректного текстурування з використанням анізотропної

фільтрації", Вимірювальна та обчислювальна техніка в технологічних

процесах № 3, с. 192-195, 2016.

Page 15: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

15

[24] О. Н. Романюк, та О. О. Дудник, "Модифікація білінійного текстурування

з використнням кругової моделі пікселя", Вимірювальна та обчислювальна

техніка в технологічних процесах № 1, с. 243-245, 2016.

[25] С. И. Вяткин, А. Н. Романюк, и А. А. Дудник, "Анизотропная фильтрация

текстуры в реальном времени", Измерительная и вычислительная техника в

технологических процесах № 4, с. 217-221, 2015.

[26] О. Н. Романюк, та О. О. Дудник, Комп'ютерна програма “Визначення

кольору пікселя з використанням кругової моделі”, Свідоцтво про реєстрацію

авторського права на твір №66660, К.: Державна служба інтелектуальної

власності України, 15.07.16

[27] О. Н. Романюк, та О. О. Дудник, Комп'ютерна програма “Обчислення

об’єму перетину пікселя ”, Свідоцтво про реєстрацію авторського права на

твір №61823, К.: Державна служба інтелектуальної власності України,

25.09.15

[28] О. Н. Романюк, та О. О. Дудник, Комп'ютерна програма “Система

експертного оцінювання сформованого зображення по відношенню до

еталону”, Свідоцтво про реєстрацію авторського права на твір №66659, К.:

Державна служба інтелектуальної власності України, 15.07.16

[29] О. Н. Романюк, О. О. Дудник, та Б. Л. Войт Комп'ютерна програма

“Рендеринг тривимірних зображень із використанням процедурних операцій

в об’єктному просторі”, Свідоцтво про реєстрацію авторського права на

твір №71796, К.: Державна служба інтелектуальної власності України,

05.05.17

[30] О. О. Дудник, Комп'ютерна програма “Генерація вагових текстурних

карт”, Свідоцтво про реєстрацію авторського права на твір №78246, К.:

Міністерство економічного розвитку і торгівлі України, 12.04.18

[31] О. О. Дудник, Комп'ютерна програма “Анізотропна фільтрація текстур з

використанням вагової функції на основі гаусівської моделі пікселя”,

Свідоцтво про реєстрацію авторського права на твір №78247, К.:

Міністерство економічного розвитку і торгівлі України, 12.04.18

Page 16: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

16

[32] О. О. Дудник, Комп'ютерна програма “Анізотропна фільтрація текстур з

використанням вагових текстурних карт”, Свідоцтво про реєстрацію

авторського права на твір №78249, К.: Міністерство економічного розвитку і

торгівлі України, 12.04.18

[33] О. О. Дудник, Комп'ютерна програма “Генерація текстурних карт

відстаней до поверхні на основі карт висот з урахуванням видимості точок

поверхні”, Свідоцтво про реєстрацію авторського права на твір №78248, К.:

Міністерство економічного розвитку і торгівлі України, 12.04.18

Page 17: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

17

ЗМІСТ

ВСТУП ..................................................................................................................... 20

1 АНАЛІЗ МЕТОДІВ НАКЛАДАННЯ ТЕКСТУР ................................................ 27

1.1 Основні етапи графічного конвеєру ................................................................. 27

1.2 Аналіз методів накладання текстур. ................................................................. 35

1.3 Аналіз методів рельєфного текстурування ...................................................... 43

1.4. Основні критерії продуктивності та реалістичності систем кінцевої

візуалізації ............................................................................................................... 49

Висновки .................................................................................................................. 52

2 МЕТОДИ ПІДВИЩЕННЯ РЕАЛІСТИЧНОСТІ НАКЛАДАННЯ ТЕКСТУР .. 55

2.1 Математична модель проекції піксела для задач анізотропної фільтрації..... 55

2.2 Математична модель піксела для задач субтексельної анізотропної

фільтрації текстур.................................................................................................... 62

2.3 Метод підвищення реалістичності зафарбовування при просторово-

варіативному розміщенні полігонів ....................................................................... 67

Висновки .................................................................................................................. 72

3 МЕТОДИ ПІДВИЩЕННЯ ПРОДУКТИВНОСТІ НАКЛАДАННЯ ТЕКСТУР 74

3.1 Метод підвищення продуктивності визначення вагових коефіцієнтів для

задач анізотропної фільтрації ................................................................................. 74

3.2 Метод підвищення продуктивності перспективно-коректного текстурування . 79

3.3 Метод підвищення продуктивності анізотропної фільтрації ри перспективно-

коректному текстуруванні ....................................................................................... 83

3.4 Метод підвищення продуктивності текстурування з виконанням

процедурних операцій в об’єктному просторі ....................................................... 87

Висновки .................................................................................................................. 99

Page 18: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

18

4 МЕТОДИ ПІДВИЩЕННЯ РЕАЛІСТИЧНОСТІ ТА ПРОДУКТИВНОСТІ

РЕЛЬЄФНОГО ТЕКСТУРУВАННЯ .................................................................... 100

4.1 Комбінований метод виконання анізотропної фільтрації текстур при

використанні технології parallax mapping ............................................................ 100

4.2 Модифікований метод parallax mapping з використанням карти відстаней до

поверхні ................................................................................................................. 105

4.3 Метод підвищення продуктивності parallax mapping з використанням

модифікованої МІР-піраміди ................................................................................ 110

Висновки ................................................................................................................ 113

5 РОЗРОБКА ПРОГРАМНИХ КОМПОНЕНТІВ КОМП'ЮТЕРНИХ СИСТЕМ

НА ОСНОВІ ЗАПРОПОНОВАНИХ МЕТОДІВ ................................................. 115

5.1 Шейдерна реалізація методу текстурування з виконанням процедурних

операцій в об’єктному просторі ........................................................................... 115

5.2 Програмна реалізація методів фільтрації текстур та рельєфного

текстурування ........................................................................................................ 123

5.3 Анізотропна фільтрація текстур з використанням методів кешування ........ 132

5.4 Побудова системи рендерингу........................................................................ 138

Висновки ................................................................................................................ 143

ВИСНОВКИ .......................................................................................................... 144

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ .............................................................. 147

ДОДАТКИ ............................................................................................................. 161

Додаток А. Результати аналізу продуктивності анізотропної фільтрації з

використанням вагових функцій .......................................................................... 162

Додаток Б. Результати аналізу продуктивності модифікації методу Хекберта для

перспективно-коректного текстурування ............................................................ 164

Page 19: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

19

Додаток В. Результати аналізу продуктивності анізотропної фільтрації з

прискореним визначенням параметрів рівняння еліпса ...................................... 167

Додаток Г. Результати аналізу продуктивності методу текстурування з

виконанням процедурних операцій в об’єктному просторі ................................ 171

Додаток Д. Лістинг вихідного коду програмної реалізації методу текстурування

з виконаням процедурних операцій в об’єктному просторі ............................... 175

Додаток Е. Лістинг вихідного коду фрагментного шейдера для виконання

анізотропної фільтрації текстур з визначенням вагових коефіцієнтів в реальному

часі .......................................................................................................................... 185

Додаток Ж. Лістинг вихідного коду фрагментного шейдера для виконання

анізотропної фільтрації текстур з визначенням вагових з використанням вагових

текстурних карт ..................................................................................................... 187

Додаток З. Лістинг вихідного коду комп’ютерної програми для генерації

текстурних карт вагових коефіцієнтів.................................................................. 190

Додаток К. Лістинг вихідного коду програми для генерації тривимірної карти

відстаней до поверхні ............................................................................................ 191

Додаток Л. Лістинг вихідного коду фрагментного шейдера для виконання

рельєфного текстурування .................................................................................... 192

Додаток М. Список публікацій за темою дисертації ........................................... 194

Додаток Н. Акти впровадження результатів досліджень.................................... 199

Page 20: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

20

ВСТУП

Обґрунтування вибору теми дослідження. Сучасний етап розвитку

комп’ютерних систем характеризується широким використанням комп’ютерної

візуалізації, яка є ефективним засобом підтримки двостороннього каналу взаємодії

між комп’ютером і користувачем. Найвищу реалістичність візуального

відтворення об’єктів і процесів реального світу забезпечує тривимірна

комп’ютерна графіка [1], [2]. Оскільки рівень продуктивності графічних засобів

забезпечує можливість високореалістичного відтворення тривимірних об’єктів, то

вимоги до рівня складності моделей та точності відображення

високодеталізованих поверхонь постійно зростають [3]. Розвиток портативних

обчислювальних пристроїв ставить нові вимоги до рівня обчислювальної

складності алгоритмів побудови графічних зображень та використання

апаратних можливостей, оскільки це питання тісно пов’язане з

енергоефективністю та часом автономної роботи приладів [4].

У комп’ютерних системах високу ефективність візуалізації забезпечують

методи та засоби, що дають змогу оптимально використовувати обчислювальні

ресурси графічної системи для забезпечення високого рівня реалістичності

відтворення графічних зображень [5]. Одним із таких засобів є текстурування,

яке дозволяє врахувати локальні особливості поверхні без надмірного

ускладнення геометрії моделі [6-8]. Процедури накладання текстур успішно

застосовують для відтворення на поверхні об’єктів кольорів, фактури,

нерівностей, імітації відбиття світла та інших візуальних властивостей.

Сьогодні часто застосовують процедурне текстурування, яке має обмежені

галузі застосування, оскільки не забезпечує можливості відтворення локальних

особливостей поверхні довільної форми та розмірів [9]. Альтернативними є

методи, які передбачають накладання на поверхню об’єктів попередньо

сформованих фрагментів зображень [10].

Текстурування є одним із найскладніших етапів процесу кінцевої

візуалізації, оскільки для кожної точки поверхні визначаються координати в

Page 21: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

21

дискретному просторі та значення інтенсивності кольору з урахуванням

освітлення. Сучасні методи текстурування для визначення кольору піксела

враховують значення не одного, а відразу кількох текселів, що значно впливає на

час формування графічних сцен і обмежує можливості реалізації динамічного та

інтерактивного режимів [10].

Для забезпечення високої реалістичності формування графічних сцен

використовують не тільки кольорові текстурні карти, а і допоміжні карти,

наприклад, карти висот, нормалей, відстаней і т.д., що дозволяє реалістично

відтворити рельєфні особливості поверхонь [5-9]. Це суттєво ускладнює

обчислювальний процес і призводить до зниження продуктивності візуалізації.

Таким чином, існуючі методи високоточного накладання текстур

характеризуються суттєвою обчислювальною складністю, що в значній мірі

впливає на час формування графічних зображень. Тому актуальними є питання

підвищення продуктивності методів і засобів текстурування.

Точність визначення кольорів пікселів на етапі текстурування має

найбільший вплив на реалістичність вихідного зображення, підвищення якої

передбачає розробку нових методів і засобів накладання текстур [1-3], [5], [7], [8].

Для існуючих методів накладання текстур характерні візуальні артефакти,

пов’язані з неточностями під час зіставлення дискретних просторів текстури та

екрана [7], [8], [10].

Підвищення реалістичності формування зображень можна досягти при

врахуванні положення спостерігача, що дасть можливість точнішого

відтворення перспективи сцени [8], [10], тому важливими є питання розробки

відповідних методів текстурування.

При формуванні графічних сцен реалізують незалежно окремі процедури

текстурування, такі як визначення текстурних координат, фільтрація текстур,

визначення інтенсивності кольорів, накладання рельєфу тощо [3], [7]. Поєднання

цих процедур нерідко призводить до появи небажаних візуальних ефектів,

оскільки при реалізації одних процедур не враховують особливостей інших, або

Page 22: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

22

до зниження продуктивності, оскільки має місце дублювання обчислень. Тому

важливими є питання розробки комбінованих методів накладання текстур.

Формування високореалістичних графічних зображень у реальному часі та

в інтерактивному режимі висуває жорсткі вимоги до продуктивності

текстурування. При цьому використання простих методів накладання текстур

неприйнятне для формування реалістичних зображень [6], [7], [8].

Тому актуальними є питання підвищення продуктивності та реалістичності

формування графічних сцен, оскільки існуючі методи текстурування не

задовольняють потреби багатьох галузей застосування тривимірної комп’ютерної

графіки. Це передбачає розробку нових методів і засобів текстурування.

Мета та завдання дослідження. Метою роботи є підвищення

продуктивності текстурування за рахунок зменшення складності обчислень, а

також реалістичності за рахунок точнішого визначення кольорів пікселів.

Основними задачами дослідження є:

- провести аналіз існуючих методів і засобів накладання текстур для

визначення напрямків підвищення їх продуктивності та реалістичності;

- запропонувати нові:

- методи підвищення продуктивності перспективно-коректного

текстурування;

- методи підвищення реалістичності та продуктивності анізотропної

фільтрації текстур і рельєфного текстурування;

- розробити програмні компоненти та систему візуалізації на основі

запропонованих методів;

- провести експериментальні дослідження розроблених засобів

текстурування.

Об’єкт дослідження – процес кінцевої візуалізації тривимірних об’єктів

у системах комп’ютерної графіки.

Предмет дослідження – методи та засоби текстурування тривимірних

графічних об’єктів.

Page 23: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

23

Методи дослідження. У процесі досліджень використовувались: теорія

чисел та чисельних методів, теорія диференціально-інтегрального числення,

лінійна алгебра, методи аналітичної геометрії для розробки моделей та методів

текстурування тривимірних об’єктів; комп’ютерне моделювання для аналізу та

перевірки отриманих теоретичних положень.

Наукова новизна отриманих результатів.

1. Уперше запропоновано метод текстурування, особливість якого полягає у

виконанні процедурних операцій в об’єктному просторі та фільтрації в

площині екрана, що не потребує виконання анізотропної фільтрації текстур,

і як наслідок, дає можливість підвищити продуктивність до 30%.

2. Вперше запропоновано на основі гаусівської моделі математичну модель

проекції екранного піксела в текстурний простір, яка враховує зміну форми

піксела при перспективному проектуванні для вагової функції при при

анізотропній фільтрації текстур, що дозволило підвищити точність

визначення кольорів пікселів.

3. Вперше запропоновано комбінований метод виконання рельєфного

текстурування із використанням технології parallax mapping та анізотропної

фільтрації, що дозволяє підвищити реалістичність формування графічних

сцен за рахунок врахування рельєфу поверхні при анізотропній фільтрації.

4. Подальшого розвитку отримав метод Хекберта, у якому, на відміну від

існуючих, використано ітераційні формули для визначення координат

текселів, що дозволило зменшити кількість операцій додавання та множення

для визначення текстурних координат піксела, і, як наслідок, підвищити

продуктивність до 26%.

5. Подальшого розвитку отримав метод анізотропної фільтрації текстур, в

якому при перспективно-коректному текстуруванні використано нові

формули для прискореного обчислення параметрів рівняння еліпса, що

дозволяє підвищити продуктивність анізотропної фільтрації текстур до 18%

за рахунок зменшення кількості арифметичних операцій.

Page 24: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

24

6. Подальшого розвитку отримав метод Донеллі, в якому, на відміну від

базового, при формуванні карти відстаней до поверхні враховуються умови

видимості текселів, що дозволило зменшити кількість ітерацій трасування

видового вектора та підвищити продуктивність до 11%.

Практична цінність отриманих результатів. Практична цінність

одержаних результатів полягає в тому, що на основі отриманих в дисертації

теоретичних положень запропоновано алгоритми та розроблено програмні

засоби текстурування для комп’ютерних систем високореалістичної візуалізації

тривимірних зображень.

Впровадження. Впровадження результатів досліджень підтверджуються

відповідними актами та використовуються на таких підприємствах і

організаціях:

- компанія «ДЦ Інжиніринг» для підвищення продуктивності роботи

графічних станцій;

- ПМВП «Фотоніка Плюс» для підвищення продуктивності та

реалістичності формування зображень у графічних системах;

- кафедра програмного забезпечення Вінницького національного

технічного університету для використання у навчальному процесі при

викладанні курсів «Комп’ютерна графіка», «Мультимедійні системи та

комп’ютерний відеодизайн», «Проектування ігрових застосувань та 3-D

моделювання» у студентів спеціальності 121 – «Інженерія програмного

забезпечення»

Зв’язок роботи з науковими програмами, планами, темами.

Дослідження виконувалися при реалізації НДР «Система авоматизованої

багатофункціональної лазерної поляритмії плівок плазми крові людини для

діагностики патологічних змін молочних залоз» (номер державної реєстрації

0116U004709).

Особистий внесок здобувача. Усі наукові результати, викладені у

дисертаційній роботі, отримані автором особисто. У друкованих працях,

опублікованих у співавторстві, автору належать такі результати: вагова функція

Page 25: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

25

на основі гаусівської моделі піксела [11]; формули для обчислення об’єму

відсікання піксела [12]; аналіз методів фотореалістичного текстурування [13];

метод підвищення реалістичності зафарбовування при просторово-варіативному

розміщенні полігонів [14]; метод анізотропної фільтрації текстур із

використанням спеціальних текстурних карт для визначення вагових

коефіцієнтів текселів [15]; метод анізотропної фільтрації з використанням

вагових функцій [16]; ітераційні формули для визначення текстурних координат

на основі методу Хекберта [17]; метод підвищення продуктивності анізотропної

фільтрації [18]; метод підвищення продуктивності перспективно-коректного

текстурування при використанні анізотропної фільтрації [19]; методи

анізотропної фільтрації з використанням кешування [20]; метод текстурування з

виконанням процедурних операцій в об’єктному просторі [21]; реалізація

конвеєра рендерингу засобами обчислювальних шейдерів [22]; метод виконання

анізотропної фільтрації текстур у поєднанні з технологією parallax mapping [23];

модифікований метод parallax mapping з використанням карти відстаней до

поверхні [24]; метод підвищення продуктивності parallax mapping з

використанням спеціальної МІР-піраміди [25]; аналіз архітектур графічних

акселераторів [26]; аналіз особливостей побудови графічних акселераторів [27];

аналіз методів фільтрації текстур [28]; метод білінійної фільтрації з

використанням кругової моделі піксела [29]; огляд математичних моделей

піксела [30]; аналіз методу анізотропної фільтрації в реальному часі [31]; аналіз

методів анізотропної фільтрації текстур [32]; аналіз методів підвищення

продуктивності анізотропної фільтрації [33]; комп’ютерна програма для

виконання білінійної фільтрації з використанням кругової моделі піксела [34];

комп’ютерна програма для обчислення об’єму відсікання піксела [35];

комп’ютерна програма для проведення експертного оцінювання реалістичності

зображень [36]; комп’ютерна програма для рендерингу зображень з виконанням

процедурних операцій в об’єктному просторі [37], огляд методу перспективно-

коректного текстурування [38], огляд методу моделювання поверхонь на основі

функцій збурення [39].

Page 26: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

26

Апробація матеріалів дисертації. Основні положення дисертації

доповідалися та обговорювалися на міжнародних та всеукраїнських

конференціях: Міжнародна науково-практична конференція «Електронні

інформаційні ресурси: створення, використання, доступ» (Вінниця, 2014, 2017),

VI міжнародна науково-технічна конференція «Моделювання та комп’ютерна

графіка» (Красноармійськ, 2015), Міжнародна науково-практична Інтернет-

конференція «Молодь в технічних науках: дослідження, проблеми, перспективи»

МТН-2015, МТН-2016 (Вінниця, 2015, 2016), Науково-технічна конференція

«Інформатика, математика, автоматика» ІМА-2016 (Суми, 2016), XVI, XVII

міжнародні конференції по математичному моделюванню МКММ_2015,

МКММ_2016 (Херсон, 2015, 2016), Міжнародна конференція з управління та

зв’язку IEEE SIBCON-2017 (Астана, 2017), на пленарному засіданні VII

міжнародної науково-технічної конференції «Моделювання та комп’ютерна

графіка» (Покровськ, 2017).

Публікації. Основні результати досліджень опубліковано в 33 наукових

працях, у тому числі 13 статей у фахових виданнях України, 12 – у виданнях,

що входять до міжнародних наукометричних баз (з них 1 у базі Scopus та IEEE

Xplore), 8 – у матеріалах конференцій, 8 авторських свідоцтв про реєстрацію

авторського права на комп’ютерну програму.

Структура та обсяг дисертації. Дисертація складається зі вступу, п’яти

розділів, висновків, списку літератури, що містить 138 найменувань, 12

додатків. Робота містить 73 ілюстрації, 3 таблиці. Загальний обсяг роботи

складає 202 сторінки, основний зміст викладено на 127 сторінках друкованого

тексту.

Page 27: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

27

1 АНАЛІЗ МЕТОДІВ НАКЛАДАННЯ ТЕКСТУР

У розділі проаналізовано можливості сучасних систем тривимірної

візуалізації реального часу. Розглянуто основні етапи графічного конвеєра та

архітектури графічних акселераторів різних поколінь. Окреслено місце

текстурування в загальному процесі синтезу зображення та його взаємодію з

іншими етапами рендерингу.

Розглянуто класифікацію методів накладання текстур, їх переваги та

недоліки. Проаналізовано сучасні техніки забезпечення високої якості та

продуктивності текстурування. Проведено порівняння існуючих методів

фільтрації текстур. Обґрунтовується необхідність подальших досліджень у

напрямку підвищення ефективності процесу текстурування.

Проаналізовано сучасні методи візуалізації нерівностей на поверхнях

тривимірних об’єктів з використанням рельєфного текстурування.

Проаналізовано переваги та недоліки існуючих методів та визначено напрямки

подальших досліджень для підвищення реалістичності та продуктивності

рельєфного текстурування.

1.1 Основні етапи графічного конвеєру

Розвиток сучасних засобів тривимірної візуалізації передбачає суттєве

підвищення продуктивності та реалістичності формування графічних

зображень. При визначенні пріоритетних напрямків подальших досліджень у

цій галузі важливо врахувати тенденції розвитку засобів реалізації існуючих

методів.

У загальному випадку тривимірну сцену можна задати як набір окремих

груп елементів: тривимірних об'єктів, джерел освітлення, текстурних карт,

камер [3], [7].

У більшості випадків для тривимірного об'єкта задають координати

вершин трикутників у просторі сцени та локальні координати в просторі

текстури [3], [43-47].

Page 28: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

28

Текстурою [1], [2], [5], [7] (або текстурною картою) називають дво- або

тривимірне зображення, що імітує зорове сприйняття людиною властивостей

різних поверхонь. На полігон можна накладати декілька текстур, змішуючи їх

різними способами, для того, щоб моделювати зоровий образ потрібного

матеріалу [10], [47].

У загальному випадку сучасний прискорювач ЗD-графіки повинен мати

блок геометричних перетворень і розрахунку освітлення (геометричний

процесор), блок механізму установки примітивів, блок обробки текстур і блок

обробки буфера кадру [47-50]. Геометричний процесор обробляє примітиви та

формує проекцію тривимірної сцени на площину екрана. Блок розрахунку

освітлення формує дані про параметри освітлення для вершин примітивів. Блок

установки примітивів за допомогою даних, отриманих з буфера глибини,

визначає видимість точки, що відображається (піксела). Видимі пікселі

обробляються в блоці текстур із застосуванням однієї з технологій фільтрації та

накладання текстури. Піксел, оброблений таким чином, знову поміщається в

буфер кадру, замінюючи при цьому попереднє для нього значення, або

виконується усереднення попереднього значення кольору піксела із новим за

певним правилом [48-51].

Швидкість та якість формування тривимірної сцени суттєво залежать від

досконалості інструкцій, переданих додатком графічному прискорювачу. Такі

інструкції входять до спеціалізованих прикладних програмних бібліотек

(Graphics API). Інструкції повинні враховуватися при побудові апаратних

засобів графічного адаптера. Конструкція графічного адаптера повинна

відповідати можливостям API [52].

Сукупність апаратних і програмних засобів обробки тривимірних сцен

утворюють графічний конвеєр [7], кінцевим результатом роботи якого є кадр

зображення, що відображається на екрані монітора. Групу операцій, що

відповідають окремій послідовності взаємопов’язаних дій, прийнято називати

етапом або стадією ЗD-конвеєра [50]. Послідовність виконання операцій

графічного конвеєра не є обов’язковою, а лише загальноприйнятою в сучасних

Page 29: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

29

графічних підсистемах [7]. При конкретній реалізації на програмному та

апаратному рівнях можуть з’являтися деякі специфічні дії (процедури), проте

смисловий зміст блоків не змінюється [50-52]. В загальному вигляді

послідовність етапів конвеєра рендерингу відображена на рисунку 1.1.

Рисунок 1.1 – Етапи графічного конвеєра

На першому етапі конвеєру визначається стан об’єктів, які беруть участь в

сцені, яку необхідно відобразити. Стан об’єктів і їх взаємне розташування

формують логіку подальших дій програми. З кожним об’єктом у сцені пов’язана

геометрична модель, яка відповідає поточному моменту часу. Практично всі

операції на першому етапі виконує центральний процесор. Результати його

роботи пересилаються до графічного чіпсету за допомогою драйвера.

Наступним етапом є декомпозиція (поділ на примітиви) геометричних

моделей. Зовнішній вигляд об’єкта формується за допомогою набору певних

примітивів [7], [51], [52]. Найчастіше в ролі примітиву виступає трикутник [7]

як найпростіша плоска фігура, що однозначно розташовується в тривимірному

просторі. Всі інші елементи складаються з таких трикутників.

Page 30: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

30

Сучасні графічні процесори виконують додаткові операції, наприклад,

розбиття трикутників на складові, тобто поділ вихідних трикутників на більш

дрібні. Деякі графічні чіпсети можуть апаратно обробляти геометричні моделі,

побудовані на основі параметричних поверхонь (механізм RT-Patches) [51-53].

Частина графічних процесорів має можливість перетворювати плоскі

трикутники в тривимірні поверхні шляхом «видавлювання» в третій вимір

(механізм N-Patches) [51-53].

До вершин трикутників застосовують різні ефекти перетворень і

освітленості. Зміст операцій геометричних блоків сучасних графічних чіпсетів

можна динамічно змінювати за допомогою вершинних шейдерів (Vertex

Shaders) [7], [53] – спеціальних програм, що призначені для виконання

процесорами відеокарт. По завершенні операцій трансформації та розрахунку

освітленості параметри вершин нормалізуються і приводяться до

цілочисельного виду.

На наступному етапі відбувається так звана установка примітивів (Triangle

Setup) [50-53]. До цього часу графічний процесор обробляв вершини окремо.

Тепер необхідно «зібрати» вершини в трикутники та перетворити результати в

координати та колір кожного піксела, а також відсікти невидимі ділянки.

У ході формування полігонів визначається видимість об’єктів з позиції

спостерігача. Полігони, що знаходяться ближче до камери, можуть загородити

більш віддалені полігони. Для зберігання інформації про ступінь віддаленості

об’єкта від площини проектування використовують спеціальний буфер глибини

(Z-буфер) [51-53]. Сучасні графічні процесори застосовують різні механізми

відсікання невидимих полігонів на ранніх етапах ЗD-конвеєра для, щоб

вилучити зайві операції. Дані буфера глибини обробляються спеціалізованими

блоками графічного процесора. В результаті, на виході блоку геометричних

перетворень отримують проекцію тривимірної сцени на площину візуалізації.

Координати та вихідний колір видимих пікселів передаються до текстурного

конвеєра (Texture Pipeline) [7], [50-53], який виконує функції вибірки, фільтрації

та накладання текстур.

Page 31: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

31

Графічний чіпсет може мати кілька паралельних текстурних

конвеєрів [52]. У кожному з них відбувається накладання текстур різного типу,

в тому числі і тих, які самі не відображаються (наприклад, карти висот), а

служать для модифікації інших текстур. На цьому етапі в графічних чіпсетах

можливе виконання пікселних шейдерів (Pixel Shaders) [7], [52] – спеціальних

програм, що реалізують заданий метод зафарбовування поверхонь, порядок

змішування текстур, отриманих на виході з кожного конвеєра і т.д.. Тут також

враховується належність піксела до певного трикутника. В цілому зазначені

операції складають суть процесу кінцевої візуалізації (рендерингу).

На заключному етапі роботи ЗD-конвеєра до отриманого в текстурному

блоці плоского зображення застосовують, операції усунення дефектів

(наприклад, часто використовують білінійні, трилінійні, анізотропні та інші

фільтри) [5], [6]. Операції кінцевої обробки можуть застосовувати певні

ефекти [7] (наприклад, туман) до цілком сформованого зображення.

Перераховані етапи в конкретних графічних чіпсетах можуть бути

переставлені, розділені, об’єднані, виконуватися в кілька проходів, проте їх

фізичний зміст залишається незмінним. Технологічно деякі елементи етапів або

етапи цілком можуть бути виконані різними методами, які залежать від

особливостей програми та відеокарти. Залежно від типу відеоприскорювача

частина етапів прораховується програмно, а частина – апаратно [53-54].

Проаналізуємо основні етапи розвитку графічних прискорювачів та їх

покоління.

Апаратне прискорення 3D-графіки на персональних комп’ютерах

почалося з появи апаратних блоків завантаження та фільтрації текстур. Перший

вдалий 3D-акселератор для масового ринку – Voodoo Graphics (1996

рік) [56], [57], був двочіповим рішенням. Один чіп – TexelFX являв собою один

простий текстурний блок, що завантажував чотири текселі та виконував

білінійну інтерполяцію між ними за один такт. Інший чіп – PixelFX був простим

блоком растеризації (ROP), що виводить один піксел за такт. У Voodoo 2 було

додано другий текстурний блок, що дозволило застосовувати кілька більш

Page 32: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

32

складних ефектів, накладаючи до двох текстур на піксел за такт або виконувати

трилінійну фільтрацію. Для інших операцій конвеєру використовувався

центральний процесор [56], [57].

Рисунок 1.2 – Етапи графічного конвеєра відеокарт першого покоління

Для відеокарт другого покоління [57-59] (GeForce/Radeon 7500, 1998 рік)

основною інновацією стала можливість виконання T&L обчислень на GPU.

Крім того, важливим нововведенням стала поява мультитекстурування, що дало

можливість накладання в реальному часі карт висот, карт освітлення та інших.

Рисунок 1.3 – Етапи графічного конвеєра відеокарт другого покоління

Відеокарти третього покоління (GeForce3/Radeon 8500, 2001 рік)

характеризуються появою перших програмованих шейдерних блоків для

виконання T&L обчислень. Крім того, нові текстурні блоки давали можливість

об’ємного текстурування та мультисемплінгу [57-59].

Рисунок 1.4 – Етапи графічного конвеєра відеокарт третього покоління

Page 33: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

33

Четверте покоління [58], [59] (Radeon 9700/GeForce FX, 2002 рік)

відеокарт стало першим повністю програмованим поколінням після появи

програмованих фрагментних процесорів для виконання операцій

зафарбовування та текстурування. З 2004 року в відеокартах GeForce6/X800

з’явилася можливість доступу до текстурної пам’яті з вершинних шейдерів, що

дало можливість використовувати їх у процесі текстурування [58-59].

Рисунок 1.5 – Етапи графічного конвеєра відеокарт четвертого покоління

П’яте [57], [58] (2006 рік), покоління відеокарт побудовані на базі

уніфікованої шейдерної архітектури. Це означає, що усі обчислювальні блоки

графічного процесора «уніфіковані», тобто здатні виконувати будь-який тип

шейдерної програми [7]. Такі графічні процесори складені з масиву

обчислювальних блоків і блоків динамічного планування завантаження для

розподілу виконання шейдерних програм між усіма обчислювальними блоками.

Уніфікована шейдерна архітектура дозволяє більш гнучко

використовувати ресурси графічного процесора. Наприклад, в умовах із

симуляцією важкої геометрії уніфікована шейдерна архітектура може задіяти

всі блоки графічного процесора для обчислення вершин і геометричних

шейдерів. І навпаки, коли геометрія не є складаною, а симулює складні пікселні

ефекти, такі як parallax occlusion mapping, система часток і т. д., всі

обчислювальні блоки можуть бути спрямовані на виконання пікселних

шейдерів. Уніфіковану шейдерну архітектуру підтримують графічні процесори

Page 34: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

34

починаючи з GeForce 8, Radeon R600, S3 Graphics Chrome 400, Intel

GMA X3000 [23], [56], [57].

Рисунок 1.6 – Етапи графічного конвеєра відеокарт п’ятого покоління

З наведеного аналізу можна зробити такі висновки: швидкість та якість

обробки тривимірної сцени суттєво залежать від досконалості як програмного,

так і апаратного забезпечення; сукупність апаратних і програмних засобів

обробки тривимірних сцен утворюють графічний конвеєр; етапи графічного

конвеєру в конкретних реалізаціях можуть бути переставлені, розділені,

об’єднані, виконуватися в декілька проходів, проте їх зміст залишається

незмінним; в процесі еволюції графічні чіпсети перейшли від суто апаратної

реалізації обчислювальних блоків до уніфікованої шейдерної архітектури; в

сучасних графічних прискорювачах обчислювальні блоки проектують так, щоб

кожний з них міг виконати будь-який тип програмованого шейдера [26], [27].

Таким чином, для реалізації нових методів підвищення реалістичності

формування графічних зображень актуальним напрямком досліджень є розробка

нових програмних засобів у вигляді шейдерних програм, що дасть можливість

підвищити точність візуалізації тривимірних моделей без затрат на

модифікацію апаратного забезпечення. Для забезпечення адекватного

підвищення продуктивності комп’ютерної візуалізації актуальними є розробка

програмних шейдерних засобів на основі методів, що характеризуються

нижчою обчислювальною складністю, а також пошук шляхів нарощення

обчислювальної потужності апаратних компонентів графічних систем,

підвищення частот функціонування графічних процесорів та оперативної

Page 35: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

35

пам’яті, збільшення кількості шейдерних і текстурних блоків та скорочення

техпроцесу [27].

1.2 Аналіз методів накладання текстур.

Процес накладання текстури на полігон виконується в три етапи:

встановлення відповідності між екранними координатами точок, що належать

полігона, та координатами у текстурній площині; вибірка текселів за цими

координатами; обчислення кольорів пікселів на основі кольорів відібраних

текселів [60], [61].

Для встановлення відповідності між екранними та текстурними

координатами існують методи, що враховують перспективу та методи, що її не

враховують. Перші називають перспективно-коректними, а другі –

афінними [60], [62].

Афінні методи базуються на лінійній інтерполяції текстурних координат

вздовж рядка растеризації. Це забезпечує високий рівень продуктивності,

оскільки для визначення координат текселя достатньо дві операції додавання на

кожен піксел [60]. Афінне текстурування використовують при растеризації сцен

із ортогональми проекціями. Використання афінного текстурування при

перспективній проекції можливе лише за умови, що полігон розташовано

паралельно екранній площині. При растеризації сцен із перспективною

проекцією, що містять довільно орієнтовані полігони, афінне текстурування

призводить до появи істотних артефактів (рис. 1.7). Тому використання афінних

методів недоцільне при візуалізації графічних сцен, що вимагають високого

ступеня реалістичності вихідного зображення.

Перспективно-коректне текстурування, як правило, виконують за методом

Хекберта [43], [60], [63], в основі якого лежить виконання зворотного

перспективного перетворення [60], [63-65]. У матричному вигляді зворотна

проекція обчислюється за формулою [60]:

Page 36: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

36

A D G E I F H F G D I D H E G

u q v q q x y z B E H x y z C H B I A I C G B G A H

C F I B F C E C D A F A E B D

, (1.1)

де u , v – текстурні координати; x , y – екранні координати; A - I –

коефіцієнти перспективної проекції. Формулу (1.1) можна записати у вигляді

многочленів:

A x B y Cu

G x H y I,

D x E y Fv

G x H y I, (1.2)

Рисунок 1.7 – Артефакти при афінному текстуруванні

З формули (1.2) видно що зворотне перспективне перетворення вимагає

значних обчислювальних витрат, оскільки передбачає виконання «довгих»

операцій. Така обчислювальна складність, часто, неприйнятна для використання

у високопродуктивних графічних системах. Тому на практиці використовують

різні методи апроксимації для вилучення із обчислювального процесу операцій

множення та ділення.

Широко поширеною є квадратична апроксимація [66-68], яка для

розрахунку текстурних координат використовує рівняння

,BxBxB)x(v

,AxAxA)x(u

32

2

1

32

2

1

(1.3)

Page 37: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

37

де А1-А3, В1-В3 – сталі для кожного рядка растеризації (РР) коефіцієнти

апроксимації; 1

1

xx

xxx

m

i , при 1

x , m

x – значення абсциси у початковій та

кінцевій точках РР відповідно.

Для визначення коефіцієнтів 1

A -3

A використовують формули [67]:

0321022101243242 uA,uuuA,uuuA , (1.4)

де 0

u , 1

u і 2

u – значення u -координати в початковій, середній і кінцевій

точках РР.

Коефіцієнти1

B -3

B розраховуються аналогічно, проте замість значень

координати u використовуються відповідні значення координати v .

Застосування квадратичної апроксимації забезпечує достатньо високий

ступінь реалістичності візуалізації перспективи при порівняно нескладних

обчисленнях. Але формули (1.3) і (1.4) можуть бути використані лише при

наявності нормалізованих значень екранних координат, а процедура

нормалізації суттєво підвищує обчислювальну складність.

Кубічна апроксимація [66], [67] використовує залежність

,DxDxDхD)x(v

,СxСxСхС)x(u

43

2

2

3

1

43

2

2

3

1

де С1-С4, D1-D4 – коефіцієнти апроксимації для кожного РР.

Для визначення коефіцієнтів апроксимації потрібно розрахувати точні

значення текстурних координат у чотирьох опорних точках: початковій, двох

внутрішніх та кінцевій, що знаходяться на рівній відстані одна від одної.

Кубічна апроксимація забезпечує вищу реалістичність порівняно з

квадратичною, але призводить до підвищення обчислювальної складності, що

обмежує її застосування у системах комп’ютерної графіки реального часу.

При бі-квадратичній [66], [67] апроксимації використовуються рівняння

Page 38: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

38

,ByBxBxyByBxB)x(v

,AyAxAxyAyAxA)x(u

6543

2

2

2

1

6543

2

2

2

1

де

1 6A A ,

1 6B B – коефіцієнти апроксимації.

Для визначення дванадцяти коефіцієнтів апроксимації необхідно

обрахувати точні значення текстурних координат у шести точках: у вершинах

полігона, заданого трикутником, та у середніх точках його ребер.

Бікубічна апроксимація [66], [67] використовує рівняння

,ByBxBxyByBxBxyByxByBxB)x(v

,AyAxAxyAyAxAxyAyxAyAxA)x(u

10987

2

6

2

5

2

4

2

3

2

2

2

1

10987

2

6

2

5

2

4

2

3

3

2

3

1

де 1 1 0

A A ,1 1 0

B B – коефіцієнти апроксимації.

Для бікубічної апроксимація необхідно мати точні текстурні координати

10 контрольних точок. Також існує потреба в розрахуноку 20 коефіцієнтів

апроксимації. Отриманий результат є досить реалістичним, але обчислювальні

витрати дуже великі, тому така апроксимація має обмежене використання.

Таким чином, існуючі методи апроксимації формул (1.2) не забезпечують

достатньо прийнятного співвідношення між підвищенням продуктивності

обчислень і збереженням точності обчислень. Тому існує потреба у розробці

методів підвищення продуктивності перспективно-коректного текстурування зі

збереженням точності обчислення текстурних координат.

Після встановлення відповідності між екранними та текстурними

координатами проводять вибірку відповідних кольорів із текстурної карти та

обчислюють колір екранного піксела. Значення кольору екранного піксела

обчислюють на основі значень кольорів одного або кількох текселів, шляхом їх

змішування за певними правилами. Цей процес називають фільтрацією

текстури [61-65]. Методи фільтрації текстур поділяють на ізотропні та

анізотропні [68].

До ізотропних методів фільтрації відносять точкову вибірку, білінійну

фільтрацію та трилінійну фільтрацію [13], [28], [29], [68], [69].

Page 39: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

39

Точкова вибірка – це найпростіший метод визначення кольору піксела на

основі текстурного зображення [13], [69]. Із пікселів текстури обирають один,

що геометрично знаходиться найближче до координат, отриманих на етапі

співставлення екранних і текстурних координат.

Перевага такого методу фільтрації – низькі вимоги до апаратного

забезпечення, так як для визначення кольору піксела необхідно лише зчитати з

текстурної пам'яті значення кольору одного текселя.

Оскільки колір піксела визначають декілька текселів, а вибирається тільки

один, то має місце похибка у визначенні інтенсивності кольору. При наближенні

полігона до екрана відзначається збільшення кількості пікселів у відношенні до

кількості текселів, що призведе до артефакту – блочності зображення, а для

зменшених зображень може призвести до появи аліайзингу або муару [13, 60, 68].

При білінійній фільтрації для визначення інтенсивності кольору

використовується коло, яке апроксимується 4 текселями. Значення кольору

піксела обраховується шляхом білінійної інтерполяції значень кольорів цих

текселів [13, 29, 60]. Цей метод фільтрації є точнішим, ніж точкова вибірка, так

як частково приймається до уваги колір одразу кількох текселів і

використовується інтерполяція.

Зображення найкраще виглядає, коли деталізація текстури близька до

роздільності екрана. Якщо вона дуже низька (текстура занадто маленька/об'єкт

дуже близько), формується розмите зображення. Якщо роздільність текстури

дуже висока (текстура занадто велика/об'єкт дуже далеко), відбувається втрата

дрібних деталей. Тому для усунення артефактів при текстуруванні із

використанням білінійної фільтрації використовують технологію MIP-

mapping [70-73]. У текстурній пам’яті зберігають декілька копій текстури із

різною роздільною здатністю. Такі копії називають MIP-рівнями [70-73]. На

етапі рендерингу здійснюють вибірку значень кольорів із того MIP-рівня, який

найбільше підходить в конкретній ситуації.

Page 40: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

40

MIP-текстурування збільшує витрату відеопам'яті лише на третину, адже

кожен наступний рівень у 4 рази менше попереднього. Вони утворюють спадну

геометричну прогресію:

0

1 11

4 3

i

i

При накладенні текстур обчислюється відстань до об'єкта, відповідно

знаходиться номер текстури за формулою [13, 69]:

2lo g

d is tm ip le v e l m ip b ia s

te x e l s i z e r e s o lu t io n

,

де r e s o lu t io n — роздільність віртуальної камери (кількість пікселів, яке буде в

об'єкті розміром в 1 од., розташованому в 1 од. від камери); t e x e l s i z e — розмір

текселя в одиницях тривимірного світу; d is t — відстань до об'єкта в тих же

одиницях; m ip b ia s — число, що дозволяє вибирати детальнішу текстуру, ніж дає

формула. Ця цифра округляється до цілого, і текстура з відповідним номером

(нульова — найдетальніша, перша — вдвічі менша і т. д.) накладається на об'єкт.

Суттєвий недолік білінійної фільтрації полягає в тому, що апроксимація

виконується коректно тільки для полігонів, які розташовані перпендикулярно до

вектора спостереження. Це пояснюється тим, що проекція піксела на полігон,

розташований під кутом до екрана, не має форми кола.

Трилінійну фільтрацію реалізують шляхом виконання білінійної

фільтрації на двох текстурах різної роздільної здатності і в результаті

отримують 2 текселя. Колір піксела, який повинен бути виведений на екран,

визначають у результаті інтерполяції їх кольорів [68-71].

Метод забезпечує вищий рівень реалістичності вихідного зображення

порівняно з білінійною інтерполяцією, проте вимоги до потужності апаратного

забезпечення подвоюються, так як необхідно зчитувати 8 текселів з текстурної

пам'яті. Крім того, трилінійна фільтрація також не враховує кут нахилу полігона

Page 41: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

41

відносно площини відображення, а тому є некоректною для полігонів

непаралельних екранній площині.

Таким чином, ізотропні методи фільтрації текстури забезпечують високу

продуктивність текстурування, проте не враховують положення полігона

відносно площини відображення, що призводить до істотних неточностей при

візуалізації зображення та зниження його реалістичності [74-78].

Анізотропні методи фільтрації текстур [77-79] базуються на тому, що

форма та площа проекції піксела на полігон залежить від положення полігона

відносно площини відображення. Тому анізотропна фільтрація передбачає

обчислення форми проекції окремо для кожного піксела та подальшу вибірку та

усереднення тих текселів, що формують цю проекцію [77-78].

Можна використовувати різноманітні фільтри для апроксимації форми

фігури, утвореної текселями, що відповідають конкретному пікселю. Як

правило, це еліпс, форма якого змінюється залежно від кута, який задає

положення полігона щодо положення спостерігача.

Найбільше поширення отримала анізотропна фільтрація за методом

Еліптичного Середньозваженого Пола Хекберта та Неда Гріна [76-79].

Відповідно до цього методу проекцію піксела на текстурну площину

розглядають як витягнутий еліпс.

Для визначення необхідних для фільтрації текселів складають рівняння

еліпса за алгоритмом [31], [68], [76], [79]:

1. Визначення векторів осей:

( ,   ) , ,x x

d u d vU V

d x d x ( ,   ) , .

y y

d u d vU V

d y d y (1.5)

2. Визначеня коефіцієнтів рівняння: 2 2

2 (

,

) ,

x y

x x y y

A V V

B U V U V (1.6)

2 2

2(

,

.)

x y

x y y x

C U U

F U V U V

Page 42: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

42

3. Кінцеве рівняння: 2 2

,A U B U V C V F (1.7)

де 0 0

,    U u u V v v .

Після складання рівняння еліпса здійснюють вибірку текселів, координати

яких задовольняють його умови, та усереднюють.

Як видно із формул (1.5 - 1.7) обчислення коефіцієнтів рівняння еліпса

вимагає обчислення часткових похідних та виконання арифметичних операцій із

великим часом затримки на кожен піксел. Крім того, визначення текселів, що

задовольняють умовам рівняння, вимагає багато процесорного часу. Така

обчислювальна складність у багатьох випадках є зависокою для візуалізації

зображень у реальному часі. Тому поширені різні методи підвищення

продуктивності анізотропної фільтрації. Слід зазначити, що у більшості методів

анізотропної фільтрації не враховуються фізичні властивості піксела,

наприклад, зміна інтенсивності від центру до зон блюмінгу. Це призводить до

істотних неточностей при визначенні значення кольору. Тому важливою

задачею є модифікація методів анізотропної фільтрації, яка полягає в

використані вагових функцій.

Одним із шляхів підвищення продуктивності анізотропної фільтрації є

використання MIP-текстурування. Це знижує кількість текселів, що формують

еліпс, проте підвищує потреби в оперативній пам’яті на 1/3 і негативно впливає

на якість текстурування [32].

Поширеним є метод підвищення продуктивності фільтрації шляхом

апроксимації форми проекції простішими геометричними фігурами (зазвичай

прямокутником або паралелограмом). Такий метод є досить ефективним з точки

зору продуктивності, проте зниження ступеня ізотропії має негативний вплив на

якість вихідного зображення [32], [33].

Поширеними є методи, що базуються на використанні наборів із

заздалегідь розрахованих форм проекцій піксела на текстуру. При цьому форма

проекції визначається залежно від положення полігона, що текстурується,

Page 43: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

43

відносно площини екрана. Очевидно, що передбачити заздалегідь усі можливі

форми проекції неможливо, тому використання даного методу призводить до

значної похибки при обчисленнях [31-33], [69].

Таким чином, анізотропна фільтрація текстури забезпечує високий рівень

реалістичності, проте не враховує всіх геометричних властивостей піксела та

вимагає значних обчислювальних затрат. Існуючі методи підвищення

продуктивності анізотропної фільтрації текстур призводять до зниження якості

вихідного зображення.

Отже, найвищої якості накладання текстур досягають шляхом

використання перспективно-коректного текстурування та анізотропної фільтрації

текстур. Обидва методи мають низьку продуктивність, а існуючі методи її

підвищення призводять до втрати якості. Тому існує потреба у розробці методів

підвищення продуктивності як перспективно-коректного текстурування, так і

анізотропної фільтрації текстур без втрати точності обчислень. Також існує

потреба у підвищенні реалістичності анізотропної фільтрації текстур шляхом

використання високоточних математичних моделей піксела.

1.3 Аналіз методів рельєфного текстурування

Рельєфне текстурування (Bump mapping) використовують для досягнення

видимості рельєфу на поверхні за допомогою текстур [81], [84].

Для реалістичного відтворення нерівностей на поверхні тривимірних

об’єктів використовують різні методи рельєфного текстурування: normal

mapping [81-83], displacement mapping [81-84], parallax mapping [81], [85], [86].

Normal mapping [81-85] — техніка, що дозволяє змінювати нормаль до

поверхні в заданій точці, використовуючи кольорову карту нормалей, в якій

відхилення зберігаються як значення текстеля, кольорові складові якого , ,r g b

інтерпретуються в осі вектора , ,x y z , на основі якого обчислюється нормаль,

що використовується для розрахунку освітленості піксела [81-83].

Найчастіше використовуються такі типи карт нормалей:

Page 44: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

44

- object-space — координати нормалей задають у просторі об’єкта.

Використовується для об'єктів, які динамічно не змінюються, наприклад,

таких як стіни, двері, зброя тощо;

- tangent-space — координати нормалей задають у дотичному до полігона

просторі. Використовується для можливості динамічної зміни об'єктів,

наприклад, персонажів [81-83].

Normal mapping якісно відтворює нерівності поверхні лише в тих

випадках, коли для освітлення використовують невелику кількість точкових

джерел світла (при цьому бажано щоб поверхні мали сильно виражену

спекулярну компоненту), або при растеризації із врахуванням відображення

навколишнього середовища (EMBM).

Displacement mapping [81-84] – метод рельєфного текстрування, що

полягає в зміні геометрії поверхні об’єкта шляхом виконання додаткової

теселяції за заданою картою висот [81-83], [87], [88].

Перевага методу полягає в тому, що він не потребує виконання

додаткових обчислень при визначенні параметрів освітлення та забезпечує

високий рівень реалістичності. Проте метод потребує складних обчислень для

виконання теселяції.

Parallax mapping, як і Displacement mapping, використовує карти висот.

Візуалізація рельєфних особливостей поверхні здійснюється шляхом зміщення

текстурних координат так, щоб поверхня здавалася об'ємною [81-83]. На відміну

від Displacement mapping, усі розрахунки, необхідні для виконання parallax

mapping, попікселні, а не повершинні. Основна ідея методу полягає в тому, щоб

визначати колір піксела за текстурними координатами в тій точці, де видовий

вектор перетинає поверхню, задану картою висот (рис. 1.8). Для визначення

точки перетину видового вектора з поверхнею виконують трасування вектора

до карти висот у дотичному просторі грані.

Page 45: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

45

Рисунок 1.8 – Трасування видового вектора для визначення зміщення текстурних

координат

Parallax mapping забезпечує найвищу якість відтворення нерівностей на

поверхні тривимірного об’єкта без ускладнення його геометрії. При цьому,

Parallax mapping не залежить від обраної моделі та параметрів освітлення.

Проте, виконання локального трасування променів вимагає значних

обчислювальних затрат. Тому при використанні Parallax mapping у реальному

часі використовують спрощені методи обчислення зміщення текстурних

координат. Найбільш поширеними методами є Parallax mapping із обмеженим

зміщенням і різні варіації ітеративних методів трасування вектора [88], [89].

При використанні Parallax mapping із обмеженням зміщення текстурні

координати визначають за формулою [88]:

1 0/

x y zT T h v v ,

де 1

T - текстурні координати; 0

T - текстурні координати без урахування рельєфу

поверхні; h - висота поверхні в точці 0

T ; v - видовий вектор.

Метод корекції текстурних координат є лише наближенням. Коли вектор

v має гострий кут нахилу до поверхні, то використання розглянутої формули

призводить до значних похибок.

Основною ідеєю всіх ітераційних методів Parallax mapping є розбиття

діапазону значень висот на кілька проміжків (шарів). Тоді наближене значення

точки на поверхні знаходять шляхом простого перебору шарів, починаючи з

самого зовнішнього (рис 1.9) [89].

Page 46: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

46

Рисунок 1.9 – Ітераційні методи parallax mapping

Використання невеликого числа шарів може давати суттєві

похибки (рис. 1.10). Ця похибка пов'язана з тим, що перевірка на перетин

променя проводиться лише в обмеженому числі шарів, які відповідають

дискретному набору висот. Тому, при різких змінах висоти та/або при напрямку

погляду, близькому до дотичного, подібна "шаруватість" поверхні стає явно

видимою.

Рисунок 1.10 – Артефакт, притаманний для ітераційних методів parallax

mapping

Для зменшення кількості артефактів при використанні ітераційних

методів використовують ряд методик, спрямованих на уточнення координат

точки перетину.

Більш точним методом визначення координат точки перетину вектора із

картою висот є обчислення їх за допомогою алгоритму бінарного пошуку [90]

на проміжку між двома найближчими до точки шарами. Обчислювальні витрати

та точність цього методу залежать від обраної відстані між шарами та кроку

Page 47: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

47

бінарного пошуку. Тому в багатьох випадках досягнення оптимального

співвідношення якості та продуктивності є проблематичним.

Альтернативним методом є Parallax Occlusion Mapping [91]. В основі

методу лежить припущення, що на проміжку між двома шарами висота

змінюється лінійно. Тоді координати точки перетину можна знайти шляхом

інтерполяції. Такий метод забезпечує вищу продуктивність порівняно з методом

на основі бінарного пошуку, але точність залежить від того, як різко змінюється

рельєф поверхні. При різкій зміні рельєфу, за рахунок зростання похибки в

обчисленнях на вихідному зображенні з’являються істотні артефакти.

Для покращення реалістичності ітераційних методів Parallax Mapping

використовують ітераційні методи з уточненням кроку. Ітераційні методи з

уточненням кроку передбачають, що відстань між шарами не є рівною, і не

визначається до початку трасування променя, а обчислюється після кожної

ітерації трасування таким чином, щоб вилучити з аналізу якомога більший

відрізок, на якому гарантовано немає перетину видового вектора з поверхнею.

Досить поширеним є метод Cone Step Mapping [92]. На кожній точці

поверхні будують максимального широкий конус таким чином, щоб він не

перетинав поверхню. Кожен такий конус можна задати тангенсом половини

кута розвороту. При цьому необхідно дотримуватись вимоги, щоб тангенс не

перевищував одиницю. Тангенси півкутів зберігають у додатковій текстурній

карті.

У середині такого конуса не може бути точок поверхні, а тому точка

перетину видового вектора із поверхнею знаходиться на межі одного з конусів.

Тому для трасування променя беруть конус у початковій точці та знаходять

перетин променя з конусом. У точці перетину променя з конусом вибирають

новий конус. Дію повторюють циклічно. В результаті отримують послідовність

точок, що гарантовано сходяться в точці перетину видового вектора з

поверхнею.

Такий метод забезпечує високу точність визначення координат, проте

вимагає додаткової текстурної пам’яті на збереження тангенсів для кожного

Page 48: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

48

конуса, а циклічне обчислення точок перетину вектора із конусами вимагає

істотних обчислювальних витрат.

Альтернативою Cone Step Mapping є ітеративний метод Вільяма

Донеллі [93] що використовує карти відстаней до поверхні. Він базується на

використанні додаткової тривимірної текстури – карти відстаней до поверхні.

Ця текстура будується на основі карти висот, де в якості третього виміру

використовується висота. При цьому як значення для кожного текселя

використовується найближча відстань до поверхні, що задана картою висот [93].

В якості величини чергового кроку вздовж променя в напрямку поверхні

вибирають значення з допоміжної текстури. Оскільки цей параметр є

найближчою відстанню до поверхні, то при збільшенні довжини вектора при

трасуванні на величину, що рівна значенню текселя, не відбудеться перетину з

поверхнею (рис. 1.11).

Рисунок 1.11 - Parallax mapping з використанням додаткової тривимірної карти

Метод Доннеллі гарантує високу точність визначення точки перетину

видового променя з поверхнею, проте на поверхнях із складним рельєфом і

різкими перепадами висот продуктивність може знизитись, оскільки

збільшується кількість необхідних ітерацій трасування.

Отже, найбільш оптимального співвідношення якості вихідного

зображення та продуктивності досягають при використанні ітеративних методів

Parallax mapping з уточненням кроку. Проте використання цих методів вимагає

додаткової текстурної пам’яті та може призводити до зниження продуктивності

при текстуруванні полігонів із складним рельєфом. Крім того, технологія

Page 49: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

49

Parallax mapping вносить зміни в процес визначення текстурних координат, а

тому виконується на етапі фільтрації текстур. Сучасні методи фільтрації текстур

не враховують особливостей Parallax mapping, а тому їх поєднання часто

призводить до некоректного відображення поверхонь.

Тому актуальними є розробка методів підвищення продуктивності Parallax

mapping та поєднання рельєфного текстурування з анізотропною фільтрацією

текстур.

1.4. Основні критерії продуктивності та реалістичності систем

кінцевої візуалізації

До основних технічних характеристик систем рендерингу відносять

продуктивність і реалістичність відтворення графічних об’єктів.

Продуктивність визначається відношенням об'єму виконаної роботи до часу, за

який вона була здійснена [94].

3D-зображення отримують шляхом математичних обчислень за

алгоритмами, які імітують фізичні процеси реального життя. Оскільки вони є

наближеними моделями, то зображення не завжди адекватні реальному об'єкту,

що його бачить спостерігач. Фотореалістична графіка [95] – це сукупність

методів і засобів створення реалістичних зображень засобами ЕОМ, які

спостерігач не може відрізнити від зображень, отриманих у результаті

фотографічного процесу, або ототожнює з ними.

Продуктивність формування тривимірних зображень визначаться як

методами й алгоритмами, так і архітектурними рішеннями для їх реалізації. При

цьому необхідно враховувати, що реалістичність 3D-графіки суттєво залежить

від продуктивності графічних систем. При їх високій потужності можна

використовувати складніші методи текстурування, моделі освітлення та

зафарбовування, які дозволяють формувати об’єкти, зображення яких точніше

відтворює візуальні властивості реальних. Це, насамперед, методи та моделі, які

враховують перспективні перетворення, локальний рельєф поверхні з

нелінійною зміною інтенсивності кольору. При використанні простих моделей

Page 50: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

50

задовільної якості можна досягти за рахунок збільшення щільності

тріангуляційної мережі. Однак при цьому суттєво зростає обсяг підготовчих

операцій, що підвищує навантаження на блоки геометричних операцій.

Продуктивність систем кінцевої візуалізації визначається кількістю

пікселів, які формує система за одиницю часу. У сучасних системах візуалізації

реального часу цей параметр залежать від кількості задіяних шейдерних блоків

та обчислювальної складності методів визначення текстурних координат,

фільтрації текстур та розрахунку освітлення.

Для оцінювання продуктивності всього графічного конвеєра

використовують параметр, який визначає кількість кадрів у секунду (fps) [96],

що їх формує графічна система. Зрозуміло, що продуктивність рендерингу в

значній мірі визначає значення цього параметра, оскільки рендеринг уважається

найбільш трудомістким етапом (по різним оцінках від 60 до 80%) [96].

Час формування графічних сцен визначається роздільною здатністю

координатного простору, в якому формується графічне зображення. Роздільна

здатність екранів еволюційно зростає. Найпоширенішими сьогодні екранами є

плоскі панелі розміром від 21 до 23-26 дюймів з роздільною здатністю близько 2-

2,5 тисяч точок по горизонталі і граничною фізичною частотою оновлення

інформації 60-240 Гц [97]. Флагманські моделі моніторів характеризуються

роздільною здатністю понад 3-5 тисяч точок по горизонталі та розмірами від 30

до 34-37 дюймів [97]. Зазначені параметри можуть бути використані для

визнчення граничного часу формування точки зображення, що дорівнює

86 7 0 1 0 с.

Оцінимо рівень продуктивності, який необхідний для підтримки

реалістичної графіки в сучасних графічних додатках. Ділянка поверхні,

обмежена середньостатистичним трикутником [98], [99], включає 100 точок і

для блискучих поверхонь має коефіцієнт спекулярності – 256. Використаємо

трикутник A B C з розмірами сторін 8A B

x , 8A B

y , 9A C

x , 1 2A C

y ,

1 6B C

x , 4B C

y . Для коректної оцінки продуктивності різних методів

Page 51: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

51

комп’ютерної графіки слід проводити вимірювання частоти зміни кадрів на

сценах із різною кількістю трикутників та їх варіативним положенням відносно

користувача. Тому доцільно використовувати таку кількість трикутників щоб їх

сумарна площа була рівною 60%, 80%, 100%, 120% від площі екрана (з

урахуванням можливості перекриття одними трикутниками інших у реальних

сценах).

Порівнювати розроблені методи рендерингу доцільно з методом, який

забезпечує найбільш точне відтворення графічного зображення для базового

напрямку. Візуальну відмінність між двома зображеннями оцінюють за

нормованою середньоквадратичною похибкою (NMSE) [99], яка розраховується

за формулою

2

1

2

1

2

1

2

21

2

21

2

21

)()()(

)()()()()()(

iBiGiR

iBiBiGiGiRiR

NMSE

i

i ,

де i – кількість пікселів, з яких складається об’єкт; 1 1 1( ) , ( ) , ( )R i G i B i ,

2 2 2( ) , ( ) , ( )R i G i B i – інтенсивності кольору червоної, зеленої та синьої складових

кольору і-го піксела зображень відповідно еталонного та сформованого об’єкта.

У комп’ютерній графіці при тестуванні зображень використовують такі

оцінки [90]: якщо значення NMSE не більше за 0,0001, то візуально зображення

не відрізняються одне від одного; якщо NMSE знаходиться в діапазоні

0 , 0 0 0 1 0 , 0 0 0 2 5 , то два зображення мають незначні відмінності; якщо NMSE

знаходиться в діапазоні 001,000025,0 , то зображення мають візуально помітні

відмінності; якщо NMSE більша за 001,0 , то два зображення суттєво

відрізняються одне від одного.

Оскільки реалістичність є суб’єктивним критерієм і залежить від

індивідуальних властивостей зорового сприйняття графічної інформації

конкретним спостерігачем, кількісних методів її оцінки не існує. Тому при

порівнянні зображень сформованих різними методами комп’ютерної графіки

Page 52: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

52

використовують методи, основані на аналізі експертних оцінок [100].

Ефективним методом порівняння реалістичності зображень є аналіз рангових

оцінок групи експертів із подальшим обчисленням коефіцієнта множинної

рангової кореляції з метою виявлення узгодженості думок експертів. У якості

такого коефіцієнта часто використовують коефіцієнт конкордації Кендала [101],

який розраховується за формулою

2 3

1 2 SW

m n n

,

де m – число експертів у групі; n – кількість зображень, що підлягають

порівнянню; S – сума квадратів різниць рангів (відхилень від середнього), що

визначається за формулою

2

2

1 1

1 1

n m

i jn m

i j

i j

i j

R

S Rn

,

де m – число експертів у групі; n – кількість зображень, що підлягають

порівнянню; R – матриця рангових оцінок. При 0 .6 0 .8W узгодженість

думок експертів вважають сильною, а при 0 .2 0 .4W – слабкою.

Таким чином, при оцінці продуктивності запропонованих методів як

основний параметр слід використовати частоту зміни кадрів (fps). Для оцінки

реалістичності методів підвищення продуктивності слід виконувати порівняння

зображення, сформованого запропонованими методами, з еталонним з

використанням NMSE . Для оцінки методів підвищення реалістичності слід

використовувати методи експертних оцінок із подальшим обчисленням

коефіцієнта множинної рангової кореляції з метою виявлення узгодженості

думок експертів

Висновки

Page 53: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

53

На даному етапі розвитку комп’ютерної графіки системи кінцевої

візуалізації потребують підвищення як реалістичності, так і продуктивності. В

архітектурі графічних акселераторів має місце тенденція до переходу від

апаратної до програмної реалізації конвеєра рендерингу. Найпоширенішою

сьогодні є уніфікована шейдера архітектура, відповідно до якої обчислювальні

блоки проектують так, щоб будь-який з них міг виконати довільний тип

програмованого шейдера. Тому, для підвищення реалістичності та

продуктивності формування графічних зображень актуальним напрямком

досліджень є розробка нових програмних засобів у вигляді шейдерних програм,

що дасть можливість ефективного підвищення якості візуалізації тривимірних

моделей без затрат на модифікацію апаратного забезпечення.

Найвищу реалістичність накладання текстур забезпечують методи

перспективно-коректного текстурвання та анізотропної фільтрації текстур.

Проте вони потребують високих обчислювальних затрат і не забезпечують

прийнятного рівня реалістичності для низки випадків. Тому існує потреба в

розробці нових методів підвищення рівня їх реалістичності та продуктивності.

Найбільш ефективними методами відтворення нерівностей поверхонь є

методи рельєфного текстурвання. Найпоширенішим із них є parallax mapping,

який забезпечує найбільш оптимальне співвідношення продуктивності

візуалізації та реалістичності вихідного зображення. Проте метод вимагає

значних обчислювальних затрат на трасування векторів і може призводити до

появи артефактів при поєднанні з анізотропної фільтрацією текстур. Тому існує

потреба у розробці методів підвищення продуктивності та реалістичності

рельєфного текстурування.

Для досягнення мети дисертації на основі проведеного аналізу необхідно

розв`язати такі задачі:

- провести аналіз існуючих методів і засобів накладання текстур для

визначення напрямків підвищення їх продуктивності та реалістичності;

- запропонувати нові:

Page 54: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

54

- методи підвищення продуктивності перспективно-коректного

текстурування;

- методи підвищення продуктивності анізотропної фільтрації текстур;

- методи підвищення реалістичності анізотропної фільтрації текстур;

- методи підвищення продуктивності рельєфного текстурування;

- методи підвищення реалістичності рельєфного текстурування;

- розробити програмні компоненти та систему візуалізації на основі

запропонованих методів.

Результати досліджень цього розділу наведено в публікаціях: [26], [27],

[28], [29], [30], [31], [32], [33], [38], [39].

Page 55: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

55

2 МЕТОДИ ПІДВИЩЕННЯ РЕАЛІСТИЧНОСТІ НАКЛАДАННЯ

ТЕКСТУР

У розділі запропоновано метод анізотропної фільтрації з використання

вагових функцій на основі гаусівської моделі піксела з урахуванням форми

проекції піксела в текстурній площині, що дало можливість підвищити точність

визначення кольорів для підвищення реалістичності формування графічних

зображень.

Запропоновано нові формули визначення об’єму відсікання тіла обертання

кривої Гаусса для використання у процесі виконання анізотропної фільтрації

текстур із субтексельною точністю.

Пропоновано модифікацію методу Фонга для зафарбовування полігонів

при текстуруванні з використанням анізотропної фільтрації текстур, що

враховує деформації полігонів при перспективній проекції для точнішого

визначення інтенсивності кольорів.

2.1 Математична модель проекції піксела для задач анізотропної

фільтрації

Для визначення кольору піксела використовують усереднення кольору

всіх тексеів, проекція яких відповідає даному пікселю [6], [28], [31], [59], [79].

При анізотропної фільтрації проекція піксела на поверхню текстури

розглядається як витягнутий еліпс [31], [59], [68], [79].

З метою підвищення реалістичності відтворення тривимірних сцен при

використанні анізотропної фільтрації важливо врахувати геометричні

властивості екранного піксела.

Найбільшого поширення отримала математична модель піксела, у якій

піксел розглядається як квадрат зі стороною, що дорівнює одиниці [12], [29],

[30], [49], причому центр квадрата збігається із центром піксела. Квадратна

модель піксела є найпростішою з обчислювальної точки зору й апаратної

реалізації, однак не забезпечує достатнього рівня реалістичності, оскільки в

Page 56: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

56

більшості пристроїв відображення розподілення інтенсивності піксела не має

форми квадрата.

Більш точною є кругова модель піксела, однак в ній не враховується

нелінійний характер зміни інтенсивності залежно від відстані до центу [11],

[16], [30].

Коли до якості згладжування зображеннь висуваються підвищені вимоги,

то використовується конусна модель піксела. Конусна модель не є

максимально-коректною, оскільки передбачає лінійну зміну вагових

коефіцієнтів, а тому є наближеною, що не може забезпечити максимальну

реалістичність [15], [29].

Серед усіх моделей піксела найбільш адекватною є гаусівська модель [11],

[16], [30], [102], згідно з якою вагові коефіцієнти змінюється нелінійно від

центру піксела (рис. 2.1).

Рисунок 2.1 – Графік зміни інтенсивності кольору для гаусівської моделі піксела

При анізотропній фільтрації важливо використати цю властивість, яка

передбачає усереднення кольору пікселів усередині сліду відповідно до вагових

функцій. В існуючих засобах комп’ютерної графіки найчастіше використовують

вагові коефіцієнти, що визначаються відстанню текселя до цетру еліпса. При

цьому не враховується форма еліпса, а тому точність визначення кольорів є

недостатньо високою [11], [77].

Page 57: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

57

Тому актуальною задачею є підвищення реалістичності формування

зображень за рахунок використання при анізотропній фільтрації вагових

функцій на основі гаусівської моделі піксела, що відображають зміну кольору

піксела, який проектують на текстурну площину.

Використаємо модель розподілу інтенсивності піксела, коли щільність

інтенсивності розподілена за нормальним законом розподілу [102]:

2 21

, e x p2 2

2 2

x yp x y , (2.1)

де максимум інтенсивності припадає на центр піксела, який приймається за

центр системи координат. Зауважимо, що вибрана функція щільності є

поверхнею обертання та задовольняє умові нормування – об’єм, що знаходиться

між ,p x y і площиною x O y дорівнює одиниці. Є можливість впливати на

властивості моделі, змінюючи параметр . Так, наприклад, вибираючи 0 .2

отримаємо, що приблизно 99% всього об’єму припадає на прямокутник

, : 0 .5 0 .5 , 0 .5 0 .5x y x y , на якому локалізований піксел.

На рис. 2.2 зображено форму піксела.

Рисунок 2.2 – Форма піксела

Відповідно до гаусівської моделі піксел у просторі екрана має форму тіла

обертання кривої Гаусса з діаметром основи, рівним 1, та об’ємом, рівним

1 [30]. При проекції у простір тексури його форма змінюється вздовж вектору

нахилу полігона, при цьому основа фігури набуває форми еліпса (рис. 2.3).

Page 58: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

58

Значення кольору піксела на екрані визначається значеннями кольорів усіх

текселів, що потрапляють у ділянку текстури, обмежену еліпсом. При цьому

слід врахувати, що інтенсивність кольру текселів знижується по мірі віддалення

від центру еліпсу до зон блюмінгу пропорційно висоті фігури в даній точці.

а) б)

Рисунок 2.3 – Форма піксела в просторі екрана (а) та його проекції в просторі

текстури (б) відповідно до гаусівської моделі піксела

Для еліпса, осі якого паралельні осям координат, висоту фігури в заданій

точці, можна визначити за формулою

2 2

1 0 0

2 221 2

1 2

1,

2

u u v v

W u v e . (2.2)

Дисперсії нормального закону розподілу виберемо з умов:

1

6

L ,

2

6

d,

де L і d – довжини осей еліпса.

Для довільно орієнтованого еліпса необхідно врахувати його кут нахилу.

Поворот на кут 2 2

визначається новими координатами

1c o s s inu u v ,

1s i n c o sv u v . Таким чином, функція (2.2)

для довільно орієнтованого еліпса матиме вигляд:

Page 59: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

59

2 2

c o s s in s in c o s0 0 0 0

2 2

1 2

1 2

1

1 2,

2

u u v v u u v v

W u v e . (2.3)

Оскільки осі еліпса задані векторами U і V , то довжини осей

відповідають модулям цих векторів:

2 2

2 2

,

.

x y

x y

L U U U

d V V V

Підставимо у наведені формули значення сум квадратів координат

векторів із формул (1.6):

2 2

2 2

,

.

x y

x y

L U U C

d V V A

(2.4)

Кут нахилу еліпса визначимо за формулою

2 2

c o s ( )x x x

x y

U U U

U LU U

, (2.5)

або за формулою

2 2

c o s ( )y y y

x y

V V V

V dV V

.

Очевидно, що такі обчислення досить складні, а тому потребують

спрощень з метою підвищення продуктивності. На практиці, при обчисленнях у

реальному часі криву Гаусса часто апроксимують таким виразом [103]:

2( ) 1

2

K

nf x x

K. (2.6)

Графік функції (2.6) набуває форми, що відповідає гаусівській моделі

піксела при 8n , 8K (рис. 2.6):

Page 60: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

60

8 8

2 28 1( ) 1 1

2 8 2f x x x .

Рисунок 2.6 – Графік апроксимованої кривої Гаусса

Таким чином, функція (2.3) для спрощеної кривої Гаусса має вигляд:

82 2

0 0 0 0

2 2

c o s s in s in c o s1, 1 .

2

u u v v u u v v

W u vL d

Оскільки значення 0

u u і 0

v v також обчислюються для рівняння (1.7) та

відповідно рівні U і V , то має місце спрощення:

82 2

2 2

c o s s in c o s s in1, 1

2

U V V U

W u vL d

. (2.7)

Із формули (2.7) видно, що існує необхідність в обчисленні квадратів

довжин осей еліпса. Для визначення довжини осей еліпса за формулами (2.4)

необхідно обчислити квадратний корінь многочлена. Визначимо довжину осі в

степені 2 з меншою складністю обчислень:

2 22 2

, L C C d A A . (2.8)

Page 61: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

61

Таким чином, вагу кожного текселя, що визначає колір екранного піксела,

можна визначити за формулою (2.7). Необхідними коефіцієнтами для формули

(2.7) є кут нахилу еліпса відносно осей координат і квадрати довжин його осей.

Ці коефіцієнти обчислюються за формулами (2.5) і (2.8) відповідно.

Графік вагових коефіцієнтів для текселів, що формують еліпс з

діагоналями 3 та 6, і кутом нахилу 30o зображено на рисунку 2.7.

Рисунок 2.7 – Графік вагових коефіцієнтів для текселів

Формула для визначення кольору піксела з використанням вагової функції

має вигляд:

1

1

, ,

,

n

i i i i

i

n

i i

i

I u v W u v

I

W u v

.

Застосування вагової функції на основі запропонованої математичної

моделі дало можливість визначати кольори пікселів з вищою точністю, що

підвищило реалістичності формування зображень та зниженню кількості

артефактів. Практична реалізація анізотропної фільтрації з використанням

запропонованої вагової функції детально розглядається в розділі 5. Результати

порівняльного аналізу продуктивності наведено в додатку А.

Page 62: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

62

2.2 Математична модель піксела для задач субтексельної анізотропної

фільтрації текстур

У тих випадках, коли до якості текстурування висуваються високі вимоги,

використовують анізотропну фільтрацію текстур із субтексельною точністю.

Нехай маємо відрізок прямої, що розташована на відстані d від центра

піксела ― точки 0 , 0O . Позначимо за V d об’єм тіла, обмеженого

поверхнею (2.1), площиною x O y і площиною, що знаходиться на відстані d від

осі O z . Тоді ваговий коефіцієнт текселя W визначається за формулою:

0 .5W F d V V d . (2.9)

Для визначення вагового коефіцієнта текселя необхідно обчислювати

значення функції V d . Зображення частини поверхні обертання (2.1), що має

о’бєм V d , при 0 .2 , 0 .1d подано, на рис. 2.8.

Рисунок 2.8 – Частина поверхні обертання, що має об’єм V d

Враховуючи, що поверхня (2.1) є поверхнею обертання, зорієнтуємо

систему координат так, щоб пряма мала рівняння x d (була паралельна осі O y

і знаходилася від неї на відстані d ), тоді

,

d

V d d y p x y d x . (2.10)

Враховуючи вигляд функції ,p x y , відокремимо змінні:

Page 63: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

63

2 2 2

2 2 21 1 12 2 21

2 2 2

d d

y x x

V d e d y e d x e d x . (2.11)

Останню формулу позначимо , 0 ,N d , що відповідає нормальному закону

розподілу з математичним сподіванням 0a і середнім квадратичним

відхиленням .

Обчислення V d за формулою (2.11) є доволі громіздким.

Апроксимуємо функцію , 0 ,N d многочленом n

P d невисокого порядку 2n і

3n , для реалізації якого використовують тільки операції додавання та

множення. Враховуючи симетрію функції , 0 ,N d відносно точки 0 , 0 .5 і

вибране значення , виконаємо апроксимацію за методом найменших квадратів

з адаптивними вузлами на проміжку 0 ;d c , де c ― деяка константа.

Так, наприклад, якщо 0 .2 , то на проміжку 0 ; 0 .5d , отримаємо при 2n

2

20 .5 2 .1 5 1 2 .3 5 8V d P d d d , (2.12)

а при 3n

2 3

30 .4 9 6 2 .2 8 8 3 .0 7 4 0 .9 5 6 .V d P d d d d (2.13)

Графіки функцій 2

P d , 3

P d , , 0 , 0 . 2N d зображено на рис. 2.9.

Рисунок 2.9 – Графіки функції , 0 , 0 .2V d N d , 2P d ,

3P d

Page 64: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

64

Позначимо за 2 , 0 , 0 .2 2d N d P d , 3 , 0 , 0 .2 3d N d P d ― абсолютні

похибки апроксимації на відрізку 0 ; 0 .5d . Як видно з рис. 2.10, вони не

перевищують 37 1 0 і 3

5 1 0 , відповідно.

Рисунок 2.10 – Графіки абсолютних похибок 2 d і 3 d

Запишемо вираз для розрахунку 2

P d у такому вигляді:

20 .5 ( 2 .1 5 1 2 .3 5 8 )P d d d

(2.14)

На рис 2.11. зображено структурну схему блока для розрахунку 2

P d .

Рисунок 2.11 – Структура обчислювального блоку для розрахунку V d

поліномом 2P d

Значення відстані d заноситься в регістр 2R G . Через мультиплексор M S

на вхід блока множення передамо значення 2,358. Добуток 2 .3 5 8 d з виходу

Page 65: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

65

блока множення занесемо в 1R G . На виході комбінаційного суматора 1K S m

отримуємо значення ( 2 .1 5 1 2 .3 5 8 )d , яке передається через мультиплексор M S

на вхід блока множення. Суматор 2K S m використовують для додавання до

добутку, отриманого на виході блока множення, значення 0,5.

Розглянемо кусково-лінійну апроксимацію функції , 0 ,V d N d , 0 .2 ,

0 , 0 . 5d . При цьому поставимо умову використання невеликої кількості

проміжків розбиття відрізка 0 , 0 .5 при забезпеченні достатньо високої точності

апроксимації.

Для виконання зазначених вимог проведемо чисельне моделювання,

змінюючи кількість сегментів розбиття, їх довжину та використовуючи на

кожному такому сегменті лінійну функцію, що є елементом найкращого

чебишевського наближення (в сенсі мінімізації абсолютної величини

відхилення). Чисельно обчислюючи коефіцієнти апроксимуючих функцій з

точністю до 31 0 , отримано такий результат:

1

0 .5 0 6 1 .7 9 , 0 0 .1 6 5 ;

0 .6 3 6 1 .0 0 8 , 0 .1 6 5 0 .3 0 5 ;

0 .8 5 3 0 .2 9 5 , 0 .3 0 5 0 .5 .

d d

V d P d d d

d d (2.15)

Як видно з рис. 2.12, графік абсолютної похибки 1 , 0 , 1d N d P d не

перевищує 0.01, що відповідає 1% від максимального рівня інтенсивності. При

використанні 256 рівнів інтенсивності похибка не перевищуватиме 2,6 рівня.

Таку похибку людське око при нормальних умовах розрізнити не в змозі.

Рисунок 2.12 – Графік абсолютної похибки 1 d

Page 66: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

66

Подамо коефіцієнти лінійних функцій як бінарні, зберігаючи розряди

до 82 :

1

0 .1 0 0 0 0 0 1 1 .1 1 0 0 1 , 0 0 .1 6 5 ;

0 .1 0 1 0 0 1 1 , 0 .1 6 5 0 .3 0 5 ;

0 .1 1 0 1 1 0 1 1 0 .0 1 0 0 1 , 0 .3 0 5 0 .5 .

b b

b b b

b b

d d

V d P d d d

d d

(2.16)

Графік абсолютної похибки 1 , 0 ,2 1d N d P db (рис. 2.13) не

перевищує 0.01, що відповідає 1% максимальної інтенсивності.

Таким чином, подання V d у формі (2.16) не погіршує наближення

1P d , проте має перевагу у швидкості обчислення.

Рисунок 2.13 - Графік абсолютної похибки 2

1 d

На рисунку 2.14 зображено структурну схему блока для розрахунку V d

поліномом 1

P d .

Рисунок 2.14 – Структура обчислювального блоку для розрахунку 1

P d

Page 67: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

67

Використання гаусівської моделі піксела для визначення об’єму перетину

текселя при анізотропній фільтрації текстур дало можливість максимально

точно обчислювати кольори пікселів і, як наслідок, підвищити реалістичність

вихідного зображення.

2.3 Метод підвищення реалістичності зафарбовування при

просторово-варіативному розміщенні полігонів

Однією з основних процедур візуалізації тривимірних сцен є процедура

зафарбовування полігонів. У сучасних засобах тривимірної графіки

використовується модель зафарбовування Фонга [1], [2], [46], [55], [103-106].

Для побудови моделі з монотонно-спадною функцією освітленості потрібно,

щоб для цієї моделі було задано поле одиничних векторів нормалі. Найчастіше

для методу Фонга начення векторів нормалі розраховується використовуючи

білінійну інтерполяцію. Таким чином, в методі Фонга інтерполюються значення

векторів нормалей. Для реалізації методу Фонга потрібно мати значення

векторів нормалей для кожної вершини [103-107].

Процедуру зафарбовування проводять в площині екрана. Тобто,

зафарбовують не полігон у просторі, а його проекцію на екран [64], [104], [107].

В такому випадку не враховується ефект перспективи. Геометричні

характеристики (площа, розміри граней) проекції полігона відрізняються від

оригінальних, що призводить до неточностей при визначенні інтенсивності

кольорів пікселів (рис. 2.15).

Рисунок 2.15 – Невідповідність кольору для відрізків в площині екрана та у

просторі

Page 68: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

68

Це явище зумовлено тим, що при перспективній проекції полігона

виконуються нелінійні перетворення, а при зафарбовуванні за Фонгом вектори

інтерполюються лінійно. Тому існуючі методи зафарбовування не забезпечують

коректне відтворення кольорів при зафарбовуванні поверхонь тривимірних

графічних об’єктів.

У задачах текстурування подібні артефакти, як правило, усуваються за

рахунок використання анізотропної фільтрації. При анізотропної фільтрації

зворотна проекція піксела на полігон розглядається як витягнутий

еліпс (рис. 2.16). Для визначення кольору екранного піксела використовують

усереднення кольору всіх текселів, проекція яких відповідає даному пікселю.

Рисунок 2.16 – Проекція піксела на полігон

Аналогічний метод може бути використано і в задачах зафарбовування.

Для коректного визначення кольору піксела на екрані необхідно визначити

кольори усіх пікселів полігона в просторі, що формують зворотну проекцію

екранного піксела, за методом Фонга та усереднити отримані значення.

Такий підхід вимагає визначення вектору нормалі у довільній точці

поверхні. Традиційно розрахунок векторів усередині полігона передбачає

виконання двох етапів:

1) інтерполяція векторів уздовж ребер полігона;

2) інтерполяція векторів усередині полігона уздовж рядка растеризації з

використанням значень нормалей, розрахованих на першому етапі [98].

Page 69: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

69

Значення вектора нормалі в середині відрізка, що інтерполюється,

визначають за формулою [107], [108]:

1 2

1 2

1 22 ( 1 c o s )

N NN , (2.17)

де 12

– кут між векторами нормалей 1

N

і

2N

.

Це достатньо складна процедура, що виключає можливість оперативного

визначення векторів у довільній точці полігона.

Однозначно визначити вектор нормалі у довільній точці полігона,

заданого трикутником, по значенням векторів у його вершинах можна за

формулою [98]:

1 2

1 21 2 3 1 1 2 2 1 2

1 2

2 3 3 1

33 3 2 3 3 1

2 3 3 1

с , с , с с 2 c 1 с 2 c 1 4 c c

2 1

с 2 c 1 4 c c 4 c c .

2 1 2 1

N NN N N

N N

N N N NN

N N N N

(2.18)

де 1 2 3, ,N N N – значення векторів у вершинах полігона, 321

с,с,с - барицентричні

координати точки. Прискорене визначення барицентричних координат

виконують за формулами [107]:

22 2 2

1 2 0 2 0 12 2

1 1 2 0 2

a a a

c a a τ4

,

22 2 2

2 3 0 3 0 22 2

2 2 3 0 3

a a a

c a a τ ,4

22 2 2

3 1 0 1 0 32 2

3 3 2 0 1

a a a

c a a τ ,4

Page 70: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

70

де a01-a32 – відповідні розміри сторін трикутників, утворених з’єднанням вершин

полігона та точки (рис. 2.17).

Рисунок 2.17 – Розбиття вихідного трикутника на складові

Крім того, важливо врахувати можливий випадок, коли частина проекції

піксела в площину полігона виходить за межі полігона. В такому випадку слід

враховувати лише ті пікселі, що знаходяться на ділянці поверхні обмеженій

полігоном. Тому необхідно визначити умову належності піксела полігона.

Оскільки сума барицентричних координат для точки рівна одиниці, то для

точок, що лежать за межами полігона, виконується рівність:

1 2 3с с с 1 (2.19)

Для усунення можливості виходу частини еліпса за межі полігона умовно

збільшимо робочу ділянку поверхні. Для цього кожну із сторін трикутника

збільшимо вдвічі в напрямку руху годинникової стрілки (або проти

годинникової стрілки) (рис. 2.17). В подальшому усі дії в площині полігона

будемо виконувати над новим збільшеним трикутником.

Page 71: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

71

Рисунок 2.17 – Розширення площі інтерполяції векторів

Визначимо координати вершин нового трикутника. Координати точки 'B

знайдемо за формулою:

' ' ', , .

x x x x y y y y z z z zB B B A B B B A B B B A (2.20)

У векторному вигляді формула (2.20) має вигляд:

'B B A B .

Координати точок ' ',A C знайдемо за формулами:

'

'

,

.

A A C A

C C B C

Визначимо вектори нормалей у вершинах нового трикутника.

З формули (2.17) отримаємо:

1 2

1 2 2 1 2 11 2

1 2

2 ( 1 c o s )

2 ( 1 c o s )

N NN N N N .

Page 72: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

72

Таким чином, вектори нормалей у вершинах збільшеного трикутника

обчилюються за формулами:

'

'2 (1 c o s ) 2 (1 c o s 2 ) ,A A C A

C AC AN N N N

'

'2 (1 c o s ) 2 (1 c o s 2 ) ,B B C B

A BA BN N N N (2.21)

'

'2 (1 c o s ) 2 (1 c o s 2 ) ,C C C C

B CB CN N N N

де , , ,A B CN N N – вектори нормалей у вершинах оригінального трикутника;

' ' ', , ,A B CN N N – вектори нормалей у вершинах збільшеного трикутника.

Оскільки косинус – симетрична функція, важливо щоб кут між векторами

нормалей збільшеного трикутника не перевищував 90о. В іншому випадку

оригінальний полігон потребує виконання додаткової теселяції.

Таким чином, для визначення значення кольору піксела та екрані,

необхідно: виконати перетворення полігона в просторі об'єкта за

формулами (2.20); визначити вектори нормалей у вершинах нового полігона за

формулами (2.21); виконати зворотну проекцію піксела в площину полігона; для

всіх пікселів, що формують проекцію крім тих що задовольняють

нерівність (2.19), визначають колір за методом Фонга. При цьому вектори

нормалей у довільній точці визначають за формулою (2.18).

Висновки

Запропоновано метод анізотропної фільтрації з використання вагових

функцій на основі гаусівської моделі піксела з урахуванням форми проекції

піксела в текстурній площині, що дає можливість підвищити точність

визначення кольорів пікселів.

Запропоновано нові формули визначення об’єму відсікання тіла обертання

кривої Гаусса для використання у процесі виконання анізотропної фільтрації

текстур із субтексельною точністю при визначенні вагоаих коефіцієнтів

текселів, що дає можливість підвищити реалістичність.

Page 73: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

73

Запропоновано модифікація методу Фонга для зафарбовування полігонів

при текстуруванні з використанням анізотропної фільтрації текстур, що

враховує зміну форми полігонів при перспективній проекції для точнішого

визначення інтенсивності кольорів.

Результати досліджень цього розділу наведено в публікаціях: [11], [12],

[13], [14], [16]

Page 74: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

74

3 МЕТОДИ ПІДВИЩЕННЯ ПРОДУКТИВНОСТІ НАКЛАДАННЯ

ТЕКСТУР

У розділі пропонується використання спеціальних вагових текстурних

карт при виконанні анізотропної фільтрації текстур. Це дозволило здійснювати

вибірку вагових коефіцієнтів із текстурної пам’яті замість обчислення їх в

реальному часі з метою вилучення з обчислювального процесу складних

розрахунків та підвищення продуктивності процесу текстурування.

Запропоновано модифікацію методу Хекберта для перспективно-

коректного текстурування, в якій використано ітераційні формули для

визначення координат текселів, що дозволило зменшити кількість операцій

додавання та множення і, як наслідок, підвищити продуктивність формування

графічних сцен. На основі нових аналітичних залежностей запропоновано

методи розпаралелення процесу визначення текстурних координат.

Запропоновано нові ітераційні формули визначення похідних при

обчисленні положення проекції піксела на текстурну площину за методом

Хекберта, що дозволило зменшити кількість арифметичних операцій в

обчислювальному процесі з метою підвищення продуктивності.

. Запропоновано метод текстурування в об’єктному просторі, який не

потребує виконання просторово-інваріантної фільтрації, що забезпечує вищу

продуктивність порівняно з методами текстурування в площині екрана з

використанням анізотропної фільтрації.

3.1 Метод підвищення продуктивності визначення вагових

коефіцієнтів для задач анізотропної фільтрації

Сучасні графічні акселератори відзначаються наявністю значних об’ємів

доступної оперативної пам’яті, що дозволяє оперувати великою кількістю

текстурних карт. Тому існує тенденція до підвищення продуктивності різних

обчислень шляхом використання спеціальних текстурних карт із заздалегідь

Page 75: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

75

розрахованими проміжними значеннями (карти висот, карти нормалей, карти

відстаней, тощо).

Як видно з формул (2.3) і (2.7), великий обсяг обчислень ускладнює

використання вагових функцій на основі гаусівської моделі піксела у складних

графічних сценах при підвищених вимогах до швидкодії текстурування.

Підвищення продуктивності анізотропної фільтрації можна досягти за рахунок

використання спеціальних текстурних карт для визначення вагових

коефіцієнтів.

Карта вагових коефіцієнтів – кольорова текстурна карта, значення кожного

з текселів якої лежить y межах від 0 до 1 і відповідає значенню деякої вагової

функції ,W u v для відповідних координат.

Рисунок 3.1 – Зразок карти вагових коефіцієнтів із роздільною здатністю

128х128 при використанні гаусівської моделі піксела

Для визначення текстурних координат точки на карті вагових коефіцієнтів

пропонується виконувати білінійну інтерполяцію координат. При цьому, як осі

координат слід використовувати осі еліпса.

Щоб обчислити координати точки в системі координат осей еліпса

визначимо відстань від точки до відповідних осей. Відстань від заданої точки до

прямої визначають за формулою:

Page 76: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

76

2 1 0 2 1 0 2 1 2 1

2 2

2 1 2 1

y y x x x y x y y xd

y y x x

, (3.1)

де 1 1 2 2

( , ) , ( , )x y x y – координати двох точок на прямій, а 0 0

,x y - координати

заданої точки. Як координати 1 1,x y для обох осей використаємо координати

0 0,u v центру еліпса (далі M ). Значення координат другої точки для кожної з

осей обчислимо шляхом додавання до 1 1,x y векторів осей, отриманих при

складанні рівняння еліпса, за формулами (1.5):

2 2 1 1 1 1, , , ,

x y x yUx y x y U U x U y U ,

2 2 1 1 1 1, , , ,

x y x yVx y x y V V x V y V ,

де 2 2

,U

x y ,2 2

,V

x y – координати точок, що лежать на осях еліпса.

Різниці між координатами точок рівні відповідним координатам векторів:

2 1 yy y U ,

2 1 xx x U - для однієї осі, та

2 1 yy y V ,

2 1 xx x V - для іншої.

Підставимо отримані значення та значення із формул (1.6) у формулу (3.1)

для отриманя абсолютних координат точки в систем координат осей еліпса.

Визначимо x і y за формулами, враховуючи, що значення координат можуть

бути від’ємними:

0 0 0 0 0 0( ) ( )

y x x y y x yV u V v V u v V v u u V v V V u V v

x

A A

,

0 0 0 0 0 0( ) ( )

y x x y y x yU u U v U u v U v u u U v U U u U v

y

C C

,

де 0 0

, u v – координати центру еліпса, , u v – координати поточного текселя.

Для визначення відносних координат точки в системі координат осей

еліпса слід поділити абсолютні координати на довжини відповідних півосей

еліпса. Довжини півосей рівні модулям векторів U і V :

Page 77: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

77

2 2

y xU U U C , 2 2

y xV V V A

Таким чином, відносні координати точки в системі координат осей еліпса

обчислюються за формулами:

0 0

1

y x yx u V v V V u V v

A C

,

0 0

1

y x yy u U v U U u U v

A C

. (3.2)

Як видно із формул (3.2) значення 1

S

A C

спільне для x і y , тому

його можна обчислити один раз. Сучасні процесори дозволяють обчислювати

наближене значення оберненого квадратного кореня з високою продуктивністю

та без виконання операції ділення. Для процесорів, які не мають такої

можливості, швидке обчислення оберненого квадратного кореня можливе з

використанням метода Ньютона [109].

Нехай 0 0x y x

K u V v V , а 0 0y y x

K u U v U . Ці операнди формул (3.2)

не залежать від координат поточного текселя, тому вони можуть бути

обраховані один раз для усього еліпса на етапі визначення коефіцієнтів рівняння

еліпса. Тоді формули (3.2) мають вигляд:

x yx K V u V v S ,

y yy K U u U v S . (3.3)

Абсолютні координати точки на карті вагових коефіцієнтів визначаються

за формулою:

( 1)

2

w xu ,

( 1)

2

h yv , (3.4)

де w , h - ширина та висота текстурної карти.

У випадках, коли карта вагових коефіцієнтів будується на основі функції

симетричної відносно обох осей, таких як крива Гаусса, необхідний для

зберігання текстури розмір пам’яті можна скоротити в чотири рази. Для цього

Page 78: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

78

достатньо використовувати лише верхній правий сектор текстурної карти. У

такому випадку формули (3.2) матимуть вигляд:

x yx K V u V v S ,

y yy K U u U v S .

Тому формули (3.4) спрощуються до такого вигляду:

u x w , v y h

У випадках, коли до об’єм необхідної пам’яті є пріоритетним, а вагова

функція задана тілом обертання, можна скористатись одновимірною

текстурою (рис. 3.2).

Рисунок 3.2 – Збільшений зразок одновимірної карти вагових коефіцієнтів для

симетричних функцій із шириною 64 на прикладі гаусівської моделі піксела

Особливістю функцій, заданих тілом обертання, є те, що значення функції в

усіх точках, що лежать на однаковій відстані від осі обертання, є однаковим

незалежно від координат точок. Виходячи з цього, координати точки в

одновимірній текстурі можна обчислити за формулою:

2 2

x y y yx K V u V v S K U u U v S .

Або у векторній формі:

x P ,

де P – вектор, координати якого рівні координатам точки, визначеним за

формулами (3.3).

У такому випадку формули (3.4) матимуть вигляд:

u x w , 0v .

Таким чином, за допомогою отриманих формул можна визначити

координати текселя на карті вагових коефіцієнтів. Це дає змогу зчитувати вагові

Page 79: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

79

коефіцієнти з спеціальної текстурної карти та вилучити їх обчислення із

обчислювального процесу.

У ході тестування виявлено, що використання вагової карти замість

обчислення складних формул забезпечує підвищення продуктивності до 25%

разів. Детально процес тестування описано в розділі 5. Результати

порівняльного аналізу продуктивності наведено в додатку А.

3.2 Метод підвищення продуктивності перспективно-коректного

текстурування

Знаходження текстурних координат є трудомісткою процедурою, оскільки

вимагає попікселного виконання складних операцій за формулою (1.2).

Якщо ii 1

x x 1 , то

1 i 1 i 1

i 1

i i

A ( x 1 ) B y Cu

G ( x 1 ) H y I

1 i 1 i 1 1

i i

( A x B y C ) A.

( G x H y I ) G

Для u0 формула має вигляд:

1 0 1 1 1 0 1 1

0

0 0

0.

0

i i

i i

A (x ) B y C A x B y Cu

G (x ) H y I G x H y I

Для u1:

1 0 1 1 1 0 1 1 1

1

0 0

( 1).

( 1)

i i

i i

A x B y C A x A B y Cu

G x H y I G x G H y I

Для u2:

1 0 1 1 1 0 1 1 1

2

0 0

( 2 ) 2.

( 2 ) 2

i i

i i

A x B y C A x A B y Cu

D x E y F D x D E y F

Таким чином, для un формула має вигляд:

1 0 1 1 1 0 1 1 1

0 0

( ).

( )

i i

n

i i

A x n B y C A x A n B y Cu

D x n E y F D x D n E y F

(3.5)

Аналогічну формулу можна записати й для vn.

01 1 1 1

0

.i

n

i

D x E y E n Fv

G x H y H n I

Page 80: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

80

З наведених формул видно, що для розрахунку кожного текселя

необхідно виконати 2 операції ділення, 8 операцій додавання та 8 операцій

множення.

Як видно із формул (3.5), для кожного n значення виразів 1101

CyBxAi

і 0 i

G x H y I залишаються незмінними, а тому можуть бути обраховані

один раз для кожного рядка растеризації за формулами:

1 0 1 1 1

0

,

.

t i

b i

u A x A n B y C

u G x H y I

де ut та ub константні частини чисельника та знаменника формули (3.5)

відповідно.

Отже, un може бути розраховано за формулою:

1.

t

n

b

u A nu

u G n (3.6)

Таким чином, при визначенні коодрдинат усіх текселів змінні u1t і u1b є

константними, а їх значення достатньо обрахувати один раз. Аналогічним

чином можна обчислити і vn.

Таке спрощення дає можливість зменшити кількість операцій додавання

та множення до 4 відповідно.

Виходячи з отриманих математичних залежностей можна запропонувати

алгоритм паралельного підрахунку координат текселів: для кожного рядка

растеризації спочатку обчислюються параметри ut і ub, потім паралельно

обчислюються значення чисельника і знаменника за формулами

nAuwtn 1 ,

n bv u G n .

Після цього виконується операція ділення для визначення координати:

n

n

n

wu

v.

Послідовність виконання операцій алгоритму зображено на рисунку 3.3.

Page 81: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

81

Рисунок 3.3 – Паралельний підрахунок координат текселів

Оскільки для кожного наступного х, n збільшується на 1, мають місце такі

залежності:

11Aww

nn , 1n nv v G . (3.7)

Відповідно до формул (3.7), можна запропонувати такий послідовний

алгоритм обчислення текстурних координат: wn і vn для кожного х обчислюються

шляхом додавання до wn-1 і vn-1, визначених для х-1, А1 і D відповідно.

Послідовність виконання операцій алгоритму зображено на рисунку 3.4.

Рисунок 3.4 – Послідовний підрахунок координат текселів

Page 82: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

82

Визначення текстурних координат описаним алгоритмом також можна

прискорити за допомогою паралельних обчислень. Однією із можливих

реалізацією розпаралелення обчислень є паралельна растеризація декількох

рядків одночасно. Проте такий порядок не буде достатньо продуктивний у

випадках, коли кількість пікселів на рядок перевищує кількість рядків. Тому

доцільно використовувати засоби паралельних обчислень у межах одного рядка.

Розглянемо можливість паралельного обчислення кординанат текселів для

пікселів, що знаходяться на парних і непарних позиціях у рядку

растеризації (рис. 3.5).

Рисунок 3.5 – Паралельне обчислення координат текселів для двох потоків на

один рядок растеризації

Якщо 11

Awwnn

, а Dvvnn 1

, то:

1 1 1 1( )

n nw w A A ,

1 1( )

n nv v G G .

Таким чином, паралельно обчислення текстурних координат пікселів на

парних і непарних позиціях можливе за формулами:

2 12

n nw w A ,

22

n nv v G . (3.8)

При цьому, координати текселів для перших двох пікселів визначаються

за формулою (3.7).

Виходячи з формул (3.7) і (3.8) можна встановити однозначну залежність,

що дозволяє проводити паралельну растеризацію рядка в довільну кількість

потоків з використанням формул:

Page 83: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

83

1n n kw w k A ,

n n kv v k G ,

де k – кількість паралельних потоків.

Також можливе паралельне обчислення координат у два потоки шляхом

одночасної растеризації рядка у двох напрямках (рис. 3.6): справа наліво за

формулою (3.7), а зліва направо за формулою:

1 1n nw w A

, 1n nv v G .

Рисунок 3.6 – Паралельне обчислення координат у два потоки із зустрічним

напрямком растеризації

Запропонована модифікація методу Хекберта, в якій використано

ітераційні формули для визначення координат текселів, дозволяє зменшити

кількість операцій додавання та множення і, як наслідок, підвищити

продуктивність в 0,26 раза.

Запропоновані методи розпаралелення процесу визначення текстурних

координат, що базується на отриманих аналітичних залежностях, дозволяють

підвищити швидкість процесу текстурування. Результати порівняльного аналізу

продуктивності наведено в додатку Б.

3.3 Метод підвищення продуктивності анізотропної фільтрації ри

перспективно-коректному текстуруванні

Для визначення необхідних для фільтрації текселів складають рівняння

еліпса за формулами (1.5), (1.6), (1.7). Похідні для формул (1.5) знаходять за

формулами:

( 1)( 1, ) ( , )

( 1)

u A x B y C A x B y Cu x y u x y

x G x H y I G x H y I,

Page 84: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

84

( 1)

( 1, ) ( , )( 1)

v D x E y F D x E y Fv x y u x y

x G x H y I G x H y I

,

( 1)( , 1) ( , )

( 1)

u A x B y C A x B y Cu x y u x y

y G x H y I G x H y I

, (3.9)

( 1)( , 1) ( , )

( 1)

v D x E y F D x E y Fv x y u x y

y G x H y I G x H y I

.

Як видно з формул (1.2), (1.5), (1.6), (1.7) і (3.9), обчислення похідних для

визначення коефіцієнтів рівняння еліпса є трудомісткою процедурою. На кожен

піксел у рядку растеризації необхідно виконати 10 операцій множення, 10

операцій додавання, 4 операції ділення та 1 операцію віднімання. Тому існує

потреба у розробці методів, які б мали меншу обчислювальну складність.

Знайдемо похідні для формул (1.5), підставивши значенні із формул (3.9):

( 1)

( 1) ( ) ( )

A x B y C A x B y C A I C G A H y B G y

G x H y I G x H y I I G x H y G I G x H y (3.10)

( 1)

( 1) ( ) ( )

D x E y F D x E y F D I F G D H y E G y

G x H y I G x H y I I G x H y G I G x H y

(3.11)

( 1)

( 1) ( ) ( )

A x B y C A x B y C B I C H A H x B G x

G x H y I G x H y I I G x H y G I G x H y

(3.12)

( 1)

( 1) ( ) ( )

D x E y F D x E y F E I F H D H x E G x

G x H y I G x H y I I G x H y G I G x H y

(3.13)

Як видно із формул (3.10) і (3.11) чисельники не залежать від значення x ,

а тому можуть бути обчислені один раз для кожного y . Крім того, функції

A I C G A H y B G y і D I F G D H y E G y змінюються лінійно, а тому можуть бути

обчислені ітераційно. Визначимо приріст чисельників для формул (3.10) і (3.11)

за методом кінцевих різниць [110]:

1 1M A I C G A H y B G y A I C G A H y B G y A H B G , (3.14)

1 1N D I F G D H y E G y D I F G D H y E G y D H E G . (3.15)

Із формул (3.14) і (3.15) видно, що прирости функцій не залежать від

координат точок, а лише від коефіцієнтів перетворення полігона, а тому можуть

Page 85: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

85

бути обчислені один раз на полігон. Таким чином, чисельники ( n u m ) формул

(3.10) і (3.11) для найменшого y обчислюються за формулами:

n u m A I C G A H y B G y ,

n u m D I F G D H y E G y ,

а для кожного наступного за формулами:

1i in u m n u m M ,

1i in u m n u m N .

Таким чином, кількість арифметичних операцій на один піксел

зменшується.

Із формул (3.12) і (3.13) видно що чисельники не залежать від значення y

і можуть були обчислені один раз на рядок растеризації. Визначимо приріст

чисельників для формул (3.12) і (3.13) за методом кінцевих різниць:

1 1O B I C H A H x B G x B I C H A H x B G x B G A H , (3.16)

( 1) ( 1)P E I F H D H x E G x E I F H D H x E G x E G D H . (317)

Отже, чисельники для формул (3.16) і (3.17) для першого рядка

растеризації обчислюються за формулами:

n u m B I C H A H x B G x ,

n u m E I F H D H x E G x ,

а для кожного наступного за формулами:

1i in u m n u m O ,

1i in u m n u m P .

Відповідно до формул (3.16) і (3.17) прирости чисельників для формул

(3.12) і (3.13) також не залежать від координат точок, а лише від коефіцієнтів

перетворення полігона, а тому можуть бути обчислені один раз на полігон.

Page 86: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

86

Оскільки чисельники формул (3.12) і (3.13) залежать від значення x , при

горизонтальному порядку растеризації інкрементація чисельника функцій

повинна виконуватися для кожного піксела в рядку растеризації. Кожен

наступний рядок растеризації містить точки, x - координати яких рівні x -

координатам точок в попередньому рядку растеризації. Тому значення

чисельників формул (3.12) і (3.13) доцільно розраховувати для всіх y полігона

до початку його растеризації з метою вилучення повторних розрахунків.

Обчислення знаменника ( d e n o m ) для формул (3.10) – (3.13) також можна

спростити. Позначимо вирази G I як J , I H y як K , а G I H y J H y як L .

Тоді знаменник формул (3.10) – (3.13) має такий вигляд:

( ) ( ) ( ) ( )d e n o m I G x H y G I G x H y K G x L G x . (3.18)

Підставивши отримані аналітичні залежності у формули (3.9),

отримуємо, що

1

( ) ( )

n u m Mu

x K G x L G x, 1

( ) ( )

n u m Nv

x K G x L G x

,

1

( ) ( )

n u m Ou

y K G x L G x

, 1

( ) ( )

n u m Pv

y K G x L G x

. (3.19)

Відповідно до формул (3.19) для обчислення часткових похідних

достатньо 6 операцій додавання, 2 операції множення та 4 операції ділення на

кожен піксел. Порівняно з базовим методом, кількість операцій додавання

зменшено на 4, операцій множення зменшено на 8, а операцій віднімання

зменшено на 1.

Запропонований метод дозволяє знизити обчислювальну складність

визначення параметрів рівняння еліпса при обчисленні положення проекції

піксела на текстурну площину за методом Хекберта, що дозволяє зменшити

кількість операцій додавання та множення шляхом використання ітераційних

формул і, як наслідок, підвищити продуктивність до 18%. Детальніше

результати порівняльного аналізу продуктивності наведено в додатку В.

Page 87: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

87

3.4 Метод підвищення продуктивності текстурування з виконанням

процедурних операцій в об’єктному просторі

Існують два основні підходи до зафарбовування поверхні, на яку

накладають текстуру: растеризація в площині екрана та растеризація в

текстурній площині [60].

Растеризація в площині текстури є більш простою з обчислювальної точки

зору, ніж в площині екрана, так як інверсія проекції не виконується. Але

рівномірна вибірка в текстурній площині не гарантує рівномірну вибірку в

площині екрана, за винятком афінних (лінійних) відображень. Для неафінних

відображень текстур растеризація в текстурній площині призводить до появи

артефакту, який полягає в тому, що деякі пікселі не растеризуються (отвори).

Можливі випадки і накладання пікселів [60].

Растеризація в площині екрана, яку іноді називають оберненою

проекцією, є найбільш поширеним методом. Для кожного піксела в площині

екрана, знаходять відповідний тексель, колір якого відтворюють на екрані.

Такий підхід не призводить до появи отворів або накладань в площині екрана.

Обидва методи базуються на обчисленнях з двовимірними координатами,

оскільки екран і текстура є двовимірними площинами. При цьому не

враховується реальне положення полігона в просторі. Проекція полігона на

екран має відмінні від реального полігона пропорції сторін, оскільки не

забезпечується подібність. Як наслідок, обчислення текстурних координат для

обчислення кольору виконується з суттєвою похибкою, що призводить до появи

артефактів на вихідному зображенні. Для усунення артефактів, при

текстуруванні в площині екрана, виконують фільтрацію текстур [68].

Найпоширенішим методом фільтрації є анізотропна фільтрація [65-79].

При анізотропної фільтрації проекція піксела на поверхню текстури

розглядається як витягнутий еліпс. Для того, щоб коректно обчислити колір

піксела, необхідно врахувати кольори всіх текселів, які належать ділянці

текстури, обмеженої еліпсом. Обчислення форми та положення еліпса,

Page 88: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

88

визначення приналежності текселів еліпсу та їх подальше усереднення –

достатньо складна процедура та вимагає значних обчислювальних витрат. Площа

еліпса залежить від відстані полігона до площини проекції та його нахилу

відносно координатних осей. Як правило, еліпси частково накладаються один на

одного, що призводить до неодноразових обчислень над одними і тими ж

текселями. Тому на практиці часто використовують спрощення, які призводять

до втрати якості. Крім того, існуючі методи розпаралелення анізотропної

фільтрації не забезпечують збереження якості зображення [13], [27], [33].

Для виконання текстурування з урахуванням глибини простору необхідно

виконувати текстурування в просторі об’єкта з подальшою проекцією кожного

текселя на екранну площину, враховуючи, при цьому, його z -компоненту.

Оскільки полігон знаходиться в тривимірному дискретному просторі, а

текселі в двовимірному дискретному просторі, встановити відповідність

текселів текстури пікселам, що входять у площину довільно-орієнтованого

полігона досить складно, оскільки координати точок полігона, відповідних

точкам текстури, мають нецілочисельні координати, а їх визначення методом

інтерполяції є некоректним і призводить до артефактів, характерних для

растеризації в площині екрана (рис. 3.7)

Рисунок 3.7 – Артефакти при растеризації в площині текстури та в просторі

об’єкта

Page 89: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

89

Для коректного врахування всіх точок, що формують площу полігона

текстурування, слід проводити у такій послідовності:

1. Виконати поворот полігона відносно координатних осей таким чином, щоб

він зайняв положення паралельне площині проекції.

2. Визначити кольори пікселів полігона шляхом співставлення їх координат із

текстурними.

3. Виконати зворотній поворот кожного піксела окремо для визначення його

координат для початкового положення полігона.

4. Виконати проекцію піксела на екран і відтворити його колір на екрані.

Для того щоб повернути полігон паралельно екрану (площині x y )

необхідно здійснити два послідовних повороти навколо координатних осей x і

y [65], [112-113]. Щоб визначити кути повороту знайдемо нормальний вектор

площини полігона A B C за трьома точками:

( ) ( ) ( ) ( )

( ) ( ) ( ) ( )

( ) ( ) ( ) ( )

N B A C A B A C A A B A B A C A C B C B Cxy y z z z z y y y z z y y z z y y z z y

N B A C A B A C A A B A B A C A C B C B Cyz z x x x x z z z x x z x z z x x z z x

N B A C A B A C A A B A B A C A C B C B Czx x y y y y x x x y y x x y y x x y y x

,

де , ,x y zN N N – координати вектора нормалі N , , , , , , , , ,x y z x y z x y z

A A A B B B C C C -

координати вершин полігона A B C . Для визначення кута повороту навколо осі

x спроектуємо вектор N на площину y z і обчислимо довжину проекції:

2 2

y zd N N ,

де d – довжина проекції нормального вектора N на площину y z ; ,y zN N –

координати вектора N . Синус і косинус кута знайдемо за формулами

c o szN

d, s i n

yN

d. (3.20)

Page 90: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

90

Після повороту полігона навколо осі x , z -компонента одиничного

вектора буде рівна d , x -компонента рівна xN , а довжина нормального вектора

рівна 1. Таким чином синус і косинус кута для повороту навколо осі y

рівні відповідно [65], [114], [115]:

c o s d , s i n xN . (3.21)

Повне перетворення повороту можна подати у матричному виді:

[ ]x y x y

M T R R T R , (3.22)

де M – матриця координат полігона, повернутого паралельно x y ; T –

матриця початкових координат полігона, xR – матриця повороту відносно осі

x ; yR – матриця повороту відносно осі y . [ ]

x yR – матриця послідовного

повороту навколо осі x і y відповідно.

Усі перетворення виконуються в однорідних координатах [65], [112],

[113]. Для переведення координат в однорідні кожній точці задається четверта

компонента w , рівна 1. Для переходу від однорідних координат до звичайних

тривимірних після виконання перетворень, знаходять частку від ділення кожної

з компонент ( , ,x y z ) на компоненту w .

Для реалізації перетворення повороту навколо осей x і y

використовують такі матриці [64]:

1 0 0 0

0 c o s s in 0,

0 s in c o s 0

0 0 0 1

xR

c o s ( ) 0 s in ( ) 0 c o s 0 s in 0

0 1 0 0 0 1 0 0.

s in ( ) 0 c o s ( ) 0 s in 0 c o s 0

0 0 0 1 0 0 0 1

yR

Page 91: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

91

Визначимо перетворення [ ]x y

R :

1 0 0 0 c o s 0 s in 0 c o s 0 s in 0

0 c o s s in 0 0 1 0 0 s in s in c o s c o s s in 0[ ] .

0 s in c o s 0 s in 0 c o s 0 c o s s in s in c o s c o s 0

0 0 0 1 0 0 0 1 0 0 0 1

x yR

Підставимо отримане значення у формулу (3.22) :

' ' ' '

' ' ' '

' ' ' '

c o s 0 s in 0

s in s in c o s c o s s in 0

c o s s in s in c o s c o s 0

0 0 0 1

x y z w x y z w

x y z w x y z w

x y z w x y z w

A A A A A A A A

B B B B B B B B

C C C C C C C C

(3.23)

c o s c o s s in s in s in c o s s in s in c o s s in c o s c o s

c o s c o s s in s in s in c o s s in s in c o s s in c o s c o s

c o s c o s s in s in s in c o s s in s in

x z y y z x y z w

x z y y z x y z w

x z y y z x

A A A A A A A A A

B B B B B B B B B

C C C C C C

,

c o s s in c o s c o sy z w

C C C

де ' ' ' ' ' ' ' ' ' ' ' ', , , , , , , , , ,

x y z w x y z w x y z wA A A A B B B B C C C C – однорідні координати вершин

полігона A B C після виконання повороту; , , , , , , , , , , ,x y z w x y z w x y z w

A A A A B B B B C C C C –

однорідні координати вершин полігона A B C до виконання повороту. Таким

чином, поворот точок, що лежать в одній довільній площині, у деяку іншу

площину, паралельну площині x y , можна виконати за формулами:

'

'

'

c o s c o s s in s in s in,

c o s s in,

s in c o s s in c o s c o s,

x z yx

w

y zy

w

x y zz

w

(3.24)

де ' ' ', ,x y z – координати точки після повороту в тривимірному просторі;

, , ,x y z w – однорідні координати точки до повороту.

Як видно із формули (3.23), w -компонента точки у результаті

перетворення повороту не змінюється. Оскільки перетворення повороту

виконуються до перспективних перетворень, а початкове значення w -

Page 92: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

92

компоненти при переході від тривимірних координат до однорідних

встановлюють рівним 1, то формули (3.24) можна спростити:

'

'

'

c o s c o s s in s in s inc o s c o s s in s in s in ,

1

c o s s inc o s s in ,

1

s in c o s s in c o s c o ss in c o s s in c o s c o s ,

1

x z yx x z y

y zy y z

x y zz x y z

(3.25)

Із формул (3.20) і (3.21) отримаємо такі залежності:

c o sc o s c o s ,

c o s

z

z

z

NN

d Ndd

d

s ins in c o s .

c o s

z

y

y

NN

d Ndd

d

(3.26)

Таким чином, складність визначення z - компоненти при повороті можна

знизити на одну операцію множення:

's in c o s s in ,zz x y z N

де zN – z - компонента вектора нормалі полігона.

Оскільки у всіх точок, що належать площині, паралельній площині x y , z

- координати рівні, то визначення z - компоненти достатньо виконувати лише

для однієї з вершин полігона.

Після повороту полігона паралельно площині x y проводимо його

текстурування з використанням техніки mip-mapping [72], [73]. Оскільки z -

координати усіх пікселів рівні, рівень mip-піраміди (LOD рівень) визначається

один раз для кожного полігона, на відміну від текстурування в площині екрана,

де LOD рівень визначається окремо для кожного піксела. Колір кожного піксела

записується до кадрового буфера з координатами, рівними екранним. Для

визначення екранних координат піксела необхідно виконати перетворення

Page 93: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

93

проекції на площину x y . Оскільки була виконана процедура повороту перед

виконанням перетворення проекції, то кожен піксел необхідно спочатку

повернути в початкову площину. Для повороту піксела в початкову площину

необхідно виконати перетворення, зворотне до [ ]x y

R . Враховуючи це,

перетворення проекції піксела на екран можна подати в матричному виді:

' 1 1[ ]

x y x yM M R P M P R

де '

M – матриця координат в екранній площині; M – матриця координат в

площині полігона, повернутого паралельно x y ; 1

[ ]x y

R – матриця обернена до

матриці [ ]x y

R ; P – матриця проекції на екран; 1

x yP R – загальна матриця

перетворення проекції.

1[ ]

x yR визначається шляхом добутку матриць обернених до x

R і yR

(1

xR і

1

yR ) в зворотному порядку:

1 11[ ]

x y y xR R R .

Зворотні перетворення повороту навколо осей x і y мають вигляд:

1

1 0 0 0

0 c o s s in 0

0 s in c o s 0

0 0 0 1

xR

,

1

c o s 0 s in 0

0 1 0 0.

s in 0 c o s 0

0 0 0 1

yR

Знайдемо перетворення 1

[ ]x y

R :

1

c o s 0 s in 0 1 0 0 0 c o s s in s in c o s s in 0

0 1 0 0 0 c o s s in 0 0 c o s s in 0[ ] .

s in 0 c o s 0 0 s in c o s 0 s in c o s s in c o s c o s 0

0 0 0 1 0 0 0 1 0 0 0 1

x yR

Page 94: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

94

Знайдемо загальну матрицю перетворення проекції:

1

c o s s in s in c o s s in 0

0 c o s s in 0[ ]

s in c o s s in c o s c o s 0

0 0 0 1

x y

A B C D

E F G HR

I J K L

M N O P

c o s c o s c o s c o s c o s c o s c o s c o s

s in s in s in s in

s in s in s in s in s in s in s in s in

c o s s in c o s s in c o s s in c o s s in

c o s c o s s in c o s

s in

c o s c o s

A I B J C K D L

E F G H

E I F J G K H L

A E B F

I

,

s i n c o s s in c o s

s in s in s in

c o s c o s c o s c o s c o s c o s

C G D H

J K L

M N O P

де A P – параметри матриці проекції.

Обчислимо координати проекції:

' ' ' ' 1x y z w x y z

c o s c o s c o s c o s

c o s c o s c o s c o s

s in s in s in s in

s in s in s in s in

s in s in s in s in

c o s c o s c o s c o s

s in s in s in s in

c o s

c o s

s in

c o s

A B C D

I J K L

B

E F G H

E F G H

I J K L

A

E

I

c o s c o s s in

s in c o s c o s

s in s in s in

c o s c o s c o s

s in s in s in

c o s c o s c o s

c o s c o s c o s c o s

M A x E y A z

I y I z

B C D

F G H

A

J K L

M N O P

c o s s in

c o s s in s in s in

c o s c o s s in

s in c o s c o s c o s s in

c o s s in - s in s in

c o s c o s s in

s in c o s c o s c o s s in

c o s s in - s in s in

E z

I x E x

N B x F y z

J y J z F z

J x F x

O C x G y C z

K y K z G z

K x G

,

c o s c o s s in

s in c o s c o s c o s s in

c o s s in - s in s in

T

x

P D x H y D z

L y L z H z

L x H x

Page 95: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

95

де ', ', ', 'x y z w – однорідні координати піксела в екранній площині; , ,x y z –

координати піксела в площині, паралельній x y .

Знайдемо тривимірні координати піксела:

"

c o s c o s s in s in

c o s c o s c o s s in c o s s in s in s in,

c o s c o s s in s in

c o s c o s c o s s in c o s s in - s in s in

M A x E y A z I y

I z E z I x E xx

P D x H y D z L y

L z H z L x H x

"

c o s c o s s in s in c o s c o s

c o s s in c o s s in - s in s in,

c o s c o s s in s in

c o s c o s c o s s in c o s s in - s in s in

N B x F y z J y J z

F z J x F xy

P D x H y D z L y

L z H z L x H x

"

c o s c o s s in s in

c o s c o s c o s s in c o s s in - s in s in.

c o s c o s s in s in

c o s c o s c o s s in c o s s in - s in s in

O C x G y C z K y

K z G z K x G xz

P D x H y D z L y

L z H z L x H x

Зменшимо кількість операцій множення, підставивши у формули значення

з формул (3.26):

"c o s c o s s in s in s in s in

,

c o s c o s s in - s in - s in s in

z y y

z y y

M A x E y A z I y I N z E N z I N x E xx

P D x H y D z L y L N z H N z L N x H x

"c o s c o s s in - s in - - s in s in

,

c o s c o s s in - s in - s in s in

z y y

z y y

N B x F y z J A y J N z F N z J N x F xy

P D x H y D z L y L N z H N z L N x H x

"c o s c o s s in s in c o s s in - s in s in

.

c o s c o s s in - s in - s in s in

z y

z y y

O C x G y C z K y K N z G N z K x G xz

P D x H y D z L y L N z H N z L N x H x

Найпростіша матриця одноточкової перспективної проекції має

вигляд [65]:

1 0 0 0

0 1 0 0.

0 0 1

0 0 0 1

Pr

Page 96: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

96

Значення параметру r , приймають рівним 1

cz

, де cz - відстань від камери до

площини проекції [65]. Після підстановки значень у формулу отримаємо:

"

c o s s in,

1 - s in z y

x zx

r y r N z r N x

"c o s - s in s in

,

1 - s in

y

z y

y N z xy

r y r N z r N x

"

s in c o s s in

1 - s in

z

z y

N z y xz

r y r N z r N x.

У результаті обчислень отримують координати піксела у вигляді чисел з

плаваючою комою. Такі координати не можна однозначно віднести до

конкретного піксела на екрані, оскільки просте округлення до цілого

призводить також до появи артефактів (накладання пікселів і поява отворів),

притаманних для текстурування в площині текстури (рис. 3.8). Необхідно

врахувати колір текселя для усіх екранних пікселів, які покриває його

проекція (рис. 3.9).

Рисунок 3.8 – Артефакти при текстуруванні без фільтрації в площині екрана

Page 97: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

97

Рисунок 3.9 – Положення проекції піксела полігона на екранну площину

відносно пікселів екрана

Координати пікселів, що покриває проекція текселя, знаходяться за

формулами:

1 1

2 2

3 3

4 4

, ,

1, 1,

1, ,

, 1

x x y y

x x y y

x x y y

x x y y

При виконанні проекції текселів із текстурного простору в екранний

можливе накладання проекцій кількох текселів на один піксел. Значення

кольорів усіх текселів, що накладаються на один піксел, перед виводом на екран

необхідно усереднити з урахуванням вагових коефіцієнтів. У якості вагового

коефіцієнта використаємо площу текселя, що покриває піксел. Площі знаходимо

за формулами:

1

2

3

4

1 1 ,

,

1 ,

1 ,

S x x y y

S x x y y

S x x y y

S x x y y

Колір піксела на екрані визначаємо за формулою:

1

1

n

i i

i

n

i

i

S I

I

S

Page 98: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

98

Текстурування в просторі об’єкта забезпечує вищу точність обчислення

кольорів екранних пікселів за рахунок врахування глибини простору та

збереження геометричних властивостей полігона. Обчислювальні витрати на

визначення LOD рівня нижчі порівняно з текстуруванням у площині екрана за

рахунок того, що LOD рівнь визначається один раз на кожен полігон, а не один

раз на кожен піксел екрана. Метод не потребує виконання просторово

інваріантних фільтрацій. Фільтрація в площині екрана забезпечує вищу

продуктивність порівнянно з анізотропною, оскільки не потребує виконання

трудомістких операцій по визначенню розмірів і положення еліпса та координат

пікселів, що його формують. Формули для виконання усіх поворотів і проекцій,

мають вищу сумарну складність, порівняно з формулами проекцій для

текстурування в просторі екрана, проте відсутність виконання анізотропної

фільтрації дає змогу виконання паралельних обчислень без втрати якості. При

цьому може застосовуватись окремий потік для кожного піксела полігона при

виконанні операцій визначення текстурних координат і зворотної проекції, що

дає змогу підвищити продуктивність обчислень. Результат роботи методу

зображено на рисунку 3.10.

Рисунок 3.10 – Результат роботи методу текстурування в просторі об’єкту з

фільтрацією в площині екрана.

Отже, класичні методи текстурування не забезпечують високої точності

визначення кольорів, оскільки не враховують глибини простору та пропорцій

полігонів, а тому потребують виконання складної процедури фільтрації.

Page 99: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

99

Запропоновано метод текстурування в просторі об’єкта, що має меншу

обчислювальну складність порівняно з методати, які вимагають виконання

анізотропної фільтрації текстур, що дозволило підвищити продуктивність в

середньому до 30%. Практична реалізація запропонованого методу роглядається в

розділі 5. Результати порівняльного аналізу продуктивності наведено в додатку Г.

Висновки

Вперше запропоновано використання спеціальних текстурних карт для

визначення вагових коефіцієнтів текселів при виконанні анізотропної фільтрації

текстур замість обчислення їх в реальному часі, для підвищення

продуктивності.

Запропоновано модифікацію методу Хекберта, в якому використано

ітераційні формули для визначення координат текселів, що дозволило зменшити

кількість арифметичних операцій при визначенні текстурних координат піксела,

і як наслідок підвищити продуктивність на 26%.

Запропоновано нові ітераційні формули визначення параметрів рівняння

еліпса при виконанні анізотропної фільтрації, що дозволило зменшити кількість

арифметичних операцій та підвищити продуктивність на 18%.

Вперше запропоновано метод текстурування, особливість якого полягає у

виконанні процедурних операцій в об’єктному просторі та фільтрації в площині

екрана, що не потребує виконання анізотропної фільтрації текстур, і як

наслідок, дає можливість підвищити продуктивність до 30%.

Результати досліджень цього розділу наведено в публікаціях: [13], [15],

[17], [18], [19], [21].

Page 100: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

100

4 МЕТОДИ ПІДВИЩЕННЯ РЕАЛІСТИЧНОСТІ ТА ПРОДУКТИВНОСТІ

РЕЛЬЄФНОГО ТЕКСТУРУВАННЯ

У розділі запропоновано комбінований метод виконання рельєфного

текстурування із використанням технології parallax mapping та анізотропної

фільтрації, що дозволяє усунути артефакти, характерні для зображень,

сформованих шляхом поєднання цих технологій.

Запропоновано модифікований метод parallax mapping з використанням

карти відстаней до поверхні, що відрізняється від класичного використанням

уточненої карти відстаней, яка враховує умови видимості текселів і дозволяє

підвищити продуктивність рельєфного текстурування.

Запропоновано метод parallax mapping із використанням модифікованої

МІР-піраміди при трасуванні видового вектора. Трасування вектора на різних

МІР-рівнях дозволяє підвищити продуктивність за рахунок вилучення з

обчислювального процесу частин поверхні об’єкта.

4.1 Комбінований метод виконання анізотропної фільтрації текстур

при використанні технології parallax mapping

Виконання анізотропної фільтрації при текстуруванні з використанням

техніки parallax mapping може призводити до некоректного визначення

кольорів пікселів, надмірного розмиття окремих ділянок зображення.

Накладання текстур без фільтрації призводить до появи артефактів аліайзингу.

Відомі методи анізотропної фільтрації не враховують нерівності поверхні, а

тому всі текселі, що формують проекцію піксела на текстуру в формі еліпса,

вважаються видимими для користувача та використовуються для визначення

кольору піксела.

Множина необхідних для фільтрації текселів ( T ) описується рівнянням

еліпса (1.7). Параметри рівняння , , , A B C F обчислюються за формулами (1.6).

При цьому похідні знаходять за формулами (3.9). Із формул (1.6) і (3.9) видно,

що форма та положення проекції піксела на текстуру залежить як від

Page 101: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

101

текстурних координат, що відповідають даному екранному пікселу, так і від

текстурних координат, що відповідають сусіднім екранним пікселам (рис 4.1).

Рисунок 4.1 – Текселі, що формують колір піксела при при анізотропній

фільтрації без parallax mapping

При тесктуруванні з використанням технології parallax mapping

координати текселів, що відповідають екранним пікселам, зміщуються і

формули (3.9) набувають виду:

( 1, ) ( , ) ,u

u x y n u x y mx

( 1, ) ( , ) ,v

v x y o u x y mx

( , 1) ( , ) ,u

u x y p v x y ry

( , 1 ) ( , ) ,v

v x y s v x y ry

де , , , , , n m o p r s – зміщення текстурних координат відповідно до карти висот.

Це призводить до зміни форми та площі ділянки текстури, що формує колір

піксела (рис 4.2).

Рисунок 4.2 – Текселі, що формують колір піксела при при анізотропній

фільтрації з parallax mapping

Page 102: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

102

З урахуванням видимості точки для користувача, множину текселів T

можна розділити на дві підмножини: множину видимих текселів v i sT і множину

невидимих текселів in v is

T , таких, що v is in v isT T T , при чому :

v is in v ist T t T ,

v isT . При цьому, із збільшенням площі проекції, збільшується вірогідність

того, що in v is

T , тобто охоплення множиною T ділянок, що перекриваються

іншими ділянками, що мають більшу висоту (рис. 4.3). Неточності при

визначенні кольорів виникають саме в результаті того, що при фільтрації

враховуються текселі підмножини in v isT .

Рисунок 4.3 – Перекриття частини проекції піксела більшою висотою

Для усунення неточностей при визначенні кольорів слід виконувати

трасування видового променя для кожного текселя множини T з метою

виділити елементи in v is

t T для виключення їх з обчислювального

процесу (рис 4.4).

Page 103: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

103

Рисунок 4.4 – Визначення текселів, що не повинні враховуватись при

фільтрації

Оскільки при ортогональному порядку обходу текселів напрямок обходу не

збігається з напрямком проекції видового променя, описана процедура може

призводити до того, що в окремих випадках деякі текселі v is

t T можуть бути

враховані двічі. Така ситуація виникає коли видовий промінь проходить через

точки, що відповідають двом текселям, один із яких 1 v ist T а інший

2 in v ist T і 1

t у

порядку обходу з’являється раніше за 2

t (рис. 4.5). Для усунення подвійного

врахування текселів слід виділити в пам’яті окремий буфер для зберігання

координат текселів, що уже були враховані, та перед урахуванням кожного текселя

перевіряти його наявність в буфері.

Рисунок 4.5 – Текселі що, можуть бути враховані двічі

Page 104: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

104

Трасування променів для кожного текселя вимагає значних обчислювальних

затрат, тому, по можливості, необхідно визначити інші умови для виключення

текслів із процесу фільтрації.

Текселі в середині проекції проходять порядково. Як тільки у рядку

зустрівся тексель, що 1 in v is

t T , обхід рядка слід зупинити та почати з іншого кінця

у зворотному напрямку та продовжувати до тих пір, поки не зустрінеться ще

один тексель, що 2 in v is

t T . Множину текселів, що знаходяться між 1

t і 2

t ,

позначимо 1

T . Оскільки вірогідність існування такої множини 2T , що

2 2 1:

v isT T T T достатньо низька, а у випадку, коли така множини існує, її розмір

не може бути достатньо великим по відношенню до розміру всієї множини T ,

щоб істотно вплинути на колір піксела.

На рисунку 4.6 наведено приклад зображення, сформованого з

використанням запропонованого комбінованого методу.

Рисунок 4.6 – Приклад зображення сформованого з використанням

запропонованого комбінованого методу

Врахування рельєфних особливостей поверхні при анізотропній фільтрації

текстур дає можливість підвищити точність визначення кольорів пікселів та

Page 105: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

105

підвищити різкість зображення на розмитих ділянках, що сприяє підвищенню

реалістичності формування зображень. При цьому зниження продуктивності

складає всього 5.1% (рис. 4.7).

Рисунок 4.7 – Графіки зміни продуктивністі запропонованого методу

4.2 Модифікований метод parallax mapping з використанням карти

відстаней до поверхні

Для виконання parallax mapping з високою точністю та досягнення

достатньої продуктивності використовують ітераційний метод Вільяма

Доннеллі з уточненням кроку, що базується на використанні додаткової

тривимірної текстури – карти відстаней до поверхні [93].

Метод Доннеллі гарантує високу точність визначення точки перетину

видового променя з поверхнею, проте на поверхнях із складним рельєфом і

різкими перепадами висот продуктивність може знизитись. Це пояснюється

Page 106: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

106

тим, що збільшення перепадів висот рельєфу призводить до збільшення

загальної площі поверхні, а отже, і пікселів, що її формують. Тому велика

кількість точок допоміжної текстури знаходиться на невеликій відстані від

поверхні. В результаті на кожен крок припадає менша відстань, що призводить

до збільшення кількості необхідних ітерацій. Тому актуальним є питання

оптимізації методу Доннеллі для поверхонь із складним рельєфом.

Розглянемо приклад на рисунку 4.8.

Рисунок 4.9 – Трасування видового променя, що перетинає поверхню в

кількох точках

Видові вектори 1V і 2

V проходить через точку C . Мінімальна відстань від

точки C до поверхні – 3 піксели. Відповідно до метода Доннеллі, для

знаходження точки перетину 1V з поверхнею достатньо дві ітерації з кроком 5 і

1 піксел відповідно. 1V перетинає поверхню в точці A . Оскільки точка

перетину знайдена, то подальше трасування не виконується. Аналогічно, вектор

2V вперше перетинає поверхню в точці B . Оскільки точки A і B лежать на

спільних векторах з точкою C , але знаходяться ближче до початку вектора,

вони роблять невидимою точку C . Таким чином, відстань від точки C до

Page 107: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

107

поверхні не має значення при трасуванні векторів 1

V і 2

V , не дивлячись на те, що

вони проходять через неї.

Розглянемо випадок, коли видові вектори не перетинають поверхню до

проходження через точку C (рис. 4.10).

Рисунок 4.10 – Трасування видового променя, що перетинає поверхню

один раз

Виконаємо трасування вектора 1V для визначення координат точки A .

Після кількох ітерацій трасування промінь 1V потрапляє в точку C . Так як

мінімальна відстань від точки C до поверхні – 3 піксели, виконується ще одна

ітерація із кроком 3. Оскільки точку A все ще не досягнуто, то виконується

остання ітерація з кроком 1. Таким чином, відстань від точки C до точки A

складає 4 пікселі. Трасування вектора 2V аналогічне.

Отже, можна зробити висновок, що вектора V , який проходить через деяку

точку P , що лежить над поверхнею, та перетинає поверхню таким чином, що

частина вектора на проміжку від точки P до поверхні рівна мінімальній

відстані від цієї точки до поверхні, і, при цьому, не перетинає поверхню на

проміжку від початку вектора до цієї точки P може не існувати.

Page 108: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

108

У такому випадку зберігати в карті відстаней мінімальну відстань від

точки P до поверхні не доцільно. Доцільніше зберігати найменшу з можливих

відстаней від точки до поверхні за умови, що вектор, який проходить через

точку P , не перетинається з поверхнею на проміжку від початку вектора до

точки P (рис. 4.11). Таку карту назвемо уточненою.

Рисунок 4.11 – Уточнена карта відстаней до поверхні

Виконаємо трасування променів 1V і 2

V з використанням уточненої карти

відстаней до поверхні (рис. 4.12).

Рисунок 4.12 – Трасування видового вектора з використанням уточненої

карти відстаней до поверхні

Page 109: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

109

Після уточнення карти відстаней, мінімальна відстань від точки C до

поверхні складає 4 піксели. Тому після досягнення вектором точкуи C для

визначення координат точок перетину променя із поверхнею ( A і B )

достатньо однієї ітерації трасування.

Уточнення карти відстаней до поверхні дає можливість зменшити кількість

ітерацій трасування видового вектора при визначенні координат точок перетину

вектора з поверхнею за методом Доннеллі та знизити обчислювальні затрати на

виконання parallax mapping для поверхонь із складним рельєфом.

Експериментальні дослідження показали що підвищення продуктивносі складає до

11% (рис. 4.13). Особливістю методу є те, що в результаті змінються тільки дані в

додатковій текстурній карті, а сам алгоритм трасування залишається без змін. Це

дає можливість підвищення продуктивності роботи вже існуючого програмного

забезпечення без внесення змін у його вихідний код та повторної компіляції.

Рисунок 4.13 – Графіки зміни продуктивністі запропонованого методу

Page 110: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

110

4.3 Метод підвищення продуктивності parallax mapping з

використанням модифікованої МІР-піраміди

Складність алгоритму parallax mapping [84], [85] залежить від

максимально можливої кількість ітерацій трасування видового вектора.

Максимально кількість ітерацій визначається довжиною вектора. Довжина

вектора в найскладнішому випадку рівна довжині діагоналі текстурної карти.

Існуючі методи підвищення продуктивності parallax mapping без уточнення

кроку трасування дозволяють зменшити кількість ітерацій, проте не

забезпечують належної точності обчислень, що призводить до зниження

реалістичності зображення. Приріст продуктивності від використання методів

parallax mapping з уточненням кроку трасування залежить від рельєфу

конкретної поверхні, а тому не завжди є прийнятним.

Підвищення продуктивності parallax mapping у багатьох випадках можна

досягти за рахунок використання додаткової спеціальної MIP-піраміди для

зберігання карти висот.

У звичайній МІР-піраміді (далі – піраміда середніх значень) значення

кожного текселя дорівнює середньому значенню чотирьох сусідніх текселів на

попередньому МІР-рівні. У додаткову піраміду (далі – піраміда максимальних

значень) запишемо замість середнього значення максимальне значення висоти у

чотирьох точках (рис. 4.14).

Рисунок 4.14 – Приклад МIP-піраміди максимальних значень

У подальшому трасування видового вектора слід виконувати по черзі на

усіх МІР-рівнях піраміди максимальних значень, починаючи з найвищого та

Page 111: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

111

закінчуючи рівнем, який відповідає необхідній роздільній здатності (далі –

базовий МІР-рівень).

На найвищому МІР-рівні текстура складається лише з одного текселя.

Значення цього текселя рівне висоті найвищої точки поверхні. Якщо це

значення рівне значенню висоти, що відповідає початковим текстурним

координатам на базовому рівні піраміди середніх значень, то текстурні

координати відповідають найвищій точці. Це гарантує, що точка не

перекривається жодною висотою, а тому трасування виконувати не потрібно.

Якщо значення більше, то слід виконати трасування на наступному МІР рівні.

На другому МІР-рівні площа текстури рівна чотирьом текселям. Тому,

максимально можлива довжина видового вектора складає 2 текселя, а

максимальна кількість ітерацій трасування – 2. Якщо значення текселя менше

висоти вектора в поточній точці, то половина вектора гарантовано не має точки

перетину із поверхнею. Якщо значення обох текселів менше висоти вектора, то

точка не перекривається, а тому подальше трасування не проводиться. Якщо

значення текселя перевищує висоту вектора в даній точці, то ймовірно, що в цій

ділянці на базовому МІР-рівні може існувати точка перетину вектора із

поверхнею.

У цьому випадку слід продовжити трасування на нижчому МІР рівні.

Оскільки роздільна здатність текстури при переході на нижчий рівень

збільшується вдвічі, то текстурні координати вектора обчислюються за

формулою:

12

i iV V ,

де 1i

V - координати на нижчому МІР-рівні; i

V - координати на поточному МІР-

рівні.

Якщо на нижчому МІР-рівні трасування також виявило точку значення

якої більше за висоту вектора, то слід продовжити рекурсивну перевірку

нижчих МІР-рівнів до базового (рис. 4.15). При цьому на кожному рівні

рекурсії кількість ітерацій трасування не перевищить 2.

Page 112: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

112

Рисунок 4.15 – Трасування видового вектора на різних МІР-рівнях

Якщо на одному із MIP-рівнів трасування не виявило жодної точки,

значення якої перевищує висоту вектора, то точка, висота якої перевищує

висоту вектора на цій ділянці текстури, існує, проте вона не належить проекції

вектора на площину. В такому разі перетину вектора з площиною на цій ділянці

текстури немає (рис. 4.16). У цьому випадку слід повернутись на вищий МІР-

рівень і продовжити трасування.

Рисунок 4.16 – Випадок, коли наявність точки перетину на ділянці не

підтверджується

Трасування закінчується, коли рекурсія досягла базового рівня та

наявність точки перетину підтвердилась.

Таким чином, трасування на МІР-рівнях, вищих за базовий, дозволяє

виключити з обчислювального процесу перевірку частини ділянок текстури на

яких немає точок перетину видового вектору із поверхнею.

Продуктивність методу залежить від особливостей рельєфу поверхні, а

доцільність його використання слід встановлювати експериментально для

Page 113: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

113

конкретної карти висот. Найвищу продуктивність порівняно зі звичайним

трасуванням вектора вдається досягти при відтворенні поверхонь, що

характеризуються значними відстанями між перепадами висот, наприклад,

цегяні стіни. Такі поверхні мають значну кількість ділянок подібної висоти, які

можливо вилучити з обчислювального процессу при трасуванні на вищому

МІР-рівні.

Можливе комбіноване використання МІР-піраміди з іншими методами

трасування видового променя. Наприклад, шляхом трасування на одному з

середніх МІР–рівнів, можна визначити ділянки, які доцільно перевірити одним

із методів із уточненням кроку та вилучити з обчислювального процесу ділянки,

які перевіряти немає сенсу.

Збраження, сформоване запропонованим методом наведено на

рисунку 4.17.

Рисунок 4.17 – Зображення, сформоване запропонованим методом

Висновки

Визначено причини похибок візуалізації при використанні технології

parallax mapping у поєднанні з анізотропною фільтрацією текстур та

запропоновано комбінований метод виконання рельєфного текстурування із

використанням parallax mapping та анізотропної фільтрації, що дозволяє

усунути артефакти характерні для зображень, сформованих шляхом поєднання

Page 114: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

114

цих технологій.

Запропоновано модифікований метод Донеллі, в якому, на відміну від

базового, при формуванні карти відстаней до поверхні враховуються умови

видимості текселів, що дозволило зменшити кількість ітерацій трасування

видового вектора та підвищити продуктивність до 11%.

Запропоновано метод parallax mapping із використанням модифікованої

МІР-піраміди для трасування видового вектора. Трасування вектора на різних

МІР-рівнях дозволяє підвищити продуктивність за рахунок вилучення з

обчислювального процесу частин поверхні об’єкта.

Результати досліджень цього розділу наведено в публікаціях: [13], [23],

[24], [25].

Page 115: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

115

5 РОЗРОБКА ПРОГРАМНИХ КОМПОНЕНТІВ КОМП'ЮТЕРНИХ

СИСТЕМ НА ОСНОВІ ЗАПРОПОНОВАНИХ МЕТОДІВ

У розділі розглянуто практичну реалізацію запропонованих методів

накладання текстур для комп’ютерних систем візуалізації реального часу.

Запропоновано реалізацію альтернативного конвеєра рендерингу на GPU з

виконанням процедурних операцій в об’єктному просторі засобами

обчислювальних шейдерів OpenGL. Розроблено реалізацію методів анізотропної

фільтрації текстур та рельєфного текстурування засобами фрагментного

шейдера на GPU. Приведено схему системи кінцевої візуалізації з

використанням запропонованих методів.

5.1 Шейдерна реалізація методу текстурування з виконанням

процедурних операцій в об’єктному просторі

В основі архітектури сучасних графічних акселераторів лежить

уніфікована шейдерна модель, що передбачає поетапне виконання шейдерних

програм у послідовності, що відповідає класичному конвеєру рендерингу, а

саме [59], [115-120]:

1) Вершинний шейдер використовується для виконання геометричних

перетворень та встановлення атрибутів вершин.

2) Геометричний шейдер призначений для обробки заданих примітивів та

генерації нових.

3) Шейдери теселяції призначені для процедурної генерації геометрії поверхонь

довільної форми.

4) Фрагментний шейдер використовують для попікселної обробки фрагментів

зображення та визначення кольорів.

Для візуалізації з використанням методів текстурування відповідно до

описаної вище моделі, як правило, достатньо вершинного та фрагментного

шейдера. У вершинному шейдері встановлюють відповідність координат

вершин у просторі та на текстурі, а також виконують MVP-перетворення.

Page 116: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

116

Фрагментний шейдер використовують для вибірки кольорів пікселів із

текстурної пам’яті та виконання фільтрації текстури за обраним алгоритмом.

При цьому координати вершин у просторі та на текстурі в пам’ять графічного

акселератора із пам’яті хост-комп’ютера передають шляхом запису в буфер

вершин (Vertex Buffer Object, VBO), а дані текстури записують у uniform-слот

акселератора (рис. 5.1) [7], [117], [118].

CPU

VBO GPU

Текстурна пам’ять

Екран

Установка вершин

Завантаження текстур

Координати вершин на текстурі

Вершинний шейдер

Фрагментний шейдер

Координати вершин в просторі

Обробка введення/виведення

Запуск візуалізації кдру

Рисунок 5.1 – Схема взаємодії програмних компонентів при рендерингу на GPU

з використанням текстурування на основі класичного конвеєру

Описана послідовність операцій не дає можливості практичної реалізації

методу текстурування з виконанням процедурних операцій в об’єктному

просторі засобами GPU, оскільки метод передбачає перед початком растеризації

виконання лише MV-перетворення та повороту полігона, а P-перетворення та

зворотній попікселний поворот виконують після визначення кольорів. Існуючий

конвеєр рендерингу не має можливості виконання геометричних перетворень

над окремими пікселами та зміни координат пікселів після визначення їх

кольорів. Тому для текстурування з виконанням процедурних операцій у

об’єктному просторі в реальному часі на GPU можливо лише за умови розробки

альтернативного графічного конвеєра та його інтеграції в засоби апаратної

візуалізації.

Page 117: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

117

Стандарти OpenGL, починаючи з версії 4.3 2012 року [7], [117], [120],

[121], DirectX, починаючи з версії 11 2008 року [122-124] та Vulkan 1.0 2016

року [125] передбачають можливість використання обчислювальних шейдерів.

Обчислювальні шейдери виконуються поза конвеєром рендерингу та

використовуються для виконання довільних обчислень засобами GPU [7], [120].

Реалізація альтернативного конвеєра рендерингу можлива шляхом

комбінування набору обчислювальних і графічних шейдерів. При цьому для

забезпечення обміну даними між хост-комп’ютером і шейдерами різних типів у

пам’яті GPU можна використовувати шейдері буфери зберігання (Shader Storage

Buffer Object, SSBO), які забезпечують можливість зчитування та запису

масивів даних у обчислювальних і фрагментному шейдерах. Об’єми пам’яті,

доступні кожному SSBO, виділяються хост-комп’ютером до початку виконання

шейдерної програми та не можуть бути змінені в ході її виконання.

Для реалізації текстурування з виконанням процедурних операцій в

об’єктному просторі необхідно створити 11 буферів SSBO:

- буфер координат для зберігання координат вершин полігонів;

- буфер текстурних координат для зберігання координат вершин в

текстурній площині;

- буфер площ для зберігання площ полігонів;

- буфер поворотів для зберігання матриць зворотного повороту;

- фрагментний буфер для зберігання координат фрагментів в об’єктному

просторі;

- буфер кольорів для зберігання кольорів фрагментів;

- індексний буфер для зберігання даних про належність кожного фрагмента

конкретному полігона;

- буфер зміщень для зберігання зміщень сегментів пам’яті виділених

конкретному полігона;

- екранний буфер для зберігання кольорів вихідного зображення;

- буфер глибини для зберігання даних, необхідних для видалення

невидимих точок;

Page 118: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

118

- буфер блокування для реалізації мютексів та синхронізації доступу до

буферу екрана та глибини.

Загальний конвеєр повинен складатись із 4 обчислювальних шейдерів

програм і 1 фрагментного:

- Шейдер повороту в якості вхідних даних приймає координати вершин

полігонів із буфера вершин. Здійснює MV-перетворення та поворот

полігона в положення, що паралельне площині екрана. Потім записує нові

координати назад у буфер вершин і визначає матрицю зворотного

повороту, яку записує її до буферу поворотів. Після цього визначає площу

полігона із врахуванням дискретності простору та записує її у буфер площ.

Викликається один раз для кожного полігона (рис. 5.2).

SSBO

Буфер координат

Шейдер повороту

Визначення вектору нормалі

полігона

Визначення кутів нахилу полігону відносно осей

Формування матриці повороту в положення

паралельно екрану

Поворот полігона

Формування матриці зворотного повороту

Визначення площі

полігона

Буфер поворотів Буфер площ

Рисунок 5.2 – Структура шейдера повороту

- Шейдер растеризації в якості вхідних даних приймає координати вершин

полігонів із буфера вершин, індекс полігона з індексного буфера та

зміщення в пам’яті з буфера зміщень. Здійснює розбиття полігона на

фрагменти та записує координати фрагментів до фрагментного буфера

відповідно до зміщення. Викликається один раз для кожного полігона (рис.

5.3).

- Шейдер текстурування в якості вхідних даних приймає координати вершин

полігонів із буфера вершин, індекс полігона з індексного буфера,

координати піксела із фрагментного буфера, текстурну карту із текстурного

слоту та текстурні координати вершин із буферу текстурних координат.

Здійснює визначення текстурних координат піксела, вибірку кольору із

Page 119: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

119

текстури та запис його в буфер кольорів. Викликається один раз на кожен

фрагмент (рис. 5.4).

SSBO

Буфер координат

Шейдер растеризації

Визначення координат фрагментів полігона

Індексний буферФрагментний

буфер

Рисунок 5.3 – Структура шейдера растеризації

SSBO

Буфер координат

Шейдер текстурування

Визначення барицентричних координат фрагмента

Визначення UV координат

Вибірка кольору з текстурної карти

Визначення адрес пам’яті для запису

кольору

Індексний буферФрагментний

буфер Буфер кольорівБуфер

текстурних координат

Текстурна пам’ять

Рисунок 5.4 – Структура шейдера текстурування

- Шейдер зворотного повороту у якості вхідних даних приймає координати

координати піксела із фрагментного буфера, колір піксела із буферу

кольорів, індекс полігона із індексного буфера, кольори та вагові

коефіцієнти текселів з буферу екрана, z-компоненту найближчого видимого

піксела та індекс полігона, якому він належить із буферу глибини.

Здійснює визначення екранних координат піксела в екранній площині та

вагових коефіцієнтів, Р-перетворення, запис кольору піксела та вагового

коефіцієнту до буферу екрана, визначення видимості піксела та запис до

буферу глибини. Викликається один раз на кожен фрагмент (рис. 5.5).

Page 120: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

120

SSBO

Фрагментний буфер

Шейдер зворотного повороту

Визначення екранних координат фрагменту

Буфер кольорів

Буфер глибиниБуфер екрану

Виконання зворотного повороту

фрагмента

Вхід до критичної

секції

Буфер блокування

Перевірка умов видимості

піксела

Визначення вагових коефіцієнтів та запис

кольору

Вихід із критичної

секції

Рисунок 5.5 – Структура шейдера зворотного повороту

- Фрагментний шейдер у якості вхідних даних приймає суму інтенсивностей

кольорів і суму вагових коефіцієнтів піксела та визначає колір піксела на

екрані. Викликається один раз на кожен піксел екрана (рис. 5.6).

SSBO

Буфер екрану

Фрагментний шейдер

Виведення кольору пікселя на екран

Екран

Рисунок 5.6 – Структура фрагментного шейдера

Управління усіма етапами процесу візуалізації здійснюється хост-

комп’ютером засобами CPU.

До початку процесу рендерингу виділяється пам’ять для буферу

координат і текстурних координат пропорційно кількості вершин; буфера площ,

зміщень та поворотів пропорційно кількості полігонів; буферів екрана, глибини

та блокування пропорційно площі екрана. Після виділення пам’яті до буферів

координат завантажуються координати вершин у просторі та в площині

текстури. Об’єм пам’яті, необхідний для інших буферів, залежить від кількості

фрагментів (площі полігонів із урахуванням дискретності простору), а тому

невідомий на початковому етапі рендерингу.

Page 121: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

121

Наступним етапом є завантаження в оперативну пам’ять кольорової

текстурної карти та її запис у вільний текстурний слот графічного акселератора

у якості іменованого uniform-об’єкта.

Далі управління передається графічному процесору для запуску шейдера

повороту. Після виконання усіх операцій шейдера повороту з буфера площ в

оперативну пам’ять хост-комп’ютера завантажуються площі полігонів. Далі

здійснюється виділення пам’яті для фрагментного буфера та буфера кольорів

пропорційно сумі площ полігонів.

Оскільки растеризація полігонів на GPU відбувається паралельно,

послідовний запис до фрагментного буфера вимагає виконання операцій

блокування для синхронізації потоків. Тому доцільніше заздалегідь визначити

зміщення в пам’яті для кожного полігона, що виключає одночасний доступ до

однієї ділянки пам’яті кількома потоками та виконувати операції запису в

довільну порядку. Після виділення пам’яті для фрагментного буфера та буфера

кольору слід визначити зміщення в цих ділянках пам’яті для кожного полігона.

Зміщення визначаються ітераційно за формулою:

1i i io f f s e t o f f s e t S ,

де, i

o f f s e t - зміщення полігона в пам’яті буфера; 1i

o f fs e t - зміщення попереднього

полігона в пам’яті буфера; i

S - площа поточного полігона. Для першого

полігона зміщення рівне 0.

Наступним кроком є передача управління GPU для виконання програми

шейдера растеризації. Під час растеризації координати фрагментів записуються

до фрагментного буферу за адресами, що відповідають зміщенням полігонів.

Адреса кожного фрагменту визначається за формулою:

i Pa d d r e s s o f f s e t i ,

де, i

a d d r e s s – адреса поточного піксела в пам’яті фрагментного буфера; P

o f f s e t –

зміщення поточного полігона в пам’яті фрагментного буферу; i - порядковий

номер поточного піксела в межах полігона.

Page 122: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

122

У подальшому виконується запуск на виконання програми шейдера

текстурування для визначення кольорів фрагментів.

Після визначення кольорів процес підготовки до рендерингу закінчено та

виконується цикл рендерингу кадрів зображення. В основному циклі

рендерингу виконуються виконання програми шейдера зворотного повороту,

програми фрагментного шейдера та обробка сигналів вводу. Вихід із циклу

відбувається після надходження відповідного сигналу від користувача. Загальну

схему процесу візуалізації запропонованим методом зображено на рисунку 5.6.

CPU SSBO GPU

Текстурна пам’ять

Екран

Виділення пам’яті буферів

Установка вершин

Завантаження текстур

Буфер текстурних координат

Буфер площ

Буфер поворотів

Буфер кольорів

Індексний буфер

Буфер зміщень

Екранний буфер

Буфер глибини

Буфер блокування

Шейдер текстурування

Шейдер зворотного повороту

Фрагментний буфер

Шейдер растеризації

Шейдер повороту

Фрагментний шейдер

Буфер координат

Визначення розмірів буферів

Визначення зміщень областей пам’яті

Обробка вводу/виводу

Запуск візуалізації кдру

Рисунок 5.5 – Схема взаємодії програмних компонентів при рендерингу на GPU

з виконанням операцій в об’єктному просторі

Програмне забезпечення для хост-комп’ютера розроблено з

використанням мови програмування С++ [126-128] відповідно до стандарту

C++ ISO/IEC C++17 [129]. Взаємодія з відеоакселератором відбувається

Page 123: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

123

відповідно до стандарту OpenGL 4.5 [130], [131]. Вихідний код може бути

зкомпільованим у якості додатку або бібліотеки для усіх сучасних версій

операційних систем Windows, GNU/Linux, MacOS, а також мобільних платформ

(за умови наявності апаратної підтримки платформою відповідних версій

OpenGL). Перевірено на сумісність із компіляторами GCC, починаючи з

версії 7.2.0 і clang, починаючи з версії 4.0.1. Шейдерні програми розроблено

мовою програмування OpenGL Shading Language (GLSL) відповідно до

стандарту OpenGL 4.5.

У ході тестування визначено, що приріст продуктивності відносно

рендерингу з використанням текстурування на основі анізотропної фільтрації

складає в середньому 30%. Продуктивність рендерингу прямо залежить від

загальної площі полігонів, тоді як продуктивність рендерингу з використанням

анізотропної фільтрації залежить від роздільної здатності екрана, кількості

полігонів і положення полігона відносно спостерігача.

Результати порівняльного аналізу продуктивності наведено в додатку Г.

Вихідний код програмних компонентів наведено у додатку Д.

5.2 Програмна реалізація методів фільтрації текстур та рельєфного

текстурування

При рендерингу зображень з використанням анізотропної фільтрації

процедуру текстурування реалізовують засобами фрагментного шейдера. Для

цього шейдерна програма повинна приймати у якості вхідних параметрів

текстурні координати фрагмента. Визначення текстурних координат

відбувається до виклику фрагментного шейдера апаратними засобами

графічного акселератора або іншими шейдерними програмами [131-133].

Алгоритм програми фрагментного шейдера складається з таких

етапів (рис. 5.6):

Page 124: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

124

Рисунок 5.6 – Процедура фрагментного шейдера із застосуванням

анізотропної фільтрації

1. Визначення параметрів рівняння еліпса на основі текстурних координат

фрагмента за формулами (1.5), (1.6), (1,7).

Page 125: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

125

2. Визначення координат вершин обмежувального прямокутника, у який

вписано еліпс.

3. Послідовна перевірка координат кожного з текселів, шо входять в

обмежувальну ділянку, на відповідність рівнянню еліпса для визначення

текселів, що формують проекцію піксела на текстуру.

4. Визначення суми інтенсивностей кольорів текселів, що відповідають

рівнянню еліпса.

5. Визначення кількості текселів, що відповідають рівнянню еліпса.

6. Визначення кольору фрагмента шляхом ділення суми інтенсивностей

кольорів на кількість текселів.

Для підвищення точності визначення кольорів, при анізотропній

фільтрації застосовують вагові коефіцієнти. В такому випадку має місце зміна

послідовності етапів виконання змінюються:

1. Визначення параметрів рівняння еліпса на основі текстурних координат

фрагмента за формулами (1.5), (1.6), (1,7).

2. Визначення координат вершин обмежувального прямокутника, у який

вписано еліпс.

3. Послідовна перевірка координат кожного з текселів, шо входять в

обмежувальну ділянку, на відповідність рівнянню еліпса для визначення

текселів, що формують проекцію піксела на текстуру.

4. Визначення вагового коефіцієнта для кожного текселя, що відповідає

рівнянню еліпса, відповідно до обраної вагової функції.

5. Обчислення добутку інтенсивносі кольору кожного текселя, що відповідає

рівнянню еліпса, на його ваговий коефіцієнт.

6. Визначення суми добутків інтенсивностей кольорів текселів, що

відповідають рівнянню еліпса, на ваговий коефіцієнт.

7. Визначення кольору фрагмента шляхом ділення суми добутків

інтенсивностей кольорів текселів на ваговий коефіцієнт на суму вагових

коефіцієнтів.

Page 126: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

126

Рисунок 5.7 – Процедура фрагментного шейдера анізотропної фільтрації із

використанням вагових коефіцієнтів

Вихідний код програмної реалізації вагової функції для шейдерної

програми мовою GLSL на основі формули (2.7) надано в додатку Е. У якості

вхідних параметрів функція приймає координати текселя, координати центру

еліпса (текстурні координати піксела) та довжини осей еліпса, що визначають за

формулами (2.8). Після виконання обчислень функція повертає значення

вагового коефіцієнта текселя.

Page 127: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

127

Вихідний код вагової функції для шейдерної програми мовою GLSL на

основі вагових текстурних карт надано в додатку Ж. У якості вхідних

параметрів функція приймає координати текселя, координати центру еліпса

(текстурні координати піксела) та координати векторів осей еліпса. Текстурні

координати для вибірки вагових коефіцієнтів визначаються за

формулами (3.3), (3.4).

Кожен із текселів текстури містить цілочисельне значення розміром 4

байти. При зчитуванні даних із текстури шейдерна програма представляє

значення кожного текселя як колір у форматі RGBA. Відповідно до стандарту

OpenGL, кожен піксел формату RGBA є вектором розмірності 4, кожен елемент

якого має розмір 1 байт [130]. Тому для інтерпретації значення текселя як

цілочесельного значення здійснюється конвертація формату за формулою:

2 4 1 6 8W A B G R ,

де, , , ,R G B A - компоненти кольору в форматі RGBA; W - ваговий коефіцієнт

текселя.

Формування вагової карти може здійснюватись засобами растрових

графічних редакторів або за допомогою спеціалізованого програмного

забезпечення. Для формування вагової карти на основі Гаусівської моделі

піксела за формулою (2.7) розроблено спеціальний програмний додаток, який

формує двовимірну матрицю необхідної розмірності, визначає значення вагової

функції за формулою (2.7) для кожного елементу матриці відповідно до його

індексу та здійснює запис отриманих даних до файлу в одному із графічних

форматів.

Важливо, що для зберігання вагової текстурної карти необхідно

використовувати формат графічного файлу на основі алгоритмів кодування

даних з ущільненням без втрат або на алгоритмах кодування без ущільнення.

Алгоритми кодування даних із втратами (такі як JPEG) при стисненні даних для

підвищення рівня компресії змінюють значення компонент кольору, що

призводить до похибок, непомітних людському оку [134-137]. Проте, значення

Page 128: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

128

кольорів вагової карти призначені не для перегляду людиною, а для виконання

точних обчислень. Тому подібні похибки, особливо у старших розрядах, можуть

призвести до появи істотних артефактів на вихідному зображенні. Наприклад,

білий колір у форматі RGBA кодується чотирма байтами, кожен з яких має

значення 255 (255, 255, 255, 255). Похибка на 1 в червоній компоненті (254, 255,

255, 255) не призводить до появи видимих змін на зображенні. Проте при

зчитуванні вагових коефіцієнтів у вигляді чотирибайтних цілочисельних

значень похибка істотно зростає:

1 6 1 6 1 6 1 01 0 0 0 0 0 0 1 6 7 7 7 2 1 6F F F F F F F F F E F F F F F F

Тому для зберігання вагових текстурних карт було обрано формати TGA і

PNG, які забезпечують можливість чотирибайтного кодування зображень без

втрати точності значень вагових коефіцієнтів. Вихідний код додатку для

формування вагових текстурних карт на основі гаусівської моделі піксела

мовою програмування С++ наведено у додатку З.

У ході тестування виявлено, що використання вагової карти замість

обчислення складних формул забезпечує підвищення продуктивності до 25%.

При цьому зниження реалістичності не відбувається. На рисунку 5.8 зображено

результат накладання текстури без виконання анізотропної фільтрації.

Рисунок 5.8 – Результат текстурування без виконання анізотропної фільтрації.

Page 129: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

129

На рисунку 5.9 відображено виконання анізотропної фільтрації без

застосування вагових коефіцієнтів, а на рисунку 5.10 відображено результат

виконання анізотропної фільтрації із ваговою функцією на основі гаусівської

моделі піксела з використанням вагової текстурної карти.

Рисунок 5.9 – Результат виконання анізотропної фільтрації із використанням

існуючих вагових функцій.

Рисунок 5.10 – Результат виконання анізотропної фільтрації із використанням

запропонованих вагових функцій.

Середньоквадратична похибка зображення, сформованого з

використанням вагових карт, по відношенню до зображення, сформованого із

використанням вагових функцій, що розраховуються в реальному часі, складає

Page 130: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

130

всього 0,000708, що свідчить про те що візуальні відхилення візуально

непомітні.

Рельєфне текстурування на основі технології parallax mapping також

реалізовують засобами фрагментного шейдера. Єдиною відмінністю від

звичайних методів текстурування є наявність етапу визначення зміщення

текстурних координат шляхом трасування видового вектора. Це виконується

після етапу визначення текстурних координат. Після цього може виконуватись

фільтрація текстури за обраним методом.

Метод анізотропної фільтрації при використанні parallax mapping,

запропонований в розділі 4.1, вимагає внесення істотних змін в алгоритм

шейдерної програми:

1. Трасування видового вектора для визначення зміщення текстурних

координат.

2. Визначення нових координат з урахуванням рельєфу поверхні на основі

зміщення.

3. Визначення параметрів рівняння еліпса на основі текстурних координат

фрагмента за формулами (1.5), (1.6), (1,7).

4. Визначення координат вершин обмежувального прямокутника, у який

вписано еліпс.

5. Послідовна перевірка координат кожного з текселів, шо входять в

обмежувальну ділянку на відповідність рівнянню еліпса для визначення

текселів, що формують проекцію піксела на текстуру.

6. Перевірка видимості користвачем кожного з текселів, що формують

проекцію піксела на текстуру, шляхом виконання зворотного трасування

видового вектора.

7. Визначення вагового коефіцієнта для кожного текселя, що відповідає

рівнянню еліпса та умовам видимості, відповідно до обраної вагової

функції.

8. Обчислення добутку інтенсивносі кольору кожного текселя, що відповідає

рівнянню еліпса та умовам видимості, на його ваговий коефіцієнт.

Page 131: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

131

9. Визначення суми добутків інтенсивностей кольорів текселів, що

відповідають рівнянню еліпса та умовам видимості, на ваговий коефіцієнт.

10. Визначення кольору фрагмента шляхом ділення суми добутків

інтенсивностей кольорів текселів на ваговий коефіцієнт на суму вагових

коефіцієнтів.

Рисунок 5.11 – Процедура фрагментного шейдера із застосуванням анізотропної

фільтрації та рельєфного текстурування

Page 132: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

132

Вихідний код програми для генерації тривимірної карти відстаней до

поверхні наведено в додатку К. Вихідний код фрагментного шейдера для

виконання рельєфного текстурування наведено в додатку Л.

5.3 Анізотропна фільтрація текстур з використанням методів

кешування

З формул (1.5), (1.6), (1.7) видно, що коефіцієнти рівняння еліпса залежать

лише від параметрів проекції (коефіцієнти A I формули (1.6)) і координат

піксела на екрані. В переважній більшості графічних сцен для усіх полігонів

використовуються однакові параметри проекції, тому значення коефіцієнтів

A I формули (1.6) для усіх полігонів рівні. Виходячи з цього, можна зробити

висновок, що для будь якої пари x і y значення коефіцієнтів рівняння еліпса

можуть бути обчислені до початку рендерингу сцени, незалежно від належності

цих координат конкретному полігона. Діапазони можливих значень x і y

залежать від розмірів сторін екрана, які також відомі до початку рендерингу

графічної сцени. Тому існує можливість визначення та кешування в оперативній

пам’яті коефіцієнтів рівняння еліпса для усіх пар x і y до початку рендерингу

сцени з їх подальшим використанням у процесі растеризації полігонів.

Розрахуємо необхідний об’єм додаткової пам’яті для застосування такої

техніки кешування. Кожен із коефіцієнтів рівняння еліпса ( , , ,A B C F ) може бути

заданий числом з плаваючою комою. Числа з плаваючою комою в

обчислювальній техніці задають відповідно до стандарту IEEE 754 [138].

Розрядність числа з плаваючою комою одинарної точності складає 4 байти, а

для чисел з подвійною точністю – 8 байт. Тому для збереження в пам’яті

чотирьох коефіцієнтів рівняння для одного екранного піксела необхідно 16 байт

у разі використання чисел одинарної точності або 32 байти для чисел подвійної

точності. Обчислити необхідний для фільтрації усієї сцени об’єм додаткової

пам’яті для чисел одинарної точності можна за формулою

1 6V w h ,

Page 133: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

133

а для чисел подвійної точності за формулою:

3 2V w h ,

де V – необхідний об’єм додаткової пам’яті, w – ширина екрана, h – висота

екрана.

Часові характеристики при використанні такого методу кешування для

чисел з подвійною точністю на екранах з різною роздільною здатністю наведено

у таблиці 1. Моделювання проводилось на комп’ютері на базі процесора Intel(R)

Core(TM) i5-4590 з тактовою частотою 3.30ГГц, оперативна пам’ять 8Гб DDR3 з

частотою 1600МГц.

Таблиця 5.1 – Показники ефективності кешування параметрів рівняння еліпса

Роздільна здатність

Час обчислення

без кешування

(с)

Час обчислення з

кешуванням (с)

Об’єм додаткової

пам’яті (Кб)

Приріст

продуктивності (%)

VGA 640x480 0.0073 0.0018 9600 75.6

XGA 1024x768 0.0191 0.0035 24576 81.73

HD 720p 1280x720 0.0225 0.0056 28800 75.0

Full HD 1080p 1920x1080 0.0496 0.0114 64800 77.11

Як видно з таблиці 1, кешування параметрів рівняння еліпса дозволяє

зменшити час, необхідний на їх визначення (понад 75%). При цьому об’єм

необхідної для зберігання кешу пам’яті зростає пропорційно площі екрана.

Отже, використання кешування параметрів рівняння еліпса дає

можливість підвищити продуктивність усього процесу анізотропної фільтрації.

Проте, для окремих задач, що вимагають економії оперативної пам’яті, такий

підхід може бути неефективним. Тому існує потреба у використанні складніших

методів кешування, що вимагають меншого об’єму пам’яті.

Відповідно до методу прискореного обчислення похідних для визначення

коефіцієнтів рівняння еліпса при анізотропній фільтрації, часткові можуть бути

визначені за формулами (3.10), (3.11), (3.12), (3.13).

З формул (3.10) – (3.13) видно, що чисельники формул (3.10) і (3.11) не

залежать від x -координати піксела, а чисельники формул (3.12) і (3.13) від y -

координати піксела. Таким чином, за умови, що параметри проекції однакові

Page 134: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

134

для всіх полігонів сцени, значення чисельників формули (3.10) і (3.11) рівні при

опрацюванні будь якого конкретного рядка екрана, а значення чисельників

формул (3.12) і (3.13) рівні для будь якого стовпця екрана, незалежно від

конкретного полігона (рис. 5.12).

Рисунок 5.12 – Рівні значення чисельників для різних полігонів

Таким чином, значення чисельників для формул (3.10) - (3.13) можуть

бути розраховані до початку растеризації сцени. При цьому достатньо

розрахувати їх значення лише в одній точці, а для інших отримати ітеративно.

Формули (3.10) - (3.13) при обчисленні похідних в реальному часі

матимуть вигляд:

1

( ) ( )

n u mu

x I G x H y G I G x H y, 2

( ) ( )

n u mv

x I G x H y G I G x H y

,

3

( ) ( )

n u mu

y I G x H y G I G x H y

, 4

( ) ( )

n u mv

y I G x H y G I G x H y

,

де 1

n u m -4

n u m - значення чисельників, що закешовані.

Оскільки закешоване значення чисельника для формул (3.10) і (3.11)

спільне для кожного піксела в екранному рядку, а закешоване значення

чисельника для формул (3.12) і (3.13) спільне для кожного піксела в екранному

стовпці розрахувати необхідний об’єм додаткової пам’яті для чисел одинарної

точності можна за формулою:

8 8 8V w h w h ,

Page 135: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

135

а для чисел подвійної точності за формулою:

1 6 1 6 1 6V w h w h ,

де V - необхідний об’єм додаткової пам’яті, w - ширина екрана, h - висота

екрана.

Таким чином, об’єм необхідної пам’яті зросте пропорційно периметру

екрана, а не його площі, що знижує вимоги до об’єму додаткової пам’яті. Проте,

частина обчислень буде проводитись у ході рендерингу, що знижує

продуктивність порівняно з попереднім методом.

Ефект від використання такого методу кешування для чисел з подвійною

точністю на екранах із різною роздільною здатністю відображено у таблиці 2.

Таблиця 5.2 – Показники ефективності кешування чисельників формул (3) - (6)

Роздільна

здатність

Час

обчислення

без

кешування

класичним

методом (с)

Час

обчислення

без

кешування з

методом

прискореного

обчислення похідних (с)

Час

обчислення

з

кешуванням

(с)

Об’єм

додаткової

пам’яті (Кб)

Приріст

продуктивності

відносно

класичного

методу

(%)

Приріст

продуктивності

відносно

класичного

методу з

прискореним

обчисленням похідних

(%)

VGA

640x480 0.0073 0.0059 0.0051 17.5 30.7 13.97

XGA

1024x768 0.0191 0.0151 0.0130 28 31.74 13.49

HD 720p

1280x720 0.0225 0.0175 0.0152 31.25 32.5 13.5

Full HD

1080p

1920x1080

0.0496 0.0396 0.0337 46.88 31.96 14.87

Як видно з таблиці 2, запропонований метод кешування забезпечує

достатньо високий приріст продуктивності порівняно з методами без

кешування. При цьому необхідно менше затрат оперативної пам’яті порівняно з

попереднім методом.

Значення знаменника для формул (3.10) - (3.13) також може бути

розраховано до початку растеризації. У такому випадку об’єм необхідної

пам’яті зросте пропорційно площі екрана, оскільки знаменник залежить як від x

координати, так і від y координати. Так як у формул (3.10) - (3.13) чисельники

Page 136: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

136

рівні, необхідно збільшити розмір кешу лише на 4 байти, для чисел одинарної

точності, або на 8 байт, для чисел подвійної точності, на кожен піксел екрана.

Необхідний об’єм додаткової пам’яті для чисел одинарної точності можна за

формулою:

8 4 ( )V w h w h ,

а для чисел подвійної точності за формулою:

1 6 8 ( )V w h w h ,

де V - необхідний об’єм додаткової пам’яті, w - ширина екрана, h - висота

екрана.

Ефект від використання кешування чисельників і знаменників

формул (3.10) - (3.13) для чисел з подвійною точністю на екранах з різною

роздільною здатністю наведено у таблиці 3.

Таблиця 5.3 – Показники ефективності кешування чисельників та знаменників

формул (3) - (6)

Роздільна

здатність

Час

обчислення

без

кешування

класичним

методом (с)

Час

обчислення без

кешування з

методом

прискореного

обчислення

похідних (с)

Час

обчислення

з

кешуванням

(с)

Об’єм

додаткової

пам’яті (Кб)

Приріст

продуктивності

відносно

класичного

методу

(%)

Приріст

продуктивності

відносно

класичного

методу з

прискореним

обчисленням

похідних

(%)

VGA

640x480 0.0073 0.0059 0.0044 2417.5 40.43 26.05

XGA

1024x768 0.0191 0.0151 0.0110 6172 42.2 26.75

HD 720p

1280x720 0.0225 0.0175 0.0128 7231.25 43.13 27.12

Full HD

1080p

1920x1080

0.0496 0.0396 0.0284 16246.88 42.7 28.31

Як видно з таблиці 3, запропонований метод кешування забезпечує

достатньо високий приріст продуктивності порівняно з методами без кешування

та методом з кешуванням лише чисельників формул (3.10) - (3.13), однак

вимагає більших обсягів оперативної пам’яті порівняно з попереднім методом,

але нижчих порівняно з методом кешування параметрів рівняння еліпса.

Page 137: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

137

Отже, запропоновано три методи кешування проміжних результатів

обчислень при визначенні коефіцієнтів рівняння еліпса для анізотропної

фільтрації текстур. Метод кешування параметрів рівняння еліпса забезпечує

найвищий приріст продуктивності, вимагає більших затрат оперативної пам’яті

для рендерингу зображень з високою роздільною здатністю. Методи, що

базуються на кешуванні проміжних обчислень у процесі визначення похідних,

забезпечують менший приріст продуктивності. Проте вимагають менших затрат

оперативної пам’яті та можуть бути використані в системах рендерингу

реального часу з жорсткими обмеженнями оперативної пам’яті або шини даних.

Графік залежності необхідного об’єму додаткової пам’яті від роздільної

здатності екрана для трьох методів зображено на рисунку 5.13.

Рисунок 5.13 – Графік залежності необхідного об’єму пам’яті від роздільної

здатності екрана

Методи, що базуються на кешуванні проміжних обчислень у процесі

визначення часткових похідних, доцільно використовувати для рендерингу в

реальному часі анімованих графічних сцен, у яких можуть змінюватись

параметри проекції або роздільна здатність на різних кадрах. У такому випадку

Page 138: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

138

кешування доцільно здійснювати в ході рендерингу сцени з використанням

методів динамічного програмування [90], здійснюючи очищення кешу при зміні

параметрів.

5.4 Побудова системи рендерингу

У попередніх розділах запропоновано методи накладання текстур та

розрахунку освітлення, що можуть бути використані для побудови систем

кінцевої візуалізації.

Система рендерингу, яка включає всі необхідні етапи обчислень,

складається з підсистеми геометричних перетворень – ПГП, підсистеми

растеризації полігонів – ПРП, підсистеми накладання текстур – ПНТ,

підсистеми розрахунку освітлення – ПРО.

Підсистему графічних перетворень зображено на рисунку 5.14. Вона

відповідає за виконання обчислень над координатами геометричних примітивів.

ПГП складається із блоку афінних перетворень і перетворень проекції – БАПП,

блоку формування полігонів – БФП і блоку видалення невидимих поверхонь –

БВНП. На вхід БАПП подають матрицю перетворень моделі, виду та проекції

(МВПМ) та однорідні координати вершин полігонів. БАПП здійснює афінні

перетворення та перетворення проекції шляхом виконання множення

вершинних координат на МВПМ. У БФП формуються полігони на основі

координат вершин та задаються атрибути вершин (встановлюються

співвідношення між вершами, їх нормалями та текстурними координатами). На

вході БФП приймає координати вершин полігонів із БАПП, текстурні

координати вершин і координати векторів нормалей до поверхні у вершинах.

БВНП здійснює видалення невидимих ліній шляхом виконання операцій

відсікання над ребрами полігонів і визначення нових вершин та їх атрибутів. На

вхід БВНП подаються параметри полігонів. На виході БВНП повертає нові

параметри полігонів (Р).

Page 139: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

139

Рисунок 5.14 – Структурна схема підсистеми геометричних перетворень

Структурну схему підсистеми растеризації полігона зображено на

рисунку 5.15. Вона відповідає за поділ полігона на фрагменти, що відповідають

пікселам екрана. ПРП складається із блоку сортування вершин – БСВ, блоку

визначення приростів координат – БВПК, блоку інтерполяції координат – БІК,

блоку видалення невидимих точок – БВНТ. У БСВ виконується сортування

вершин за значенням ординати з метою визначення лівого, правого ребра та

рядка між ними. У БВПК визначаються прирости координат вздовж ребер. БІК

виконує інтерполяцію координат для поділу полігона на фрагменти. У БВНТ

перевіряється видимість фрагментів шляхом порівняння їх аплікати із аплікатою

відповідного фрагменту з буферу глибини простору (БГП) з метою усунення

невидимих точок із подальшого обчислювального процесу.

Рисунок 5.15 – Структурна схема підсистеми растеризації полігонів

Схему підсистеми накладання текстур зображено на рисунку 5.16. ПНТ

складається з блоку визначення текстурних координат – БВТК, блоку

визначення параметрів фільтрації текстури – БВПФ, блоку визначення вагових

Page 140: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

140

коефіцієнтів текселів – БВВК, блоку вибірки текселів – БВК, блоку фільтрації

текстури – БФТ. БВТК приймає координати фрагмента та параметри полігона та

визначає текстурні координати за формулами, наведеними в розділі 3. У БВПФ

визначаються параметри проекції піксела на текстурну площину. У БВТ

здійснюється вибірка текселів, що відповідають проекції, із текстурної

пам’яті (ТП). У БВВК здійснюється визначення вагових коефіцієнтів текселів

відповідно до гаусівської моделі піксела за формулами наведеними в розділі 2.

БФТ виконує усереднення значень кольорів текселів пропорційно їх ваговим

коефіцієнтам.

Рисунок 5.16 – Структурна схема підсистеми накладання текстур

Підсистема розрахунку освітлення (рис. 5.17) виконує розрахунок

інтенсивності кольорів пікселів відповідно до запропонованого у розділі 3

методу зафарбовування з урахуванням положення полігона на основі моделі

Фонга. ПРО складається з блоку інтерполяції векторів – БІВ, блоку нормалізації

векторів – БНВ, блоку визначення вектора падіння світла – БВВС, блоку

розрахунку вектора відбиття світла – БРВВС, блоку розрахунку дифузного

світла – БРДС, блоку розрахунку фонового світла – БРФС, блоку розрахунку

розсіяного світла, блоку розрахунку інтенсивності кольору – БРІК. БІВ виконує

інтерполяцію векторів нормалей для визначення вектору нормалі до поверхні в

заданій точці. БНВ виконує нормалізацію вектору нормалі для подальших

обчислень. БРФС здійснює обчислення фонової складової кольору на основі

кольору текстури та коефіцієнта фонового світла. У БВВС визначаються

Page 141: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

141

координати вектора падіння світла для подальшого визначення розсіяної та

дифузної складових кольору. У БРРС здійснюється обчислення розсіяної

складової кольору на основі коефіцієнту освітлення, кольору текстури та

координат вектору падіння світла. У БРВВС здійснюється розрахунок

координат вектору відбиття світла на основі координат вектору падіння світла

та вектору нормалі до поверхні. У БРДС здійснюється визначення дифузної

складової освітлення на основі значень координат вектору відбиття світла,

коефіцієнта дифузного освітлення та кольору текстури. БРІК здійснює

розрахунок інтенсивності кольору піксела на основі його фонової, розсіяної та

дифузної складової.

Рисунок 5.17 – Структурна схема підсистеми розрахунку освітлення

Загальну структурну системи кінцевої візуалізації представлено на

рисунку 5.18. Усі підсистеми та блоки запропонованої системи можуть бути

реалізовані програмними, апаратними і комбінованими засобами.

Page 142: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

142

Рисунок 5.18 – Структурна схема системи кінцевої візуалізації

Page 143: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

143

Висновки

В розділі розглянуто практичну реалізацію запропонованих методів

накладання текстур для систем візуалізації реального часу.

Запропоновано реалізацію методу текстурування з виконанням

процедурних операцій в об’єктному просторі. Показано що послідовність

операцій конвеєра рендерингу, що застосовується в сучасних відеокартах не дає

можливості реалізації даного методу. Тому розроблено альтернативний конвеєр

рендерингу на GPU засобами обчислювальних шейдерів OpenGL.

Розроблено шейдерні програмні компоненти для реалізації методів

анізотропної фільтрації текстур та рельєфного текстурування засобами

фрагментного шейдера на GPU.

Приведено схему системи кінцевої візуалізації з використанням

запропонованих методів.

Результати досліджень цього розділу наведено в публікаціях: [20], [22],

[34], [35], [36], [39], [41], [42], [43], [44]

Page 144: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

144

ВИСНОВКИ

У дисертаційній роботі розвинуто теорію кінцевої візуалізації тривимірних

графічних об’єктів, що дозволило розв’язати задачу підвищення продуктивності

формування зображень та їх реалістичності у системах комп’ютерної графіки з

використанням нових методів і засобів накладання текстур, їх фільтрації та

імітації нерівностей поверхонь. У ході досліджень було отримано такі

результати:

1. Проведено аналіз сучасних методів і засобів кінцевої візуалізації, зокрема,

на етапі текстурування. Показано, що найвищу реалістичність накладання

текстур забезпечують методи перспективно-коректного текстурвання та

анізотропної фільтрації текстур. Проте вони потребують високих

обчислювальних затрат та не забезпечують прийнятного рівня реалістичності в

ряді випадків. Обгрунтовано, що для реалізації нових методів підвищення

реалістичності та продуктивності формування графічних зображень актуальною є

розробка нових програмних засобів у вигляді шейдерних програм, що дасть

можливість ефективного підвищення реалістичності візуалізації тривимірних

моделей без затрат на модифікацію апаратного забезпечення.

2. Запропоновано метод анізотропної фільтрації з використання вагових

функцій на основі гаусівської моделі піксела з урахуванням форми проекції

піксела в текстурній площині, що дає можливість підвищити точність

визначення кольорів та реалістичність формування графічних зображень.

Точність визначення кольорів досягається за рахунок використання

математичної моделі піксела, що враховує зміну форми об’єктів у результаті

перспективних перетворень при проекції екранного піксела в текстурну

площину.

3. Запропоновано нові формули визначення об’єму відсікання тіла обертання

кривої Гаусса для використання у процесі виконання анізотропної фільтрації

текстур із субтексельною точністю, що дає можливість підвищити реалістичність

Page 145: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

145

анізотропної фільтрації текстур за рахунок урахування фізичних властивостей

піксела.

4. Вперше запропоновано використання спеціальних текстурних карт для

визначення вагових коефіцієнтів текселів при виконанні анізотропної фільтрації

текстур замість обчислення їх в реальному часі з метою вилучення з

обчислювального процесу складних розрахунків і підвищення продуктивності

процесу текстурування. Використання вагових карт дало можливість підвищення

продуктивності на 25%.

5. Запропоновано модифікацію методу Хекберта, в якому використано

ітераційні формули для визначення координат текселів, що дозволило зменшити

кількість операцій додавання та множення для визначення текстурних

координат піксела, і як наслідок, підвищити продуктивність на 26%.

6. Запропоновано нові ітераційні формули визначення параметрів рівняння

еліпса при обчисленні положення проекції піксела на текстурну площину за

методом Хекберта, що дозволяє зменшити кількість арифметичних операцій в

обчислювальному процесі та підвищити продуктивність на 18%.

7. Вперше запропоновано метод текстурування, особливість якого полягає у

виконанні процедурних операцій в об’єктному просторі та фільтрації в площині

екрана, що дає можливість усунути артефакти, характерні для методів

текстурування в екранній площині та підвищити реалістичність формування

зображень. Підвищення продуктивності рендерингу запропонованими засобами

відносно рендерингу з використанням текстурування на основі анізотропної

фільтрації складає в середньому 30%.

8. Визначено причини похибок візуалізації при використанні технології

parallax mapping у поєднанні з анізотропною фільтрацією текстур та

запропоновано комбінований метод виконання рельєфного текстурування із

використанням технології parallax mapping та анізотропної фільтрації, що

дозволяє усунути артефакти характерні для зображень, сформованих шляхом

поєднання цих технологій, за рахунок перевірки текселів, що формують проекцію

пікселя на видимість.

Page 146: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

146

9. Запропоновано модифікований метод parallax mapping з використанням

карти відстаней до поверхні, що відрізняється від класичного використанням

модифікованої карти відстаней, яка враховує умови видимості текселів, і

дозволяє підвищити продуктивність рельєфного текстурування до 11%.

10. Впровадження результатів досліджень підтверджуються відповідними

актами та використовуються на таких підприємствах і організаціях: компанія

«ДЦ Інжиніринг» для підвищення продуктивності роботи графічних станцій;

ПМВП «Фотоніка Плюс» для підвищення продуктивності та реалістичності

формування зображень у графічних системах; кафедра програмного забезпечення

Вінницького національного технічного університету для використання у

навчальному процесі.

Отримані характеристики та параметри розроблених засобів

підтверджують коректність наукових положень та адекватність запропонованих

моделей.

Page 147: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

147

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ

[1] Е. Петровичев Компьютерная графика. Litres, 2017.

[2] Д. В. Щегрикович Компьютерная графика. № УД-1709/уч. 2016.

[3] N. Tatarchuk, “Evolution of Programmable Models for Graphics Engines”,

High Performance Graphics, 2017.

[4] C. Pang, A. Hindle, B. Adams, and A. E. Hassan, “What Do Programmers

Know about Software Energy Consumption?” IEEE Software, vol. 33, no. 3,

pp. 83–89, 2016.

[5] І. В. Ільїна, та О. В. Біжко, “Аналіз особливостей візуалізації тривимірних

об'єктів”, Системи управління, навігації та зв'язку, вип. 2, c. 88-92, 2016.

[6] E. Agu, “Lecture 2: Advanced Computer Graphics Part 2: Texturing”,

Computer Graphics (CS 563), 2016

[7] Д. Вольф, OpenGL 4. Язык шейдеров. Книга рецептов. ДМК Пресс,

368с., 2015.

[8] J. Mcdonald and B. Burley, “Per-face texture mapping for real-time rendering”,

ACM SIGGRAPH 2011 Studio Talks on - SIGGRAPH 11, 2011.

[9] S. Gustavson, “Procedural Textures in GLSL,” OpenGL Insights, pp. 105–

120, 2012.

[10] И. М. Лебедева, “О некоторых проблемах текстурирования зображений”,

Вестник МГСУ, с. 4-5, 2010.

[11] О. Н. Романюк, І. В. Абрамчук, та О. О. Дудник, “Анізотропна фільтрація

з використанням вагової функції на основі Гаусівської моделі”,

Вимірювальна та обчислювальна техніка в технологічних процесах, № 2,

с. 117-121, 2016.

[12] О. Н. Романюк, І. В. Абрамчук, О. О. Дудник, та О. В. Мельник,

“Модифікація гаусівської моделі пікселя для задач антиаліайзингу”, Наукові

праці ДонНТУ. Серія "Інформатика, кібернетика та обчислювальна

техніка", № 1(20), с. 84-88, 2015.

Page 148: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

148

[13] О. Н. Романюк, та О. О. Дудник, “Розробка методів текстурування для

задач фотореалістичного рендерингу”, Матеріали сьомої міжнародної

науково-технічної конференції "Моделювання і комп’ютерна графіка", 18-24

вересня 2017 р, с. 26-33, 2017.

[14] О. Н. Романюк, та О. О. Дудник, “Підвищення реалістичності

зафарбовування тривимірних графічних об'єктів”, Вісник ХНТУ, № 3 (58),

с. 269-272, 2016.

[15] О. Н. Романюк, та О. О. Дудник, “Анізотропна фільтрація з

використанням текстурних карт вагових коефіцієнтів”, Реєстрація,

зберігання і обробка даних, № 3, c. 34-41, 2017.

[16] С. О. Романюк, О. О. Дудник, Л. А. Савицька, та О. В. Романюк,

“Анізотропна фільтрація з використанням вагових функцій”, Вісник

Херсонського національного технічного університету, № 3, c. 459-46, 2015

[17] О. Н. Романюк, та О. О. Дудник, “Метод підвищення продуктивності

перспективно-коректного текстурування”, Наукові праці ДонНТУ. Серія

“Інформатика, кібернетика та обчислювальна техніка”, № 1 (22), c. 43-46,

2016.

[18] A. N. Romanyuk, and O. O. Dudnyk, "Ways to improve performance of

anisotropic texture filtering", Control and Communications (SIBCON), 2017

International Siberian Conference on. IEEE, 2017, [Online]. Available:

https://ieeexplore.ieee.org/document/7998589/

[19] О. Н. Романюк та О. О. Дудник, “Підвищення продуктивності

перспективно-коректного текстурування з використанням анізотропної

фільтрації”, Вимірювальна та обчислювальна техніка в технологічних

процесах, 2016, № 3, с. 192-195.

[20] О. Н. Романюк та О. О. Дудник, “Анізотропна фільтрація текстур з

використанням методів кешування”, Вісник Вінницького політехнічного

інституту, 2016, № 6, с. 59-64.

[21] О. Н. Романюк, та О. О. Дудник, “Підвищення продуктивності

текстурування з виконанням процедурних операцій в об’єктному просторі”,

Page 149: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

149

Наукові праці ДонНТУ. Серія “Інформатика, кібернетика та обчислювальна

техніка”, 2016, № 2 (23), c. 45-51.

[22] О. Н. Романюк, О. О. Дудник, та Н. С. Костюкова "Реалізація

альтернативного конвеєра рендерингу на GPU з використанням

обчислювальних шейдерів", Наукові праці Донецького національного

технічного університету Серія: “Інформатика, кібернетика та

обчислювальна техніка”, Покровськ, 2017.

[23] О. Н. Романюк, та О. О. Дудник, “Особливості анізотропної фільтрації

текстур при використанні технології parallax mapping”, Вісник Хмельницького

національного університету. Серія "Технічні науки", 2017, № 1(245), c. 236-

245.

[24] О. Н. Романюк, О. О. Дудник, та О. В. Романюк, “Модифікований метод

parallax mapping з використанням карти відстаней до поверхні”, Інформаційні

технології та комп’ютерна інженерія, 2017, № 1, c. 78-82.

[25] О. Н. Романюк, та О. О. Дудник, “Використання модифікованої мір-

піраміди для підвищення продуктивності parallax mapping”, Вісник

Вінницького політехнічного інституту, №1, с. 112-116, 2018.

[26] О. Н. Романюк, та О. О. Дудник, "Еволюція конвеєра рендерингу в

відеокартах", Збірник матеріалів міжнародної науково-практичної

Інтернет-конференції «Електронні інформаційні ресурси: створення,

використання, доступ», 24-25 жовтня 2016 р. с. 440-448, 2016.

[27] S. I. Vyatkin, S. A. Romanyuk, S. V. Pavlov and O. O. Dudnyk, “Function-

based gpu architecture”, Measuring and computing equipment in technological

processes, 2015, № 1, pp. 139-144.

[28] О. О. Дудник, О. Н. та Романюк, “Аналіз методів фільтрації текстур”

Матеріали міжнародної науково-практичної Інтернет-конференції "Молодь

в технічних науках:дослідження, проблеми, перспективи (МТН-2015).

Вінниця, 2015, [Електронний ресурс]. Доступно:

http://conf.inmad.vntu.edu.ua/fm/index.php?page=materials&line=11&mat=115.

Page 150: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

150

[29] О. Н. Романюк, та О. О. Дудник “Модифікація білінійного текстурування

з використнням кругової моделі пікселя” Вимірювальна та обчислювальна

техніка в технологічних процесах, 2016, № 1, c. 243-245.

[30] О. Н. Романюк, та О. О. Дудник, “Математичні моделі Пікселя”, Збірник

матеріалів Всеукраїнської науково-практичної конференції "Електронні

інформаційні ресурси в освіті і науці: створення, використання, доступ",

грудень 2014 р., Вінниця, 2014, c. 3-8.

[31] С. И. Вяткин, А. Н. Романюк, и А. А. Дудник, “Анизотропная фильтрация

текстуры в реальном времени”, Измерительная и вычислительная техника в

технологических процесах, 2015, № 4, c. 217-221.

[32] О. Н. Романюк, О. О. Дудник, “Аналіз методів анізотропної фільтрації

текстур”, Збірник матеріалів Всеукраїнської науково-практичної конференції

"Електронні інформаційні ресурси в освіті і науці: створення, використання,

доступ", грудень 2014 р., Вінниця, 2014., c. 3-8.

[33] О. Н. Романюк, О. О. Дудник, та С. В. Вяткін, “Шляхи підвищення

продуктивності анізотропної фільтрації”, Матеріали міжнародної науково-

практичної Інтернет-конференції "Молодь в технічних науках:дослідження,

проблеми, перспективи (МТН-2016), Вінниця, 2016.

[Електронный ресурс]. Доступно: http://conf.inmad.vntu.edu.ua/fm/index.php?p

age=materials&line=20&mat=343

[34] О. Н. Романюк, та О. О. Дудник, Комп'ютерна програма “Визначення

кольору пікселя з використанням кругової моделі”, Свідоцтво про реєстрацію

авторського права на твір №66660, К.: Державна служба інтелектуальної

власності України, 15.07.16.

[35] О. Н. Романюк, та О. О. Дудник, Комп'ютерна програма “Обчислення

об’єму перетину пікселя ”, Свідоцтво про реєстрацію авторського права на

твір №61823, К.: Державна служба інтелектуальної власності України,

25.09.15.

[36] О. Н. Романюк, та О. О. Дудник, Комп'ютерна програма “Система

експертного оцінювання сформованого зображення по відношенню до

Page 151: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

151

еталону”, Свідоцтво про реєстрацію авторського права на твір №66659, К.:

Державна служба інтелектуальної власності України, 15.07.16.

[37] О. Н. Романюк, О. О. Дудник, та Б. Л. Войт Комп'ютерна програма

“Рендеринг тривимірних зображень із використанням процедурних операцій

в об’єктному просторі”, Свідоцтво про реєстрацію авторського права на твір

№71796, К.: Державна служба інтелектуальної власності України, 05.05.17.

[38] О. Н. Романюк, О. О. Дудник, та О. В. Мельник, “Неортогональна

растеризація при перспективнокоректному текстуруванні” VI

Международная конференция «Моделирование и компьютерная графика»,

Красноармійськ, 25-29 травня 2015 р, c. 174-178.

[39] S. I. Vyatkin, S. A. Romanyuk, and O. O. Dudnyk, “Geometric modeling with

scalar perturbation functions”, Measuring and computing equipment in

technological processes, 2014, № 4, pp. 45-50.

[40] О. О. Дудник, “Аналіз методів рельєфного текстурування”, Електронні

інформаційні ресурси: створення, використання, доступ: Збірник матеріалів

Міжнародної науково-практичної Інтернет- конференції., Вінниця, 2017.

[41] О. О. Дудник, Комп'ютерна програма “Генерація вагових текстурних

карт”, Свідоцтво про реєстрацію авторського права на твір №78246, К.:

Міністерство економічного розвитку і торгівлі України, 12.04.18

[42] О. О. Дудник, Комп'ютерна програма “Анізотропна фільтрація текстур з

використанням вагової функції на основі гаусівської моделі пікселя”,

Свідоцтво про реєстрацію авторського права на твір №78247, К.:

Міністерство економічного розвитку і торгівлі України, 12.04.18

[43] О. О. Дудник, Комп'ютерна програма “Анізотропна фільтрація текстур з

використанням вагових текстурних карт”, Свідоцтво про реєстрацію

авторського права на твір №78249, К.: Міністерство економічного розвитку і

торгівлі України, 12.04.18

[44] О. О. Дудник, Комп'ютерна програма “Генерація текстурних карт

відстаней до поверхні на основі карт висот з урахуванням видимості точок

Page 152: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

152

поверхні”, Свідоцтво про реєстрацію авторського права на твір №78248, К.:

Міністерство економічного розвитку і торгівлі України, 12.04.18

[45] B. G. Blundell, “An Introduction to Computer Graphics and Creative 3-D

Environments”, Springer – Verlag London Limited, 2008.

[46] Дж. Фоли, и А. Вэн Дэм, Основы интерактивной машинной графики,

М.: Мир, 1995, 368 c.

[47] A. Игнатенко, “Методы представления дискретных трехмерных даннях”,

Компьютерная графика и мультимедиа., №1(1), 2003, [Online]. Available:

http://cgm.computergraphics.ru/content/view/22

[48] Ágnecz-Roland, Norbert Zsolt Zentai-Gergely, and Takács-Sándor Kaczur.

"Hardware accelerated 3D/2D rendering." Journal of Applied Multimedia 1,

VIII, 2013.

[49] H. Bao and W. Hua, “Architecture of Real-Time Rendering Engine”, Advanced

Topics in Science and Technology in China Real-Time Graphics Rendering Engine,

pp. 21–192, 2011.

[50] Д. И. Мазовка, “Формальный подход к решению задачи визуализации”,

Международный конгресс по информатике: информационные системы и

технологии: материалы международного научного конгресса 31 окт. – 3

нояб. 2011 г. : в 2 ч. Ч. 2., Минск, БГУ, 2011, c. 198-203.

[51] C. Doppioslash, “The Graphics Pipeline”, Physically Based Shader

Development for Unity 2017, pp. 33–42, Jul. 2017.LAAKSONEN, Jarno, et al.

OpenGL rendering pipeline. 2017.

[52] S. Laine and T. Karras, “High-performance software rasterization on GPUs”

Proceedings of the ACM SIGGRAPH Symposium on High Performance Graphics -

HPG 11, 2011.

[53] А. В. Боресков, и А. А. Харламов, “Архитектура и программирование

массивно – параллельных вычислительных систем”, НОЦ “Паралельные

выцисления”. [Електронный ресурс]. Доступно: http://nvidia.esyr.org/files/prese

ntations/0829_Architecture.pdf

Page 153: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

153

[54] К. В. Снопов, та О. Н. Романюк, “Використання графічних конвеєрів для

візуалізації тривирмірних моделей”, Матеріали міжнародної науково-

практичної Інтернет-конференції "Молодь в технічних науках:дослідження,

проблеми, перспективи (МТН-2015), Вінниця, 16-17 квітня 2015 р.

[55] О. Н. Романюк, М. Д. Обідник, О. В. Романюк, та Н. С. Костюкова,

“Особливості архітектурної побудови систем формування тривимірних

зображень” Наукові праці Донецького національного технічного

університету. Серія "Інформатика, кібернетика та обчислювальна техніка",

2010, № 12(165), c. 87-93.

[56] C. Mcclanahan, “History and evolution of gpu architecture”, A Survey Paper,

2010, р. 9.

[57] А. В. Орещенко, “Апаратне забезпечення для тривимірної графіки:

причини становлення і занепаду фірм-виробників”, Часопис картографії,

2013, c. 241-269.

[58] M. Bailey, and S. Cunningham, Graphics shaders: theory and practice. CRC

Press, 2016.

[59] Ф. Хилл, OpenGL. Программирование компьютерной графики. Для

профессионалов. СПб.: Питер, 2002, 1088с.

[60] P. S. Heckbert, “Survey of Texture Mapping”, IEEE Computer Graphics and

Applications, vol. 6, no. 11, pp. 56–67, 1986.

[61] А.Ю. Поляков, и В.А. Брусенцов, Методы и алгоритмы компьютерной

графики. СПб.: БХВ – Петербург, 2003, 560 c.

[62] T. P. Kersten, and D. Stallmann, “Automatic Texture Mapping Of Architectural

And Archaeological 3D Models,” ISPRS - International Archives of the

Photogrammetry, Remote Sensing and Spatial Information Sciences, vol. XXXIX-

B5, pp. 273–278, 2012.

[63] С. И. Вяткин, С. А. Романюк, и С. О. Крищук, “Метод вычисления

текстурных координат для отображения текстуры на плоские полигоны”

Вимірювальна та обчислювальна техніка в технологічних процесах, 2012,

№ 1, c. 144-148.

Page 154: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

154

[64] Д. Роджерс, Алгоритмические основы машинной графики. Мир, Москва,

1989, 512с.

[65] Д. Роджерс, Математические основы машинной графики. Мир, Москва,

2001, 604с.

[66] А. М. Данилов, и И. А. Гарькина, Интерполяция, аппроксимация,

оптимизация: анализ и синтез сложных систем. Монография. 2014.

[67] Е. Янке, Ф. Эмде, и Ф. Леш, Специальные функции: Формулы, графики,

таблицы. Directmedia, 2016.

[68] Д. С. Яковлев, и М. Н. Фаворская, “Технологии фильтрации текстур”,

Актуальные проблемы авиации и космонавтики, 2011, 1.7.

[69] А. В. Белоконь, А. В. Проскурин, и М. Н. Фаворская, “Классификация

методов синтеза текстур”, Актуальные проблемы авиации и космонавтики,

2011, 1.7.

[70] L. Williams, “Pyramidal Parametrics”, Proceedings of the 10th Annual

Conference on Computer Graphics and Interactive Techniques - SIGGRAPH 83,

1983, doi:10.1145/800059.801126.

[71] Р. Гонсалес, и Р. Вудс, Цифровая обработка зображений. М:

Техносфера, 2005, 507 с.

[72] X. U. Ying, “An Improved Texture Rendering Technique Based on MipMap

Algorithm”, Journal of Mianyang Normal University, 2013, 5: 017.

[73] W. Matusik, “Sampling, Aliasing, & Mipmaps”, MIT OpenCourseWare 6.837

Computer Graphics, 2012.

[74] J. McCormack, R. Perry, K. I. Farkas, and N. P. Jouppi, “Feline: fast elliptical

lines for anisotropic texture mapping” SIGGRAPH ’99: Proceedings of the 26th

annual conference on Computer graphics and interactive techniques, ACM

Press/Addison-Wesley Publishing Co., pp. 243–250, 1999.

[75] В. М. Гусятин, Я. В. Чаговец, и Д. Г. Кожушко, “Метод анизотропной

фильтрации текстур при синтезе изображений обратным трассированием”,

Информатика, кибернетика и вычислительная техника (ИКВТ-2009),

Донецк: ДонНТУ, 2009, № 10 (153), c. 64-69.

Page 155: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

155

[76] Greene, Ned, and Paul Heckbert, “Creating Raster Omnimax Images from

Multiple Perspective Views Using the Elliptical Weighted Average Filter”, IEEE

Computer Graphics and Applications, vol. 6, no. 6, 1986, pp. 21–27.,

doi:10.1109/mcg.1986.276738.

[77] P. Mavridis, and G. Papaioannou, “High Quality Elliptical Texture Filtering

on GPU”, Symposium on Interactive 3D Graphics and Games on - I3D 11, 2011,

doi:10.1145/1944745.1944749.

[78] M. Zwicker, et al. “EWA Splatting”, IEEE Transactions on Visualization and

Computer Graphics, vol. 8, no. 3, 2002, pp. 223–238.,

doi:10.1109/tvcg.2002.1021576.

[79] L. Ren, et al. “Object Space EWA Surface Splatting: A Hardware Accelerated

Approach to High Quality Point Rendering”, Computer Graphics Forum, vol. 21,

no. 3, 2002, pp. 461–470., doi:10.1111/1467-8659.00606.

[80] M. Lundgren, E. Hrkalovic, Review of Displacement Mapping Techniques and

Optimization. Blekinge Tekniska Högskola, 2012.

[81] S. Marschner, “Detail mapping” CS562 2016, [Online]. Available: https://pdfs.s

emanticscholar.org/c4b4/cbb4d0038944774c893cae3572007e1dd476.pdf

[82] A. Tujula, et al. Lighting and normal mapping in computer graphics:

implementing normal mapping in HactEngine. 2016.

[83] J. Hanyoung, and J. Han, “Feature-Preserving Displacement Mapping With

Graphics Processing Unit (GPU) Tessellation.” Computer Graphics Forum, vol.

31, no. 6, Apr. 2012, pp. 1880–1894., doi:10.1111/j.1467-8659.2012.03068.x..

[84] K. Kosin, “Parallax Occlusion Mapping in Augmented Reality Case Study on

Facade of Sino Portuguese Architecture Phuket, Thailand”, 2015 Digital Heritage,

2015, doi:10.1109/digitalheritage.2015.7413885.

[85] N. Tatarchuk, “Dynamic Parallax Occlusion Mapping with Approximate Soft

Shadows.” Proceedings of the 2006 Symposium on Interactive 3D Graphics and

Games - SI3D 06, 2006, doi:10.1145/1111411.1111423.

Page 156: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

156

[86] K. Dmitriev, and E. Makarov, “Generating Displacement from Normal Map

for Use in 3D Games”, ACM SIGGRAPH 2011 Talks on - SIGGRAPH 11, 2011,

doi:10.1145/2037826.2037839.

[87] C. González, M. Pérez, J. M. Orduña, “A hybrid GPU technique for real-time

terrain visualization”, Proceedings of Computational and Mathematical Methods in

Science and Engineering, 2016.

[88] T. Welsh, et al. “Parallax mapping with offset limiting: A perpixel

approximation of uneven surfaces”, Infiscape Corporation, 2004, рр. 1-9.

[89] M. Mcguire, M. Mcguire, “Steep parallax mapping”, I3D 2005 Poster, 2005,

рр. 23-24.

[90] С. Дасгупта, X. Пападимитриу, и У. Вазирани, Алгоритмы. М. : МЦНМО,

2014, 320 с.

[91] N. Tatarchuk, “Practical Dynamic Parallax Occlusion Mapping”, ACM

SIGGRAPH 2005 Sketches on - SIGGRAPH 05, 2005,

doi:10.1145/1187112.1187240.

[92] Yu-Jen Chen, Yung-Yu Chuang, “Anisotropic cone mapping”, Proceedings:

APSIPA ASC 2009: Asia-Pacific Signal and Information Processing Association,

2009 Annual Summit and Conference. Asia-Pacific Signal and Information

Processing Association, 2009 Annual Summit and Conference, International

Organizing Committee, 2009. p. 660-663.

[93] W. Donnelly, "Per-pixel displacement mapping with distance functions", GPU

gems 2.22, 2005.

[94] К. С. Солнушкин, “О значении терминов "производительность" и

"быстродействие" в применении к ЭВМ”, Научно-технические ведомости

СПбГПУ №3,2008, 59 c.

[95] I. V. Kerlow, The art of 3D: computer animation and effects. John Wiley &

Sons. 2004.

[96] P. Demorest, GPU benchmarking. 2010.

Page 157: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

157

[97] “Монітори”, Hotline - порівняти ціни в інтернет-магазинах України:

Відгуки, Відео Огляди, Характеристики. [Електронный ресурс]. Доступно:

https://hotline.ua/computer/monitory/

[98] A. Watt, and F. Policarpo, 3D Games: Real-Time Rendering and Software

Technology, Volume 1. Addison Wesley, Dec, 2000.

[99] М. Д. Обідник, та А. О. Стахов. "Аналіз методів оцінки якості графічних

зображень", 2011.

[100] Ю. И. Монич, и В. В. Старовойтов Оценки качества для анализа

цифровых зображений. Государственное научное учреждение

«Объединенный інститут проблем інформатики Национальной академии наук

Беларуси» (ОИПИ НАН Беларуси), г.Минск, Беларусь, 2008.

[101] “Коэффициент конкордации или согласия Кендалла”, Mathmetod

[Електронный ресурс]. Доступно: http://mathmetod.wikispaces.com/коэффицие

нт+конкордации+или+согласия+Кендалла

[102] В. І. Жлуктенко, та С. І. Наконечний, Теорія ймовірностей і математична

статистика. К.: ІЗМН, 1997.

[103] R. F. Lyon, “Phong Shading Reformulation for Hardware Renderer

Simplification”, Apple Technical Report #43, August 2, 1993.

[104] Д. А. Кулагин, “Модели затенения. Плоская модель. Затенение по Гуро и

Фонгу”, Компьютерная графика. Теория, алгоритмы, примеры на С++ и

OpenGL. [Електронный ресурс]. Доступно: http://compgraphics.info/3D/lighting

/shading_model.php

[105] Д. Херн, и М. П. Бейкер, Компьютерная графика и стандарт OpenGL, 3-е

издание. Издательский дом «Вильямс», 2005, 1168 с.

[106] M. Pharr, and R. Fernando, GPU gems 2: programming techniques for high-

performance graphics and general-purpose computation. Addison-Wesley

Professional, 2005,

[107] О.Н. Романюк, Комп'ютерна графіка: навч. Посіб. Вінниця : ВДТУ, 2001,

130 с.

Page 158: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

158

[108] О. В. Романюк, та В. В. Войтко, “Використання барицентричних

координат для розрахунку векторів у довільній точці трикутника”,

Вимірювальна та обчислювальна техніка в технологічних процесах, 2009,

№1, c. 198–202.

[109] C. Lomont, Fast inverse square root. Technical Report, 2003.

[110] О. Н. Романюк, та А. В. Чорний, Високопродуктивні методи та засоби

зафарбовування тривимірних графічних об’єктів. Монографія. УНІВЕСУМ-

Вінниця, Вінниця, 2006, 190 с.

[111] Ю. Н. Косников, Геометрические преобразования в компьютерной

графике. Учебное пособие: Пензенский государственный университет,

Пенза, 50 с, 2011.

[112] Д. А. Кулагин, “Аффинные преобразования пространства”,

Компьютерная графика. Теория, алгоритмы, примеры на С++ и OpenGL.

[Електронный ресурс]. Доступно:

http://compgraphics.info/3D/3d_affine_transformations.php

[113] E. Lengyel, Mathematics for 3D game programming and computer graphics.

Cengage Learning, 2012.

[114] Д. А. Кулагин, “Векторы в пространстве. Однородные координаты.

Матрицы преобразований”, Компьютерная графика. Теория, алгоритмы,

примеры на С++ и OpenGL. [Електронный ресурс]. Доступно:

http://compgraphics.info/3D/3d_definitions.php

[115] J. Kessenich, D. Baldwin, and R. Rost, The OpenGL Shading Language

Version: 4.30 Document Revision: 7. The Khronos Group Inc, 2013.

[116] K. Gray, Microsoft DirectX 9. Programmable Graphics Pipeline. Microsoft

Press, 2003, 458p.

[117] W. Engel, GPU Pro 5: advanced rendering techniques. CRC Press, 2014.

[118] R. Marroquim, and A. Maximo, “Introduction to GPU Programming with

GLSL” 2009 Tutorials of the XXII Brazilian Symposium on Computer Graphics

and Image Processing, 2009, doi:10.1109/sibgrapi-tutorials.2009.9.

Page 159: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

159

[119] R. Madsen, and S. Madsen, OpenGL Game Development By Example. Packt

Publishing, 2016, 340 p.

[120] M. Bailey, OpenGL Compute Shaders, Oregon State University, 2016.

[121] J. Darby, Beginning OpenGL game programming. Cengage Learning, 2014.

[122] P. Eimandar, DirectX 11.1 Game Programming. Packt, 2013, 146c.

[123] F. Luna, Introduction to 3D Game Programming with DirectX 11. Mercury

Learning & Information, 2012, 754c.

[124] Direct3D 11 Graphics. [Online]. Avalible: https://msdn.microsoft.com/en-

us/library/windows/desktop/ff476080(v=vs.85).aspx

[125] The Khronos, Vulkan Working Group Vulkan 1.0.66 - A Specification. The

Khronos Group Inc, Version 1.0.66, 2017-11-27 09:15:39Z

[126] B. Stroustrup, The C++ Programming Language, 4. Addison-Wesley

Professional, 2013, 1368р.

[127] Б. Страуструп, Программирование. Принципы и практика с

использованием C++ (2е издание). Вильямс, 2016, 1328c.

[128] С. Мейерс, Эфективный и современный С++. 42 рекомендации по

использованию С++11 и С++14. ООО «И.Д. Вильямс»,2016, 304 с.

[129] R. Smith, “Working Draft, Standard for Programming Language C++ N4659”,

Google Inc., 2017-03-21. [Online]. Avalible: http://www.open-

std.org/jtc1/sc22/wg21/docs/papers/2017/n4659.pdf

[130] J. Kessenich, D. Baldwin, and R. Rost, “The OpenGL Shading Language

Version: 4.50 Document Revision: 7”, The Khronos Group Inc, 2017.

[131] J. Kessenich, G. Sellers, and D. Shreiner, OpenGL Programming Guide: The

Official Guide to Learning OpenGL, Version 4.5 with SPIR-V, 9th Edition,

Addison-Wesley Professional, 2017, 802р.

[132] G. Sellers, R. S. Wright Jr., and N. Haemel, OpenGL SuperBible:

Comprehensive Tutorial and Reference, 7th Edition. Addison-Wesley, 2015, 880c.

[133] J. Clevenger, and V. Scott Gordon, Computer Graphics Programming in

OpenGL with Java. Mercury Learning And Information, 2017, 332р.

Page 160: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

160

[134] В. П. Майданюк, Кодування та захист інформації. ВНТУ, Вінниця, 2009,

164 с.

[135] А. М. Пєтух, В. П. Майданюк, та О. О. Ліщук, “Аналіз алгоритмів

стиснення даних і їх програмних реалізацій”, Інформаційні технології та

комп'ютерна інженерія, № 2, c. 4-9, 2016.

[136] Y. Jiang, et al. “Texture Compression with Variable Data Formats”, 2012 IEEE

12th International Conference on Computer and Information Technology, 2012,

doi:10.1109/cit.2012.71.

[137] Krause, Philipp Klaus, “Ftc—Floating Precision Texture Compression”,

Computers & Graphics, vol. 34, no. 5, 2010, pp. 594–601.,

doi:10.1016/j.cag.2010.06.005.

[138] “754-2008 — IEEE Standard for Floating-Point Arithmetic. Revision of

ANSI/IEEE Std 754-1985”, IEEE Explore® Digital Library. [Online]. Avalible

http://ieeexplore.ieee.org/document/4610935/

Page 161: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

161

ДОДАТКИ

Page 162: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

162

Додаток А.

Результати аналізу продуктивності анізотропної фільтрації з

використанням вагових функцій

Page 163: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

163

Page 164: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

164

Додаток Б.

Результати аналізу продуктивності модифікації методу Хекберта для

перспективно-коректного текстурування

Page 165: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

165

Page 166: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

166

Page 167: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

167

Додаток В.

Результати аналізу продуктивності анізотропної фільтрації з прискореним

визначенням параметрів рівняння еліпса

Page 168: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

168

Page 169: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

169

Page 170: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

170

Page 171: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

171

Додаток Г.

Результати аналізу продуктивності методу текстурування з виконанням

процедурних операцій в об’єктному просторі

Page 172: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

172

Page 173: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

173

Page 174: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

174

Page 175: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

175

Додаток Д.

Лістинг вихідного коду програмної реалізації методу текстурування з

виконаням процедурних операцій в об’єктному просторі

Шейдер повороту

#version 430 layout (local_size_x = 1) in; layout (std430 , binding=3) buffer Vert { mat3x4 Position[]; }; layout (std430 , binding=4) buffer TexVert { mat3x2 UV[]; }; layout (std430 , binding=5) buffer S { int Square[]; }; layout (std430 , binding=6) buffer Norm { vec4 Normals[]; }; layout (std430 , binding=7) buffer BackR { mat4 Rotates[]; }; uniform mat4 MV; struct Angles { float sinX; float cosX; float sinY; float cosY; }; vec3 getPlaneNormal(vec4 v1, vec4 v2, vec4 v3){ float v1x = v2.x-v1.x, v1y = v2.y-v1.y, v1z = v2.z-v1.z, v2x = v3.x-v1.x, v2y = v3.y-v1.y, v2z = v3.z-v1.z; return vec3(v1y*v2z-v1z*v2y, v1z*v2x-v1x*v2z, v1x*v2y-v1y*v2x); } Angles getAngles(vec3 normal){ float d = sqrt(normal.y*normal.y + normal.z*normal.z); return Angles(normal.y/d, normal.z/d, normal.x, d); } vec3 mul(vec3 v, mat4 m){ vec4 r = m * vec4(v, 0); if (r.w != 0.0) return vec3(r.x/r.w, r.y/r.w, r.z/r.w); return r.xyz; } void turnPoygon(uint idx){ vec3 normal = getPlaneNormal(Position[idx][0], Position[idx][1], Position[idx][2]); normal = normalize(normal);

Page 176: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

176

Normals[idx] = vec4(normal, 0.0); Angles ang = getAngles(normal); Normals[idx] = vec4(ang.sinX, ang.cosX, ang.sinY, ang.cosY); mat4 mTX = mat4( vec4(1, 0, 0, 0), vec4(0, ang.cosX, ang.sinX, 0), vec4(0, -ang.sinX, ang.cosX, 0), vec4(0, 0, 0, 1) ); mat4 mTY = mat4( vec4( ang.cosY, 0, ang.sinY, 0), vec4( 0, 1, 0, 0), vec4(-ang.sinY, 0, ang.cosY, 0), vec4( 0, 0, 0, 1) ); mat4 mT = mTY * mTX; Position[idx] = mT * Position[idx]; mTX = mat4( vec4(1, 0, 0, 0), vec4(0, ang.cosX,-ang.sinX, 0), vec4(0, ang.sinX, ang.cosX, 0), vec4(0, 0, 0, 1) ); mTY = mat4( vec4( ang.cosY, 0, -ang.sinY, 0), vec4( 0, 1, 0, 0), vec4( ang.sinY, 0, ang.cosY, 0), vec4( 0, 0, 0, 1) ); Rotates[idx] = mTX * mTY; } void swapVertexes(uint idx){ vec4 buff; vec2 tbuf; if (Position[idx][1].y < Position[idx][0].y) { buff = Position[idx][1]; Position[idx][1] = Position[idx][0]; Position[idx][0] = buff; tbuf = UV[idx][1]; UV[idx][1] = UV[idx][0]; UV[idx][0] = tbuf; } if (Position[idx][2].y < Position[idx][0].y) { buff = Position[idx][2]; Position[idx][2] = Position[idx][0]; Position[idx][0] = buff; tbuf = UV[idx][2]; UV[idx][2] = UV[idx][0]; UV[idx][0] = tbuf; } if (Position[idx][1].y > Position[idx][2].y) { buff = Position[idx][2]; Position[idx][2] = Position[idx][1]; Position[idx][1] = buff; tbuf = UV[idx][2]; UV[idx][2] = UV[idx][1]; UV[idx][1] = tbuf; }

Page 177: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

177

} void roundPositions(uint idx) { for (uint i = 0; i < 3; ++i){ for (uint j = 0; j < 3 ; j ++){ Position[idx][i][j] = round(Position[idx][i][j]); } } } void getSquare2(uint idx) { float dx13 = 0, dx12 = 0, dx23 = 0; float x1 = round(Position[idx][0].x); float x2 = round(Position[idx][1].x); float x3 = round(Position[idx][2].x); float y1 = round(Position[idx][0].y); float y2 = round(Position[idx][1].y); float y3 = round(Position[idx][2].y); float b; if (y2 < y1) { b = y1; y1 = y2; y2 = b; b = x1; x1 = x2; x2 = b; } if (y3 < y1) { b = y1; y1 = y3; y3 = b; b = x1; x1 = x3; x3 = b; } if (y2 > y3) { b = y2; y2 = y3; y3 = b; b = x2; x2 = x3; x3 = b; } if (y3 != y1) { dx13 = x3 - x1; dx13 /= y3 - y1; } if (y2 != y1) { dx12 = x2 - x1; dx12 /= y2 - y1; } if (y3 != y2) { dx23 = x3 - x2; dx23 /= y3 - y2; } float wx1 = x1; float wx2 = wx1; float _dx13 = dx13; if (dx13 > dx12) { float b = dx13; dx13 = dx12; dx12 = b; } int square = 0; for (int i = int(y1); i < y2; i++){ square += int(round(wx2) - round(wx1)); wx1 += dx13; wx2 += dx12; }

Page 178: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

178

if (y1 == y2){ wx1 = x1; wx2 = x2; } if (_dx13 < dx23) { float b = _dx13; _dx13 = dx23; dx23 = b; } for (int i = int(y2); i <= y3; i++){ square += int(round(wx2) - round(wx1)); wx1 += _dx13; wx2 += dx23; } Square[idx] = square; } void getSquare(uint idx){ float dx13 = 0, dx12 = 0, dx23 = 0; if (Position[idx][2].y != Position[idx][0].y) { dx13 = Position[idx][2].x - Position[idx][0].x; dx13 /= Position[idx][2].y - Position[idx][0].y; } if (Position[idx][1].y != Position[idx][0].y) { dx12 = Position[idx][1].x - Position[idx][0].x; dx12 /= Position[idx][1].y - Position[idx][0].y; } if (Position[idx][2].y != Position[idx][1].y) { dx23 = Position[idx][2].x - Position[idx][1].x; dx23 /= Position[idx][2].y - Position[idx][1].y; } float wx1 = Position[idx][0].x; float wx2 = wx1; float _dx13 = dx13; if (dx13 > dx12) { float b = dx13; dx13 = dx12; dx12 = b; } int square = 0; for (int i = int(Position[idx][0].y); i < Position[idx][1].y; i++){ square += int(round(wx2) - round(wx1)); wx1 += dx13; wx2 += dx12; } if (Position[idx][0].y == Position[idx][1].y){ wx1 = Position[idx][0].x; wx2 = Position[idx][1].x; } if (_dx13 < dx23) {

Page 179: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

179

float b = _dx13; _dx13 = dx23; dx23 = b; } for (int i = int(Position[idx][1].y); i <= Position[idx][2].y; i++){ square += int(round(wx2) - round(wx1)); wx1 += _dx13; wx2 += dx23; } Square[idx] = square; } void main() { uint idx = gl_GlobalInvocationID.x; turnPoygon(idx); getSquare2(idx); }

Шейдер растеризації #version 430 layout (local_size_x = 1) in; layout (std430 , binding=3) buffer Vert { mat3x4 Position[]; }; layout (std430 , binding=5) readonly buffer S { uint Square[]; }; layout (std430 , binding=8) buffer Pix { vec4 Pixel[]; }; layout (std430 , binding=9) buffer PIndex { uint PolyIndex[]; }; layout (std430 , binding=10) buffer Offs { uint Offset[]; }; void rasterize2(uint idx) { uint offset = Offset[idx]; float dx13 = 0, dx12 = 0, dx23 = 0; float x1 = round(Position[idx][0].x); float x2 = round(Position[idx][1].x); float x3 = round(Position[idx][2].x); float y1 = round(Position[idx][0].y); float y2 = round(Position[idx][1].y); float y3 = round(Position[idx][2].y); float b; if (y2 < y1) { b = y1; y1 = y2; y2 = b; b = x1; x1 = x2; x2 = b; } if (y3 < y1) { b = y1; y1 = y3; y3 = b;

Page 180: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

180

b = x1; x1 = x3; x3 = b; } if (y2 > y3) { b = y2; y2 = y3; y3 = b; b = x2; x2 = x3; x3 = b; } if (y3 != y1) { dx13 = x3 - x1; dx13 /= y3 - y1; } if (y2 != y1) { dx12 = x2 - x1; dx12 /= y2 - y1; } if (y3 != y2) { dx23 = x3 - x2; dx23 /= y3 - y2; } float wx1 = x1; float wx2 = wx1; float _dx13 = dx13; if (dx13 > dx12) { float b = dx13; dx13 = dx12; dx12 = b; } for (int i = int(y1); i < y2; i++){ for (int j = int(round(wx1)); j <= int(round(wx2)); j++){ Pixel[offset] = vec4(j, i, Position[idx][0].z, 1.0); PolyIndex[offset] = idx; offset++; } wx1 += dx13; wx2 += dx12; } if (y1 == y2){ wx1 = x1; wx2 = x2; } if (_dx13 < dx23) { float b = _dx13; _dx13 = dx23; dx23 = b; } for (int i = int(y2); i <= y3; i++){ for (int j = int(round(wx1)); j <= int(round(wx2)); j++){ Pixel[offset] = vec4(j, i, Position[idx][0].z, 1.0); PolyIndex[offset] = idx; offset++; } wx1 += _dx13; wx2 += dx23; }

Page 181: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

181

} void rasterize(uint idx){ uint offset = Offset[idx]; float dx13 = 0, dx12 = 0, dx23 = 0; if (Position[idx][2].y != Position[idx][0].y) { dx13 = Position[idx][2].x - Position[idx][0].x; dx13 /= Position[idx][2].y - Position[idx][0].y; } if (Position[idx][1].y != Position[idx][0].y) { dx12 = Position[idx][1].x - Position[idx][0].x; dx12 /= Position[idx][1].y - Position[idx][0].y; } if (Position[idx][2].y != Position[idx][1].y) { dx23 = Position[idx][2].x - Position[idx][1].x; dx23 /= Position[idx][2].y - Position[idx][1].y; } float wx1 = Position[idx][0].x; float wx2 = wx1; float _dx13 = dx13; if (dx13 > dx12) { float b = dx13; dx13 = dx12; dx12 = b; } int square = 0; for (int i = int(Position[idx][0].y); i < Position[idx][1].y; i++){ for (int j = int(round(wx1)); j <= int(round(wx2)); j++){ Pixel[offset] = vec4(j, i, Position[idx][0].z, 1.0); PolyIndex[offset] = idx; offset++; } wx1 += dx13; wx2 += dx12; } if (Position[idx][0].y == Position[idx][1].y){ wx1 = Position[idx][0].x; wx2 = Position[idx][1].x; } if (_dx13 < dx23) { float b = _dx13; _dx13 = dx23; dx23 = b; } for (int i = int(Position[idx][1].y); i <= Position[idx][2].y; i++){ for (int j = int(round(wx1)); j <= int(round(wx2)); j++){ Pixel[offset] = vec4(j, i, Position[idx][0].z, 1.0); PolyIndex[offset] = idx; offset++; } wx1 += _dx13; wx2 += dx23; } }

Page 182: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

182

void main() { rasterize2(gl_GlobalInvocationID.x); }

Шейдер накладання текстур #version 430 layout (local_size_x = 22) in; layout (std430 , binding=3) buffer Vert { mat3x4 Position[]; }; layout (std430 , binding=8) buffer Pix { vec4 Pixel[]; }; layout (std430 , binding=9) buffer PIndex { uint PolyIndex[]; }; layout (std430 , binding=11) buffer Col { vec4 Color[]; }; layout (std430 , binding=4) buffer TexVert { mat3x2 UV[]; }; layout (std430 , binding=12) buffer DTV { vec4 DUV[]; }; layout (std430 , binding=13) buffer B { vec4 BR[]; }; layout (std430 , binding=0) buffer Scr { vec4 ScreenBuffer[]; }; uniform sampler2D Tex1; uniform uint Square; ivec2 Size = ivec2(700, 700); double square(float x1, float y1, float x2, float y2, float x3, float y3) { return abs(((x1-x3)*(y2-y3) - (x2-x3)*(y1-y3))) / 2.0; } vec3 toBarycentric(vec4 decart, uint pidx) { mat3x4 poly = Position[pidx]; double S = square(poly[0].x, poly[0].y, poly[1].x, poly[1].y, poly[2].x, poly[2].y); double Su = square(poly[0].x, poly[0].y, poly[1].x, poly[1].y, decart.x, decart.y); double Sv = square(poly[0].x, poly[0].y, poly[2].x, poly[2].y, decart.x, decart.y); double Sw = square(decart.x, decart.y, poly[1].x, poly[1].y, poly[2].x, poly[2].y); double u = Su / S; double v = Sv / S; double w = 1.0 - u - v; return vec3(u,v,w); } vec2 toUV(vec4 decart, uint idx) { vec3 bar = toBarycentric(decart, PolyIndex[idx]); mat3x2 uv = UV[PolyIndex[idx]]; float b2 = bar.x, b1 = bar.y, b0 = bar.z; float u = b0*uv[0].x + b1*uv[1].x + b2*uv[2].x; float v = b0*uv[0].y + b1*uv[1].y + b2*uv[2].y; return vec2(u,v); } void getColor(uint idx) { vec2 uv = toUV(Pixel[idx], idx);

Page 183: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

183

Color[idx] = texture(Tex1, uv); } void main(){ uint idx = gl_GlobalInvocationID.x; BR[idx] = vec4(0,2147483647,0,0); if (idx < Size.x*Size.y) ScreenBuffer[idx] = vec4(0,0,0,0); // DUV[idx] = vec4(1, 1, 1, 1); if (idx < Square) getColor(gl_GlobalInvocationID.x); }

Шейдер зворотнього повороту #version 430 layout (local_size_x = 22) in; layout (std430 , binding=8) buffer Pix { vec4 Pixel[]; }; layout (std430 , binding=11) buffer Col { vec4 Color[]; }; layout (std430 , binding=9) buffer PIndex { uint PolyIndex[]; }; layout (std430 , binding=0) buffer Scr { vec4 ScreenBuffer[]; }; layout (std430 , binding=1) buffer ZBf { vec4 DBuff[]; }; layout (std430 , binding=2) buffer S { uint SpinBuffer[]; }; layout (std430 , binding=7) buffer BackR { mat4 Rotates[]; }; layout (std430 , binding=13) buffer B { vec4 BR[]; }; layout (std430 , binding=6) buffer Norm { vec4 Normals[]; }; uniform mat4 P; uniform uint Square; ivec2 Size = ivec2(700, 700); mat4x4 spaseToScreen(vec3 space) { vec3 fspace = vec3(floor(space.xy), space.z); vec2 weight = space.xy - fspace.xy; float one = 1.0; return mat4x4( vec4(fspace, (one-weight.x)*(one-weight.y)), vec4(fspace.x+1, fspace.yz, weight.x*(one-weight.y)), vec4(fspace.x, fspace.y-1, fspace.z, weight.x*(one-weight.y)), vec4(fspace.x+1, fspace.y-1, fspace.z, weight.x*weight.y) ); } int getBufIndex(vec2 coords) { return int(coords.y) * Size.x + int(coords.x); } void setColor(vec4 point, vec4 color, float z) {

Page 184: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

184

if (point.x < 0 || point.y < 0 || point.x > Size.x || point.y > Size.y) return; int id = getBufIndex(point.xy); bool written = false; do { bool can_write = (atomicExchange(SpinBuffer[id], 1) != 1); if (can_write) { float old_poly = BR[id].y; float new_poly = float(PolyIndex[gl_GlobalInvocationID.x]); if (z > BR[id].x) { BR[id].x = z; if (BR[id].y != new_poly) { BR[id].y = new_poly; ScreenBuffer[id] = vec4(color.xyz*point.w, point.w); } } if (new_poly == old_poly){ vec4 buff = ScreenBuffer[id]; ScreenBuffer[id] = vec4(buff.xyz + (color.xyz*point.w), buff.w + point.w); } memoryBarrier(); atomicExchange(SpinBuffer[id], 0); written = true; } } while (!written); } void turnPoint(uint idx) { vec4 space_pos_homo = Rotates[PolyIndex[idx]] * Pixel[idx]; float z = space_pos_homo.z; space_pos_homo = P * space_pos_homo; vec3 space_pos = space_pos_homo.xyz / space_pos_homo.w; mat4x4 screen_pos = spaseToScreen(space_pos); setColor(screen_pos[0], Color[idx], z); setColor(screen_pos[1], Color[idx], z); setColor(screen_pos[2], Color[idx], z); setColor(screen_pos[3], Color[idx], z); } void main() { uint idx = gl_GlobalInvocationID.x; if (idx < Square) turnPoint(idx); }

Фрагментний шейдер #version 430 in vec3 Color; layout (location=0) out vec4 FragColor; layout (binding=0) buffer readonly Scr { vec4 ScreenBuffer[]; }; ivec2 Size = ivec2(700, 700); int getBufIndex(vec2 coords) { return int(coords.y) * Size.x + int(coords.x); } void main() { int id = getBufIndex(gl_FragCoord.xy); float w = ScreenBuffer[id].w; if (w == 0.0) discard; FragColor = vec4(ScreenBuffer[id].xyz / w, 1.0); }

Page 185: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

185

Додаток Е.

Лістинг вихідного коду фрагментного шейдера для виконання анізотропної

фільтрації текстур з визначенням вагових коефіцієнтів в реальному часі

#version 430 in vec2 textcoord; uniform sampler2D Tex1; float Gaus(float x, float y, float Vx, float Ux, float Vy,float Uy, float U, float V, float A, float C){ float d = sqrt(A); float L = sqrt(C); float angle = (Ux*Uy+Vx*Vy) / (d * L); angle = sqrt(1.0-angle*angle); float dd = min(d, L) * angle; if (d < L) { d = dd; } else L = dd; float cos_fi = abs(Vy / sqrt(C)); float X = pow(U*cos_fi+V*sin_fi, 2.0)/(L*L) + pow(V*cos_fi-U*sin_fi, 2.0)/(d*d); float r = pow(1.0 - X / 3, 10) * 10000000000000.0; return r; } vec4 ewaFilter(sampler2D tex0, vec2 p0, vec2 du, vec2 dv, float lod, int psize){ int scale = psize >> int(lod); vec4 foo = texture2D(tex0,p0); p0 -=vec2(0.5,0.5)/scale; vec2 p = scale * p0; float ux = FILTER_WIDTH * du.s * scale; float vx = FILTER_WIDTH * du.t * scale; float uy = FILTER_WIDTH * dv.s * scale; float vy = FILTER_WIDTH * dv.t * scale; float A = vx*vx+vy*vy+1.0; float B = -2*(ux*vx+uy*vy); float C = ux*ux+uy*uy+1.0; float F = A*C-B*B/4.; float bbox_du = 2. / (-B*B+4.0*C*A) * sqrt((-B*B+4.0*C*A)*C*F); float bbox_dv = 2. / (-B*B+4.0*C*A) * sqrt(A*(-B*B+4.0*C*A)*F); int u0 = int(floor(p.s - bbox_du)); int u1 = int(ceil (p.s + bbox_du)); int v0 = int(floor(p.t - bbox_dv)); int v1 = int(ceil (p.t + bbox_dv)); vec4 num= vec4(0., 0., 0., 1.); float den = 0; float ddq = 2 * A; float U = u0 - p.s; for (int u = u0; u <= u1; ++u) { if (q < F) { float r2 = q / F; float weight = Gaus(u, v, vx, ux, vy, uy, u-p.s, v-p.t, A, C);

Page 186: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

186

num += weight* textureLod(tex0, vec2(u+0.5,v+0.5)/scale , int(lod)); den += weight; } q += dq; dq += ddq; } vec4 color = num*(1./den); return color; } vec2 textureQueryLODEWA(sampler2D sampler, vec2 du, vec2 dv, int psize){ int scale = psize; float ux = du.s * scale; float vx = du.t * scale; float uy = dv.s * scale; float vy = dv.t * scale; float A = vx*vx+vy*vy; float B = -2*(ux*vx+uy*vy); float C = ux*ux+uy*uy; float F = A*C-B*B/4.; A = A/F; B = B/F; C = C/F; float root=sqrt((A-C)*(A-C)+B*B); float majorRadius = sqrt(2./(A+C-root)); float minorRadius = sqrt(2./(A+C+root)); float majorLength = majorRadius; float minorLength = minorRadius; if (minorLength<0.01) minorLength=0.01; const float maxEccentricity = MAX_ECCENTRICITY; float e = majorLength / minorLength; if (e > maxEccentricity) { minorLength *= (e / maxEccentricity); } float lod = log2(minorLength / TEXELS_PER_PIXEL); lod = clamp (lod, 0.0, log2(psize)); return vec2(lod, e); } vec4 texture2DEWA(sampler2D sampler, vec2 coords){ vec2 du = dFdx(coords); vec2 dv = dFdy(coords); int psize = textureSize(sampler, 0).x; float lod; return ewaFilter(sampler, coords, du, dv, lod, psize ); } void main() { FragColor = texture2DEWA(Tex1, uv); }

Page 187: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

187

Додаток Ж.

Лістинг вихідного коду фрагментного шейдера для виконання анізотропної

фільтрації текстур з визначенням вагових з використанням вагових

текстурних карт

#version 420 in vec2 textcoord; uniform sampler2D Tex1; readonly layout(r8ui) uniform uimage2D Tex2; out vec4 FragColor; float getIntFromTexture(float u, float v){ uvec4 color = imageLoad(Tex2, ivec2(u, v)); uvec4 bytes = uvec4(color * 255.0); uint i = (bytes.a << 24) | (bytes.b << 16) | (bytes.g << 8) | (bytes.r); // return i; } float superGaus(float x, float y, float vx, float ux, float vy,float uy, float U, float V, float A, float C){ vec2 a = vec2(textcoord.x + ux, textcoord.y + vx); vec2 b = textcoord + vec2(uy, vy); float X = U / sqrt(C); float Y = V / sqrt(A); float u = 2000.0*(X)/2.; float v = 2000.0*(Y)/2.; if (v > 1000) return 7.0; float m = getIntFromTexture(u, v) ; return m; } vec4 ewaFilter(sampler2D tex0, vec2 p0, vec2 du, vec2 dv, float lod, int psize){ int scale = psize >> int(lod); vec4 foo = texture2D(tex0,p0); //don't bother with elliptical filtering if the scale is very small if(scale<2) return foo; p0 -=vec2(0.5,0.5)/scale; vec2 p = scale * p0; float ux = FILTER_WIDTH * du.s * scale; float vx = FILTER_WIDTH * du.t * scale; float uy = FILTER_WIDTH * dv.s * scale; float vy = FILTER_WIDTH * dv.t * scale; // compute ellipse coefficients // A*x*x + B*x*y + C*y*y = F. float A = vx*vx+vy*vy+1.0; float B = -2*(ux*vx+uy*vy);

Page 188: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

188

float C = ux*ux+uy*uy+1.0; float F = A*C-B*B/4.; // Compute the ellipse's (u,v) bounding box in texture space float bbox_du = 2. / (-B*B+4.0*C*A) * sqrt((-B*B+4.0*C*A)*C*F); float bbox_dv = 2. / (-B*B+4.0*C*A) * sqrt(A*(-B*B+4.0*C*A)*F); #if 1 //Clamp the ellipse so that the bbox includes at most TEXEL_LIMIT texels. //This is necessary in order to bound the run-time, since the ellipse can be arbitrarily large //Note that here we are actually clamping the bbox directly instead of the ellipse. //Non real-time GPU renderers can skip this step. if(bbox_du*bbox_dv>TEXEL_LIMIT){ float ll = sqrt(bbox_du*bbox_dv / TEXEL_LIMIT); bbox_du/=ll; bbox_dv/ll; } #endif //the ellipse bbox int u0 = int(floor(p.s - bbox_du)); int u1 = int(ceil (p.s + bbox_du)); int v0 = int(floor(p.t - bbox_dv)); int v1 = int(ceil (p.t + bbox_dv)); // Heckbert MS thesis, p. 59; scan over the bounding box of the ellipse // and incrementally update the value of Ax^2+Bxy*Cy^2; when this // value, q, is less than F, we're inside the ellipse so we filter // away.. vec4 num= vec4(0., 0., 0., 1.); float den = 0; float ddq = 2 * A; float U = u0 - p.s; #if (FILTERING_MODE!=4) for (int v = v0; v <= v1; ++v) { float V = v - p.t; float dq = A*(2*U+1) + B*V; float q = (C*V + B*U)*V + A*U*U; #if (FILTERING_MODE==2) for (int u = u0; u <= u1; ++u) { if (q < F) { float r2 = q / F; float weight = superGaus(u, v, vx, ux, vy, uy, u-p.s, v-p.t, A, C); num += weight* textureLod(tex0, vec2(u+0.5,v+0.5)/scale , int(lod)); den += weight; } q += dq; dq += ddq; } #else for (int u = u0; u <= u1; u+=2) { float w1 = FILTER_FUNC(q / F); w1 = (q < F)? w1: 0; q += dq; dq += ddq; float w2 = FILTER_FUNC(q / F); w2 = (q < F)? w2: 0; float offest= w2/(w1+w2);

Page 189: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

189

float weight = (w1+w2); if(weight>0.0) { num += weight * textureLod(tex0, vec2(u+0.5+offest, v+0.5)/scale , int(lod)); den += weight; } q += dq; dq += ddq; } #endif } #else for (int v = v0; v <= v1; v+=2) { float V = v - p.t; float dq = A*(2*U+1) + B*V; float q = (C*V + B*U)*V + A*U*U; float V2 = v+1 - p.t; float dq2 = A*(2*U+1) + B*V2; float q2 = (C*V2 + B*U)*V2 + A*U*U; for (int u = u0; u <= u1; u+=2) { float w1 = FILTER_FUNC(q / F); w1 = (q < F)? w1: 0; q += dq; dq += ddq; float w2 = FILTER_FUNC(q / F); w2 = (q < F)? w2: 0; float w3 = FILTER_FUNC(q2 / F); //w3 = (q2 < F)? w3: 0; q2 += dq2; dq2 += ddq; float w4 = FILTER_FUNC(q2 / F); //w4 = (q2 < F)? w4: 0; q += dq; dq += ddq; q2 += dq2; dq2 += ddq; float offest_v=(w3+w4)/(w1+w2+w3+w4); float offest_u;// = (w4+w2)/(w1+w3); offest_u= (w4)/(w4+w3); float weight =(w1+w2+w3+w4); if(weight>0.1) { num += weight * textureLod(tex0, vec2(u+ offest_u+0.5, v+offest_v+0.5)/scale , int(lod)); den += weight; } } } #endif vec4 color = num*(1./den); return color; } void main() { FragColor = ewaFilter(Tex1, uv); }

Page 190: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

190

Додаток З.

Лістинг вихідного коду комп’ютерної програми для генерації текстурних

карт вагових коефіцієнтів

#include <iostream> #include <cmath> #include <png++/png.hpp> float gaus(double x, double y){ float q = 0.4; auto v = sqrt(x*x+y*y); return exp2(-2.0*v); return (1 / (2 * 3.141592653589793238462643 * q * q)) * exp(-(v) / (2 * q * q))-0.212934864; } std::vector<unsigned char> intToBytes(int paramInt) { std::vector<unsigned char> arrayOfByte(4); for (int i = 0; i < 4; i++) arrayOfByte[i] = (paramInt >> (i * 8)); return arrayOfByte; } int main() { int mode = 1; png::image< png::basic_rgba_pixel<png::byte> > image(512, 512); for (int y = 0; y < image.get_height(); ++y) { for (int x = 0; x < image.get_width(); ++x) { int realx, realy; float val; if (mode == 1) { realx = x - image.get_height() / 2; realy = y - image.get_height() / 2; val = gaus(float(realx)/image.get_width(), float(realy)/image.get_height()); } else if (mode == 2) { realx = x; realy = image.get_height() - y; val = gaus(float(realx)/image.get_width()/2, float(realy)/image.get_height()/2); } else{ realy = 0; realx = x; val = gaus(float(realx)/image.get_width()/2, 0); } auto i_val = static_cast<uint>(roundf(val * 10000000000)); auto c_val = intToBytes(i_val); image[y][x] = png::basic_rgba_pixel<png::byte>(c_val[0], c_val[1], c_val[2],c_val[3]); if (y == 128) std::cout << y << " - " << x << " : " << val << " : " << realx << " - " << realy << std::endl; } } image.write("rgb.png"); return 0; }

Page 191: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

191

Додаток К.

Лістинг вихідного коду програми для генерації тривимірної карти

відстаней до поверхні

#include <iostream> #include <cmath> #include <png++/png.hpp> tuple<int ,int, int> getNextNearestPoint(int x, int y, int z, int h){ png::image< png::basic_rgba_pixel<png::byte> > image('hmap.png'); for (int iy = y; y < image.get_height(); ++y) { for (int ix = x; x < image.get_width(); ++x) { for (int iz = x; z < image.get_width(); ++z) { if (image[iy][ix][iz] > h) return ix, iy, iz; } } } for (int iy = y; y > 0; --y) { for (int ix = x; > 0; --x) { for (int iz = x; z > 0; --z) { if (image[iy][ix][iz] > h) return ix, iy, iz; } } } }; int main() { png::image< png::basic_rgba_pixel<png::byte> > image(512, 512); png::image< png::basic_rgba_pixel<png::byte> > image2("colormap.png"); for (int y = 0; y < image.get_height(); ++y) { for (int x = 0; x < image.get_width(); ++x) { for (int y = 0; y < image.get_height(); ++y) { for (int z = 0; z < image.get_width(); ++z) { do { auto x1, x2, x3 = getNextNearestPoint(x, y, z); } while (!isVisible(x1, x2, x3)); image[y][x] = png::basic_rgba_pixel<png::byte>(x1, x2, x3); } } } } image.write("map.png"); return 0; }

Page 192: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

192

Додаток Л.

Лістинг вихідного коду фрагментного шейдера для виконання рельєфного

текстурування

#version 330

layout(location = 0) in vec3 pos_i;

layout(location = 1) in vec3 normal_i;

layout(location = 2) in vec2 tex_coord_i;

layout(location = 3) in vec4 tangent_i;

uniform mat4 M;

uniform mat4 V;

uniform mat4 P;

uniform mat3 N;

uniform vec3 light_vector;

uniform vec3 camera_vector;

out vec2 texcoords;

out vec3 tangent_vec_to_light;

out vec3 tangent_vec_to_camera;

void main(void)

{

vec4 pos = M * vec4(pos_i, 1);

vec3 normal = normalize(N * normal_i);

vec3 tangent = normalize(N * tangent_i.xyz);

vec3 direct_to_light = normalize(light_vector - pos.xyz);

vec3 direct_to_camera = normalize(camera_vector - pos.xyz);

vec3 bitangnent = cross(normal, tangent) * tangent_i.w;

tangent_vec_to_light = vec3(

dot(direct_to_light, tangent),

dot(direct_to_light, bitangnent),

dot(direct_to_light, normal)

);

tangent_vec_to_camera= vec3(

dot(direct_to_camera, tangent),

dot(direct_to_camera, bitangnent),

dot(direct_to_camera, normal)

);

Page 193: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

193

texcoords = tex_coord_i;

gl_Position = P * V * pos;}

#version 330

in vec2 texcoords;

in vec3 tangent_vec_to_light;

in vec3 tangent_vec_to_camera;

layout(location = 0) uniform sampler2D t_diffuse;

layout(location = 1) uniform sampler2D t_height;

layout(location = 2) uniform sampler2D t_normal;

out vec4 result;

uniform float PScale; // ~0.1

vec4 lighting(in vec2 T, in vec3 L, in vec3 V, float K_shadow)

{

vec3 N = normalize(texture(t_normal, T).xyz * 2 - 1);

vec3 D = texture(t_diffuse, T).rgb;

float iamb = 0.2;

float idiff = clamp(dot(N, L), 0, 1);

float ispec = 0;

if(dot(N, L) > 0.2)

{

vec3 R = reflect(-L, N);

ispec = pow(dot(R, V), 32) / 1.5;

}

vec4 resColor;

resColor.rgb = D * (ambientLighting + (idiff + ispec) * pow(K_shadow, 4));

resColor.a = 1;

return resColor;

}

void main(void)

{

vec3 V = normalize(tangent_vec_to_camera);

vec3 L = normalize(tangent_vec_to_light);

float h;

vec2 T = parallaxMapping(V, texcoords, h);

float K_shadow = pSoftShadowMultiplier(L, T, h - 0.05);

result = lighting(T, L, V, K_shadow);

}

Page 194: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

194

Додаток М.

Список публікацій за темою дисертації

[1] О. Н. Романюк, І. В. Абрамчук, О. О. Дудник, та О. В. Мельник,

"Модифікація гаусівської моделі піксела для задач антиаліайзингу", Наукові

праці Донецького національного технічного університету. Серія:

Інформатика, кібернетика та обчислювальна техніка №1, с. 84-88, 2015.

[2] О. Н. Романюк, та О. О. Дудник, "Підвищення реалістичності

зафарбовування тривимірних графічних об'єктів", Вісник ХНТУ № 3, с. 269-

272, 2016.

[3] О. Н. Романюк, та О. О. Дудник, "Анізотропна фільтрація з

використанням текстурних карт вагових коефіцієнтів", Реєстрація,

зберігання і обробка даних № 3, с. 34-41, 2017.

[4] С. О. Романюк, О. О. Дудник, Л. А. Савицька, та О. В. Романюк та ін.,

"Анізотропна фільтрація з використанням вагових функцій", Вестник

Херсонского национального технического университета № 3, 2015, с. 459-

462.

[5] О. Н. Романюк, та О. О. Дудник, "Метод підвищення продуктивності

перспективно-коректного текстурування", Наукові праці ДонНТУ № 1 (22),

с. 43-46, 2016.

[6] О. Н. Романюк, та О. О. Дудник, "Анізотропна фільтрація текстур з

використанням методів кешування", Вісник Вінницького політехнічного

інституту № 6, с. 59-64, 2017.

[7] О. Н. Романюк, та О. О. Дудник, "Підвищення продуктивності

текстурування з виконанням процедурних операцій в об’єктному просторі",

Наукові праці ДонНТУ. Серія “Інформатика, кібернетика та обчислювальна

техніка” № 2 (23), с. 45-51, 2016.

[8] О. Н. Романюк, та О. О. Дудник, "Реалізація альтернативного конвеєра

рендерингу на GPU з використанням обчислювальних шейдерів", Наукові

Page 195: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

195

праці Донецького національного технічного університету Серія:

“Інформатика, кібернетика та обчислювальна техніка”, Покровськ, 2017.

[9] О. Н. Романюк, та О. О. Дудник, "Особливості анізотропної фільтрації

текстур при використанні технології parallax mapping", Вісник Хмельницького

національного університету № 1, с. 245, 2017.

[10] О. Н. Романюк, та О. О. Дудник, "Модифікований метод parallax mapping з

використанням карти відстаней до поверхні", Інформаційні технології та

комп’ютерна інженерія № 1, с. 78-82, 2017.

[11] О. Н. Романюк, та О. О. Дудник, “Використання модифікованої МІР-

піраміди для підвищення продуктивності parallax mapping”, Вісник

Вінницького політехнічного інституту, №1, 112-116, 2018.

[12] S. I. Vyatkin, S. A. Romanyuk, and O. O. Dudnyk, “Geometric modeling with

scalar perturbation functions”, Measuring and computing equipment in

technological processes, № 4, pp. 45-50, 2014.

[13] S. I. Vyatkin, A. N. Romanyuk, and O. O. Dudnyk, "Function-based gpu

architecture", Вимірювальна та обчислювальна техніка в технологічних

процесах № 1, р. 139-144, 2015.

[14] A. N. Romanyuk, and O. O. Dudnyk, "Ways to improve performance of

anisotropic texture filtering", Control and Communications (SIBCON), 2017

International Siberian Conference on. IEEE, 2017, [Online]. Available:

https://ieeexplore.ieee.org/document/7998589/

[15] О. Н. Романюк, та О. О. Дудник, "Розробка методів текстурування для

задач фотореалістичного рендерингу", Матеріали сьомої міжнародної

науково-технічної конференції "Моделювання і комп’ютерна графіка", 18-24

вересня 2017 р, с. 26-33.

[16] О. Н. Романюк, та О. О. Дудник "Неортогональна растеризація при

перспективнокоректному текстуруванні", VI Международная конференция

«Моделирование и компьютерная графика», м. Красноармійськ, 25-29 травня

2015 р., с. 174-178.

Page 196: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

196

[17] О. Н. Романюк, та О. О. Дудник, "Еволюція конвеєра рендерингу в

відеокартах", Збірник матеріалів міжнародної науково-практичної

Інтернет-конференції «Електронні інформаційні ресурси: створення,

використання, доступ», 24-25 жовтня 2016 р., с. 440-448.

[18] О. О. Дудник, та О. Н. Романюк, "Аналіз методів фільтрації текстур"

Матеріали міжнародної науково-практичної Інтернет-конференції "Молодь

в технічних науках:дослідження, проблеми, перспективи (МТН-2015),

Вінниця, 16-17 квітня 2015 р., [Електронний ресурс]. Доступно:

http://conf.inmad.vntu.edu.ua/fm/index.php?page=materials&line=11&mat=115

[19] Романюк О. Н, та О. О. Дудник, "Математичні моделі Піксела" Збірник

матеріалів Всеукраїнської науково-практичної конференції "Електронні

інформаційні ресурси в освіті і науці: створення, використання, доступ",

Вінниця, 2014, с. 3-8,.

[20] О. Н Романюк, О. О. Дудник, та С. В. Вяткін, "Шляхи підвищення

продуктивності анізотропної фільтрації", Матеріали міжнародної науково-

практичної Інтернет-конференції "Молодь в технічних науках:дослідження,

проблеми, перспективи (МТН-2016), 2016,

[Електронный ресурс]. Доступно: http://conf.inmad.vntu.edu.ua/fm/index.php?p

age=materials&line=20&mat=343

[21] О. О. Дудник, “Аналіз методів рельєфного текстурування”, Електронні

інформаційні ресурси: створення, використання, доступ: Збірник матеріалів

Міжнародної науково-практичної Інтернет- конференції., Вінниця, 2017,

c. 230-236.

[22] О. Н. Романюк, та О. О. Дудник, "Анізотропна фільтрація з

використанням вагової функції на основі Гаусівської моделі пікселя",

Вимірювальна та обчислювальна техніка в технологічних процесах № 2: 117-

121, 2016.

[23] О. Н. Романюк, та О. О. Дудник, "Підвищення продуктивності

перспективно-коректного текстурування з використанням анізотропної

Page 197: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

197

фільтрації", Вимірювальна та обчислювальна техніка в технологічних

процесах № 3, с. 192-195, 2016.

[24] О. Н. Романюк, та О. О. Дудник, "Модифікація білінійного текстурування

з використнням кругової моделі пікселя", Вимірювальна та обчислювальна

техніка в технологічних процесах № 1, с. 243-245, 2016.

[25] С. И. Вяткин, А. Н. Романюк, и А. А. Дудник, "Анизотропная фильтрация

текстуры в реальном времени", Измерительная и вычислительная техника в

технологических процесах № 4, с. 217-221, 2015.

[26] О. Н. Романюк, та О. О. Дудник, Комп'ютерна програма “Визначення

кольору пікселя з використанням кругової моделі”, Свідоцтво про реєстрацію

авторського права на твір №66660, К.: Державна служба інтелектуальної

власності України, 15.07.16

[27] О. Н. Романюк, та О. О. Дудник, Комп'ютерна програма “Обчислення

об’єму перетину пікселя ”, Свідоцтво про реєстрацію авторського права на

твір №61823, К.: Державна служба інтелектуальної власності України,

25.09.15

[28] О. Н. Романюк, та О. О. Дудник, Комп'ютерна програма “Система

експертного оцінювання сформованого зображення по відношенню до

еталону”, Свідоцтво про реєстрацію авторського права на твір №66659, К.:

Державна служба інтелектуальної власності України, 15.07.16

[29] О. Н. Романюк, О. О. Дудник, та Б. Л. Войт Комп'ютерна програма

“Рендеринг тривимірних зображень із використанням процедурних операцій

в об’єктному просторі”, Свідоцтво про реєстрацію авторського права на твір

№71796, К.: Державна служба інтелектуальної власності України, 05.05.17

[30] О. О. Дудник, Комп'ютерна програма “Генерація вагових текстурних

карт”, Свідоцтво про реєстрацію авторського права на твір №78246, К.:

Міністерство економічного розвитку і торгівлі України, 12.04.18

[31] О. О. Дудник, Комп'ютерна програма “Анізотропна фільтрація текстур з

використанням вагової функції на основі гаусівської моделі пікселя”,

Page 198: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

198

Свідоцтво про реєстрацію авторського права на твір №78247, К.:

Міністерство економічного розвитку і торгівлі України, 12.04.18

[32] О. О. Дудник, Комп'ютерна програма “Анізотропна фільтрація текстур з

використанням вагових текстурних карт”, Свідоцтво про реєстрацію

авторського права на твір №78249, К.: Міністерство економічного розвитку і

торгівлі України, 12.04.18

[33] О. О. Дудник, Комп'ютерна програма “Генерація текстурних карт

відстаней до поверхні на основі карт висот з урахуванням видимості точок

поверхні”, Свідоцтво про реєстрацію авторського права на твір №78248, К.:

Міністерство економічного розвитку і торгівлі України, 12.04.18

Page 199: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

199

Додаток Н.

Акти впровадження результатів

досліджень

Page 200: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

200

Page 201: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

201

Page 202: ВІННИЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ ...inmad.vntu.edu.ua/graduate/dis_Dudnyk.pdfВикористання ідей, результатів і текстів

202