1 / 22

Программирование графических процессоров

Программирование графических процессоров. Безгодов Алексей Алексеевич НИИ НКТ, СПбГУ ИТМО. Принципы 3D -графики. Стадии графического конвейера. 3. Шейдеры: назначение. Шейдеры: назначение. Текстуры и внеэкранные поверхности. Типы: 1D, 2D, 3D - позиция в «массиве»

Download Presentation

Программирование графических процессоров

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Программирование графических процессоров Безгодов Алексей Алексеевич НИИ НКТ, СПбГУ ИТМО

  2. Принципы 3D-графики

  3. Стадии графического конвейера 3

  4. Шейдеры: назначение

  5. Шейдеры: назначение

  6. Текстуры и внеэкранные поверхности • Типы: • 1D, 2D, 3D - позиция в «массиве» • Cube - направление на одну из граней куба • Форматытекстур: • Компоненты: Lum, RGB, RGBA и др. • Формат компонент:Byte, Int16, Float16, Float32 • Адресация:Wrap, Clamp, Border, Mirror • Фильтрация:Nearest, Linear, Mipmap, Anisotropic

  7. Языки программирования шейдеров • Низкоуровневые (asm) • Высокоуровневые: • HLSL - Direct3D 9 и 10 • Cg - OpenGL, Direct3D • GLSL - OpenGL

  8. Данные (HLSL, Cg) • Скалярные:float, half, int, bool • Векторные:float2, float3, float4 • Матричные:float2x2 … float4x4 • Текстурные: sampler2D, sampler3D etc • Способы хранения: uniform, static etc • Семантикаданных: COLOR, NORMAL, POSITION etc

  9. Основные операции • Математические: • + - * / • mad(), dot(), cross(), reflect() • sin(), cos(), pow() • saturate(), clamp(), step() • floor(), ceil() • Текстурные (обращение к памяти): • tex2D, tex3D, texCUBE, tex2Dlod, tex2Dgrad, tex2Dproj …

  10. Выражения float4 a;float4 b(1,2,3,4);float4 c = 1; // = float4(1,1,1,1); a = b; a.x = b.y; a.xyzw = b.wzxy; // можно менять местами// компоненты for, if, while, do - идентичны языку С, но есть исключения

  11. x Текстурирование tex1D( sampler, float(x) ); tex3D( sampler, float3(x, y, z) ); x, y, z tex2D( sampler, float2(x, y) ); x, y

  12. Функции • float4 DoSomething(infloat3 a, outfloat2 b, inoutfloat4 c) { b.xy = a.xz; c.xyz = a.zzy; c.w = dot(c.xyz, a.xyz); return float4(1,2,3,4);}

  13. Шейдерные константы uniformfloat4x4 world_matrix : register (c1); uniformfloat4 color_mul : register (c5); uniformsampler input_data : register (s1); PS_OUT PSMain(in VS_OUT input) { PS_OUT output; output.color = tex2D(input_data, input.tex0.xy); output.color *= color_mul; return out; }

  14. Vertex Shader struct VS_IN {float3 pos : POSITION;float2 tex : TEXCOORD0;float4 clr : COLOR0;float3 norm : NORMAL;}; struct VS_OUT {float4 pos : POSITION;float2 tex : TEXCOORD0;float4 clr : COLOR0;}; POSITION – используется растеризатором Pixel Shader struct PS_IN {//float4 pos : POSITION;float2 tex : TEXCOORD0;float4 clr : COLOR0;}; struct PS_OUT {float4 color : COLOR0; float depth : DEPTH;}; Создание шейдеров(входные и выходные данные)

  15. Создание шейдеров(точки входа) • VS: VS_OUT VSMain(VS_IN input) { VS_OUT output;//…return output;} • PS:PS_OUT PSMain(VS_OUT input) { PS_OUT output;//…return out;}

  16. Выполнение шейдеров Shader Consts VSMain INPUTASSEMBLER RASTERIZERGeometry Shader POSITION COLOR NORMAL TEXCOORD New POSITION NewCOLOR New TEXCOORD VSMain VSMain

  17. Выполнение шейдеров Shader Consts VS_OUT #3 PS_IN PSMain RASTERIZER VS_OUT #1 VS_OUT #2

  18. Схема использования шейдеровдля вычислительных задач

  19. Обработка изображений demo_imgproc.fx Простые приемы научной визуализации demo_sci.fx Сложные приемы научной визуализации demo_mri.fx Практические задания 19

  20. Обработка изображений(demo_imgproc.fx)

  21. float value = tex3D(data, float3(x,y,z)).r; // … returntex2D(pal, float2(value, 0)); ddx(), ddy() if((s0<h && s1>h) || (s1<h && s0>h) || (s2<h && s3>h) || (s3<h && s2>h)) { sample = 1; } else { sample = 0; } Простые приемы научной визуализации (demo_sci.fx)

  22. Сложные приемы научной визуализации (demo_mri.fx)

More Related