dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

Paints/Citas Operaacijas uz tekstuuras
Goto page 1, 2  Next
 
dev.gamez.lv Forum Index -> Microsoft DirectX
View previous topic :: View next topic  
Author Message
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sat Oct 13, 2007 7:56 pm    Post subject: Paints/Citas Operaacijas uz tekstuuras

Ir nepieciesams izveidot taadu kaa "paint" shaderi, kur kaa ievade tiek doda kursora poziicija un "otas" izmeers. "Ota" ir rinkja formas. Bez "paint" metodes jaaabuut iespeejai arii izmantot arii citas funkcijas dotajam apgabalam (piemeeram sapludinaat apgabalu, uc) -> atkriit vienkaars tekstuuru "belnd". Es esmu inmplementeejis gandriiz identisku metodi, ar veselu kaudzi jaukaam funkcijaam, bet taa paredzeeta "paintosanai" uz 1024x1024 izmeera tekstuuras, bet izmantojot lielaaka izmeera tekstuuru, piemeeram kaa sajaa gadiijumaa -> man ir nepieciesama 4096x4096 tekstura, aatrums ir neapmierinoshs, taatad nepieciesams izstraadaat aartraaku saderi vai citu "tehnalogiju" tai "paintosanai"...

HLSL snippets ar pasreizeejaa shadera visparastaako metodi (vnk pieskirt veertiibu apgabalam) :

Code:

float2 Pos;
float Val;

float widthSq = (32.0f / 4096.0f)*(32.0f / 4096.0f); //brush izmeers kvadraataa

texture textureMap_Add0;
sampler textureSampler0 : register(s1) = sampler_state
{
   Texture = (textureMap_Add0);
   ADDRESSU = Clamp;
   ADDRESSV = Clamp;
   MAGFILTER = POINT;
   MINFILTER = POINT;
   MIPFILTER = POINT;
};

float distanceSq(float2 point1, float2 point2)
{
   float xd = point2.x - point1.x;
   float yd = point2.y - point1.y;   
   return (xd * xd + yd * yd);
}


float4 Set(float2 texCoord : TEXCOORD0) : COLOR0

    float4 color0 = tex2D(textureSampler0, texCoord);
    float dist = distanceSq(Pos, texCoord.xy);
   
   if (dist < widthSq)
   {
      color0.r = Val;
   }

    return color0;
}

technique Paint_Set
{
    pass P0
    {
        pixelShader  = compile ps_3_0 Set();
    }
}
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sat Oct 13, 2007 8:25 pm    Post subject:

Tiešām 32x32 brusha pielietošana ar šo šeideri bremzē? Kautkā neticās, ka videokarte nespētu apstrādāt 32*32 = 1024 pikseļus realtaimā... Jautājums tad ir, kā tu to pielieto?
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sat Oct 13, 2007 8:27 pm    Post subject:

Code:

float dist = distanceSq(Pos, texCoord.xy);

Tiek reekinaats katram texelim Wink
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sat Oct 13, 2007 8:33 pm    Post subject:

a vai tad nevar to zīmēšanu ar render targetiem nostrādāt?
hmm tev vajag paint shaderi, tā skatos... bet kāpēc tieši ar šeideri tas jādara?
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sat Oct 13, 2007 8:36 pm    Post subject:

Snake, es iztiksu bez taviem komentaariem, ok?
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sat Oct 13, 2007 8:41 pm    Post subject:

-edit-
šis nav d3d
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle


Last edited by snake5 on Sat Oct 13, 2007 8:57 pm; edited 1 time in total
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sat Oct 13, 2007 8:44 pm    Post subject:

Storm wrote:
Code:

float dist = distanceSq(Pos, texCoord.xy);

Tiek reekinaats katram texelim ;)


Nu labi katram. Nu 32*32=1024, to jau teicu. Tātad 2048 starpības, 1024 summas un 2048 reizināšanas. Videokartei tas ir nieks. Sīkums tas ir. Kāpēc tev tas varētu bremzēt? Uz kautkādas iebūvētās videokartes to visu laid, ka šeideris strādā softwarē, vai kā?

Tu tā arī nepateici, kā to pielieto. Atkal būs ar gaišreģību jānodarbojas ... :)
Pieņemu, ka tu uz tekstūru/ekrānu uzrenderē pamata bildi, lai arī no kurienes tā nāktu, un tad spiežot peli, tu renderē virsū kaudzi ar 32x32 brušiem, kuri ir šis šeideris. Pareizi?
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sat Oct 13, 2007 8:48 pm    Post subject:

Shaderis ir kaa post-process tekstuurai, kuras izmeers ir 4096x4096 -> tiek rendereets viens quads rendertagetaa ar mineeto saderi
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sat Oct 13, 2007 8:51 pm    Post subject:

Ah, nu tagad sapratu. Tu visu renderē ar šo šeideri.
Tā nevajag. Post-procesē divos piegājienos - vienā uzrenderē visu tekstūru ar vienkāršu Copy, un otrā piegājienā lieto uzrenderē virsū mazu 32x32 brušu ar šo šeideri.
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sat Oct 13, 2007 8:59 pm    Post subject:

Es jau taa arii sapratu, tikai man sanaak baigais juuklis ar teksturu koordinaataam (man jaasampljo lielaa tekstuura no mazaas)
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sat Oct 13, 2007 9:05 pm    Post subject:

varbūt tev nepatīk mani komentāri bet..

nu...
kā es no GM laikiem atceros, ar surfacēm bija ātri un ērti...
neliekas labi šādu zīmēšanu ar šeideriem veidot...
bet nu dari kā uzskati labāk

hmm, nu tagad sapratu, kāpēc to šeideri lieto - dēļ tās "attāluma sistēmas" ar ko tos apļus zīmē..
nu to var arī ar surfacēm 2 variantos:
1. katru punktu šādi noliek (lēni)
2. izveido lielākā iespējamā brush'a bildi un tad tikai samazina kā vajag (te atkal iespējamas mazas neprecizitātes, bet galā visam būtu jāiznāk OK!)
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle


Last edited by snake5 on Sat Oct 13, 2007 9:12 pm; edited 1 time in total
Back to top
View user's profile Visit poster's website
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sat Oct 13, 2007 9:09 pm    Post subject:

Pastaasti kaa tu uztaisiisi izpludinaasanu (blur) apgabalaa Razz
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sat Oct 13, 2007 9:09 pm    Post subject:

snake5: videokarte ir daudz-daudz ātrāka šāda veida aprēķiniem, ja to pareizi pielieto. Tavas surfaces ne tuvu stāvēs tam, ko var ar šeideriem panākt. Palasi kautvai šo te: http://dev.gamez.lv/viewtopic.php?t=871
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sat Oct 13, 2007 9:14 pm    Post subject:

Storm wrote:
Pastaasti kaa tu uztaisiisi izpludinaasanu (blur) apgabalaa Razz

esmu uz tā paša GM redzējis realtime 640x480 blur un gāja diezgan ātri!
varu iedot GML, būs iespējams saprast, kā tur notikās viss!
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sat Oct 13, 2007 9:18 pm    Post subject:

bubu wrote:
snake5: videokarte ir daudz-daudz ātrāka šāda veida aprēķiniem, ja to pareizi pielieto. Tavas surfaces ne tuvu stāvēs tam, ko var ar šeideriem panākt. Palasi kautvai šo te: http://dev.gamez.lv/viewtopic.php?t=871
zinu, ko ar šeideriem var panākt, jo vkartes jau sen ir jaudīgākas šādos aprēķinos par CPU
bet ar surfacēm šo izdarīt ir viegli!!!

ew pag! ienāca prātā bbox tests - vispirms pārbauda vai punkta x/y ir robežās un tad tikai attāluma testu uz šiem pikseļiem.. jo sqrt ir palēna funkcija..
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
Display posts from previous:   
dev.gamez.lv Forum Index -> Microsoft DirectX All times are GMT + 2 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group