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

Презентация:



Advertisements
Похожие презентации
Разработка шейдеров с HLSL Guennadi Riguer
Advertisements

GPU vs. CPU 681 млн. транзисторов Тактовая частота 575Mhz * 768MB 1.8 Ghz памяти DDR4 ~650 млн. транзисторов Тактовая частота ~700Mhz 1GB 1.1 Ghz памяти.
Графический 3D-конвейер Определение состояния объектов (Situation modeling) Определение соответствующих текущему состоянию геометрических моделей (Geometry.
Высокоуровневый интерфейс потокового программирования для системы ATI DPVM Адинец А.В., Сахарных Н.А. Научный руководитель Березин С.Б. Лаборатория Microsoft.
Трансляция операций с массивами в код для современных графических процессоров Сахарных Н.А., Адинец А.В. Научный руководитель Березин С.Б. Лаборатория.
Визуальные эффекты на GPU Стандартные модели освещения - Гуро 1. Падающий равномерно рассеивается по всем направлением верхней полусферы 2. Энергия, уходящая.
Введение в GLSL Наталья Татарчук ATI Research, Inc 3D Application Research Group Game Developers Conference 2004.
Дни недели Температура (С 0 ) 1. Сколько дней температура была выше 16 0 ? 2. Какого.
Тема 11 Медицинская помощь и лечение (схема 1). Тема 11 Медицинская помощь и лечение (схема 2)
GPU vs. CPU 302 млн. транзисторов Тактовая частота 550Mhz 1GB 850x2 MHz памяти 380 млн. транзисторов Тактовая частота 650Mhz 1GB 775x2 MHz памяти Тактовая.
Информатика ЕГЭ Уровень А5. Вариант 1 Определите значения переменных a, b, c после выполнения следующего фрагмента программы: a:=5; b:=1; a:=a+b; if a>10.
Clipmaps Макаров Евгений. NVIDIA Confidential Текстурирование рельефа Тайлинг с использованием тайлсетов Использование альфа-смешивания Текстурирование.
Вариант Презентация "Осень золотая".
Безгодов Алексей Алексеевич, к.т.н., НИУ ИТМО. Виртуальная реальность Созданный техническими средствами мир, передаваемый человеку через его ощущения:
Date: File:System_VBSc_8.1 SIMATIC HMI Siemens AG All rights reserved. SITRAIN Training for Automation and Drives Гибкость.
Реализация алгоритма теневых объемов в DX10 Юрий Степаненко.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Безгодов Алексей Алексеевич, к.т.н., НИУ итмо. Системы виртуальной реальности?
Лекция 10 Структуры. Классификация типов данных Простые Целые, вещественные, void, перечисления Являются атомарными не состоят из других типов Адресные.
ОБРАБОТКА ИЗОБРАЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ АППАРАТНОГО УСКОРИТЕЛЯ ГРАФИКИ Разработчики: Дейнега В.М. Малых Д.А. Круглов В.Н.
Транксрипт:

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

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

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

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 Функции float4 DoSomething( in float3 a, out float2 b, inout float4 c) { b.xy = a.xz; c.xyz = a.zzy; c.w = dot(c.xyz, a.xyz); return float4(1,2,3,4); }

12 Шейдерные константы uniform float4x4 world_matrix : register (c1); uniform float4 color_mul : register (c5); uniform sampler 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; }

13 Создание шейдеров (входные и выходные данные) 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; };

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

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

16 Выполнение шейдеров INPUT ASSEMBLER POSITION COLOR NORMAL TEXCOORD New POSITION New COLOR New TEXCOORD RAZTERIZER Geometry Shader VSMain Shader Consts

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

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

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

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

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

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