Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Контакти
 


Тлумачний словник
Авто
Автоматизація
Архітектура
Астрономія
Аудит
Біологія
Будівництво
Бухгалтерія
Винахідництво
Виробництво
Військова справа
Генетика
Географія
Геологія
Господарство
Держава
Дім
Екологія
Економетрика
Економіка
Електроніка
Журналістика та ЗМІ
Зв'язок
Іноземні мови
Інформатика
Історія
Комп'ютери
Креслення
Кулінарія
Культура
Лексикологія
Література
Логіка
Маркетинг
Математика
Машинобудування
Медицина
Менеджмент
Метали і Зварювання
Механіка
Мистецтво
Музика
Населення
Освіта
Охорона безпеки життя
Охорона Праці
Педагогіка
Політика
Право
Програмування
Промисловість
Психологія
Радіо
Регилия
Соціологія
Спорт
Стандартизація
Технології
Торгівля
Туризм
Фізика
Фізіологія
Філософія
Фінанси
Хімія
Юриспунденкция






Перевірка умов приміщення крапки в буфер кадру (тести).

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

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

При дальності видимості більше 2км як правило має місце лінійний закон зміни контрасту (“димку”, “повітряна перспектива”), а при дальності видимості менш 1км - експонентний закон (“туман”).

Можливе завдання лінійного (GL_LINEAR), експонентного (GL_EXP), експонентного у квадраті (GL_EXP2) закони зміни контрасту як функції дальності. Завдання типу закону здійснюється функцією glFogi(GL_FOG_MODE, < тип закону >).

Для першого випадку задаються відстані від спостерігача уздовж осі Z до початку області затуманення glFogf(GL_FOG_START, <z>) і до області з нульовим контрастом glFogf(GL_FOG_END, <z>). Для двох останніх законів задається коефіцієнт щільності туману glFogf(GL_FOG_DENSITY, <щільність туману 0..1>).

Крім того задається колір туману, до якого буде наближатися колір об'єктів glFogfv(GL_FOG_COLOR, < покажчик на RGBA вектор >) і тип алгоритму розрахунку:

- верховий glHint(GL_FOG_HINT, GL_FASTEST);

- попіксельний glHint(GL_FOG_HINT, GL_NICEST);

- визначається прискорювачем glHint(GL_FOG_HINT, GL_DONT_CARE).

Розрахунок «затуманення» може бути дозволений або заборонений - функції glEnable/glDisable з параметром GL_FOG.

Зауваження 1: Завдання типу алгоритму можливо також для:

- перспективно коректних алгоритмів: GL_PERSPECTIVE_CORRECTION_HINT;

- алгоритму згладжування крапок: GL_POINT_SMOOTH_HINT;

- алгоритму згладжування ліній: GL_LINE_SMOOTH_HINT;

- алгоритму згладжування країв полігонів: GL_POLYGON_SMOOTH_HINT;

- алгоритму розрахунку освітленості: GL_PHONG_HINT.

Зауваження 2: Реальні закони поглинання, розсіювання й переломлення світла не враховуються.

Зауваження 3: Як і у випадку розрахунку освітленості, розрахунок зміни контрасту може вироблятися як для вершин примітивів з наступною інтерполяцією, так і для кожної крапки зображення – верховий і попіксельний алгоритм розрахунку туману.

Перевірка умов приміщення крапки в буфер кадру (тести).

Тест приналежності – перевірка приналежності крапки контексту відтворення (проходить, якщо контекст відтворення OpenGL активний).

Тест відсікання. Визначає, чи належить крапка заданої області у вікні виводу. Повний розмір області виводу (розмір вікна) задається викликом функції glViewport(x, y, width, height). У межах цієї області можна задати під область, доступну для відображення в цей момент - функція glScissor(x, y, width, height), де x, y - координати лівої нижньої крапки області, width, height - розміри області (крапок). Тест може бути дозволений і заборонений - функції glEnable/glDisable з параметром GL_SCISSOR_TEST.

Тест прозорості. Визначає, чи належить прозорість крапки заданому діапазону. Якщо так - крапка міститься в буфер кадру, інакше відкидається. Діапазон значень і закон задається функцією glAlphaFunc(<закон>,<значення прозорості для порівняння>). Параметр <закон> може приймати наступні значення:

Ім'я макровизначення Тест завершується позитивно, якщо
GL_NEVER Ніколи
GL_LESS Отримане значення менше посилального
GL_EQUAL Отримане значення дорівнює посилальному
GL_LEQUAL Отримане значення менше або дорівнює посилальному
GL_GREATER Отримане значення більше посилального
GL_NOTEQUAL Отримане значення нерівно посилальному
GL_GEQUAL Отримане значення більше або дорівнює посилальному
GL_ALWAYS Завжди. Установлено за замовчуванням

Тест може бути дозволений або заборонений - функції glEnable/glDisable з параметром GL_ALPHA_TEST.

Тест глибини. Порівнює далекість до вступник крапки (значення z-координати) з далекістю до відповідної крапки (значення в z-буфері), збереженої в буфері кадру. Якщо різниця відповідає заданому закону, то крапка міститься в буфер кадру, інакше відкидається. Закон задається функцією glDepthFunc(<закон>). Параметр <закон> може приймати наступні значення:

Ім'я макровизначення Тест завершується позитивно, якщо
GL_NEVER Ніколи
GL_LESS Отримане значення z-координати менше зберігається в буфері. Установлено за замовчуванням
GL_EQUAL Отримане значення z-координати дорівнює тому, що зберігається в буфері
GL_LEQUAL Отримане значення z-координати менше або дорівнює тому, що зберігається в буфері
GL_GREATER Отримане значення z-координати більше зберігається в буфері
GL_NOTEQUAL Отримане значення z-координати нерівно зберігається в буфері
GL_GEQUAL Отримане значення z-координати більше або дорівнює тому, що зберігається в буфері
GL_ALWAYS Завжди.

Тест може бути дозволений або заборонений - функції glEnable/glDisable з параметром GL_DEPTH_TEST. На кожну екранну крапку доводиться одна група осередків в z-буфері. Дозвіл апаратного z-буфера як правило становить 16, 24, 32 біта.

Тест трафарету. Ґрунтується на буфері трафарету, просторовий дозвіл якого відповідає просторовому дозволу буферів кадру й глибини, тобто на кожну екранну крапку доводиться одна група осередків буфера трафарету. Якщо доступно апаратний буфер трафарету, то його розрядність становить 1 або 8 біт. Вхідними параметрами тесту є:

- закон порівняння;

- значення, з яким здійснюється порівняння вмісту буфера трафарету;

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

Для завдання закону й параметрів порівняння використовується функція glStencilFunc(<закон>, <значення для порівняння>, <маска>). Параметр <закон> може приймати наступні значення:

Ім'я макровизначення Тест завершується позитивно, якщо
GL_NEVER Ніколи
GL_LESS Якщо (ref & mask) < (stencil & mask)
GL_EQUAL Якщо (ref & mask) = (stencil & mask)
GL_LEQUAL Якщо (ref & mask) ≤ (stencil & mask)
GL_GREATER Якщо (ref & mask) > (stencil & mask)
GL_NOTEQUAL Якщо (ref & mask) ≠ (stencil & mask)
GL_GEQUAL Якщо (ref & mask) ≥ (stencil & mask)
GL_ALWAYS Завжди.

Тест може бути дозволений або заборонений - функції glEnable/glDisable з параметром GL_STENCIL_TEST.

Тест трафарету звичайно використовується в багатопрохідних алгоритмах, що вимагає нагромадження інформації в буферах кадру, глибини й трафарету, а також взаємного впливу між результатами окремих проходів. Параметри заповнення буфера трафарету при кожному проході задаються функцією glStencilOp(fail, zfail, zpass). Перший параметр задає закон заповнення при неуспішному тесті трафарету, а другий і третій - при успішному тесті трафарету й неуспішному/успішному тесті глибини відповідно. Закони заповнення:

Ім'я макровизначення Тест завершується позитивно, якщо
GL_ZERO Установити значення буфера трафарету в нуль
GL_KEEP Зберегти поточне значення в буфері
GL_REPLACE Установити значення буфера трафарету в значення ref функцією glStencilFunc
GL_INCR Якщо не максимальне значення, то збільшити значення в буфері трафарету
GL_DECR Якщо не 0, то зменшити значення в буфері трафарету
GL_INVERT Порозрядно інвертувати поточне значення

Завдання:

1. Задати параметри перспективної проекції 30*40 градусів, далекість ближньої січної площини - 5, далекість дальньої - 25.

2. Задати параметри області виводу (розмір вікна - glViewport()) 300*400 крапок.

3. Установити сферу одиничного розміру на далекості 10.

4. Дозволити накладення туману, установити лінійний закон, установити відстань до початку області затуманення - 5 од., до області з нульовим контрастом - 15 од. Дозволити попіксельний розрахунок затуманення. Задати колір туману - білий.

5. Дозволити накладення туману, установити експонентний закон, установити щільність туману .5. Дозволити попіксельний розрахунок затуманення. Задати колір туману - білий.

6. Задати параметри області виводу у вікні (glScissor()) таким чином, щоб відображення відбувалося тільки в лівій частині вікна (розмір області виводу - 300*200), Дозволити проходження даного тесту glEnable( GL_SCISSOR_TEST).

7. Відобразите червоний чотирикутник одиничного розміру на далекості 6. Зробіть одну з його вершин напівпрозорої:

glBegin(GL_QUADS);

glColor4f(1,0,0,1);

glVertex3f(-1,-1,0);

glColor4f(1,0,0,1);

glVertex3f(1,-1,0);

glColor4f(1,0,0,1);

glVertex3f(1,1,0);

glColor4f(1,0,0,.5);

glVertex3f(-1,1,0);

glEnd();

Дозволите виконання тесту прозорості, установите закон GL_GEQUAL і параметр для порівняння .7. Обґрунтуйте результат.

8. Відобразите сферу й чотирикутник із попередніх прикладів (на далекості 6 і 10 відповідно.

9. Установите закон для тесту глибини GL_ALWAYS, обґрунтуйте результат.

Контрольні питання:

1. На які групи розділяють всі об'єкти реального миру?

2. Які закони зміни контрасту існують у реальному світі? Як вони називаються?

3. Які закони зміни контрасту доступні в класичному графічному конвеєрі?

4. Як дозволити накладення туману, як включити лінійний закон розрахунку зміни контрасту?

5. Які параметри задаються для лінійного закону розрахунку? Як передати їх у конвеєр?

6. Як включити експонентний закон розрахунку? Які параметри задаються для експонентного закону розрахунку? Як передати їх у конвеєр?

7. Як задати розмір вікна?

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

9. Що таке «Тест прозорості»? Як включити тест прозорості? Як задати закон для тесту прозорості? Які параметри приймають відповідні функції?

10. Що таке «Тест глибини»? Як включити тест глибини? Як задати закон для тесту глибини? Які параметри приймають відповідні функції?

11. Що таке «Тест трафарету»? Що є вхідними параметрами для виконання тесту трафарету?

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

Література:

1. П.В. Вельтмандер "Машинна графіка. Навчальний посібник у 3-х книгах". http://ermak.cs.nstu.ru/kg_rivs/home.htm.

2. В.Е. Зуєв, М.В. Кабанів Перенос оптичних сигналів у земній атмосфері (в умовах перешкод), - М.: "Сов. радіо", 1977, - 368 с.

3. В.А. Гаврилов Видимість в атмосфері. Л., 1966, - 322с.

4. Г.Ш. Лівшиць Розсіяне світло денного неба. – Алма-Ата: Наука, 1973.

5. В.Е. Зуєв Проблеми оптики атмосфери. – Новосибірськ 1983.

 




Переглядів: 405

<== попередня сторінка | наступна сторінка ==>
Iнструктивна картка | Розробка сценарію інформаційного бюлетеня

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

 

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.008 сек.