UWAGA
Aktualnie nie ma planu wydania wersji polskiej kursu.
Możesz jednak kupić kurs w wersji angielskiej w nieco niższej cenie, widniejącej na tej stronie.
Jeśli w grę wchodzi tylko język polski to dostępne są jeszcze moje kursy wydane przez Helion/Videopoint, które zawierają około 50% materiałów z tego kursu.
Zasubskrybuj się, a otrzymasz informację, gdy cały kurs będzie gotowy:
(wiedz proszę, że po zasubskrybowaniu będziesz także otrzymywać mój edukacyjny newsletter)

Matematyka dla programistów gier/3D
Naucz się kompleksowo praktycznej matematyki stosowanej w programowaniu gier 3D, z prawie 100 krótkich i łatwych do zrozumienia przykładów stworzonych w Unity 3D, by pomóc sobie w znalezieniu lepiej płatnej i bardziej satysfakcjonującej pracy
Witam Cię na stronie kursu „Matematyka dla programistów gier/3D”. Jest to ponad 30-godzinny kurs wideo wraz ze wsparciem, który wyczerpująco omawia wszystkie fundamentalne, a także niektóre zaawansowane, tematy matematyczne z jakimi musi być zaznajomiony każdy programista gier wideo oraz wszelkiego rodzaju symulacji i aplikacji 3D. Wszystkim poruszanym tematom towarzyszą kompaktowe przykłady praktyczne. To naprawdę jest ultymatywny kurs o tej tematyce obejmujący (w szerokim zakresie) nie tylko oczywiste tematy jak wektory, macierze czy kwaterniony, ale także pochodne oraz całki, a wszystko to przedstawione w praktyce!
Kurs podzielony jest na trzy części:
- Geometria analityczna (rozdziały 1-4), dostępna bezpłatnie
- Algebra liniowa (rozdziały 5-7)
- Analiza matematyczna (rozdziały 8-9)
Jeśli masz dodatkowe pytania wejdź na mój serwer Discord
https://discord.gg/U4fWWQyQRv.
Możesz też napisać do mnie mail’a na wojtsterna(at)gmail(dot)com.
Co to za kurs i dla kogo jest przeznaczony?

Czy któryś z poniższych podpunktów opisuje Twoje odczucia?
- Chcesz solidnie nauczyć się matematyki 3D zaczynając od podstaw (jak trygonometria i wektory), a na bardziej zaawansowanych tematach skończywszy (pochodne/całki)?
- Masz już jakieś pojęcie o matematyce 3D, stosujesz ją na co dzień w programowaniu, ale mimo to nie do końca wszystko łączy Ci się w całość i czujesz/wiesz, że masz pewne braki?
- Nie wiesz, która książka (a wybór jest szeroki) do matematyki 3D będzie dla Ciebie odpowiednia do nauki? Do tego większość z nich liczy po kilkaset stron.
- Zależy Ci na zrozumieniu teorii i wzorów, ale jednocześnie chcesz widzieć że ta teoria ma faktyczne, praktyczne zastosowanie w programowaniu gier/3D?
- Irytuje Cię, gdy w różnych źródłach na temat matematyki 3D autorzy bardzo szczegółowo wyjaśniają czym są wektory, by już chwilę później przytłoczyć Cię równaniami z pochodnymi cząstkowymi albo całkami, bez uprzedniego ich omówienia?
- Wektory, kąty Euler’a, macierze, kwaterniony, pochodne, całki… Dlaczego, i czy w ogóle, to wszystko jest potrzebne przy programowaniu gier/3D?
Kurs „Matematyka dla programistów gier/3D” to efekt mojej wielomiesięcznej pracy nad kursem wideo, który z jednej strony ma być bardzo praktyczny, a z drugiej strony wyjaśnia na ile to potrzebne teoretyczne tło omawianych tematów, w tym od czasu do czasu zagłębiając się nieco w wyprowadzenia pewnych istotnych dla programistów gier/3D wzorów matematycznych.
Z jednej strony mamy na rynku dostępnych sporo bardzo solidnych i nierzadko opasłych książek o matematyce 3D dla programistów (wymagających sporo czasu na ich przerobienie), choć zawierających niewiele praktycznych przykładów – czytanie suchych wzorów bez obserwowania ich w działaniu może bardzo utrudniać ich zrozumienie. Z drugiej strony mamy mnóstwo darmowych matematycznych bibliotek programistycznych służących rozwiązywaniu konkretnych problemów programistycznych, ale których wewnętrzne działanie może być dla nas „czarną magią”. Ten kurs stoi pośrodku – uczymy się tyle teorii ile potrzeba do zrozumienia danego tematu, a jednocześnie uczymy się tej teorii na konkretnych przykładowych programach.
Co ciekawe, w wielu źródłach jak wspomniane opasłe książki, bardzo skrupulatnie wyjaśnianie są tematy jak wektory czy macierze (w ogólności algebra liniowa), natomiast z niewiadomych przyczyn źródła te zakładają, że z pochodnymi i całkami (w ogólności analiza matematyczna) czytelnik jest za pan brat. Jest to co najmniej dziwne podejście – jeśli komuś trzeba tłumaczyć wektory, to z całą pewnością osoba ta nie zna jeszcze pochodnych. Dla odmiany w tym kursie pochodnym i całkom, w ujęciu praktycznym, poświęcone są dwa duże osobne rozdziały. Rozdział o pochodnych, ze względu na ogromnie szerokie zastosowania, jest największym w całym kursie.
Programy przykładowe są napisane w języku C# na silniku Unity 3D, ze względu na jego powszechność i łatwość użycia. Dodatkowo, użycie Unity 3D zwalnia nas z konieczności pisania kodu, który nie jest istotny z punktu widzenia omawianych tematów. Np. nie musimy pisać kodu rysującego obiekty 3D w niskopoziomowym API graficznym jak DirectX tylko korzystamy z gotowej i podstawowej funkcjonalności Unity. Dzięki temu wszystkie programy demonstracyjne są zwięzłe i skupiają się na matematycznych aspektach omawianych problemów. Oznacza to także, że mimo iż programy demonstracyjne są napisane w C# / Unity, ich przeniesienie do innych języków i silników nie będzie stanowić większego problemu.
Kurs przeznaczony jest dla wszystkich programistów już zajmujących się, bądź chcących zajmować się programowaniem gier wideo oraz aplikacji/symulacji 3D. Kurs zakłada, że masz już przynajmniej podstawowe pojęcie o matematyce 3D wyniesione ze szkoły średniej, i że pojęcia takie jak układ współrzędnych 2D/3D czy równanie kwadratowe nie są Ci obce. Zakładam także, że masz już przynajmniej podstawowe obycie z jakimkolwiek silnikiem gier jak Unity 3D. Gorąco zachęcam Cię, abyś przed ewentualnym kupnem kursu sprawdził/a treści bezpłatne, aby upewnić się, że nie masz istotnych braków oraz że tempo i w ogóle forma kursu są dla Ciebie odpowiednie.
Na kursie skorzystają przede wszystkim następujace grupy osób:
- Programiści oraz techniczni graficy na poziomie juniora oraz studenci, którzy mają podstawowe pojęcie o programowaniu gier/3D, a którzy chcieliby nabyć solidne kompetencje matematyczne w praktycznym kontekście. Jeśli jeszcze nie pracujesz w branży gier a bardzo tego chcesz, to wiedza z tego kursu z pewnością ułatwi Ci zdobycie pierwszej pracy.
- Programiści oraz techniczni graficy na poziomie średniozaawansowanym/specjaliści/mid’zi, którzy są zaznajomieni z przynajmniej częścią tematów poruszanych w kursie, ale chcieliby dowiedzieć się więcej i/lub uporządkować posiadaną wiedzę.
Starsi programiści oraz techniczni graficy z pewnością z kursu wyciągną najmniej (co oczywiste), jednak mimo to zalecam im dokładne zaznajomienie się ze treścią kursu. Jest wielce prawdopodobne, że znajdą tam interesujące dla siebie tematy. Zawsze możesz kupić kurs i jeśli nie spełni on Twoich oczekiwań (bo np. nie znalazłeś/aś w nim nic nowego) skorzystać z gwarancji satysfakcji.
Kto jest autorem?

W całości autorem tego kursu jestem ja – Wojtek Sterna. Właśnie jesteś na mojej domowej stronie internetowej :).
Od ponad 10 lat profesjonalnie zajmuję się programowaniem silników gier oraz grafiki 3D. Pracowałem dla takich firm jak: NVIDIA, id Software, CD PROJEKT RED czy Flying Wild Hog – sprawdź mój profil MobyGames, aby dowiedzieć się przy jakich produkcjach pracowałem. Pisałem kod w C/C++, C# oraz shader’y zarówno w autorskich silnikach gier, jak i w tych najbardziej popularnych – Unreal Engine oraz Unity 3D.
Aby móc skutecznie i z satysfakcją wykonywać swoją pracę, a także w ogóle dostać się do wyżej wymienionych firm konieczna była solidna znajomość matematyki 3D. Tę zdobywałem głównie studiując opasłe książki o matematyce 3D, a następnie implementowałem zawarte w nich treści we własnych silnikach 3D i grach wideo. Ten kurs jest w pewnym sensie „streszczeniem” tej wiedzy w taki sposób, aby przedstawić możliwie najwięcej praktyki, zachowując jednak przy tym objaśnienia najważniejszych części teoretycznych.
Dlaczego zdecydowałem się stworzyć ten kurs? Powody są przynajmniej dwa. Pierwszy jest taki, że odniosłem wrażenie, że niewiele jest materiałów o ogólnej matematyce 3D, które byłyby bardzo wyczerpujące, ale jednocześnie osadzone w praktycznym kontekście – stąd moja chęć wypełnienia tej luki. Drugi powód jest nieco bardziej osobisty – zawsze lubiłem dzielić się wiedzą i udostępniając ten kurs mam do tego okazję. Wcześniej napisałem kilka książek i artykułów o programowaniu. To jest mój pierwszy kurs wideo.
Co dokładnie zawiera kurs?

Gdy kupisz kurs otrzymasz:
- Dostęp do nagrań wideo (ponad 30 godzin).
- Dostęp do plików PDF z prezentacjami. Na końcu każdego rozdziału jest lista zadań do samodzielnego wykonania.
- Dostęp do wszystkich programów omówionych w kursie.
- Dostęp do prywatnych pokoi na Discord, gdzie uzyskasz ode mnie bezpośrednią pomoc.
Praca z kursem przebiega następująco. Oglądasz nagrania, z których uczysz się przedstawianych koncepcji. Masz dostęp do omawianych programów, dzięki czemu możesz testować i eksperymentować. Rozwiązujesz zadania na końcu każdego rozdziału. Jeśli masz z czymś problem, coś jest niejasne – pytasz na Discord.
Spis treści (w rozwinięciach znajdują się opisy rozdziałów oraz nazwy wszystkich programów):
1. Trygonometria
1h 46min, 31 slajdów
Trygonometria to dział matematyki, którego przedmiotem są funkcje trygonometryczne, w szczególności: sinus, cosinus oraz tangens. Jest to temat na tyle ważny, że będzie nam towarzyszyć przez cały kurs. Najprawdopodobniej masz już wiedzę w tym temacie, jednak jeśli nie, to z tym rozdziałem możesz nadrobić trochę zaległości lub po prostu przypomnieć sobie kilka rzeczy.
Nawet jeśli temat funkcji trygonometrycznych jest Ci dobrze znany nie opuszczaj tego rozdziału! Znajdziesz w nim bowiem także omówienie kilku ciekawych tematów i problemów, z którymi już niekoniecznie miałeś/aś styczność, jak np. współrzędne biegunowe i sferyczne, a także algorytmy generowania punktów na okręgu i kole.
Zawartość rozdziału:
- Funkcje trygonometryczne
– (UnityProgram) Functions - Ogólna funkcja sinusoidalna
– (UnityProgram) SineWave - Współrzędne biegunowe
– (UnityProgram) PolarCoords
– (UnityProgram) PolarCoordsMovement - Generowanie punktów na okręgu
– (UnityProgram) CirclePointsGeneration - Współrzędne sferyczne
– (UnityProgram) SphericalCoords - Generowanie punktów na sferze
– (UnityProgram) SpherePointsGeneration
2. Liczby zespolone
38min, 17 slajdów
Liczby zespolone nie są same w sobie szczególnie użyteczne w programowaniu gier/3D. Są one natomiast fundamentem dla przynajmniej jednego tematu, który już użyteczny jest bardzo – dla kwaternionów (rozdział 7). Ponadto, liczby zespolone pojawiają się okazjonalnie przy rozwiązywaniu pewnych równań (rozdział 5).
Niniejszy rozdział omawia jedynie najbardziej podstawowe właściwości liczb zespolonych, a także omawia ich różne reprezentacje. Przedstawione jest minimum informacji potrzebnych nam później przy rozdziałach 7 i 8.
Zawartość rozdziału:
- Definicja
- Działania
– (UnityProgram) ComplexNumbers - Postać trygonometryczna
- Postać wykładnicza
3. Wektory
2h 14min, 44 slajdy
Zapewne wiesz czym są wektory i masz z nimi styczność na co dzień. Cel tego rozdziału jest podobny jak rozdziału 1 o trygonometrii – przypomnienie i powtórka tematu, a także przedstawienie kilku istotnych zagadnień i algorytmów, które mogą być dla Ciebie nowością. Przykładowo sprawdzanie, czy punkt znajduje się w trójkącie (w 2D) lub efektywna kompresja wektorów normalnych.
Zawartość rozdziału:
- Czym jest wektor
- Tworzenie wektora z dwóch punktów
– (UnityProgram) VectorCreation - Wektor jako punkt
- Dodawanie
– (UnityProgram) VectorsAdd - Odejmowanie
- Interpolacja liniowa
– (UnityProgram) VectorsLerp - Długość wektora
- Normalizacja
– (UnityProgram) VectorNormalize - Wektor normalny
- Wektory prostopadłe w 2D
– (UnityProgram) VectorsPerpendicular2D - Iloczyn skalarny
– (UnityProgram) VectorsDot - Rzutowanie wektora
– (UnityProgram) VectorProjection - Iloczyn wektorowy (wektor prostopadły w 3D)
– (UnityProgram) VectorsCross - Punkt w trójkącie (w 2D)
– (UnityProgram) PointInTriangle2D - Kompresja wektora znormalizowanego
– (UnityProgram) NormalizedVectorCompression
4. Równania obiektów geometrycznych
5h 4min, 87 slajdów
Obiekty w wirtualnych światach zazwyczaj zbudowane są z trójkątów. Często potrzebujemy także mieć możliwość opisania obiektu, albo jego części, przy użyciu bardziej ogólnych figur jak okrąg, sfera czy płaszczyzna. Każdy z takich obiektów możemy opisać matematycznie przy użyciu wzorów.
W tym rozdziale poznamy matematyczne opisy (wzory) wspomnianych przed chwilą figur a także, przede wszystkim, prostej i promienia – jednym z głównych tematów jaki jest poruszany jest szukanie punktów przecięcia promienia z różnymi obiektami. Ponadto, zazwyczaj poznamy przynajmniej dwie różne reprezentacje każdego z obiektów matematycznych – parametryczną oraz uwikłaną – gdzie każda ma swoje istotne zalety oraz wady.
Rozdział ten w dużej części bazuje na wektorach oraz trygonometrii.
Zawartość rozdziału:
- Prosta
- Równanie liniowe
– (UnityProgram) LineLinear
– (UnityProgram) LinearMapping - Równanie uwikłane
– (UnityProgram) LineImplicit - Równanie parametryczne
– (UnityProgram) LineParametric
– (UnityProgram) LineParametricDistanceToPoint
- Równanie liniowe
- Okrąg
- Równanie uwikłane
– (UnityProgram) CircleImplicit - Równanie parametryczne
– (UnityProgram) CircleParametric
- Równanie uwikłane
- Sfera
- Płaszczyzna
- Równanie uwikłane
– (UnityProgram) PlaneImplicit
– (UnityProgram) PlaneMovement - Równanie parametryczne
– (UnityProgram) PlaneParametric
- Równanie uwikłane
- Trójkąt
– (UnityProgram) PointInTriangle3D- Współrzędne barycentryczne
– (UnityProgram) TriangleAndBarycentrics
- Współrzędne barycentryczne
- Optymalizacja równań
– (UnityProgram) CircleImplicitOptimized
5. Macierze i transformacje I
Macierze wraz z wektorami stanowią fundamenty dziedziny matematyki, którą czasem określa się „algebrą liniową z geometrią analityczną”. Macierze umożliwiają wygodne reprezentowanie i łączenie transformacji. W tym rozdziale poznamy ich podstawowe właściwości oraz operacje, jakie możemy na nich wykonywać, w szczególności mnożenie oraz obliczanie odwrotności.
Transformacje to przekształcenia jakimi podlegają obiekty 2D/3D, gdy chcemy je przesunąć, obrócić czy zrzutować ze świata 3D na płaszczyznę ekranu. W tym rozdziale omawiamy podstawowe przekształcenia, zarówno z użyciem macierzy jak i bez, dzięki czemu lepiej zrozumiemy znaczenie macierzy.
Zawartość rozdziału:
- Macierze
- Transformacje
– (UnityProgram) Transforms - Transformacje i macierze
– (UnityProgram) MatrixTransforms - Obrót obrazka na GPU
– (UnityProgram) MatrixFigureRotation
– (UnityProgram) MatrixImageTransform - Rzutowanie punktu na płaszczyznę
– (UnityProgram) ProjectionDirectional
– (UnityProgram) ProjectionPoint
6. Macierze i transformacje II
Rozdział ten jest rozszerzeniem rodziału 5. Wchodzimy tutaj głębiej w tematykę macierzy oraz transformacji. Będziemy mówić m.in. o systemie skala-rotacja-translacja (SRT) i hierarchiach, macierzach kamery i projekcji, a także o bazach i przejściach z jednej bazy do drugiej. Wszystkie te zagadnienia pozwolą nam wejść „poziom wyżej” w zrozumieniu jak działają macierze oraz transformacje 3D.
Zawartość rozdziału:
- Macierz obrotu wokół dowolnej osi
– (UnityProgram) RotateAxisAngle
– (UnityProgram) RotationGizmoEmulator - Porządki kolumnowy i wierszowy
– (UnityProgram) ColumnAndRowOrder - Skala-rotacja-translacja (SRT) oraz hierarchia
– (UnityProgram) EulerAnglesEmulator
– (UnityProgram) SRT
– (UnityProgram) SRT2
– (UnityProgram) SRT3
– (UnityProgram) MatrixToTransform
– (UnityProgram) Hierarchy - Macierze kamery oraz projekcji
– (UnityProgram) CameraSpace
– (UnityProgram) WorldToScreen
– (UnityProgram) ScreenToWorld
– (UnityProgram) TextureProjection - Bazy i zmiana bazy
– (UnityProgram) EulerAnglesBasis
– (UnityProgram) PositionAndOrientation
– (UnityProgram) PositionAndOrientation2
– (UnityProgram) PositionAndOrientation3
– (UnityProgram) BasisHandedness
– (UnityProgram) BasisChange
– (UnityProgram) BasisChange2
– (UnityProgram) BasisChange3
– (UnityProgram) BasisDeflection - Transformacja wektora normalnego
– (UnityProgram) NormalVectorTransformation - Transformacja płaszczyzny
– (UnityProgram) PlaneTransformation
7. Kwaterniony
Do tej pory obroty w 3D były omawiane – w dwóch poprzednich rozdziałach – wyłącznie w kontekście macierzy. Jednak macierz to nie jedyny obiekt matematyczny, która pozwala reprezentować obrót w 3D. Drugim bardzo popularnym takim obiektem jest kwaternion.
Kwaternion jest rozszerzoną wersją liczby zespolonej. Umożliwia on reprezentowanie obrotów w 3D tak samo jak macierze obrotu. Kwaterniony mają kilka istotnych zalet w stosunku do macierzy, dlatego są bardzo powszechnie wykorzystywane w praktycznie każdym znaczącym silniku 3D. W tym rozdziale omówimy te zalety, ale również niedogodności wynikające ze stosowania kwaternionów.
Zawartość rozdziału:
- Czym jest kwaternion
- Obrót wokół dowolnej osi
– (UnityProgram) QuaternionRotateAxisAngle
– (UnityProgram) QuaternionRotateAxisAngle2
– (UnityProgram) QuaternionRotationGizmoEmulator - Kwaternion, macierz i kąty Euler’a
– (UnityProgram) QuaternionEulerAnglesEmulator
– (UnityProgram) QuaternionConversions
– (UnityProgram) DeltaTransform - Slerp – sferyczna interpolacja liniowa
– (UnityProgram) VectorsSlerp
– (UnityProgram) QuaternionsSlerp
– (UnityProgram) QuaternionsSlerp2 - Gimbal lock
– (UnityProgram) GimbalLock
– (UnityProgram) EulerAnglesXY
8. Pochodne
Tematy zaprezentowane w rozdziałach 1-7 zbiorczo są częścią dziedziny „algebra liniowa z geometrią analityczną”. Z kolei rozdziały 8 i 9 stanowią fundamenty „analizy matematycznej”.
Z jakiegoś dziwnego powodu w wielu podręcznikach o matematyce w programowaniu gier/3D autorzy skrupulatnie wyjaśniają terminy takie jak wektor czy macierz, a jednocześnie od czasu do czasu rzucają pojęciami z dziedziny pochodnych, jak gdyby były one całkowicie podstawowe i oczywiste. Uważam przeciwnie – że pochodne to temat trudniejszy od wektorów i wymaga osobnego, stosunkowo obszernego omówienia.
Pochodna to narzędzie matematyczne, które umożliwia nam wydobycie wielu istotnych informacji na temat danej funkcji. W szczególności dzięki pochodnej możemy dowiedzieć się dla jakich argumentów funkcja osiąga wartości największe/najmniejsze, jak zmieniają się wartości funkcji w zależności od zmiany argumentów czy w jakim kierunku rosną/maleją wartości funkcji.
Odpowiedzi na te pytania pozwalają rozwiązać cały szereg problemów, jak np. problem kinematyki odwrotnej, a także leżą one u podstaw sieci neuronowych i deep learning’u. Pochodne umożliwiają nam także wygenerowanie wektorów stycznych w punkcie, dzięki czemu możemy wygenerować wektor normalny do dowolnej powierzchni – jako przykład w tym rozdziale zobaczymy jak wygenerować wektory normalne do powierzchni wody, generowanej proceduralnie przy użyciu funkcji sinus.
Zawartość rozdziału:
- Czym jest pochodna
– (UnityProgram) TangentLine - Obliczanie numeryczne
– (UnityProgram) DerivativeNumerical - Obliczanie analityczne
– (UnityProgram) DerivativeAnalytical - Ekstrema funkcji
– (UnityProgram) Extrema
– (UnityProgram) ExtremaLinePointDistance
– (UnityProgram) ExtremaParabolaPointDistance
– (OctaveProgram) ExtremaParabolaPointDistance - Pochodna funkcji parametrycznej
– (UnityProgram) DerivativeParametric - Pochodne cząstkowe i gradient
– (UnityProgram) PartialDerivatives
– (UnityProgram) Gradient - Pochodna funkcji uwikłanej
– (UnityProgram) DerivativeImplicit - Metoda najmniejszych kwadratów
– (UnityProgram) LeastSquares - Algorytm Gradient Descent
– (UnityProgram) GradientDescentLine
– (UnityProgram) GradientDescentCircle
– (UnityProgram) GradientDescentParabolaPointDistance
– (UnityProgram) GradientDescentIK - Przestrzeń styczna (tangent space)
– (UnityProgram) TangentSpace
– (UnityProgram) TangentSpaceWaterSurface
9. Całki
Całki są odwrotnością pochodnych. Co ciekawe, o ile całki niemal zawsze omawiane są po pochodnych i ich obliczanie (analityczne) jest wyraźnie trudniejsze, o tyle koncepcyjnie całka jest bardzo prostym narzędziem. Całki umożliwiają nam bowiem sumowanie wartości z danej funkcji na wybranym obszarze.
Wspomniane „sumowanie wartości” może polegać np. na obliczaniu drogi jaką pokonuje fizyczny obiekt, gdzie sumowanymi wartościami są wektory prędkości obiektu w pojedynczych punktach czasu. Podobnie sumowanymi wartościami może być ilość światła padająca na daną powierzchnię z wielu różnych kierunków, co umożliwia nam obliczenia całkowitej ilości światła jaka pada na tę powierzchnię. Właśnie na takich przykładach poznamy całkowanie od strony praktycznej.
Zawartość rozdziału:
- Czym jest całka
- Całkowanie numeryczne
– (UnityProgram) IntegralNumerical - Całkowanie analityczne
– (UnityProgram) IntegralAnalytical - Całkowanie równania ruchu
– (UnityProgram) PointMassMotion - Całka podwójna
– (UnityProgram) DoubleIntegralNumerical - Przykład całkowania analitycznego
– (UnityProgram) CameraVelocityIntegration - Przykład całkowania numerycznego
– (UnityProgram) AmbientOcclusion
Ile kosztuje kurs?

Cena kursu wynosi 615 zł brutto (500 zł netto + 23% VAT).
Zapytaj w firmie w której pracujesz (np. dział HR), czy sfinansują lub dofinansują Ci kurs. Firma ma możliwość wliczyć taki kurs w koszty przez co jego faktyczna cena stanie się niższa. Wiele firm oferuje dzisiaj swoim pracownikom fundusze na rozwój i bardzo możliwe, że ten kurs będzie się kwalifikował.
Uboższa w treści (o ok. 50%) wersja tego kursu, w języku polskim, została wydana przez Helion/Videopoint. Jeśli kupisz któryś/eś z tych kursów za kwotę X zł, a następnie przedstawisz mi dowód zakupu, to możesz wówczas kupić ten kurs za kwotę 615 zł pomniejszoną o X.
Czy warto?

Ten kurs jest kursem wideo z prezentacjami (zawierającymi m.in. istotne wzory matematyczne z objaśnieniami), interaktywnymi programami demonstracyjnymi, a dodatkowo daje Ci bezpośredni kontakt z autorem. Dzięki takiej formule z pewnością dużo szybciej przerobisz ten kurs niż np. 600-stronicową książkę omawiającą podobne tematy.
Jeśli jesteś juniorem zdobycie wiedzy z tego kursu bardzo pomoże Ci w awansie na specjalistę. Różnica w zarobkach między juniorem a specjalistą/mid’em sięga nawet do kilku tys. zł miesięcznie. Nawet jeśli całość kursu opłacasz samodzielnie, to jego cena będzie równa jedynie części kwoty o jaką wzrośnie Twoje miesięczne wynagrodzenie, gdy zostaniesz zatrudniony/a jako specjalista.

Lepsze finanse na jakie możesz liczyć to tylko jedna, bardzo wymierna korzyść płynąca z sumiennego przerobienia treści tego kursu. Z solidnym zrozumieniem matematyki programowanie gier/3D staje się zwyczajnie dużo bardziej przyjemne i satysfakcjonujące.
Treści bezpłatne

Rozdziały 1, 2, 3 oraz 4 możesz uzyskać bezpłatnie (aktualnie jedynie w wersji angielskiej). Wystarczy, że zasubskrybujesz się do tej strony, dzięki czemu w e-mail’u powitalnym otrzymasz link do tych treści (pamiętaj, aby sprawdzić foldery spam/oferty jeśli nie widzisz mail’a powitalnego!):
(wiedz proszę, że po zasubskrybowaniu będziesz także otrzymywać mój edukacyjny newsletter)
Tutaj możesz pobrać programy demonstracyjne omawiane w bezpłatnych rozdziałach:
https://github.com/maxest/MathFor3DGamesProgrammersFREE
Obejrzenie treści bezpłatnych da Ci lepszy pogląd na to jak zorganizowany jest cały kurs oraz pomoże podjąć właściwą decyzję, czy warto kupić jego pełną wersję.
Chcę kupić cały kurs

Tak? Świetnie! Jeśli chcesz uzyskać dostęp do całości kursu…
Napisz do mnie mail’a na wojtsterna (at) gmail (dot) com
Wystawię Ci fakturę po opłaceniu której otrzymasz pełen dostęp do kursu. Kurs zawiera: nagrania wideo, prezentacje, przykładowe programy oraz link do prywatnego serwera Discord ze wsparciem.

30-dniowa gwarancja satysfakcji. Jeśli kupiłeś/aś kurs i szczerze uważasz, że nie spełnił on Twoich oczekiwań, napisz do mnie wiadomość na mail’a lub na Discord. Opisz krótko co Ci się nie podobało (może będę w stanie uwzględnić Twoje uwagi przy kolejnej edycji kursu), a ja zwrócę Ci pieniądze (tylko napisz proszę w ciągu 30 dni od daty zakupu).
Kontakt

Masz jakieś wątpliwości? Pytania?
Odwiedź mój prywatny serwer Discord
https://discord.gg/U4fWWQyQRv
lub
napisz do mnie mail’a na wojtsterna(at)gmail(dot)com.