játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5511
FZoli:    4894
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2529

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2198
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1654
syam:    1491
Korábbi postok
> 1 < [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [22]
gymisi - Törzstag | 212 hsz       Online status #34996   2006.11.03 00:56 GMT+1 óra  
Idézet
kuzanth :
Közben azon gondolkodtam, hogy oké, hogy eltolok egy normál rendert, majd ezt elmentem egy textúrába...de az ezt követő sima render és bloomos render hogy fog megjelenni egymáson ??? Mert elvileg olyan bloomot már sikerült csinálni, ami csak a modellen belül volt látható...vagy nem? Ez végülis olyan, nem? Mármint objektumon belüli bloom...



Az egész scene-t egy textúrába lerendereled, majd erre a textúrára alkalmazod a bloomot, és mint egy sima téglalapot kirajzolod a képernyőre, nagy vonalakban ezt kéne csinálnod, de ezt már mások is írták előttem...

   
Jedi - Tag | 175 hsz       Online status #34986   2006.11.02 15:35 GMT+1 óra  
Idézet
kuzanth :
Közben azon gondolkodtam, hogy oké, hogy eltolok egy normál rendert, majd ezt elmentem egy textúrába...de az ezt követő sima render és bloomos render hogy fog megjelenni egymáson ???


Ha már megvan a textúrád, akkor egyszerűen blend-eled a render-t a textúrával és készen is van.

   
Kuz - Törzstag | 4455 hsz       Online status #34946   2006.11.02 12:18 GMT+1 óra  
Közben azon gondolkodtam, hogy oké, hogy eltolok egy normál rendert, majd ezt elmentem egy textúrába...de az ezt követő sima render és bloomos render hogy fog megjelenni egymáson ??? Mert elvileg olyan bloomot már sikerült csinálni, ami csak a modellen belül volt látható...vagy nem? Ez végülis olyan, nem? Mármint objektumon belüli bloom...
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Kuz - Törzstag | 4455 hsz       Online status #34722   2006.11.01 09:52 GMT+1 óra  
Menjünk már sorba, plíz ! Ez a vb létrehozás jó?

Kód:
//Az osztály inic-je végén
...
vb = new VertexBuffer(dev, 4 * System.Runtime.InteropServices.Marshal.SizeOf(typeof(D3DPOINTERVERTEX)), Usage.None,
                            PointVertexFVF, Pool.Default);
                        D3DPOINTERVERTEX[] d3dpv = (D3DPOINTERVERTEX[])vb.Lock(0, typeof(D3DPOINTERVERTEX), LockFlags.None, 4);
                        d3dpv[0].color = d3dpv[1].color = d3dpv[2].color = d3dpv[3].color = 0x43F;
                        d3dpv[0].p = new Vector4(0.0f, 767.0f, 0.0f, 1.0f);
                        d3dpv[0].tu = 0.0f; d3dpv[0].tv = 1.0f;
                        d3dpv[1].p = new Vector4(0.0f, 0.0f, 0.0f, 1.0f);
                        d3dpv[1].tu = 0.0f; d3dpv[1].tv = 0.0f;
                        d3dpv[2].p = new Vector4(1023.0f, 767.0f, 0.0f, 1.0f);
                        d3dpv[2].tu = 1.0f; d3dpv[2].tv = 1.0f;
                        d3dpv[3].p = new Vector4(1023.0f, 0.0f, 0.0f, 1.0f);
                        d3dpv[3].tu = 1.0f; d3dpv[3].tv = 0.0f;
                        vb.Unlock();
...
//Mint különálló struktúra

public struct D3DPOINTERVERTEX
        {
            public Vector4 p;
            public int color;
            public float tu, tv;
        };
        const VertexFormats PointVertexFVF = (VertexFormats.PositionW | VertexFormats.Diffuse | VertexFormats.Texture1);
...
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
gymisi - Törzstag | 212 hsz       Online status #34719   2006.11.01 09:44 GMT+1 óra  
Nézd meg újra, hogy biztosan jó textúrát adsz-e át..

   
Kuz - Törzstag | 4455 hsz       Online status #34717   2006.11.01 09:32 GMT+1 óra  
"mintha csak azt az 1 textúrát bloomolnád, és nem scene-t"

Igen engem is ez zavar, de sztem már az alapoktól kezdve rossz a kód. Főleg a vertexbufferes részt kéne átnézni, ill a PP rendert (mármint amikor már megvan a RendertargetTexture, és azt kell felhúzni a quad-ra). Sztem ott lesz a bibi.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Kuz - Törzstag | 4455 hsz       Online status #34716   2006.11.01 09:22 GMT+1 óra  
You don't have permission to access /video2/images/terms2k5/bloom_scpt.jpg on this server.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
gymisi - Törzstag | 212 hsz       Online status #34715   2006.11.01 09:12 GMT+1 óra  
Bloomot még nem írtam, de sztem itt shaderrel lesz a bibi( csak tipp ), tehát bloomolt dolgoknak "tündökölnie" kéne( mint itt ), nem?; de nálad nem tündököl, tehát mintha csak azt az 1 textúrát bloomolnád, és nem scene-t, máshogy fogalmazva: mintha nem pp effect lenne, hanem csak a gömb textjére lenne a bloom shader ráeresztve, nem pedig magára a jelenetre(amit egy textúrába lerenderelsz), ha nem így lenne, akkor TPG pls javíts ki

   
gymisi - Törzstag | 212 hsz       Online status #34702   2006.11.01 05:57 GMT+1 óra  
Kuzanth! pm ment!

   
Kuz - Törzstag | 4455 hsz       Online status #34682   2006.11.01 04:26 GMT+1 óra  
Jelenleg itt tartok. Ez már hasolít a helyes megoldásra? Kezdek kicsit belezavarodni a dologba ... Itt a kód.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Kuz - Törzstag | 4455 hsz       Online status #34374   2006.10.30 11:55 GMT+1 óra  
Úgy rémlik egyszer beszéltem vele, és azt mondta, hogy nem foglalkozott ilyennel...Na majd msn-en, ha erre jár!
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
TPG - Tag | 3402 hsz       Online status #34373   2006.10.30 11:53 GMT+1 óra  
Idézet
kuzanth :
Próbáltam megérteni az SDK-s C++ PP progit, de vagy én vagyok nagyon hülye, vagy csak direkt bonyolultan írták meg, de én mindig elvesztem a fonalat ... No meg eleve sztem gáz ez a managed vs. unmanaged programozás (lásd vertexbuffer használat), mert sztem itt lesz a hiba. A baj csak az, hogy lövésem sincs erről a vb használatról. Megnéztem a vb tutorialt is, de ott meg nem ilyen formában használják a dolgokat. Tényleg senki nem csinált még C#-ban PP-t???

"Hogy kellene kinéznie ha rendesen működne?" - Passz. Feltételezem az a blur-ös kép a gömbön a végeredményt sejteti, de ezt nem tudom megmondani, amíg legalább egyszer nem látom a végeredményt rendes körülmények között...


Talán GyMisi tudna segíteni MDX-ben, ő vágja mint a fene de nekem a kép alapján úgy tűnt hogy már csak az effect fájl körül lehetnek galibák (de ez nem biztos csak olyan megérzés ).
Reality is almost always wrong. - House

   
Kuz - Törzstag | 4455 hsz       Online status #34371   2006.10.30 11:43 GMT+1 óra  
Próbáltam megérteni az SDK-s C++ PP progit, de vagy én vagyok nagyon hülye, vagy csak direkt bonyolultan írták meg, de én mindig elvesztem a fonalat ... No meg eleve sztem gáz ez a managed vs. unmanaged programozás (lásd vertexbuffer használat), mert sztem itt lesz a hiba. A baj csak az, hogy lövésem sincs erről a vb használatról. Megnéztem a vb tutorialt is, de ott meg nem ilyen formában használják a dolgokat. Tényleg senki nem csinált még C#-ban PP-t???

"Hogy kellene kinéznie ha rendesen működne?" - Passz. Feltételezem az a blur-ös kép a gömbön a végeredményt sejteti, de ezt nem tudom megmondani, amíg legalább egyszer nem látom a végeredményt rendes körülmények között...
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
TPG - Tag | 3402 hsz       Online status #34122   2006.10.28 15:30 GMT+1 óra  
Idézet
kuzanth :
Az MDXInfo-n nem találtam használható anyagot (egyébként már jártam ott korábban is). Viszont kijavítottam egy-két dolgot, de még mindig hibás valami. A hibáról itt egy kép, a .cs fileom pedig letölthető innen. Megtennétek, hogy segítetek kijavítani a hibát? Előre is köszi !


Hogy kellene kinéznie ha rendesen működne? Az effect file-ban biztos nincs hiba? A file-t amit linkeltél átfutottam és nem láttam benne hibát (de azt még mindig nem értem miért a renderelés közben hozod létre az RT-t miért nem előtte, a textúrakészítés lassú dolog).
Reality is almost always wrong. - House

   
TPG - Tag | 3402 hsz       Online status #34121   2006.10.28 15:19 GMT+1 óra  
Idézet
TheProGamer :
Idézet
MaNiAc :
Értem én, csak ez így tetves lassú... egyrészt a másolás, másrészt az AA miatt... Megér ennyit az AA?


Én magam nem mértem a különbséget sebességben a kettő közt, sőt fel sem tűnt hogy nagyon lassabb lenne. A Gamedev.net-en is azt írják hogy nem különösen lassabb. És eleve az ötletet egy nVidia doksiban olvastam ők meg nem ajánlanák ha lassú lenne (van még néhány megoldás erre a problémára, sztem nem véletlen foglalkoztak pont ezzel). A másik dolog pedig az hogy a StretchRect() amivel a másolást végzem DX9 alatt már HW-s gyorsítással dolgozik. Tehát a másolás részt azért rendes sebességgel el lehet intézni, az AA meg tényleg lassít, arra nincs gyógyír.


Kis kiegészítés: most nézem hogy a Source engine-ben is nem egyszer használják ezt a trükköt (olyan helyeken ahol nem is lenne feltétlen szükséges) úgyhogy tényleg nem lehet baj a sebességével.
Reality is almost always wrong. - House

   
Kuz - Törzstag | 4455 hsz       Online status #33977   2006.10.27 02:02 GMT+1 óra  
Nos? Senki? Ne hagyjatok magamra!
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Kuz - Törzstag | 4455 hsz       Online status #33781   2006.10.26 01:03 GMT+1 óra  
Az MDXInfo-n nem találtam használható anyagot (egyébként már jártam ott korábban is). Viszont kijavítottam egy-két dolgot, de még mindig hibás valami. A hibáról itt egy kép, a .cs fileom pedig letölthető innen. Megtennétek, hogy segítetek kijavítani a hibát? Előre is köszi !
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
TPG - Tag | 3402 hsz       Online status #32741   2006.10.18 08:49 GMT+1 óra  
Idézet
kuzanth :
Idézet
kuzanth :
Tudnál adni egy teljes forráskódot, ahol mondjuk egy kocka van bloomolva?



Csak emlékeztetőül...


Az mdxinfo-n nézzél körül tuti találsz.
Reality is almost always wrong. - House

   
Kuz - Törzstag | 4455 hsz       Online status #32731   2006.10.18 07:56 GMT+1 óra  
Idézet
kuzanth :
Tudnál adni egy teljes forráskódot, ahol mondjuk egy kocka van bloomolva?



Csak emlékeztetőül...
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
TPG - Tag | 3402 hsz       Online status #32611   2006.10.17 08:04 GMT+1 óra  
Idézet
syam :
mj: a bloomhoz nem ajánlanak fsaa-t.
sőt ha nagyobb a postprocess textured mint a felbontás az automatikus aa-zik


Jah ha nagyobb textúrát küldesz ki a képernyőre mint a felbontás annak is ilyen hatása van, naggyából a supersampling is így működik. ("Supersampling works by simply scaling up the resolution of the frame buffer. For example, if you're working in a 800x600 screen resolution, then (for 4X supersampling) it uses a 1600x1200 buffer internally."-devmaster.net) És a manapság használt multisampling gyorsabb a supersampling-nél.

Az igazi bloomhoz meg tényleg nem ajánlanak AA-t mivel a mostani nV kártyák pl képtelenek lebegőpontos surface/texture-el AA-zni. (Asszem az X1***-es ATI karik már tudnak de magam még sohasem láttam.)
Reality is almost always wrong. - House

   
syam - Törzstag | 1491 hsz       Online status #32572   2006.10.17 02:18 GMT+1 óra  
aham vmi ilyesmire
például így néz ki nálam
512*512 -> 640*480
a 512->640 miatt annyira nem látványos, de így sem nagyon kockás
alias aalberik
   
Kuz - Törzstag | 4455 hsz       Online status #32567   2006.10.17 01:19 GMT+1 óra  
"nagyobb a postprocess textured..."

Erre gondolsz?

Kód:
Texture rendertargettexure = new Texture(dev, dev.DisplayMode.Width, dev.DisplayMode.Height, 1, Usage.RenderTarget, Format.X8R8G8B8,
                    Pool.Default);

Mert ez ugye pont akkora textúra lesz, mint a felbontás .
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
syam - Törzstag | 1491 hsz       Online status #32565   2006.10.17 01:12 GMT+1 óra  
mj: a bloomhoz nem ajánlanak fsaa-t.
sőt ha nagyobb a postprocess textured mint a felbontás az automatikus aa-zik
alias aalberik
   
Kuz - Törzstag | 4455 hsz       Online status #32561   2006.10.17 00:38 GMT+1 óra  
Tudnál adni egy teljes forráskódot, ahol monduk egy kocka van bloomolva?
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
TPG - Tag | 3402 hsz       Online status #32475   2006.10.16 08:01 GMT+1 óra  
Idézet
MaNiAc :
Értem én, csak ez így tetves lassú... egyrészt a másolás, másrészt az AA miatt... Megér ennyit az AA?


Én magam nem mértem a különbséget sebességben a kettő közt, sőt fel sem tűnt hogy nagyon lassabb lenne. A Gamedev.net-en is azt írják hogy nem különösen lassabb. És eleve az ötletet egy nVidia doksiban olvastam ők meg nem ajánlanák ha lassú lenne (van még néhány megoldás erre a problémra, sztem nem véletlen foglalkoztak pont ezzel). A másik dolog pedig az hogy a StretchRect() amivel a másolást végzem DX9 alatt már HW-s gyorsítással dolgozik. Tehát a másolás részt azért rendes sebességgel el lehet intézni, az AA meg tényleg lassít, arra nincs gyógyír.
Reality is almost always wrong. - House

   
Kuz - Törzstag | 4455 hsz       Online status #32471   2006.10.16 06:45 GMT+1 óra  
Hát én pl az Oblivion-ban majdnem agyvérzést kaptam, amikor AA nélkül kellett menni. Szóval sztem megéri. Egyébként tényleg k. sokat lassít.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
MaNiAc - Szerkesztő | 1735 hsz       Online status #32469   2006.10.16 06:27 GMT+1 óra  
Értem én, csak ez így tetves lassú... egyrészt a másolás, másrészt az AA miatt... Megér ennyit az AA?
Dare to imagine!
http://www.insaneidea.hu
   
TPG - Tag | 3402 hsz       Online status #32467   2006.10.16 05:46 GMT+1 óra  
Idézet
MaNiAc :
Idézet
1. textúrázó shaderes render
2. Textúra létrehozás, hogy bele rendereljünk
+ getsurfacelevel + stretch, meg ami kell
3. ZBuffer kikapcs
4. A bloom shadernek átpasszintom ezt a textúrát és renderelem a quadot.
5. Egyéb render (text kiírás, stb...)


Na de akkor itt mikor renderelsz a textúrára?

TPG: Az első két lépés egy "kicsit eltér" attól, ahogy én írtam... Ha jól emléxem, a DX már ősidők óta direktbe a textúrára renderel nem? (Mert ez a módszer, az ős-opengl r2t-re emlékeztet, ahol először a framebufferbe rendereltek, aztán onnan kimásolták a képet, majd törölték a framebuffer-t, etc...)


Igen ez a trükk az egészben. Az alap PP-nél konkrétan a textúrát állítod be Render Target-nek, abba renderelsz, rádobod a quadra a shaderrel és újra rendereled a backbuffer-be. Viszont ennek az a baja hogy nem lehet vele AA-t használni mivel AA-s textúrát nem lehet létrehozni. Itt jön a csavar az egészben. A jelenetet AA-val a backbufferben rendereljük majd a buffer komplett tartalmát átmásoljuk a textúra 0. szintjére és innen ugyanúgy megy az egész mint előtte. Így már megy az AA a PP-vel együtt.
Reality is almost always wrong. - House

   
MaNiAc - Szerkesztő | 1735 hsz       Online status #32466   2006.10.16 05:41 GMT+1 óra  
Na ennyire nem vagyok azert benne az MDX-ben A StretchRectangle() mit csinal pontosan?
Dare to imagine!
http://www.insaneidea.hu
   
Kuz - Törzstag | 4455 hsz       Online status #32465   2006.10.16 05:34 GMT+1 óra  
Kód:
int passes = effect2.Begin(0);

                for (int ef = 0; ef < passes; ef++)
                {
                    effect2.SetValue("ModelWorld", mat * view * proj);
                    effect2.SetValue("meshtexture", meshTexture);

                    effect2.BeginPass(ef);
                    o.mesh.DrawSubset(0);
                    effect2.EndPass();
                }
                effect2.End();
                hiba = "drawsubset";
                hiba = "1.endscene";
                dev.EndScene();
                #endregion

                   Texture rendertargettexure = new Texture(dev, dev.DisplayMode.Width, dev.DisplayMode.Height, 1, Usage.RenderTarget, Format.X8R8G8B8,
                    Pool.Default);
                oldrendersurface = dev.GetRenderTarget(0);
                   rendersurface = rendertargettexure.GetSurfaceLevel(0);
                   dev.StretchRectangle(oldrendersurface, renderrect, rendersurface, renderrect, TextureFilter.None);


Elvileg itt megy a textúrába a renderelt kép. Az effect csak egy sima textúrázó shader, semmi több.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
MaNiAc - Szerkesztő | 1735 hsz       Online status #32464   2006.10.16 05:08 GMT+1 óra  
Idézet
1. textúrázó shaderes render
2. Textúra létrehozás, hogy bele rendereljünk
+ getsurfacelevel + stretch, meg ami kell
3. ZBuffer kikapcs
4. A bloom shadernek átpasszintom ezt a textúrát és renderelem a quadot.
5. Egyéb render (text kiírás, stb...)


Na de akkor itt mikor renderelsz a textúrára?

TPG: Az első két lépés egy "kicsit eltér" attól, ahogy én írtam... Ha jól emléxem, a DX már ősidők óta direktbe a textúrára renderel nem? (Mert ez a módszer, az ős-opengl r2t-re emlékeztet, ahol először a framebufferbe rendereltek, aztán onnan kimásolták a képet, majd törölték a framebuffer-t, etc...)
Dare to imagine!
http://www.insaneidea.hu
   
Kuz - Törzstag | 4455 hsz       Online status #32461   2006.10.16 05:04 GMT+1 óra  
Hát igazság szerint én a te cikked alapján dolgoztam, és nem nagyon láttam mást a vb-vel kapcsolatban, csak hogy fel van töltve inicnél. Nem is teljesen értettem a cikkedenek ezen részét (egyébként ha jól tudom te eleve nem tömbbként adod meg a D3DPOINTVERTEX-et). Szóval azt a vb-s részt szívesen meghallgatnám újra, mert ezek szerint nem értettem meg a cikked ... A VS-es gondolat tényleg gyanus...Átírom!
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
TPG - Tag | 3402 hsz       Online status #32459   2006.10.16 04:50 GMT+1 óra  
Idézet
kuzanth :
Közben az is eszembe jutott, hogy a D3DPOINTERVERTEX-et sem lehetett egy az egyben átírni úgy, ahogy TheProGamer mondta!!!


Én megadtam az én FVF-emet, az átalakítás már a te feladatod mivel én jelenleg olvasás és konzolos progik írása szinten vágom a C#-ot, az MDX elég messze áll még tőlem (azért megérteni megértem az MDX kódot). Egyébként átfutottam a kódodon, és találtam pár gyanus dolgot. PL:post-process menetben nincsen vertex-shader mivel a quad már alap esetben a transoformált értékeket tartalmazza tehát nem kell mátrixokkal bántani. A másik számomra érdekes a VB feltöltése a quad-nál. Ott abba a tömbbe amibe dolgozol hogy kerülnek bele a vertexek adatai? Sztem nézz ennek utána, mert lehet hogy csak én vagyok hülye és nem értem de az is lehet hogy tényleg nem stimmel ott valami.
Reality is almost always wrong. - House

   
Kuz - Törzstag | 4455 hsz       Online status #32458   2006.10.16 04:41 GMT+1 óra  
Közben az is eszembe jutott, hogy a D3DPOINTERVERTEX-et sem lehetett egy az egyben átírni úgy, ahogy TheProGamer mondta!!!
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
TPG - Tag | 3402 hsz       Online status #32457   2006.10.16 04:39 GMT+1 óra  
Idézet
MaNiAc :
Nem úgy kéne, hogy az egészet rendereled egy textúrára (képernyőre nem), aztán bekapcsolod a bloom shader-t, majd a képernyőre teszel egy sima quad-ot, és végül arra ráhúzod az előbb legyártott textúrát?


Jah, de ő is majdnem ugyanezt mondja csak máshogy. Vagy nem? A kódban kb ez a menet működik ha jól láttam.
Reality is almost always wrong. - House

   
Kuz - Törzstag | 4455 hsz       Online status #32456   2006.10.16 04:39 GMT+1 óra  
Elvileg ezt csinálom, csak sztem nagyon bekavar az, hogy C++ -ban lehet előre meg nem adott méretű struktúra alapján vertexbuffert létrehozni. Azaz nem kell beállítani az értékeket, csak létrehozod a struktúrát, és azt már passzinthatod is a vb konstruktorába. A C# szól, hogy ez Unmanaged kódhoz vezet, ezért asszem nem is engedi. Egyébként ezt csinálom :
1. textúrázó shaderes render
2. Textúra létrehozás, hogy bele rendereljünk + getsurfacelevel + stretch, meg ami kell
3. ZBuffer kikapcs
4. A bloom shadernek átpasszintom ezt a textúrát és renderelem a quadot.
5. Egyéb render (text kiírás, stb...)
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
MaNiAc - Szerkesztő | 1735 hsz       Online status #32451   2006.10.16 04:29 GMT+1 óra  
Idézet
kuzanth :
Úgy értem, hogy amikor megvan a bloom effect, a végeredményt kell ráhúzni a quadra, nem? Tehát megy a sima render, felette meg a quad, amin már a bloomos effect van. Ha nem akkor félreértettem az egész PostP.-t....

Nem úgy kéne, hogy az egészet rendereled egy textúrára (képernyőre nem), aztán bekapcsolod a bloom shader-t, majd a képernyőre teszel egy sima quad-ot, és végül arra ráhúzod az előbb legyártott textúrát?

Elméletben ez lenne az összes, egyszerűbb shader-re épülő (mint pl a bloom) postprocess menete, legalábbis nagyvonalakban...
Dare to imagine!
http://www.insaneidea.hu
   
TPG - Tag | 3402 hsz       Online status #32447   2006.10.16 03:52 GMT+1 óra  
Idézet
kuzanth :
Szívesen elküldöm a kódot, ha az segít, bár elég...hogy is mondjam...csúnya a külalak (egyelőre csak azt akartam, h fusson, aztán majd utánna szépítgetem.). A teljes kód zippelve 160k, az *.ex-et át kell nevezni *.exe-re. Elvileg ez lesz az


Már vizsgálom.
Reality is almost always wrong. - House

   
Kuz - Törzstag | 4455 hsz       Online status #32441   2006.10.16 02:40 GMT+1 óra  
Szívesen elküldöm a kódot, ha az segít, bár elég...hogy is mondjam...csúnya a külalak (egyelőre csak azt akartam, h fusson, aztán majd utánna szépítgetem.). A teljes kód zippelve 160k, az *.ex-et át kell nevezni *.exe-re. Elvileg ez lesz az
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
TPG - Tag | 3402 hsz       Online status #32437   2006.10.16 02:21 GMT+1 óra  
Idézet
kuzanth :
Hát elvileg ez lett az eredménye az átiratnak . Valamit nagyon, de nagyon el......


Hmm egyenlőre próbálom felfogni mit ábrázol a kép, de nekem egyenlőre átkozottul ismerős valahonnan. Megpróbálom reprodukálni.
Reality is almost always wrong. - House

   
Kuz - Törzstag | 4455 hsz       Online status #32432   2006.10.16 01:45 GMT+1 óra  
Nézzük már meg a kódot, mert sztem zsír ugyanazt csinálom, mint ami a cikkben volt, de még mindig nem műkszik.

Kód:
...
//ez itt az osztály konstruktora

vb = new VertexBuffer(dev, 6*sizeof(float)+sizeof(uint), Usage.None, PointerVertexFVF, Pool.Default); //lehet, hogy itt lesz gond, mert C#-ban nem lehet előre meg nem határozott méretű vb-t létrehozni

D3DPOINTERVERTEX[] d3dpv = new D3DPOINTERVERTEX[4];
                        int[] array = new int[4];
                        vb.Lock(0, typeof(D3DPOINTERVERTEX), LockFlags.Discard, array);
                        d3dpv[0].color = d3dpv[1].color = d3dpv[2].color = d3dpv[3].color = 0xFFFFFFFF;
                        d3dpv[0].p = new Vector4(0.0f, 767.0f, 0.0f, 1.0f);
                        d3dpv[0].tu = 0.0f; d3dpv[0].tv = 1.0f;
                        d3dpv[1].p = new Vector4(0.0f, 0.0f, 0.0f, 1.0f);
                        d3dpv[1].tu = 0.0f; d3dpv[1].tv = 0.0f;
                        d3dpv[2].p = new Vector4(1023.0f, 767.0f, 0.0f, 1.0f);
                        d3dpv[2].tu = 1.0f; d3dpv[2].tv = 1.0f;
                        d3dpv[3].p = new Vector4(1023.0f, 0.0f, 0.0f, 1.0f);
                        d3dpv[3].tu = 1.0f; d3dpv[3].tv = 0.0f;
                        vb.Unlock();
...

...
//A renderen belül itt jön egy szimpla mátrix beállítás, és egy shaderes textúrázás, majd rajzolás, azaz semmi extra. Ezután jön a PP.

Texture rendertargettexure = new Texture(dev, dev.DisplayMode.Width, dev.DisplayMode.Height, 1, Usage.RenderTarget, Format.X8R8G8B8,
                    Pool.Default);
                oldrendersurface = dev.GetRenderTarget(0);
rendersurface = rendertargettexure.GetSurfaceLevel(0);
dev.StretchRectangle(oldrendersurface, renderrect, rendersurface, renderrect, TextureFilter.None);
dev.Clear(ClearFlags.Target | ClearFlags.ZBuffer,
                    System.Drawing.Color.FromArgb(0, 0, 0), 1.0f, 0);
                dev.SetRenderState(RenderStates.ZEnable, false);
                dev.SetRenderState(RenderStates.Lighting, false);

dev.BeginScene();
                passes = effect1.Begin(0);

                for (int ef = 0; ef < passes; ef++)
                {
                    effect1.SetValue("WorldViewProj", mat * view * proj);
                    effect1.SetValue("blurvalue", 3.0f);
                    effect1.SetValue("bloomvalue", 1.5f);
                    effect1.SetValue("meshtexture", rendertargettexure);
                    dev.SetStreamSource(10, vb, 10 * sizeof(float) + sizeof(uint)); //ez kérdéses
                    dev.VertexFormat = PointerVertexFVF; //és ez is kérdéses
                    effect1.BeginPass(ef);
                    dev.DrawPrimitives(PrimitiveType.TriangleStrip, 0, 2);
                    effect1.EndPass();
                }
                effect1.End();
                //dev.SetRenderState(RenderStates.ZEnable, true);
                //dev.SetRenderState(RenderStates.Lighting, true);
                dev.EndScene();

//Ezek után már csak a textek kiírása van hátra, tehát szintén semmi extra.


Mit rontok el?
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Kuz - Törzstag | 4455 hsz       Online status #32249   2006.10.13 02:19 GMT+1 óra  
Hát elvileg ez lett az eredménye az átiratnak . Valamit nagyon, de nagyon el......
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
TPG - Tag | 3402 hsz       Online status #32003   2006.10.09 08:51 GMT+1 óra  
Idézet
kuzanth :
Úgy értem, hogy amikor megvan a bloom effect, a végeredményt kell ráhúzni a quadra, nem? Tehát megy a sima render, felette meg a quad, amin már a bloomos effect van. Ha nem akkor félreértettem az egész PostP.-t....


Ha jól értem jah. Fogod az RT texet amit bloomolni akarsz rápakolod a fullscreen quad-ra, ráengeded a bloom shadert és renderelsz. A ZBuffer-t meg kilövöd mert tök felesleges és csak bekavarhat.
Reality is almost always wrong. - House

   
Kuz - Törzstag | 4455 hsz       Online status #32002   2006.10.09 08:45 GMT+1 óra  
Úgy értem, hogy amikor megvan a bloom effect, a végeredményt kell ráhúzni a quadra, nem? Tehát megy a sima render, felette meg a quad, amin már a bloomos effect van. Ha nem akkor félreértettem az egész PostP.-t....
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
TPG - Tag | 3402 hsz       Online status #32001   2006.10.09 08:36 GMT+1 óra  
Idézet
kuzanth :
Biztos a vertexbuffert csinálom meg rosszul, de egyelőre csak fekete hátteret látok, ill. néha-néha bejön egy színes háromszög-szerű izé (de legalább már nincs hiba üzenet...). Az előző kérdésem pedig nem a bloomhoz kapcsolódott, hanem a megjelenítéséhez.


Azt próbáltad már hogy csak egy sima texet húzol a fullscreen quadra? Az eredményeiből elég sokmindenre lehet következtetni.
Egyébként a bloom megjelenítése nem a bloomhoz kapcsolódik? Itt is az a lényeg hogy a bloomot nem az objektumokon hajtjuk végre hanem post process az elkészült 64/128bites lebegőpontos textúrán elég sok menetben (ugyebár a bloom annyiban különbözik a HDR-től hogy nincs luminance calc, hanem fix lum értékkel dolgoznak csak bright pass, exposure conrtol/tone mapping meg bloom és star filter van).
Reality is almost always wrong. - House

   
Kuz - Törzstag | 4455 hsz       Online status #31994   2006.10.09 08:07 GMT+1 óra  
Biztos a vertexbuffert csinálom meg rosszul, de egyelőre csak fekete hátteret látok, ill. néha-néha bejön egy színes háromszög-szerű izé (de legalább már nincs hiba üzenet...). Az előző kérdésem pedig nem a bloomhoz kapcsolódott, hanem a megjelenítéséhez.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
TPG - Tag | 3402 hsz       Online status #31793   2006.10.06 07:36 GMT+1 óra  
Idézet
kuzanth :
Sajna még nem tudtam tesztelni, de közben eszembe jutott egy dolog (hívhatjuk problémának is ). Ha csak bizonyos dolgokat akarunk bloomolni, akkor ugye azokkal külön kell foglalkozni. Ezzel nincs is baj. De mi van akkor, ha egy bloomos modellt FÉLIG(!!!) eltakar egy nem bloomos??? A bloom nem fog "átlátszani" az elöl lévő modellen??? Itt ugyanis már ki van kapcsolva a ZBuffer, szóval még azt sem tudnám mondani, hogy majd ott eldől, hogy mi látszódjon és mi ne... Ha sikerül előcsalnom az effectet, ezt mindenképp megpróbálom, de addig érdekelnek a vélemények!


Szerintem félreérted a bloom fogalmát teljesen, most nem állok neki megmagyarázni mivel tervezem az egész bloom/HDR témát cikk keretein belül kitárgyalni még a hétvégén (meg be akarom fejezni a shaderes cikk második részét és belekezdeni egy Deffered Shading-et tárgyalóba, márcsak az a kérdés mi fog ebből megvalósulni).
Reality is almost always wrong. - House

   
Kuz - Törzstag | 4455 hsz       Online status #31781   2006.10.06 05:00 GMT+1 óra  
Sajna még nem tudtam tesztelni, de közben eszembe jutott egy dolog (hívhatjuk problémának is ). Ha csak bizonyos dolgokat akarunk bloomolni, akkor ugye azokkal külön kell foglalkozni. Ezzel nincs is baj. De mi van akkor, ha egy bloomos modellt FÉLIG(!!!) eltakar egy nem bloomos??? A bloom nem fog "átlátszani" az elöl lévő modellen??? Itt ugyanis már ki van kapcsolva a ZBuffer, szóval még azt sem tudnám mondani, hogy majd ott eldől, hogy mi látszódjon és mi ne... Ha sikerül előcsalnom az effectet, ezt mindenképp megpróbálom, de addig érdekelnek a vélemények!
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
TPG - Tag | 3402 hsz       Online status #31645   2006.10.04 06:48 GMT+1 óra  
Idézet
kuzanth :
Már majdnem megcsináltam a működő kódot, amikor észrevettem, hogy valamilyen egyéni vertexbuffert kéne használni. A cikkedben ennyit látok : D3DSCREENVERTEX. Ennek viszont nem látom a megvalósítását. Bár magamtól próbáltam olyan vb-t csinálni, ami a kódból valószínűnek tűnik, de amikor beírtam a "4*sizeof()"-ot, azt mondta, hogy ez unmanaged kódhoz vezet, mert nincs pontos kezdő méret. Megtennéd, hogy bedobod ide a vb-hez tartozó kódot?! Kösze! Ja és kéne a felhasználni kívánt vertexek típusa is (én vmi ilyet írtam, mert C#-ban nem volt olyan típus, mint a cikkedben : vertextype.Position | vertextype.Texture1). Ez így nem tudom jó-e...?


Én egy picit univerzálisabb FVF-et használok:

struct D3DPOINTERVERTEX
{
D3DXVECTOR4 p;
DWORD color;
FLOAT tu, tv; //lehetne D3DXVECTOR2 is de nekem ez valamiért megragadt a kódban
};
const DWORD PointerVertexFVF = (D3DFVF_XYZW|D3DFVF_DIFFUSE|D3DFVF_TEX1);

A Diffuse color jól jöhet bármikor de lényegében elhagyható, a D3DFVF_XYZW meg lehet még D3DFVF_XYZRHW is de nem D3DFVF_XYZ (a D3DFVF_XYZW és a D3DFVF_XYZRHW is már transzformált koordinátákat feltételez a vertex bufferben tehát nem fogja végigszorozni a három mátrix-al). Gondolom innen már pillanatok alatt át tudod tolni kódot C# alá.
Reality is almost always wrong. - House

   
Kuz - Törzstag | 4455 hsz       Online status #31632   2006.10.04 03:13 GMT+1 óra  
Már majdnem megcsináltam a működő kódot, amikor észrevettem, hogy valamilyen egyéni vertexbuffert kéne használni. A cikkedben ennyit látok : D3DSCREENVERTEX. Ennek viszont nem látom a megvalósítását. Bár magamtól próbáltam olyan vb-t csinálni, ami a kódból valószínűnek tűnik, de amikor beírtam a "4*sizeof()"-ot, azt mondta, hogy ez unmanaged kódhoz vezet, mert nincs pontos kezdő méret. Megtennéd, hogy bedobod ide a vb-hez tartozó kódot?! Kösze! Ja és kéne a felhasználni kívánt vertexek típusa is (én vmi ilyet írtam, mert C#-ban nem volt olyan típus, mint a cikkedben : vertextype.Position | vertextype.Texture1). Ez így nem tudom jó-e...?
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Korábbi postok
> 1 < [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [22]