Arquitetura de GPUs a Arquitetura de Hardware Arquitetura
- Slides: 34
Arquitetura de GPU´s
a. Arquitetura de Hardware
Arquitetura de GPUs Processador(es) Engine de Geometria CPU Interface CPU - GPU Engines de Rasterização Front Buffer Back Buffers Z Buffer Stencil Buffer Texture Buffer Interface Front Buffer GPU - Video M e m ó r i a d e v í d e o
Arquitetura de GPUs
Arquitetura de GPUs
b. Programação de GPUs
Programação de GPUs - Linguagens: Cg, HLSL, Open. GL Shader Language - Ambientes de Desenvolvimento NVídia FX Composer ATI Rendermonkey
Tipos de Variáveis - int, float, bool, struct, in, out, string - vetores: float 2, float 3, float 4 Float 4 cor; Vermelho = cor[0]; Vermelho = cor. r; Vermelho = cor. x; Float 2 parte = cor. xy; (swizzling) Float 2 parte = {cor[0], cor[1]};
Matrizes -float. Lx. C: float 3 x 4, float 4 x 4. . . -Matrix <float, 4, 4> Matriz 2; -Floar 4 x 4 matriz 1; -Float b = matriz 1. m 11; -Float c = matriz 1[0][1];
Funções Intrínsecas Abs (a), acos(x), all(x) [todos os componentes são não zero], any(x), asin(x), atan 2(y, x), ceil(x), clamp(x, min, max), clip(x), cosh(x), cross(a, b), D 3 DCOLORto. UBYTE 4(x), ddx(x), ddy(x), degree(x), determinant(m), distance(a, b), dot(a, b), exp(x), exp 2(value a), faceforward(n, i, ng), floor(x), fmod(a, b), frac(x), frexp(x, out exp), fwidth(x), isfinite(x), isinf(x), isnan(x), idexp(x, exp), length(v), lerp(a, b, s), lit(n. l, n. h, m), log(x), log 10(x), log 2(x), max(a, b), min(a, b), modf(x, out ip), mul (a, B), noise(x), normalize(v), pow(x, y), radians(x), reflect(i, n), refract(i, n, R), round(x), rsqrt(x), saturate(x), sign(x), sincos(x, out s, out c), sinh(x), smoothstep(min, max, x), value sqrt(value a), step(a, x), tan(x), tanh(x), tex 1 D(s, t, ddx, ddy), tex 1 Dbias(s, t), tex 1 Dgrad(s, t, ddx, ddy), tex 1 Dlod(s, t), tex 1 Dproj(s, t), tex 2 D(s, t, ddx, ddy), tex 2 Dbias(s, t), tex 2 Dgrad(s, t, ddx, ddy), tex 2 Dlod(s, t), tex 2 Dproj(s, t), tex 3 D(s, t, ddx, ddy), tex 3 Dbias(s, t), tex 3 Dgrad(s, t, ddx, ddy), tex 3 Dlod(s, t), tex 3 Dproj(s, t), tex. CUBE(s, t, ddx, ddy), tex. CUBEbias(s, t), tex. CUBEgrad(s, t, ddx, ddy), tex. CUBElod(s, t), tex. CUBEproj(s, t), transpose(m)
Loops e Condicionais If, While, do, for. . .
c. Vertex Programming
c. Vertex Programming Operações nesta etapa: - Transformação da posição do vértice - Geração de coordenadas de textura para a posição do vértice - Iluminação sobre o vértice - Operações para determinar o material a ser aplicado ao vértice Efeitos: - Geração de texturas procedurais - Efeitos de iluminação per-vertex - Animação procedural em vértices - Displacement mapping
Struct input Vertex Struct Vertex. Input { float 4 Position : POSITION 0; float 3 Normal : NORMAL; float 4 Texture. Coor : TEXCOORD 0; } BINORMAL[n] BLENDINDICES[n] BLENDWEIGHT [n] COLOR[n] NORMAL[n] POSITION[n] PSIZE[n] TANGENT[n] TESSFACTOR[n] TEXCOORD[n]
Struct output Vertex Struct Vertex. Output { float 4 Position : POSITION 0; float 4 Texture. Coor : TEXCOORD 0; } COLOR[n] FOG POSITION PSIZE TEXCOORD[n]
c. Vertex Programming Struct Vertex. Input { float 4 Position : POSITION; float 2 Tex. Coord : TEXCOORD 0; } Struct Vertex. Output { floar 4 Position : POSITION; float 2 Tex. Coord : TEXCOORD 0; }
c. Vertex Programming Vertex. Out. Put Aula. Verterx. Shader (Vertex. Input input) { Vertex. Output output; World. View. Projection = mul (mul(World, View), Projection); output. Position = mul(input. Position, World. View. Projection); output. Tex. Coord = input. Tex. Coord; return (output); }
d. Pixel Programming
d. Pixel Programming Operações nesta etapa: - Computar a cor de um fragmento - Alterar iluminação “per-pixel” - gl_Frag. Coord
Struct input Pixel Struct Pixel. Input { float 4 Color : COLOR 0; } COLOR[n] TEXCOORD[n] VFACE VPOS
Struct output Pixel Struct Pixel. Output { float 4 Position : POSITION 0; float Depth : DEPTH; } COLOR[n] DEPTH[n]
d. Pixel Programming Struct Pixel. Input { float 2 Tex. Coord : TEXCOORD 0; }
d. Pixel Programming Float 4 pixel. Shader (Pixel. Input input) : COLOR { return (tex 2 D (Texture. Sampler, input. Tex. Coord) * Ambient. Color); }
Exemplo no XNA – Arquivo Ambiente. fx float 4 Ambient. Color : COLOR 0; float 4 x 4 World. View. Projection : WORLDVIEWPROJECTION; texture Texture; sampler Texture. Sampler = sampler_state { texture = <Texture>; magfilter = LINEAR; minfilter = LINEAR; mipfilter = LINEAR; };
Exemplo no XNA – Arquivo Ambiente. fx struct Vertex. Input { float 4 Position : POSITION; float 2 Tex. Coord : TEXCOORD 0; }; struct Vertex. Output { float 4 Position : POSITION; float 2 Tex. Coord : TEXCOORD 0; }; Vertex. Output vertex. Shader (Vertex. Input input) { Vertex. Output output; World. View. Projection = mul (World, View), Projection); output. Position = mul(input. Position, World. View. Projection); output. Tex. Coord = input. Tex. Coord; return (output); }
Exemplo no XNA – Arquivo Ambiente. fx struct Pixel. Input { float 2 Tex. Coord : TEXCOORD 0; }; float 4 pixel. Shader (Pixel. Input input) : COLOR { //return (tex 2 D (Texture. Sampler, input. Tex. Coord)* Ambient. Color); return (1. 0 f, 0. 0 f); } technique Default { pass P 0 { Vertex. Shader = compile vs_1_1 vertex. Shader(); Pixel. Shader = compile ps_1_1 pixel. Shader (); } }
Exemplo no XNA – Projeto. net amespace Load 3 DObject { /// <summary> /// This is the main type for your game /// </summary> public class Game 1 : Microsoft. Xna. Framework. Game { private Graphics. Device. Manager graphics; private Content. Manager content; private Matrix world; private Model model; private FPS fps; private First. Person. Camera camera; private Input. Handler input; private Texture 2 D grey. Asteroid; private Texture 2 D original. Asteroid; Effect shader;
Exemplo no XNA – Projeto. net public Game 1() { graphics = new Graphics. Device. Manager(this); content = new Content. Manager(Services); input = new Input. Handler(this); Components. Add(input); camera = new First. Person. Camera(this); Components. Add(camera); }
Exemplo no XNA – Projeto. net protected override void Initialize() { base. Initialize(); shader. Parameters["Ambient. Color"]. Set. Value(0. 8 f); }
Exemplo no XNA – Projeto. net protected override void Load. Graphics. Content(bool load. All. Content) { if (load. All. Content) { model = content. Load<Model>(@"ContentModelsasteroid 1"); grey. Asteroid = content. Load<Texture 2 D>(@"ContentTexturesasteroid 1 -grey"); original. Asteroid = content. Load<Texture 2 D>(@"ContentTexturesasteroid 1"); shader = content. Load<Effect>(@"Contenteffectsambiente"); } } protected override void Unload. Graphics. Content(bool unload. All. Content) { if (unload. All. Content == true) { content. Unload(); } }
Exemplo no XNA – Projeto. net protected override void Update(Game. Time game. Time) { if (Game. Pad. Get. State(Player. Index. One). Buttons. Back == Button. State. Pressed) this. Exit(); base. Update(game. Time); }
Exemplo no XNA – Projeto. net protected override void Draw(Game. Time game. Time) { graphics. Graphics. Device. Clear(Color. Cornflower. Blue); // TODO: Add your drawing code here world = Matrix. Create. Rotation. Y( Math. Helper. To. Radians(270. 0 f * (float)game. Time. Total. Game. Time. Total. Seconds)) * Matrix. Create. Translation(new Vector 3(0, 0, -4000)); Draw. Model(ref model, ref world, grey. Asteroid); world = Matrix. Create. Rotation. Y( Math. Helper. To. Radians(45. 0 f * (float)game. Time. Total. Game. Time. Total. Seconds)) * Matrix. Create. Rotation. Z( Math. Helper. To. Radians(45. 0 f * (float)game. Time. Total. Game. Time. Total. Seconds)) * Matrix. Create. Translation(new Vector 3(0, 0, 4000)); Draw. Model(ref model, ref world, original. Asteroid); base. Draw(game. Time); }
Exemplo no XNA – Projeto. net private void Draw. Model(ref Model m, ref Matrix world, Texture 2 D texture) { Matrix[] transforms = new Matrix[m. Bones. Count]; m. Copy. Absolute. Bone. Transforms. To(transforms); foreach (Model. Mesh mesh in m. Meshes) { foreach (Model. Mesh. Part mp in mesh. Mesh. Parts) { if (texture != null) shader. Parameters["Texture"]. Set. Value(texture); shader. Parameters["Projection"]. Set. Value(camera. Projection); shader. Parameters["View"]. Set. Value(camera. View); shader. Parameters["World"]. Set. Value(world * mesh. Parent. Bone. Transform); mp. Effect = shader; mesh. Draw(); } } }
e. General Pourpose GPUs
- Gpu sql
- Understanding the efficiency of ray traversal on gpus
- Fast bvh construction on gpus
- Analyzing and leveraging decoupled l1 caches in gpus
- External and internal hardware
- Entwicklungsplattform
- Arquitetura do conjunto de instruções (isa)
- Arquitetura open source
- Nbr-10844
- Cultura do senado
- Pintura
- Arquitetura organizacional
- Arquitetura comemorativa romana
- Arquitetura sap
- Arquitetura tcp-ip
- Cliente servidor arquitetura
- Arquitetura risc e cisc
- Conceitos que definem a arquitetura cliente-servidor.
- Tabela de areas arquitetura
- Corte transversal arquitetura
- Arquitetura risc e cisc
- Estrutura hipostática exemplo
- Arquitetura paralela banco de dados
- Arquitetura de big data
- Sap modulos
- Arquitetura sap
- Interrupes
- Organização e arquitetura de computadores
- Funcionograma arquitetura
- Arte romana pintura
- Congresso ciam
- Comgrad arquitetura ufrgs
- Arquitetura de computadores
- Arquitetura tcp-ip
- Tcp