Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



shadery - problem so vzdialenostou

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: shadery - problem so vzdialenostou

Autor: Eosie

11:44:48 27.11.2008

Možnosti:
1) Spočítat si pozici světla v souřadnicích objektu, ale bez aplikace scale. V shaderu tu pozici potom nenásobíš _žádnou_ maticí.
2) Spočítat si pozici světla ve světových souřadních. Tady je třeba mít zvlášť matici kamery a objektu, na což ti modelview matice nestačí. Do shaderu dáš jen pozici světla a podle potřeby si buď světlo převedeš do souřadnic objektu nebo (lépe) si převedeš souřadnice objektu do světových souřadnic a se světlem nemusíš nic dělat.
3) Ještě bys to celý mohl řešit v prostoru kamery...

Poznámky:
1) Používat v shaderu intrinsic proměnné gl_* mi dnes přijde už docela úchylné a nedoporučované. Na parametry shaderu zásadně uniformní proměnné.
2) Na matice samozřejmě používat vlastní funkce.

Citovat příspěvek

 

Re: shadery - problem so vzdialenostou

Autor: michalferko

9:30:06 27.11.2008

A ako sa bezne riesia taketo veci? Kompletne si nahradit maticove operacie a odchytavat taketo spravanie? Lebo nejake ine riesenie mi prilis nenapada.

Citovat příspěvek

 

Re: shadery - problem so vzdialenostou

Autor: michalferko

19:52:56 26.11.2008

ach no jasne. Nesmiem asi programovat bez prestavky, uz mi to lezie na mozog a potom prehliadnem taku jednoduchu chybu.

Citovat příspěvek

 

Re: shadery - problem so vzdialenostou

Autor: Eosie

19:42:52 26.11.2008

Zkus dát pryč to glScalef a řekni, jestli to funguje bez toho.

Ještě teda tu změnu velikosti aplikuješ i na pozici světla, to je záměr?

Citovat příspěvek

 

shadery - problem so vzdialenostou

Autor: michalferko

18:42:13 26.11.2008

Zdravim, narazil som na velmi zvlastne spravanie shaderov. Mam shader, ktory by mal podla vzdialenosti od svetla robit gradient cervenej a pri privelkej vzdialenosti narafbit na modro. vertex shader teda vyzera takto nejako:
[code]
varying vec3 v;

int main()
{
v = vec3((gl_ModelViewMatrix * gl_Vertex) - (gl_ModelViewMatrix * gl_LightSource[0].position));
gl_FrontColor = gl_Color;
gl_Position = ftransform();
}
[/code]
a fragment shader:
[code]
varying vec3 v;

int main()
{

float dist = length(v);
vec4 output;
if(dist < 16.0)
output = vec4((16.0 - dist) / 16.0, 0, 0, 1);
else
output = vec4(0, 0, 1, 1);
gl_FragColor = output;
}
[/code]

Problem nastane, ak spravim nasledujucu vec:
[code]
glPushMatrix();
glScalef(...);
glTranslatef(...);
nakresliGulu();
glPopMatrix();
nakresliPlane();
[/code]
A to taky, ze sa gula osvetli zle, pricom plane tak ako ma. Aky tam moze byt problem? Uz si neviem rady, hadam ste sa s tym niekto stretli. Vyzera to, ako keby sa neupdatla modelview matica alebo take nieco, ale pripada mi to ako nezmysel, kedze sa gula zobrazi tam kde ma, iba nie je dobre osvetlena.

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: