játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5512
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]
TPG - Tag | 3402 hsz       Online status #31327   2006.09.29 07:30 GMT+1 óra  
Idézet
kuzanth :
Mivel sikerült megoldanom ezt a textúrás meg surface-es problémát, jó lenne tisztázni, hogy pontosan milyen lépések kellenek a glow/bloom (már azt se tudom melyik, úgy össze vagyok kavarva) effecthez. Ez így jó? :
1. Két surface deklarálása (globálisként, vagy elég lokálisként a Render fgv-ben?)
2. Mátrix beállítás (world, view, proj)
3. device.Clear(..) + RenderStates.ZEnable = true
4. BeginScene() - EndScene() közé a kirajzolás (ha ezt egy textúrázó effect csinálja, kell a device.SetTexture()?)
5. Texture rendertargettexure = new Texture(dev, dev.DisplayMode.Width, dev.DisplayMode.Height, 1, Usage.RenderTarget, Format.X8R8G8B8,
Pool.Default)
6. oldrendersurface = dev.GetRenderTarget(0)
7. rendersurface = rendertargettexure.GetSurfaceLevel(0)
8. dev.StretchRectangle(oldrendersurface, renderrect, rendersurface, renderrect, TextureFilter.None) //renderrect a Rectangle, mert a null-t valamiért nekem nem fogadja el
9. dev.Clear(ClearFlags.Target | ClearFlags.ZBuffer,
System.Drawing.Color.FromArgb(0, 0, 0), 1.0f, 0) + dev.SetRenderState(RenderStates.ZEnable, true);
10. BeginScene() után az effectes kirajzolás, ahol az effect.SetValuenak át kell adni a rendertargettexture-t, mint textúrát + az egyéb változókat? Itt, ha megintcsak normál kirajzolásról van szó, kell a dev.SetTexture() a DrawSubset elé?
11. dev.EndScene() + dev.Present();


A kérdésekre meg külön válaszolok:
1. attól függ hol akarodv még használni ezeket a surface-eket
4. nem kell device.SetTexture() effecteknél viszont ilyenkor az effekt Value-ját kell használni. Működik a device-es SetTexture-el is kicsit másképp de sztem az elég fapados módszer.
10. Device.SetTexture() Fixed Function Pipeline-nál kell, programmable pipeline-nál (shaderek) az effect-en keresztül érdemes beálltani a texturát.
Reality is almost always wrong. - House

   
TPG - Tag | 3402 hsz       Online status #31326   2006.09.29 07:24 GMT+1 óra  
Idézet
kuzanth :
Mivel sikerült megoldanom ezt a textúrás meg surface-es problémát, jó lenne tisztázni, hogy pontosan milyen lépések kellenek a glow/bloom (már azt se tudom melyik, úgy össze vagyok kavarva) effecthez. Ez így jó? :
1. Két surface deklarálása (globálisként, vagy elég lokálisként a Render fgv-ben?)
2. Mátrix beállítás (world, view, proj)
3. device.Clear(..) + RenderStates.ZEnable = true
4. BeginScene() - EndScene() közé a kirajzolás (ha ezt egy textúrázó effect csinálja, kell a device.SetTexture()?)
5. Texture rendertargettexure = new Texture(dev, dev.DisplayMode.Width, dev.DisplayMode.Height, 1, Usage.RenderTarget, Format.X8R8G8B8,
Pool.Default)
6. oldrendersurface = dev.GetRenderTarget(0)
7. rendersurface = rendertargettexure.GetSurfaceLevel(0)
8. dev.StretchRectangle(oldrendersurface, renderrect, rendersurface, renderrect, TextureFilter.None) //renderrect a Rectangle, mert a null-t valamiért nekem nem fogadja el
9. dev.Clear(ClearFlags.Target | ClearFlags.ZBuffer,
System.Drawing.Color.FromArgb(0, 0, 0), 1.0f, 0) + dev.SetRenderState(RenderStates.ZEnable, true);
10. BeginScene() után az effectes kirajzolás, ahol az effect.SetValuenak át kell adni a rendertargettexture-t, mint textúrát + az egyéb változókat? Itt, ha megintcsak normál kirajzolásról van szó, kell a dev.SetTexture() a DrawSubset elé?
11. dev.EndScene() + dev.Present();


Glow:
Rendertarget tex létrehozása;
Fullscreen Quad létrehozása;

1 render fázis:
Clear();
BeginScene();
RenderObjects(); //mártixok texek shaderek beállítása és render
EndScene();

2 render fázis:
Z kikapcs;
Két surface deklarálása és kinullozása;
Az egyikbe lekéred a backbuffert a másikba a tex nulladik mip szintjét.
StrechRect-el összepasszintod őket.
BeginScene();
Effect->SetTexture(a render target);
Begin();
BeginPass(); //itt most az egyszerűségért elhagyom a for ciklust de ettől még kell
RenderQuad();
EndPass();
End();
EndScene();
Z bekapcs;
Present();
Reality is almost always wrong. - House

   
TPG - Tag | 3402 hsz       Online status #31325   2006.09.29 07:15 GMT+1 óra  
Idézet
kuzanth :
Jól tudom, hogy a bloom csak az objetumon belül látszik, a glow, pedig azon kívül is (tehát a bloom az objektumon lévő textúra színeit erősíti, a glow meg fénylővé teszi)? Ez így elég fapados megfogalmazás volt, de asszem érthető a kérdés...


A Bloom is meg a Glow is látszik az objektumon kívül is annyi a különbséghogy Glownál az objektum konstans saját színében izzik míg Bloomnál a fénytől izzik az objektum (a Bloom egy gyengített HDR, csak a luminance calc. hiányzik belőle).
Reality is almost always wrong. - House

   
Kuz - Törzstag | 4455 hsz       Online status #31307   2006.09.29 03:22 GMT+1 óra  
Jól tudom, hogy a bloom csak az objetumon belül látszik, a glow, pedig azon kívül is (tehát a bloom az objektumon lévő textúra színeit erősíti, a glow meg fénylővé teszi)? Ez így elég fapados megfogalmazás volt, de asszem érthető a kérdé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???

   
Kuz - Törzstag | 4455 hsz       Online status #31160   2006.09.28 03:19 GMT+1 óra  
Ezt azért kérdezem, mert egyelőre itt járok, de hiányzik az a fényeffectus, ami nem csak az objektumon belül szokott lenni, hanem kívül is. Vagy ez egy jó végeredmény? Ha igen, akkor ez most melyik effect ?
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 #31159   2006.09.28 03:12 GMT+1 óra  
Mivel sikerült megoldanom ezt a textúrás meg surface-es problémát, jó lenne tisztázni, hogy pontosan milyen lépések kellenek a glow/bloom (már azt se tudom melyik, úgy össze vagyok kavarva) effecthez. Ez így jó? :
1. Két surface deklarálása (globálisként, vagy elég lokálisként a Render fgv-ben?)
2. Mátrix beállítás (world, view, proj)
3. device.Clear(..) + RenderStates.ZEnable = true
4. BeginScene() - EndScene() közé a kirajzolás (ha ezt egy textúrázó effect csinálja, kell a device.SetTexture()?)
5. Texture rendertargettexure = new Texture(dev, dev.DisplayMode.Width, dev.DisplayMode.Height, 1, Usage.RenderTarget, Format.X8R8G8B8,
Pool.Default)
6. oldrendersurface = dev.GetRenderTarget(0)
7. rendersurface = rendertargettexure.GetSurfaceLevel(0)
8. dev.StretchRectangle(oldrendersurface, renderrect, rendersurface, renderrect, TextureFilter.None) //renderrect a Rectangle, mert a null-t valamiért nekem nem fogadja el
9. dev.Clear(ClearFlags.Target | ClearFlags.ZBuffer,
System.Drawing.Color.FromArgb(0, 0, 0), 1.0f, 0) + dev.SetRenderState(RenderStates.ZEnable, true);
10. BeginScene() után az effectes kirajzolás, ahol az effect.SetValuenak át kell adni a rendertargettexture-t, mint textúrát + az egyéb változókat? Itt, ha megintcsak normál kirajzolásról van szó, kell a dev.SetTexture() a DrawSubset elé?
11. dev.EndScene() + dev.Present();
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 #31050   2006.09.27 07:30 GMT+1 óra  
SDK : 2006 február (de már úton van az augusztusi). A .Net-et most töltöttem le úgy 3 hete. Hibakezelés (egyelőre) sehol sincs, így ha vmi hiba van, fel kell jönnie egy messageboxnak, hogy "A progiban hiba volt...", majd ok-ra kattintva kilépés. Egyébként a textúrás dolgot megoldottam, a Managed DX topicban frissítettem a dolgot. Ha megtennéd, hogy megnézed és kitalálunk valamit...
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 #31049   2006.09.27 07:19 GMT+1 óra  
Idézet
kuzanth :
Minden szépen elindul (hibaüzenet nélkül), csak nem látszik a shader-hatás. Ha esetleg valakinek van ATI kártyája (ha pont x1300xt az még jobb ), esetleg elküldhetem neki a progit, és ha jelentkezett a hiba, csinál egy screenshotot, és mindenki látni fogja, hogy mi történt. Az alul megadott linken látszik, h a 6600GT-n hogy néz ki a dolog (elvileg ez a jó eredmény...).


És egyik fv sem dob semmit ami a shaderek körül dolgozik? Itt nem feltétlen hibaüzenetre meg hibával kifagyásra gondolok hanem pl egyszerű lekezelt exception-re mondjuk. A másik meg hogy melyik SDK-val van fordítva a progi (hónap+év)?
Reality is almost always wrong. - House

   
TPG - Tag | 3402 hsz       Online status #31048   2006.09.27 07:15 GMT+1 óra  
Idézet
kuzanth :
Megnéztem a PostProcess cikkedet. Sajnos C#-on belül valamiért nem műkszik a Stretch és a texture.GetSurfaceLevel(0)!!! Mindig elszáll vmi hibával a progi. Erre van ötlete valakinek?


Olyan nincs hogy nem működik, egyértelmű hogy a textúrával van valami elcseszve. Az elszáll itt konkrétan az jelenti hogy kihal a desktopra? Ha igen akkor debug fordítással nem próbáltad még megkeresni a hibát?
Reality is almost always wrong. - House

   
Kuz - Törzstag | 4455 hsz       Online status #31043   2006.09.27 07:05 GMT+1 óra  
Cseles a gmail és észreveszi (már próbáltam)...
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???

   
Csaba42 - Törzstag | 946 hsz       Online status #31039   2006.09.27 06:56 GMT+1 óra  
Idézet
kuzanth :
Most már végülis mind1, mert nem freemail . Viszont a .Net mindemképp kell a fordításhoz, mert az exe-t le kell törölnöm, mert exe-t nem küld a gmail (vagy átnevezem, és akkor csak az exe, és a sok-sok resource megy, így megsprórolunk néhány byte-ot )...


És mi lenne, ha összetömörítenéd a fájlokat, s így csak azt a .zip vagy .rar fájlt küldenéd?

   
Kuz - Törzstag | 4455 hsz       Online status #31032   2006.09.27 06:10 GMT+1 óra  
Most már végülis mind1, mert nem freemail . Viszont a .Net mindemképp kell a fordításhoz, mert az exe-t le kell törölnöm, mert exe-t nem küld a gmail (vagy átnevezem, és akkor csak az exe, és a sok-sok resource megy, így megsprórolunk néhány byte-ot )...
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???

   
Csaba42 - Törzstag | 946 hsz       Online status #31031   2006.09.27 06:04 GMT+1 óra  
A Freemail-cím összesen 25 MB adatot tud tárolni, egyszerre egy fájl mérete (amit küldesz) 5 MB lehet.

   
KergeDelfin - Törzstag | 667 hsz       Online status #31024   2006.09.27 04:54 GMT+1 óra  
Nem, dehogy. Legalább egy jó indok arra hogy végre letöltsem.
Ore wa... yurusaretaintadomo... un... Ore wa yurusaretai...

Isles of Tranquility - Ecco fanoknak kötelező
   
Kuz - Törzstag | 4455 hsz       Online status #31023   2006.09.27 04:51 GMT+1 óra  
Oooopszzz.... így elsőre freemail-nek tűnt... Viszont a progihoz VS2005C# kell. Remélem ez nem gond?!
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???

   
KergeDelfin - Törzstag | 667 hsz       Online status #31022   2006.09.27 04:48 GMT+1 óra  
Nem tudom, hogy tud a freemail fogadni 5mb adatot, de ha megnézed a mailcímem, nem is freemail hanem FIBERMAIL, nagy különbség. Oks, akkor holnap.
Ore wa... yurusaretaintadomo... un... Ore wa yurusaretai...

Isles of Tranquility - Ecco fanoknak kötelező
   
Kuz - Törzstag | 4455 hsz       Online status #31018   2006.09.27 04:14 GMT+1 óra  
KergeDelfin : tud fogadni a freemail 5mb adatot ? Én úgy tudom, h nem...Holnap majd elküldöm, mert most nincs nálam (kellett a hely az augusztusi sdk-nak )...
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???

   
KergeDelfin - Törzstag | 667 hsz       Online status #30948   2006.09.26 06:30 GMT+1 óra  
Idézet
kuzanth :
Minden szépen elindul (hibaüzenet nélkül), csak nem látszik a shader-hatás. Ha esetleg valakinek van ATI kártyája (ha pont x1300xt az még jobb ), esetleg elküldhetem neki a progit, és ha jelentkezett a hiba, csinál egy screenshotot, és mindenki látni fogja, hogy mi történt. Az alul megadott linken látszik, h a 6600GT-n hogy néz ki a dolog (elvileg ez a jó eredmény...).


Nekem egy radeon9600pro-m van, ha átdobod, megnézném.
msnm: flipper@fibermail.hu, este leszek elérhető.
Nálam hasonló probléma lépett fel glsl-el fordított irányban. (a saját kártyámon ment, Gef6600-on nem)
Ore wa... yurusaretaintadomo... un... Ore wa yurusaretai...

Isles of Tranquility - Ecco fanoknak kötelező
   
Kuz - Törzstag | 4455 hsz       Online status #30916   2006.09.26 02:20 GMT+1 óra  
Megnéztem a PostProcess cikkedet. Sajnos C#-on belül valamiért nem műkszik a Stretch és a texture.GetSurfaceLevel(0)!!! Mindig elszáll vmi hibával a progi. Erre van ötlete valakinek?
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 #30915   2006.09.26 02:06 GMT+1 óra  
Minden szépen elindul (hibaüzenet nélkül), csak nem látszik a shader-hatás. Ha esetleg valakinek van ATI kártyája (ha pont x1300xt az még jobb ), esetleg elküldhetem neki a progit, és ha jelentkezett a hiba, csinál egy screenshotot, és mindenki látni fogja, hogy mi történt. Az alul megadott linken látszik, h a 6600GT-n hogy néz ki a dolog (elvileg ez a jó eredmény...).
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 #30827   2006.09.25 05:46 GMT+1 óra  
Idézet
kuzanth :
Technikai kérdés következik : nekem GeForce6600GT karim van, és az eddigi effectelős progikat is csak ezen a gépen próbáltam ki. A napokban viszont egy x1300XT (remélem jól írtam a típust)karin akartuk megnézni a progit, és sem a normal mapping nem volt észrevehető, sem pedig a vízfelszín nem jelent meg(ezt akartuk tesztelni, de se csillogás, se vízfelszín, csak egy-két fehéres csík...). Ezek szerint a HLSL csak GeForce kártyákon műkszik hibátlanul, és az ATI-kon nem? Esetleg az utasításkészlet nem egyezik meg teljesen, és ATI-hoz más utasításokat kellene használni (mondjuk ebben az esetben vmi hibával el kellett volna szállnia a proginak, nem?)?


Ilyesmi nincs, a HLSL szabvány szerinti nyelv és a Shader Model-ek is szabványok, nem különböznek sehol sem. Semmi hibát nem dob renderelésnél vagy valami ilyesmi? RefRast-al működik?
Reality is almost always wrong. - House

   
TPG - Tag | 3402 hsz       Online status #30825   2006.09.25 05:43 GMT+1 óra  
Idézet
kuzanth :
Így többszöri átolvasás után megértettem, hogy ugyanezt csinálom én is...De ha az 1-es opció a nyerő, akkor kell egy külső ciklus, ami végigmegy az összes effectelendő mesh-en, nem? Valahogy így :

Kód:
effect.Technique = "..."; // "..." = a tech. neve, de ez most lényegtelen
int passes = effect.Begin(0);
effect.SetValue(...); //ide jönnek azok, amik nem változnak
...
for(int i=0;i<meshlist.Count;i++) //meshlist most pl egy arraylist a mesh-ek számára
{
   effect.SetValue(...); //ide jönnek azok, amik változnak

   for(int j=0;j<passes;j++) //minden meshre ráküldjük a passokban található effectet
   {
      effect.BeginPass(j);
         //ide meg jöhet a drawsubset()
      effect.EndPass(j);
   }
}
effect.End();



Hopp látom multkor elfelejtettem válaszolni (el volt tárolva a memóriámban de ezek szerint nem sokáig ). Tehát igen ez így lerendereli ugyanazzal a shaderrel az összes mesht. Ez mellé két féle képpen lehet motion blur-t tolni, vagy az oldschool módszerrel hogy rengetegszer újra rendereled a mesheket az előző world matrixokkal és minél öregebb a mátrix annál átlátszóbbá teszed a renderelt mesht. Eléggé favágó módszer. Vagy használod a postprocessing előnyeit, itt újra két választás van: vagy azt csinálod meg ami az SDK-ban Pixel Motion blur néven fut vagy bizonyos számú framet eltárolsz visszamenőleg és ezeket mosod össze.
Reality is almost always wrong. - House

   
Kuz - Törzstag | 4455 hsz       Online status #30815   2006.09.25 04:16 GMT+1 óra  
Technikai kérdés következik : nekem GeForce6600GT karim van, és az eddigi effectelős progikat is csak ezen a gépen próbáltam ki. A napokban viszont egy x1300XT (remélem jól írtam a típust)karin akartuk megnézni a progit, és sem a normal mapping nem volt észrevehető, sem pedig a vízfelszín nem jelent meg(ezt akartuk tesztelni, de se csillogás, se vízfelszín, csak egy-két fehéres csík...). Ezek szerint a HLSL csak GeForce kártyákon műkszik hibátlanul, és az ATI-kon nem? Esetleg az utasításkészlet nem egyezik meg teljesen, és ATI-hoz más utasításokat kellene használni (mondjuk ebben az esetben vmi hibával el kellett volna szállnia a proginak, nem?)?
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 #30814   2006.09.25 04:05 GMT+1 óra  
Kösze (TPG-nek is )! Remélem C#-ra egy az egyben át lehet ültetni...
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???

   
Csaba42 - Törzstag | 946 hsz       Online status #30811   2006.09.25 03:42 GMT+1 óra  
Idézet
kuzanth :
Köv. kérdés : hogyan lehet real-time elérni a lerenderelt "képet", mint "textúrát"? Feltételezem nem a surfaceloader.save ill. savetostream-mel, ezzel ugyanis egy képet lehet lementeni (mint ahogy azt a screenshot-nál is használom), és igényeimhez sajnos baromi lassú. Én ugyanis azt szeretném elérni, hogy amikor megtörtént/megtörténik a renderelés, a kész képet szeretném manipulálni, majd az eredményt megjeleníteni a képernyőn. Tehát valahogy így : backbufferből kinyerni a képet, manipulálni a képet, majd azt visszaírni a backbufferbe (esetleg rögtön a frontba, bár asszem ezért van a device.Present()...). Remélem érthető volt a kérdésem. Hangsúlyoznám, hogy nem a screenshot miatt kell, mert az már megvan, de ide sajnos ez lassú, mert egy jpg-t is kb 1,5-2 mp alatt csinál meg, én pedig szeretném az eddigi legalább 200fps-t fenntartani, ezért gondoltam, hogy valami real-time manipuláció segítene!


Ajánlom figyelmedbe TheProGamer cikkét a PostProcessingről, abban (már ha még jól emlékszem a cikk tartalmára) megtalálod a megfelelő választ a kérdésedre!

   
Kuz - Törzstag | 4455 hsz       Online status #30809   2006.09.25 03:32 GMT+1 óra  
Köv. kérdés : hogyan lehet real-time elérni a lerenderelt "képet", mint "textúrát"? Feltételezem nem a surfaceloader.save ill. savetostream-mel, ezzel ugyanis egy képet lehet lementeni (mint ahogy azt a screenshot-nál is használom), és igényeimhez sajnos baromi lassú. Én ugyanis azt szeretném elérni, hogy amikor megtörtént/megtörténik a renderelés, a kész képet szeretném manipulálni, majd az eredményt megjeleníteni a képernyőn. Tehát valahogy így : backbufferből kinyerni a képet, manipulálni a képet, majd azt visszaírni a backbufferbe (esetleg rögtön a frontba, bár asszem ezért van a device.Present()...). Remélem érthető volt a kérdésem. Hangsúlyoznám, hogy nem a screenshot miatt kell, mert az már megvan, de ide sajnos ez lassú, mert egy jpg-t is kb 1,5-2 mp alatt csinál meg, én pedig szeretném az eddigi legalább 200fps-t fenntartani, ezért gondoltam, hogy valami real-time manipuláció segítene!
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 #29411   2006.09.08 06:07 GMT+1 óra  
Így többszöri átolvasás után megértettem, hogy ugyanezt csinálom én is...De ha az 1-es opció a nyerő, akkor kell egy külső ciklus, ami végigmegy az összes effectelendő mesh-en, nem? Valahogy így :

Kód:
effect.Technique = "..."; // "..." = a tech. neve, de ez most lényegtelen
int passes = effect.Begin(0);
effect.SetValue(...); //ide jönnek azok, amik nem változnak
...
for(int i=0;i<meshlist.Count;i++) //meshlist most pl egy arraylist a mesh-ek számára
{
   effect.SetValue(...); //ide jönnek azok, amik változnak

   for(int j=0;j<passes;j++) //minden meshre ráküldjük a passokban található effectet
   {
      effect.BeginPass(j);
         //ide meg jöhet a drawsubset()
      effect.EndPass(j);
   }
}
effect.End();
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 #29408   2006.09.08 05:42 GMT+1 óra  
Idézet
kuzanth :
Ezek szerint nem minden effecttípust lehet egyszerre használni olyan formában, ahogy az 1. pontban leírtam?
Ill. a C# kód hogy néz ki több effect esetén?
1.
...
effect beállítások (SetValue, BeginPass(),...)
majd jöhet a mesh drawsubset-je
effect pass, és effect lezárás

És ezt annyiszor ismételni, ahány mesh van (azaz ciklikusan!) Vagy :

2.
effect1 beállítások (SetValue, BeginPass(),...)
effect2 beállítások (SetValue, BeginPass(),...)
...
effectn beállítások (SetValue, BeginPass(),...)
majd jöhet az összes mesh drawsubset-je
effect1 pass, és effect1 lezárás
effect2 pass, és effect2 lezárás
...
effectn pass, és effectn lezárás

Remélem ez most nem csak a számomra érthető ...


A második opcióval nem érdemes foglalkozni. Az első meg valahog úgy néz ki de leírom pontosan hogy megy:
Begin, ennek elmented a visszatérési értékét
SetValue, azon értékek beállítása amik nem változnak a passok közben
for ciklus -> for (int i = 0; i < passes; i++) ->passes a Begin által vissza adott érték
SetValue, azon értékek beállítása amik passok közben változnak
BeginPass
DrawSubset
EndPass
for ciklus zárása
End

Remélem nem csesztem el semmit a leírás során de megeshet
Reality is almost always wrong. - House

   
TPG - Tag | 3402 hsz       Online status #29405   2006.09.08 05:23 GMT+1 óra  
Idézet
kuzanth :
Ezek szerint nem minden effecttípust lehet egyszerre használni olyan formában, ahogy az 1. pontban leírtam?


Mindenfélét lehet ami ugyanazon dolgozik. Viszont míg a Normal mapping a modellen dolgozik addig a motion blur a már kész renderelt képen tehát abszolút más renderelési szakaszban dolgoznak.
Reality is almost always wrong. - House

   
Kuz - Törzstag | 4455 hsz       Online status #29404   2006.09.08 05:20 GMT+1 óra  
Ezek szerint nem minden effecttípust lehet egyszerre használni olyan formában, ahogy az 1. pontban leírtam?
Ill. a C# kód hogy néz ki több effect esetén?
1.
...
effect beállítások (SetValue, BeginPass(),...)
majd jöhet a mesh drawsubset-je
effect pass, és effect lezárás

És ezt annyiszor ismételni, ahány mesh van (azaz ciklikusan!) Vagy :

2.
effect1 beállítások (SetValue, BeginPass(),...)
effect2 beállítások (SetValue, BeginPass(),...)
...
effectn beállítások (SetValue, BeginPass(),...)
majd jöhet az összes mesh drawsubset-je
effect1 pass, és effect1 lezárás
effect2 pass, és effect2 lezárás
...
effectn pass, és effectn lezárás

Remélem ez most nem csak a számomra érthető ...
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 #29350   2006.09.07 08:16 GMT+1 óra  
Idézet
kuzanth :
Bár az eddigi problémáim még nem oldódtak meg, azért csak kérdezek mást is, hátha azzal sikerrel járok. Kérdésem : hogy lehet egyszerre kétféle effectet használni (pl egy normalmappinget és egy motion blurt, csak hogy nevén nevezzük a két konkrét effectet )? A következőket már próbáltam :

- 1 .fx file, benne egy technique két pass-al, első pass-ban vertexshader+normalmap pixelshader, a másodikban pedig a motion blur pixelshader
-1 .fx file, benne két technique egy-egy pass-al, első tech. vertexshader+normalmap pixelshader, a másodikban pedig a motion blur pixelshader (megnéztem úgy is, hogy mellé tettem mégegyszer a vertexshadert)
- 2 .fx file, bennük egy technique egy pass-al, első fileban vertexshader+normalmap pixelshader, a másodikban pedig a vertexsahder+motion blur pixelshader.

Ha ezek valamelyike jó, akkor már a C# kódban szúrtam el valamit...Ötletek, lehetőségek?


Az első lenne ilyenkor a hatásos viszont neked nem ez kell. A motion blur post-process effect kivéve ha Geometry Shader-el csinálod de gondolom nem.

Szerk: a Normal mappinges problémára egyenlőre nem tudok mondani semmit, nem is teljesen látom át a kódot de asszem írok egy ilyen shadert én is és ott kipróbálom a hibalehetőségeket.
Reality is almost always wrong. - House

   
Kuz - Törzstag | 4455 hsz       Online status #29320   2006.09.07 02:52 GMT+1 óra  
Bár az eddigi problémáim még nem oldódtak meg, azért csak kérdezek mást is, hátha azzal sikerrel járok. Kérdésem : hogy lehet egyszerre kétféle effectet használni (pl egy normalmappinget és egy motion blurt, csak hogy nevén nevezzük a két konkrét effectet )? A következőket már próbáltam :

- 1 .fx file, benne egy technique két pass-al, első pass-ban vertexshader+normalmap pixelshader, a másodikban pedig a motion blur pixelshader
-1 .fx file, benne két technique egy-egy pass-al, első tech. vertexshader+normalmap pixelshader, a másodikban pedig a motion blur pixelshader (megnéztem úgy is, hogy mellé tettem mégegyszer a vertexshadert)
- 2 .fx file, bennük egy technique egy pass-al, első fileban vertexshader+normalmap pixelshader, a másodikban pedig a vertexsahder+motion blur pixelshader.

Ha ezek valamelyike jó, akkor már a C# kódban szúrtam el valamit...Ötletek, lehetőségek?
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 #29128   2006.09.04 05:30 GMT+1 óra  
Megnéztem +-al és *-al is, de egyik sem a várt eredményt adja. Ötletek?
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 #28727   2006.08.30 08:25 GMT+1 óra  
Normalizálni kellene miután a két normal map értéket összeadtad. Ha két normál vektort összeadsz az eredmény vektornak már nem 1 lesz a hossza. Egyébként még soha nem láttam olyan hogy egy objektumhoz két normal map tartozott. A másik dolog: minek szorzod 1-el a normal értékeket? Az 1-el szorzás felesleges művelet meg amúgyis 2-vel szokták.
Reality is almost always wrong. - House

   
Kuz - Törzstag | 4455 hsz       Online status #28413   2006.08.29 04:45 GMT+1 óra  
Nézd már meg ezt, plíz : csúúúúúnya! Asszem nem így kéne kinéznie... Behúzom a teljes shader kódot, mert lehet, hogy csak vmit rosszul írtam, de én tényleg nem látom, h mi a hiba. Elvileg ez egy normal mappinges dolog lenne, ami egy textúra esetén működik is.
Kód:
texture meshtexture1;
texture meshtexture2;
texture meshtexture1N;
texture meshtexture2N;
float4x4 ModelWorld;
float4x4 ModelViewProj;
float4 LightPos;

sampler MeshTextureSampler1 =
sampler_state
{
Texture = <meshtexture1>;
MipFilter = LINEAR;
MinFilter = LINEAR;
MagFilter = LINEAR;
};

sampler MeshTextureSampler2 =
sampler_state
{
Texture = <meshtexture2>;
MipFilter = LINEAR;
MinFilter = LINEAR;
MagFilter = LINEAR;
};

sampler MeshTextureSampler1N =
sampler_state
{
Texture = <meshtexture1N>;
MipFilter = LINEAR;
MinFilter = LINEAR;
MagFilter = LINEAR;
};

sampler MeshTextureSampler2N =
sampler_state
{
Texture = <meshtexture2N>;
MipFilter = LINEAR;
MinFilter = LINEAR;
MagFilter = LINEAR;
};

struct a2v
{
float4 Position  : POSITION0;
float3 Normal    : NORMAL;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
float3 Tangent   : TANGENT;
float3 Binormal  : BINORMAL;
};

struct v2p
{
float4 Position  : POSITION0;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
float3 LightVec  : TEXCOORD2;
float  Att : TEXCOORD3;
float3 vHalf : TEXCOORD4;
};

struct p2f
{
float4 Color : COLOR0;
};

void vs(in a2v IN, out v2p OUT)
{
OUT.Position = mul(IN.Position, mul(ModelWorld, ModelViewProj));

float4 posWorld = mul(IN.Position, ModelWorld);

float3 light = normalize(LightPos - posWorld);

float3 eye = normalize(posWorld - light);

float3 vHalf = normalize(eye - LightPos);

float3x3 TBNMatrix = float3x3(IN.Tangent, IN.Binormal, IN.Normal);

OUT.LightVec = mul(TBNMatrix, light);

OUT.vHalf = mul(TBNMatrix, vHalf);

OUT.Att = 1.0f/( 1.0f + ( 0.005f * distance(LightPos.xyz, posWorld) ) );

OUT.Texcoord0 = IN.Texcoord0;
OUT.Texcoord1 = IN.Texcoord1;
}

void ps(in v2p IN, out p2f OUT)
{
float4 color = tex2D(MeshTextureSampler1, IN.Texcoord0) +
       tex2D(MeshTextureSampler2, IN.Texcoord1);

float3 normal = (1.0f * tex2D(MeshTextureSampler1N, IN.Texcoord0).rgb - 1.0f) +
(1.0f * tex2D(MeshTextureSampler2N, IN.Texcoord1).rgb - 1.0f);

float3 light = normalize(IN.LightVec);

float3 vHalf = normalize(IN.vHalf);

float diffuse = saturate(dot(normal, light));

float specular = pow(dot( normal, IN.vHalf) , 16);

float dsColor = 2.0 * (diffuse * specular) + 1.0;

OUT.Color = IN.Att * color * dsColor;
}

technique RenderScene_v2_0
{
    pass P0
    {
vertexshader = compile vs_2_0 vs();
        pixelshader  = compile ps_2_0 ps();
    }
}

technique RenderScene_v3_0
{
    pass P0
    {
vertexshader = compile vs_3_0 vs();
pixelshader  = compile ps_3_0 ps();
    }
}
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 #28126   2006.08.28 07:44 GMT+1 óra  
Idézet
kuzanth :
Megnéztem...Biztos, h így kell ezt csinálni?

Kód:
OUT.Color = tex2D(MeshTextureSampler0, IN.Texcoord0) +
                           tex2D(MeshTextureSampler1, IN.Texcoord1);


Mert ez nem azt csinálja, amit kellene (vagy én szúrtam el vhol vmit...).


Ha a két textúrához két külön texcoord tartozik a mesh-nél igen ez az egyik módszer. De két textúra értékét milliónyi módszerrel lehet keverni, ez az egyik. Lehetne a két mintát szorozni, kivonni, osztani stb a DXSDK-ban egy rakás módszert onnan ki tudod választani a mgefelelőt. De a két leggyakoribb módszer a minták összeadása és szorzása.
Reality is almost always wrong. - House

   
Kuz - Törzstag | 4455 hsz       Online status #28064   2006.08.28 04:58 GMT+1 óra  
Megnéztem...Biztos, h így kell ezt csinálni?

Kód:
OUT.Color = tex2D(MeshTextureSampler0, IN.Texcoord0) +
                           tex2D(MeshTextureSampler1, IN.Texcoord1);


Mert ez nem azt csinálja, amit kellene (vagy én szúrtam el vhol vmit...).
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 #27331   2006.08.24 08:20 GMT+1 óra  
Idézet
kuzanth :
Köv. kérdés : És mi van akkor, ha nem tudod, hogy hány textúrával kell dolgoznod?


Maximálod a textúrák számát mondjuk 8-ban, csinálsz hozzá samplereket és csinálsz 8 shadert 8 technique-val. Az első shader és a hozzá tartózó tec 1 texre működik, a második kettőre a harmadik háromra stb egészen nyolcig.
Reality is almost always wrong. - House

   
Kuz - Törzstag | 4455 hsz       Online status #27285   2006.08.24 04:06 GMT+1 óra  
Kód:
float4x4 ModelWorld;
texture texture0;
texture texture1;

sampler MeshTextureSampler0 =
sampler_state
{
   Texture = <texture0>;
   MipFilter = LINEAR;
   MinFilter = LINEAR;
   MagFilter = LINEAR;
};

sampler MeshTextureSampler1 =
sampler_state
{
   Texture = <texture1>;
   MipFilter = LINEAR;
   MinFilter = LINEAR;
   MagFilter = LINEAR;
};

struct a2v
{
    float4 Position     : POSITION;
    float2 Texcoord0 : TEXCOORD0;
    float2 Texcoord1 : TEXCOORD1;
};

struct v2p
{
    float4 Position      : POSITION;
    float2 Texcoord0  : TEXCOORD0;
    float2 Texcoord1  : TEXCOORD1;
};

struct p2f
{
   float4 Color : COLOR0;
};

void vs( in a2v IN, out v2p OUT )
{   
    OUT.Position     = mul(IN.Position, ModelWorld);
    OUT.Texcoord0 = IN.Texcoord0;
    OUT.Texcoord1 = IN.Texcoord1;
}

void ps(in v2p IN, out p2f OUT)
{
   OUT.Color = tex2D(MeshTextureSampler0, IN.Texcoord0) +
                           tex2D(MeshTextureSampler1, IN.Texcoord1);
}

Tehát valahogy így? A hangsúly végülis a pixelshaderen van, mert a többit tk. ugyanúgy csináltam. Bár a ps-ben én float4-et használok, de ez nem okoz gondot asszem.

Köv. kérdés : És mi van akkor, ha nem tudod, hogy hány textúrával kell dolgoznod?
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 #27155   2006.08.23 07:46 GMT+1 óra  
Kód:
texture ATex;
texture BTex;
float4x4 WVP;

sampler2D ATexSamp = sampler_state
{
        texture = <ATex>;
MinFilter=linear;
MagFilter=linear;
MipFilter=linear;
};

sampler2D BTexSamp = sampler_state
{
        texture = <BTex>;
MinFilter=linear;
MagFilter=linear;
MipFilter=linear;
};

struct VertexInput
{
float4 Pos : POSITION;
float2 Tex0 : TEXCOORD0;
float2 Tex1 : TEXCOORD1;
};

struct VertexOutput {
    float4 PositionOut : POSITION;
    float2 Tex0Out: TEXCOORD0;
    float2 Tex1Out: TEXCOORD1;
};

VertexOutput VS_Transform(VertexInput IN)
{
       VertexOutput OUT;
       OUT.PositionOut = mul(IN.Pos,WVP);
       OUT.Tex0Out = IN.Tex0;
       OUT.Tex1Out = IN.Tex1;
       return OUT;
}

float4 PS_SampleTexture(VertexOutput IN) : COLOR0
{
float3 Output = {0.0f,0.0f,0.0f};
        Output = tex2D(ATexSamp,IN.Tex0Out) + tex2D(BTexSamp ,IN.Tex1Out);
        return float4(Output,1.0f);
}

technique Tec
{
    pass p0
    {
VertexShader = compile vs_1_1 VS_Transform();
PixelShader = compile ps_1_1 PS_SampleTexture();
    }
}

Ennek elvileg működnie kell. A kód feltételezi hogy a két texhez két külön textúrakoordináta tartozik.
Reality is almost always wrong. - House

   
TPG - Tag | 3402 hsz       Online status #27154   2006.08.23 07:30 GMT+1 óra  
Idézet
kuzanth :
És már itt is van a következő kérdés, amit eddig a 3DStudio topicban tárgyaltunk :
Ha egy modellnek több diffuse textúrája is van, azokra hogyan kell hivatkozni a shaderben, mert az alábbi megoldás úgy látszik nem jó :
Kód:
struct a2v
{
    float4 Position : POSITION;
    float2 Texcoord0 : TEXCOORD0; //elvileg mindig ez az 1. diffuse textúra, amivel nincs is baj
    float2 Texcoord1 : TEXCOORD1; //de ezt már nem fogadja el, mert csak sima material színe lesz a modellnek
};

struct v2p
{
    float4 Position  : POSITION;
    float2 Texcoord0  : TEXCOORD0; //ez a kettő ugyanaz, mint előbb
    float2 Texcoord1  : TEXCOORD1;
};

A vertex shaderben pedig :
Kód:
void vs( in a2v IN, out v2p OUT )
{   
    OUT.Position = mul(IN.Position, ModelWorld); //ez most lényegtelen
    OUT.Texcoord0 = IN.Texcoord0;
    OUT.Texcoord1 = IN.Texcoord1;
}

Ha a vs-ben mind a két helyre IN.Texcoord0-t írok, akkor ugyan csak az első textúrával, de jól jelenik meg a modell, de ha így írom, mint itt fent, akkor a modellnek ilyen érdekes sárgás-barnás színe lesz. Mi lenne a jó megoldás?


A két külön textúrához meg van a két külön sampler? És külön textúrakoordináta tartozik vertexenként a textúrákhoz? Van Pixel Shader rész is vagy csak Vertex Shader üzemel? Hogy néz ki a Pixel Shder kódja?
Reality is almost always wrong. - House

   
Kuz - Törzstag | 4455 hsz       Online status #27135   2006.08.23 05:30 GMT+1 óra  
Ez a megoldás, amit mindketten írtunk, miszerint :
OUT.Texcoord0 = IN.Texcoord0;
OUT.Texcoord1 = IN.Texcoord0;
csak az egyik textúrát rakja rá a modellekre (és ez az ami zavar, mert mindkét kockára rárakja). Ez már csak azért is fura, mert ha ez tényleg csak az első koordot használja, akkor a második kockán elvileg nem lehetne semmilyen textúra!!! Egyébként érthető a problémám, vagy próbáljam részletezni?
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???

   
warlock - Törzstag | 704 hsz       Online status #27134   2006.08.23 05:24 GMT+1 óra  
nem tom te írtad

   
Kuz - Törzstag | 4455 hsz       Online status #27133   2006.08.23 05:20 GMT+1 óra  
Az .x fileban elvileg két textúrakoordináta is van (gondolom ez a két diffuse texkoord.), tehát elvileg úgy kellene írni, ahogy leírtam. Lehet, h csak az a probléma, hogy erre a progim nagyívből ..... és csak 1 texkoordot küld át? De akkor hogy kell előcsalni a másikat ???
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???

   
warlock - Törzstag | 704 hsz       Online status #27129   2006.08.23 05:08 GMT+1 óra  
nah bár én nem vagyok mestere a dolognak de TEXCOORD1 a 2. texcoordlenne a vertexhez
namármost nagyon vszínű hogy csak egy 1 texcoordot küldesz át vagyis a jó megoldás:

OUT.Texcoord0 = IN.Texcoord0;
OUT.Texcoord1 = IN.Texcoord0;

   
Kuz - Törzstag | 4455 hsz       Online status #27121   2006.08.23 04:03 GMT+1 óra  
És már itt is van a következő kérdés, amit eddig a 3DStudio topicban tárgyaltunk :
Ha egy modellnek több diffuse textúrája is van, azokra hogyan kell hivatkozni a shaderben, mert az alábbi megoldás úgy látszik nem jó :
Kód:
struct a2v
{
    float4 Position : POSITION;
    float2 Texcoord0 : TEXCOORD0; //elvileg mindig ez az 1. diffuse textúra, amivel nincs is baj
    float2 Texcoord1 : TEXCOORD1; //de ezt már nem fogadja el, mert csak sima material színe lesz a modellnek
};

struct v2p
{
    float4 Position  : POSITION;
    float2 Texcoord0  : TEXCOORD0; //ez a kettő ugyanaz, mint előbb
    float2 Texcoord1  : TEXCOORD1;
};

A vertex shaderben pedig :
Kód:
void vs( in a2v IN, out v2p OUT )
{   
    OUT.Position = mul(IN.Position, ModelWorld); //ez most lényegtelen
    OUT.Texcoord0 = IN.Texcoord0;
    OUT.Texcoord1 = IN.Texcoord1;
}

Ha a vs-ben mind a két helyre IN.Texcoord0-t írok, akkor ugyan csak az első textúrával, de jól jelenik meg a modell, de ha így írom, mint itt fent, akkor a modellnek ilyen érdekes sárgás-barnás színe lesz. Mi lenne a jó megoldá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???

   
Kuz - Törzstag | 4455 hsz       Online status #23895   2006.08.03 04:29 GMT+1 óra  
Leteszteltem azt az előbb említett 'null'-os dolgot, de még azt is megpróbáltam, hogy nem létező textúrát próbáltam átadni. Természetesen egyik sem sikerült, így várom továbbra is a segítségeket!
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 #23872   2006.08.03 01:47 GMT+1 óra  
Nos? Valaki?
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 #23715   2006.08.02 03:32 GMT+1 óra  
Már sikerült megírnom egy működő textúrázó shadert, viszont felmerült az a kérdés, hogy ha egy objectnek több textúrája is van, azt általánosan hogy szokás lekezelni? Feltételezem nem kell megírni 85 samplert, aztán ahol nincs textúra ott Null-t átadni, hanem biztos van erre vmi frappáns megoldás...? Avagy minden egyes objectnek külön shadert kell írni ? Gondolom nem, mert érdekes lenne egy RPG játékban a kismillió object mellett ugyanennyi shader ...
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???

   
ferchild - Törzstag | 815 hsz       Online status #23586   2006.08.01 04:40 GMT+1 óra  
effect.SetValue("SceneTexture", meshTexture);
effect.CommitChanges();


ahol effect = Effect class
SceneTexture a shaderben textura változó
meshTexture = texture object
Feci Barath (by Kuz)
XD
http://már nem elérhető...új lesz
   
Korábbi postok
> 1 < [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [22]