Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая КГ.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.01 Mб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИИ Федеральное государственное автономное образовательное учреждение высшего профессионального образования «Южный федеральный университет» Таганрогский кампус ЮФУ Кафедра вычислительной техники

Курсовая работа

По дисциплине: Компьютерная графика

Построение трехмерных изображений с помощью шейдеров

Выполнил: студент гр. А-40

Кущенко А.С.

Дата___________

Подпись___________

Проверил доцент, к.т.н.

Селянкин В.В.

Подпись___________

Таганрог 2012 Аннотация

Курсовая работа посвящена изучению современных технологий компьютерной графики, а именно программированию шейдеров высокого уровня. Она направлена на получение начальных знаний о шейдерах написанных на высокоуровневом языке и современных методах создания реалистичных 3D и 2D изображений. В виду того, что тема работы не в ходит курс изучения компьютерной графики, то более детальное и подробное изучение останется на будущее самостоятельное изучение. Работа содержит в себе код шейдера (см. Приложение), краткое описание структурных элементов и изображение полученное методом программирования шейдеров.

Оглавление

Аннотация 1

Техническое задание 3

Постановка задачи 4

Введение 5

Описание алгоритма решения задачи 7

Описание программного продукта 8

Входные и выходные данные 9

Инструкция пользователю 11

Описание интерфейса 12

Описание структурных элементов программы 16

Изображение, полученное с помощью шейдеров: 17

Заключение 18

Список литературы 19

Приложение 20

Техническое задание Постановка задачи

Задача курсовой работы – изучить программирование шейдеров. Для этого будет использоваться язык HLSL и среда разработки FX Composer от компании nVidia, созданная для работы с языками программирования шейдеров высокого уровня и их оптимальной работы с видеокартами nVidia. В качестве основы взята модель пистолета с сайта http://3dlenta.com/ и текстура металла из официального каталога nVidia. На выходе я получу изображение в формате .bmp.

Введение

HLSL (High Level Shader Language) — высокоуровневый Си-подобный язык для написания шейдеров, разработанный Microsoft и являющийся частью DirectX. Аналоги: GLSL (OpenGL), Cg (OpenGL, Direct3D)

HLSL пришел на смену ассемблерному шейдерному языку и позиционируется как более удобный язык для разработки шейдеров. Доступен для Direct3D начиная с версии 9.0 (возможно комбинирование кода на HLSL и asm). Начиная с Direct3D10 ассемблерные вставки запрещены. [1]

HLSL является современным и удобным языком программирования шейдеров. Позволяет без особых усилий создавать красивые 3-х и 2-х мерные изображения. Множество сред разработки поддерживают этот язык. Я в своей работе буду использовать среду разработки nVidia FX Composer, которая поддерживается и свободно распространяется компанией nVidia.

В современной компьютерной графике большинство изображений создаются с помощью шейдеров из-за того, что они позволяют создавать реалистичные статичные и динамичные изображения с отражением окружающего мира и установкой источника света. В основе программирование шейдеров лежит задание функций – вершинных и пиксельных шейдеров. Они соответственно обрабатывают геометрию объекта и отдельные пиксели. После задания этих функций выполняется «проход» по ним. «Проходы» находятся в техниках, которые так же содержат некоторые вспомогательные данные, такие как: видимость объектов, включение альфа канала в цвета и др. В моей работе я использую один проход, т.к. мой проект довольно примитивен и направлен на изучение основ и возможностей программирования шейдеров. В серьезных коммерческих (и не только) проектах может использоваться множество проходов, для получения изображения лучшего качества.

При рендеринге сложных объектов требуется большая вычислительная мощность и для того, чтобы уменьшить нагрузку на аппаратуру и потребность разработчиков в более современной технике используется негласное правило: все что можно посчитать – считай сам, все что нельзя посчитать самому считай в вершинном шейдере, а все остальное в пиксельном. Такой подход обусловлен тем, что пиксельный шейдер и без того перегружен вычислениями, и такой подход помогает равномерно распределить вычисления в течении всего создания изображения. [2]

На настоящее время перспективы шейдеров довольно радужные, т.к. они предоставляют широкие возможности для дизайнеров и разработчиков, поддерживаются многими мировыми компаниями, активно развиваются. Но существуют, конечно, и проблемы. Одна из которых – требования конечных потребителей. С развитием компьютерной графики люди стали привыкать к все более и более качественным и реалистичным изображениям и сейчас уже никого не удивить качественно выполненным средствами компьютерной графики взрывом. И удовлетворение потребностей потребителей требует постоянного развития, как компьютерной графики, так и развития аппаратуры. С одной стороны это конечно можно назвать плюсом, т.к. способствует прогрессу, однако для создателей это становится действительно проблематично, потому что необходимо делать постоянные капиталовложения в технику и в обучение и переобучение специалистов.