This shows you the differences between two versions of the page.
|
ipg:tema:2025 [2025/12/08 13:33] andrei.lambru |
ipg:tema:2025 [2025/12/08 20:44] (current) andrei.lambru |
||
|---|---|---|---|
| Line 6: | Line 6: | ||
| * **Notă: Orice informație ce nu a fost acoperită în acest document este la latitudinea voastră!** | * **Notă: Orice informație ce nu a fost acoperită în acest document este la latitudinea voastră!** | ||
| - | In cadrul acestei teme veti avea de **implementat un joc aproape in totalitate la alegere** :) , dar care trebuie sa contina un set de elemente vizuale obligatorii. Mai jos, aveti descrierea acestor elemente vizuale, impreuna cu cateva indicatii de implementare. Mult succes :) ! | + | În cadrul acestei teme, **veți avea de implementat un joc în care aveți libertate totală în concepția și alegerea tematicii lui vizuale** :) . Jocul realizat de voi trebuie să conțină un set de elemente vizuale obligatorii, dar pe care puteți să le adaptați la tematica aleasă de voi. Mai jos, aveți descrierea acestor elemente vizuale, împreună cu câteva indicații de implementare. Mult succes :) ! |
| - | + | ||
| - | <hidden> | + | |
| - | Elementele vizuale obligatorii sunt: | + | |
| - | * Existenta a cel putin 5 elemente de geometrie create din cod si pentru care se aplica texturi si se calculeaza iluminarea; | + | |
| - | * Un element construit din cel putin un cub redimensionat; | + | |
| - | * Un element construit din cel putin 3 cuburi redimensionate; | + | |
| - | * Un element construit din cel putin 3 cuburi redimensionate, in care cel putin unul dintre acestea are o animatie continua; | + | |
| - | * Un element construit din cel putin 3 cuburi redimensionate, ce contine cel putin o sursa de lumina; | + | |
| - | * Un element construit din cel putin 3 cuburi redimensionate, ce contine cel putin o sursa de lumina cu un comportament de iluminare ce se modifica continuu; | + | |
| - | * Existenta a cel putin unui personaj care sa aiba un set de animatii continue; | + | |
| - | * Existenta unei curburi pentru geometria lumii; | + | |
| - | * Existenta unor multiple surse de iluminare de culori diferite; | + | |
| - | * Cel putin 10 surse de lumina pentru care nu se creeaza umbre la orice moment de timp; | + | |
| - | * Cel putin 3 surse de luminca pentru care se calculeaza umbre la orice moment de timp; | + | |
| - | * Existenta unui efect de post-procesare. | + | |
| - | </hidden> | + | |
| <note tip> | <note tip> | ||
| - | Conceptia jocului este **in totalitate** la alegerea voastra. Tematica jocului este in totalitate la alegerea voastra :) . De altfel, 1 p din cele 3 p ale temei, dupa cum se poate vedea mai jos, se aloca pentru comportamentul de joc ales de voi. Astfel, va incurajez sa fiti cat mai creativi :) ! | + | Concepția jocului este //**în totalitate**// la alegerea voastră. Tema aceasta nu impune niciun joc propriu-zis. Va trebui sa concepeți voi unul :) . De asemenea, tematica jocului este în totalitate la alegerea voastră. |
| + | |||
| + | În total, 1 punct din cele 3 puncte ale temei, după cum se poate vedea în cadrul baremului de mai jos, se alocă pentru comportamentul de joc ales de voi și pentru complexitatea vizuală a jocului. Astfel, vă încurajez să fiți cât mai creativi :) ! | ||
| + | |||
| + | Punctajul pentru această temă poate fi extins până la 4 puncte. Pe lângă cele 3 puncte de bază, un joc cu o calitate bună, în special din punct de vedere al elementelor de programare a graficii, poate obține cu până la 1 punct bonus. | ||
| </note> | </note> | ||
| Line 32: | Line 20: | ||
| ==== Funcționalități obligatorii (3 puncte) ==== | ==== Funcționalități obligatorii (3 puncte) ==== | ||
| - | * Desenare elemente vizuale (0.5p total) | + | * Desenare obiecte (0.5p total) |
| - | * Desenare geometrie element - 0.1p per element, conform descrierii de mai jos | + | * Desenare geometrie obiecte - 0.1p per obiect, conform descrierii de mai jos |
| - | * Curbura geometrie lume (0.2p) | + | * Curbură geometrie lume virtuală (0.3p) |
| - | * Animatii personaj (0.6p total) | + | * Animații personaj (0.75p total) |
| - | * Desenare geometri personaj - 0.15p | + | * Desenare geometrie personaj - 0.15p |
| - | * Animatii personaj - 0.15p per animatie | + | * Animații personaj - 0.2p per animație |
| - | * Iluminare geometrie (0.4p total) | + | * Iluminare geometrie (0.45p total) |
| - | * Iluminare geometrie fara umbre - 0.15p | + | * Iluminare cu cel puțin 10 surse de lumină la orice moment de timp, pentru care nu se calculează umbre - 0.15p |
| - | * Iluminare cu cel putin 3 surse de lumina pentru care se calculeaza umbrele - 0.25p | + | * Iluminare cu cel puțin 3 surse de lumină la orice moment de timp, pentru care se calculează umbre - 0.3p |
| - | * Efect de post-procesare (0.3p) | + | * Joc (1p total) |
| - | * Consultati descrierea de mai jos | + | * Comportament de joc - 0p...0.5p |
| - | * Comportament de joc, complexitate constructie geometrie, creativitate in utilizarea tehnicilor studiate in cadrul acestui curs :) - 1p | + | * Complexitate construcție geometrie - 0p...1p |
| + | * Creativitate în utilizarea tehnicilor studiate în cadrul acestui curs :) - 0p...1p | ||
| + | |||
| + | <note tip> | ||
| + | Ultima cerință din barem are punctaj dinamic. Altfel spus, puteți obține totalul de 1 punct pe baza complexității doar a unui subset din cerințele menționate. | ||
| + | |||
| + | Astfel, vă puteți concentra pe anumite aspecte ale jocului mai mult decât pe altele, cu observația că elementele ce țin de domeniul de programare a graficii vor fi notate mai consistent față de cele ce țin de domeniul de programare a jocurilor video. De asemenea, aspectul vizual obținut în urma utilizării tehnicilor studiate în cadrul acestui curs vor fi punctate consistent :) . | ||
| + | </note> | ||
| ===== Detalii de implementare ===== | ===== Detalii de implementare ===== | ||
| - | ==== Construcție elemente vizuale ==== | + | ==== Construcție obiecte ==== |
| - | Trebuie sa realizati cel putin **5 elemente vizuale**. | + | Trebuie să construiți geometria pentru cel puțin //**5 obiecte**// din lumea virtuală a jocului. |
| <note> | <note> | ||
| - | Pentru simplitate, vom specifica aici faptul ca toate elementele vizuale descrise mai jos: | + | Pentru simplitate, vom specifica aici faptul că toate obiectele descrise mai jos: |
| - | * Trebuie construite exclusiv din cod. Nu este permisa incarcarea unor modele 3D din fisiere pentru realizarea lor. | + | * Trebuie construite exclusiv din cod. NU este permisă încărcarea unor modele 3D din fișiere pentru desenarea obiectelor obligatorii. |
| - | * Trebuie sa fie desenate prin aplicarea unei texturi; | + | * Trebuie să fie colorate prin aplicarea a cel puțin unei texturi; |
| - | * Complexitatea geometriei este descrisa prin cuburi/paralelipipede, dar pentru cresterea punctajului de la ultima cerinta din barem, se incurajeaza utilizarea unor forme geometrice mai complexe: cilindrul, conul, sfera :) . | + | * În descrierea de mai jos, complexitatea geometriei este descrisă prin cuburi/paralelipipede, dar pentru creșterea punctajului de la ultima cerință din barem, se încurajează utilizarea unor forme geometrice mai complexe precum discurile de cerc, cilindrii, conurile :) ... |
| - | * Asezarea componentelor din care este realizat un element vizual, impreuna cu texturile aplicate la desenarea componentelor, trebuie sa fie consistente cu comportamentul si tematica jocului. Altfel spus, toate elementele vizuale trebuie sa aiba sens in lumea virtuala a jocului, nu doar sa fie introduse pentru respectarea cerintei minime :) . | + | * Așezarea componentelor din care este realizat un obiect, împreună cu texturile aplicate la desenarea componentelor, trebuie să fie consistente cu comportamentul și tematica jocului. Altfel spus, toate obiectele trebuie să aibă sens în lumea virtuală a jocului, nu doar să fie introduse pentru respectarea cerinței minime :) . |
| </note> | </note> | ||
| - | Cel mai simplu element vizual din lume poate fi realizat sub forma unui cub sau unui paralelipiped. Paralelipipedul se poate obtine din geometria unui cub, prin desenarea celui din urma cu o transformare de redimensionare neuniforma. | + | Cel mai simplu obiect din lumea virtuală a jocului poate fi realizat sub forma unui cub sau a unui paralelipiped. Paralelipipedul se poate obține din geometria unui cub, prin desenarea celui din urmă cu o transformare neuniformă de modificare de scară. |
| - | Urmatorul element vizual ce trebuie construit este construit din cel putin 3 cuburi sau paralelipipede. | + | Următorul obiect ce trebuie construit este compus din cel puțin 3 cuburi sau paralelipipede. |
| - | Un alt element vizual trebuie sa fie construit din cel putin 3 cuburi sau paralelipipede, similar cu cel descris anterior, dar in situatia acestuia, cel putin o componenta din care este construit trebuie sa aiba o animatie continua. | + | Un alt obiect trebuie să fie construit din cel puțin 3 cuburi sau paralelipipede, similar cu cel descris anterior, dar în situația acestuia, cel puțin o componentă din care este construit trebuie să aibă o animație continuă. |
| - | Un alt element element vizual trebuie construit din cel putin 3 cuburi sau paralelipipede si trebuie sa contina cel putin o sursa de lumina atasata de el. Aceasta sursa de lumina trebuie sa lumineze orice obiect din lumea virtuala. | + | Un alt obiect trebuie construit din cel puțin 3 cuburi sau paralelipipede și trebuie să conțină cel puțin o sursă de lumină atașată de el. Această sursă de lumină trebuie să poată lumina orice obiect din lumea virtuală. |
| - | Similar cu elementul vizual descris mai sus, ultimul element vizual obligatoriu trebuie sa fie construit din cel putin 3 cuburi sau paralelipipede si sa contina cel putin o sursa de lumina atasata de el, care sa aiba un comportament de iluminare ce se modifica continuu. Posibile modificari ale sursei comportamentului de iluminare pot fi schimbarea culorii/intensitatii de iluminare. | + | Similar cu obiectul descris anterior, ultimul obiect obligatoriu trebuie să fie construit din cel puțin 3 cuburi sau paralelipipede și să conțină cel puțin o sursă de lumină atașată de el, care să aibă un comportament de iluminare ce se modifică continuu. Posibile modificări ale comportamentului de iluminare pot fi schimbarea culorii/intensității de iluminare. |
| <note tip> | <note tip> | ||
| - | O parte din punctajul ultimei cerinte din barem este proportionala cu complexitatea geometriei construite :) . Astfel, va incurajez sa va folositi creativitatea pentru crearea unei lumi virtuale cat mai placute si interesante, conform tematicii alese de voi pentru joc. | + | O parte din punctajul ultimei cerințe din barem este proporțională cu complexitatea geometriei construite :) . Astfel, //**vă încurajez să vă folosiți creativitatea pentru crearea unei lumi virtuale cât mai plăcute și interesante**//, conform tematicii alese de voi pentru joc. |
| </note> | </note> | ||
| ==== Curbură geometrie ==== | ==== Curbură geometrie ==== | ||
| - | Lumea virtuala in care se desfasoara actiunea jocului trebuie sa contina o curbura intr-o directie aleasa de voi. | + | Lumea virtuală în care se desfășoară acțiunea jocului trebuie să conțină o curbură într-o direcție aleasă de voi. |
| - | <note tip> | + | <note> |
| Pentru a crea efectul vizual de curbură a geometriei, se utilizează o abordare simplă ce oferă rezultate satisfăcătoare :). | Pentru a crea efectul vizual de curbură a geometriei, se utilizează o abordare simplă ce oferă rezultate satisfăcătoare :). | ||
| - | Rezultatul este doar un efect vizual ce curbează geometria în jurul personajului, astfel că acesta poate ajunge la limita geometriei lumii, altfel spus la capătul ei și să și depășească acest capăt :) . De asemenea, este important de menționat că pentru calculele de iluminare NU se ține cont de calculele de creare a curburii geometriei. | + | Rezultatul este doar un efect vizual ce curbează geometria în jurul personajului/camerei. Este important de menționat faptul că pentru calculele de iluminare NU se ține cont de calculele de creare a curburii geometriei. |
| </note> | </note> | ||
| Line 93: | Line 88: | ||
| <note tip> | <note tip> | ||
| * $Pozitie_v$ - poziția în spațiul lumii a vârfului procesat de vertex shader | * $Pozitie_v$ - poziția în spațiul lumii a vârfului procesat de vertex shader | ||
| - | * $Pozitie_{camera}$ - poziția în spațiul lumii a personajului controlat de jucător | + | * $Pozitie_{camera}$ - poziția în spațiul lumii a camerei |
| - | * $\vec{control}$ - un vector de control a directiei in care se realizeaza curbura | + | * $\vec{control}$ - un vector de control al direcției în care se realizează curbura |
| - | * In situatia in care se doreste realizarea curburii in jos, se utilizeaza vectorul $\vec{control}= \begin{bmatrix} 0 & -1 & 0 \end{bmatrix} $ . | + | |
| - | * In situatia in care se doreste realizarea curburii in stanga jos, vectorul este $\vec{control}= \begin{bmatrix} -1 & -1 & 0 \end{bmatrix} $ | + | |
| * $factorCurbura$ - un factor ce controlează curbura geometriei | * $factorCurbura$ - un factor ce controlează curbura geometriei | ||
| </note> | </note> | ||
| - | Factorul de curbură este proporțional cu dimensiunea obiectelor din lume. O valoare posibila pentru factorul de curbura este 0.02. | + | Câteva exemple de valori pentru vectorul de control pot fi: |
| + | * În situația în care se dorește realizarea curburii în direcția jos, relativ la axele de coordonate, se utilizează vectorul $\vec{control}= \begin{bmatrix} 0 & -1 & 0 \end{bmatrix} $ . | ||
| + | * În situația în care se dorește realizarea curburii în stânga-jos, relativ la axele principale, vectorul este $\vec{control}= \begin{bmatrix} -1 & -1 & 0 \end{bmatrix} $ . | ||
| - | ==== Animatii ==== | + | Factorul de curbură este proporțional cu dimensiunea obiectelor din lume. O valoare posibilă pentru factorul de curbură este 0.02. |
| - | Geometria personajului și a inamicilor poate fi identică. Ea este realizată din 6 paralelipipede, ce reprezintă trunchiul, capul, piciorul stâng și drept, brațul stâng și drept al personajului, conform imaginii de mai jos. | + | ==== Animații ==== |
| - | {{ :ipg:tema:personaj.png?200 |}} | + | În imaginile și animațiile de mai jos, se prezintă o versiune minimă a personajului pe care trebuie să îl creați cu animații continue. Personajul realizat de voi poate fi de orice tip, de la o creatură bipedă, la un animăluț/vehicul. |
| - | <note> | + | === Geometrie personaj === |
| - | În imagine, cele 6 componente ale geometriei sunt colorate diferit pentru a putea fi identificate cu ușurință. În aplicația grafică, toată geometria unui personaj sau a unui inamic poate fi desenată cu o singură culoare. | + | |
| - | </note> | + | |
| - | <note tip> | + | Geometria personajului trebuie să fie construită din următoarele componente: |
| - | Recomandarea este să construiți această geometrie din 6 cuburi pentru care aplicați un lanț de transformări ce conține o transformare neuniformă de modificare a scării și o transformare de translație. | + | * Un corp; |
| - | </note> | + | * Cel puțin 2 elemente, pe care putem să le numim membre inferioare, ce sunt utilizate pentru deplasare; |
| + | * Cel puțin alte 2 elemente, pe care putem să le numim membre superioare, ce trebuie să fie utilizate în cadrul animațiilor. | ||
| - | ==== Control personaj ==== | + | Similar precum la geometria elementelor vizuale din scenă, desenarea personajului trebuie realizată prin procesul de aplicare a unei texturi consistente cu tematica jocului și prin calcularea iluminării. |
| - | În situația în care se utilizează framework-ul de laborator, pentru determinarea direcției de deplasare a jucătorului pe baza direcției de vizualizare a camerei observator, se poate utiliza obiectul de tip ''Camera'', după cum urmează: | + | Un posibil exemplu pentru geometria personajului este următorul: |
| - | <code cpp> | + | {{ :ipg:tema:personaj.png?200 |}} |
| - | auto camera = GetSceneCamera(); | + | |
| - | glm::vec3 forward = camera->m_transform->GetLocalOZVector(); | + | <note> |
| - | forward = glm::normalize(glm::vec3(forward.x, 0, forward.z)); | + | În imagine, cele 6 componente ale geometriei sunt colorate diferit pentru a putea fi identificate cu ușurință. |
| - | </code> | + | </note> |
| - | Se utilizează o proiecție pe planul XOZ a direcției de vizualizare a camerei. Calculele se realizează analog și pentru celelalte direcții ale obiectului de tip ''Camera''. | + | <note tip> |
| + | În situația în care realizați o geometrie a personajului ce este similară cu cea descrisă în imaginea de mai sus, puteți urmări recomandarea următoare pentru realizarea animațiilor. Recomandarea este să realizati geometria dintr-un set de cuburi pentru care aplicați un lanț de transformări ce conține o transformare neuniformă de modificare a scării și o transformare de translație. | ||
| - | === Orientare personaj === | + | În situația în care realizați o geometrie mai comlexă pentru personaj, recomandarea este să alocați atenție construcției componentelor din care este format personajul, astfel încât să aveți originea axelor de coordonate la o poziție convenabilă pentru transformările de rotație :) . |
| + | </note> | ||
| - | Pentru a orienta geometria personajului în direcția de deplasare, se utilizează o matrice de rotație în jurul axei OY. În situația în care se cunoaște direcția de deplasare, unghiul de rotație se poate calcula după cum urmează: | + | === Animații === |
| + | Geometria personajului trebuie **să realizeze cel puțin 3 tipuri de animații distincte**. Toate animațiile trebuie să fie continue. Acestea trebuie să fie realizate prin utilizarea a cel puțin unei transformări de rotație. | ||
| + | Un exemplu de animație posibilă pentru personajul a cărui geometrie este prezentată mai sus este o animație de deplasare a personajului, precum cea de mai jos. | ||
| - | $$ | + | {{ :ipg:tema:animation1.gif?600 |}} |
| - | unghi = arctan(\frac{directie_x}{directie_z}) | + | |
| - | $$ | + | |
| <note tip> | <note tip> | ||
| - | Recomandarea este să utilizați ''atan2()'' pentru calcularea arctangentei. | + | Recomandarea este să realizați o astfel de animație prin utilizarea unui lanț de transformări, în care, pentru a da doar un exemplu, la finalul lanțului propriu de transformări ale brațului drept se aplică lanțul de transformări ale trunchiului. |
| </note> | </note> | ||
| - | ==== Comportament cameră observator ==== | + | <note important> |
| - | + | * Aveți libertatea să **realizați orice alte tipuri de animații**, în situația în care aceste animații utilizează cele 4 membre pe care trebuie să le conțină geometria. | |
| - | În situația în care se utilizează framework-ul de laborator, pentru desenarea geometriei din perspectiva camerei observator, se poate utiliza obiectul de tip ''Camera'', după cum urmeaza: | + | * Animațiile trebuie să fie consistente cu concepția jocului. Altfel spus, trebuie să aibă sens pentru joc. |
| - | + | * Toate cele 3 animații trebuie să fie cel puțin la fel de complexe precum cea de deplasare, oferită mai sus. | |
| - | <code cpp> | + | </note> |
| - | auto camera = GetSceneCamera(); | + | |
| - | + | ||
| - | // pozitia relativa a camerei fata de pozitia personajului | + | |
| - | glm::vec3 relativeCameraPosition = ...; | + | |
| - | + | ||
| - | // playerPosition este pozitia in lume a personajului controlat de jucator | + | |
| - | camera->SetPositionAndRotation( | + | |
| - | playerPosition + relativeCameraPosition, | + | |
| - | glm::quatLookAt(-glm::normalize(relativeCameraPosition), glm::vec3(0, 1, 0)) | + | |
| - | ); | + | |
| - | </code> | + | |
| ==== Iluminare geometrie ==== | ==== Iluminare geometrie ==== | ||
| În calculele de iluminare a geometriei, trebuie utilizată //componenta ambientală//, //componenta difuză// și //componenta speculară//. Se pot utiliza modelele de iluminare deja analizate. Dacă se dorește, se poate înlocui calculul de iluminare pentru oricare din cele 3 componente cu un alt model de iluminare ce oferă rezultate vizuale superioare :) . Utilizarea unor astfel de modele de iluminare se punctează suplimentar. | În calculele de iluminare a geometriei, trebuie utilizată //componenta ambientală//, //componenta difuză// și //componenta speculară//. Se pot utiliza modelele de iluminare deja analizate. Dacă se dorește, se poate înlocui calculul de iluminare pentru oricare din cele 3 componente cu un alt model de iluminare ce oferă rezultate vizuale superioare :) . Utilizarea unor astfel de modele de iluminare se punctează suplimentar. | ||
| + | |||
| + | În cadrul acestei teme, trebuie să realizați mediul unei lumi virtuale în care la orice moment de timp sunt prezente: | ||
| + | * Cel puțin 10 surse de lumină punctiforme/de tip spot. Pentru aceste surse de lumină, nu trebuie calculate umbre; | ||
| + | * Cel puțin 3 surse de lumină de tip spot pentru care se calculează umbre. | ||
| === Transformarea vectorului normal în spațiul lumii === | === Transformarea vectorului normal în spațiul lumii === | ||
| Line 191: | Line 179: | ||
| </note> | </note> | ||
| - | === Surse de lumină de tip spot === | + | === Umbre calculate pentru surse multiple === |
| - | Direcția de iluminare a surselor de lumină de tip spot din vârful stâlpilor se vor roti continuu. | + | Considerăm faptul că sursele de lumină pentru care se calculează umbre sunt de tip spot. La calcularea umbrelor, este recomandat să aveți în vedere să introduceți un număr relativ mic de astfel de surse de lumină și să păstrați rezoluția hărților de iluminare la un nivel care să permită o frecvență de desenare acceptabilă. |
| - | ==== Detecție eliminare inamici ==== | + | <hidden> |
| - | La apăsarea tastei space, personajul "trage" cu o "armă", așa cum s-a menționat mai sus. Pentru a identifica inamicii care se află pe direcția de deplasare a personajului, la distanță mai mică de 2 unități, se poate folosi o abordare simplă ce oferă rezultate satisfăcătoare. Se utilizează un cerc virtual de rază 1, astfel ca diametrul să fie de dimensiune 2, ce se poziționează cu centrul la distanța 1 față de poziția personajului, pe direcția lui de deplasare. Această abordare este descrisă vizual în imaginea de mai jos. | ||
| - | |||
| - | {{ :ipg:tema:collision.png?300 |}} | ||
| - | |||
| - | Prin utilizarea acestei abordări, este suficient să identificăm toți inamicii ce au poziția în cercul descris mai sus pentru a afla inamicii ce trebuie eliminați din joc. Se consideră pozițiile personajului și ale inamicilor proiectate paralel pe planul XOZ pentru a lucra într-un spațiu 2D. Pentru a verifica dacă o poziție se află în interiorul unui cerc, se verifică daca distanta între poziție și centrul cercului este mai mică decât raza cercului. | ||
| - | |||
| - | ==== Animații ==== | ||
| - | |||
| - | Geometria personajului și a inamicilor trebuie să realizeze o animație continuă de deplasare, conform filmulețului de mai jos: | ||
| - | |||
| - | {{ :ipg:tema:animation1.gif?600 |}} | ||
| - | |||
| - | <note tip> | ||
| - | Recomandarea este să realizați această animație prin utilizarea unui lanț de transformari, în care, pentru a da doar un exemplu, la finalul lanțului propriu de transformări ale brațului drept se aplică lanțul de transformari ale trunchiului. | ||
| - | </note> | ||
| - | |||
| - | === Animație de oprire === | ||
| - | |||
| - | Doar pentru personajul controlat de jucător, în momentul în care jucătorul se oprește din mișcare, animația trebuie să se întoarcă înapoi la cadrul de animație în care personajul stă pe loc. În filmulețul de mai jos se poate observa acest comportament de joc. | ||
| - | |||
| - | {{ :ipg:tema:animation2.gif?600 |}} | ||
| - | |||
| - | ==== Desenarea geometriei în două porți de afișare ==== | ||
| - | |||
| - | În momentul în care jocul se utilizează în 2, pe ecran se desenează geometria în două porți de afișare cum s-a descris mai sus. Toate elementele vizuale, inclusiv personajul companion și iluminarea cu sursele de lumină proprii personajului companion, trebuie să se deseneze din două perspective diferite, câte una pentru fiecare personaj. De asemenea, curbura geometriei trebuie realizată din poziția personajului din perspectiva căruia se desenează geometria în poarta de afișare. | ||
| ===== Exemple de funcționalități bonus ===== | ===== Exemple de funcționalități bonus ===== | ||
| Line 232: | Line 195: | ||
| * Orice aduce îmbunătățiri vizuale jocului | * Orice aduce îmbunătățiri vizuale jocului | ||
| - | <hidden> | ||
| ==== Întrebări și răspunsuri ==== | ==== Întrebări și răspunsuri ==== | ||