Что такое Вершинные и Пиксельные шейдеры?

Есть addGlobalListener, перечислены здесь .

Вот пример: https://www.ag-grid.com/javascript-grid-column-definitions/#column-api-example

. Угловая версия примера:

onGridReady(params) {
    this.gridApi = params.api;
    this.gridColumnApi = params.columnApi;

    params.api.addGlobalListener(function(type, event) {
        if (type.indexOf("column") >= 0) {
            console.log("Got column event: ", event);
        }
    });
}

70
задан 6 revs, 5 users 50% 30 August 2017 в 23:17
поделиться

4 ответа

Пиксельный шейдер - это компонент графического процессора (GPU), который можно запрограммировать для работы на попиксельной основе и заботиться о таких вещах, как освещение и отображение рельефа.

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

Ни один из них не лучше другого, каждый из них имеет свое конкретное применение. Большинство современных графических карт, поддерживающих DirectX 9 или выше, включают эти возможности.

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

44
ответ дан 24 November 2019 в 13:26
поделиться

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

Пиксельные (или, точнее, фрагментные) шейдеры принимают значения, интерполированные из значений, обработанных в вершинном шейдере, и генерируют фрагменты пикселей. Большинство «крутых» вещей делается в пиксельных шейдерах. Здесь происходят такие вещи, как поиск текстуры и освещение.

11
ответ дан 24 November 2019 в 13:26
поделиться

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

Их можно использовать для создания специальных эффектов, тени, освещение и т. д.

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

4
ответ дан 24 November 2019 в 13:26
поделиться

DirectX 10 и OpenGL 3 представили шейдер геометрии как третий тип.

Порядок конвейера рендеринга -

Vertex Shader - принимает одну точку и может ее настраивать. Может использоваться для расчета сложных ** вычислений освещения вершин в качестве настройки для следующего этапа и / или деформации точек (колебание, масштаб и т. Д.)

каждый результирующий примитив передается в

шейдер геометрии

118929] - Принимает каждый преобразованный примитив (треугольник и т. Д.) И может выполнять над ним вычисления. Это может добавлять новые точки, убирать их или перемещать их по мере необходимости. Это можно использовать для динамического добавления или удаления уровней детализации из одной базовой сетки, создания математических сеток на основе точки (для сложных систем частиц) и других подобных задач.

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

пиксельный шейдер (фрагментный шейдер в OpenGL) - вычисляет цвет пикселя на экране на основе того, что передает вершинный шейдер. in, связанные текстуры и данные, добавленные пользователем. Это вообще не может прочитать текущий экран, просто определите, какой цвет / прозрачность этот пиксель должен быть для текущего примитива.

эти пиксели затем помещаются в текущий буфер отрисовки (экран, задний буфер, отрисовка в текстуру, что угодно )

Все шейдеры могут обращаться к глобальным данным, таким как матрица мировоззрения, и разработчик может передавать простые переменные, которые они могут использовать для освещения или других целей. Шейдеры обрабатываются на языке ассемблера, но современные версии DirectX и OpenGL имеют встроенные компиляторы высокоуровневого c-подобного языка, называемые HLSL и GLSL соответственно. У NVidia также есть компилятор шейдеров под названием CG, который работает с обоими API.

[отредактировано, чтобы отразить неправильный порядок, который у меня был раньше (Геометрия-> Вершина-> Пиксель), как указано в комментарии.]

Теперь в DirectX 11 для тесселяции используются 3 новых шейдера. Новый полный порядок шейдеров: Vertex-> Hull-> Tessellation-> Domain-> Geometry-> Pixel. Я еще не использовал эти новые, поэтому не чувствую себя достаточно квалифицированным, чтобы описать их точно.

62
ответ дан 24 November 2019 в 13:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: