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

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2199
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]
Asylum - Törzstag | 5512 hsz       Online status #63390   2007.07.15 09:41 GMT+1 óra  
Postprocess effekteket valóban nehéz kicsit rászabni de a 'hagyományos' shadereket ugyanugy lehet benne manipulálni mint directx ben. (kb)
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
TPG - Tag | 3402 hsz       Online status #63389   2007.07.15 09:39 GMT+1 óra  
Idézet
Mioline :
No végre, megtaláltam ezt a topicot. Már majdnem nyitottam egyet... Sikeresen leragadtam a DarkBasic Pro-nál, és FZoli cikkei által megtudtam: lehet shadereket használni DB-ben. Ott is van egy shader pack, de én ennyivel nem elégszem meg, mivel úgyis unalmasak a nyári napok, szeretnék megtanulni shadereket írni, ehhez kérem segítségeteket. Tudtok-e nekem olyan tutorialokat/ebookokat adni, ahol az alapoktól le van írva a shader programozás mikéntje, (majdnem) minden 'csínja-bínja'? (Nem hiszem, hogy van van ilyen szó/szókapcsolat... De mindegy, ez itt off.) Válaszotokat előre is köszi!


HLSL tutorials + DXSDK (a DXSDK doksija fent van az MSDN-en is úgyhogy nem szükséges az letölteni). Tudtommal DBP-hez nem egyszerű shadereket írni, mintha csak a speciálisan hozzáigazítottakat fogadná el.
Reality is almost always wrong. - House

   
Mioline - Tag | 69 hsz       Online status #63388   2007.07.15 09:31 GMT+1 óra  
No végre, megtaláltam ezt a topicot. Már majdnem nyitottam egyet... Sikeresen leragadtam a DarkBasic Pro-nál, és FZoli cikkei által megtudtam: lehet shadereket használni DB-ben. Ott is van egy shader pack, de én ennyivel nem elégszem meg, mivel úgyis unalmasak a nyári napok, szeretnék megtanulni shadereket írni, ehhez kérem segítségeteket. Tudtok-e nekem olyan tutorialokat/ebookokat adni, ahol az alapoktól le van írva a shader programozás mikéntje, (majdnem) minden 'csínja-bínja'? (Nem hiszem, hogy van van ilyen szó/szókapcsolat... De mindegy, ez itt off.) Válaszotokat előre is köszi!
In my restless dreams... I see that town... Silent Hill...

   
Asylum - Törzstag | 5512 hsz       Online status #50146   2007.04.07 16:15 GMT+1 óra  
Ezt megtaláltam énis de elég furán nézett ki
Lehet elqrtam valamit.

Ja igen remegett az egész textúra meg az árnyék is fura lett

Ezt a hozzászólást Asylum módosította (2007.04.07 16:23 GMT+1 óra, ---)
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
TPG - Tag | 3402 hsz       Online status #50145   2007.04.07 16:00 GMT+1 óra  
Idézet
Asylum :
Tud valaki egy jó elméleti leírást a normal mappingról? (angol is jó) Mert ugyan shadereket ezrével lehet találni a neten, leírás már nem nagyon van hozzájuk. Engem meg az elmélet érdekelne.


elmélet + gyakorlat: http://dotnet.org.za/pieterg/archive/2005/07/29/40407.aspx
Reality is almost always wrong. - House

   
Asylum - Törzstag | 5512 hsz       Online status #50144   2007.04.07 15:58 GMT+1 óra  
Tud valaki egy jó elméleti leírást a normal mappingról? (angol is jó) Mert ugyan shadereket ezrével lehet találni a neten, leírás már nem nagyon van hozzájuk. Engem meg az elmélet érdekelne.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Gabor - Tag | 32 hsz       Online status #45850   2007.01.25 09:37 GMT+1 óra  
Na, sikerült megoldanom, a cubeMap-ot, szal már műxik, az effektet megírtam, nem bonyolult, de valahogy nem tűnik túl életszerűnek sajnos, mivel ez csak egy sík felület, minden kocka oldala... Azért jó lett, nemtudom, hogy felhasználjam-e még.
És kösz szépen a segítségeteket!

Ezt a hozzászólást Gabor módosította (2007.01.25 09:48 GMT+1 óra, ---)

   
Gabor - Tag | 32 hsz       Online status #45829   2007.01.25 06:28 GMT+1 óra  
Kösz ProGamer, erre nem is gondltam, tényleg, egy CubeMap-ra rá lehet a textúrát renderelni. A megoldás pedig: a goal3.fx-ben (DX SDK) volt, és néhány tutorialba... Majd még ezeket persze rendesebben át kell néznem. Végülis az igazi kód itt HLSL, szal rosszul mondtam, hogy nem ide tartozik.

   
TPG - Tag | 3402 hsz       Online status #45781   2007.01.24 11:04 GMT+1 óra  
Idézet
Gabor :
http://www.mdxinfo.com/tutorials/ffpreflection.php

Találtam egy példát, de ez jó is lenne (mivel a technikájának a lényege, hogy tulajdnonképpen a tükörből amit látunk, azt lerendereljük egy textúrába, és azt a textúrát a tükör meshre helyezzük), de mi van, ha a felület, amire rá akarjuk tenni, .x mesh. Ilyenkor minden háromszögre rendereljem külön a képet? Najó, ez a téma már nem ebbe a topicba tartozik, így ezt sztem máshol folytatom, vagy nem... De szerintem eddig ez a legjobb megoldás, mivel nagyon dinamikus, és nem csak a skybox-ot jeleníti meg, hanem az egész mindent...

(kösz a hozzászólásaitokat, mostmár egyre több linket találtam, van min elindulnom)


Két féle dinamikus Env mapping módszer van: a plane-es meg a cubemap-es. A plane-t használják síkfelületekhez (pl víz), ilyenkor csak egy textúrát kell renderelni a környezetről. A cubemap-t használják minden más térbeli kiterjedéssel rendelkező objektumhoz, ilyenkor egy cubemap-et renderelünk tele a környezettel (6db textúra és lefedi az adott pontból 360°-ban látható összes objektumot). Mindkét esetben a generált env. mappok texcoord-jait nekünk kell kiszámolni, tehát nem fixek. Magyarul tök mindegy hogy min tükröződnek a dolgok úgyis a shaderben határozod meg a kamera irányvektora alapján azt hogy honnan kell mintát venni az adott env. mapból.
Reality is almost always wrong. - House

   
Gabor - Tag | 32 hsz       Online status #45780   2007.01.24 10:54 GMT+1 óra  
http://www.mdxinfo.com/tutorials/ffpreflection.php

Találtam egy példát, de ez jó is lenne (mivel a technikájának a lényege, hogy tulajdnonképpen a tükörből amit látunk, azt lerendereljük egy textúrába, és azt a textúrát a tükör meshre helyezzük), de mi van, ha a felület, amire rá akarjuk tenni, .x mesh. Ilyenkor minden háromszögre rendereljem külön a képet? Najó, ez a téma már nem ebbe a topicba tartozik, így ezt sztem máshol folytatom, vagy nem... De szerintem eddig ez a legjobb megoldás, mivel nagyon dinamikus, és nem csak a skybox-ot jeleníti meg, hanem az egész mindent...

(kösz a hozzászólásaitokat, mostmár egyre több linket találtam, van min elindulnom)

   
g_imi - Tag | 236 hsz       Online status #45768   2007.01.24 07:21 GMT+1 óra  
Nem vk nagyon járatos a témában, de asszem úgy valósítható meg, h folyamatosan készítesz 1 cubeMap-ot a környezetről és azt használod fel a tükröző felületen.

   
Kuz - Törzstag | 4455 hsz       Online status #45767   2007.01.24 07:11 GMT+1 óra  
Idézet
TheProGamer :
Idézet
Gabor :
Sziasztok!

Nem tudjátok, hogy pl. a DirectX SDK-ban hogyan oldották meg a reflect-eket? Vagy nem tudtok egy tutorial-t a reflect trükkökre?


Environment Mapping? Mert az le van írva az SDK doksiban, keresd ezt: "Environment Mapping Explained". Itt leírják hogy kell HLSL-el megoldani és el is magyarázzák.


Én még csak a Pietr Germishuys-os 'water reflection'-t csináltam meg (na jó...átcopyztam a kódot és egy picit belenyúltam a shaderbe, mert vmi rosszul volt közölve), de ez a módszer működik akkor is, ha pl dinamikusan megjelenő objektumokat akarok tükrözni (pl egy madár elrepül a víz fölött és azt akarom tükrözni), mert ennél a példánál alapból volt egy cubemap, és azt reflektálta a "víz"?
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 #45764   2007.01.24 06:50 GMT+1 óra  
Idézet
Gabor :
Sziasztok!

Nem tudjátok, hogy pl. a DirectX SDK-ban hogyan oldották meg a reflect-eket? Vagy nem tudtok egy tutorial-t a reflect trükkökre?


Environment Mapping? Mert az le van írva az SDK doksiban, keresd ezt: "Environment Mapping Explained". Itt leírják hogy kell HLSL-el megoldani és el is magyarázzák.
Reality is almost always wrong. - House

   
Gabor - Tag | 32 hsz       Online status #45760   2007.01.24 05:49 GMT+1 óra  
Sziasztok!

Nem tudjátok, hogy pl. a DirectX SDK-ban hogyan oldották meg a reflect-eket? Vagy nem tudtok egy tutorial-t a reflect trükkökre?

   
Kuz - Törzstag | 4455 hsz       Online status #38789   2006.11.29 08:17 GMT+1 óra  
Idézet
Ati500 :
Miért kuzanth, az nem ment??? LOL xD


Hogy őszinte legyek, kb 2 napja merült fel a kérdés, hogy hogyan lehet, és akkor hirtelen nem tudtam mit mondani. De ez a link nagyon jónak tűnik, le is töltöttem egy rakat oldalt . Majd megnézem mire jutok. Mondjuk a felbontás-váltás sem volt annyira triviális!
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???

   
Ati500 - Tag | 119 hsz       Online status #38783   2006.11.29 07:41 GMT+1 óra  
Miért kuzanth, az nem ment??? LOL xD

   
MaximumViolence - Törzstag | 1020 hsz       Online status #38448   2006.11.26 08:05 GMT+1 óra  
elkezdtem "nézegetni" ezt a shader kódolást...,mer' nem sok közöm van hozzá
Tyűű...nem egyszerű téma...
Ez egy reszeg post...

   
Kuz - Törzstag | 4455 hsz       Online status #38442   2006.11.26 06:48 GMT+1 óra  
Ez a Riemer link tényleg jó! Végre tudom, hogy kell megváltoztatni a felbontást a gémben ...
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???

   
Orphy - Törzstag | 1893 hsz       Online status #38263   2006.11.25 11:05 GMT+1 óra  
Köszi
Az angol nem akadály
   
Ati500 - Tag | 119 hsz       Online status #38143   2006.11.24 15:05 GMT+1 óra  
Ja, amúgy meg ha valahol elakadsz, szerintem itt nyugodtan kérdezhetsz, segítünk!

   
Ati500 - Tag | 119 hsz       Online status #38142   2006.11.24 15:02 GMT+1 óra  
Orphy!
Én innen tanultam (nem tom, mennyire vágod az angolt...): Riemer's C# + HLSL tutorial.
Elég szépen el van magyarázva az alapoktól egészen glow effektig és több fényre számolt lightmapig.
Másik: Pieter Germishuys :: Tutorials.
Itt van egy alap HLSL rész és legalul Advanced Tutorialokként bump map és vízeffekt.
HLSL tutorialok az Msdn-en: HLSL Shaders.
Hazy Mind.
Amúgy meg msdn, Wikipedia, Google.
Asszem ennyi, kezdetnek elég ez, nem?

   
Orphy - Törzstag | 1893 hsz       Online status #37821   2006.11.23 04:49 GMT+1 óra  
Idézet
Ati500 :
Hááát, volt szó erről az optimizálás cuccról... őszintén egy kicsit csalódtam a c#-ban.
Persze, rengeteg helyen lehet olvasni c# optimalizálás, hatékonyság növelése, meg ilyesmi, de azt azért nem gondoltam volna, hogy ugyanaz a kód, kicsit máshogy megírva (komolyan, nagyon apró módosításokra gondoljatok) 30 fps-t jelent...
A hlsl-el ezek szerint semmi baj, most ugyanazt a képet kapom, mint a múltkor, csak nem 10-20 körüli fps-sel, hanem 40-50...
És akkor a frustum culling még nincs megírva...
Szóval, minden c#/mdx programozónak: semmit ne bonyolítsatuk túl az éppen szükségesnél, törekedjetek a lehető legegyszerűbb megoldásokra!
Ki is próbáltam, régi, DX nélküli progijaimnak írtam részben újra a kódját, és hatalmas a teljesítménynövekedés (felhasznált memória alapján). Csak számlázó progi fps értékét nem szokás nézni...
Úgy néz ki, eljött az ideje, hogy átgondoljam, mennyire gondolom komolyan ezt a dx programozást, mert a módszereimen változtatnom kell!



Én kb fél év c++os engine-fejlesztés után rájöttem, hogy tulajdonképpen NAGYON szeretem a c#-ot

Most pedig megcsináltam a szigorlatot, és szeretnék beletanulni a shaderezésbe is...
Van valami jó tutor kezdőknek?
   
Kuz - Törzstag | 4455 hsz       Online status #37810   2006.11.23 00:47 GMT+1 óra  
Azt tudja valaki, hogy ATI kártyákon miért esik szét sok 3D-s progim? Íme egy példa.
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 #37596   2006.11.21 00:01 GMT+1 óra  
Most nincs kedvem utánnanézni, h kinek volt szüksége terragen hlsl-re, de esetleg ez segíthet 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 #37547   2006.11.20 11:14 GMT+1 óra  
Idézet
Ati500 :
Ha nem külön passben van az ambient, akkor nem működik (próbáltam)!


Az érdekes pedig annak működnie kell. Lehet hogy kicsit trükkös de működnie kell.
Reality is almost always wrong. - House

   
Ati500 - Tag | 119 hsz       Online status #37540   2006.11.20 10:43 GMT+1 óra  
Hááát, volt szó erről az optimizálás cuccról... őszintén egy kicsit csalódtam a c#-ban.
Persze, rengeteg helyen lehet olvasni c# optimalizálás, hatékonyság növelése, meg ilyesmi, de azt azért nem gondoltam volna, hogy ugyanaz a kód, kicsit máshogy megírva (komolyan, nagyon apró módosításokra gondoljatok) 30 fps-t jelent...
A hlsl-el ezek szerint semmi baj, most ugyanazt a képet kapom, mint a múltkor, csak nem 10-20 körüli fps-sel, hanem 40-50...
És akkor a frustum culling még nincs megírva...
Szóval, minden c#/mdx programozónak: semmit ne bonyolítsatuk túl az éppen szükségesnél, törekedjetek a lehető legegyszerűbb megoldásokra!
Ki is próbáltam, régi, DX nélküli progijaimnak írtam részben újra a kódját, és hatalmas a teljesítménynövekedés (felhasznált memória alapján). Csak számlázó progi fps értékét nem szokás nézni...
Úgy néz ki, eljött az ideje, hogy átgondoljam, mennyire gondolom komolyan ezt a dx programozást, mert a módszereimen változtatnom kell!

   
Ati500 - Tag | 119 hsz       Online status #37266   2006.11.17 13:16 GMT+1 óra  
Ha nem külön passben van az ambient, akkor nem működik (próbáltam)!

   
TPG - Tag | 3402 hsz       Online status #37076   2006.11.16 10:34 GMT+1 óra  
Idézet
Aravisz :
Csupán annyit kellene tudnia, hogy egy heightmap alapján generál terrain-t, ez lehet vmi egyszerű heightmap is nem a bonyolultság a cél, hanem csak működjenek az alapelvek. Erre pesze még lehetnek rárakosgatni textúrákat, ahogy a cikkben is láthattuk... De annak a forráskódja sajnos assembly-ben íródott . Ha mondjuk ennyit tudna már a kis shaderecske már jó lenne. A hab a tortán az lenne, ha ezt a geomorphingos technikát meglehetne írni hlslben is.
Találtam egy forráskódot a neten, terrain renderingre, nem tudom, hogy működik-e :| nem tudtam megnézni. Lehet azért mert a végéről a technique hiányzik?? :|


Igen mondjuk technique nem nagyon fog működni (csak akkor ha nem az effekt keretrendszeren keresztül használja a shader-t).
Reality is almost always wrong. - House

   
TPG - Tag | 3402 hsz       Online status #37074   2006.11.16 10:32 GMT+1 óra  
Idézet
Ati500 :
Na, hát itt lenne a kód, remélem tud vki segíteni, addig én beleásom magam és megírom a frustum cullingot meg utánanézek a deffered shadingnek!
effect.fx


Átfutottam a kódot az kapéásból feltűnt hogy az Ambient külön passban van. Szerintem simán össze lehet vonni a diffuse passal, így kapásból megspórolsz modellenként egy komplett újrarenderelést. Most hirtelen ennyi.
Reality is almost always wrong. - House

   
Ati500 - Tag | 119 hsz       Online status #37070   2006.11.16 09:57 GMT+1 óra  
Na, hát itt lenne a kód, remélem tud vki segíteni, addig én beleásom magam és megírom a frustum cullingot meg utánanézek a deffered shadingnek!
effect.fx

   
Aravisz - Tag | 4 hsz       Online status #36883   2006.11.15 10:18 GMT+1 óra  
Idézet
TheProGamer :
[Nah igen az amit a cikk ír egy "csöppet" bonyolultabb (és csodásan megoldható lenne Geometry Shaderrel). Konkrétan mit kellene tudnia az egész terrain rendszernek?



Csupán annyit kellene tudnia, hogy egy heightmap alapján generál terrain-t, ez lehet vmi egyszerű heightmap is nem a bonyolultság a cél, hanem csak működjenek az alapelvek. Erre pesze még lehetnek rárakosgatni textúrákat, ahogy a cikkben is láthattuk... De annak a forráskódja sajnos assembly-ben íródott . Ha mondjuk ennyit tudna már a kis shaderecske már jó lenne. A hab a tortán az lenne, ha ezt a geomorphingos technikát meglehetne írni hlslben is.
Találtam egy forráskódot a neten, terrain renderingre, nem tudom, hogy működik-e :| nem tudtam megnézni. Lehet azért mert a végéről a technique hiányzik?? :|

uniform extern float4x4 gViewProj;
uniform extern float3 gDirToSunW;
uniform extern texture gTex0;
uniform extern texture gTex1;
uniform extern texture gTex2;
uniform extern texture gBlendMap;

static float gTexScale=16.0f;

sampler Tex0S=sampler_state{};
sampler Tex1S=sampler_state{};
sampler Tex2S=sampler_state{};
sampler BlendMaps=sampler_state{};


struct OutputVS
{
float4 posH : POSITION0;
float2 tiledTexC : TEXCOORD0;
float2 nonTiledTexC: TEXCOORD1;
float shade : TEXCOORD2;
};

//terrain geometry specified directly in world space
OutputVS TerrainVS(float3 posW: POSITION0,
float3 normalW: NORMAL,
float2 tex0: TEXCOORD0)
{

OutputVS outVS=(OutputVS)0;
// just compute a grayscale diffuse and ambien lighting
// term-terrain has no specular reflectance
// the color comes from the texture

outVS.shade=saturate(max(0.0f, dot(normalW, gDirToSunW))+0.3F);

//transform to homogenous clip space.
outVS.posH=mul(float4(posW, 1.0F), gViewProj);

//pass on texture coordinates to be interpolated in rasterization.

outVS.tiledTexC= tex0*gTexScale; // Scale tex-coord to tile
outVS.nonTiledTexC=tex0; //blend map not tiled


//Done-- return the output
return outVS;


};


float4 TerrainPS(float2 tiledTexC: TEXCOORD0,
float2 nonTiledTexC: TEXCOORD,
float shade: TEXCOORD2): COLOR
{
//layer map are tiled
float3 c0=tex2D(Tex0S, tiledTexC).rgb;
float3 c1=tex2D(Tex1S, tiledTexC).rgb;
float3 c2=tex2D(Tex2S, tiledTexC).rgb;

//blend map is not tiled
float3 B=tex2D(BlendMaps, nonTiledTexC).rgb;

// find the inverse of all the blend weights so that we can
// scale the total color to the range[0,1]

float totalInverse=1.0f/ (B.r+B.g+B.b);
// Scale the colors by each layer by its corresponding weight
// stored in the blend map
c0*=B.r*totalInverse;
c1*=B.g*totalInverse;
c2*=B.b*totalInverse;

//Sum the colors and modulate with the shade to brighten/darken based on lighting
float3 final=(c0+c1+c2)*shade;
return float4(final, 1.0f);
};

   
TPG - Tag | 3402 hsz       Online status #36842   2006.11.15 07:55 GMT+1 óra  
Idézet
Ati500 :
Hát igen, én értem azt, hogy nem kevés pass, csak azt nem, hogy más által készített játékban miért működik ez mégis a gépemen tökéletesen és nálam miért nem, amikor ma egy átlag játék azért már nem csak 2 fényforrásra számolt shadow mapet meg diffuse/ambient lightingot használ... Írtam már példának a bumpot, vagy a tükröződést, vagy egyszerűen több fényforrás, részletesebb testek...
Amúgy az ambienthez egy konstans értéket használok, frustum culling még nincs megírva, de szerintem azért annyit nem tud dobni rajta... azért megpróbálom.
Deffered shading? Ezzel még nem foglalkoztam, tudsz hozzá vmi leírást neten? Mondjuk mindjárt rákeresek, csak talál vmit.
Amúgy ha feltenném a .fx fájlomat, az alapján meg tudnád mondani, hogy az van-e elrontva, vagy maga a C# program? Igazából az idegesít, hogy mint már írtam is, más játékoknál sokkal komplexebb és nyílván jóval több passből álló effektek is gond nélkül mennek nálam és nem értem, mit csinálok rosszul...


Igen viszont azok a játékok egy rakás optimalizálási folyamaton estek keresztül, culling hegyek stb.
Deferred Shading: szükséges hozzá MRT (Multiple Render Target) támogatás tehát SM2.0-t nem tudó karik kilőve. Annyit csinál az egész hogy nem a modell kirajzolásánál számít fényt hanem abban a szakaszban a textúrákba csak a későbbi lighting passokhoz szükséges adatokat rendereli (position,normal,diffuse color). Ezután egy lighting szakaszban a textúrákban tárolt adatok alapján számolja ki a GPU a végleges képet (postprocess). Annyi pass szükséges hozzá mint ahány fény van és stencil culling-al gyönyörűen lehet tovább optimalizálni.
Ha felteszed az .fx fálj lehet hogy többet tudunk segíteni de nem biztos.
Reality is almost always wrong. - House

   
Orphy - Törzstag | 1893 hsz       Online status #36798   2006.11.15 05:42 GMT+1 óra  
Szerintem csináld meg gyorsan a frustrum cullingot, és csodát láthatsz...
Kivéve persze, ha amit írtál, mind a látószögön belül van, mert akkor tényleg nem.

Hátsólap-eldobás be van kapcsolva pl?
Csak 1 tipp, de az is sokat dobhat rajta.

A testek index-pufferrel vannak megadva?
Kb mekkora poligonszám van a jelenetben?

Bocs, ha nagyon alapdolgok, nekem ezek jutottak így hirtelen eszembe
   
Ati500 - Tag | 119 hsz       Online status #36796   2006.11.15 05:33 GMT+1 óra  
Hát igen, én értem azt, hogy nem kevés pass, csak azt nem, hogy más által készített játékban miért működik ez mégis a gépemen tökéletesen és nálam miért nem, amikor ma egy átlag játék azért már nem csak 2 fényforrásra számolt shadow mapet meg diffuse/ambient lightingot használ... Írtam már példának a bumpot, vagy a tükröződést, vagy egyszerűen több fényforrás, részletesebb testek...
Amúgy az ambienthez egy konstans értéket használok, frustum culling még nincs megírva, de szerintem azért annyit nem tud dobni rajta... azért megpróbálom.
Deffered shading? Ezzel még nem foglalkoztam, tudsz hozzá vmi leírást neten? Mondjuk mindjárt rákeresek, csak talál vmit.
Amúgy ha feltenném a .fx fájlomat, az alapján meg tudnád mondani, hogy az van-e elrontva, vagy maga a C# program? Igazából az idegesít, hogy mint már írtam is, más játékoknál sokkal komplexebb és nyílván jóval több passből álló effektek is gond nélkül mennek nálam és nem értem, mit csinálok rosszul...

   
TPG - Tag | 3402 hsz       Online status #36738   2006.11.14 13:23 GMT+1 óra  
Idézet
Ati500 :
Valami optimalizálásban jártas embertől kérdezném, hogy ő hogy oldja meg játékban a shaderek alkalmazását?
Mert jelenleg itt tartok: Per-pixel lighting, ambient lighting, shadow mapping, 2 fényforrás, 6 test és olyan 10-20 fps...
Én meg még terveztem bele legalább bumpot meg tükröződést...
Az a vicces, hogy ezen a gépen olyan, erősen Shaderekre alapozott játékok, mint a Splinter Cell 3, vagy újabb név, ugye a Carbon, vagy az El Matador, simán szaggatás nélkül futnak 1024*768-ban medium/max grafikán, és az én projektemben nincs is még semmi játéklogika, csak mozgatni lehet a kamerát, kiszámolja a már leírt dolgokat és kirajzolja a hudot.
Tudna vki segíteni? Managed DirectX 9.0c-t használok C# alatt és nVidia FX Composerben írom az effekteket (bár ez igazából nem oszt, nem szoroz...)
Előre is köszönöm!


6 test és két fényforrás kapásból 12 pass + még két pass a shadow mapping (vagy mégtöbb ha point light van és Cube map-be renderel) az (minimum)14 összesen ami azért nem kevés (főleg hogy minden objektum min 3-szor van lerenderelve). Első kérdés az hogy kb hány polygon van ebben a bizonyos jelenetben? Frustum Culling-ot használsz? (shadow map-ek renderelésénél jól jöhet) Ambient lighting mit takar, egyszerű beállított konstans értéket vagy valami ambieth occlusion-szerű technikát? Tipp: én Deferred Shading-et használok a fényszámításhoz, drasztikusan lelehet vele csökkenteni a szükséges passok számát sok fénynél (viszont eszi a fillrate-et és nincs vele se AA se tradícionális alpha blending).
Reality is almost always wrong. - House

   
TPG - Tag | 3402 hsz       Online status #36728   2006.11.14 13:13 GMT+1 óra  
Idézet
Aravisz :
Pontosan ezt szeretném csinálni. De a kód írásával van főleg problémám, hlsl-ben kellene implementálnom (mert ugye a Quest3D, csak ezt fogadja el). Az első probléma is már nagy probléma. De megpróbálok egy új vidkarit kérni. Az elmélethez vannak anyagaim pl. itt. Ha vki tudna valami működő shaderrel szolgálni, azt meghálálnám . Nekem az egyszerű is bonyolult még egyelőre, de igyekszem!
Köszi.
A.


Nah igen az amit a cikk ír egy "csöppet" bonyolultabb (és csodásan megoldható lenne Geometry Shaderrel). Konkrétan mit kellene tudnia az egész terrain rendszernek?
Reality is almost always wrong. - House

   
Ati500 - Tag | 119 hsz       Online status #36725   2006.11.14 13:06 GMT+1 óra  
Valami optimalizálásban jártas embertől kérdezném, hogy ő hogy oldja meg játékban a shaderek alkalmazását?
Mert jelenleg itt tartok: Per-pixel lighting, ambient lighting, shadow mapping, 2 fényforrás, 6 test és olyan 10-20 fps...
Én meg még terveztem bele legalább bumpot meg tükröződést...
Az a vicces, hogy ezen a gépen olyan, erősen Shaderekre alapozott játékok, mint a Splinter Cell 3, vagy újabb név, ugye a Carbon, vagy az El Matador, simán szaggatás nélkül futnak 1024*768-ban medium/max grafikán, és az én projektemben nincs is még semmi játéklogika, csak mozgatni lehet a kamerát, kiszámolja a már leírt dolgokat és kirajzolja a hudot.
Tudna vki segíteni? Managed DirectX 9.0c-t használok C# alatt és nVidia FX Composerben írom az effekteket (bár ez igazából nem oszt, nem szoroz...)
Előre is köszönöm!

   
Aravisz - Tag | 4 hsz       Online status #36601   2006.11.14 06:56 GMT+1 óra  
Idézet
TheProGamer :
Heightmapből kell egy domborzatot előállítani vertex shaderrel? Mert az nem olyan nehéz, ráhúzod a heightmapot a sík terrain alapra, a vertex shaderben mintát veszel a heightmap-ból majd a minta alapján módosítod az adott vertex y koordinátáját. Ezzel csak két baj van: 1, csak gef6xxx és felette fog működni (vagy ezzel egyenértékü Radeonon) mert csak SM3.0-ban lehet vertex shaderben textúrából mintát venni
2, a kapott terep normáljai nem jó irányba fognak állni, ahhoz hogy az új normálokat kiszámoljuk kellenének a környező vertexek amiket meg vertex shader-ben nem lehet elérni (ezért lesz jó dolog a Geometry Shader ott ezt meg lehet csinálni). Ezt ki lehet küszöbölni úgy hogy csinálsz a heightmap mellé egy normal map-et is ami az adott vertexekhez tartozó normálokat tárolja és a vertex shaderben ebből is mintát veszel majd ezt küldöd megfelelő módosítások után tovább normálvektorként.




Pontosan ezt szeretném csinálni. De a kód írásával van főleg problémám, hlsl-ben kellene implementálnom (mert ugye a Quest3D, csak ezt fogadja el). Az első probléma is már nagy probléma. De megpróbálok egy új vidkarit kérni. Az elmélethez vannak anyagaim pl. itt. Ha vki tudna valami működő shaderrel szolgálni, azt meghálálnám . Nekem az egyszerű is bonyolult még egyelőre, de igyekszem!
Köszi.
A.

   
TPG - Tag | 3402 hsz       Online status #36599   2006.11.14 06:50 GMT+1 óra  
Idézet
TheProGamer :
Heightmapből kell egy domborzatot előállítani vertex shaderrel? Mert az nem olyan nehéz, ráhúzod a heightmapot a sík terrain alapra, a vertex shaderben mintát veszel a heightmap-ból majd a minta alapján módosítod az adott vertex y koordinátáját. Ezzel csak két baj van: 1, csak gef6xxx és felette fog működni (vagy ezzel egyenértékü Radeonon) mert csak SM3.0-ban lehet vertex shaderben textúrából mintát venni
2, a kapott terep normáljai nem jó irányba fognak állni, ahhoz hogy az új normálokat kiszámoljuk kellenének a környező vertexek amiket meg vertex shader-ben nem lehet elérni (ezért lesz jó dolog a Geometry Shader ott ezt meg lehet csinálni). Ezt ki lehet küszöbölni úgy hogy csinálsz a heightmap mellé egy normal map-et is ami az adott vertexekhez tartozó normálokat tárolja és a vertex shaderben ebből is mintát veszel majd ezt küldöd megfelelő módosítások után tovább normálvektorként.


Most belegondolok végülis be lehet szerezni a környező vertexeket is, mivel a terrain alapből szabályos négyzetekből áll ezért ki tudjuk számolni az alaphelyüket a heightmap-ből pedig a keletkezett helyüket, innen meg a normálokat.
Reality is almost always wrong. - House

   
TPG - Tag | 3402 hsz       Online status #36596   2006.11.14 06:25 GMT+1 óra  
Idézet
Aravisz :
Már megint én...
Írt már valaki terrain shadert, akár egy egyszerű heightmap alapján? Nem hiszem, hogy olyan hülyék lennétek mint én, nálam ez érthető, én lány vagyok (mellesleg inkább művészlélek mint programozó, de most ezt meg kell oldanom, sajnos )


Heightmapből kell egy domborzatot előállítani vertex shaderrel? Mert az nem olyan nehéz, ráhúzod a heightmapot a sík terrain alapra, a vertex shaderben mintát veszel a heightmap-ból majd a minta alapján módosítod az adott vertex y koordinátáját. Ezzel csak két baj van: 1, csak gef6xxx és felette fog működni (vagy ezzel egyenértékü Radeonon) mert csak SM3.0-ban lehet vertex shaderben textúrából mintát venni
2, a kapott terep normáljai nem jó irányba fognak állni, ahhoz hogy az új normálokat kiszámoljuk kellenének a környező vertexek amiket meg vertex shader-ben nem lehet elérni (ezért lesz jó dolog a Geometry Shader ott ezt meg lehet csinálni). Ezt ki lehet küszöbölni úgy hogy csinálsz a heightmap mellé egy normal map-et is ami az adott vertexekhez tartozó normálokat tárolja és a vertex shaderben ebből is mintát veszel majd ezt küldöd megfelelő módosítások után tovább normálvektorként.
Reality is almost always wrong. - House

   
TPG - Tag | 3402 hsz       Online status #36593   2006.11.14 06:15 GMT+1 óra  
Idézet
g_imi :
Nem tudom h van-e jeéentősége de rájöttem a problémára.
A következő dolgok kellenek a pass(ok)ba, amelyek közül én párat kihagytam:

ZEnable=true;
AlphaBlendEnable = true;
SrcBlend = SrcAlpha;
DestBlend = InvSrcAlpha;
BlendOp=Add;
ZEnable=true;
ZWriteEnable=false;
CullMode=none;





Nah igen a passokat nem különösen néztem. Egyébként meg kétszer szerepel a ZEnable=true; (és egyébként is true az alapbeállítása).
Reality is almost always wrong. - House

   
Aravisz - Tag | 4 hsz       Online status #36591   2006.11.14 05:45 GMT+1 óra  
Már megint én...
Írt már valaki terrain shadert, akár egy egyszerű heightmap alapján? Nem hiszem, hogy olyan hülyék lennétek mint én, nálam ez érthető, én lány vagyok (mellesleg inkább művészlélek mint programozó, de most ezt meg kell oldanom, sajnos )

   
g_imi - Tag | 236 hsz       Online status #36555   2006.11.13 16:21 GMT+1 óra  
Nem tudom h van-e jeéentősége de rájöttem a problémára.
A következő dolgok kellenek a pass(ok)ba, amelyek közül én párat kihagytam:

ZEnable=true;
AlphaBlendEnable = true;
SrcBlend = SrcAlpha;
DestBlend = InvSrcAlpha;
BlendOp=Add;
ZEnable=true;
ZWriteEnable=false;
CullMode=none;



   
g_imi - Tag | 236 hsz       Online status #36490   2006.11.13 08:23 GMT+1 óra  
Értem.
De elvileg az elgondolás jó ugye?
Pl csak a példa kedvéért meg lehetne azt csinálni h bemenő paraméterként megadom pl a színt+az átlátszóságot és csak egy pass-t használnék. Ebben a pass-ban menne 1 ciklus mondjuk 10-ig, és a shadereket a ciklus magban újra és újta fordítanám de más és más bemenő értékekkel.
Lehetséges lenne? Ez azér fontos nekem mert pár shadert szeretnék implementálni a progiba de az engine-be csak minimálisan akarnék belenyulni (mivel az nem az én dolgom), valamint a forráskód sincs meg+dx10 használata a cél amit iszonyú lassan emulálna a kártyám.

Lenne még 1 kérdésem: van rá másik mód h az effektfájlon keresztül érjem el a cuccokat. pl mátrixok meg ilyesmik. Asszem a glsl-ben voltak ilyen beépített fv-ek és nem a programon belül kellett gondoskodni rólla.

   
TPG - Tag | 3402 hsz       Online status #36484   2006.11.13 07:57 GMT+1 óra  
Van egy olyan halvány gyanúm hogy a DXSAS-hoz tartozó részeken állítottál el valamit. Innentől viszont nem tudok segíteni, én nem használok DXSAS-t (írtam helyette saját cumót).
Reality is almost always wrong. - House

   
g_imi - Tag | 236 hsz       Online status #36441   2006.11.13 03:26 GMT+1 óra  
Bocs h már megint én! A shaderek terén az elmélet megvan csak a gyakorlat hiányzik.
A effektfájlom tartalma ez:

#include <sas\sas.fxh>

int GlobalParameter : SasGlobal
<
int3 SasVersion = {1, 1, 0};

string SasEffectDescription = "HLSL Hands-On Workshop: Completed solution";
string SasEffectCompany = "Microsoft Corporation";
bool SasUiVisible = false;
>;


//-----------------------------------------------------------------------------------------
// Variables
//-----------------------------------------------------------------------------------------
float4x4 World
<
string SasBindAddress = "Sas.Skeleton.MeshToJointToWorld[0]";
bool SasUiVisible = false;
>;

float4x4 View
<
string SasBindAddress = "Sas.Camera.WorldToView";
bool SasUiVisible = false;
>;

float4x4 Projection
<
string SasBindAddress = "Sas.Camera.Projection";
bool SasUiVisible = false;
>;

float3 MaterialDiffuseColor
<
string SasUiControl = "ColorPicker";
> = { 1.0f, 0.0f, 0.0f };


struct VS_INPUT
{
float3 Position : POSITION;
};

struct VS_OUTPUT
{
float4 PositionProjected : POSITION;
};

VS_OUTPUT VS(VS_INPUT input)
{
VS_OUTPUT Out = (VS_OUTPUT)0;

// transform the position and normal
float3 worldPosition = mul(float4(input.Position, 1), World); // position (view space)

Out.PositionProjected = mul(float4(worldPosition, 1), mul( View, Projection) );

return Out;
}



float4 PS1(VS_OUTPUT input) : COLOR
{
return float4( 1,0,0, 1);

}

float4 PS2(VS_OUTPUT input) : COLOR
{
return float4( 0,0,1, 0);
}

technique RenderScene
{
pass P0
{
VertexShader = compile vs_2_0 VS();
PixelShader = compile ps_2_0 PS1();
}
pass P1
{
VertexShader = compile vs_2_0 VS();
PixelShader = compile ps_2_0 PS2();
AlphaBlendEnable = TRUE;
SrcBlend = ONE;
DestBlend = ONE;
}
}


A végeredmény pedig egy lila gömb annak ellenére hogy a 2. passban az alfa értéke 0. Tuti h én hagytam ki vlmt, de nem tudom h mit?
Az effect fájlt a dx9 sdk meshview-erével szoktam megnézni, mivel ez a leggyorsabb mód

   
g_imi - Tag | 236 hsz       Online status #36425   2006.11.13 00:49 GMT+1 óra  
Értem!
Köszönöm a segítséget. Így h létezik rá módszer neki is látok!!!

   
TPG - Tag | 3402 hsz       Online status #36393   2006.11.12 13:55 GMT+1 óra  
Idézet
g_imi :
Helló mindenkinek!
Nekem az lenne a kérdésem h pl olyan dolgoknál mint mondjuk a szőr amit több fázisban kellene létrehozni 1 passban csináljam meg?
Úgy értem h ha pl 60 layert használok akk ne kelljen 60 pass-ot készítenem, hanem pl 1 pass-ban 1 ciklussal letudnám az egészet.
Lehetséges ez? Vagy ciklusokat csak a progiban vagy a shaderben használhatok csak?
Azért lenne fontos mert az engne-t nem én írom és szeretném a shadereimet a dx sdk meshviewer-ével tesztelni.
Nagyon nagy butaság amit kérdezek?


SM2.0-tól az alap vezérlési szerkezetek (elágazás és a háromféle ciklus) használhatóak shaderekben is viszont meg van kötve hogy max hány utasításból állhat egy shader (PS2.0: 32texture+64arithmetic; PS3.0: 512; VS2.0: 256; VS3.0: 512) és a ciklusban lévő kódot annyiszor kell venni ahányszor az ismétlődni fog. Magyarul nagyon kevés kódnak kell lennie a ciklusban hogy 60-szor lefuthasson. Egyébként meg ha van egy passod amit 60-szor kell alkalmazni a meshen akkor elég a cuccot egyszer megírni és a mesht 60-szor lerenderelni vele mindig frissítve a bemenő adatokat.
Reality is almost always wrong. - House

   
g_imi - Tag | 236 hsz       Online status #36389   2006.11.12 13:46 GMT+1 óra  
Helló mindenkinek!
Nekem az lenne a kérdésem h pl olyan dolgoknál mint mondjuk a szőr amit több fázisban kellene létrehozni 1 passban csináljam meg?
Úgy értem h ha pl 60 layert használok akk ne kelljen 60 pass-ot készítenem, hanem pl 1 pass-ban 1 ciklussal letudnám az egészet.
Lehetséges ez? Vagy ciklusokat csak a progiban vagy a shaderben használhatok csak?
Azért lenne fontos mert az engne-t nem én írom és szeretném a shadereimet a dx sdk meshviewer-ével tesztelni.
Nagyon nagy butaság amit kérdezek?

   
Aravisz - Tag | 4 hsz       Online status #36354   2006.11.12 08:58 GMT+1 óra  
Sziasztok!
Eléggé új vagyok ebben a shaderprogramozásban, de a működésüket már értem stb, és most rátérek a lényegre.
A GPU GEMS 2-ben a Terrain Rendering Using GPU-Based Geometry Clipmaps nevű fejezeten leírtakat valaki megvalósította már itt? Vagy netán érezne késztetést enne kipróbálására? http://research.microsoft.com/~hoppe/#gpugcm - itt megtalálhatjátok a róla szóló cikkeket, és elég részletes dokumentációt hozzá.
A konkrét cél: szeretnék egy olyan terrain-t létrehozi ami LOD (Level of Detail) technikát alkalmaz shadereken keresztül.
Ami még érdekes lehet az a L3DT program, aminek a viewer-e realtime-ban generál terepet a heightmappekből, és szintén LOD technikát alkalmaz, a viewer forrása pedig nyílt hozzáférésű.
A shader írását HLSL-ben kellene megvalósítani, ehhez az FXComposer nyújt majd segítséget.
Ha valaki esetleg tud nekem segíteni bármiben is, vagy szeretne velem együttműködni, azt szívesen venném! Egyedül sajnos nagyon elesettnek érzem magam.
Bármilyen ötletet szívesen várok!
Üdv,
Aravisz

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