Array ( )
Вход:




Главная | OpenGL | GLSL | AI | Сеть | Примеры | Библиотека

GLSL: Графический конвейер: пикселный процессор






Пикселный процессор - это то место, где запускаются пикселные шейдеры. Они могут
выполнять следующие операции:

  • Вычесление текстурных координат и цветов на пиксел
  • Применение текстуры
  • Рассчет тумана
  • Вычисление нормалей, если вам нужно пикселное освещение


    Вводные данные пикселного процессора - интерполированные значения, вычисленные на предыдущем этапе, такие как
    координаты вершин, цвета, нормали и т.д...

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

    Как и в вершинном шейдере, когда вы пишете пикселный шейдер, он заменяет собой весь базовый функционал.
    Поэтому невозможно, например, запрограммировать в шейдере работу с текстурой, а рассчет дыма
    оставить базовому функционалу. Программист обязан запрограммировать все эффекты, которые нужны
    программе.

    Пикселный процессор оперирует отдельными пикселами, то есть он не имеет представления о соседних пикселах.
    Пикселный шейдер, как и вершинный, имеет доступ к OpenGL, поэтому он может получить доступ, например,
    к цвету дыма, установленному в OpenGL.

    Одно важное замечание: пикселный шейдер не может изменять координаты пикселей, так как они рассчитаны
    на предыдущих этапах графического конвейера. Вспомните, а в вершинном шейдере для трансформации
    вершины могут использоватся матрицы моделей и проекции. Пикселный же шейдер имеет доступ к координатам
    пикселов, но не может изменять их.

    Пикселный шейдер может вернуть 2 значения:
  • Чтобы "отказатся" от пиксела, можно не вернуть ничего
  • Вычисленные либо gl_FragColor(итоговый цвет пиксела), либо gl_FragData(если работаем с несколькими пикселами)

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

    Запомните, что пикселный шейдер не имеет доступа к фреймбуферу. Это подразумевает, что операции
    вроде прозрачности будут рассчитаны уже после работы шейдера.











    Комментарии:

    Войдите, чтобы оставить комментарий:












  • Яндекс.Метрика
     Яндекс цитирования.