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

Podobne dokumenty
6 Przygotował: mgr inż. Maciej Lasota

Światło. W OpenGL można rozróżnić 3 rodzaje światła

Światła i rodzaje świateł. Dorota Smorawa

OpenGL Światło (cieniowanie)

Oświetlenie w OpenGL. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 8. Światło otaczajace. Światło rozproszone.

OpenGL Światło (cieniowanie)

dr inż. Jacek Dąbrowski, KSG

Shadery. Artur Staszczyk Bartłomiej Filipek

Bartłomiej Filipek

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

Potok graficzny i shadery. Hubert Rutkowski

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

OpenGL model oświetlenia

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

1 Temat: Vertex Shader

Plan wykładu. Akcelerator 3D Potok graficzny

Mobilne aplikacje multimedialne. OpenGL

Gry komputerowe, Informatyka N1, III Rok

Bartosz Bazyluk POTOK RENDEROWANIA Etapy renderowania w grafice czasu rzeczywistego. Grafika Komputerowa, Informatyka, I Rok

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

Programowanie Procesorów Graficznych

Teksturowanie (ang. texture mapping)

Grafika Komputerowa Wykład 6. Teksturowanie. mgr inż. Michał Chwesiuk 1/23

OpenGL - tekstury Mapowanie tekstur

Biblioteka OpenGL: Wprowadzenie

Informacje i porady dotyczące pisania shaderów.

Grafika Komputerowa Wykład 5. Potok Renderowania Oświetlenie. mgr inż. Michał Chwesiuk 1/38

Teksturowanie. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 10. Tekstury. Proces nakładania tekstury.

Oświetlenie obiektów 3D

Materiały. Dorota Smorawa

GRK 4. dr Wojciech Palubicki

System graficzny. Potok graficzny 3D. Scena 3D Zbiór trójwymiarowych danych wejściowych wykorzystywanych do wygenerowania obrazu wyjściowego 2D.

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

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Laboratorium 4 OpenGl (4) Oświetlenie sceny

GRAFIKA CZASU RZECZYWISTEGO Interakcja, ruch kamery, oświetlenie.

OPEN_GL LABORATORIUM 6. tekst na podstawie: Edwarda Angela oraz Łukasza Grabca

Wprowadzenie. Artur Staszczyk Bartłomiej Filipek

Animowana grafika 3D. Opracowanie: J. Kęsik.

Laboratorium Grafiki Komputerowej i Animacji. Ćwiczenie V. Biblioteka OpenGL - oświetlenie sceny

Julia 4D - raytracing

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

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

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

GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL

Filtrowanie tekstur. Kinga Laurowska

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

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

Idź do. Spis treści Przykładowy rozdział Skorowidz. Katalog książek. Katalog online Zamów drukowany katalog. Twój koszyk.

GRK 5. dr Wojciech Palubicki

Synteza i obróbka obrazu. Tekstury. Opracowanie: dr inż. Grzegorz Szwoch Politechnika Gdańska Katedra Systemów Multimedialnych

Laboratorium grafiki komputerowej i animacji. Ćwiczenie V - Biblioteka OpenGL - oświetlenie sceny

PARADYGMATY PROGRAMOWANIA Wykład 4

Nowoczesna OpenGL - rendering wielokątów Rendering wielokątów w kontekście biblioteki SFML

Wyświetlanie terenu. Clipmapy geometrii

Gry komputerowe: efekty specjalne cz. 2

Wprowadzenie do QT OpenGL

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

GRK 5. dr Wojciech Palubicki

GRK 3. Dr Wojciech Palubicki

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

Wstęp Podstawy Pierwszy program Definiowanie sceny 3D Przekształcenia geometryczne... 47

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy cieniowania.

Microsoft IT Academy kurs programowania

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Grafika Komputerowa Wykład 4. Synteza grafiki 3D. mgr inż. Michał Chwesiuk 1/30

Zjawisko widzenia obrazów

Programowanie warstwy wizualnej gry

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Podłączanie bibliotek Zapis danych do pliku graficznego Generowanie promienia pierwotnego Import sceny z pliku Algorytm ray tracingu

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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Zadanie 1. Ściana. 1. Potrzebne zmienne w dołączonym do zadania kodzie źródłowym

Przyspieszanie sprzętowe

Trójwymiarowa wizualizacja danych przestrzennych

Programowanie obiektowe

Programowanie - instrukcje sterujące

Wstęp. Potok renderowania w Unity korzysta z trzech podstawowych elementów:

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Język ludzki kod maszynowy

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Język C++ wykład VIII

Laboratorium 2. Część I. Perspektywa. Obsługa poleceń myszy. 2. W sekcji przeznaczonej na definicję zmiennych globalnych dodaj następujące definicje:

GRAKO: ŚWIATŁO I CIENIE. Modele barw. Trochę fizyki percepcji światła. OŚWIETLENIE: elementy istotne w projektowaniu

Aplikacje w środowisku Java

Karty graficzne możemy podzielić na:

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

2 Przygotował: mgr inż. Maciej Lasota

Programowanie 2. Język C++. Wykład 2.

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

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Transkrypt:

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

Korekcja perspektywy http://en.wikipedia.org/wiki/file:perspective_correct_texture_mapping.jpg

GL_TEXTURE_MIN_FILTER Zmniejszanie - jeden piksel wiele tekseli GL_TEXTURE_MAG_FILTER Powiększanie - jeden piksel jeden lub mniej tekseli GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T GL_CLAMP lub GL_REPEAT

Multiteksturowanie Zazwyczaj graficy starają się uzyskać jedną teksturę na model, ale nie zawsze się udaje Detail texture, Light mapping, Dodatkowa, prekalkulowana tekstura z oświetleniem, Bump mapping, Tekstura jako źródło normalnych, Renderowanie do tekstury Cienie Pierwsze GPGPU

Klasyczny 3 rodzaje świateł: Ambient, Diffuse, Specular glenable(gl_light0) Programmable Możliwość odtworzenia świateł ADS Inne efekty

Niezależnie od kąta obserwacji identyczna intensywność

Zasady odbicia - jak ambient, ale: Może być przesłonięte Słabnie z odległością

Jasność odbitego światła funkcją kąta pomiędzy promieniem padania a obserwacji Współczynnik potęgowy uwypukla/rozmywa odbicie

A L * M A A D L D * M *( L N) D S L * M *( R E) S S SH Bardziej zaawansowane techniki oświetlania pixel shadery

GL_MAX_LIGHTS >= 8 glenable(gl_lighting); glenable(gl_color_material) Ambient: gllightmodel Specular/Diffuse: gllight, glenable(gl_lightn) glmaterial*(strona, rodzaj światła, wartość):

gllight*(glenum light, Glenum pname, [****] param); Light: GL_LIGHT1, GL_LIGHT2,... pname: GL_AMBIENT GL_DIFFUSE GL_SPECULAR GL_POSITION GL_SPOT_DIRECTION GL_SPOT_EXPONENT GL_SPOT_CUTOFF GL_CONSTANT_ATTENUATION GL_LINEAR_ATTENUATION GL_QUADRATIC_ATTENUATION

Liczba świateł Lightmapy statyczne światła, Level of detail, Pixel Shadery Uproszczona interpolacja normalnych Predefiniowana funkcja jasności w zależności od wzajemnego kąta (specular)

Do powierzchni przypisana jest dodatkowa tekstura mapa głebokości

Własny kod do przetwarzania pozycji wierzchołków, Własny kod do obliczania koloru każdego stawianego piksela, Geometry shader, Hull shader Język wysokiego poziomu DirectX: HLSL OpenGL: GLSL

Uproszczenie składni w stosunku do C, Kompilacja przez sterownik OpenGL, Praca równoległa, Możliwość łączenia z tradycyjną ścieżką przetwarzania, Macierze modelview, projekcji nadal są dostępne, To samo z kolorami, współrzędnymi tekstur, parametrami sprzętowych świateł,

Wbudowane typy macierzowe/wektorowe bvec3 A three-component Boolean vector. bvec4 A four-component Boolean vector. ivec2 A two-component integer vector.... vec4 A four-component floating-point vector. mat3 or mat3x3 A 3 3 floating-point matrix. mat4 or mat4x4 A 4 4 floating-point matrix. mat2x3 A 2-column 3-row floating-point matrix. mat2x4 A 2-column 4-row floating-point matrix.... mat4x3 A 4-column 3-row floating-point matrix. sampler1d A special-purpose constant used by built-in texture functions to reference a specific 1D texture. It can be declared only as a uniform or function argument. sampler2d A constant used for referencing a 2D texture.

Wraz z typami macierzowymi i wektorowymi dostępne są operatory do operacji na nich (mnożenie, dodawanie, geometria) Wektory Długość, mnożenie (dot, cross), normalizacja Odbijanie, generowanie normalnych, ftransform Dostęp do pól wektora vec2, vec3, vec4 Pozycje xyzw Kolor rgba Koordynaty stpq

Macierze Mnożenie, transpozycja Matematyka Trygonometria (funkcje, arcusy, deg<->rad) Potęgi, logarytmy, pierwiastki Obcinanie, clampowanie, reszta z dzielenia rzeczywistego, interpolacja

Brak: char, char*, string #include sizeof() long, double, int8,... Zamiana typu przez konstruktory int x= int(float) lub int(bool) float x= float(int) lub float(bool) int x= int(float) lub int(bool)

Modyfikatory typów const attribute Dla każdego wierzchołka Predefiniowane atrybuty wierchołków, np: vec4 gl_vertex, vec4 gl_certex, vec3 gl_normal, vec4 gl_multitexcoordi,. uniform Dla całego aktualnego shadera Predefiniowane...

Uniform predefiniowane parametry: Macierze i macierze pochodne (odwrotne, transponowane,...) Parametry przestrzeni (near, far clipping) Parametry punktów... (literatura) Varying Do komunikacji z VS do FS Predefiniowane Gl_FrontColor, gl_backcolor, gl_texcoord[],...

Tekstury już były Punkty: Tablice Arrays VBO Vertex Buffer Objects Klasa PointSet Tryby rysowania 1..5

int shader_program;... GL.UseProgram(shader_program);

static public void CreateShaders(string vsfile, string fsfile, out int vertexobject, out int fragmentobject, out int program) { string vs = new StreamReader(vsFile).ReadToEnd(); string fs = new StreamReader(fsFile).ReadToEnd(); int status_code; string info; }... vertexobject = GL.CreateShader(ShaderType.VertexShader); fragmentobject = \ GL.CreateShader(ShaderType.FragmentShader);

... // Compile vertex shader GL.ShaderSource(vertexObject, vs); GL.CompileShader(vertexObject); GL.GetShaderInfoLog(vertexObject, out info); GL.GetShader(vertexObject, ShaderParameter.CompileStatus, out status_code); if (status_code!= 1) throw new ApplicationException(info); // Compile fragment shader GL.ShaderSource(fragmentObject, fs); GL.CompileShader(fragmentObject); GL.GetShaderInfoLog(fragmentObject, out info); GL.GetShader(fragmentObject, ShaderParameter.CompileStatus, out status_code); if (status_code!= 1) throw new ApplicationException(info);...

static public void CreateShaders(string vsfile, string fsfile, out int vertexobject, out int fragmentobject, out int program) {... program = GL.CreateProgram(); GL.AttachShader(program, fragmentobject); GL.AttachShader(program, vertexobject); } GL.LinkProgram(program);

#version 330 layout(location = 0)in vec4 vert; uniform mat4 projection; uniform mat4 view; uniform mat4 model; void main() { gl_position = projection * view * model * vert; }

#version 330 out vec4 fragcolor; void main() { fragcolor = vec4(1.0, 0.0, 0.0, 1.0); }