Analiza moż liwości i porównanie nowych ję zyków do programowania grafiki

Podobne dokumenty
OpenGL - Open Graphics Library. Programowanie grafiki komputerowej. OpenGL 3.0. OpenGL - Architektura (1)

Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie. Marcin Rociek. promotor: dr inż. Witold Alda

1 Temat: Vertex Shader

Zaawansowane systemy programowania grafiki. Wprowadzenie. Podstawy OpenGL

PORÓWNANIE WYDAJNOŚCI JĘZYKÓW CIENIOWANIA CG I HLSL

Grafika komputerowa. Grafika komputerowa. Grafika komputerowa

Potok graficzny i shadery. Hubert Rutkowski

GRAFIKA KOMPUTEROWA. Rozwiązania sprzętowe i programowe. Przyspieszanie sprzętowe. Synteza i obróbka obrazu

Programowanie gier komputerowych Tomasz Martyn Wykład 6. Materiały informacje podstawowe

Julia 4D - raytracing

Programowanie procesorów graficznych GPGPU

GRAFIKA CZASU RZECZYWISTEGO Wstęp do programowania grafiki czasu rzeczywistego.

Bartłomiej Filipek

Wprowadzenie. Artur Staszczyk Bartłomiej Filipek

GRAFIKA KOMPUTEROWA. Rozwiązania sprzętowe i programowe. Przyspieszanie sprzętowe. Synteza dźwięku i obrazu

Gry Komputerowe Laboratorium 4. Teksturowanie Kolizje obiektów z otoczeniem. mgr inż. Michał Chwesiuk 1/29. Szczecin, r

Przyspieszanie sprzętowe

Wprowadzenie do grafiki maszynowej. Wprowadzenie do historii OpenGL

Plan wykładu. Akcelerator 3D Potok graficzny

Karty Graczne i Sprz towe Wsparcie Dla Graki 3D

Grafika komputerowa i wizualizacja

Implementacja sieci neuronowych na karcie graficznej. Waldemar Pawlaszek

Biblioteka OpenGL: Wprowadzenie

Karta przedmiotu. Podstawy programowania procesorów graficznych. realizowanego w ramach projektu PO WER

Przegląd architektury PlayStation 3

Przegląd metod renderingu czasu rzeczywistego dla fotorealistycznych wizualizacji architektonicznych

GLKit. Wykład 10. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.h>

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Grafika komputerowa i wizualizacja. dr Wojciech Pałubicki

Opis efektów kształcenia dla modułu zajęć

GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL

Shadery. Artur Staszczyk Bartłomiej Filipek

Moc płynąca z kart graficznych

Systemy graficzne. dr inż. Mariusz Szwoch

1 DirectX Cell Shading

Programowanie Procesorów Graficznych

OpenGL : Oświetlenie. mgr inż. Michał Chwesiuk mgr inż. Tomasz Sergej inż. Patryk Piotrowski. Szczecin, r 1/23

Przegląd architektur kart. Sławomir Król

Podsystem graficzny. W skład podsystemu graficznego wchodzą: karta graficzna monitor

Algorytmy renderingu dla programowalnych jednostek graficznych. prof. dr hab. inż. Maria Pietruszka mgr inż. Dominik Szajerman

Wykład 4. Rendering (1) Informacje podstawowe

Scena 3D. Cieniowanie (ang. Shading) Scena 3D - Materia" Obliczenie koloru powierzchni (ang. Lighting)

Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1

Dowiedz się, jak tworzyć zapierające dech w piersiach gry 3D i efektowne, trójwymiarowe wizualizacje!

System 32-Bit 1: Microsoft Windows 7 Home Premium 2;, Professional, Ultimate, Enterprise Microsoft Windows 8/8.1, Pro, Enterprise 2;

Elementy do grafiki komputerowej. Wprowadzenie

Karta graficzna karta rozszerzeo odpowiedzialna generowanie sygnału graficznego dla ekranu monitora. Podstawowym zadaniem karty graficznej jest

GRK 4. dr Wojciech Palubicki

Wyświetlanie terenu. Clipmapy geometrii

Karty graficzne możemy podzielić na:

Architektura Komputerów

GPGPU General-Purpose computing on the GPU. Piotr Stańczyk

Graficzny edytor cieniowania

Co nowego pojawi o si ostatnio?

Wprowadzenie do grafiki komputerowej. W. Alda

GRAFIKA PROGRAMOWANA W PASCALU ==================================

OpenGL oświetlenie i tekstury. OpenGL oświetlenie. Bogdan Kreczmer.

Mapowanie tekstur Mip-mapy (level of detail) Filtrowanie Multiteksturowanie

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

OpenGL oświetlenie. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

Informacje i porady dotyczące pisania shaderów.

INFORMATYKA TECHNICZNA Badanie możliwości wykorzystania języka AutoLISP i środowiska VisualLISP w systemie CAx

Komponowanie shaderów w X3D

Bartosz Bazyluk OpenGL Współczesne podejście do programowania grafiki Część II: Programy cieniujące (shadery)

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Model oświetlenia. Radosław Mantiuk. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie

Grafika 3D na przykładzie XNA 3.1

Changed with the DEMO VERSION of CAD-KAS PDF-Editor (

Gry Komputerowe Laboratorium 1. Zajęcia organizacyjne Animacja z uwzględnieniem czasu. mgr inż. Michał Chwesiuk 1/22. Szczecin,

Programowanie gier 3D w HTML5. Andrzej P.Urbański Politechnika Poznańska

GRK 5. dr Wojciech Palubicki

Informatyka I stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny)

Wprowadzenie do grafiki maszynowej. Wprowadzenie do wprowadzenia

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH


Vulkan API. Adam Sawicki Reg KNTG Polygon

WIZUALIZACJA TRÓJWYMIAROWYCH PÓL SKALARNYCH Z WYKORZYSTANIEM TECHNIK RENDERINGU OBJĘTOŚCIOWEGO

Specjalność Systemy Aplikacyjne Grafiki i Multimediów. Wydział Informatyki, Politechnika Białostocka

Intro 4kb. sphere tracing. Maciej Matyka (maq / floppy) Dla koła naukowego Voxel

Język opisu sprzętu VHDL

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Zakres tematyczny dotyczący podstaw programowania Microsoft Office Excel za pomocą VBA

OpenGL model oświetlenia

Przetwarzanie obrazów w czasie rzeczywistym za pomocą GPU

SYMULACJA OPADÓW ATMOSFERYCZNYCH I POKRYWY ŚNIEŻNEJ W GENERATORZE OBRAZU JASKIER IG

KARTA KURSU. Grafika komputerowa

Microsoft IT Academy kurs programowania

Grafika Komputerowa. Wprowadzenie

Poniżej pokazane są poszczególne etapy, w nawiasach kwadratowych znajdują się nazwy tekstur, które utworzymy w projekcie, a przy strzałkach nazwy

Grafika Komputerowa, Informatyka, I Rok

Numer ogłoszenia: ; data zamieszczenia: OGŁOSZENIE O ZMIANIE OGŁOSZENIA

Architektura systemów komputerowych. Przetwarzanie potokowe I

Wykład 5. Rendering (2) Geometria

Mobilne aplikacje multimedialne. OpenGL

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Różne rodzaje efektów

14. Przedmiot: N/PM2012/11/14/I1 INFORMATYKA moduł 1 Semestr. Liczba tygodni Liczba godzin w tygodniu Liczba godzin w semestrze ECTS

Specyfikacja OpenGL Podstawy programowania grafiki komputerowej*

GRK 5. dr Wojciech Palubicki

Transkrypt:

Analiza moż liwości i porównanie nowych ję zyków do programowania grafiki Na przykładzie C for Graphics i OpenGL 2.0 Shading Language autor: Marcin Rociek promotor: dr inż. Witold Alda 1

Wprowadzenie 2 tory rozwoju grafiki: Grafika interaktywna (gry) Czas renderingu: < 33ms Wydajne karty graficzne Niewygodne programowanie Grafika o wysokiej jakości (filmy) Czas renderingu liczony nawet w godzinach Duż e komputery Zaawansowane metody opisu wyglą du (shadery) Postę p technologiczny powoduje zmniejszenie dystansu 2

Współczesne akceleratory graficzne Rozwój szybszy niż rozwój CPU Ewolucja: bierny bufor ramki akcelerowana czarna skrzynka programowalny GPU Typowo graficzne dane (wektory) i instrukcje (dp3, lit, mad,...) Rok 2001: NVIDIA GeForce3 (NV20) Vertex Shader 128 instrukcji, brak pę tli Fragment Shader 12 instrukcji, 4 tekstury, ograniczenia Rok 2002: NVIDIA GeForceFX (NV30) Vertex Shader 256 instrukcji, pę tle, podprocedury,... Fragment Shader 1024 instrukcji, 16 tekstur,... float float float float x y z w 4 float = 4 32 bity = 128 bitó w 3

Program dla Vertex Shadera Przykładowy kompletny program (13 instrukcji): # przekształcenie współrzędnych dp4 o[hpos].x, c[0], v[opos]; dp4 o[hpos].y, c[1], v[opos]; dp4 o[hpos].z, c[2], v[opos]; dp4 o[hpos].w, c[3], v[opos]; # obliczenie wektora normalnego N' dp3 r0.x, c[4], v[nrml]; dp3 r0.y, c[5], v[nrml]; dp3 r0.z, c[6], v[nrml]; dp3 r1.x, c[32], r0; dp3 r1.y, c[33], r0; mov r1.w, c[38].x; # r1.x = L o N' # r1.y = H o N' lit r2, r1; # obliczenie współczynników oświetlenia mad r3, c[35].x, r2.y, c[35].y; # diffuse + ambient mad o[col0].xyz, c[36], r2.z, r3; # + specular Programowanie na niskim poziomie jest trudne i czasochłonne Kod jest nieczytelny 4

Shadery w ję zyku wysokiego poziomu Rendering offline (produkcja filmów) RenderMan Shading Language (Pixar) Wzorcowy punkt odniesienia dla pozostałych rozwią zań Rendering w czasie rzeczywistym Stanford Shading Language (Stanford University) Od renderingu wieloprzebiegowego po wykorzystywanie sprzę towych shaderów SGI Interactive Shading Language (SGI) Nakładka, nie wykorzystuje sprzę towych shaderów PixelFlow Shading Language (University of North Carolina + HP) Dedykowany sprzę t C for Graphics (NVIDIA + Microsoft) Tylko dla sprzę towych shaderów OpenGL Shading Language (3Dlabs) Bę dzie tylko dla sprzę towych shaderów 5

NVIDIA + Microsoft C for Graphics - Cg Składniowo Cg jest tym samym co DirectX 9 HLSL Wersja beta: czerwiec 2002, pierwsze oficjalne wydanie: grudzień 2002. Model programowania GPU: 6

Cg - c.d. Przeznaczony dla róż nych rozwią zań niskopoziomowych Każ dy z tzw. profili definiuje pewien podzbiór moż liwości ję zyka, np.: Maksymalną ilość wygenerowanych instrukcji Dostę pne operatory, funkcje, pę tle Pewne zależ ności pomię dzy zmiennymi i funkcjami Np. GeForce3 moż e wykonać dependent texture read tylko w pewnych ściśle określonych warunkach error C9999: Dependent texture operations don t meet restrictions of texture shaders Biblioteka Runtime umoż liwia korzystanie z Cg w aplikacji Kompilowanie programów w locie Moż liwość kompilowania dla róż nych profili 7

OpenGL Shading Language - GLslang OpenGL 1.4 (obecnie) Nie nadąża za rozwojem sprzę tu Niewygodne w uż yciu rozszerzenia OpenGL 2.0 Promowany i opracowywany głównie przez 3Dlabs Testowa implementacja tylko na kartach Wildcat VP Projektowany pod nastę pne generacje sprzę tu Wymiana pewnych stałych części potoku OpenGL na programowalne 8

GLslang - c.d. GLslang Ma ograniczyć powstawanie kolejnych rozszerzeń Składnia oparta na C + dodatki specyficzne dla GPU Typy wektorowe, macierzowe 9

Cg: ję zyk ponad podziałami (w teorii) GLslang: wbudowany (jak HLSL w DirectX) Porównanie Cg: tworzy kod pośredni (jak HLSL) GLslang: kompilowany do postaci binarnej Róż nice składniowe Cg: float4x4 M; float4 x, y; y = mul(m, x); GLslang: mat4 M; vec4 x, y; y = M*x; Róż nice w sposobie przekazywania parametrów Dostę pność 10

Fragment shader Przykładowy program dla GPU float3 texel0 = tex2d(texture1, IN.texCoord0).rgb; float3 texel1 = tex2d(texture2, IN.texCoord1).rgb; float3 color = lerp(texel0, texel1, tex2d(mask, IN.texCoord2).r); return float4(in.lighting.y*color + IN.lighting.z, 1.0); 11

Przykładowy program dla GPU Po skompilowaniu... ps_1_1 def c0, 0.000000, 0.000000, 1.000000, 0.000000 def c1, 1.000000, 0.000000, 0.000000, 0.000000 def c2, 0.000000, 1.000000, 0.000000, 0.000000 tex t0 tex t1 tex t2 dp3 t2.rgb, c1, t2 dp3 t3.rgb, c2, v0 dp3 r1.rgb, c0, v0 mov r0.rgb, t2 lrp t0.rgb, r0, t0, t1 mad r0.rgb, t3, t0, r1 + mov r0.a, c0.b ps_2_0 dcl_2d s0 dcl_2d s1 dcl_2d s2 def c0, 0.000000, 0.000000, 0.000000, 1.000000 dcl v0.yz dcl t0.xy dcl t1.xy dcl t2.xy texld r0, t1, s1 texld r1, t0, s0 add r0.xyz, r0, -r1 texld r2, t2, s2 mad r0.xyz, r2.x, r0, r1 mad r0.xyz, v0.y, r0, v0.z mov r0.w, c0.w mov oc0, r0 arbfp1 PARAM c0 = {0, 0, 0, 1}; TEMP R0; TEMP R1; TEMP R2; TEX R0.xyz, fragment.texcoord[1], texture[1], 2D; TEX R1.xyz, fragment.texcoord[0], texture[0], 2D; ADD R0.xyz, R0, -R1; TEX R2.x, fragment.texcoord[2], texture[2], 2D; MAD R0.xyz, R2.x, R0, R1; MAD result.color.xyz, fragment.color.primary.y, R0, fragment.color.primary.z; MOV result.color.w, c0.w; 12