En aquesta segona part, on analitzem més a fons la creació de jocs 3D, ens centrarem en què passa amb el món 3D un cop finalitzat tot el procés de la cantonada. Haurem de tornar a espolsar els nostres manuals de matemàtiques, tractar la geometria de la frustració i pensar en el trencaclosques de perspectiva. També ens endinsarem ràpidament en el traçat de raigs, la il·luminació i la física dels materials, perfecte.

El tema principal d’aquest article és una etapa important en la representació, on el món tridimensional de punts, línies i triangles es converteix en una quadrícula bidimensional de blocs de colors. Això és una cosa que simplement "passa" perquè els processos del canvi 3D-2D són invisibles, els nostres article anterior aquí podríem veure immediatament els efectes dels ombres i dels mosaics. Si no esteu preparat per tot això, no us preocupeu; podeu començar. Representació 3D de jocs 101. Tanmateix, seguiu llegint per veure la nostra pròxima mirada al món dels gràfics en 3D un cop estigui configurat.

Preparació per a 2 dimensions

La majoria de vosaltres veureu aquest lloc web en un monitor completament pla o una pantalla de telèfon intel·ligent; Fins i tot si esteu fresc i tranquil amb els nens i teniu un monitor corbat i elegant, les imatges que es mostren estan formades per una quadrícula plana de píxels de colors. Tot i així, les imatges semblen ser en 3D quan es reprodueix Call of Mario: Deathduty Battleyard. Els objectes entren i surten de l’entorn mentre entren i surten de la càmera.

Utilitzant Bethesda Fallout 4 Com a exemple del 2014, podem veure fàcilment com es manegen les cantonades per crear una sensació de profunditat i distància, sobretot si s’executa en mode wireframe (a la part superior).




Si escolliu qualsevol joc en 3D d’avui o dels darrers vint anys, gairebé tots realitzaran la mateixa seqüència d’esdeveniments per transformar el món 3D dels vèrtexs en una matriu de píxels 2D. Normalment s’anomena el nom del procés que va fer el canvi pixelació però aquest és només un dels molts passos de la totalitat.




Haurem de desglossar algunes de les diverses etapes i estudiar les tècniques i les matemàtiques utilitzades i utilitzarem la seqüència utilitzada per Direct3D per investigar què passa per referència. La imatge següent mostra el que s’ha fet amb cada cim del món:







Què es va fer a l'escena espacial mundial? Article de la primera part: Aquí els vèrtexs es transformen i acoloreixen mitjançant càlculs de matriu múltiple. Ometrem la secció següent perquè l'única cosa per a l'àrea de la càmera és que les cantonades convertides s'ajusten després de moure's per fer el punt de referència de la càmera.

Els passos següents són crucials per saltar-se, ja que són absolutament crítics per passar del 3D al 2D, fet correctament, i els nostres cervells veuran una pantalla plana, però "veuran" una escena amb profunditat i escala, fet malament i les coses es veuran molt estranyes.




Tot és qüestió de perspectiva

El primer pas d’aquesta seqüència consisteix a definir el camp de visió vist per la càmera. Això es fa primer ajustant els angles per al camp de visió horitzontal i vertical: els primers es poden canviar sovint en els jocs perquè la gent té una visió perifèrica de costat a costat millor que cap amunt i cap avall.

Ho podem entendre a partir d’aquesta imatge que mostra el camp de la visió humana:




Dos angles de visió (abreviació breu), frustum - una piràmide de base quadrada 3D que surt de la càmera. Primer angle vertical fov, el segon horitzontal un; utilitzarem símbols α ve β per mostrar-los. Ara no veiem el món exactament així, però és molt més fàcil treballar amb un frustum que intentar crear un volum d’imatges realista.

També cal definir altres dos paràmetres: la posició propera (o frontal) i la extrema (posterior) avions de retall. La primera talla la part superior de la piràmide, però determina principalment la proximitat de la càmera a la posició on es va dibuixar qualsevol cosa; el segon fa el mateix, però defineix fins a quin punt s’eliminaran les primitives de la càmera.

La mida i la posició del pla de retall gairebé important és important perquè ho és Veure,. Això és realment el que veieu al monitor, és a dir, el marc representat i, en la majoria d’APIs gràfiques, la vista es dibuixa des de l’angle superior esquerre. A la imatge següent, el punt (a1, b2) serà la font del pla i l'amplada i l'alçada del pla es mesuren a partir d'aquí.

relació d'aspecte De la mateixa manera que la perspectiva és molt important per a l'aspecte del món creat, també ha de coincidir amb la relació d'aspecte del monitor. Durant molts anys, això sempre és 4: 3 (o 1,3333 ... en decimal). Avui en dia, la majoria de nosaltres tenim jocs de pantalla panoràmica i ultra ampla com 16: 9 o 21: 9.

Les coordenades de cada vèrtex a l'àrea de la càmera han de transformar-se de manera que totes encaixin al pla de retall proper, tal com es mostra a continuació:

La transformació es fa utilitzant una altra matriu, a aquesta particular matriu de projecció de perspectiva. En el nostre exemple següent, fem servir l'àrea de cultiu i les posicions dels plans de retall per transformar; podem utilitzar les dimensions de la finestra gràfica.

El vector de posició del vèrtex es multiplica per aquesta matriu i dóna un nou conjunt transformat de coordenades.

Et voila! Ara hem escrit tots els nostres racons de manera que la terra original aparegui ara com una perspectiva 3D forçada de manera que les primitives properes al pla pre-retallat apareguin més grans que les properes al pla distant.

Tot i que la mida de la vista i els angles del camp de visió són interdependents, es poden processar individualment, és a dir, podeu obtenir un pla de retall diferent segons la mida i la relació d’aspecte de la vista. Perquè això passi, es requereix un pas addicional a la cadena, en el qual les cantonades del pla de retall proper s'han de reciclar per tenir en compte la diferència.

Tanmateix, això pot provocar distorsions a la perspectiva mostrada. ús El joc Skyrim de Bethesda del 2011, podem veure com s’ajusta l’angle de visió horitzontal βTé un impacte significatiu a l’escena i manté la mateixa relació d’aspecte de la finestra gràfica:

En aquesta primera imatge, β = 75 ° i l'escena sembla perfectament normal. Provem-ho ara β = 120°:

Les dues diferències són immediatament òbvies: en primer lloc, podem veure molt més als costats de la nostra "visió" ara i, en segon lloc, els objectes apareixen ara molt més lluny (sobretot els arbres). Tot i això, l’impacte visual de la superfície de l’aigua actualment no és visible i això es deu al fet que el procés no es va dissenyar per a aquest camp visual.

Ara suposem que el nostre personatge té ulls aliens i semblants als ulls. β = 180°!

Aquest camp de visió ens proporciona una visió gairebé panoràmica, però a costa d’una distorsió greu als objectes creats a les vores de la vista. Una vegada més, això es deu al fet que els dissenyadors de jocs no van planificar ni crear els actius i efectes visuals del joc per a aquest punt de vista (el valor per defecte és al voltant dels 70 °).

Pot semblar que la càmera s’ha mogut a les imatges anteriors, però no va passar; tot el que va passar és que la forma del meu tronc es va canviar, cosa que va modificar les dimensions del pla de retall proper. A cada imatge, la relació d'aspecte de la finestra de visualització va continuar sent la mateixa, de manera que es va aplicar una matriu d'escala a les cantonades per reajustar-ho tot.

Llavors, estàs dins o fora?

Després que tot es transformi correctament a l’etapa de projecció, passem al que s’anomena àrea de clip. Tot i que això està fet Llavors la projecció és més fàcil de visualitzar el que passa si ho fem abans:

En el nostre diagrama anterior, podem veure que l’ànec de goma, un dels ratpenats i alguns arbres són triangles en frust; Tanmateix, l’altre ratpenat, l’arbre més llunyà i el panda es troba fora del tronc. Tot i que les cantonades que formen aquests objectes ja s’han mecanitzat, no apareixen a la finestra gràfica. Això vol dir escurçat.

In cultiu de frustumTots els principis, excepte el frustum, s’eliminen completament, i les primitives que es troben en qualsevol dels límits es transformen en noves primitives. Retalleu, fins a aquest punt, totes les cantonades invisibles, ombres, etc. Realment no és un augment del rendiment, ja que s’executa mitjançant. La pròpia fase de retall també es pot ometre si cal, però no ho admeten totes les API (per exemple, l'OpenGL estàndard no us permet ometre-ho, però és possible fer-ho mitjançant una extensió d'API).

Cal tenir en compte que la ubicació del pla de retall remot no és necessàriament la mateixa. distància de dibuix En els jocs, aquest últim està controlat pel propi motor de joc. Qualsevol altra cosa que farà el motor frustum cull - aquí s'executa el codi per determinar si un objecte estarà en frustum i / o afectar qualsevol cosa que sigui visible; Si la resposta és noAquest objecte no s’envia per a la seva creació. Això no és el mateix que retallar la decepció, perquè tot i que els elements primitius per frustració han caigut, passen per l'etapa de processament màxima. Amb la resta, no es processen en absolut, estalviant bastant rendiment.

Ara que hem fet tota la nostra transformació i retallada, les cantonades finalment apareixen preparades per a la següent etapa de tota la seqüència de renderització. No en surten. Això es deu al fet que totes les matemàtiques realitzades en la manipulació del vèrtex i les operacions espacials del món per retallar s’han de fer amb un sistema de coordenades homogeni (és a dir, cada vèrtex té 4 components en lloc de 3). Tot i això, la visualització és completament 2D, de manera que la informació del vèrtex de l'API només és x, i (valor de profunditat z però es conserva).

Per desfer-se del quart component, secció de perspectiva cada component w valor. Aquesta configuració bloqueja l'interval de valors x ve y [-1,1] pot prendre i z [0,1] interval: s'anomenen coordenades de dispositiu normalitzades (Abreviatures de NDC).

Si voleu saber més sobre el que acabem de tractar i esteu encantats de captar moltes més matemàtiques, Song Ho Ahn's excel·lent tutorial Sobre el tema. Convertim aquestes cantonades a píxels.

Mestre ràster

Com passa amb les transformacions, veurem com Direct3D estableix les regles i les accions per convertir la finestra gràfica en una quadrícula de píxels. Aquesta quadrícula és com un full de càlcul amb files i columnes en què cada cel·la conté diversos valors de dades (color, valors de profunditat, coordenades de textura, etc.). Normalment, aquesta quadrícula ràster i el procés de producció pixelació. El nostre Representació 3D de 101 articles, tenim una visió molt simplificada del procediment:

La imatge superior dóna la impressió que les primitives només es van tallar en petits blocs, però hi ha molt més en això. El primer pas és entendre si una primitiva està realment mirant la càmera; en una imatge anterior d’aquest article, serien visibles les primitives que formaven la part posterior del conill gris, que mostraven decepció. Per tant, no cal crear-los, tot i que es troben al camp visual.

Amb el diagrama següent, podem entendre aproximadament com és. El cub va experimentar diverses transformacions per situar el model 3D en espai de visualització 2D i, a la vista de la càmera, algunes de les cares del cub no són visibles. Suposant que cap de les superfícies no és transparent, algunes d’aquestes primitives es poden ignorar.

Direct3D'de bu, sisteme estat de processament serà i aquesta instrucció indicarà la seva eliminació (aka descartar) per a cada costat primitiu orientat cap endavant o cap enrere (o no estar gens cecs, per exemple, wireframe mode). Llavors, com sap què és la part davantera o posterior? Quan mirem matemàtiques en mecanitzat de cantonadesHem vist que els triangles (o tenen més vèrtexs) tenen vectors normals que indiquen al sistema a quina direcció s’enfronta. Amb aquesta informació, es pot fer una comprovació simple i, si falla la comprovació primitiva, s’eliminarà de la cadena de generació.

Llavors és hora de començar a implementar la quadrícula de píxels. Una vegada més, això és sorprenentment complex perquè, si un píxel s’adapta completament a una primitiva (completament, parcialment o en absolut), el sistema ha de funcionar. Fer això, prova d'abast fet. La imatge següent mostra com es rasteritzen els triangles a Direct3D 11:

La regla és bastant senzilla: si el centre del píxel supera el que Microsoft l'anomena, es considera que el píxel està en un triangle. regla "superior esquerre". La part "superior" és un control de línia horitzontal; centre de píxels on aquesta línia. La part "esquerra" és per a línies no horitzontals i el centre del píxel ha de caure a l'esquerra d'aquesta línia. Hi ha regles addicionals per a no primitius, és a dir, línies i punts simples, i si les regles guanyen condicions addicionals multisampling'i estan empleats.

Si observem detingudament la imatge de la documentació de Microsoft, podem veure que les formes creades pels píxels no són molt similars a les primitives originals. Això es deu al fet que els píxels són massa grans per formar un triangle realista: el ràster conté dades insuficients sobre els objectes originals i superposició.

Fem servir 3DMark03 de UL Benchmark Per veure l'àlies en procés:

A la primera imatge, la mida de l'escaneig s'estableix en un valor molt baix de 720 x 480 píxels. La superposició és clarament visible al passamà i l’ombra llença l’arma del soldat superior. Compareu això amb el que obteniu amb un escaneig amb 24 vegades més píxels:

Aquí podem veure que el sobrenom de la barana i l’ombra ja ha desaparegut. Pot semblar un camí d’escaneig més gran cada vegada, però les dimensions de la quadrícula han de ser suportades pel monitor on es mostrarà el marc i aquests píxels s’han de processar després de la ràsterització. sent una penalització de rendiment evident.

Aquí és on el mostreig múltiple pot ajudar-vos i funciona a Direct3D així:

En lloc de comprovar si un centre de píxels compleix les regles de rasterització, hi ha diverses ubicacions (mostres de subpíxels o submostres) es proven dins de cada píxel i, si n'hi ha un d'adequat, aquest píxel forma part de la forma. Pot ser que això no ajudi i fins i tot empitjori l’àlies, però quan s’utilitza el mostreig múltiple, quines submostres estan cobertes per la primitiva i els resultats del processament de píxels s’emmagatzemen en una memòria intermèdia.

A continuació, aquest buffer s’utilitza per barrejar les dades de la submostra i del píxel de manera que les vores primitives queden menys bloquejades. Tornarem a examinar tota la situació bloquejada en un article posterior, però per ara, això és el que pot fer el mostreig múltiple quan s’utilitza en un escaneig de píxels molt baix:

Podem veure que la quantitat d'anti-aliasing a les vores de les diverses formes es redueix considerablement. Un ràster més gran és definitivament millor, però el rendiment pot donar suport a l’ús de mostreig múltiple.

Qualsevol altra cosa que es pugui fer en el procés de rasterització prova d’oclusió. Cal fer-ho perquè el camp de visió estarà ple de primitives que se superposaran (bloquejat), per exemple, a la imatge anterior, els triangles de la part frontal que formen el solideri en primer pla se superposen amb els mateixos triangles de l’altre soldat. A més de comprovar si una primitiva cobreix un píxel, les profunditats relatives també es poden comparar i ometre de la resta del procés de renderització si una està darrere de l’altra.

Tanmateix, si la primitiva propera és transparent, l’altra continuarà sent visible, tot i que falla la comprovació d’oclusió. Per això, gairebé tots els motors 3D fan controls d’oclusió abans de S’envia alguna cosa a la GPU i, en canvi Z-tampó com a part del procés de creació. Aquí és on es representa normalment el marc, però la GPU només emmagatzema valors de profunditat en lloc d’emmagatzemar els colors de píxels finals a la memòria. A continuació, es pot utilitzar en shaders per controlar la visibilitat amb un major control i precisió sobre aspectes que impliquen la superposició d'objectes.

A la imatge superior, com més fosc sigui el color del píxel, més s’acosta l’objecte a la càmera. Per fer la memòria intermèdia z, es crea el marc una vegada i es torna a construir, però aquesta vegada, quan es processen els píxels, s'executa un sombreador per comprovar-los amb els valors de la memòria intermèdia z. Si no és visible, aquest color de píxels no es col·locarà a la memòria intermèdia final de fotogrames.

De moment, l’últim pas real interpolació d'atributs de vèrtex - Al nostre primer diagrama simplificat, la primitiva era un triangle complet, però recordeu que la vista està plena de vèrtexs de les formes, no de la forma en si. Per tant, el sistema ha d’esbrinar com es troben el color, la profunditat i la textura de la primitiva entre les cantonades, i així s’anomena. interpolasyon. Com us podeu imaginar, no es tracta d’un simple càlcul, sinó d’un altre càlcul.

Tot i que la pantalla rasteritzada és 2D, les estructures del seu interior representen una perspectiva 3D forçada. Si les línies fossin realment bidimensionals, és senzill lineal diversos colors i així successivament a mesura que es va d'un cim a un altre. Però a causa de l’aspecte 3D de l’escena, la interpolació ha de tenir en compte la perspectiva: Simon Yeung'un muhteşem blogu per obtenir més informació sobre el procés.

Aquí anem: el món 3D de les cantonades es converteix en una quadrícula 2D de blocs de colors. Tot i això, no hem fet molt.

Tot de davant a darrere (excepte quan no hi és)

Abans d’acabar la nostra mirada sobre la rasterització, hem de dir alguna cosa sobre l’ordre de renderització. Per exemple, no parlem d'on va sorgir la tessel·lació al seu torn; en canvi, estem parlant de l’ordre dels primitius. Els objectes es processen sovint en l’ordre en què apareixen al buffer de directoris (el bloc de memòria que indica al sistema com s’agrupen els vèrtexs), i això pot tenir un impacte significatiu en la manera com es gestionen els objectes i els efectes transparents.

Això es deu al fet que les primitives es tracten una per una i, si primer feu les anteriors, no hi ha ningú al darrere (aquí és on realment entra en joc la classificació d’oclusions). i es pot treure de l'acció (ajuda al rendiment): normalment és "de front a darrere requereix la creació i la memòria intermèdia de directoris per ordenar-se d'aquesta manera.

Tanmateix, si algunes d’aquestes primitives situades just davant de la càmera són transparents, la representació frontal amb posterior donarà lloc a objectes perduts darrere de la transparent. Una solució consisteix a fer-ho tot de davant a darrere, amb primitives transparents i efectes realitzats darrerament.

Per tant, tots els jocs moderns es renderitzen esquena amb esquena, oi? Si no és útil, tingueu en compte que cada representació primitiva tindrà un cost de rendiment molt superior al que només es pot veure. Hi ha altres maneres d’abordar objectes transparents, però, en general, no hi ha una solució única i cal gestionar cada situació d’una manera única.

Això resumeix bàsicament els pros i els contres de la rasterització: en el maquinari modern, és realment ràpid i eficaç, però no deixa de ser una aproximació del que estem veient. Al món real, cada objecte absorbeix, reflecteix i potser refracta la llum, i tot això té un efecte en l’escena que s’està visualitzant. Obtenim un resultat ràpid però aproximat dividint el món en primitius i creant-ne només alguns.

Si només hi hagués una altra manera ...

Allà is Una altra forma: el traçat de raigs

Fa aproximadament dues dècades, un informàtic anomenat Arthur Appel va desenvolupar un sistema per crear imatges en un ordinador de manera que es tirés un sol feix de llum recta des de la càmera fins que impactés contra un objecte. A partir d’aquí, les propietats del material (color, reflectivitat, etc.) canvien la intensitat del feix de llum. Cada píxel de la imatge representada tindria un llançament de raigs i es realitzaria un algorisme per descodificar el color del píxel passant per una seqüència matemàtica. Procés d'Appel Fosa de rails.

Uns deu anys després, un altre científic John Whitted Va desenvolupar un algorisme matemàtic que era el mateix que l'enfocament d'Appel, però quan el feix impacta contra un objecte, generaria feixos addicionals que es dispararien en diverses direccions en funció del material de l'objecte. Atès que aquest sistema generaria nous raigs per a cada interacció d'objectes, l'algorisme era recursiu i, per tant, molt més computacionalment difícil; no obstant això, tenia un avantatge significatiu sobre el mètode d'Appel, ja que podia explicar adequadament la reflexió, la refracció i l'ombrejat. El nom d’aquest procediment és: Traçat de raigs (per ser sincer, cap enrere traçat de raigs, com si seguíssim els raigs de la càmera, no l’objecte) i el sant grial per a gràfics per ordinador i pel·lícules des d’aquell moment.

El nom d’aquest procediment era el traçat de raigs (traçat de raigs cap enrere, en sentit estricte, perquè seguim els raigs de la càmera en lloc d’objectes) i des de llavors ha estat el sant grial de la infografia i la pel·lícula.

A la imatge superior, podem fer-nos una idea del treball de Whitted sobre l'algorisme. Un feix s’emet des de la càmera per a cada píxel del marc i es desplaça fins arribar a una superfície. Aquesta superfície en particular és translúcida, de manera que la llum es reflectirà i es refractarà a través d’ella. En ambdós casos, es generen rajos secundaris que s’apaguen fins que interactuen amb una superfície. També hi ha un element secundari addicional que té en compte el color de les fonts de llum i les ombres que formen.

La part recursiva del procés és que es poden generar feixos secundaris cada vegada que un nou feix de fosa talla una superfície. Això pot sortir de control fàcilment, de manera que el nombre de feixos secundaris generats sempre és limitat. Quan es completa un recorregut del feix, el seu color en cada punt terminal es calcula segons les propietats del material d'aquesta superfície. Aquest valor passa el feix a l'anterior, ajustant el color d'aquesta superfície, i així successivament fins a arribar al punt d'origen efectiu (píxel al marc) del feix primari.

Això pot ser extremadament complex, i fins i tot escenaris simples poden crear un llindar computacional per passar. Afortunadament, es poden fer algunes coses per ajudar-vos: un seria utilitzar maquinari especialment dissenyat per accelerar aquestes operacions matemàtiques concretes, igual que per fer matemàtiques matricials en el mecanitzat de cantonades (més en un moment). Una altra cosa fonamental és accelerar el procés de treball sobre quin objecte colpeja un raig i exactament on es troba a la superfície de l'objecte on es creua, cosa que pot sorprendre si l'objecte està format per un gran nombre de triangles. difícil de fer:

En lloc de provar cada triangle, es crea una llista de volums delimitadors (BV) en cada objecte abans del traçat de raigs: no són res més que cuboides que envolten l'objecte en qüestió, i són successivament més petits per a les diverses estructures del seu interior. objecte.

Per exemple, el primer BV seria per a tot el conill. El següent parell és el cap, les cames, el tors, la cua, etc. cadascuna d’aquestes petites estructures al cap, etc. Hi haurà una altra col·lecció de volums per a cadascun i el nivell de volum final contindrà un nombre reduït de triangles per provar. Tots aquests volums es disposen a continuació en una llista ordenada ( Jerarquia BV o BVH en resum) de manera que el sistema controla un nombre relativament petit de BV cada vegada:

Tot i que l’ús d’un BVH no accelera tècnicament el traçat de raigs reals, la creació de la jerarquia i l’algoritme de cerca posterior sovint és molt més ràpid que haver de comprovar si un feix talla un dels milions de triangles. En un món 3D.

Programes com ara mesclador ve POV-Ray Utilitzeu el seguiment de raigs amb seguiment addicional (com ara el seguiment de fotons i la ràdio) per crear imatges molt realistes:

La pregunta òbvia que cal fer és si el traçat de raigs és tan bo, per què no l’utilitzem a tot arreu? Les respostes es divideixen en dues àrees: en primer lloc, fins i tot el simple traçat de raigs produeix milions de rajos que s’han de calcular una i altra vegada. El sistema comença amb un sol feix per píxel de pantalla, de manera que amb una resolució de només 800 x 600 produeix 480.000 feixos primaris, cadascun produint feixos secundaris múltiples. Això és un negoci seriós, fins i tot per als ordinadors d’escriptori actuals. La segona qüestió és que el traçat de raigs bàsic en realitat no és molt realista i cal incloure una sèrie d’equacions addicionals, molt complexes, per ser correctes.

Fins i tot amb el maquinari de PC modern, la quantitat de treball necessària per fer-ho en temps real per a un joc 3D actual està fora de l'abast. El nostre Representació 3D 101 Al seu article, vam veure que trigaven desenes de segons a produir una sola imatge de baixa resolució en un punt de referència de traçat de raigs.

Llavors, com feia el Wolfenstein original que feia fosa de feixos en 3D, el 1992 i per què li agradava? Camp de batalla V ve Migració del metro, tots dos llançats el 2019, ofereixen funcions de rastreig de raigs? Són ràster o traça de raigs? Resposta: una mica dels dos.

Un enfocament híbrid per al present i el futur

Al març de 2018, Microsoft va anunciar una nova extensió d'API per a Direct3D 12 anomenada DXR (DirectX Raytracing). Es tractava d’una nova línia gràfica que complementava la canalització estàndard de rasterització i computacional. Funcionalitat addicional, shaders, estructures de dades, etc. Es va proporcionar a la introducció, però no requeria cap suport de maquinari especial que no fos el que ja es requereix per Direct3D 12.

A la mateixa conferència sobre desenvolupadors de jocs, Va parlar sobre Microsoft DXRElectronic Arts en va parlar Pica Pica Projesi - Experiment de motor 3D amb DXR. Van demostrar que es pot utilitzar el traçat de raigs, però no es poden utilitzar per al quadre de renderització complet. En lloc d’això, s’utilitzaran tècniques tradicionals de rasterització i ombres computacionals durant la major part del treball, DXR s’utilitza per a determinades àrees, cosa que significa que el nombre de raigs generats és molt inferior al de tota l’escena.

Aquest enfocament híbrid s’ha utilitzat en el passat en menor mesura. Per exemple, Wolfenstein 3D fosa de carrils usada per resoldre l'aspecte del marc representat, però fet amb una columna de feix per píxel, no per píxel. Pot semblar molt impressionant fins que em vaig adonar que el joc funcionava inicialment a una resolució de 640 x 480, de manera que no funcionaven més de 640 feixos al mateix temps.

La targeta gràfica de principis del 2018, com la Radeon RX 580 d’AMD o la GeForce 1080 Ti de Nvidia, certament complia els requisits de maquinari per a DXR, però fins i tot amb capacitats informàtiques, hi havia algunes idees errònies que serien prou potents per utilitzar DXR. amb sentit.

Això va canviar lleugerament a l'agost del 2018, quan Nvidia va llançar la seva nova arquitectura GPU, amb el nom en clau de Turing. La característica crítica d’aquest xip era una cosa que s’anomenava RT-Cores: unitats lògiques especials per accelerar la intercepció entre feixos i triangles i limitar els càlculs creuats de jerarquia de volum (BVH). Aquests dos processos són rutines que requereixen molt de temps per treballar on una llum interactua amb triangles que formen diversos objectes dins d’una escena. Atès que els nuclis RT són específics del processador Turing, l'accés a ells només es pot fer mitjançant l'API propietària de Nvidia.

El primer joc que admet aquesta funció és Battlefield V i EA Quan vam provar l’ús de DXR, ens va impressionar la millora dels reflexos d’aigua, vidre i metall del joc, però menys impressionats amb els èxits de rendiment posteriors:

Per ser justos, els pegats posteriors van millorar una mica, però es va produir (i encara hi ha) una gran disminució de la velocitat a la qual es representen els fotogrames. Fins al 2019, han aparegut alguns altres jocs que admeten aquesta API i realitzen el seguiment de raigs per a determinades parts d’un marc. Hem provat Migració del metro ve Tomb Raider Shadowi va trobar una història similar: DXR afectaria especialment la freqüència de fotogrames quan s'utilitzés àmpliament.

Aproximadament al mateix temps, UL Benchmarks va explicar Una prova de funcions DXR per a 3DMark:

Tanmateix, la nostra revisió dels jocs habilitats per a DXR i la prova de funcions 3DMark van demostrar que una cosa és certa sobre el traçat de raigs: el 2019, encara és un treball seriós fins i tot per als models de més de 1.000 dòlars del processador gràfic. Vol dir això que no tenim una alternativa real a la rasterització?

Les funcions més recents de la tecnologia de gràfics 3D per a consumidors solen ser molt cares i el suport inicial de les noves funcions de l’API pot ser bastant irregular o lent (tal i com trobem) Quan vam provar Max Payne 3 En una sèrie de versions de Direct3D cap al 2012), aquesta última sol ser deguda a que els desenvolupadors de jocs intenten incloure el màxim nombre de funcions avançades possibles, de vegades amb una experiència limitada.

Tanmateix, quan els ombres de vèrtexs i píxels, la tessel·lació, la representació HDR i l’oclusió ambiental de l’espai de la pantalla eren força exigents, només aptes per a GPU de gamma alta, el seu ús ara és habitual en els jocs i és compatible amb una àmplia varietat de targetes gràfiques. El mateix passarà amb el traçat de raigs i amb el temps donat, es convertirà en un altre paràmetre de detalls habilitat per defecte per a la majoria d’usuaris.

Alguns pensaments finals

Així doncs, hem arribat al final de la nostra segona immersió profunda, on aprofundim en el món dels gràfics en 3D. Vam veure com els racons dels models i els mons es canvien del 3D i es transformen en una imatge plana en 2D. Hem vist com s’ha de tenir en compte la configuració del camp de visió i quin efecte produeixen. S'ha explorat el procés de pixelació d'aquests racons i hem acabat amb una breu mirada a un procés alternatiu a la rasterització.

Com abans, no podíem cobrir-ho tot i no podríem fer una ullada a alguns detalls aquí i allà: al cap i a la fi no és un llibre de text! Tot i això, esperem que hagueu après una mica més pel camí i una nova fascinació per als programadors i enginyers que realment dominin les matemàtiques i les ciències necessàries per aconseguir tot això en els vostres títols 3D preferits.

Estarem encantats de respondre les vostres preguntes, així que no dubteu a publicar el nostre camí a la secció de comentaris. Fins al següent.

Crèdit masthead: Resum de la trama amb impressió monocroma per Aleksei Deep