через функції його бібліотеки. Всі функції можна розділити на п'ять категорій:
? функції опису примітивів визначають об'єкти нижнього рівня ієрархії (примітиви), які здатна відображати графічна підсистема. У OpenGL як примітиви виступають точки, лінії, багатокутники і т.д .;
? функції опису джерел світла служать для опису положення і параметрів джерел світла, розташованих у тривимірній сцені;
? функції завдання атрибутів. За допомогою завдання атрибутів програміст визначає, як будуть виглядати на екрані відображувані об'єкти. Іншими словами, якщо за допомогою примітивів визначається, що з'явиться на екрані, то атрибути визначають спосіб виведення на екран. Як атрибути OpenGL дозволяє задавати колір, характеристики матеріалу, текстури, параметри освітлення;
? функції візуалізації дозволяє задати положення спостерігача у віртуальному просторі, параметри об'єктива камери. Знаючи ці параметри, система зможе не тільки правильно побудувати зображення, але і відсікти об'єкти, що опинилися поза увагою;
? функцій геометричних перетворень дозволяють програмісту виконувати різні перетворення об'єктів - поворот, перенос, масштабірованіе.может виконувати додаткові операції, такі як використання сплайнів для побудови ліній і поверхонь, видалення невидимих ??фрагментів зображень, робота з зображеннями на рівні пікселів і т.д.
Метою даного дипломного проекту є підвищення ефективності діяльності компанії за допомогою розробки бібліотеки шейдеров, що дозволяє здійснювати додавання нових шейдерних програм без зміни існуючої архітектури додатку.
Для досягнення поставленої мети були сформульовані наступні завдання дипломного проектування:
- провести аналіз предметної області;
- здійснити вибір програмних засобів і технологій, необхідних для реалізації проекту;
- реалізувати програмний продукт, який відповідає всім вимогам технічного завдання, яке представлене в додатку А;
- призвести налагодження і тестування даного програмного продукту;
- розробити програмну документацію, необхідну для супроводу і системно-технічної підтримки продукту.
1. Аналіз вихідних даних і розробка технічного завдання
. 1 Характеристика вимог на розроблення
Завдання розробки програмного модуля колірної корекції зображення з використанням засобів OpenGL можна розділити на дві частини: реалізацію шейдеров на мові GLSL, які здійснюють колірну корекцію вхідного зображення, а також створення програмного модуля на мові C ++ з використанням OpenGL. Також необхідно розробити програму, яка буде демонструвати роботу модуля.
Модуль повинен забезпечувати такі функції:
- виробляти колірну корекцію декількома відомими способами;
- забезпечувати коректну роботу з будь-якими видами вхідних даних.
Демонстраційна програма повинна виконувати наступні функції:
- створювати тривимірну сцену і необхідні ресурси (моделі, текстурні карти, шейдерні програми) і завантажувати їх на сцену.
- забезпечувати можливість перемикання між різними видами колірної корекції.
Також в рамках дипломного проектування слід розробити керівництво користувача для розроблюваного програмного модуля.
. 2 Аналіз підходів до розробки аналогічного програмного забезпечення
Проаналізувавши ринок програмного забезпечення, можна стверджувати, що в цілому будь-яка кольорова корекція зображення в сфері тривимірної графіки реального часу використовує для цих цілей шейдерні програми, які обробляють зображення тривимірної сцени, отрисовка якого була проведена в текстурную карту. Якщо говорити про саму колірну корекцію, то існує кілька різних методів, за якими вона може бути здійснена.
Найбільшою сферою, де використовується колірна корекція зображення в тривимірному просторі, є ігрова індустрія, тому при аналізі розглядаються сучасні ігрові движки - Unreal Engine, CryEngine, Unity. У всіх розглянутих движків колірна корекція реалізована за схожим принципом, і кожен з цих движків може використовувати колірну корекцію із застосуванням різних методів її досягнення. Реалізація шейдеров в різних движках представлена ??на різних мовах (HLSL, ShaderLab), що обумовлено їх внутрішньою архітектурою. Методи ж використовуються схожі:
- колірна корекція за допомогою градієнтної карти;
- колірна корекція за допомогою тривимірної текстури.
У движку U...