The article presents various 8-bit floating-point data types (FP8) used in machine learning and their all possible values presented in form of 16x16 tables.
Date: 2024-09-24
Date: 2024-02-01
Article published on GPUOpen.com website.
Date: 2022-07-17
Talk at Vulkanised conference in Munich, Germany, as a representative of AMD, co-presented with Timur Kristóf and Friedrich Vock from Valve.
Date: 2022-02-07
An extensive investigation into how a simple "Hello world" program in Python gets compiled and executed, from Python interpreter, through the internals of Windows system, font rendering, down to Direct3D graphics API and the hardware of a graphics card.
An article written together with Mateusz Jurczyk and Gynvael Coldwind, originally published in Polish in issue 100 (1/2022) of the Programista magazine in February 2022. Also available in Polish version as PDF file or printed version you can order.
Date: 2022-10-11
Talk at Reboot Develop Blue Conference in Dubrovnik, Croatia, as a representative of AMD.
Date: 2022-09-29
Talk at Digital Dragons conference (online), as a representative of AMD.
Date: 2021-09-07
A guest article from my friend Łukasz Izdebski Ph.D.
Description of two techniques which can improve the outcome of cutout materials. by proper modification alpha (opaque) maps, in addition, using the proper filter on RGB channels, those steps will reduce the rendering issues.
Date: 2020-04-24
Date: 2019-07-26
My talk at Digital Dragons 2019 conference in Kraków, Poland.
Date: 2019-05-27
My talk at Digital Dragons 2018 conference in Kraków, Poland.
Date: 2018-05-22
[Polish] "Vulkan to jedno z API graficznych nowej generacji. Na tym wykładzie pokażę, jak ono wygląda, jakie ma zalety i wady, jakie narzędzia go wspierają oraz pomogę podjąć decyzję, czy nauka Vulkana jest dobrym wyborem dla Ciebie."
Prezentacja do wykładu przygotowanego na Koło Naukowe Twórców Gier "Polygon" na Politechnice Warszawskiej.
Date: 2019-11-27
Download:
Vulkan API_v2.0.pdf
Vulkan API_v2.0.pptx (view online)
Talk at Game Developers Conference 2018
Join this session to get an overview of the challenges that new explicit graphics APIs (Vulkan and Direct3D 12) create for game developers in terms of memory management. You will learn good practices and common patterns that you can apply in your code in order to use GPU memory efficiently, as well as more advanced tips and tricks related to the topic. You will also learn what libraries are available to help you with this task.
Date: 2018-03-19
Download:
gdc-2018-presentations
Advanced-Graphics-Techniques-Tutorial-New
Slides presented on Warsaw GameDev Meetup.
"Problem of implementing GUI (HUD) in games and applications. Possible solutions. Idea of immediate mode GUI. Introduction to Dear ImGui library. Demo of example application. It will be on intermediate level so participants should know some programming and basics of graphics."
Date: 2017-10-24
Download:
Immediate Mode GUI.pptx (view online)
Immediate Mode GUI.pdf
Unofficial manual for VK_KHR_dedicated_allocation - a Vulkan extension related to memory management.
Date: 2017-10-16
Blog post on GPUOpen.com explaining all types of objects that exist in Vulkan API and showing their relationships on a diagram.
Date: 2017-08-07
(Polish) Artykuł porusza temat pracy zdalnej - jej zalety i wady oraz opinię autora na temat tego typu pracy. Wymienia powszechnie panujące przekonania na temat pracy z domu i wskazuje, które z nich są prawdziwe, a które nie.
Date: 2017-05-01
(Polish) Niezależnie od używanego języka programowania, korzystając z liczb zmiennoprzecinkowych można natknąć się na wiele pułapek. Dlatego warto posiąść podstawową wiedzę związaną z tymi typami danych oraz trzymać się reguł, które pozwolą uniknąć niemiłych niespodzianek podczas programowania obliczeń.
Prezentacja pokazana podczas targów Kariera IT 24 września 2016 w Sopocie.
Date: 2016-09-24
Download:
Adam Sawicki - Pulapki liczb zmiennoprzecinkowych.pptx (view online)
Adam Sawicki - Pulapki liczb zmiennoprzecinkowych.pdf
(Polish) Artykuł opublikowany w magazynie Bajtek Czerwiec 2016 (135) Wydanie specjalne. Opisuje krótko historię kart graficznych (od pierwszych gier 3D, przez 3Dfx Voodoo i S3 ViRGE, karty NVIDIA i ATI/AMD, pojawienie się OpenGL i DirectX, do wynalezienia shaderów), pokazuje potok graficzny współczesnych GPU oraz wspomina o nowej generacji API graficznych (Direct3D 12 i Vulkan).
Osobom, które interesowały się programowanie grafiki, gier czy demosceną w czasach świetności Bajtka pozwoli uaktualnić swoją wiedzę na temat rozwoju tej dziedziny informatyki.
Date: 2016-06-03
(Polish) Prezentacja pokazana podczas targów Kariera IT 13 grudnia 2014 w Gdańsku.
Date: 2014-12-13
Download:
Adam Sawicki - Architektura gier video.pptx (view online)
Adam Sawicki - Architektura gier video.pdf
(Polish) Prezentacja pokazana podczas targów Kariera Programisty 14 grudnia 2013 w Gdańsku.
"Na podstawie swojego doświadczenia zawodowego autor opowie, jaki charakter ma praca programisty piszącego kod natywny w C/C++, w jakich zastosowaniach używa się takich języków oraz z jakimi problemami trzeba się tam zmierzyć. Postara się pokazać, że warto wybrać tę ścieżkę kariery oraz że nie jest ona taka trudna, jak mogłoby się wydawać."
Date: 2013-12-14
Download:
Adam Sawicki - Piszac kod natywny C++.pptx (view online)
Adam Sawicki - Piszac kod natywny C++.pdf
(Polish) Artykuł opublikowany na łamach magazynu "Programista". Wydanie 9/2013 (16)
W grach i niektórych innych programach zachodzi potrzeba mierzenia upływu czasu, a ten podlega ograniczeniom (np. zakresu, precyzji) zależnie od metody, jaką go mierzymy, i formatu, w jakim go zapisujemy. Dlatego ważne jest, by zdawać sobie sprawę z tych ograniczeń i odpowiednio do danego zastosowania wybrać funkcję odczytującą aktualny czas, typ zmiennej do jej przechowywania, jednostkę oraz punkt zerowy, a także w świadomy sposób posługiwać się nim, wykonując tylko operacje logicznie prawidłowe i nie powodujące zbyt dużej utraty precyzji.
(Polish) Artykuł opublikowany na łamach magazynu "Programista". Wydanie 7/2013 (14)
Język C++ nie posiada wprawdzie garbage collectora, który automatycznie zwalniałby pamięć, ale to nie znaczy, że nie dostarcza niczego, co mogłoby w zarządzaniu pamięcią pomóc. Nowy standard języka C++11 oferuje klasy inteligentnych wskaźników - unique_ptr i shared_ptr - których warto używać, aby uczynić programowanie bardziej wygodnym i bezpiecznym.
(Polish) Artykuł opublikowany na łamach magazynu "Programista". Wydanie 6/2013 (13)
Świat komputerów szybko się rozwija. Dziś korzystamy z Internetu na smartfonach i tabletach oraz przechowujemy nasze dane w chmurze, a producenci sprzętu i oprogramowania dbają, aby wszystko było dla nas proste i przyjemne. Kilkadziesiąt lat temu, kiedy pierwsze komputery trafiały pod strzechy, użytkowników witał wiersz poleceń konsoli, w magazynach komputerowych ukazywały się kursy programowania, a niektórzy nawet z lutownicą majsterkowali przy swoim sprzęcie. Właśnie w tamtych czasach narodziła się demoscena.
(Polish) Artykuł opublikowany na łamach magazynu "Programista". Wydanie 4/2013 (11)
Choć języki wysokiego poziomu - skryptowe, interpretowane czy wykonywane w wirtualnej maszynie - mają wiele zalet i są najlepszym wyborem w licznych zastosowaniach, to niekiedy potrzebujemy napisać kod jak najbardziej wydajny. Do tego nie wystarczy zastosować język natywny taki jak C++. Dopiero pewna dawka wiedzy i znajomość dobrych praktyk pozwoli wycisnąć ze sprzętu maksimum mocy obliczeniowej.
(Polish) Relacja ze Zjazdu Twórców Gier, który odbył się 27-28 października 2012 w Poznaniu.
Date: 2012-11-12
The article describes C++/CLI programming language. From it you can discover features and advantages of this language and learn its syntax. C++/CLI is an extension to C++ made by Microsoft and available in Visual Studio / Visual C++ IDE. At the same time it is one of the languages of .NET platform, next to C# or VB.NET. With it you can freely mix native and managed code, which gives extraordinary power in some applications.
Date: 2011-12-01
(Polish) Prezentacja do prelekcji wygłoszonej podczas VIII Ogólnopolskiej Konferencji Inżynierii Gier Komputerowych IGK'8-2011 w Siedlcach.
Autorzy: Adam Sawicki i Tomasz Dąbrowski.
Streszczenie referatu: Artykuł opisuje wady programowania obiektowego - zarówno od strony projektowej, jak i ze względu na wydajność kodu. Porusza problem opóźnienia w dostępie do pamięci RAM we współczesnych architekturach komputerowych. Przedstawia programowanie zorientowane na dane (ang. DOD - Data-Oriented Design) jako alternatywne podejście do projektowania i implementowania silnika gry kładące nacisk na optymalizację struktur danych pod kątem szybkości. Porusza także problem wydajności poszczególnych konstrukcji języka C++.
Date: 2011-03-26
Download:
IGK2011_Dabrowski_Sawicki_slides.pdf
"Pitfalls of Object-Oriented Programming" [Polish] Prezentacja do wykładu przygotowanego na Koło Naukowe Twórców Gier "Polygon" na Politechnice Warszawskiej, a w drugiej wersji wygłoszonego także na AGH w Krakowie.
Opracowana na podstawie tekstu "Fanatyzm obiektowy", przedstawia krytyczne podejście do projektowania i programowania obiektowego (m.in. pisania wrapperów na używane biblioteki, nadmiernej generalizacji, nadużywania dziedziczenia, enkapsulacji, wzorców projektowych) oraz jego negatywny wpływ na prostotę i czytelność kodu. Jako alternatywę prezentuje podejście DOD (Data-Oriented Design).
Date: 2011-03-30
Download:
Pulapki_programowania_obiektowego_v2.pdf
Pulapki_programowania_obiektowego_v2.pptx (view online)
"C++ in game programming" [Polish] Prezentacja do wykładu przygotowanego na Koło Naukowe Twórców Gier "Polygon" przy Politechnice Warszawskiej. Opisuje: dlaczego do programowania gier używa się właśnie języka C++, co stosować, a czego unikać, aby pisany kod był dobry i przede wszystkim wydajny w działaniu.
Date: 2010-10-30
Download:
C++ w programowaniu gier.pdf
C++ w programowaniu gier.pptx (view online)
My master thesis. It describes my graphics engine "The Final Quest". It includes literature overview, description of my engine architecture (layers, modules, classes and fields) and implementation details (rendering process organization, shader code explanation, skeletal animation computations, particle effects implementation, model file format and more).
Date: 2008-06-16
Download:
Adam Sawicki - Praca mgr.pdf
Pisanie wtyczki do Total Commandera do obsługi własnego formatu archiwum VFS.
Date: 2009-02-24
Artykuł jest bardzo długi i opisuje kilka zagadnień programistyczno-matematycznych dotyczących grafiki 3D: koncepcję kamery i jej implementację jako zestaw klas, rysowanie prostokątów zwróconych przodem do kamery (Billboard), w tym efektów cząsteczkowych, testowanie kolizji obiektów z polem widzenia kamery w celu nierysowania tego co niewidoczne (Frustum Culling) oraz testowanie kolizji promienia celem sprawdzania, który obiekt 3D gracz wskazał myszką (Picking). Dołączony kod zawiera spory kawałek mojej biblioteki matematycznej.
Date: 2008-06-05
Implementacja C++ klasy do własnego zarządzania pamięcią, która zarządza listą wolnych bloków i przydziela bloki duży szybciej, niż standardowy operator new
.
Date: 2008-05-28
Dla wszystkich zających C++, Direct3D i HLSL. Artykuł opisuje metodę na poradzenie sobie z kompilowaniem shaderów z różnymi kombinacjami ustawień za pomocą makr preprocesora.
Date: 2008-05-22
(Polish) Artykuł wprowadza do tematu używania Unicode w programach pisanych w C++ dla systemu Windows, z użyciem środowiska Visual C++. Stanowi zwięzły przegląd funkcji i innych elementów, których należy używać, żeby program działał z Unicode. Od czytelnika wymaga jedynie znajomości podstaw programowania w języku C++.
Date: 2008-05-21
Dla tych którzy już znają wektory i macierze, artykuł wprowadza kwaterniony jako sposób reprezentowania obrotów i orientacji.
Date: 2008-05-20
Opis darmowej biblioteki FastDelegate dostarczającej wskaźników na metody dla C++.
Date: 2008-05-19
Wyniki eksperymentu mierzącego czas wczytywania tekstur w Direct3D 9 dla różnych formatów plików graficznych i różnych ustawień.
Date: 2008-02-03
Prezentacja do wykładu na temat Direct3D 9. Przegląd biblioteki od inicjalizacji, poprzez renderowanie trójkątów, bufory wierzchołków i indeksów, teksturowanie, oświetlenie aż do shaderów. Ma 96 slajdów.
Date: 2008-02-28
Download:
Direct3D9_Wyklad.pdf
Direct3D9_Wyklad.ppt (view online)
Direct3D9_Wyklad.pptx (view online)
Prezentacja do wykładu na temat J2ME, czyli programowania w języku Java midletów na komórki. Omawia bardziej lub mniej dokładnie wszystkie moduły wchodzące w skład standardu MIDP 2.0. Ma 98 slajdów.
Date: 2007-12-30
Download:
J2ME-Wyklad.pdf
J2ME-Wyklad.odp
IV Ogólnopolska Konferencja Inżynierii Gier Komputerowych - relacja z tego ważnego dla mnie wydarzenia, które odbyło się w dniach 23-25 marca 2007 w Akademii Podlaskiej w Siedlcach.
Date: 2007-03-28
Przystępny i praktyczny opis, jak użyć mechanizmu Precompiled Headers w Visual C++, żeby wielokrotnie przyspieszyć kompilację swoich programów.
Date: 2007-05-25
Cykl artykułów obejmujący kurs programowania w Direct3D z użyciem C++, powoli i od podstaw. Uczy jak napisać szkielet aplikacji DirectX itd. Nastawiony jest na programowanie gier 2D. Ukazał się na łamach magazynu WARP.
Implementacja konsoli z użyciem mechanizmu systemowego Windows działającej w sposób asynchroniczny.
Date: 2006-08-08
Artykuł przedstawia badanie zachowania się w praktyce różnych metod rzutowania wartości między różnymi prostymi typami danych w języku C++.
Date: 2006-06-17
Kurs obsługi biblioteki FMOD do implementacji dźwięku i muzyki (także 3D) w grach komputerowych.
Artykuł ukazał się na łamach magazynu elektronicznego WARP w numerze WARP 2.0 Digital 10 (09/2006). Od drugiej połowy grudnia 2006 numer ten jest dostępny za darmo do pobrania. Jak pobrać? 1. Wejść na stronę WARP. 2. Dział Download. 3. Kliknąć na obrazek pod "Magazyn WARP 2.0 Digital (format PDF)". 4. Pobrać numer "WARP 2.0 Digital nr 10 (wrzesień 2006)". 5. Znaleźć mój artykuł w spisie treści.
Date: 2006-06-04
Artykuł prezentuje algorytm, który przeszukując katalogi dysku twardego użytkownika pozwala odnaleźć potrzebny plik w czasie wielokrotnie krótszym, niż podczas tradycyjnego, rekurencyjnego przeszukiwania dysków dzięki zastosowaniu prostej heurystyki i wiedzy o konkretnym problemie.
Date: 2007-02-28
Artykuł opisuje podstawowe struktury danych (jak wektor, lista, drzewo i inne) oraz operacje na plikach i tworzenie własnych formatów plików.
Date: 2004-05-14
Artykuł obejmuje zagadnienia związane z podstawami informatyki. Opisuje sposób, w jaki komputer reprezentuje informacje na najniższym poziomie - za pomocą pojedynczych zer i jedynek. Dostępny jest w wersji HTML, PDF i DOC. Licencja: GNU FDL.
Date: 2004-01-03