DirectX, OpenGl < Обработка информации > видеокарта

Тема в разделе "WASM.Compute", создана пользователем Zhelezka, 27 окт 2008.

  1. Zhelezka

    Zhelezka New Member

    Публикаций:
    0
    Регистрация:
    21 июл 2008
    Сообщения:
    103
    Что делает видеокарта, а что графическая библиотека,
    и к чему из этого относятся шейдеры.
    Допустим создаётся ланшафт;
    создаётся кубик с текстурой, и крутится;
    создаётся зеркало за кубиком;
    создаётся освещение и тень от зеркала и кубика.
    Как всё это обрабатывается и работает.
    Если не сложно в виде схемы.
     
  2. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Zhelezka
    Много где написанно. Иди на геймдейв и почитай про шейдоры и графический конвеер.
     
  3. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Видеокарта делает то что умеет, а это зависит от конкретной модели. Графическая библиотека умеет всё, но делает то что не умеет видекарта :)

    написано об этом действительно много, например кое-что популярно здесь
     
  4. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Шейдер -- это программа, выполняемая процессором видюхи (графическим процессором, GPU или ГП). Ну а схема в случае использования DirectX зависит от версии этого самого DirectX. Для 9-й будет примерно так:

    1) Программа, выполняемая центральным процессором, "спускает" с помощью соответствующих вызовов DirectX API набор треугольников, из которых строится трёхмерная сцена, набор текстур, накладываемых на эти треугольники, набор шейдеров ну и всякую дополнительную информацию.

    2) DirectX что-то делает самостоятельно, но главным образом передаёт всё это графическому процессору (в каком виде, роли не играет, но зависит от модели ГП);

    3) Графический процессор для каждой из вершин треугольников выполняет соответствующий вершинный шейдер. Этот шейдер может, например, изменить координаты вершины в пространстве (и тем самым деформировать объект). Если шейдер не задан, выполняются определённые стандартные действия.

    4) Далее накладываются текстуры, рассчитывается освещение и всё такое прочее. На выходе получается двухмерное изображение.

    5) Для каждой точки полученного изображения вызывается соответствующий пиксельный шейдер. Он производит окончательный расчёт цвета пикселя, за счёт чего можно создавать множество эффектов.

    6) Полученный результат отображается на экране.

    В DirectX 10 шагов больше. Главное отличие -- появление геометрических шейдеров, которые способны создавать новые вершины, а не просто обрабатывать уже существующие.
     
  5. Zhelezka

    Zhelezka New Member

    Публикаций:
    0
    Регистрация:
    21 июл 2008
    Сообщения:
    103
    А как сделать что-то вроде графической библиотеки?
    Где найти документацию, примеры?
    Сильно отличаются NVidia, ATI?
    Разные или одинаковые команды надо им посылать для выполнения определённый действий?
     
  6. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Zhelezka
    закрытая инфа
     
  7. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Zhelezka
    А если хотите писать своии драйвера ищите исходники. ATI часть документации открыто у intel тоже.
    А так берем OpenGL и DirectX и делаем то что нужно.
     
  8. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Zhelezka
    DirectX, как и OpenGL, скрывают от программиста особенности аппаратуры, поэтому теоретически можно писать графические программы, не задумываясь о том, какая видюха стоит у пользователя. Однако здесь есть два "но":

    1) Набор возможностей, реализуемых разными графическими процессорами, отличается. Например, если ГП поддерживает только шейдеры 1-й версии, то шейдеры 3-й версии работать, естественно, не смогут. В этом плане ДХ10 имеет преимущество перед ДХ9, поскольку гарантирует, что все определяемые им возможности у совместимой с ним видюхи будут.

    2) ГП или драйвера не всегда ведут себя корректно, что может вызывать проблемы. Из недавних глюков, с коими столкнулся лично, могу назвать "Сталкер: Чистое небо" (вообще отвратительная игра в смысле качества, но это уже другой вопрос). На видюхах от Невидии всё работало нормально (насколько оно вообще в этой игре работает нормально), а вот на Радеонах при высоких настройках (при динамическом освещении, если склероз не изменяет) некоторые "сетчатые" объекты, в частности, колючая проволока, вообще не отображались. Ну и представьте, каково искать дыру в заборе, если самого забора не видно :) С одной стороны, очевидно, что виноваты либо ГП, либо драйвера от АМД, но с другой -- разработчики игры явно не удосужились проверить её работоспособность на разных аппаратных конфигурациях.

    В общем, "команды" в общем случае посылаются одинаковые, однако надо предварительно убедиться, что необходимые возможности поддерживаются аппаратурой, и не лениться тестировать на разном железе.

    Документации по Невидиям нет, по Радеоном -- частично открыта. Впрочем, это не очень-то поможет, потому что работать на уровне команд, выполняемых "железом", очень сложно и муторно по понятным причинам. Так что лучше изучать ДиректХ или ОпенГЛ.

    А это надо для начала определиться, что она должна делать :)