Cílem práce bylo vytvořit literární rešerši na téma rasterizace geometrických objektů a možné optimalizace SW algoritmů pro její urychlení. Dále zhodnotit současný stav a schopnosti grafických subsystémů Cairo, GDI+ a AntiGrain, které se používají v nejrozšířenějších operačních systémech. Praktická část se zabývá návrhem a implementací vlastní grafické knihovny v jazyce C++, která bude schopná využít více vláken a multimediální instrukce procesoru x86 a x86_64 pro maximalizaci výkonu. Součástí návrhu a implementace je popis navržených tříd v knihovně, jejich optimalizace a demonstrační ukázky výstupu knihovny. Praktická část se dále zabývá porovnáním výkonu navržené knihovny a návrhem metodiky integrace s jinými grafickými knihovnami a GUI toolkity.
Annotation in English
The aim of this work was to create literature research about rasterization of geometric objects and possible optimizations of software based rasterization algorithms. In addition, to assess the current status and capabilities of graphics libraries Cairo, GDI+ and AntiGrain, which are used in most operating systems. The practical part deals with design and implementation of new graphics library in C++ language, which will be able to use multithreading and special x86 or x86_64 CPU instructions to maximize its performance. Part of library design and implementation is description about its classes, optimizations and demonstration examples of library output. The practical part also deals with comparing the performance of the proposed library and integration with other graphics libraries and GUI toolkits.
Cílem práce bylo vytvořit literární rešerši na téma rasterizace geometrických objektů a možné optimalizace SW algoritmů pro její urychlení. Dále zhodnotit současný stav a schopnosti grafických subsystémů Cairo, GDI+ a AntiGrain, které se používají v nejrozšířenějších operačních systémech. Praktická část se zabývá návrhem a implementací vlastní grafické knihovny v jazyce C++, která bude schopná využít více vláken a multimediální instrukce procesoru x86 a x86_64 pro maximalizaci výkonu. Součástí návrhu a implementace je popis navržených tříd v knihovně, jejich optimalizace a demonstrační ukázky výstupu knihovny. Praktická část se dále zabývá porovnáním výkonu navržené knihovny a návrhem metodiky integrace s jinými grafickými knihovnami a GUI toolkity.
Annotation in English
The aim of this work was to create literature research about rasterization of geometric objects and possible optimizations of software based rasterization algorithms. In addition, to assess the current status and capabilities of graphics libraries Cairo, GDI+ and AntiGrain, which are used in most operating systems. The practical part deals with design and implementation of new graphics library in C++ language, which will be able to use multithreading and special x86 or x86_64 CPU instructions to maximize its performance. Part of library design and implementation is description about its classes, optimizations and demonstration examples of library output. The practical part also deals with comparing the performance of the proposed library and integration with other graphics libraries and GUI toolkits.
Vytvořte literární rešerši na téma rasterizace geometrických objektů a možné optimalizace SW algoritmů pro její urychlení. Zhodnoťte současný stav a schopnosti grafických subsystémů (Cairo, GDI+, Antigrain, ...) současných nejrozšířenějších operačních systémů (MS Windows, Linux, MacOS).
Vytvořte multiplatformní grafickou knihovnu schopnou využít více vláken a rozšíření CPU pro vykreslování grafických objektů. Zvažte a případně implementujte možnosti JIT kompilace nízkoúrovňových grafických funkcí.
Navrhněte a implementujte základní objekty grafické knihovny (písmo, obrázek, region, grafický kontext, framework pro načítání / ukládání obrázků).
Navrhněte a implementujte funkce pro operace s rastrem na nejnižší vrstvě (optimalizované funkce, využití technologií MMX, SSE2). Navrhněte a implementujte optimalizace vykreslení gradientu pomocí MMX a SSE2.
Srovnejte rychlost renderování a možnosti výsledné softwarové knihovny s jinými podobnými knihovnami.
Navrhněte metodiku integrace nového grafického subsystému s dalšími grafickými knihovnami a GUI toolkity pracujícími na vyšší úrovni (wxWidgets, Qt, GTK, FLTK, ...).
Vytvořte programovou dokumentaci Vašeho grafického systému.
Research Plan
Vytvořte literární rešerši na téma rasterizace geometrických objektů a možné optimalizace SW algoritmů pro její urychlení. Zhodnoťte současný stav a schopnosti grafických subsystémů (Cairo, GDI+, Antigrain, ...) současných nejrozšířenějších operačních systémů (MS Windows, Linux, MacOS).
Vytvořte multiplatformní grafickou knihovnu schopnou využít více vláken a rozšíření CPU pro vykreslování grafických objektů. Zvažte a případně implementujte možnosti JIT kompilace nízkoúrovňových grafických funkcí.
Navrhněte a implementujte základní objekty grafické knihovny (písmo, obrázek, region, grafický kontext, framework pro načítání / ukládání obrázků).
Navrhněte a implementujte funkce pro operace s rastrem na nejnižší vrstvě (optimalizované funkce, využití technologií MMX, SSE2). Navrhněte a implementujte optimalizace vykreslení gradientu pomocí MMX a SSE2.
Srovnejte rychlost renderování a možnosti výsledné softwarové knihovny s jinými podobnými knihovnami.
Navrhněte metodiku integrace nového grafického subsystému s dalšími grafickými knihovnami a GUI toolkity pracujícími na vyšší úrovni (wxWidgets, Qt, GTK, FLTK, ...).
Vytvořte programovou dokumentaci Vašeho grafického systému.
Recommended resources
HYDE, Randall. The Art of Assembly Language. First Edition, 2004. No Starch Press. ISBN 1-886-41197-2.
HARRIS, Simon - ROSS, James. Beginning Algorithms. First Edition, 2006. Wiley Publishing, Inc. ISBN 0-764-59674-8.
MATTHEW, Nail - STORES, Richard. Beginning Linux Programming. Third Edition, 2004. Wiley Publishing, Inc. ISBN 1-861-00297-1.
HART, Johnson. Windows System Programming. Third Edition, 2005. ISBN 0-321-25619-0.
HYDE, Randall. Write Great Code Volume II - Thinking Low Level, Writing High Level. First Edition, 2006. Addison Wesley Professional. ISBN 1-593-27065-8.
Microsoft Developer Network [online]. URL: (http://msdn.microsoft.com).
AntiGrain Geometry [online]. URL: (http://www.antigrain.com/).
Cairo Graphics [online]. URL: (http://cairographics.org/).
Recommended resources
HYDE, Randall. The Art of Assembly Language. First Edition, 2004. No Starch Press. ISBN 1-886-41197-2.
HARRIS, Simon - ROSS, James. Beginning Algorithms. First Edition, 2006. Wiley Publishing, Inc. ISBN 0-764-59674-8.
MATTHEW, Nail - STORES, Richard. Beginning Linux Programming. Third Edition, 2004. Wiley Publishing, Inc. ISBN 1-861-00297-1.
HART, Johnson. Windows System Programming. Third Edition, 2005. ISBN 0-321-25619-0.
HYDE, Randall. Write Great Code Volume II - Thinking Low Level, Writing High Level. First Edition, 2006. Addison Wesley Professional. ISBN 1-593-27065-8.
Microsoft Developer Network [online]. URL: (http://msdn.microsoft.com).
AntiGrain Geometry [online]. URL: (http://www.antigrain.com/).
Cairo Graphics [online]. URL: (http://cairographics.org/).