Комп'ютерна графіка: чим відрізняються вершинні шейдери та піксельні шейдери?


Відповідь 1:

Графічний трубопровід

Вершинні шейдери

  • Програми, виконані один раз за вершиною, на початку конвеєра. Не можна створювати або знищувати вершини. Не знає, до якого примітиву належить.

Піксельні шейдери

  • Програми, виконані один раз за фрагментом, запізнюються в конвеєр. Не можна отримати доступ до інших вершин або пікселів. Обчислює непрозорість, колір, значення z, текстурні координати.

Затінення фен

Затінення фен

на піксель;

Модель відбиття фонга

  • На кожній вершині перетворіть позицію та нормаль з простору об'єкта на світовий простір. На кожному пікселі інтерполюйте та нормалізуйте нормальну поверхню та підсумовуйте різні компоненти освітлення (навколишнє + дифузне + окулярне), щоб обчислити кінцевий колір пікселів.

Підручники OpenGL

змінюється vec3 N; варіювання vec3 v; void main (void) {v = vec3 (gl_ModelViewMatrix * gl_Vertex); N = нормалізувати (gl_NormalMatrix * gl_Normal); gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; }
змінюється vec3 N; варіювання vec3 v; void main (void) {vec3 L = нормалізувати (gl_LightSource [0] .position.xyz - v); vec3 E = нормалізувати (-v); vec3 R = нормалізувати (-відбивати (L, N)); // ambient vec4 Iamb = gl_FrontLightProduct [0] .ambient; // дифузний vec4 Idiff = gl_FrontLightProduct [0] .diffuse * max (крапка (N, L), 0,0); Idiff = затискач (Idiff, 0,0, 1,0); // specular vec4 Ispec = gl_FrontLightProduct [0] .specular * pow (max (крапка (R, E), 0,0)), 0,3 * gl_FrontMaterial.shininess); Ispec = затискач (Ispec, 0,0, 1,0); // загальний колір gl_FragColor = gl_FrontLightModelProduct.sceneColor + Iamb + Idiff + Ispec; }

Відповідь 2:

Що таке вершина шейдер?

Вершина шейдер

Майте на увазі, що шейдери Tessellation і Geometry необов’язкові.

Вхідні вершини шейдерів

Атрибути

Уніформи

Лише для читання

позицій, нормалів і uv-координат

ВСІ

Виходи Vertex Shader

gl_Position

Лише для читання

варіюється / виходить

Атрибути

варіюється / виходить

Уніформа

Що таке фрагмент шейдер (він же Pixel Shader)?

Уніформа

растерізатор

Вводи до фрагменту шейдера

Вершина

Тесселяція

Геометрія шейдер

квартира

варіюється / виходить

  • Координати текстури: використовується як один з параметрів у функції текстури (). Вектори відбиття вершин: використовуються в картографуванні навколишнього середовища, карту куба або будь-яких операціях, що включають відображення. .Геометричні координати в моделях або координатах перегляду. Інтенсивність світла: Використовується в сценах з використанням вершинного освітлення. Вектори відстані від вершин до джерел світла: Використовуються для точкового освітлення / затінення Фонга.

Виходи фрагмента Шейдера

vec4

Графічні шейдери: теорія та практика, друге видання: Майк Бейлі, Стів Каннінгем: 9781568814346: Amazon.com: Книги


Відповідь 3:

Що таке вершина шейдер?

Вершина шейдер

Майте на увазі, що шейдери Tessellation і Geometry необов’язкові.

Вхідні вершини шейдерів

Атрибути

Уніформи

Лише для читання

позицій, нормалів і uv-координат

ВСІ

Виходи Vertex Shader

gl_Position

Лише для читання

варіюється / виходить

Атрибути

варіюється / виходить

Уніформа

Що таке фрагмент шейдер (він же Pixel Shader)?

Уніформа

растерізатор

Вводи до фрагменту шейдера

Вершина

Тесселяція

Геометрія шейдер

квартира

варіюється / виходить

  • Координати текстури: використовується як один з параметрів у функції текстури (). Вектори відбиття вершин: використовуються в картографуванні навколишнього середовища, карту куба або будь-яких операціях, що включають відображення. .Геометричні координати в моделях або координатах перегляду. Інтенсивність світла: Використовується в сценах з використанням вершинного освітлення. Вектори відстані від вершин до джерел світла: Використовуються для точкового освітлення / затінення Фонга.

Виходи фрагмента Шейдера

vec4

Графічні шейдери: теорія та практика, друге видання: Майк Бейлі, Стів Каннінгем: 9781568814346: Amazon.com: Книги