220 likes | 453 Views
GPU vs. CPU. R600. G80 (NV50). 681 млн. транзисторов Тактовая частота 575Mhz * 768MB 1.8 Ghz памяти DDR4. ~650 млн. транзисторов Тактовая частота ~700Mhz 1GB 1.1 Ghz памяти DDR4. Тактовая частота 2.66Ghz 581 млн. транзисторов ( quad core). Intel QX6700.
E N D
GPU vs. CPU R600 G80 (NV50) • 681 млн. транзисторов • Тактовая частота 575Mhz* • 768MB 1.8 Ghz памятиDDR4 • ~650 млн. транзисторов • Тактовая частота ~700Mhz • 1GB 1.1 Ghz памяти DDR4 • Тактовая частота 2.66Ghz • 581 млн. транзисторов (quad core) Intel QX6700 * ALU работают на 1350Mhz
GPU vs. CPU (3 года назад) NV30 R300 • 120 млн. транзисторов • Тактовая частота 500Mhz • 128MB 500MHz памяти • 107 млн. транзисторов • Тактовая частота 325Mhz • 128MB 310MHz памяти • Тактовая частота 1.6Ghz – 3.06Ghz • 42 млн. Транзисторов (core)
Полигональное представление объектов Объект задан набором вершин, которые объединены в плоские грани, чаще всего – треугольные. • Для каждой вершины заданы: • Координаты вершины • Нормаль • Координаты текстуры • И много чего еще ...
Общая архитектурасистемы CPU 6.4 GB/s GPU Chipset CPU RAM 6.4 GB/s 8GB/s 35GB/s для GeForce 6600 ~80 GB/s для GeForce 8800 GPU RAM По материалам книги GPU Gems 2
Классический графический конвейер float4x4 modelview,projection; float4 lights[8]; float4 diffuse,specular,ambient; float4 position; float3 normal; float2 tex0,tex1,… T&L Сборка примитивов x,y,z,w,… x,y,z,u0,v0, u1,v1,… Rasterization x,y,z,RGBA Pixel Ops Буфер кадра Texture2D tex0; Texture2D tex1; + Режим смешения текстур Режимы растровых операций
Программируемый графический конвейер float4x4 m0,m1,…mN; float4 v0,v1,…,vM; Texture2Dtex1, tex2 + программа обработки вершин float4 position (attr0) float4 attr1; float4 attr2; float3 attr3; Сборка примитивов T&L x,y,z,w,… x,y,z,w, c0,c1, c2,c3,… Rasterization x,y,z,RGBA Pixel Ops Texture2D tex0; Texture2D tex1; + программа обработки фрагментов Режимы растровых операций
Программируемый графический конвейер (DX10) float4x4 m0,m1,…mN; float4 v0,v1,…,vM; Texture2Dtex1, tex2 + программа обработки вершин float4 position (attr0) float4 attr1; float4 attr2; float3 attr3; x,y,z,w, c0,c1, c2,c3,… Сборка примитивов T&L Геометрический шейдер x,y,z,w,… Запись потока x,y,z,w, c0,c1, c2,c3,… Видеопамять Rasterization Pixel Ops x,y,z,RGBA Texture2D tex0,tex1; + программа обработки фрагментов Режимы растровых операций
Вершинная программа (шейдер) Вершинная программа - программа, на вход которой поступают однородные координаты x,y,z и w вершины и некоторый набор дополнительных атрибутов attr1,attr2,.., attrK.Результатом работы вершинной программы являются однородные координаты x’,y’,z’,w’ и некоторый набор значений c0,c1,…,cN. dp4 r0.x, v0, m0[0] dp4 r0.y, v0, m0[1] dp4 r0.z, v0, m0[2] dp4 r0.w, v0, m0[3] mov oD0, c[4] ; Output color mov oPos, r0 ; Output vertex T&L
Пиксельная программа (шейдер) Пиксельная программа (пиксельный шейдер, fragment program) - программа, на вход которой поступают координаты x’,y’,z’ и некоторый набор интерполированных по примитиву значений c0,c1,…,cNдля обрабатываемого пиксела. Результатом работы пиксельной программы является цвет в формате RGBA и, возможно, измененная координата z. c0,c1,c2,… c0,c1,c2,… ps.1.0 // DX8Version. tex t0 // n-map. texm3x3pad t1, t0_bx2 texm3x3pad t2, t0_bx2 v0_bx2texm3x3tex t3, t0_bx2 dp3_sat r0, t3_bx2, c0,c1,c2,… Rasterization
Язык описания шейдеров Язык описания шейдеров определяет допустимый набор передаваемых параметров (сколько атрибутов может быть у вершины, сколько величин может интерполироваться вдоль примитива) и набор доступных операций для некоторого абстрактного графического процессора • GL_ARB_vertex_program & GL_ARB_fragment_program • GL_NV_texture_shader • Direct3D Pixel & Vertex shaders 1.0 (DX8); 2.0, 3.0 (DX9); 4.0 (DX10) • Nvidia Cg • Microsoft HLSL • OpenGL Shading Language (GLSL)
Архитектура GeForce 8800 По материалам сайта iXBT
Возможности вершинных программ 3.0 • Instancing • Один поток вершин может порождать несколько объектов • 32 временных регистра float4 • Инструкции динамического ветвления • Условные переходы и циклы • Возможность обращения к текстурам • Фактически, доступ к массивам float4 • 512 статических инструкций • 65536 динамических инструкций
Возможности фрагментных программ 3.0 • Instancing • Один поток вершин может порождать несколько объектов • Несколько render target • Результаты могут быть записаны в 4 float4 • Инструкции динамического ветвления • Условные переходы и циклы • Обращение к атрибутам вершины по индексу • Удобно в циклах
Преобразование нормалей • Уравнение плоскости • Преобразуем координаты при помощи матрицы M
Bump-mapping • На поверхности задается система координат b n t • Компоненты текстуры RGB задают нормаль в связанной с поверхностью системе координат • Для расчета освещения направления на источник освещения и направление на наблюдателя преобразуются в связанную с поверхностью систему координат • Для расчета отражения вектор нормали преобразуется в системукоординат наблюдателя. Затем рассчитывается отражения (spheremap или cube map)
Bump-mapping • На поверхности задается система координат b n t