#mojeraycastingowezabawy #programowanie #programista15k #grafika3d #gamedev #raytracing #raycasting #retrogaming #kodowanie #jezykc #cpp

CZĘŚĆ 10.
Ostatnio pracowałem bardziej nad frameworkiem całości. Stworzyłem taki szkielet pod engine i gameplay i wszystkie biblioteki przepisałem stricto pod język C. Jak kiedyś wspomniałem, chcę zobaczyć jak coś takiego będzie chodzić na Amidze z RTG, mam tu na myśli głownie te nowe karty V1200 albo Warp1260. Więc uporządkowanie kodu pod C będzie pomocne, bo będę cross-compilować w gcc 6.2. ileś tam. I dlatego też zwracam dużą uwagę na optymalizację. W tym momencie jest tak, że wszystkie biblioteki tworzące engine są w C, edytor i apka testowa PC z nich współkorzystają. Win API i WinGDI służą tylko do utworzenia okienka i wywalania gotowego bufora który dostają już z endżina..

Natomiast poniżej, mały drobiazg, który dziś zauważyłem, a mianowicie jeśli intensywność policzony przed korekcją "fish eye" to otrzymujemy ładnie pojawiające się cieniowanie idące od środka a nie jednorodnie.. to pokazuje w załączniku.
ZawzietyRobaczek - #mojeraycastingowezabawy #programowanie #programista15k #grafika3d...
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#mojeraycastingowezabawy #programowanie #programista15k #grafika3d #gamedev #raytracing #raycasting #retrogaming

CZĘŚĆ 9.

Czołem, ostatnio pracowałem nad samym edytorem do Raycastera, taż żeby łatwiej zarządzać mapką, bo pojawiają się nowe elementy. Na razie dorzuciłem te elementy, które mam ogarnięte w samym silniku, czyli:
- pozycja i orientacja gracza
ZawzietyRobaczek - #mojeraycastingowezabawy #programowanie #programista15k #grafika3d...
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#mojeraycastingowezabawy #programowanie #programowanie15k #gamedev

CZĘŚĆ 8.

Próbuje zrobić edytorek do raycastera, w między czasie robiłęm pare testów i udało mise zrobić cienką ścianę, która nie musi zajmować całego kwadracika, ukośną ścianę i ścianą ala drzwi.. wiec pomyślałem, że dobrym krokiem bedzie treaz robienie edytorka z jakimis podstawowymi funkcjami, moj raycaster ma juz teraz znacznie wiecej mozliwosci niż wolf3d wiec i edytor musi troche inaczej działać,
(jak zwykle edytorek robiony w suchym winapi)
ZawzietyRobaczek - #mojeraycastingowezabawy #programowanie #programowanie15k #gamedev...

źródło: comment_1608629724N8IlufeTeTchJcq2Z2Vl2e.jpg

Pobierz
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#mojeraycastingowezabawy #programowanie #programista15k #gamedev #raytracing #raycasting
CZĘŚĆ 7.
Czołem, kolejna zabawa z raycasterem. Dorzuciłem "ruszanie głową" i wysokością gracza. Pierwszy będzie służył oczywiście do rozglądania się, a drugi można wykorzystać do skakania lub bujania góra/doł podczas chodzenia. W załączonym filmiku porównanie obu ruchów + oba ruchy połączone do uzyskania efektu jakby latania.

Niestety, optymalizacja z zeszłego wpisu, gdzie miałem pętlę równą tylko połowy wysokości ekranu za pomocą której mogłem rysować od razu sufit jak i podłogę, w tym wypadku odpada.. trzeba przejść przez cała wysokość, co oczywiście trochę wpłynie na wydajność. Na razie nie robię żadnych optymalizacji tylko dorzucam i testuje kluczowe elementy.

Całość
ZawzietyRobaczek - #mojeraycastingowezabawy #programowanie #programista15k #gamedev #...
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#mojeraycastingowezabawy #programowanie #programista15k #gamedev #raytracing #raycasting
CZĘŚĆ 6.
Czołem, kolejna zabawa z raycasterem. Nowy algorytm texturowania podłogi. Nieporównywalnie szybszy wiec wszystko działa jak przedtem. Tym razem renderujemy podłogą linia po linii. Oblicza się dwie skrajne wartości punktów przecięcia z podłogą i interpoluje. Żeby teksturować sufit nie trzeba nic nowego liczyć tylko korzysta się z tych samych obliczeń tylko pixele ustawia się na gorze zamiast na dole, co znaczeni przyśpiesza wszytko. Nie wiem tylko jeszcze czy to pozwoli mi na ruch głową góra dół, być może trzeba bedzie jednak robić sufit i podłoga na dwie procedury, ale to sie zobaczy potem muszę doczytać. Bo tez można na kilka sposobów "ruszać głową".

ps. jeszcze coś mi delikatnie pływają textury na podłodze, nie wiem czemu, czy to kwestia dokładności float/int, musze jeszcze raz sprawdzić i porównac z tym poprzednim algorytmem bo on byl dokladniejszy bo castował przez kazdy pixel.. musze tez nad cieniowaniem popracować, ale to potem, na razie sie skupiam na takich kluczowych elementach

ps.
ZawzietyRobaczek - #mojeraycastingowezabawy #programowanie #programista15k #gamedev #...
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#mojeraycastingowezabawy #programowanie #programista15k #gamedev #raytracing
Czołem, kolejna zabawa z raycasterem. Pracuje nad texturowaniem podłogi, niestety na razie straszcie zwolniło :-/
ale tu CIEKAWOSTKA, która mi się pojawiła sama (na zasadzie niby błędu).. Multiplikując podłogę intensywnością która obliczyłam z obległosci od ściany otrzymałem jakby... Raytracing podłogi xD coś jakby ściany się idealnie odbijały w podłodze, całkiem spoko efekt.

Troche mnie martwi to wolne teksturowanie podłogi, a właściwie nie tyle teksturowanie co obliczenia robiące raycasting przez pixele tworzące podłogę, właściwie to teraz zrobił się cześciowo raytracer, bo raytracer castuje przez kazdy pixel.. troche lipa, ale póki co kod nie jest zoptymalizowany to się potem zobaczy, cały myk przy raycasterze polega na tym ze sciany tworzymy przechodząc tylko po ilosći pixeli w poziomie..

Całość
ZawzietyRobaczek - #mojeraycastingowezabawy #programowanie #programista15k #gamedev #...
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@robcioo1994: po różnych źródłach, są różne podejścia do niektorych aspektów, np. algorytm szukania scian lub sposób texturowania podłogi, co wpływa na wydajnosć, mi zależy na jak najlepszej wydajnosci przy czym mam tu na mysli właśnie wydajniesze algorytmy + zoptymalizowany kod..
- Taki najcześciej cytowany jest ten 4 cześciowy materiał: https://lodev.org/cgtutor/
- Ten też dobry, ale troche inne podejscie chyba troche mniej wydajne: https://permadi.com/1996/05/ray-casting-tutorial-table-of-contents/
- inne rzeczy to np. szukałem wydajnego
  • Odpowiedz
#mojeraycastingowezabawy #programowanie #programista15k #gamedev Czołem, kolejna zabawa z raycasterem. Dorzuciłem sterowanie myszką i poprawiłem babole związane z texturowaniem.

Całość robię sobie w WinApi, używam tylko prostych funkcji rysowania do minimapki, a widok z FPS to juz tylko operacje na buforze RGB i wywalanie go na ekran.

W poprzednim filmiku korzystałem z integerów przy teksturowaniu w jednym miejscu glownie dla optymalizacji i przy testowej texturze
ZawzietyRobaczek - #mojeraycastingowezabawy #programowanie #programista15k #gamedev C...
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#mojeraycastingowezabawy #programowanie #programista15k #gamedev Czołem, bawię się ostatnio w Racycasting. Dziś dodałem textury, a następnie pomnozyłem wartość koloru przez obliczoną intenstywność (cieniowanie) co dało ładny efekt cieniowanych tekstur. Z racji tego że ta metoda generowania 3D to Raycasting, cały proces odbył się dość łatwo, zaledwie kilka prostych obliczeń. Widać jeszcze zniekształcenie kiedy podchodzę zbyt blisko ściany. Potem zrobię korektę.

Na razie wczeytana textura ma
ZawzietyRobaczek - #mojeraycastingowezabawy #programowanie #programista15k #gamedev C...
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#mojeraycastingowezabawy #programowanie #programowanie15k #gamedev #amiga Czołem, bawię się ostatnio w Racycasting, dziś zamieniełem metodę cieniowania z Depth Shading (czyli opartą tylko na odległości) na mixie tej techniki z techniką cieniowania zależną od kierunku w która zwrócona jest ściana.. póki co niewiele się dzieje, ale mam kilka ciekawych pomysłów które chciałem sprawdzić.. porównanie obu metod na poczatku filmiku

inna sprawa, okno po prawej
ZawzietyRobaczek - #mojeraycastingowezabawy #programowanie #programowanie15k #gamedev...
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach