| Mesaj |
Info autor |
Postat la 09 Apr 2008 00:31:51 Subiect: < fara subiect >
|
|
|
raicuandi info:
|
raicuandi:
Am testat editorul meu pe Vista, si se pare ca fiindca pe Vista fiecare fereastra rendeaza in buferu ei (tehnic o textura probabil), nu cum faceau inainte direct pe ecran, a disparut problema de care vorbeam acum 1-2 saptamani, cu rendat in off-screen etc.etc., pt ca atunci cand o fereastra trece peste a mea, nu trebuie sa mai rendeze din nou, starea ferestrei a ramas in buferu' de la Vista. Nu am intrat in detaliile tehnice cu interfata de la Vista, dar cica face cam asa. Anyhoo, o alta surpriza placuta a fost cat de rapid se deschid programele, versus hardware asemanator (tot 2GB RAM) pe XP. Nice 
Method 2: Move Your Mouse Pointer If you move your mouse pointer continuously while the data is being returned to Microsoft Excel, the query may not fail. Do not stop moving the mouse until all the data has been returned to Microsoft Excel.
|
Status:
Înregistrat pe: 24 Mar 2007 21:02:40
Vârsta: 22 ani
Mesaje: 514
Locatie: Adelaide, Australia
Programator
|
| |
Postat la 09 Apr 2008 13:02:51 Subiect: < fara subiect >
|
|
|
Rimio info:
|
Rimio:
Nice, dar nush daca e chiar asa, cu buffer separat. Gandeste-te cata memorie (video si/sau RAM) mananca numai trei ferestre maximizate. Gandeste-te ca ai 10 (un scenariu destul de des) si o sa vezi cata memorie ar trebui sa ai pe sistem. Cred ca are vreun spiel, adica pe unele le deseneaza direct si pe unele nu ... or something ...
If at first you don't succeed, you fail.
|
Status:
Înregistrat pe: 24 Mar 2007 21:50:44
Vârsta: 23 ani
Mesaje: 794
Locatie: Pitesti, Arges
Programator
|
| |
Postat la 09 Apr 2008 13:44:02 Subiect: < fara subiect >
|
|
|
raicuandi info:
|
raicuandi:
Vista papa 700MB cand porneste, cel putin la mine. Insa e mult mai rapid si mai 'smooth' decat XP..  Ajuta si RAM-ul acela platit ca sa nu mai arunci CPU aiurea. (ce ma costa 40MB = 1280x800 * 10 ferestre maximizate * 4bytes per pixel cand am 2GB, si 256MB vram? Vine un amarat de 2% din RAM  )
Method 2: Move Your Mouse Pointer If you move your mouse pointer continuously while the data is being returned to Microsoft Excel, the query may not fail. Do not stop moving the mouse until all the data has been returned to Microsoft Excel.
|
Status:
Înregistrat pe: 24 Mar 2007 21:02:40
Vârsta: 22 ani
Mesaje: 514
Locatie: Adelaide, Australia
Programator
|
| |
Postat la 09 Apr 2008 13:47:35 Subiect: < fara subiect >
|
|
|
Rimio info:
|
Rimio:
Hmm. Ma asteptam ca cifra sa fie mai ... mare  . My bad, then.
If at first you don't succeed, you fail.
|
Status:
Înregistrat pe: 24 Mar 2007 21:50:44
Vârsta: 23 ani
Mesaje: 794
Locatie: Pitesti, Arges
Programator
|
| |
Postat la 11 Apr 2008 14:26:19 Subiect: < fara subiect >
|
|
|
raicuandi info:
|
raicuandi:
Method 2: Move Your Mouse Pointer If you move your mouse pointer continuously while the data is being returned to Microsoft Excel, the query may not fail. Do not stop moving the mouse until all the data has been returned to Microsoft Excel.
|
Status:
Înregistrat pe: 24 Mar 2007 21:02:40
Vârsta: 22 ani
Mesaje: 514
Locatie: Adelaide, Australia
Programator
|
| |
Postat la 03 May 2008 04:40:46 Subiect: < fara subiect >
|
|
|
raicuandi info:
|
raicuandi:
So, yeah. Cg. Acum ma duc si eu sa ma uit ce e pe acolo...
Method 2: Move Your Mouse Pointer If you move your mouse pointer continuously while the data is being returned to Microsoft Excel, the query may not fail. Do not stop moving the mouse until all the data has been returned to Microsoft Excel.
|
Status:
Înregistrat pe: 24 Mar 2007 21:02:40
Vârsta: 22 ani
Mesaje: 514
Locatie: Adelaide, Australia
Programator
|
| |
Postat la 09 May 2008 15:54:40 Subiect: < fara subiect >
|
|
|
raicuandi info:
|
raicuandi:
In capitolul 6 din Cg Tutorial (link in postul de dinainte) am dat peste un articol care explica mura-in-gura cum se fac animatiile pe skelet intr-un vertex shader. Pana la urma iese ca e defapt mult mai simplu decat am crezut. Toata treaba consta in faptul ca nu mai inmultesti pozitia vectorului cu aceasi singura matrice (world view proj), ci cu o anumita matrice (defapt tot in spatiul world view proj, doar ca pregatita de inainte de CPU), in functie de vertex, acea matrice face parte dintr-o lista de matrici 3x4, fiecare reprezentand defapt cate un os din schelet. Si ca sa nu iasa urat ca naiba, fiecare vertex e inmultit cu pana la 4 matrici, si se face blending intre rezultate. (se pot pune si mai mult de 4, dar nu prea vad rostul) Fiecare vertex are setat care matrice/os sa foloseasca atunci cand tot obiectul este creat in programul preferat, skinning/rigging/whatever. (Max/Maya etc.) M-am speriat putin cand am vazut ca exemplul seteaza numarul de matrici (adica numarul de oase din schelet) la 24, un pic cam mic. Imi trebuie doar putin mai mare, (vre-o 30) asa ca am dat fuga pe MSDN unde am aflat ca un vertex shader modelul 2 si 3 poate tine 256 constante float4, adica aproximativ 80 de matrici 3x4. 80 de oase sunt mai mult decat suficient, insa exemplul Cg nu zice nimic de scalare. Am citit si despre SM4 din curiozitate, si in noua arhitectura (cu cbuffer), pot sa bag la constante pana ma plictisesc..  Insa ce mi-a atras atentia si mai mult e modul cum sunt 'partajate'. (treaba cu cele pana la 16 cbuffers, si ca poti sa faci update numai la buferele care trebuie, nu la toate; iar chestia cu StreamOut suna de-a dreptul criminal de misto) Am carpit o idee in 5 minute pt a avea si scaling, insa nu stiu daca merge, nu am incercat inca: trimit scalarea ca un float3 intr-o constanta la vertex shader, si multiplic pozitia object space a fiecarui vertex cu scalarea, apoi inmultesc cu matricile oaselor, iar la normale, inmultesc desigur doar cu matricile oaselor. Ma astept sa mearga, dar, ehhh...  O alte chestie care ma lasat nedumerit este "daca artistu' vrea mai putin de 4 weight-uri pe un anumit vertex?". Spre exemplu, pt un skelet uman, nu vad de ce vertecsii de la cot ar trebui sa aiba mai mult de 2 weight-uri, sau cum ar putea avea 3 sau 4. Probabil ca un 'if' in acel loop ar trebui sa ma scape de problema asta: Cod sursă: if (weight[i] != HANDS_OFF) Deocamdata numai asta imi vine in minte. So yeah, vertex skinning.  Mi-am luat o caramida de pe suflet...  Acum cu ce ma lupt este MAXScript. (trebuie sa il folosim pe asta intern deocamdata) Il iau dupa tutoriale. Limbajul in sine e usor de inteles dupa ce ai citit juma de ora ce si cum sta, e mult in genul Python ca 'feel', insa nu am aflat nimic inca de API.
Method 2: Move Your Mouse Pointer If you move your mouse pointer continuously while the data is being returned to Microsoft Excel, the query may not fail. Do not stop moving the mouse until all the data has been returned to Microsoft Excel.
|
Status:
Înregistrat pe: 24 Mar 2007 21:02:40
Vârsta: 22 ani
Mesaje: 514
Locatie: Adelaide, Australia
Programator
|
| |
Postat la 09 May 2008 16:01:49 Subiect: < fara subiect >
|
|
|
Rimio info:
|
Rimio:
Deci nu mai faci inmultire la sfarsit cu world matrix? Ca daca faci, poti baga scalarea acolo, fara sa o faci tu manual.
If at first you don't succeed, you fail.
|
Status:
Înregistrat pe: 24 Mar 2007 21:50:44
Vârsta: 23 ani
Mesaje: 794
Locatie: Pitesti, Arges
Programator
|
| |
Postat la 09 May 2008 16:58:44 Subiect: < fara subiect >
|
|
|
raicuandi info:
|
raicuandi:
Nu sunt sigur ca am inteles ce vrei sa spui... cum adica sa "bag"... ahh, cred ca te referi, nu sunt sigur ca nu prea cunosc matricile, ca scalarea e cumva ultima linie dintr-o matrice 4x4, si tot ce trebuie sa fac este defapt sa copiez scalarea acolo, nu trebuie sa mai inmultesc? Adica: Cod sursă:
float4x4 m = float4x4( linia_1_a_matricii3x4_a_osului,
linia_2_a_matricii3x4_a_osului,
linia_3_a_matricii3x4_a_osului,
float4(0, 0, 0, 1)
);
OUT.normal = mul(IN.normal, m);
m[3] = constanta_float4_scalare; // sau ma rog, oricum se scrie un vector pe ultima linie
OUT.position = mul(IN.position, m);
Asa? In loc de: Cod sursă:
float3x4 m = float3x4( linia_1_a_matricii3x4_a_osului,
linia_2_a_matricii3x4_a_osului,
linia_3_a_matricii3x4_a_osului,
);
OUT.normal = mul(IN.normal, m);
float4 pos = float4(mul(IN.position, constant_scale), 1);
OUT.position = mul(pos, m);
Method 2: Move Your Mouse Pointer If you move your mouse pointer continuously while the data is being returned to Microsoft Excel, the query may not fail. Do not stop moving the mouse until all the data has been returned to Microsoft Excel.
|
Status:
Înregistrat pe: 24 Mar 2007 21:02:40
Vârsta: 22 ani
Mesaje: 514
Locatie: Adelaide, Australia
Programator
|
| |
Postat la 09 May 2008 17:04:34 Subiect: < fara subiect >
|
|
|
Rimio info:
|
Rimio:
Nu, scalarea nu e acolo  . Ce voiam eu sa zic e ca nu inteleg unde inmultesti tu vectorul cu world matrix. Ce ai facut acolo merge, daca modelul sta numai in origine. Daca vrei sa-l faci sa se miste pe la mama dracu trebuie sa mai inmultesti pozitia cu worldu', in care poti baga foarte frumos scalarea.
If at first you don't succeed, you fail.
|
Status:
Înregistrat pe: 24 Mar 2007 21:50:44
Vârsta: 23 ani
Mesaje: 794
Locatie: Pitesti, Arges
Programator
|
| |
Postat la 09 May 2008 17:23:11 Subiect: < fara subiect >
|
|
|
raicuandi info:
|
raicuandi:
Ordinea pt geometrie statica vine asa:
world * view * proj
si pui rezultatul intr-o constanta, care e folosita de-a lungul executiei intregului shader, nu mai e recalculata degeaba la fiecare vertex.
Daca nu ma insel, la vertex skinning, ca oricum trebuie sa inmultesti matricile alea ca sa iti iasa hierarcia, le mai inmultesti inainte pe CPU si cu world*view*proj, asa ca, sper, formula e asa:
bone_matrix * world * view * proj
Pt fiecare os, si astea (rezultatele) le bagi in constante.
Ma rog, o sa se clarifice toate mizerile astea din teorie imediat ce termin de scris un exportor pt Max. Good 'ol trial and error...
Method 2: Move Your Mouse Pointer If you move your mouse pointer continuously while the data is being returned to Microsoft Excel, the query may not fail. Do not stop moving the mouse until all the data has been returned to Microsoft Excel.
|
Status:
Înregistrat pe: 24 Mar 2007 21:02:40
Vârsta: 22 ani
Mesaje: 514
Locatie: Adelaide, Australia
Programator
|
| |
Postat la 09 May 2008 19:20:34 Subiect: < fara subiect >
|
|
|
Rimio info:
|
Rimio:
Paaai e o idee proasta sa le inmultesti pe CPU, pentru ca oricum se vor schimba la fiecare randare a modelului si pe langa povara de pe CPU o sa mai trimiti si matrici la greu spre placa. LE: Then again, oricum o sa trimiti matrici la greu spre placa, deci nu prea sta in picioare argumentul meu  . Keep me posted, n-am facut pana acum animatie din vertex shader, deci sunt curios.
Ultima editare efectuată de Rimio pe 09 May 2008 19:23:34; 1 editări în total
If at first you don't succeed, you fail.
|
Status:
Înregistrat pe: 24 Mar 2007 21:50:44
Vârsta: 23 ani
Mesaje: 794
Locatie: Pitesti, Arges
Programator
|
| |
Postat la 09 May 2008 23:20:26 Subiect: < fara subiect >
|
|
|
raicuandi info:
|
raicuandi:
Idea proasta la aia era ca defapt bagi scalare in acea matrice, si face muci normala cand o inmultesti cu matricea aia. Vezi ca era de curand un thread care zice despre asta... cel in care a explicat Dark ce e cu inversa transpusa a unei matrici. Btw, m-am uitat aici: http://www.gamespp.com/tutorials/matrixTransformationTutorial02.html Tipul asta explica foarte clar ce e defapt o matrice de transformare 
Method 2: Move Your Mouse Pointer If you move your mouse pointer continuously while the data is being returned to Microsoft Excel, the query may not fail. Do not stop moving the mouse until all the data has been returned to Microsoft Excel.
|
Status:
Înregistrat pe: 24 Mar 2007 21:02:40
Vârsta: 22 ani
Mesaje: 514
Locatie: Adelaide, Australia
Programator
|
| |
Postat la 09 May 2008 23:30:09 Subiect: Re:
|
|
|
Rimio info:
|
Rimio:
Well I did that too, but you didn't give a flying shit about it  .
If at first you don't succeed, you fail.
|
Status:
Înregistrat pe: 24 Mar 2007 21:50:44
Vârsta: 23 ani
Mesaje: 794
Locatie: Pitesti, Arges
Programator
|
| |
Postat la 10 May 2008 00:45:05 Subiect: < fara subiect >
|
|
|
raicuandi info:
|
raicuandi:
DUPAIA vazusem cum stau lucrurile intr-o matrice de transformare...  Insa e 7 dimineata si capul meu e varza. Ma rog, "we'll cross that bridge when we get to it"..  Cand ai incercat tu sa-mi explici acu vre-un an parca mi-ai zis unde vine fiecare rotatie pt fiecare axa blablabla m-ai lasat la fel de nedumerit ca inainte sa intreb..  Idea proasta la aia era ca defapt bagi scalare in acea matrice, si se duce aiurea normala cand o inmultesti cu matricea aia. Vezi pe threadul "Intrebare HLSL" de la Grafica, cel in care a explicat Dark ce e cu inversa transpusa a unei matrici. Plus ca daca nu le faci pe CPU, o sa le faci pe GPU din nou pt fiecare vertex. Incerc weekendul asta sa trec o animatie din Max intr-un program D3D.
Method 2: Move Your Mouse Pointer If you move your mouse pointer continuously while the data is being returned to Microsoft Excel, the query may not fail. Do not stop moving the mouse until all the data has been returned to Microsoft Excel.
|
Status:
Înregistrat pe: 24 Mar 2007 21:02:40
Vârsta: 22 ani
Mesaje: 514
Locatie: Adelaide, Australia
Programator
|
| |